model physics porting physics to the nmmb n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Model Physics / Porting Physics to the NMMB PowerPoint Presentation
Download Presentation
Model Physics / Porting Physics to the NMMB

Loading in 2 Seconds...

play fullscreen
1 / 35

Model Physics / Porting Physics to the NMMB - PowerPoint PPT Presentation


  • 154 Views
  • Uploaded on

Model Physics / Porting Physics to the NMMB. NEMS-NMMB Tutorial 19 February 2014 Brad Ferrier, Dusan Jovic , & Ratko Vasic. Outline. Physics options and parameter settings (slides 3-17) Shortwave (SW) and longwave (LW) radiation ( sl 3-4)

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Model Physics / Porting Physics to the NMMB' - dotty


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
model physics porting physics to the nmmb

Model Physics / Porting Physics to the NMMB

NEMS-NMMB Tutorial

19 February 2014

Brad Ferrier, DusanJovic, & Ratko Vasic

outline
Outline
  • Physics options and parameter settings (slides 3-17)
    • Shortwave (SW) and longwave (LW) radiation (sl 3-4)
    • Planetary boundary layer (PBL) and surface layer (sl5,7)
    • Gravity wave drag + mountain blocking (sl 6-7)
    • Land surface schemes (sl8-9)
    • Convection (sl 10-11, 16) and microphysics (sl12-16)
    • Full GFS physics suite (sl 17)
  • Source codes and porting physics (slides 18-35)
    • Flowcharts of codes relating various physics (sl 18-21)
    • Adding a new physics array, + output fields (sl 22-31)
    • RRTM & GFS codes in /phys directory (sl 32)
    • Physics calls in model solver (sl 33-35)

NMMB Tutorial: Physics

radiation options
Radiation Options
  • “GFDL” radiation (phys/module_RA_GFDL.F90)
    • Lacis & Hansen shortwave (SW) , Fels & Schwartzkopf (LW)
    • Prescribed ozone & CO2
    • No aerosols, incoming TOA SW fluxes reduced by 3%
    • Simple clouds, fixed absorption coefficients for cloud water and ice
  • RRTM radiation (phys/module_RA_RRTM.F90)
    • Similar to RRTMG in WRF
    • Version 2 (currently running in GFS), soon to be upgraded to version 3
    • Ported from AER and optimized for EMC by Yu-Tai Hou, coupled to the NMMB by Hsin-Mu Lin
    • Prescribed ozone (predicted in GFS) & CO2, O2, and various trace gases
    • Bilinear interpolation from 5o climatological aerosols
    • Much more sophisticated treatment of clouds than GFDL
      • LW: Hu & Stamnes (1993) for water, Ebert & Curry (1992) for ice (+ other options)
      • SW: Hu & Stamnes (1993) for water, Fu (1996) for ice (+ other options)

NMMB Tutorial: Physics

configure file settings radiation
Configure File Settings - Radiation

shortwave: # Shortwave radiation schemes, either gfdl or rrtm

longwave: # Longwave radiation schemes, either gfdl or rrtm

co2tf: 1 # Read (0) or generate internally (1) the GFDL CO2 transmission functions

nrads: # Number of dynamics timesteps between calls to shortwave

nradl: # Number of dynamics timesteps between calls to longwave

nhrs_udef: true # Accumulator arrays are reset to 0 by user-defined options (next).

nhrs_rdlw: # Frequency in hours between times when LW radiation fluxes are reset to 0

nhrs_rdsw: # Frequency in hours between times when SW radiation fluxes are reset to 0

  • Use the same option for shortwave & longwave (i.e., use “gfdl” for both or “rrtm” for both)
  • Recommend nrads=nradland set so that radiation is called at times corresponding with output (e.g. top of the hour)

NMMB Tutorial: Physics

