Presentation is loading. Please wait.

Presentation is loading. Please wait.

Model Physics / Porting Physics to the NMMB NEMS-NMMB Tutorial 1 April 2015 Brad Ferrier (Dusan Jovic, Ratko Vasic, Weiguo Wang)

Similar presentations

Presentation on theme: "Model Physics / Porting Physics to the NMMB NEMS-NMMB Tutorial 1 April 2015 Brad Ferrier (Dusan Jovic, Ratko Vasic, Weiguo Wang)"— Presentation transcript:

1 Model Physics / Porting Physics to the NMMB NEMS-NMMB Tutorial 1 April 2015 Brad Ferrier (Dusan Jovic, Ratko Vasic, Weiguo Wang)

2 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/2015NMMB Tutorial: Physics2

3 Radiation Options GFDL radiation (phys/module_RA_GFDL.F90) – Lacis & Hansen shortwave (SW), Fels & Schwartzkopf (LW) – Prescribed ozone & CO 2 – 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) & CO 2, O2, and various trace gases – Bilinear interpolation from 5 o 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/2015NMMB Tutorial: Physics3

4 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/2015NMMB Tutorial: Physics4

5 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) – 1 st order non-local Pan-Mahrt scheme – Differs from what’s in the GFS because it uses the MYJ surface layer 4/1/2015NMMB Tutorial: Physics5

6 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/2015NMMB Tutorial: Physics6

7 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 4 th 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/2015NMMB Tutorial: Physics7

8 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*Z std (Z std =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/2015NMMB Tutorial: Physics8

9 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/2015NMMB Tutorial: Physics9

10 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/2015NMMB Tutorial: Physics10

11 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/2015NMMB Tutorial: Physics11

12 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/2015NMMB Tutorial: Physics12

13 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 > RH crit (=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/2015NMMB Tutorial: Physics13

14 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/2015NMMB Tutorial: Physics14

15 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/2015NMMB Tutorial: Physics15

16 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/2015NMMB Tutorial: Physics16

17 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/2015NMMB Tutorial: Physics17

18 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/2015NMMB Tutorial: Physics18

19 Flowcharts of Physics Codes With Respect to NMMB Solver 4/1/2015NMMB Tutorial: Physics19

20 Flowchart for Radiation & Convection nmm/module_SOLVER_GRID_COMP.F90 nmm/ module_RADIATION.F90 phys/ module_RA_GFDL. F90 phys/ module_RA_RRTM.F90 (calls *_nmmb.f) nmm/ module_CONVECTION.F90 phys/ module_CU_BMJ.F90 phys/ module_CU_SAS.F90 phys/ module_CU_SASHUR. F90 4/1/2015NMMB Tutorial: Physics20

21 Flowchart for Microphysics nmm/module_SOLVER_GRID_COMP.F90 nmm/module_MICROPHYSICS.F90 phys/module_MP_ ETANEW.F90 phys/module_MP_ FER_HIRES.F90 phys/module_MP_GFS.F90 (calls precpd_nmmb.f) phys/ module_MP_WSM6.F90 phys/ module_mp_THOMPSON.F90 module_mp_radar.F90 Other Physics 4/1/2015NMMB Tutorial: Physics21

22 Flowchart for Turbulence, etc. nmm/module_SOLVER_GRID_COMP.F90 nmm/module_TURBULENCE.F90 phys/module_LS_NOAHLSM.F90 phys/module_LS_LISS.F90 phys/module_BL_MYJPBL.F90 phys/module_BL_GFSPBL.F90 phys/module_BL_GFSPBLHUR.F90 GWD + MB (optional) nmm/module_GWD.F90 Surface Layer Land Surface PBL 4/1/2015NMMB Tutorial: Physics22 phys/module_SF_JSFC.F90 phys/module_SF_GFDL.F90

23 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/2015NMMB Tutorial: Physics23

24 List of Codes To Change /nmm directory 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 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)' 4/1/2015NMMB Tutorial: Physics24

25 Adding a Configure File Variable (1 of 2) ! ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 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) Step #1: Edit module_GET_CONFIG.F90 [ ivegsrc: # Use (1) or do not use (0) IGBP types ] 4/1/2015NMMB Tutorial: Physics25

26 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' 4/1/2015NMMB Tutorial: Physics26 ivegsrc: 1 # Use (1) or do not use (0) IGBP types Step #3: Add to the configure file

27 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 4/1/2015NMMB Tutorial: Physics27

28 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/2015NMMB Tutorial: Physics28

29 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 endif 4/1/2015NMMB Tutorial: Physics29

30 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 endif 4/1/2015NMMB Tutorial: Physics30

31 Other Steps module_SOLVER_INTERNAL_STATE.F90 module_SOLVER_GRID_COMP.F90 SUBROUTINE SOLVER_INITIALIZE... int_state%SNOWC(I,J) = 0.... SUBROUTINE SOLVER_RUN... CALL RADIATION (, int_state%SNOWC, )... CALL TURBL(, int_state%SNOWC, ) REAL(kind=KFPT),DIMENSION(:,:),POINTER ::, SNOWC,... CALL SET_VAR_PTR(int_state%VARS,NV,'SNOWC',int_state%SNOWC,(/ IMS,JMS /),(IME,JME /) ) 4/1/2015NMMB Tutorial: Physics31

32 Renamed Output Fields 4/1/2015NMMB Tutorial: Physics32 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 1 st 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).

33 Source Codes in Physics(/phys) Directory GFS physics are *.f files (these and *_nmmb.f are compiled in –r8) calpreciptype.f ideaca.f mstadbtn2.f radiation_clouds_nmmb.f sascnv.f cnvc90.f idea_co2.f mstadbtn.f radiation_gases.f sascnvn.f co2hc.f idea_dissipation.f mstcnv.f radiation_gases_gfs.f set_soilveg.f date_def.f idea_h2o.f namelist_soilveg.f radiation_gases_nmmb.f sfc_diag.f dcyc2.f idea_ion.f ozinterp.f radiation_surface.f sfc_diff.f plus many more *_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 radiation_aerosols_nmmb.f radiation_gases_nmmb.f radlw_datatb_nmmb.f radsw_datatb_nmmb.f radiation_astronomy_nmmb.f radiation_surface_nmmb.f radlw_main_nmmb.f radsw_main_nmmb.f precpd_nmmb.f radiation_clouds_nmmb.f rad_initialize_nmmb.f radlw_param_nmmb.f radsw_param_nmmb.f 4/1/2015NMMB Tutorial: Physics33 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.F90module_CU_SAS.F90module_MP_ETANEW.F90module_mp_thompson.F90 module_SF_GFDL.F90 module_BL_GFSPBLHUR.F90module_CU_SASHUR.F90module_MP_FER_HIRES.F90module_MP_WSM6.F90module_SF_JSFC.F90 module_BL_MYJPBL.F90module_LS_LISS.F90module_MP_GFS.F90module_RA_GFDL.F90module_SF_URBAN.F90 module_CU_BMJ.F90module_LS_NOAHLSM.F90module_mp_radar.F90module_RA_RRTM.F90

34 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): – 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) 4/1/2015NMMB Tutorial: Physics34

35 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/2015NMMB Tutorial: Physics35

Download ppt "Model Physics / Porting Physics to the NMMB NEMS-NMMB Tutorial 1 April 2015 Brad Ferrier (Dusan Jovic, Ratko Vasic, Weiguo Wang)"

Similar presentations

Ads by Google