Presentation

advertisement
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
Download