surface layer and pbl
Surface Layer and PBL
  • Mellor-Yamada-Janjic (MYJ) surface layer (phys/module_SF_JSFC.F90)
  • MYJ PBL (phys/module_BL_MYJPBL.F90)
    • Nonsingular Mellor-Yamada level 2.5, a local scheme
    • Predicts turbulent kinetic energy (TKE), represented as 3D array Q2 (=2*TKE) in code
    • TKE > background value in areas of turbulence away from the PBL (e.g., jet streaks)
  • GFS PBL (phys/module_BL_GFSPBL.F90)
    • 1st order non-local Pan-Mahrt scheme
    • Differs from what’s in the GFS because it uses the MYJ surface layer (added by Weiguo Wang in 2010)

NMMB Tutorial: Physics

gravity wave drag gwd and mountain blocking mb
Gravity Wave Drag (GWD)and Mountain Blocking (+MB)
  • GWD+MB (nmm/module_GWD.F90)
    • Provided from GFS (Jordan Alpert & ShrinivasMoorthi)
    • Tendencies applied only to horizontal winds
    • Calculates the level of the “dividing streamline” (DS)
      • Lott & Miller mountain blocking below DS, air is slowed as it flows around the barrier
      • Kim & Arakawa gravity wave drag above DS, air goes over the barrier and is subject to possible wave breaking
    • Requires 14 different fields related to the terrain
      • Maximum height above the mean height in the grid box, slope, anisotropy/aspect ratio, angle of the mountain range w/r/t East, normalized 4th moment of the orographic convexity, orographic asymmetry & length scale along 4 vertical planes (W-E, N-S, SW-NE, NW-SE)
      • Currently calculated from 30-sec terrain data

NMMB Tutorial: Physics

configure file settings
Configure File Settings

sfc_layer: # Surface layer schemes, myj only

turbulence: # Turbulence schemes, myj or gfs

gwdflg: true # True--> GWD on ; False--> GWD off

cdmb: 0.1* # adjusts mountain blocking

cleffamp: 2.24 *# adjusts the gravity wave drag (GWD)

sigfac: 3.00 * # dividing streamline is searched above the highest elevation by sigfac*Zstd (Zstd=stddev of terrain)

factop: 0.50 # limit deacceleration (momentum deposition) aloft

rlolev: 50.00 # adjusts GWD when p > rlolev (centibars) in a complex way

dpmin: 0.00 # minimum thickness of the reference layer

* Values for cdmb, cleffamp, sigfac based on optimal settings for 12-km runs

NMMB Tutorial: Physics

land surface schemes
Land Surface Schemes
  • Noah (phys/module_LS_NOAHLSM.F90)
    • 4 soil layers (10, 30, 60, & 100 cm thick) + snow layer
    • 19 soil types (STASGO)
    • Land use & vegetation types
      • 24 from older USGS
      • 20 from newer IGBP (MODIS-derived, used in NAM)
    • Urban canopy model (phys/module_SF_URBAN.F90)
      • Little (if any?) testing in EMC meso group
  • LISS (phys/module_LS_LISS.F90)
    • Land ice sea model (Vukovic et al., 2010, ) introduced into NMMB by Zavisa
    • 4 soil layers + snow layer

NMMB Tutorial: Physics

configure file settings1
Configure File Settings

land_surface: # land surface schemes, noah or liss

ucmcall: # Use (=1) or do not use (=0) urban canopy model

ivegsrc: # Use (=1) or do not use (=0) IGBP vegetation & land use types

nhrs_srfc: # Frequency in hours between times when surface energy and moisture fluxes are reset to 0

Settings shared by surface layer, PBL, GWD+MB, and land surface:

nphs: # Number of dynamics time steps between calls to land surface, turbulence (sfclayer + PBL), and GWD+MB

NMMB Tutorial: Physics

convection
Convection
  • Betts-Miller-Janjic(phys/module_CU_BMJ.F90)
    • BMJ scheme changes T & Q only
  • Simplified Arakawa Schubert (phys/module_CU_BMJ.F90)
    • SAS is a mass flux scheme (added by Weiguo Wang in 2010)
    • ncloud=1, detrains liquid & ice (partitioned into various pre-existing species, may differ from HWRF)
  • Both schemes account for deep (precipitating) and shallow (nonprecipitating) modes of convection

