Model Physics / Porting Physics to the NMMB NEMS-NMMB Tutorial 1 April 2015 Brad Ferrier (Dusan Jovic, Ratko Vasic, Weiguo Wang) Outline • Physics options and parameter settings (slides 3-18) – – – – – – Shortwave (SW) and longwave (LW) radiation (sl 3-4) Planetary boundary layer (PBL) & surface layer (sl 5,6,8) Gravity wave drag + mountain blocking (sl 7-8) Land surface schemes (sl 9-10) Convection (sl 11, 15-17) and microphysics (sl 12-17) Full GFS physics suite (sl 18) • Flowcharts of codes relating various physics (sl 19-22) • Source codes and porting physics (slides 23-35) – Adding a new physics array, + output fields (sl 23-32) – List of physics (/phys) directory (sl 33) – Physics calls in model solver (sl 34-35) 4/1/2015 NMMB Tutorial: Physics 2 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. Currently EMC version 3. Ported from AER and optimized by Yu-Tai Hou in global branch Coupled to the NMMB by Hsin-Mu Lin in meso branch 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) 4/1/2015 NMMB Tutorial: Physics 3 Configure File Settings - Radiation shortwave: # Shortwave radiation schemes, gfdl or rrtm (recommended) longwave: # Longwave radiation schemes, gfdl or rrtm (recommended) … 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: # Accumulator arrays are reset to 0 by user-defined options (more on slide 17). 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), do not mix SW & LW options • Recommend nrads=nradl and set so that radiation is called at times corresponding with output (e.g. top of the hour) 4/1/2015 NMMB Tutorial: Physics 4 Surface Layer and PBL (1 of 2) • 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) • Older 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 4/1/2015 NMMB Tutorial: Physics 5 Surface Layer and PBL (hurricanes) • GFDL surface layer (phys/module_SF_GFDL.F90) – run_tc: read input 10-m winds (default=F) – sfenth: surface-layer enhancement for >15 m s-1 (default =0) • HWRF GFS PBL (phys/module_BL_GFSPBLHUR.F90) – var_ric: variable RIC (default =1 to use), otherwise fixed RIC=0.25 (RIC ≡ critical Richardson Number) – For var_ric=1 only: Surface Rossby number (Vickers and Mahart, JAM 2004) • coef_ric_l: regression coefficient over land (default =0.16) • coef_ric_s: regression coefficient over sea (default=0.16) – alpha: 0-1 scale factor to reduce K-profile functions (default =0.7) – disheat: dissipative heating (default =true) 4/1/2015 NMMB Tutorial: Physics 6 Gravity Wave Drag (GWD) and Mountain Blocking (+MB) • GWD+MB (nmm/module_GWD.F90) – Provided from GFS (Jordan Alpert & Shrinivas Moorthi) – 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 4/1/2015 NMMB Tutorial: Physics 7 Configure File Settings sfc_layer: # Surface layer schemes: myj for non-hurricanes, gfdl for hurricanes … turbulence: # Turbulence schemes: myj or gfs for non-hurricanes, gfshur for hurricanes … gwdflg: true # True--> GWD on ; False--> GWD off cdmb: 0.1* # adjusts mountain blocking cleffamp: 1.0 * # adjusts the gravity wave drag (GWD) sigfac: 3.00 * # dividing streamline is searched above the highest elevation by sigfac*Zstd (Zstd=std dev 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 based on optimal settings for 12-km runs. Code recently revised so that the “cleff” parameter used within the scheme is reduced by SQRT(DX/12) where DX is the grid resolution in km. 4/1/2015 NMMB Tutorial: Physics 8 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) – 4 soil layers + snow layer • RUC forthcoming (thanks Isidora Jankov, Tanya Smirnova) • GFDL slab (within the GFDL surface layer; hurricanes) 4/1/2015 NMMB Tutorial: Physics 9 Configure File Settings land_surface: # land surface schemes: noah or liss, gfdlslab for hurricanes only … ucmcall: # Use (=1) or do not use (=0) urban canopy model (not tested) 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 (sfc layer + PBL), and GWD+MB 4/1/2015 NMMB Tutorial: Physics 10 Convection • Betts-Miller-Janjic (BMJ) (phys/module_CU_BMJ.F90) – BMJ scheme changes T & Q only • Simplified Arakawa Schubert (SAS) (phys/module_CU_BMJ.F90) – SAS is a mass flux scheme ncloud=1, detrains liquid & ice (partitioned into various pre-existing species, may differ from HWRF) • Hurricane SAS (phys/module_CU_SASHUR.F90) • All schemes account for deep (precipitating) and shallow (nonprecipitating) modes of convection 4/1/2015 NMMB Tutorial: Physics 11 Microphysics (1 of 3) • Older NAM/HWRF (phys/module_MP_ETANEW.F90) – ‘fer’ is similar to “old Eta” in WRF (etampold, mp_physics=95) – Uses smaller look up tables for rain – Predicts cloud water, rain, total (small + large) ice, and large ice density (“rime factor”) – Internal algorithm separates cloud ice from snow/graupel • Ferrier-Aligo (phys/module_MP_FER_HIRES.F90) – ‘fer_hires’ is more similar to newer version in WRF (etampnew, mp_physics=5) – Uses larger look up tables for rain – Improved treatment of deep convection 4/1/2015 NMMB Tutorial: Physics 12 Microphysics (2 of 3) • GFS (phys/module_MP_GFS.F90) – Zhao-Moorthi-Pan scheme, similar to what’s in GFS – 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) – Hong et al. (2004), Hong & Kim (2006) – Predicts cloud water, cloud ice, rain, snow, & graupel – Added based on feedback from SPC, used in 4-km NSSL ARW 4/1/2015 NMMB Tutorial: Physics 13 Microphysics (3 of 3) • Thompson (phys/module_mp_thompson.F90 & phys/module_mp_radar.F90) – Predicts mixing ratios of cloud water, cloud ice, rain, snow, & graupel; number concentrations of rain and cloud ice – Extra care dedicated to the treatment of snow – Calculates radar reflectivity; also effective radii for cloud water, cloud ice, and snow for use in RRTM radiation – Recently finished coupling with the RRTM radiation (still ongoing?) – Would not recommend use with GFDL radiation 4/1/2015 NMMB Tutorial: Physics 14 Configure File Settings (1 of 3) convection: # Convective scheme, either bmj or sas, sashur for hurricanes microphysics: # Microphysics scheme, either fer, fer_hires, gfs, wsm6, or thompson. … spec_adv: # Separately advect hydrometeor species (=true) or advect only total condensate (=false). Strongly recommend spec_adv=true for thompson. imprate: # 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 4/1/2015 NMMB Tutorial: Physics 15 Configure File Settings (2 of 3) - Convection Parameters Settings that control the BMJ convection 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 test for deep convection fails (entropy decreases) Settings that control the Hurricane SAS convection sas_pgcon: # convectively-forced pressure gradients for deep convection (default=0.55) sas_shal_pgcon: # similar but for shallow convection (default=-1, use sas_pgcon) sas_shalconv: # enable shallow conv, better with turbulence=‘gfshur’ (default =1, enable scheme) sas_mass_flux: # upper limit for mass flux (default=9.0e9 kg m-2?, disable upper limit) sas_mommix: f # factor (0-1) to reduce momentum mixing (default=1.0; currently disabled in code) (Meso-SAS turned on by a logical variable within the code) 4/1/2015 NMMB Tutorial: Physics 16 Configure File Settings (3 of 3) - Accumulators 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* • This example has “bucket” accumulations, for precipitation, diabatic heating rates for convection & microphysics, and cloud fractions* being reset to zero at every 3 h. • This differs from WRF, which has continuous accumulations that are not reset to zero. * NOTE: cloud fractions are calculated in the radiation and not in the microphysics. nhrs_rdlw, nhrs_rdsw: # Frequency in hours for resetting LW, SW heating rates (slide 4) 4/1/2015 NMMB Tutorial: Physics 17 Full GFS Physics (‘gbphys’) gfs: false # Select entire GFS physics (=true) or individual options (=false) (added by Ratko Vasic for use in global NMMB) Midway through the main NMMB model solver, nmm/module_SOLVER_GRID_COMP.F90: gfs_phys_test: IF (.NOT.int_state%GFS) THEN • Run the various physics discussed earlier and call additional subroutines; all described on slides 34-35 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 4/1/2015 NMMB Tutorial: Physics 18 Flowcharts of Physics Codes With Respect to NMMB Solver 4/1/2015 NMMB Tutorial: Physics 19 Flowchart for Radiation & Convection nmm/module_SOLVER_GRID_COMP.F90 nmm/ nmm/ module_CONVECTION.F90 module_RADIATION.F90 phys/ module_RA_GFDL. F90 4/1/2015 phys/ module_RA_RRTM.F90 (calls *_nmmb.f) phys/ module_CU_BMJ.F90 NMMB Tutorial: Physics phys/ module_CU_SAS.F90 phys/ module_CU_SASHUR. F90 20 Flowchart for Microphysics nmm/module_SOLVER_GRID_COMP.F90 Other Physics nmm/module_MICROPHYSICS.F90 phys/ phys/module_MP_ ETANEW.F90 module_mp_THOMPSON.F90 module_mp_radar.F90 phys/ phys/module_MP_ FER_HIRES.F90 module_MP_WSM6.F90 phys/module_MP_GFS.F90 (calls precpd_nmmb.f) 4/1/2015 NMMB Tutorial: Physics 21 Flowchart for Turbulence, etc. nmm/module_SOLVER_GRID_COMP.F90 phys/module_SF_JSFC.F90 phys/module_SF_GFDL.F90 nmm/module_TURBULENCE.F90 Surface Layer phys/module_LS_NOAHLSM.F90 phys/module_LS_LISS.F90 Land Surface PBL phys/module_BL_MYJPBL.F90 phys/module_BL_GFSPBL.F90 phys/module_BL_GFSPBLHUR.F90 GWD + MB (optional) nmm/module_GWD.F90 4/1/2015 NMMB Tutorial: Physics 22 Source Codes and Porting Physics • Add a new array (sl 24, 27-31) • e.g. 2D snow cover (SNOWC array) – Adding a configure file variable (sl 25-26) • e.g. vegetation flag (ivegsrc) – Reading new fields from input files (sl 27-30) – Other source code changes (sl 31) • Miscellaneous – Renamed output fields (sl 32) – List of physics (/phys) directory (sl 33) • Sequence of physics calls in model solver (sl 34-35) 4/1/2015 NMMB Tutorial: Physics 23 List of Codes To Change /nmm directory module_GET_CONFIG.F90 module_INIT_READ_BIN.F90 module_INIT_READ_NEMSIO.F90 module_SOLVER_INTERNAL_STATE.F90 module_SOLVER_GRID_COMP.F90 module_RADIATION.F90 module_TURBULENCE.F90 - Add a configure file variable Read from binary file Read from NEMSIO file (NPS input & restart files) Loads into ‘generic’ int_state%VARS Main solver: initializes, then passes to physics Used by radiation, adjust sfc albedos over snow Updated by land surface module_WRITE_ROUTINES.F90 - Rename variables in NEMSIO GrADS control files tests/solver_state.txt #-----------------------------------------------------------# Name History Owned eXport Description # Name Restart Import Time_ser #-----------------------------------------------------------... ### 2D real ... 'SNOWC' H R O T 'Snow Cover (fraction: 4/1/2015 NMMB Tutorial: Physics 0--1)' 24 Adding a Configure File Variable (1 of 2) Step #1: Edit module_GET_CONFIG.F90 [ ivegsrc: # Use (1) or do not use (0) IGBP types] ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ MESSAGE_CHECK="GET_CONFIG: Extract IVEGSRC 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%IVEGSRC & !<- Put extracted quantity here ,label ='ivegsrc:' & !<-- The quantity's label in the configure file ,rc =RC) ! ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ CALL ERR_MSG(RC,MESSAGE_CHECK,RC_CONF) 4/1/2015 NMMB Tutorial: Physics 25 Adding a Configure File Variable (2 of 2) Step #2: Add to test/solver_state.txt #-----------------------------------------------------------# Name History Owned eXport Description # Name Restart Import Time_ser #-----------------------------------------------------------### 0D integer (scalar) 'IVEGSRC' H - O - - - 'Vegetation, 0--> USGS, 1--> IGBP' Step #3: Add to the configure file ivegsrc: 1 4/1/2015 # Use (1) or do not use (0) IGBP types NMMB Tutorial: Physics 26 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 4/1/2015 NMMB Tutorial: Physics 27 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! Next slide (28) read from an NPS-generated NEMSIO “input” file else read_blocks ! Restart Slide thereafter (29) read from a NEMSIO model restart file endif read_blocks ! cold start /restart => Remember to add new array(s) in both locations! 4/1/2015 NMMB Tutorial: Physics 28 Reading from a NEMSIO File (2 of 3) Subroutine read_nemsio in module_INIT_READ_NEMSIO.F90 (reads from an NPS-generated NEMSIO input 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 4/1/2015 NMMB Tutorial: Physics 29 Reading from a NEMSIO File (3 of 3) Subroutine read_nemsio in module_INIT_READ_NEMSIO.F90 (reads from a NEMSIO model 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 4/1/2015 NMMB Tutorial: Physics 30 Other Steps 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>) 4/1/2015 NMMB Tutorial: Physics 31 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.00s nmmb_hst_01_nio_0003h_00m_00.00s.ctl Most array names are the same as in solver_state.txt , except for: 1. 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 2. 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. a. “W” in model is part of the full vertical velocity, written as “w” to the history file and “vvel” in the restart file. b. “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). 4/1/2015 NMMB Tutorial: Physics 32 Source Codes in Physics(/phys) Directory NMMB physics codes are structured as module_XX_YYYY.F90 (compiled in –r4) XX = BL (PBL), CU (conv), LS (land sfc), MP (micro), RA (rad), SF (sfc layer) YYYY = individual physics schemes module_BL_GFSPBL.F90 module_BL_GFSPBLHUR.F90 module_BL_MYJPBL.F90 module_CU_BMJ.F90 module_CU_SAS.F90 module_CU_SASHUR.F90 module_LS_LISS.F90 module_LS_NOAHLSM.F90 module_MP_ETANEW.F90 module_MP_FER_HIRES.F90 module_MP_GFS.F90 module_mp_radar.F90 module_mp_thompson.F90 module_MP_WSM6.F90 module_RA_GFDL.F90 module_RA_RRTM.F90 module_SF_GFDL.F90 module_SF_JSFC.F90 module_SF_URBAN.F90 *_nmmb.f are NMMB source codes that call GFS physics. Most are used by RRTM radiation, called by phys/module_RA_RRTM.F90; precpd_nmmb.f is called by phys/module_MP_GFS.F90 (see slide 20) grrad_nmmb.f precpd_nmmb.f radiation_aerosols_nmmb.f radiation_astronomy_nmmb.f radiation_clouds_nmmb.f radiation_gases_nmmb.f radiation_surface_nmmb.f rad_initialize_nmmb.f radlw_datatb_nmmb.f radlw_main_nmmb.f radlw_param_nmmb.f radsw_datatb_nmmb.f radsw_main_nmmb.f radsw_param_nmmb.f GFS physics are *.f files (these and *_nmmb.f are compiled in –r8) calpreciptype.f cnvc90.f co2hc.f date_def.f dcyc2.f ideaca.f idea_co2.f idea_dissipation.f idea_h2o.f idea_ion.f mstadbtn2.f mstadbtn.f mstcnv.f namelist_soilveg.f ozinterp.f plus 4/1/2015 many radiation_clouds_nmmb.f radiation_gases.f radiation_gases_gfs.f radiation_gases_nmmb.f radiation_surface.f sascnv.f sascnvn.f set_soilveg.f sfc_diag.f sfc_diff.f more NMMB Tutorial: Physics 33 Physics Calls in Solver_Run (1 of 2) SUBROUTINE SOLVER_RUN in nmm/module_SOLVER_GRID_COMP.F90 • MAX_FIELDS (_HR, _W6) – maximum hourly severe WX fields • UPDATE_WATER – couple/synchronize QV, QC,QR,QI,QS,QG => TRACERS(:,:,:,P_Qx) ] arrays with 3D CWM, F_ice, F_rain, F_RimeF (“ferrier”) arrays • READPCP – Read input precip obs, NDAS precipitation assimilation • 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): – – – – 4/1/2015 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 34 Physics Calls in Solver_Run (2 of 2) (cont.) • Reset heating, precipitation, etc accumulators to zero (nhrs_xxx “buckets”) • Moist processes branch (controlled by nprecip) – CLTEND (ICTEND=-1) – defines input, original T array (Told) – CUCNVC – convection – HALO_EXCH, H_TO_V_TEND – (see previous slide) – SWAPHN, POLEHN, SWAPWN, POLEWN – (see previous slide) – GSMDRIVE – microphysics – CLTEND (ICTEND=0) – calculates cloud (Cu+micro) T tendencies (Tadj) – CHKSNOW, ADJPPT – NDAS precipitation assimilation – SWAPHN, POLEHN – exchange across boundaries (global NMMB) – HALO_EXCH – halo exchanges for Q, CW • CLTEND (ICLTEND=1) – update T from cloud temperature tendencies (Tadj) • SWAPHN, POLEHN – exchange T across boundaries (global NMMB) • HALO_EXCH – halo exchanges for T; also for QV, QC, …, Qx, Nx arrays if spec_adv=T 4/1/2015 NMMB Tutorial: Physics 35