Skip to content

Commit

Permalink
Added coupling between GOCART aerosols and RRTMG&Thompson in CCPP phy…
Browse files Browse the repository at this point in the history
…sics (#1192)

* Added coupling of GOCART aerosols with radiation

* Added a regression test named rad_grt_atm_aerosols into rt.conf

* Updated FV3 to include additions of total flux calculation for wet deposition in the Thompson scheme

* Removed unused file tests/tests/rad_grt_atm_aerosols

* Updated FV3 for adding a switch to the Thompson scheme in physics

* Updated FV3 for fixing a bug in mp_thompson.F90
  • Loading branch information
ChunxiZhang-NOAA authored Jul 5, 2022
1 parent d179ec3 commit 65cf401
Show file tree
Hide file tree
Showing 19 changed files with 4,399 additions and 3,928 deletions.
2 changes: 1 addition & 1 deletion FV3
2 changes: 1 addition & 1 deletion GOCART
Submodule GOCART updated 89 files
+41 −69 .circleci/config.yml
+32 −0 .editorconfig
+7 −23 .github/CODEOWNERS
+78 −6 CHANGELOG.md
+1 −1 CMakeLists.txt
+452 −0 ESMF/Apps/GOCART2G_AopMod.F90
+188 −0 ESMF/Apps/aop_calculator.F90
+116 −0 ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_GridComp_ExtData.rc
+1 −0 ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_instance_CA.bc.rc
+1 −0 ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_instance_CA.br.rc
+1 −0 ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP.20C/CA2G_instance_CA.oc.rc
+278 −0 ESMF/GOCART2G_GridComp/CA2G_GridComp/AMIP/CA2G_GridComp_ExtData.yaml
+61 −110 ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridCompMod.F90
+278 −0 ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_GridComp_ExtData.yaml
+95 −95 ESMF/GOCART2G_GridComp/CA2G_GridComp/CA2G_StateSpecs.rc
+1 −1 ESMF/GOCART2G_GridComp/CA2G_GridComp/CMakeLists.txt
+1 −0 ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP.20C/DU2G_GridComp_ExtData.rc
+1 −0 ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP.20C/DU2G_instance_DU.rc
+170 −0 ESMF/GOCART2G_GridComp/DU2G_GridComp/AMIP/DU2G_GridComp_ExtData.yaml
+1 −1 ESMF/GOCART2G_GridComp/DU2G_GridComp/CMakeLists.txt
+29 −80 ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridCompMod.F90
+24 −24 ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.rc
+170 −0 ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_GridComp_ExtData.yaml
+47 −47 ESMF/GOCART2G_GridComp/DU2G_GridComp/DU2G_StateSpecs.rc
+2 −2 ESMF/GOCART2G_GridComp/GA_Environment/GA_EnvironmentMod.F90
+25 −24 ESMF/GOCART2G_GridComp/GOCART2G_GridCompMod.F90
+22 −22 ESMF/GOCART2G_GridComp/GOCART2G_StateSpecs.rc
+27 −0 ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP.20C/NI2G_GridComp_ExtData.rc
+1 −0 ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP.20C/NI2G_instance_NI.rc
+95 −0 ESMF/GOCART2G_GridComp/NI2G_GridComp/AMIP/NI2G_GridComp_ExtData.yaml
+1 −1 ESMF/GOCART2G_GridComp/NI2G_GridComp/CMakeLists.txt
+39 −87 ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridCompMod.F90
+95 −0 ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_GridComp_ExtData.yaml
+92 −92 ESMF/GOCART2G_GridComp/NI2G_GridComp/NI2G_StateSpecs.rc
+1 −0 ESMF/GOCART2G_GridComp/SS2G_GridComp/AMIP.20C/SS2G_GridComp_ExtData.rc
+1 −0 ESMF/GOCART2G_GridComp/SS2G_GridComp/AMIP.20C/SS2G_instance_SS.rc
+112 −0 ESMF/GOCART2G_GridComp/SS2G_GridComp/AMIP/SS2G_GridComp_ExtData.yaml
+1 −1 ESMF/GOCART2G_GridComp/SS2G_GridComp/CMakeLists.txt
+27 −77 ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridCompMod.F90
+112 −0 ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_GridComp_ExtData.yaml
+36 −36 ESMF/GOCART2G_GridComp/SS2G_GridComp/SS2G_StateSpecs.rc
+67 −0 ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP.20C/SU2G_GridComp_ExtData.rc
+57 −0 ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP.20C/SU2G_instance_SU.rc
+177 −0 ESMF/GOCART2G_GridComp/SU2G_GridComp/AMIP/SU2G_GridComp_ExtData.yaml
+1 −1 ESMF/GOCART2G_GridComp/SU2G_GridComp/CMakeLists.txt
+27 −77 ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridCompMod.F90
+177 −0 ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_GridComp_ExtData.yaml
+93 −93 ESMF/GOCART2G_GridComp/SU2G_GridComp/SU2G_StateSpecs.rc
+9 −0 ESMF/GOCART_GridComp/CFC_GridComp/AMIP.20C/CFC_GridComp.rc
+8 −0 ESMF/GOCART_GridComp/CFC_GridComp/AMIP.20C/CFC_GridComp_ExtData.rc
+15 −0 ESMF/GOCART_GridComp/CFC_GridComp/AMIP/CFC_GridComp_ExtData.yaml
+15 −0 ESMF/GOCART_GridComp/CFC_GridComp/CFC_GridComp_ExtData.yaml
+2 −3 ESMF/GOCART_GridComp/CFC_GridComp/CMakeLists.txt
+14 −0 ESMF/GOCART_GridComp/CH4_GridComp/AMIP.20C/CH4_GridComp.rc
+39 −0 ESMF/GOCART_GridComp/CH4_GridComp/AMIP.20C/CH4_GridComp_ExtData.rc
+174 −0 ESMF/GOCART_GridComp/CH4_GridComp/AMIP/CH4_GridComp_ExtData.yaml
+174 −0 ESMF/GOCART_GridComp/CH4_GridComp/CH4_GridComp_ExtData.yaml
+2 −3 ESMF/GOCART_GridComp/CH4_GridComp/CMakeLists.txt
+4 −5 ESMF/GOCART_GridComp/CMakeLists.txt
+50 −0 ESMF/GOCART_GridComp/CO2_GridComp/AMIP.20C/CO2_GridComp.rc
+19 −0 ESMF/GOCART_GridComp/CO2_GridComp/AMIP.20C/CO2_GridComp_ExtData.rc
+77 −0 ESMF/GOCART_GridComp/CO2_GridComp/AMIP/CO2_GridComp_ExtData.yaml
+2 −3 ESMF/GOCART_GridComp/CO2_GridComp/CMakeLists.txt
+77 −0 ESMF/GOCART_GridComp/CO2_GridComp/CO2_GridComp_ExtData.yaml
+13 −0 ESMF/GOCART_GridComp/CO_GridComp/AMIP.20C/CO_GridComp---full.rc
+27 −0 ESMF/GOCART_GridComp/CO_GridComp/AMIP.20C/CO_GridComp.rc
+112 −0 ESMF/GOCART_GridComp/CO_GridComp/AMIP.20C/CO_GridComp_ExtData.rc
+257 −0 ESMF/GOCART_GridComp/CO_GridComp/AMIP/CO_GridComp_ExtData.yaml
+2 −3 ESMF/GOCART_GridComp/CO_GridComp/CMakeLists.txt
+373 −0 ESMF/GOCART_GridComp/CO_GridComp/CO_GridComp_ExtData.yaml
+16 −0 ESMF/GOCART_GridComp/O3_GridComp/AMIP.20C/O3_GridComp.rc
+52 −0 ESMF/GOCART_GridComp/O3_GridComp/AMIP.20C/O3_GridComp_ExtData.rc
+242 −0 ESMF/GOCART_GridComp/O3_GridComp/AMIP/O3_GridComp_ExtData.yaml
+2 −3 ESMF/GOCART_GridComp/O3_GridComp/CMakeLists.txt
+242 −0 ESMF/GOCART_GridComp/O3_GridComp/O3_GridComp_ExtData.yaml
+32 −0 ESMF/GOCART_GridComp/Rn_GridComp/AMIP.20C/Rn_GridComp---full.rc
+16 −0 ESMF/GOCART_GridComp/Rn_GridComp/AMIP.20C/Rn_GridComp.rc
+17 −0 ESMF/GOCART_GridComp/Rn_GridComp/AMIP.20C/Rn_GridComp_ExtData.rc
+27 −0 ESMF/GOCART_GridComp/Rn_GridComp/AMIP/Rn_GridComp_ExtData.yaml
+2 −3 ESMF/GOCART_GridComp/Rn_GridComp/CMakeLists.txt
+27 −0 ESMF/GOCART_GridComp/Rn_GridComp/Rn_GridComp_ExtData.yaml
+2 −2 ESMF/Shared/Chem_AeroGeneric.F90
+7 −7 ESMF/UFS/Aerosol_Cap.F90
+1 −1 Process_Library/CMakeLists.txt
+0 −866 Process_Library/Chem_MieTableMod2G.F90
+563 −0 Process_Library/GOCART2G_MieMod.F90
+515 −642 Process_Library/GOCART2G_Process.F90
+256 −0 Process_Library/MieQuery.H
+6 −6 components.yaml
4 changes: 2 additions & 2 deletions modulefiles/ufs_common
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ module load ip/3.3.3
module load sp/2.3.3
module load w3nco/2.4.1

module load gftl-shared/v1.3.3
module load gftl-shared/v1.5.0
module load yafyaml/v0.5.1
module load mapl/2.11.0-esmf-8.3.0b09
module load mapl/2.22.0-esmf-8.3.0b09
4 changes: 2 additions & 2 deletions modulefiles/ufs_common_debug
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ module load ip/3.3.3
module load sp/2.3.3
module load w3nco/2.4.1

module load gftl-shared/v1.3.3
module load gftl-shared/v1.5.0
module load yafyaml/v0.5.1
module load mapl/2.11.0-esmf-8.3.0b09
module load mapl/2.22.0-esmf-8.3.0b09
378 changes: 189 additions & 189 deletions tests/RegressionTests_cheyenne.gnu.log

Large diffs are not rendered by default.

1,207 changes: 635 additions & 572 deletions tests/RegressionTests_cheyenne.intel.log

Large diffs are not rendered by default.

1,183 changes: 617 additions & 566 deletions tests/RegressionTests_gaea.intel.log

Large diffs are not rendered by default.

380 changes: 190 additions & 190 deletions tests/RegressionTests_hera.gnu.log

Large diffs are not rendered by default.

1,203 changes: 627 additions & 576 deletions tests/RegressionTests_hera.intel.log

Large diffs are not rendered by default.

1,634 changes: 849 additions & 785 deletions tests/RegressionTests_jet.intel.log

Large diffs are not rendered by default.

1,215 changes: 633 additions & 582 deletions tests/RegressionTests_orion.intel.log

Large diffs are not rendered by default.

910 changes: 455 additions & 455 deletions tests/RegressionTests_wcoss2.intel.log

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions tests/fv3_conf/control_run.IN
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,14 @@ if [ $USE_MERRA2 = .true. ]; then
cp @[INPUTDATA_ROOT]/FV3_input_data_INCCN_aeroclim/aer_data/LUTS/optics_SU.v1_3.dat optics_SU.dat
fi

#rad_c_gocart
if [ $IAER = 2011 ]; then
cp @[INPUTDATA_ROOT]/FV3_input_data_INCCN_aeroclim/aer_data/LUTS/optics_BC.v1_3.dat optics_BC.dat
cp @[INPUTDATA_ROOT]/FV3_input_data_INCCN_aeroclim/aer_data/LUTS/optics_OC.v1_3.dat optics_OC.dat
cp @[INPUTDATA_ROOT]/FV3_input_data_INCCN_aeroclim/aer_data/LUTS/optics_DU.v15_3.dat optics_DU.dat
cp @[INPUTDATA_ROOT]/FV3_input_data_INCCN_aeroclim/aer_data/LUTS/optics_SS.v3_3.dat optics_SS.dat
cp @[INPUTDATA_ROOT]/FV3_input_data_INCCN_aeroclim/aer_data/LUTS/optics_SU.v1_3.dat optics_SU.dat
fi
#ugwpv1
if [ $DO_UGWP_V1 = .true. ]; then
cp @[INPUTDATA_ROOT]/FV3_input_data/ugwp_c384_tau.nc ./ugwp_limb_tau.nc
Expand Down
6 changes: 6 additions & 0 deletions tests/parm/diag_table/diag_table_GOCART
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,12 @@
"gfs_phys", "nbdsf_ave", "nbdsf_ave", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "nddsf_ave", "nddsf_ave", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "trans_ave", "trans_ave", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "AOD_550", "aod550", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "DU_AOD_550", "du_aod550", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "SU_AOD_550", "su_aod550", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "BC_AOD_550", "bc_aod550", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "OC_AOD_550", "oc_aod550", "fv3_history2d", "all", .false., "none", 2
"gfs_phys", "SS_AOD_550", "ss_aod550", "fv3_history2d", "all", .false., "none", 2

#=============================================================================================
#
Expand Down
4 changes: 2 additions & 2 deletions tests/parm/gocart/AERO_HISTORY.rc.IN
Original file line number Diff line number Diff line change
Expand Up @@ -385,8 +385,8 @@ PC720x361-DC.LM: 72
inst_aod.duration: 010000,
inst_aod.ref_time: 000000,
inst_aod.grid_label: PC720x361-DC
inst_aod.fields: 'CAEXTTAUCA.bc' , 'CA.bc' , 'AOD_BC',
'CAEXTTAUCA.oc' , 'CA.oc' , 'AOD_OC',
inst_aod.fields: 'CA.bcEXTTAU' , 'CA.bc' , 'AOD_BC',
'CA.ocEXTTAU' , 'CA.oc' , 'AOD_OC',
'DUEXTTAU' , 'DU' , 'AOD_DU',
'NIEXTTAU' , 'NI' , 'AOD_NI',
'SSEXTTAU' , 'SS' , 'AOD_SS',
Expand Down
8 changes: 4 additions & 4 deletions tests/parm/gocart/CAP.rc
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,10 @@ CAP_EXPORTS:
MSA,SU msa
SO2,SU so2
SO4,SU so4
CAphobicCA.bc,CA.bc bc1
CAphilicCA.bc,CA.bc bc2
CAphobicCA.oc,CA.oc oc1
CAphilicCA.oc,CA.oc oc2
CA.bcphobic,CA.bc bc1
CA.bcphilic,CA.bc bc2
CA.ocphobic,CA.oc oc1
CA.ocphilic,CA.oc oc2
NH3,NI nh3
NH4a,NI nh4a
NO3an1,NI no3an1
Expand Down
1 change: 1 addition & 0 deletions tests/rt.conf
Original file line number Diff line number Diff line change
Expand Up @@ -214,3 +214,4 @@ RUN | control_atmwav

COMPILE | -DAPP=ATMAERO -DCCPP_SUITES=FV3_GFS_v17_p8 -D32BIT=ON | - wcoss2.intel | fv3 |
RUN | atmaero_control_p8 | - wcoss2.intel | fv3 |
RUN | atmaero_control_p8_rad | - wcoss2.intel | fv3 |
2 changes: 1 addition & 1 deletion tests/rt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,7 @@ if [[ $TESTS_FILE =~ '35d' ]] || [[ $TESTS_FILE =~ 'weekly' ]]; then
TEST_35D=true
fi

BL_DATE=20220629
BL_DATE=20220701

RTPWD=${RTPWD:-$DISKNM/NEMSfv3gfs/develop-${BL_DATE}/${RT_COMPILER^^}}

Expand Down
176 changes: 176 additions & 0 deletions tests/tests/atmaero_control_p8_rad
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
###############################################################################
#
# global control test with prognostic aerosols: GFSv17 P8 FV3-GOCART at C96L127
#
###############################################################################

export TEST_DESCR="Compare global results for prognostic aerosols with previous trunk version"

export CNTL_DIR=atmaero_control_p8_rad

export LIST_FILES="sfcf000.nc \
sfcf024.nc \
atmf000.nc \
atmf024.nc \
GFSFLX.GrbF00 \
GFSFLX.GrbF24 \
GFSPRS.GrbF00 \
GFSPRS.GrbF24 \
gocart.inst_aod.20210323_0600z.nc4 \
RESTART/coupler.res \
RESTART/fv_core.res.nc \
RESTART/fv_core.res.tile1.nc \
RESTART/fv_core.res.tile2.nc \
RESTART/fv_core.res.tile3.nc \
RESTART/fv_core.res.tile4.nc \
RESTART/fv_core.res.tile5.nc \
RESTART/fv_core.res.tile6.nc \
RESTART/fv_srf_wnd.res.tile1.nc \
RESTART/fv_srf_wnd.res.tile2.nc \
RESTART/fv_srf_wnd.res.tile3.nc \
RESTART/fv_srf_wnd.res.tile4.nc \
RESTART/fv_srf_wnd.res.tile5.nc \
RESTART/fv_srf_wnd.res.tile6.nc \
RESTART/fv_tracer.res.tile1.nc \
RESTART/fv_tracer.res.tile2.nc \
RESTART/fv_tracer.res.tile3.nc \
RESTART/fv_tracer.res.tile4.nc \
RESTART/fv_tracer.res.tile5.nc \
RESTART/fv_tracer.res.tile6.nc \
RESTART/phy_data.tile1.nc \
RESTART/phy_data.tile2.nc \
RESTART/phy_data.tile3.nc \
RESTART/phy_data.tile4.nc \
RESTART/phy_data.tile5.nc \
RESTART/phy_data.tile6.nc \
RESTART/sfc_data.tile1.nc \
RESTART/sfc_data.tile2.nc \
RESTART/sfc_data.tile3.nc \
RESTART/sfc_data.tile4.nc \
RESTART/sfc_data.tile5.nc \
RESTART/sfc_data.tile6.nc"

export_fv3
export NPZ=127
export NPZP=128
export DT_ATMOS=720
export SYEAR=2021
export SMONTH=03
export SDAY=22
export SHOUR=06
export RESTART_INTERVAL='12 -1'
export OUTPUT_GRID='gaussian_grid'
export NSTF_NAME='2,0,0,0,0'
export WRITE_DOPOST=.true.

export CPL=.true.
export CPLCHM=.true.
export NEMS_CONFIGURE=nems.configure.atmaero.IN

export atm_model='fv3'
export chm_model='gocart'
export coupling_interval_sec=${DT_ATMOS}

# default resources
export DOMAINS_STACK_SIZE=8000000

# P7 default
export IALB=2
export IEMS=2
export LSM=2
export IOPT_DVEG=4
export IOPT_CRS=2
export IOPT_RAD=3
export IOPT_ALB=1
export IOPT_STC=3
# P8
export IOPT_SFC=3
export IOPT_TRS=2

# FV3 P7 settings
export D2_BG_K1=0.20
export D2_BG_K2=0.04
export PSM_BC=1
# P8
export DDDMP=0.1

# P7 Merra2 Aerosols & NSST
export USE_MERRA2=.true.
export IAER=2011
export NSTF_NAME=2,0,0,0,0

export LHEATSTRG=.true.
export LSEASPRAY=.true.

# P7 UGWP1
export GWD_OPT=2
export DO_UGWP_V1=.false.
export KNOB_UGWP_VERSION=0
export KNOB_UGWP_NSLOPE=1
export DO_UGWP_V0=.true.
export DO_GSL_DRAG_LS_BL=.false.
export DO_GSL_DRAG_SS=.true.
export DO_GSL_DRAG_TOFD=.true.
export DO_UGWP_V1_OROG_ONLY=.false.
export DO_UGWP_V0_NST_ONLY=.false.
export LDIAG_UGWP=.false.

# P7 CA
export DO_CA=.true.
export CA_SGS=.true.
export CA_GLOBAL=.false.
export NCA=1
export NCELLS=5
export NLIVES=12
export NTHRESH=18
export NSEED=1
export NFRACSEED=0.5
export CA_TRIGGER=.true.
export NSPINUP=1
export ISEED_CA=12345

# P7 settings
export TILEDFIX=.true.
export FNALBC="'C96.snowfree_albedo.tileX.nc'"
export FNALBC2="'C96.facsf.tileX.nc'"
export FNTG3C="'C96.substrate_temperature.tileX.nc'"
export FNVEGC="'C96.vegetation_greenness.tileX.nc'"
export FNVETC="'C96.vegetation_type.tileX.nc'"
export FNSOTC="'C96.soil_type.tileX.nc'"
export FNSMCC=${FNSMCC_control}
export FNMSKH=${FNMSKH_control}
export FNVMNC="'C96.vegetation_greenness.tileX.nc'"
export FNVMXC="'C96.vegetation_greenness.tileX.nc'"
export FNSLPC="'C96.slope_type.tileX.nc'"
export FNABSC="'C96.maximum_snow_albedo.tileX.nc'"
export LANDICE=".false."
export FSICL=0
export FSICS=0

export IMP_PHYSICS=8
export LGFDLMPRAD=.false.
export DO_SAT_ADJ=.false.
export DNATS=2
export DZ_MIN=6

#required for NML.IN sharing
export MIN_SEAICE=0.15
export FRAC_GRID=.true.
export MOM6_RESTART_SETTING=n
# P8 (not used for standalone)
export USE_CICE_ALB=.false.

export WRITE_NSFLIP=.true.

export FV3_RUN=control_run.IN
export CCPP_SUITE=FV3_GFS_v17_p8
export FIELD_TABLE=field_table_thompson_noaero_tke_GOCART
export DIAG_TABLE=diag_table_p7.2_template
# use same namelist for standalone,coupled P7
export INPUT_NML=cpld_control.nml.IN

# RRTMGP
export DO_RRTMGP=.false.
export DOGP_CLDOPTICS_LUT=.true.
export DOGP_LWSCAT=.true.
export DOGP_SGS_CNV=.true.

0 comments on commit 65cf401

Please sign in to comment.