NMMB Tutorial: Physics

configure file settings2
Configure File Settings

convection: # Convective scheme, either bmj or sas

nprecip: # Number of dynamics timesteps between calls to convection and microphysics

Settings that control the BMJ scheme

fres: 0.75 # resolution factor for dsp's (default)

fr: 1.0 # land factor for dsp's (dafault)

fsl: 0.75 # reduction factor for "slow" dsp's over land (dafault)

fss: 0.75 # reduction factor for "slow" dsp's over water (dafault)

Settings that control BMJ deep & shallow convection switches (true/false)

entrain: .false. # includes entrainment in parcel ascent

newall: .false. # new treatment for shallow clouds

newswap: .false. # new shallow clouds at swap points* (commented out)

newupup: .false. # new shallow clouds with upward heat &moisture transport

nodeep: .false. # all deep convection diverted to shallow convection

* Swap points are when shallow convection is considered after deep convection test fails (entropy decreases)

NMMB Tutorial: Physics

microphysics 1 of 3
Microphysics (1 of 3)
  • Old NAM/HWRF (phys/module_MP_ETANEW.F90)
    • ‘fer’ - similar to “old Eta” in WRF (etampold, mp_physics=95)
    • Uses smaller look up tables for rain
    • Predicts cloud water, rain, and ice (internal algorithm separates cloud ice from snow/graupel) mixing ratios, and density of ice (“rime factor”) within the microphysics
  • New NAM (phys/module_MP_FER_HIRES.F90)
    • ‘fer_hires’ - similar to “new Eta” in WRF (etampnew, mp_physics=5)
    • Uses larger look up tables for rain
    • Soon to be updated by “Ferrier-Aligo” version
      • Being tested in real-time parallels & HWRF retrospectives, changes made to represent deep convection better (esp radar reflectivities)

NMMB Tutorial: Physics

microphysics 2 of 3
Microphysics (2 of 3)
  • GFS (phys/module_MP_GFS.F90)
    • Similar to what’s in GFS (added by Weiguo Wang in 2010)
    • Sundqvist condensation, partial cloudiness allows clouds to form at RH > RHcrit (=95% in NMMB)
    • Predicts cloud water & cloud ice; rain and snow fall out and do not remain in atmosphere
  • WSM6 (phys/module_MP_WSM6.F90)
    • Developed by Hong et al. (added by Weiguo in 2010)
    • Predicts cloud water, cloud ice, rain, snow, & graupel
    • Added based on feedback from SPC, used in 4-km NSSL ARW

NMMB Tutorial: Physics

microphysics 3 of 3
Microphysics (3 of 3)
  • Thompson (phys/module_mp_thompson.F90 & phys/module_mp_radar.F90)
    • Recently added by Greg and Dusan
    • Predicts mixing ratios of cloud water, cloud ice, rain, snow, & graupel, as well as number concentrations of rain and cloud ice
    • Extra care dedicated to the treatment of snow using the work of Paul Field
    • Greg is finishing the coupling with the RRTM radiation

NMMB Tutorial: Physics

configure file settings 1 of 2
Configure File Settings (1 of 2)

microphysics: # Microphysics scheme, either fer, fer_hires, gfs, wsm6, or thompson.

spec_adv: # Separately advect hydrometeor species (=true) or advect only total condensate (=false). Recommend spec_adv=true for thompson. (Added with help from Weiguo Wang)

lmprate: # Write microphysics processes of 4D array MPRATES to history files (=true), otherwise write a single 3D array with zero values (=false). Currently available for fer, fer_hires, & wsm6 microphysics (added by Eric Aligo).

nprecip: # Number of dynamics timesteps between calls to convection and microphysics

NMMB Tutorial: Physics

configure file settings 2 of 2
Configure File Settings (2 of 2)

NOTE: User must set nhrs_udef to .TRUE. and set the emptying frequencies (nhrs_*) to the desired values or else all accumulations will automatically be emptied at the frequency of history output.

nhrs_udef: true # User defined (=true) or frequency of history output (=false)

nhrs_prec: 3 # Frequency in hours between times when precip arrays are emptied

nhrs_heat: 3 # Frequency in hours between times when heating arrays are emptied

nhrs_clod: 3 # Frequency in hours between times when cloud arrays are emptied*

Above example has the precipitation “buckets”, diabatic heating rates for convection & microphysics, and cloud fractions from radiation* being set to 3-h accumulations.

* Cloud fractions are calculated in the radiation and not in the microphysics.

NMMB Tutorial: Physics

full gfs physics gbphys
Full GFS Physics (‘gbphys’)

gfs: false # Select entire GFS physics (=true) or individual options (=false)(added by Ratko Vasic, used in global NMMB development)

Midway in module_SOLVER_GRID_COMP.F90:

gfs_phys_test: IF(.NOT.int_state%GFS)THEN

  • Run the various physics discussed earlier
  • CALL UPDATE_WATER*, Radiation, RDTEMP*, Turbulence, CLTEND*, Convection, Microphysics, and CLTEND* (twice)

ELSE gfs_phys_test !<-- Use GFS physics package

  • Lots of preparation, initialize arrays, etc.
  • CALL GRRAD (GFS radiation), GBPHYS (other GFS physics)
  • Update 2D arrays (all involve >2000 lines of code)

ENDIF gfs_phys_test

NMMB Tutorial: Physics

flowcharts of physics codes

Flowcharts of Physics Codes

With Respect to NMMB Solver

NMMB Tutorial: Physics

flowchart for microphysics
Flowchart for Microphysics

NMMB Tutorial: Physics

flowchart for turbulence etc
Flowchart for Turbulence, etc.

nmm/module_SOLVER_GRID_COMP.F90

phys/module_SF_JSFC.F90

phys/module_LS_NOAHLSM.F90

nmm/module_TURBULENCE.F90

Surface Layer

phys/module_LS_LISS.F90

phys/module_BL_MYJPBL.F90

phys/module_BL_GFSPBL.F90

OR

Land Surface

PBL

OR

GWD + MB (optional)nmm/module_GWD.F90

NMMB Tutorial: Physics

adding a new array

Adding a New Array

e.g. 2D snow cover (SNOWC array)andMODIS albedo flag (ialbsrc)

list of codes to change
List of Codes To Change

/nmmdirectory

module_GET_CONFIG.F90 - Add a configure file variable

module_INIT_READ_BIN.F90 - Read from binary file module_INIT_READ_NEMSIO.F90 - Read from NEMSIO file (NPS input & restart files)

module_SOLVER_INTERNAL_STATE.F90 - Loads into ‘generic’ int_state%VARS

module_SOLVER_GRID_COMP.F90 - Main solver: initializes, then passes to physics

module_RADIATION.F90 - Used by radiation, adjust sfc albedos over snow

module_TURBULENCE.F90 - Updated by land surface

module_WRITE_ROUTINES.F90 - Rename variables in NEMSIO GrADS control files

job/regression_tests/solver_state.txt

#------------------------------------------------------------

# Name History Owned eXport Description

# Name Restart Import Time_ser

#------------------------------------------------------------

...

### 2D real

...

'SNOWC' H R O - - T 'Snow Cover (fraction: 0--1)'

NMMB Tutorial: Physics

adding a configure file variable 1 of 2
Adding a configure file variable (1 of 2)

module_GET_CONFIG.F90

[ ialbsrc: .true. # MODIS albedos (=true), Matthews albedos (=false) ]

! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

MESSAGE_CHECK="GET_CONFIG: Extract IALBSRC from Config File"

IF(int_state%PRINT_ESMF .OR. int_state%PRINT_ALL) &

CALL ESMF_LogWrite(MESSAGE_CHECK,ESMF_LOGMSG_INFO,rc=RC)

! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

!

CALL ESMF_ConfigGetAttribute(config=CF & !<-- The configure file object

,value =int_state%IALBSRC & !<-- Put extracted quantity here

,label ='ialbsrc:' & !<-- The quantity's label in the configure file

,rc =RC)

!

! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

CALL ERR_MSG(RC,MESSAGE_CHECK,RC_CONF)

NMMB Tutorial: Physics

adding a configure file variable 2 of 2
Adding a configure file variable (2 of 2)

jobs/regression_test/solver_state.txt

#------------------------------------------------------------

# Name History Owned eXport Description

# Name Restart Import Time_ser

#------------------------------------------------------------

### 0D integer (scalar)

'IALBSRC' H - O - - - 'Albedo source identifier, 0--> Matthews albedos, 1--> MODIS albedos'

Added to the configure file

ialbsrc: .true. # MODIS albedos (=true), Matthews albedos (=false)

NMMB Tutorial: Physics

reading from a binary file
Reading from a Binary File

Subroutine read_binary in module_INIT_READ_BIN.F90

!-----------------------------------------------------------------------

!*** SNO and SNOWC

!-----------------------------------------------------------------------

IF(MYPE==0)THEN

READ(NFCST)TEMP1

ENDIF

CALL DSTRB(TEMP1,int_state%SNO,1,1,1,1,1,MYPE,MPI_COMM_COMP)

DO J=JMS,JME

DO I=IMS,IME

if(int_state%SNO(I,J).gt.0.) then

int_state%SNOWC(I,J)=0.98

else

int_state%SNOWC(I,J)=0.0

endif

ENDDO

ENDDO

NMMB Tutorial: Physics

reading from a nemsio file 1 of 3
Reading from a NEMSIO File (1 of 3)

Subroutine read_nemsio in module_INIT_READ_NEMSIO.F90

read_blocks: if(.not.int_state%RESTART) then! cold start!

(1) Stuff on next slide for reading from an NPS-generated NEMSIO “input” file

else read_blocks ! Restart

(2) Stuff 2 slides later for reading from a model NEMSIO restart file

endifread_blocks ! cold start /restart

=> Remember to new array(s) in both locations!

NMMB Tutorial: Physics

reading from a nemsio file 2 of 3
Reading from a NEMSIO File (2 of 3)

Subroutine read_nemsio in module_INIT_READ_NEMSIO.F90

(reads from an NPS-generated NEMSIO file)

!------------------------------------------------------------------

!*** SNO and SNOWC

!-------------------------------------------------------------------

!

call getrecn(recname,reclevtyp,reclev,nrec,'sno','sfc',1,recn)

if(recn>0) then

fldst=(recn-1)*fldsize

do j=jts,jte

js=(j-jts)*(ite-its+1)

do i=its,ite

int_state%SNO(i,j)=tmp(i-its+1+js+fldst)

if(int_state%SNO(i,j).gt.0.) then

int_state%SNOWC(i,j) = 0.98

else

int_state%SNOWC(i,j) = 0.0

endif

enddo

enddo

endif

NMMB Tutorial: Physics

reading from a nemsio file 3 of 3
Reading from a NEMSIO File (3 of 3)

Subroutine read_nemsio in module_INIT_READ_NEMSIO.F90

(reads from a model NEMSIO restart file)

!--------------------------------------------------------------------

!*** SNOWC

!--------------------------------------------------------------------

!

call getrecn(recname,reclevtyp,reclev,nrec,'snowc','sfc',1,recn)

if(recn>0) then

fldst=(recn-1)*fldsize

do j=jts,jte

js=(j-jts)*(ite-its+1)

do i=its,ite

int_state%SNOWC(i,j)=tmp(i-its+1+js+fldst)

enddo

enddo

endif

NMMB Tutorial: Physics

other steps as in dusan s presentation
Other Steps (as in Dusan’s presentation)

module_SOLVER_INTERNAL_STATE.F90

REAL(kind=KFPT),DIMENSION(:,:),POINTER :: <other arrays>, SNOWC, <more arrays>

. . .

CALL SET_VAR_PTR(int_state%VARS,NV,'SNOWC' ,int_state%SNOWC,(/ IMS,JMS /),(IME,JME /) )

module_SOLVER_GRID_COMP.F90

SUBROUTINE SOLVER_INITIALIZE

. . .

int_state%SNOWC(I,J) = 0.

. . .

SUBROUTINE SOLVER_RUN

. . .

CALL RADIATION (<args>, int_state%SNOWC,<args>)

. . .

CALL TURBL(<args>,int_state%SNOWC,<args>)

NMMB Tutorial: Physics

renamed output fields
Renamed Output Fields

Configure file option:

write_nemsioctl:.TRUE. # True--> Yes write ctl for nemsio run history files

Sample output from run directory, 3-h history file & GrADS control (ctl) file from the 1st domain:

  • nmmb_hst_01_nio_0003h_00m_00.00snmmb_hst_01_nio_0003h_00m_00.00s.ctl
  • Most array names are the same as in solver_state.txt , except for:
  • History files. Arrays are renamed in subroutine WRITE_NEMSIO_RUNHISTORY_OPEN in module_WRITE_ROUTINES.F90 at “IF (RECNAME(NREC)==“ lines. Examples: Array names in model: W_TOT, CW, U, V, T, Q, O3 Renamed fields in NEMSIO files: vvel, clwmr, ugrd, vgrd, tmp, spfh, o3mr
  • Restart files. Arrays are renamed in subroutine WRITE_NEMSIO_RUNRESTART_OPEN at similar lines. They are usually the same as in the history files, except for vertical velocity.
    • “W” in model is part of the full vertical velocity, written as “w” to the history file and “vvel” in the restart file.
    • “W_TOT” in model is the full vertical velocity, written as “vvel” only to the history file (based on the current solver_state.txt file in the SVN trunk).

NMMB Tutorial: Physics

rrtm gfs codes in phys
RRTM & GFS Codes in /phys

*.f files (compiled in –r8)

calpreciptype.fideaca.f mstadbtn2.f radiation_clouds_nmmb.fsascnv.f

cnvc90.f idea_co2.f mstadbtn.fradiation_gases.fsascnvn.f

co2hc.f idea_dissipation.fmstcnv.fradiation_gases_gfs.fset_soilveg.f

date_def.f idea_h2o.f namelist_soilveg.fradiation_gases_nmmb.fsfc_diag.f

dcyc2.f idea_ion.fozinterp.fradiation_surface.fsfc_diff.f

dcyc2.pre.rad.f idea_o2_o3.f ozne_def.fradiation_surface_gfs.fsfc_drv.f

efield.fidea_phys.fozphys.fradiation_surface_nmmb.fsfc_land.f

funcphys.fidea_solar_heating.fphyscons.frad_initialize.fsfc_nst.f

gbphys.fidea_tracer.fphysparam.frad_initialize_nmmb.fsfc_ocean.f

get_prs.fiounitdef.fphyspara_nmmb.fradlw_datatb.fsfc_sice.f

gfs_phy_tracer_config.flrgsclr.fprecpd.fradlw_datatb_nmmb.fsfcsub.f

gocart_tracer_config.fmachine.fprecpd_nmmb.fradlw_main.fsflx.f

gocart_tracer_config_stub.fmersenne_twister.f progt2.f radlw_main_nmmb.fshalcnv.f

grrad.fmodule_bfmicrophysics.fprogtm_module.fradlw_param.f shalcv_1lyr.f

grrad_gfs.fmodule_nst_model.fradiation_aerosols.fradlw_param_nmmb.fshalcv.f

grrad_nmmb.fmodule_nst_parameters.fradiation_aerosols_gfs.fradsw_datatb.fshalcv_fixdp.f

gscond.fmodule_nst_water_prop.fradiation_aerosols_nmmb.fradsw_datatb_nmmb.fshalcv_opr.f

gsmddrive.f moninp1.f radiation_astronomy.fradsw_main.ftracer_const_h.f

gwdc.fmoninp.fradiation_astronomy_gfs.fradsw_main_nmmb.f tridi2t3.f

gwdps.f moninq1.f radiation_astronomy_nmmb.fradsw_param.f

h2oc.f moninq.fradiation_clouds.fradsw_param_nmmb.f

h2ohdc.f mstadb.fradiation_clouds_gfs.f rascnvv2.f

*_nmmb.f files – all but precpd_nmmb.f are related to RRTM radiation in the NMMB

grrad_nmmb.fradiation_aerosols_nmmb.fradiation_gases_nmmb.fradlw_datatb_nmmb.fradsw_datatb_nmmb.f

physpara_nmmb.fradiation_astronomy_nmmb.fradiation_surface_nmmb.fradlw_main_nmmb.fradsw_main_nmmb.f

precpd_nmmb.fradiation_clouds_nmmb.frad_initialize_nmmb.fradlw_param_nmmb.fradsw_param_nmmb.f

NMMB Tutorial: Physics

sequence of physics calls in model solver

Sequence of Physics Callsin Model Solver

nmm/module_SOLVER_GRID_COMP.F90

physics calls in solver run 1 of 2
Physics Calls in Solver_Run(1 of 2)

SUBROUTINE SOLVER_RUN in module_SOLVER_GRID_COMP.F90

  • MAX_FIELDS (_HR, _W6) – maximum hourly severe WX fields
  • UPDATE_WATER – couple/synchronize WATER(:,:,:,P_Qx) [ => TRACERS(:,:,:,P_Qx) ] arrays with 3D CWM, F_ice, F_rain, F_RimeF (“ferrier”) arrays
  • CALL READPCP – Read input precipobs, NDAS precipitation assimilation
  • CALL TIME_MEASURE – time fields for GFDL radiation (NTIMESTEP_RAD=NTIMESTEP+1)
  • RADIATION + various ESMF calls for time fields (controlled by nrads=nradl)
  • RDTEMP – update T from radiative temperature tendencies (RSWTT, RLWTT)
  • SWAPHN, POLEHN – exchange across E-W boundary & poles (global NMMB)

=> Reset to 0 radiation & land sfc accumulators (“buckets”), controlled by nhrs_xxx

  • Turbulence branch (controlled by nphs):
    • TURBL – sfc layer, land surface, PBL, GWD+MB)
    • HALO_EXCH – halo exchanges for DUDT, DVDT
    • H_TO_V_TEND – interpolate from H (mass) to V (velocity) points, update U,V winds
    • SWAPHN, POLEHN, SWAPWN, POLEWN – exchange across boundaries (global NMMB)

NMMB Tutorial: Physics

physics calls in solver run 2 of 2
Physics Calls in Solver_Run (2 of 2)

(cont.)

=> Reset to 0 heating, precipitation, & microphysical process accumulators (nhrs_xxx)

  • Moist processes branch (controlled by nprecip)
    • CLTEND (ICTEND=-1) – defines TOLD 3D array
    • CUCNVC – convection
    • HALO_EXCH, H_TO_V_TEND
    • SWAPHN, POLEHN, SWAPWN, POLEWN – exchange across boundaries (global NMMB)
    • GSMDRIVE – microphysics
    • CLTEND (ICTEND=0) – Calculates cloud (Cu+micro) temperature tendencies (Tadj)
    • CHKSNOW, ADJPPT – NDAS precipitation assimilation
    • SWAPHN, POLEHN – Q, CW … include WATER(:,:,:,P_Qx) for other schemes?
    • HALO_EXCH – halo exchanges for Q, CW
  • CLTEND (ICLTEND=1) – update T from cloud temperature tendencies (Tadj)
  • SWAPHN, POLEHN – exchange T across boundaries (global)
  • HALO_EXCH – halo exchanges for T, WATER(:,:,:,P_Qx)

NMMB Tutorial: Physics