diff --git a/Externals.cfg b/Externals.cfg index 0810b533c2..cb2a61885b 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -32,9 +32,9 @@ protocol = git required = True [UFS_UTILS] -hash = 26cd024 +tag = ufs_utils_1_6_0 local_path = sorc/ufs_utils.fd -repo_url = https://github.com/ufs-community/UFS_UTILS.git +repo_url = https://github.com/NOAA-EMC/UFS_UTILS.git protocol = git required = True diff --git a/env/HERA.env b/env/HERA.env index e8efa3f8b3..f63b24be65 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -151,6 +151,7 @@ elif [ $step = "fcst" ]; then export NTHREADS_REMAP=${nth_remap:-2} [[ $NTHREADS_REMAP -gt $nth_max ]] && export NTHREADS_REMAP=$nth_max export APRUN_REMAP="$launcher" + export I_MPI_DAPL_UD="enable" elif [ $step = "efcs" ]; then diff --git a/env/JET.env b/env/JET.env index 113c2d1b37..8306e423c3 100755 --- a/env/JET.env +++ b/env/JET.env @@ -120,6 +120,7 @@ elif [ $step = "fcst" ]; then export NTHREADS_REMAP=${nth_remap:-2} [[ $NTHREADS_REMAP -gt $nth_max ]] && export NTHREADS_REMAP=$nth_max export APRUN_REMAP="$launcher ${npe_remap:-${npe_fcst:-$PBS_NP}}" + export I_MPI_DAPL_UD="enable" elif [ $step = "efcs" ]; then diff --git a/env/ORION.env b/env/ORION.env index 079f623f40..be89113c14 100755 --- a/env/ORION.env +++ b/env/ORION.env @@ -17,7 +17,6 @@ export npe_node_max=40 export launcher="srun -l --export=ALL" # Configure MPI environment -export I_MPI_ADJUST_ALLREDUCE=5 export MPI_BUFS_PER_PROC=2048 export MPI_BUFS_PER_HOST=2048 export MPI_GROUP_MAX=256 @@ -147,6 +146,7 @@ elif [ $step = "fcst" ]; then export NTHREADS_REMAP=${nth_remap:-2} [[ $NTHREADS_REMAP -gt $nth_max ]] && export NTHREADS_REMAP=$nth_max export APRUN_REMAP="$launcher" + export I_MPI_DAPL_UD="enable" elif [ $step = "efcs" ]; then diff --git a/env/WCOSS_DELL_P3.env b/env/WCOSS_DELL_P3.env index b7761de2cc..680549c4b2 100755 --- a/env/WCOSS_DELL_P3.env +++ b/env/WCOSS_DELL_P3.env @@ -141,6 +141,7 @@ elif [ $step = "fcst" ]; then export NTHREADS_REMAP=${nth_remap:-2} [[ $NTHREADS_REMAP -gt $nth_max ]] && export NTHREADS_REMAP=$nth_max export APRUN_REMAP="$launcher ${npe_remap:-${npe_fcst:-$PBS_NP}}" + export I_MPI_DAPL_UD="enable" elif [ $step = "efcs" ]; then diff --git a/jobs/rocoto/arch.sh b/jobs/rocoto/arch.sh index 7d17f12c87..e6ce577d1c 100755 --- a/jobs/rocoto/arch.sh +++ b/jobs/rocoto/arch.sh @@ -204,6 +204,18 @@ if [ $CDUMP = "gfs" ]; then targrp_list="$targrp_list ice" fi + # Aerosols + if [ $DO_AERO = "YES" ]; then + for targrp in chem; do + htar -P -cvf $ATARDIR/$CDATE/${targrp}.tar $(cat $ARCH_LIST/${targrp}.txt) + status=$? + if [ $status -ne 0 -a $CDATE -ge $firstday ]; then + echo "HTAR $CDATE ${targrp}.tar failed" + exit $status + fi + done + fi + #for restarts if [ $SAVEFCSTIC = "YES" ]; then targrp_list="$targrp_list gfs_restarta" diff --git a/modulefiles/module_base.hera b/modulefiles/module_base.hera index 27d0729281..4caf6dcc65 100644 --- a/modulefiles/module_base.hera +++ b/modulefiles/module_base.hera @@ -27,18 +27,17 @@ module load png/1.6.35 module load hdf5/1.10.6 module load netcdf/4.7.4 module load pio/2.5.2 -module load esmf/8_2_0_beta_snapshot_14 +module load esmf/8.2.1b04 module load fms/2021.03 module load bacio/2.4.1 -module load g2/3.4.1 -module load g2tmpl/1.9.1 +module load g2/3.4.2 +module load g2tmpl/1.10.0 module load ip/3.3.3 module load nemsio/2.5.2 module load sp/2.3.3 module load w3emc/2.7.3 module load w3nco/2.4.1 -module load upp/10.0.8 module load wgrib2/2.0.8 setenv WGRIB2 wgrib2 @@ -49,4 +48,3 @@ module load anaconda/2.3.0 # waveprep module load cdo/1.9.5 - diff --git a/modulefiles/module_base.orion b/modulefiles/module_base.orion index eb437ec525..7723b85352 100755 --- a/modulefiles/module_base.orion +++ b/modulefiles/module_base.orion @@ -26,18 +26,17 @@ module load png/1.6.35 module load hdf5/1.10.6 module load netcdf/4.7.4 module load pio/2.5.2 -module load esmf/8_2_0_beta_snapshot_14 +module load esmf/8.2.1b04 module load fms/2021.03 module load bacio/2.4.1 -module load g2/3.4.1 -module load g2tmpl/1.9.1 +module load g2/3.4.2 +module load g2tmpl/1.10.0 module load ip/3.3.3 module load nemsio/2.5.2 module load sp/2.3.3 module load w3emc/2.7.3 module load w3nco/2.4.1 -module load upp/10.0.8 module load wgrib/2.0.8 setenv WGRIB2 wgrib2 diff --git a/modulefiles/module_base.wcoss_dell_p3 b/modulefiles/module_base.wcoss_dell_p3 index ba2dcb0f61..9939a5baf3 100755 --- a/modulefiles/module_base.wcoss_dell_p3 +++ b/modulefiles/module_base.wcoss_dell_p3 @@ -34,18 +34,17 @@ module load png/1.6.35 module load hdf5/1.10.6 module load netcdf/4.7.4 module load pio/2.5.2 -module load esmf/8_2_0_beta_snapshot_14 +module load esmf/8.2.1b04 module load fms/2021.03 module load bacio/2.4.1 -module load g2/3.4.1 -module load g2tmpl/1.9.1 +module load g2/3.4.2 +module load g2tmpl/1.10.0 module load ip/3.3.3 module load nemsio/2.5.2 module load sp/2.3.3 module load w3emc/2.7.3 module load w3nco/2.4.1 -module load upp/10.0.8 module load wgrib2/2.0.8 setenv WGRIB2 wgrib2 diff --git a/parm/chem/AERO.rc b/parm/chem/AERO.rc new file mode 100644 index 0000000000..ff40fba2aa --- /dev/null +++ b/parm/chem/AERO.rc @@ -0,0 +1,10 @@ +NX: 4 +NY: 24 + +# Atmospheric Model Configuration Parameters +# ------------------------------------------ +IOSERVER_NODES: 0 + +DYCORE: NONE + +NUM_BANDS: 30 diff --git a/parm/chem/AERO_HISTORY.rc b/parm/chem/AERO_HISTORY.rc new file mode 100644 index 0000000000..e71d970f16 --- /dev/null +++ b/parm/chem/AERO_HISTORY.rc @@ -0,0 +1,453 @@ +####################################################################### +# Create History List for Output +####################################################################### + +VERSION: 1 +EXPID: gocart +EXPDSC: GOCART2g_diagnostics_at_c360 +EXPSRC: GEOSgcm-v10.16.0 + + +COLLECTIONS: 'inst_aod' +# 'inst_du_ss' +# 'inst_ca' +# 'inst_ni' +# 'inst_su' +# 'inst_du_bin' +# 'inst_ss_bin' +# 'inst_ca_bin' +# 'inst_ni_bin' +# 'inst_su_bin' +# 'inst_2d' +# 'inst_3d' +# 'inst_aod' +# 'tavg_du_ss' +# 'tavg_du_bin' +# 'tavg_2d_rad' +# 'tavg_3d_rad' + :: + +################################################## +# The GRID_LABELS section must be after the main # +# list of COLLECTIONS for scripting purposes. # +################################################## + +GRID_LABELS: PC720x361-DC +:: + + +PC720x361-DC.GRID_TYPE: LatLon +PC720x361-DC.IM_WORLD: 720 +PC720x361-DC.JM_WORLD: 361 +PC720x361-DC.POLE: PC +PC720x361-DC.DATELINE: DC +PC720x361-DC.LM: 72 + +# --------------------- +# Aerosols/Constituents +# --------------------- +# +#### Instantaneous (hourly) output + +# +# 3d aerosols +# + inst_du_ss.format: 'CFIO' , + inst_du_ss.descr: '3d,Hourly,Instantaneous,Model-Level,Aerosol Concentrations', + inst_du_ss.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_du_ss.mode: 'instantaneous', + inst_du_ss.grid_label: PC720x361-DC , + inst_du_ss.splitField: 1, + inst_du_ss.frequency: 120000 , + inst_du_ss.duration: 010000 , + inst_du_ss.ref_time: 000000 , + inst_du_ss.nbits: 10, + inst_du_ss.fields: 'DU' , 'DU' , + 'SS' , 'SS' , + :: + + tavg_du_ss.format: 'CFIO' , + tavg_du_ss.descr: '3d,Hourly,Instantaneous,Model-Level,Aerosol Concentrations', + tavg_du_ss.template: '%y4%m2%d2_%h2%n2z.nc4', + tavg_du_ss.mode: 'time-averaged', + tavg_du_ss.grid_label: PC720x361-DC , + tavg_du_ss.splitField: 1, + tavg_du_ss.frequency: 120000 , + tavg_du_ss.duration: 010000 , + tavg_du_ss.ref_time: 000000 , + tavg_du_ss.nbits: 10, + tavg_du_ss.fields: 'DU' , 'DU' , + 'SS' , 'SS' , + :: + + inst_ca.format: 'CFIO' , + inst_ca.descr: '3d,Hourly,Instantaneous,Model-Level,Aerosol Concentrations', + inst_ca.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_ca.mode: 'instantaneous', + inst_ca.grid_label: PC720x361-DC , + inst_ca.frequency: 120000 , + inst_ca.duration: 010000 , + inst_ca.ref_time: 000000 , + inst_ca.nbits: 10, + inst_ca.fields: 'CAphilicCA.bc' , 'CA.bc' , + 'CAphobicCA.bc' , 'CA.bc' , + 'CAphilicCA.oc' , 'CA.oc' , + 'CAphobicCA.oc' , 'CA.oc' , + :: + + inst_ni.format: 'CFIO' , + inst_ni.descr: '3d,Hourly,Instantaneous,Model-Level,Aerosol Concentrations', + inst_ni.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_ni.mode: 'instantaneous', + inst_ni.grid_label: PC720x361-DC , + inst_ni.frequency: 120000 , + inst_ni.duration: 010000 , + inst_ni.ref_time: 000000 , + inst_ni.nbits: 10, + inst_ni.fields: 'NH3' , 'NI' , + 'NH4a' , 'NI' , + 'NO3an1' , 'NI' , + 'NO3an2' , 'NI' , + 'NO3an3' , 'NI' , + :: + + inst_su.format: 'CFIO' , + inst_su.descr: '3d,Hourly,Instantaneous,Model-Level,Aerosol Concentrations', + inst_su.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_su.mode: 'instantaneous', + inst_su.grid_label: PC720x361-DC , + inst_su.frequency: 120000 , + inst_su.duration: 010000 , + inst_su.ref_time: 000000 , + inst_su.nbits: 10, + inst_su.fields: 'DMS' , 'SU' , + 'SO2' , 'SU' , + 'SO4' , 'SU' , + 'MSA' , 'SU' , + :: +# +# Binned aerosols +# + + inst_du_bin.format: 'CFIO' , + inst_du_bin.descr: '2d,Hourly,Instantaneous' + inst_du_bin.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_du_bin.mode: 'instantaneous' + inst_du_bin.grid_label: PC720x361-DC , + inst_du_bin.splitField: 1, + inst_du_bin.frequency: 010000 , + inst_du_bin.duration: 010000 , + inst_du_bin.ref_time: 000000 , + inst_du_bin.nbits: 10, + inst_du_bin.fields: 'DUEM' , 'DU' , + 'DUSD' , 'DU' , + 'DUDP' , 'DU' , + 'DUWT' , 'DU' , + 'DUSV' , 'DU' , + :: + + tavg_du_bin.format: 'CFIO' , + tavg_du_bin.descr: '2d,Hourly,Instantaneous' + tavg_du_bin.template: '%y4%m2%d2_%h2%n2z.nc4', + tavg_du_bin.mode: 'time-averaged' + tavg_du_bin.grid_label: PC720x361-DC , + tavg_du_bin.splitField: 1, + tavg_du_bin.frequency: 030000 , + tavg_du_bin.duration: 010000 , + tavg_du_bin.ref_time: 000000 , + tavg_du_bin.nbits: 10, + tavg_du_bin.fields: 'DUEM' , 'DU' , + 'DUSD' , 'DU' , + 'DUDP' , 'DU' , + 'DUWT' , 'DU' , + 'DUSV' , 'DU' , + :: + + inst_ss_bin.format: 'CFIO' , + inst_ss_bin.descr: '2d,Hourly,Instantaneous' + inst_ss_bin.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_ss_bin.mode: 'instantaneous' + inst_ss_bin.grid_label: PC720x361-DC , + inst_ss_bin.splitField: 1, + inst_ss_bin.frequency: 060000 , + inst_ss_bin.duration: 010000 , + inst_ss_bin.ref_time: 000000 , + inst_ss_bin.nbits: 10, + inst_ss_bin.fields: 'SSEM' , 'SS' , + 'SSSD' , 'SS' , + 'SSDP' , 'SS' , + 'SSWT' , 'SS' , + 'SSSV' , 'SS' , + :: + + inst_ca_bin.format: 'CFIO' , + inst_ca_bin.descr: '3d,Hourly,Instantaneous,Model-Level' + inst_ca_bin.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_ca_bin.mode: 'instantaneous' + inst_ca_bin.grid_label: PC720x361-DC , + inst_ca_bin.splitField: 1, + inst_ca_bin.frequency: 120000 , + inst_ca_bin.duration: 010000 , + inst_ca_bin.ref_time: 000000 , + inst_ca_bin.nbits: 10, + inst_ca_bin.fields: 'CAEMCA.bc' , 'CA.bc' , + 'CAEMCA.oc' , 'CA.oc' , + 'CASDCA.bc' , 'CA.bc' , + 'CASDCA.oc' , 'CA.oc' , + 'CADPCA.bc' , 'CA.bc' , + 'CADPCA.oc' , 'CA.oc' , + 'CAWTCA.bc' , 'CA.bc' , + 'CAWTCA.oc' , 'CA.oc' , + 'CASVCA.bc' , 'CA.bc' , + 'CASVCA.oc' , 'CA.oc' , + :: + + inst_ni_bin.format: 'CFIO' , + inst_ni_bin.descr: '3d,Hourly,Instantaneous,Model-Level' + inst_ni_bin.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_ni_bin.mode: 'instantaneous', + inst_ni_bin.grid_label: PC720x361-DC , + inst_ni_bin.splitField: 1, + inst_ni_bin.frequency: 120000 , + inst_ni_bin.duration: 010000 , + inst_ni_bin.ref_time: 000000 , + inst_ni_bin.nbits: 10, + inst_ni_bin.fields: 'NIHT' , 'NI' , + 'NISD' , 'NI' , + 'NIDP' , 'NI' , + 'NIWT' , 'NI' , + 'NISV' , 'NI' , + :: + + inst_su_bin.format: 'CFIO' , + inst_su_bin.descr: '3d,Hourly,Instantaneous,Model-Level' + inst_su_bin.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_su_bin.mode: 'instantaneous', + inst_su_bin.grid_label: PC720x361-DC , + inst_su_bin.splitField: 1, + inst_su_bin.frequency: 120000 , + inst_su_bin.duration: 010000 , + inst_su_bin.ref_time: 000000 , + inst_su_bin.nbits: 10, + inst_su_bin.fields: 'SUEM' , 'SU', + 'SUSD' , 'SU', + 'SUDP' , 'SU', + 'SUWT' , 'SU', + 'SUSV' , 'SU', + :: + +# +# Other 2d diagnostics +# + inst_2d.format: 'CFIO' , + inst_2d.descr: '3d,Hourly,Instantaneous' + inst_2d.template: '%y4%m2%d2_%h2%n2z.nc4', + inst_2d.archive: '%c/Y%y4', + inst_2d.mode: 'instantaneous' + inst_2d.frequency: 030000, + inst_2d.duration: 030000, + inst_2d.ref_time: 000000, + inst_2d.grid_label: PC720x361-DC + inst_2d.fields: 'DUSMASS' , 'DU' , + 'DUCMASS' , 'DU' , + 'DUSMASS25' , 'DU' , + 'DUCMASS25' , 'DU' , + 'DUAERIDX' , 'DU' , + 'DUFLUXU' , 'DU' , + 'DUFLUXV' , 'DU' , + 'DUANGSTR' , 'DU' , + 'SSSMASS' , 'SS' , + 'SSCMASS' , 'SS' , + 'SSSMASS25' , 'SS' , + 'SSCMASS25' , 'SS' , + 'SSAERIDX' , 'SS' , + 'SSANGSTR' , 'SS' , + 'SSFLUXU' , 'SS' , + 'SSFLUXV' , 'SS' , + 'CAEMANCA.bc' , 'CA.bc' , + 'CAEMANCA.oc' , 'CA.oc' , + 'CAEMBBCA.bc' , 'CA.bc' , + 'CAEMBBCA.oc' , 'CA.oc' , + 'CAEMBFCA.bc' , 'CA.bc' , + 'CAEMBFCA.oc' , 'CA.oc' , + 'CAEMBGCA.bc' , 'CA.bc' , + 'CAEMBGCA.oc' , 'CA.oc' , + 'CAHYPHILCA.bc' , 'CA.bc' , + 'CAHYPHILCA.oc' , 'CA.oc' , + 'CAPSOACA.bc' , 'CA.bc' , + 'CAPSOACA.oc' , 'CA.oc' , + 'CASMASSCA.bc' , 'CA.bc' , + 'CASMASSCA.oc' , 'CA.oc' , + 'CACMASSCA.bc' , 'CA.bc' , + 'CACMASSCA.oc' , 'CA.oc' , + 'CAANGSTRCA.bc' , 'CA.bc' , + 'CAANGSTRCA.oc' , 'CA.oc' , + 'CAFLUXUCA.bc' , 'CA.bc' , + 'CAFLUXUCA.oc' , 'CA.oc' , + 'CAFLUXVCA.bc' , 'CA.bc' , + 'CAFLUXVCA.oc' , 'CA.oc' , + 'CAAERIDXCA.bc' , 'CA.bc' , + 'CAAERIDXCA.oc' , 'CA.oc' , + 'NIPNO3AQ' , 'NI' , + 'NIPNH4AQ' , 'NI' , + 'NIPNH3AQ' , 'NI' , + 'NH3EM' , 'NI' , + 'NH3DP' , 'NI' , + 'NH3WT' , 'NI' , + 'NH3SV' , 'NI' , + 'NH4SD' , 'NI' , + 'NH4DP' , 'NI' , + 'NH4WT' , 'NI' , + 'NH4SV' , 'NI' , + 'HNO3SMASS' , 'NI' , + 'NH3SMASS' , 'NI' , + 'NH4SMASS' , 'NI' , + 'NISMASS' , 'NI' , + 'NISMASS25' , 'NI' , + 'HNO3CMASS' , 'NI' , + 'NH3CMASS' , 'NI' , + 'NH4CMASS' , 'NI' , + 'NICMASS' , 'NI' , + 'NICMASS25' , 'NI' , + 'NIANGSTR' , 'NI' , + 'NIFLUXU' , 'NI' , + 'NIFLUXV' , 'NI' , + 'SUPSO2' , 'SU' , + 'SUPSO4' , 'SU' , + 'SUPSO4G' , 'SU' , + 'SUPSO4AQ' , 'SU' , + 'SUPSO4WT' , 'SU' , + 'SUPMSA' , 'SU' , + 'SO2SMASS' , 'SU' , + 'SO2CMASS' , 'SU' , + 'SO4SMASS' , 'SU' , + 'SO4CMASS' , 'SU' , + 'DMSSMASS' , 'SU' , + 'DMSCMASS' , 'SU' , + 'MSASMASS' , 'SU' , + 'MSACMASS' , 'SU' , + 'SUANGSTR' , 'SU' , + 'SUFLUXU' , 'SU' , + 'SUFLUXV' , 'SU' , + 'SO4EMAN' , 'SU' , + 'SO2EMAN' , 'SU' , + 'SO2EMBB' , 'SU' , + 'SO2EMVN' , 'SU' , + 'SO2EMVE' , 'SU' , + :: + +# +# 3d diagnostics +# + inst_3d.format: 'CFIO' , + inst_3d.template: '%y4%m2%d2_%h2%n2z.nc4' , + inst_3d.archive: '%c/Y%y4' , + inst_3d.mode: 'instantaneous' + inst_3d.frequency: 060000, + inst_3d.duration: 010000, + inst_3d.ref_time: 000000, + inst_3d.grid_label: PC720x361-DC + inst_3d.fields: 'DUMASS' , 'DU', + 'DUMASS25' , 'DU', + 'DUCONC' , 'DU', + 'SSMASS' , 'SS', + 'SSMASS25' , 'SS', + 'SSCONC' , 'SS', + 'CAMASSCA.bc' , 'CA.bc' , + 'CACONCCA.bc' , 'CA.bc' , + 'CAMASSCA.oc' , 'CA.oc' , + 'CACONCCA.oc' , 'CA.oc' , + 'SO4MASS' , 'SU', + 'SO4SAREA' , 'SU', + 'SO4SNUM' , 'SU', + 'SUCONC' , 'SU', + 'PSO2' , 'SU', + 'PMSA' , 'SU', + 'PSO4' , 'SU', + 'PSO4G' , 'SU', + 'PSO4WET' , 'SU', + 'PSO4AQ' , 'SU', + 'DMS' , 'SU', + 'SO2' , 'SU', + 'SO4' , 'SU', + 'MSA' , 'SU', + :: + + +# +# Radiation-related diagnostics +# + inst_aod.format: 'CFIO' , + inst_aod.template: '%y4%m2%d2_%h2%n2z.nc4' , + inst_aod.archive: '%c/Y%y4' , + inst_aod.mode: 'instantaneous' + inst_aod.frequency: 060000, + 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', + 'DUEXTTAU' , 'DU' , 'AOD_DU', + 'NIEXTTAU' , 'NI' , 'AOD_NI', + 'SSEXTTAU' , 'SS' , 'AOD_SS', + 'SUEXTTAU' , 'SU' , 'AOD_SU', + 'TOTEXTTAU' , 'GOCART2G' , 'AOD' , + :: + + + tavg_2d_rad.format: 'CFIO' , + tavg_2d_rad.template: '%y4%m2%d2_%h2%n2z.nc4', + tavg_2d_rad.archive: '%c/Y%y4', + tavg_2d_rad.mode: 'time-averaged', + tavg_2d_rad.frequency: 120000, + tavg_2d_rad.duration: 120000, + tavg_2d_rad.ref_time: 000000, + tavg_2d_rad.grid_label: PC720x361-DC + tavg_2d_rad.fields: 'CAEXTTAUCA.bc' , 'CA.bc' , + 'CAEXTTAUCA.oc' , 'CA.oc' , + 'CASCATAUCA.bc' , 'CA.bc' , + 'CASCATAUCA.oc' , 'CA.oc' , + 'DUEXTTAU' , 'DU' , + 'DUSCATAU' , 'DU' , + 'DUEXTT25' , 'DU' , + 'DUSCAT25' , 'DU' , + 'DUEXTTFM' , 'DU' , + 'DUSCATFM' , 'DU' , + 'NIEXTTFM' , 'NI' , + 'NISCATFM' , 'NI' , + 'NIEXTT25' , 'NI' , + 'NISCAT25' , 'NI' , + 'NIEXTTAU' , 'NI' , + 'NISCATAU' , 'NI' , + 'SSEXTTAU' , 'SS' , + 'SSSCATAU' , 'SS' , + 'SSEXTT25' , 'SS' , + 'SSSCAT25' , 'SS' , + 'SSEXTTFM' , 'SS' , + 'SSSCATFM' , 'SS' , + 'SUEXTTAU' , 'SU' , + 'SUSCATAU' , 'SU' , + :: + + tavg_3d_rad.format: 'CFIO' , + tavg_3d_rad.template: '%y4%m2%d2_%h2%n2z.nc4', + tavg_3d_rad.archive: '%c/Y%y4', + tavg_3d_rad.mode: 'time-averaged', + tavg_3d_rad.frequency: 120000, + tavg_3d_rad.duration: 120000, + tavg_3d_rad.ref_time: 000000, + tavg_3d_rad.grid_label: PC720x361-DC + tavg_3d_rad.splitField: 1, + tavg_3d_rad.fields: 'CAEXTCOEFCA.bc' , 'CA.bc' , + 'CAEXTCOEFCA.oc' , 'CA.oc' , + 'CASCACOEFCA.bc' , 'CA.bc' , + 'CASCACOEFCA.oc' , 'CA.oc' , + 'DUEXTCOEF' , 'DU' , + 'DUSCACOEF' , 'DU' , + 'NIEXTCOEF' , 'NI' , + 'NISCACOEF' , 'NI' , + 'SSEXTCOEF' , 'SS' , + 'SSSCACOEF' , 'SS' , + 'SUEXTCOEF' , 'SU' , + 'SUSCACOEF' , 'SU' , + :: diff --git a/parm/chem/AGCM.rc b/parm/chem/AGCM.rc new file mode 100644 index 0000000000..9539b49655 --- /dev/null +++ b/parm/chem/AGCM.rc @@ -0,0 +1,5 @@ +# ------------------------------------------ +# Atmospheric Model Configuration Parameters +# ------------------------------------------ +# +# This file must be present but empty for UFS Aerosols diff --git a/parm/chem/CA2G_instance_CA.bc.rc b/parm/chem/CA2G_instance_CA.bc.rc new file mode 100644 index 0000000000..f6411e2c9d --- /dev/null +++ b/parm/chem/CA2G_instance_CA.bc.rc @@ -0,0 +1,41 @@ +# +# Resource file for Black Carbon parameters. +# + +nbins: 2 + +aerosol_radBands_optics_file: ExtData/optics/opticsBands_BC.v1_3.RRTMG.nc +aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_BC.v1_3.nc + +# Aircraft emission factor: convert input unit to kg C +aircraft_fuel_emission_factor: 1.0000 + +# Heights [m] of LTO, CDS and CRS aviation emissions layers +aviation_vertical_layers: 0.0 100.0 9.0e3 10.0e3 + +# Initially hydrophobic portion +hydrophobic_fraction: 0.8 + +# Scavenging efficiency per bin [km-1] (NOT USED UNLESS RAS IS CALLED) +fscav: 0.0 0.4 + +# Dry particle density [kg m-3] +particle_density: 1800 1800 + +# Molecular weight of species [kg mole-1] +molecular_weight: 0.18 0.18 + +# Number of particles per kg mass +fnum: 1.50e19 1.50e19 + +# Number median radius [um] +particle_radius_microns: 0.35 0.35 + +rhFlag: 0 + +# Sigma of lognormal number distribution +sigma: 2.0 2.0 + +pressure_lid_in_hPa: 0.01 + +point_emissions_srcfilen: /dev/null diff --git a/parm/chem/CA2G_instance_CA.br.rc b/parm/chem/CA2G_instance_CA.br.rc new file mode 100644 index 0000000000..41360831f3 --- /dev/null +++ b/parm/chem/CA2G_instance_CA.br.rc @@ -0,0 +1,48 @@ +# +# Resource file for BR parameters. +# + +aerosol_radBands_optics_file: ExtData/optics/opticsBands_BRC.v1_5.RRTMG.nc +aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_BRC.v1_5.nc + +# Aircraft emission factor: convert input unit to kg C +aircraft_fuel_emission_factor: 1.0000 + +# Heights [m] of LTO, CDS and CRS aviation emissions layers +aviation_vertical_layers: 0.0 100.0 9.0e3 10.0e3 + +# Fraction of biogenic VOCs emissions for SOA production +monoterpenes_emission_fraction: 0.0 +isoprene_emission_fraction: 0.0 + +# Ratio of POM/BRC -> convert source masses from carbon to POM +pom_ca_ratio: 1.8 + +# Initially hydrophobic portion +hydrophobic_fraction: 0.5 + +# Scavenging efficiency per bin [km-1] (NOT USED UNLESS RAS IS CALLED) +fscav: 0.0 0.4 + +# particle radius +particle_radius_microns: 0.35 0.35 + +rhFlag: 0 + +# Dry particle density [kg m-3] +particle_density: 1800 1800 + +# Molecular weight of species [kg mole-1] +molecular_weight: 0.18 0.18 + +# Number of particles per kg mass +fnum: 9.76e17 9.76e17 + +# Sigma of lognormal number distribution +sigma: 2.20 2.20 + +nbins: 2 + +pressure_lid_in_hPa: 0.01 + +point_emissions_srcfilen: /dev/null diff --git a/parm/chem/CA2G_instance_CA.oc.rc b/parm/chem/CA2G_instance_CA.oc.rc new file mode 100644 index 0000000000..6e3f5ef978 --- /dev/null +++ b/parm/chem/CA2G_instance_CA.oc.rc @@ -0,0 +1,48 @@ +# +# Resource file for Organic Carbon parameters. +# + +aerosol_radBands_optics_file: ExtData/optics/opticsBands_OC.v1_3.RRTMG.nc +aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_OC.v1_3.nc + +# Aircraft emission factor: convert input unit to kg C +aircraft_fuel_emission_factor: 1.0000 + +# Heights [m] of LTO, CDS and CRS aviation emissions layers +aviation_vertical_layers: 0.0 100.0 9.0e3 10.0e3 + +# Fraction of biogenic VOCs emissions for SOA production +monoterpenes_emission_fraction: 0.05 +isoprene_emission_fraction: 0.03 + +# Ratio of POM/OC -> convert source masses from carbon to POM +pom_ca_ratio: 1.8 + +# particle radius +particle_radius_microns: 0.35 0.35 + +rhFlag: 0 + +# Initially hydrophobic portion +hydrophobic_fraction: 0.5 + +# Scavenging efficiency per bin [km-1] (NOT USED UNLESS RAS IS CALLED) +fscav: 0.0 0.4 + +# Dry particle density [kg m-3] +particle_density: 1800 1800 + +# Molecular weight of species [kg mole-1] +molecular_weight: 0.18 0.18 + +# Number of particles per kg mass +fnum: 9.76e17 9.76e17 + +# Sigma of lognormal number distribution +sigma: 2.20 2.20 + +pressure_lid_in_hPa: 0.01 + +nbins: 2 + +point_emissions_srcfilen: /dev/null diff --git a/parm/chem/CAP.rc b/parm/chem/CAP.rc new file mode 100644 index 0000000000..d8b0352e55 --- /dev/null +++ b/parm/chem/CAP.rc @@ -0,0 +1,79 @@ +MAPLROOT_COMPNAME: AERO + ROOT_NAME: AERO +ROOT_CF: AERO.rc +HIST_CF: AERO_HISTORY.rc +EXTDATA_CF: AERO_ExtData.rc + +REPORT_THROUGHPUT: .false. + +USE_SHMEM: 0 + +MAPL_ENABLE_TIMERS: NO +MAPL_ENABLE_MEMUTILS: NO +PRINTSPEC: 0 # (0: OFF, 1: IMPORT & EXPORT, 2: IMPORT, 3: EXPORT) + + +# Meteorological fields imported from atmospheric model +# ----------------------------------------------------- +CAP_IMPORTS: + FROCEAN + FRACI + FRSNOW + LWI + U10M + V10M + USTAR + TS + DZ + FRLAKE + AREA + ZPBL + SH + Z0H + CN_PRCP + NCN_PRCP + AIRDENS + DELP + T + RH2 + ZLE + PLE + PFL_LSAN + PFI_LSAN + U + V + WET1 + SLC + FCLD +:: + + +# Prognostic Tracers Table +# GOCARTname,GOCARTcomp. AtmTracerName +#--------------------------------------- +CAP_EXPORTS: + SS,SS seas* + DU,DU dust* + DMS,SU dms + 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 + NH3,NI nh3 + NH4a,NI nh4a + NO3an1,NI no3an1 + NO3an2,NI no3an2 + NO3an3,NI no3an3 +:: + + +# Diagnostic Tracers Table (only PM10 & PM25 available) +# InternalName AtmTracerName +#--------------------------------------- +CAP_DIAGNOSTICS: + PM10 pm10 + PM25 pm25 +:: diff --git a/parm/chem/DU2G_instance_DU.rc b/parm/chem/DU2G_instance_DU.rc new file mode 100644 index 0000000000..1afed80ce1 --- /dev/null +++ b/parm/chem/DU2G_instance_DU.rc @@ -0,0 +1,46 @@ +# +# Resource file Dust parameters. +# + +aerosol_radBands_optics_file: ExtData/optics/opticsBands_DU.v15_3.RRTMG.nc +aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_DU.v15_3.nc + +particle_radius_microns: 0.73 1.4 2.4 4.5 8.0 + +radius_lower: 0.1 1.0 1.8 3.0 6.0 + +radius_upper: 1.0 1.8 3.0 6.0 10.0 + +source_fraction: 1.0 1.0 1.0 1.0 1.0 + +# units [kg/m-3] +particle_density: 2500. 2650. 2650. 2650. 2650. + +# Resolution dependent tuning constant for emissions (a,b,c,d,e,f) (Ginoux, K14) +Ch_DU: 0.2 0.2 0.07 0.07 0.07 0.056 + +# Scavenging efficiency per bin [km-1] +fscav: 0.2 0.2 0.2 0.2 0.2 # + +# Molecular weight of species [kg mole-1] +molecular_weight: 0.1 0.1 0.1 0.1 0.1 + +# Number of particles per kg mass +fnum: 2.45e14 3.28e13 6.52e12 9.89e11 1.76e11 + +rhFlag: 0 + +# Maring settling velocity correction +maringFlag: .true. + +nbins: 5 + +pressure_lid_in_hPa: 0.01 + +# Emissions methods +emission_scheme: fengsha # choose among: fengsha, ginoux, k14 + +# FENGSHA settings +alpha: 2.0 +gamma: 0.8 +vertical_to_horizontal_flux_ratio_limit: 2.e-04 diff --git a/parm/chem/ExtData.gbbepx b/parm/chem/ExtData.gbbepx new file mode 100644 index 0000000000..ab06930bd5 --- /dev/null +++ b/parm/chem/ExtData.gbbepx @@ -0,0 +1,8 @@ +#====== BIOMASS BURNING EMISSIONS ======================================= + +# GBBEPx +#-------------------------------------------------------------------------------------------------------------------------------- +SU_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/GBBEPx/GBBEPx_all01GRID.emissions_v003_%y4%m2%d2.nc +OC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/GBBEPx/GBBEPx_all01GRID.emissions_v003_%y4%m2%d2.nc +BC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/GBBEPx/GBBEPx_all01GRID.emissions_v003_%y4%m2%d2.nc +EMI_NH3_BB NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/GBBEPx/GBBEPx_all01GRID.emissions_v003_%y4%m2%d2.nc diff --git a/parm/chem/ExtData.none b/parm/chem/ExtData.none new file mode 100644 index 0000000000..15ad023eb8 --- /dev/null +++ b/parm/chem/ExtData.none @@ -0,0 +1,8 @@ +#====== BIOMASS BURNING EMISSIONS ======================================= + +# NONE +#-------------------------------------------------------------------------------------------------------------------------------- +SU_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass /dev/null +OC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass /dev/null +BC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass /dev/null +EMI_NH3_BB NA N Y %y4-%m2-%d2t12:00:00 none none biomass /dev/null diff --git a/parm/chem/ExtData.other b/parm/chem/ExtData.other new file mode 100644 index 0000000000..56af1c7d9a --- /dev/null +++ b/parm/chem/ExtData.other @@ -0,0 +1,150 @@ +# -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| +# Import | | | Regrid | Refresh | OffSet | Scale | Variable On | File | +# Name | Units | Clim | Method | Time Template | Factor | Factor | File | Template | +# -------------|-------|-------|--------|----------------------|--------|--------|-------------|----------| + +#====== Atmospheric Parameters ======================================= +TROPP 'Pa' Y N - 0.0 1.0 TROPP /dev/null:10000. + +#====== Dust Imports ================================================= +# Ginoux input files +DU_SRC NA N Y - none none du_src ExtData/Dust/gocart.dust_source.v5a.x1152_y721.nc + +# FENGSHA input files. Note: regridding should be N or E +DU_CLAY '1' Y E - none none clayfrac ExtData/Dust/FENGSHA_SOILGRIDS2017_GEFSv12_v1.0.nc +DU_SAND '1' Y E - none none sandfrac ExtData/Dust/FENGSHA_SOILGRIDS2017_GEFSv12_v1.0.nc +DU_SILT '1' Y E - none none siltfrac /dev/null +DU_SSM '1' Y E %y4-%m2-%d2T12:00:00 none none ssm ExtData/Dust/FENGSHA_SOILGRIDS2017_GEFSv12_v1.0.nc +DU_RDRAG '1' Y E - none none drag_part ExtData/Dust/FENGSHA_SOILGRIDS2017_GEFSv12_v1.0.nc +DU_UTHRES '1' Y E - none none uthres ExtData/Dust/FENGSHA_SOILGRIDS2017_GEFSv12_v1.0.nc + +#====== Sulfate Sources ================================================= +# Anthropogenic (BF & FF) emissions -- allowed to input as two layers +SU_ANTHROL1 NA N Y %y4-%m2-%d2t12:00:00 none none SO2 ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +SU_ANTHROL2 NA N Y %y4-%m2-%d2t12:00:00 none none SO2_elev ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc + +# Ship emissions +SU_SHIPSO2 NA N Y %y4-%m2-%d2t12:00:00 none none SO2_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +SU_SHIPSO4 NA N Y %y4-%m2-%d2t12:00:00 none none SO4_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc + +# Aircraft fuel consumption +SU_AIRCRAFT NA Y Y %y4-%m2-%d2t12:00:00 none none none /dev/null + +# DMS concentration +SU_DMSO NA Y Y %y4-%m2-%d2t12:00:00 none none conc ExtData/MERRA2/sfc/DMSclim_sfcconcentration.x360_y181_t12.Lana2011.nc4 + +# Aviation emissions during the three phases of flight +SU_AVIATION_LTO NA Y Y %y4-%m2-%d2t12:00:00 none none so2_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_so2.aviation_lto.x3600_y1800_t12.2010.nc4 +SU_AVIATION_CDS NA Y Y %y4-%m2-%d2t12:00:00 none none so2_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_so2.aviation_cds.x3600_y1800_t12.2010.nc4 +SU_AVIATION_CRS NA Y Y %y4-%m2-%d2t12:00:00 none none so2_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_so2.aviation_crs.x3600_y1800_t12.2010.nc4 + +# H2O2, OH and NO3 mixing ratios +# -------------------------------------------------------------- +# If using 64 levels please replace this section with the correct values (ie replace 127 with 64) + +SU_H2O2 NA N Y %y4-%m2-%d2t12:00:00 none none h2o2 ExtData/PIESA/L127/A2_ACCMIP_gmic_MERRA_oh_h2o2_no3.x144_y91_z127_t14.%y4.nc +SU_OH NA N Y %y4-%m2-%d2t12:00:00 none none oh ExtData/PIESA/L127/A2_ACCMIP_gmic_MERRA_oh_h2o2_no3.x144_y91_z127_t14.%y4.nc +SU_NO3 NA N Y %y4-%m2-%d2t12:00:00 none none no3 ExtData/PIESA/L127/A2_ACCMIP_gmic_MERRA_oh_h2o2_no3.x144_y91_z127_t14.%y4.nc +#--------------------------------------------------------------- + +# Production of SO2 from OCS oxidation +pSO2_OCS NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null + +#SU_regionMask NA N v - none none REGION_MASK /scratch1/NCEPDEV/nems/Raffaele.Montuoro/data/NASA/ExtData/PIESA/sfc/ARCTAS.region_mask.x540_y361.2008.nc + +#=========== Carbonaceous aerosol sources =========================================== +# ORGANIC CARBON +# --------------- + +# # VOCs - OFFLINE MEGAN BIOG +OC_ISOPRENE NA N Y %y4-%m2-%d2t12:00:00 none none isoprene ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc +OC_LIMO NA N Y %y4-%m2-%d2t12:00:00 none none limo ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc +OC_MTPA NA N Y %y4-%m2-%d2t12:00:00 none none mtpa ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc +OC_MTPO NA N Y %y4-%m2-%d2t12:00:00 none none mtpo ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc + +# Biofuel Source -- Included in AeroCom anthropogenic emissions +OC_BIOFUEL NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null + +# Anthropogenic (BF & FF) emissions -- allowed to input as two layers +OC_ANTEOC1 NA N Y %y4-%m2-%d2t12:00:00 none none OC ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +OC_ANTEOC2 NA N Y %y4-%m2-%d2t12:00:00 none none OC_elev ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc + +# EDGAR based ship emissions +OC_SHIP NA N Y %y4-%m2-%d2t12:00:00 none none OC_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc + +# Aircraft fuel consumption +OC_AIRCRAFT NA N Y %y4-%m2-%d2t12:00:00 none none oc_aviation /dev/null + +# Aviation emissions during the three phases of flight +OC_AVIATION_LTO NA Y Y %y4-%m2-%d2t12:00:00 none none oc_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_oc.aviation_lto.x3600_y1800_t12.2010.nc4 +OC_AVIATION_CDS NA Y Y %y4-%m2-%d2t12:00:00 none none oc_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_oc.aviation_cds.x3600_y1800_t12.2010.nc4 +OC_AVIATION_CRS NA Y Y %y4-%m2-%d2t12:00:00 none none oc_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_oc.aviation_crs.x3600_y1800_t12.2010.nc4 + +# SOA production +pSOA_ANTHRO_VOC NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null + +#============================================================================================================ +# BLACK CARBON +# ------------ + +# Biofuel Source -- Included in AeroCom anthropogenic emissions +BC_BIOFUEL NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null + +# Anthropogenic (BF & FF) emissions -- allowed to input as two layers +BC_ANTEBC1 NA N Y %y4-%m2-%d2t12:00:00 none none BC ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +BC_ANTEBC2 NA N Y %y4-%m2-%d2t12:00:00 none none BC_elev ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc + +# EDGAR based ship emissions +BC_SHIP NA N Y %y4-%m2-%d2t12:00:00 none none BC_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc + +# Aircraft fuel consumption +BC_AIRCRAFT NA N Y %y4-%m2-%d2t12:00:00 none none bc_aviation /dev/null + +# Aviation emissions during the LTO, SDC and CRS phases of flight +BC_AVIATION_LTO NA Y Y %y4-%m2-%d2t12:00:00 none none bc_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_bc.aviation_lto.x3600_y1800_t12.2010.nc4 +BC_AVIATION_CDS NA Y Y %y4-%m2-%d2t12:00:00 none none bc_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_bc.aviation_cds.x3600_y1800_t12.2010.nc4 +BC_AVIATION_CRS NA Y Y %y4-%m2-%d2t12:00:00 none none bc_aviation ExtData/PIESA/sfc/HTAP/v2.2/htap-v2.2.emis_bc.aviation_crs.x3600_y1800_t12.2010.nc4 + +#============================================================================================================ +# BROWN CARBON +# ------------ +# Biomass burning -- QFED-v2.x +BRC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass /dev/null + +# Terpene emission +BRC_TERPENE NA Y Y %y4-%m2-%d2t12:00:00 none none terpene /dev/null + +# Biofuel Source -- Included in AeroCom anthropogenic emissions +BRC_BIOFUEL NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null + +# Anthropogenic (BF & FF) emissions -- allowed to input as two layers +BRC_ANTEBRC1 NA Y Y %y4-%m2-%d2t12:00:00 none none anteoc1 /dev/null +BRC_ANTEBRC2 NA Y Y %y4-%m2-%d2t12:00:00 none none anteoc2 /dev/null + +# EDGAR based ship emissions +BRC_SHIP NA Y Y %y4-%m2-%d2t12:00:00 none none oc_ship /dev/null + +# Aircraft fuel consumption +BRC_AIRCRAFT NA N Y %y4-%m2-%d2t12:00:00 none none none /dev/null + +# Aviation emissions during the three phases of flight +BRC_AVIATION_LTO NA Y Y %y4-%m2-%d2t12:00:00 none none oc_aviation /dev/null +BRC_AVIATION_CDS NA Y Y %y4-%m2-%d2t12:00:00 none none oc_aviation /dev/null +BRC_AVIATION_CRS NA Y Y %y4-%m2-%d2t12:00:00 none none oc_aviation /dev/null + +# SOA production +pSOA_BIOB_VOC NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null + +# ======= Nitrate Sources ======== +EMI_NH3_AG 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_ag ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +EMI_NH3_EN 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_en /dev/null +EMI_NH3_IN 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_in ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +EMI_NH3_RE 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_re ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +EMI_NH3_TR 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_tr ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +EMI_NH3_OC 'kg m-2 s-1' Y Y %y4-%m2-%d2T12:00:00 none none emiss_ocn ExtData/PIESA/sfc/GEIA.emis_NH3.ocean.x576_y361.t12.20080715_12z.nc4 + +# -------------------------------------------------------------- +# If using 64 levels please replace this section with the correct values (ie replace 127 with 64) +NITRATE_HNO3 'mol mol-1' Y N %y4-%m2-%d2T12:00:00 none 0.20 hno3 ExtData/PIESA/L127/GMI.vmr_HNO3.x144_y91.t12.2006.nc4 +# -------------------------------------------------------------- +NI_regionMask NA Y V - none none REGION_MASK ExtData/PIESA/sfc/ARCTAS.region_mask.x540_y361.2008.nc diff --git a/parm/chem/ExtData.qfed b/parm/chem/ExtData.qfed new file mode 100644 index 0000000000..86ab3c86cc --- /dev/null +++ b/parm/chem/ExtData.qfed @@ -0,0 +1,8 @@ +#====== BIOMASS BURNING EMISSIONS ======================================= + +# QFED +#-------------------------------------------------------------------------------------------------------------------------------- +SU_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/QFED/%y4/%m2/qfed2.emis_so2.006.%y4%m2%d2.nc4 +OC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/QFED/%y4/%m2/qfed2.emis_oc.006.%y4%m2%d2.nc4 +BC_BIOMASS NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/QFED/%y4/%m2/qfed2.emis_bc.006.%y4%m2%d2.nc4 +EMI_NH3_BB NA N Y %y4-%m2-%d2t12:00:00 none none biomass ExtData/nexus/QFED/%y4/%m2/qfed2.emis_nh3.006.%y4%m2%d2.nc4 diff --git a/parm/chem/GOCART2G_GridComp.rc b/parm/chem/GOCART2G_GridComp.rc new file mode 100644 index 0000000000..5ea4fa45df --- /dev/null +++ b/parm/chem/GOCART2G_GridComp.rc @@ -0,0 +1,41 @@ +# +# !RESOURCE: GOCART2G_GridComp.rc --- GOCART2G resource file +# +# DESCRIPTION: +# The GOCART2G resource file is used to control basic +# properties of the GOCART2G Grid Components. Instances are +# defined here. Default is the data component. +# +# Only the FIRST entry in the ACTIVE_INSTANCE_XX is given as +# the AERO_PROVIDER. +# +# !REVISION HISTORY: +# +# 11Oct2019 E.Sherman GOCART2G resource file has been created +#-------------------------------------------------------------------- + + + # &Label Active Constituents + +# Include the constituent in the simulation? +# ---------------------------------------------------- +ACTIVE_INSTANCES_DU: DU # DU.data +PASSIVE_INSTANCES_DU: + +ACTIVE_INSTANCES_SS: SS # SS.data +PASSIVE_INSTANCES_SS: + +ACTIVE_INSTANCES_SU: SU # SU.data +PASSIVE_INSTANCES_SU: + +ACTIVE_INSTANCES_CA: CA.oc CA.bc # CA.oc.data CA.bc.data +PASSIVE_INSTANCES_CA: + +ACTIVE_INSTANCES_NI: NI # NI.data +PASSIVE_INSTANCES_NI: + +# Set optics parameters +# --------------------- +aerosol_monochromatic_optics_wavelength_in_nm_from_LUT: 470 550 670 870 +wavelengths_for_profile_aop_in_nm: 470 550 670 870 # must be included in LUT +wavelengths_for_vertically_integrated_aop_in_nm: 470 550 670 870 # must be included in LUT diff --git a/parm/chem/NI2G_instance_NI.rc b/parm/chem/NI2G_instance_NI.rc new file mode 100644 index 0000000000..73db601073 --- /dev/null +++ b/parm/chem/NI2G_instance_NI.rc @@ -0,0 +1,33 @@ +# +# Resource file Nitrate parameters. +# + +nbins: 5 + +aerosol_radBands_optics_file: ExtData/optics/opticsBands_NI.v2_5.RRTMG.nc +aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_NI.v2_5.nc + +# Scavenging efficiency per bin [km-1] +fscav: 0.0 0.4 0.4 0.4 0.4 + +# Dry particle radius [um], used for settling +particle_radius_microns: 0.0 0.2695 0.2695 2.1 7.57 + +# Dry particle density [kg m-3] +particle_density: 1000 1769 1725 2200 2650 + +# Molecular weight of species [kg mole-1] +molecular_weight: 0.18 0.18 0.18 0.18 0.18 + +# Number of particles per kg mass +fnum: 1.50e19 1.50e19 1.50e19 1.50e19 1.50e19 + +# Number median radius [um] +particle_radius_number: 0.0118 0.0118 0.0118 0.0118 0.0118 + +# Sigma of lognormal number distribution +sigma: 2.0 2.0 2.0 2.0 2.0 + +pressure_lid_in_hPa: 0.01 + +rhFlag: 0 diff --git a/parm/chem/SS2G_instance_SS.rc b/parm/chem/SS2G_instance_SS.rc new file mode 100644 index 0000000000..d8faa3efa8 --- /dev/null +++ b/parm/chem/SS2G_instance_SS.rc @@ -0,0 +1,43 @@ +# +# Resource file Sea Salt parameters +# + +aerosol_radBands_optics_file: ExtData/optics/opticsBands_SS.v3_3.RRTMG.nc +aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_SS.v3_3.nc + +particle_radius_microns: 0.079 0.316 1.119 2.818 7.772 + +radius_lower: 0.03 0.1 0.5 1.5 5.0 + +radius_upper: 0.1 0.5 1.5 5.0 10.0 + +particle_density: 2200. 2200. 2200. 2200. 2200. + +# Scavenging efficiency per bin [km-1] +fscav: 0.4 0.4 0.4 0.4 0.4 + +# Emissions methods and scaling +emission_scheme: 3 # 1 for Gong 2003, 2 for ... +emission_scale: 1.0 1.0 1.0 1.0 1.0 1.0 # a global scaling factor for C96 +sstEmisFlag: 2 # Apply a correction to emissions based on SST (see code) +hoppelFlag: .false. # Apply Hoppel correction (set non-zero, see Fan and Toon 2011) +weibullFlag: .false. # Apply Weibull distribution (set non-zero, see Fan and Toon 2011) + +# Method of apply relative humidity to particle radius +rhFlag: 2 # RH swelling of Seasalt (1 for Fitzgerald 1975, + # 2 for Gerber 1985 method) + +# Molecular weight of species [kg mole-1] +molecular_weight: 0.058 0.058 0.058 0.058 0.058 + +# Number of particles per kg mass +fnum: 3.017e17 1.085e16 1.207e14 9.391e12 2.922e11 + +# Number median radius [um] +particle_radius_number: 0.066 0.176 0.885 2.061 6.901 + +nbins: 5 + +pressure_lid_in_hPa: 0.01 + + diff --git a/parm/chem/SU2G_instance_SU.rc b/parm/chem/SU2G_instance_SU.rc new file mode 100644 index 0000000000..547be88fa7 --- /dev/null +++ b/parm/chem/SU2G_instance_SU.rc @@ -0,0 +1,53 @@ +# +# Resource file for Sulfer parameters. +# + +aerosol_radBands_optics_file: ExtData/optics/opticsBands_SU.v1_3.RRTMG.nc +aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_SU.v1_3.nc + +nbins: 4 + +# Volcanic pointwise sources +volcano_srcfilen: ExtData/volcanic/so2_volcanic_emissions_Carns.%y4%m2%d2.rc + +# Heights [m] of LTO, CDS and CRS aviation emissions layers +aviation_vertical_layers: 0.0 100.0 9.0e3 10.0e3 + +# Fraction of anthropogenic emissions that are SO4 +so4_anthropogenic_fraction: 0.03 + +# Aircraft emission factor: go from kg fuel to kg SO2 +aircraft_fuel_emission_factor: 0.0008 + +# Scavenging efficiency per bin [km-1] (NOT USED UNLESS RAS IS CALLED) +fscav: 0.0 0.0 0.4 0.4 + +# Dry particle radius [um], used for settling +particle_radius_microns: 0.0 0.0 0.35 0.0 + +# Type of settling to use (see Chem_SettlingMod) +rhFlag: 4 + +# Dry particle density [kg m-3] +particle_density: -1 -1 1700 -1 + +pressure_lid_in_hPa: 0.01 + +# Molecular weight of species [kg mole-1] +molecular_weight: -1 -1 0.132 -1 + +# Number of particles per kg mass +fnum: -1 -1 9.01e16 -1 + +# Number median radius [um] +particle_radius_number: -1 -1 0.0695 -1 + +# Sigma of lognormal number distribution +sigma: -1 -1 2.03 -1 + +# OH H2O2 NO3 from GMI Combined Stratosphere Troposphere (Lower case yes to enable) +# ------------------------------------------------------------------------------------- +export_H2O2: no +using_GMI_OH: .false. +using_GMI_NO3: .false. +using_GMI_H2O2: .false. diff --git a/parm/config/config.aero b/parm/config/config.aero index e69de29bb2..4049219ae9 100644 --- a/parm/config/config.aero +++ b/parm/config/config.aero @@ -0,0 +1,28 @@ +#!/bin/ksh -x +# +# UFS-Aerosols settings +# +# Directory containing GOCART configuration files. Defaults to parm/chem if unset. +AERO_CONFIG_DIR=$HOMEgfs/parm/chem +# +# Path to the input data tree +case $machine in + "WCOSS_DELL_P3") AERO_INPUTS_DIR="/gpfs/dell2/emc/modeling/noscrub/Walter.Kolczynski/global-workflow/gocart_emissions" ;; + "HERA") AERO_INPUTS_DIR="/scratch1/NCEPDEV/nems/Raffaele.Montuoro/data/NASA/ExtData";; + "ORION") AERO_INPUTS_DIR="/work2/noaa/global/wkolczyn/noscrub/global-workflow/gocart_emissions";; + *) + echo "FATAL ERROR: Machine $machine unsupported for aerosols" + exit 2 + ;; +esac +# +# Biomass burning emission dataset. Choose from: GBBEPx, QFED, NONE (default) +AERO_EMIS_FIRE=QFED +# +# Aerosol convective scavenging factors (list of string array elements) +# Element syntax: ':'. Use = * to set default factor for all aerosol tracers +# Scavenging factors are set to 0 (no scavenging) if unset +aero_conv_scav_factors="'*:0.4', 'so2:0.0', 'msa:0.0', 'dms:0.0', 'nh3:0.0', 'so4:0.5', 'bc1:0.6', 'bc2:0.6', 'dust1:0.7', 'dust2:0.7', 'dust3:0.7', 'dust4:0.7', 'dust5:0.7'" +# +# Number of diagnostic aerosol tracers (default: 0) +aero_diag_tracers=2 diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn deleted file mode 120000 index 6e9cfcec1a..0000000000 --- a/parm/config/config.base.emc.dyn +++ /dev/null @@ -1 +0,0 @@ -config.base.emc.dyn_hera \ No newline at end of file diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn new file mode 100755 index 0000000000..bdfc112336 --- /dev/null +++ b/parm/config/config.base.emc.dyn @@ -0,0 +1,366 @@ +#!/bin/ksh -x + +########## config.base ########## +# Common to all steps + +echo "BEGIN: config.base" + +# Machine environment +export machine="@MACHINE@" + +# EMC parallel or NCO production +export RUN_ENVIR="emc" + +# Account, queue, etc. +export ACCOUNT="@ACCOUNT@" +export QUEUE="@QUEUE@" +export QUEUE_SERVICE="@QUEUE_SERVICE@" +export PARTITION_BATCH="@PARTITION_BATCH@" + +# Project to use in mass store: +HPSS_PROJECT=emc-global + +# Directories relative to installation areas: +export HOMEgfs=@HOMEgfs@ +export PARMgfs=$HOMEgfs/parm +export FIXgfs=$HOMEgfs/fix +export USHgfs=$HOMEgfs/ush +export UTILgfs=$HOMEgfs/util +export EXECgfs=$HOMEgfs/exec +export SCRgfs=$HOMEgfs/scripts + +export FIXcice=$HOMEgfs/fix/fix_cice +export FIXmom=$HOMEgfs/fix/fix_mom6 +export FIXreg2grb2=$HOMEgfs/fix/fix_reg2grb2 + +######################################################################## + +# GLOBAL static environment parameters +export NWPROD="@NWPROD@" +export COMROOT="@COMROOT@" +export DMPDIR="@DMPDIR@" +export RTMFIX=$CRTM_FIX + +# USER specific paths +export HOMEDIR="@HOMEDIR@" +export STMP="@STMP@" +export PTMP="@PTMP@" +export NOSCRUB="@NOSCRUB@" + +# Base directories for various builds +export BASE_GIT="@BASE_GIT@" + +# Toggle to turn on/off GFS downstream processing. +export DO_BUFRSND="NO" # BUFR sounding products +export DO_GEMPAK="NO" # GEMPAK products +export DO_AWIPS="NO" # AWIPS products +export WAFSF="NO" # WAFS products +export DO_VRFY="YES" # VRFY step + +# NO for retrospective parallel; YES for real-time parallel +# arch.sh uses REALTIME for MOS. Need to set REALTIME=YES +# if want MOS written to HPSS. Should update arch.sh to +# use RUNMOS flag (currently in config.vrfy) +export REALTIME="YES" + +# Experiment mode (cycled or free-forecast) +export MODE="@MODE@" # cycled/free + +#################################################### +# DO NOT ADD MACHINE DEPENDENT STUFF BELOW THIS LINE +# IF YOU HAVE TO MAKE MACHINE SPECIFIC CHANGES BELOW +# FEEL FREE TO MOVE THEM ABOVE THIS LINE TO KEEP IT +# CLEAR +#################################################### +# Build paths relative to $HOMEgfs +export FIXgsi="$HOMEgfs/fix/fix_gsi" +export HOMEfv3gfs="$HOMEgfs/sorc/fv3gfs.fd" +export HOMEpost="$HOMEgfs" +export HOMEobsproc_prep="$BASE_GIT/obsproc/obsproc_prep.v5.5.0_hpc-stack" +export HOMEobsproc_network="$BASE_GIT/obsproc/obsproc_global.v3.4.2_hpc-stack" +export HOMEobsproc_global=$HOMEobsproc_network +export BASE_VERIF="$BASE_GIT/verif/global/tags/vsdb" + +# CONVENIENT utility scripts and other environment parameters +export NCP="/bin/cp -p" +export NMV="/bin/mv" +export NLN="/bin/ln -sf" +export VERBOSE="YES" +export KEEPDATA="NO" +export CHGRP_RSTPROD="@CHGRP_RSTPROD@" +export CHGRP_CMD="@CHGRP_CMD@" +export NEMSIOGET="$HOMEgfs/exec/nemsio_get" +export NCDUMP="$NETCDF/bin/ncdump" +export NCLEN="$HOMEgfs/ush/getncdimlen" + +# Machine environment, jobs, and other utility scripts +export BASE_ENV="$HOMEgfs/env" +export BASE_JOB="$HOMEgfs/jobs/rocoto" + +# EXPERIMENT specific environment parameters +export SDATE=@SDATE@ +export FDATE=@FDATE@ +export EDATE=@EDATE@ +export EXP_WARM_START="@EXP_WARM_START@" +export assim_freq=6 +export PSLOT="@PSLOT@" +export EXPDIR="@EXPDIR@/$PSLOT" +export ROTDIR="@ROTDIR@/$PSLOT" +export ROTDIR_DUMP="YES" #Note: A value of "NO" does not currently work +export DUMP_SUFFIX="" +if [[ "$CDATE" -ge "2019092100" && "$CDATE" -le "2019110700" ]]; then + export DUMP_SUFFIX="p" # Use dumps from NCO GFS v15.3 parallel +fi +export RUNDIR="$STMP/RUNDIRS/$PSLOT" +export DATAROOT="$RUNDIR/$CDATE/$CDUMP" +export ARCDIR="$NOSCRUB/archive/$PSLOT" +export ICSDIR="@ICSDIR@" +export ATARDIR="@ATARDIR@" + +# Commonly defined parameters in JJOBS +export envir=${envir:-"prod"} +export NET="gfs" +export RUN=${RUN:-${CDUMP:-"gfs"}} +export COMINatmos=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos +export COMOUTatmos=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos +export COMINwave=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/wave +export COMOUTwave=${ROTDIR}/${CDUMP}.${PDY}/${cyc}/wave + +export jlogfile="${EXPDIR}/logs/jlogfile" +export ERRSCRIPT=${ERRSCRIPT:-'eval [[ $err = 0 ]]'} +export LOGSCRIPT=${LOGSCRIPT:-""} +#export ERRSCRIPT=${ERRSCRIPT:-"err_chk"} +#export LOGSCRIPT=${LOGSCRIPT:-"startmsg"} +export REDOUT="1>" +export REDERR="2>" + +export SENDECF=${SENDECF:-"NO"} +export SENDCOM=${SENDCOM:-"NO"} +export SENDSDM=${SENDSDM:-"NO"} +export SENDDBN_NTC=${SENDDBN_NTC:-"NO"} +export SENDDBN=${SENDDBN:-"NO"} +export DBNROOT=${DBNROOT:-${UTILROOT}/fakedbn} + +# APP settings +export APP=@APP@ + +# Defaults: +export DO_COUPLED="NO" +export DO_WAVE="NO" +export DO_OCN="NO" +export DO_ICE="NO" +export DO_AERO=@DO_AERO@ +export CCPP_SUITE="FV3_GFS_v17_p8" +export WAVE_CDUMP="" # When to include wave suite: gdas, gfs, or both +export cplwav2atm=".false." + +aero_nems_string="" +if [[ $DO_AERO = "YES" ]]; then + aero_nems_string="_aero" +else + aero_nems_string="" +fi + +case "${APP}" in + ATM) + echo "APP=ATM; will use defaults" + export confignamevarfornems="atm${aero_nems_string}" + ;; + ATMW) + export DO_COUPLED="YES" + export DO_WAVE="YES" + export WAVE_CDUMP="both" + export confignamevarfornems="leapfrog_atm${aero_nems_string}_wav" + ;; + S2S) + export DO_COUPLED="YES" + export DO_OCN="YES" + export DO_ICE="YES" + export CCPP_SUITE="FV3_GFS_v17_coupled_p8" + export confignamevarfornems="cpld${aero_nems_string}" + ;; + S2SW) + export DO_COUPLED="YES" + export DO_WAVE="YES" + export DO_OCN="YES" + export DO_ICE="YES" + export CCPP_SUITE="FV3_GFS_v17_coupled_p8" + export WAVE_CDUMP="both" + export cplwav2atm=".true." + export confignamevarfornems="cpld${aero_nems_string}_wave" + source $EXPDIR/config.defaults.s2sw + ;; + *) + echo "Unrecognized APP: ${1}" + exit 1 + ;; +esac + +# Set operational resolution +export OPS_RES="C768" # Do not change + +# Resolution specific parameters +export LEVS=128 +export CASE="@CASECTL@" +export CASE_ENKF="@CASEENS@" +case "$CASE" in + "C48") export OCNRES=400;; + "C96") export OCNRES=100;; + "C192") export OCNRES=050;; + "C384") export OCNRES=025;; + "C768") export OCNRES=025;; + *) export OCNRES=025;; +esac +export ICERES=$OCNRES + +# Surface cycle update frequency +if [[ "$CDUMP" == "gdas" ]] ; then + export FHCYC=1 + export FTSFS=10 +elif [[ "$CDUMP" == "gfs" ]] ; then + export FHCYC=24 +fi + +# Output frequency of the forecast model (for cycling) +export FHMIN=0 +export FHMAX=9 +export FHOUT=3 + +# Cycle to run EnKF (set to BOTH for both gfs and gdas) +export EUPD_CYC="gdas" + +# GFS cycle info +export gfs_cyc=@gfs_cyc@ # 0: no GFS cycle, 1: 00Z only, 2: 00Z and 12Z only, 4: all 4 cycles. + +# GFS output and frequency +export FHMIN_GFS=0 + +export FHMAX_GFS_00=${FHMAX_GFS_00:-384} +export FHMAX_GFS_06=${FHMAX_GFS_06:-384} +export FHMAX_GFS_12=${FHMAX_GFS_12:-384} +export FHMAX_GFS_18=${FHMAX_GFS_18:-384} +export FHMAX_GFS=$(eval echo \${FHMAX_GFS_$cyc}) + +export FHOUT_GFS=${FHOUT_GFS:-3} +export FHMAX_HF_GFS=${FHMAX_HF_GFS:-0} +export FHOUT_HF_GFS=${FHOUT_HF_GFS:-1} +export STEP_GFS="24" +export ILPOST=1 # gempak output frequency up to F120 + +# GFS restart interval in hours +export restart_interval_gfs=0 + +# I/O QUILTING, true--use Write Component; false--use GFDL FMS +# if quilting=true, choose OUTPUT_GRID as cubed_sphere_grid in netcdf or gaussian_grid +# if gaussian_grid, set OUTPUT_FILE for nemsio or netcdf +# WRITE_DOPOST=true, use inline POST +export QUILTING=".true." +export OUTPUT_GRID="gaussian_grid" +export OUTPUT_FILE="netcdf" +export WRITE_DOPOST=".true." +export WRITE_NSFLIP=".true." + +# suffix options depending on file format +if [ $OUTPUT_FILE = "netcdf" ]; then + export SUFFIX=".nc" + export NEMSIO_IN=".false." + export NETCDF_IN=".true." +else + export SUFFIX=".nemsio" + export NEMSIO_IN=".true." + export NETCDF_IN=".false." +fi + +# IAU related parameters +export DOIAU="YES" # Enable 4DIAU for control with 3 increments +export IAUFHRS="3,6,9" +export IAU_FHROT=$(echo $IAUFHRS | cut -c1) +export IAU_DELTHRS=6 +export IAU_OFFSET=6 +export DOIAU_ENKF=${DOIAU:-"YES"} # Enable 4DIAU for EnKF ensemble +export IAUFHRS_ENKF="3,6,9" +export IAU_DELTHRS_ENKF=6 +# Check if cycle is cold starting, DOIAU off, or free-forecast mode +if [[ "$MODE" = "cycled" && "$SDATE" = "$CDATE" && $EXP_WARM_START = ".false." ]] || [[ "$DOIAU" = "NO" ]] || [[ "$MODE" = "forecast-only" && $EXP_WARM_START = ".false." ]] ; then + export IAU_OFFSET=0 + export IAU_FHROT=0 +fi + +# Use Jacobians in eupd and thereby remove need to run eomg +export lobsdiag_forenkf=".true." + +# run GLDAS to spin up land ICs +export DO_GLDAS="YES" +export gldas_cyc=00 + +# if [[ "$SDATE" -lt "2019020100" ]]; then # no rtofs in GDA +# export DO_WAVE="NO" +# echo "WARNING: Wave suite turned off due to lack of RTOFS in GDA for SDATE" +# fi + +# Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL +export imp_physics=8 + +# Shared parameters +# Hybrid related +export DOHYBVAR="YES" +export NMEM_ENKF=@NMEM_ENKF@ +export SMOOTH_ENKF="NO" +export l4densvar=".true." +export lwrite4danl=".true." + +# EnKF output frequency +if [ $DOHYBVAR = "YES" ]; then + export FHMIN_ENKF=3 + export FHMAX_ENKF=9 + if [ $l4densvar = ".true." ]; then + export FHOUT=1 + export FHOUT_ENKF=1 + else + export FHOUT_ENKF=3 + fi +fi + +# turned on nsst in anal and/or fcst steps, and turn off rtgsst +export DONST="YES" +if [ $DONST = "YES" ]; then export FNTSFA=" "; fi + +# The switch to apply SST elevation correction or not +export nst_anl=.true. + +# Analysis increments to zero in CALCINCEXEC +export INCREMENTS_TO_ZERO="'liq_wat_inc','icmr_inc'" + +if [ $OUTPUT_FILE = "nemsio" ]; then + export DO_CALC_INCREMENT="YES" + export DO_CALC_ANALYSIS="NO" +fi + +# Stratospheric increments to zero +export INCVARS_ZERO_STRAT="'sphum_inc','liq_wat_inc','icmr_inc'" +export INCVARS_EFOLD="5" + +# Swith to generate netcdf or binary diagnostic files. If not specified, +# script default to binary diagnostic files. Set diagnostic file +# variables here since used in both DA and vrfy jobs +export netcdf_diag=".true." +export binary_diag=".false." + +# Verification options +export DO_METP="YES" # Run METPLUS jobs - set METPLUS settings in config.metp +export DO_VSDB="YES" # Run VSDB package - set VSDB settings in config.vrfy + +# Archiving options +export HPSSARCH="@HPSSARCH@" # save data to HPSS archive +export LOCALARCH="@LOCALARCH@" # save data to local archive +if [[ $HPSSARCH = "YES" ]] && [[ $LOCALARCH = "YES" ]]; then + echo "Both HPSS and local archiving selected. Please choose one or the other." + exit 2 +fi +export ARCH_CYC=00 # Archive data at this cycle for warm_start capability +export ARCH_WARMICFREQ=4 # Archive frequency in days for warm_start capability +export ARCH_FCSTICFREQ=1 # Archive frequency in days for gdas and gfs forecast-only capability + +export DELETE_COM_IN_ARCHIVE_JOB="YES" # NO=retain ROTDIR. YES default in arch.sh and earc.sh. + +echo "END: config.base" diff --git a/parm/config/config.base.nco.static b/parm/config/config.base.nco.static index 7c47c27ad4..d9d2764a08 100755 --- a/parm/config/config.base.nco.static +++ b/parm/config/config.base.nco.static @@ -212,7 +212,7 @@ export DO_WAVE=YES export WAVE_CDUMP="both" # Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL -export imp_physics=11 +export imp_physics=8 # Shared parameters # Hybrid related diff --git a/parm/config/config.defaults.s2sw b/parm/config/config.defaults.s2sw index 559782c7c5..e52c0c5d88 100644 --- a/parm/config/config.defaults.s2sw +++ b/parm/config/config.defaults.s2sw @@ -12,20 +12,17 @@ FHOUT_GFS=6 FHOUT_HF_GFS=-1 # config.fcst -IALB=2 -IEMS=2 -DO_CA="YES" -min_seaice="1e-6" +min_seaice="1.0e-6" use_cice_alb=".true." -export iopt_sfc="3" # config.fv3 DELTIM=300 -layout_x_gfs=8 -layout_y_gfs=12 +layout_x_gfs=24 +layout_y_gfs=16 WRITE_GROUP_GFS=1 WRTTASK_PER_GROUP_GFS=80 WRTIOBUF="32M" +MEDPETS=300 # config.wave waveGRD='gwes_30m' diff --git a/parm/config/config.efcs b/parm/config/config.efcs index 8026d5bbbe..89b7684fc3 100755 --- a/parm/config/config.efcs +++ b/parm/config/config.efcs @@ -18,11 +18,13 @@ if [ $QUILTING = ".true." ]; then export npe_efcs=$npe_fv3 fi -# Only use serial I/O for ensemble on Hera -if [[ "$machine" == "HERA" ]]; then - export OUTPUT_FILETYPE_ATM="netcdf" - export OUTPUT_FILETYPE_SFC="netcdf" -fi +# Only use serial I/O for ensemble on Hera and Orion (lustre?) +case $machine in + "HERA" | "ORION") + export OUTPUT_FILETYPE_ATM="netcdf" + export OUTPUT_FILETYPE_SFC="netcdf" + ;; +esac # Number of enkf members per fcst job export NMEM_EFCSGRP=2 @@ -73,12 +75,13 @@ export cplwav=.false. # ocean model resolution case "$CASE_ENKF" in - "C48") export OCNRES=100;; + "C48") export OCNRES=400;; "C96") export OCNRES=100;; "C192") export OCNRES=050;; "C384") export OCNRES=025;; "C768") export OCNRES=025;; *) export OCNRES=025;; esac +export ICERES=$OCNRES echo "END: config.efcs" diff --git a/parm/config/config.eobs b/parm/config/config.eobs index 8fa99c10fb..e46dde2f34 100755 --- a/parm/config/config.eobs +++ b/parm/config/config.eobs @@ -14,7 +14,7 @@ export RERUN_EOMGGRP="YES" export npe_gsi=$npe_eobs # GSI namelist options related to observer for EnKF -export OBSINPUT_INVOBS="dmesh(1)=225.0,dmesh(2)=225.0" +export OBSINPUT_INVOBS="dmesh(1)=225.0,dmesh(2)=225.0,dmesh(3)=225.0,dmesh(4)=100.0" export OBSQC_INVOBS="tcp_width=60.0,tcp_ermin=2.0,tcp_ermax=12.0" if [ $LEVS = "128" ]; then export GRIDOPTS_INVOBS="nlayers(63)=1,nlayers(64)=1," diff --git a/parm/config/config.fcst b/parm/config/config.fcst index 07ab9735ba..2c2c294078 100755 --- a/parm/config/config.fcst +++ b/parm/config/config.fcst @@ -26,6 +26,8 @@ done # Get task specific resources . $EXPDIR/config.resources fcst +export domains_stack_size="16000000" + if [ $DONST = "YES" ]; then . $EXPDIR/config.nsst @@ -39,14 +41,14 @@ export esmf_profile=".false." export OCN_model="mom6" export ICE_model="cice6" export WAV_model="ww3" -export CHM_model="gsdchem" +export CHM_model="gocart" # cpl defaults export cpl=".false." export cplflx=".false." export cplice=".false." -export cplgocart=".false." +export cplchm=".false." export cplwav=".false." # cpl changes based on APP @@ -55,12 +57,13 @@ if [ $DO_COUPLED = "YES" ]; then export cpl=".true." fi if [ $DO_AERO = "YES" ]; then - export cplgocart=".true." + export cplchm=".true." fi if [ $DO_ICE = "YES" ]; then export cplice=".true." + export cplflx=".true." fi -if [ $DO_OCN = "YES" -o $DO_ICE = "YES" ]; then +if [ $DO_OCN = "YES" ]; then export cplflx=".true." fi if [ $DO_WAVE = "YES" ]; then @@ -89,19 +92,80 @@ export h2o_phys=".true." # Options of stratosphere O3 physics reaction coefficients export new_o3forc="YES" -# export launch_level=$(echo "$LEVS/2.35" |bc) +export gwd_opt=2 + +# --GFS.v16 uGWD.v0, used for suite FV3_GFS_v16 and UFS p6 etc +# do_ugwp=T: use unified CGWD and OGWD, and turbulent orographic form drag (TOFD) +# do_ugwp=F: use unified CGWD but old OGWD, TOFD is not uded. +if [ $gwd_opt -eq 1 ]; then + export knob_ugwp_version=0 + export do_ugwp=".false." + export do_tofd=".false." + export launch_level=$(echo "$LEVS/2.35" |bc) +fi + + +# -- uGWD.v1, for suite FV3_GFS_v17 and FV3_GFS_v17p8b etc +if [ $gwd_opt -eq 2 ]; then + + #--used for UFS p7 and p8a + #export knob_ugwp_version=1 + #export do_ugwp=".false." + #export do_tofd=".false." + #export do_ugwp_v0=".false." + #export do_ugwp_v1=".true." + #export do_ugwp_v0_orog_only=".false." + #export do_ugwp_v0_nst_only=".false." + #export do_gsl_drag_ls_bl=".true." + #export do_gsl_drag_ss=".true." + #export do_gsl_drag_tofd=".true." + #export do_ugwp_v1_orog_only=".false." + + #--used for UFS p8b +##JKH export knob_ugwp_version=0 +##JKH export do_ugwp=".false." +##JKH export do_tofd=".false." +##JKH export do_ugwp_v0=".true." +##JKH export do_ugwp_v1=".false." +##JKH export do_ugwp_v0_orog_only=".false." +##JKH export do_ugwp_v0_nst_only=".false." +##JKH export do_gsl_drag_ls_bl=".false." +##JKH export do_gsl_drag_ss=".true." +##JKH export do_gsl_drag_tofd=".true." +##JKH export do_ugwp_v1_orog_only=".false." +##JKH export launch_level=$(echo "$LEVS/2.35" |bc) + + #--used for GSL suite + export knob_ugwp_version=0 + export do_ugwp=".false." + export do_tofd="true." + export do_ugwp_v0=".true." + export do_ugwp_v1=".false." + export do_ugwp_v0_orog_only=".false." + export do_ugwp_v0_nst_only=".false." + 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 launch_level=$(echo "$LEVS/2.35" |bc) +fi + + + # Sponge layer settings export tau=10.0 export rf_cutoff=7.5e2 export d2_bg_k1=0.20 +### JKH if [[ "$CCPP_SUITE" == "FV3_RAP_cires_ugwp" || "$CCPP_SUITE" == "FV3_RAP_noah_sfcdiff_unified_ugwp" ]] ; then - export d2_bg_k2=0.15 ### JKH - 10dec + export d2_bg_k2=0.15 ### JKH - 10dec + export dz_min=2 + export dt_inner=40. ### JKH - 10dec else - export d2_bg_k2=0.04 + export d2_bg_k2=0.04 + export dz_min=6 fi -export dz_min=2 -export dt_inner=40. ### JKH - 10dec if [ $LEVS = "128" ]; then export n_sponge=42; fi #127 layer if [ $LEVS = "65" ]; then if [ "CCPP_SUITE" = "FV3_RAP_cires_ugwp" -o "CCPP_SUITE" = "FV3_RAP_noah_sfcdiff_unified_ugwp" ]; then @@ -120,22 +184,22 @@ fi # PBL/turbulence schemes export hybedmf=".false." if [[ "$CCPP_SUITE" == "FV3_RAP_cires_ugwp" || "$CCPP_SUITE" == "FV3_RAP_noah_sfcdiff_unified_ugwp" || "$CCPP_SUITE" == "FV3_GFS_v16_mynn" ]] ; then - export satmedmf=".false." - export isatmedmf=0 - export shal_cnv=".true." - export do_mynnedmf=".true." - if [[ "$CCPP_SUITE" == "FV3_RAP_cires_ugwp" ]] ; then - export do_mynnsfclay=".true." - else - export do_mynnsfclay=".false." - fi - export icloud_bl=1 - export bl_mynn_tkeadvect=.true. - export bl_mynn_edmf=1 - export bl_mynn_edmf_mom=1 + export satmedmf=".false." + export isatmedmf=0 + export shal_cnv=".true." + export do_mynnedmf=".true." + if [[ "$CCPP_SUITE" == "FV3_RAP_cires_ugwp" ]] ; then + export do_mynnsfclay=".true." + else + export do_mynnsfclay=".false." + fi + export icloud_bl=1 + export bl_mynn_tkeadvect=.true. + export bl_mynn_edmf=1 + export bl_mynn_edmf_mom=1 else - export satmedmf=".true." - export isatmedmf=1 + export satmedmf=".true." + export isatmedmf=1 fi tbf="" @@ -150,18 +214,15 @@ export icliq_sw=2 ; #cloud optical coeffs from AER's newer version v3.9-v4.0 f export isubc_sw=2 export isubc_lw=2 -export IALB=${IALB:-1} -export IEMS=${IEMS:-1} -export ISOL=2 -export ICO2=2 +export iopt_sfc="3" # Convection Options: 2-SASAS, 3-GF if [[ "$CCPP_SUITE" == "FV3_RAP_cires_ugwp" || "$CCPP_SUITE" == "FV3_RAP_noah_sfcdiff_unified_ugwp" || "$CCPP_SUITE" == "FV3_GFS_v16_gf" ]] ; then - export imfdeepcnv=3 - export imfshalcnv=-1 ## JKH - no shallow GF + export imfdeepcnv=3 + export imfshalcnv=-1 ## JKH - no shallow GF else - export imfdeepcnv=2 - export imfshalcnv=2 + export imfdeepcnv=2 + export imfshalcnv=2 fi # Microphysics configuration @@ -181,9 +242,13 @@ elif [ $imp_physics -eq 6 ]; then # WSM6 export nwat=6 elif [ $imp_physics -eq 8 ]; then # Thompson - export ncld=2 - export FIELD_TABLE="$HOMEgfs/parm/parm_fv3diag/field_table_thompson${tbf}" export nwat=6 + export cal_pre=".false." + export random_clds=".false." + export effr_in=".true." + export ttendlim="-999" + export dddmp=0.1 + export d4_bg=0.12 if [[ "$CCPP_SUITE" == "FV3_RAP_cires_ugwp" || "$CCPP_SUITE" == "FV3_RAP_noah_sfcdiff_unified_ugwp" || "$CCPP_SUITE" == "FV3_GFS_v16_thompson" ]] ; then export ncld=5 export FIELD_TABLE="$HOMEgfs/parm/parm_fv3diag/field_table_thompson_aero_tke" @@ -191,21 +256,12 @@ elif [ $imp_physics -eq 8 ]; then # Thompson export lradar=.true. ## GSL namelist changes - export cal_pre=".false." - export random_clds=".false." - export effr_in=.true. export vtdm4_nh_nonmono=0.03 ### JKH - 10dec export nord=3 ### JKH - 10dec - export dddmp=0.1 - export d4_bg=0.12 export dt_inner=40. ### JKH - 10dec if [[ "$CCPP_SUITE" == "FV3_RAP_cires_ugwp" || "$CCPP_SUITE" == "FV3_RAP_noah_sfcdiff_unified_ugwp" || "$CCPP_SUITE" == "FV3_RAP_noah_sfcdiff_ugwpv1" ]] ; then export k_split=6 export n_split=2 - #JKH-10dec export ttendlim=0.005 - export ttendlim=-999. ### JKH - 10dec - else - export ttendlim=-999. ## JKH - Thmp subcyc fi export kord_tm=-11 ### JKH - 10dec @@ -217,7 +273,14 @@ elif [ $imp_physics -eq 8 ]; then # Thompson export hord_xx_nh_nonmono=6 ### JKH - 10dec else export ncld=2 - export FIELD_TABLE="$HOMEgfs/parm/parm_fv3diag/field_table_thompson${tbf}" + export FIELD_TABLE="$HOMEgfs/parm/parm_fv3diag/field_table_thompson_noaero_tke" + export ltaerosol=".false." + export lradar=".false." + export dt_inner=$((DELTIM/2)) + export hord_mt_nh_nonmono=5 + export hord_xx_nh_nonmono=5 + export vtdm4_nh_nonmono=0.02 + export nord=2 fi elif [ $imp_physics -eq 11 ]; then # GFDL @@ -253,7 +316,7 @@ export DO_SPPT=${DO_SPPT:-"NO"} export DO_SKEB=${DO_SKEB:-"NO"} export DO_SHUM=${DO_SHUM:-"NO"} export DO_LAND_PERT=${DO_LAND_PERT:-"NO"} -export DO_CA=${DO_CA:-"NO"} +export DO_CA=${DO_CA:-"YES"} export DO_OCN_SPPT=${DO_OCN_SPPT:-"NO"} export DO_OCN_PERT_EPBL=${DO_OCN_PERT_EPBL:-"NO"} @@ -266,7 +329,8 @@ export min_lakeice="0.15" export min_seaice=${min_seaice:-"0.15"} export use_cice_alb=${use_cice_alb:-".false."} -export FSICL="99999" +export FSICL="0" +export FSICS="0" #--------------------------------------------------------------------- @@ -366,16 +430,20 @@ elif [[ "$CDUMP" == "gfs" ]] ; then # GFS cycle specific parameters fi -if [ $DO_AERO = "YES" ]; then # temporary settings for aerosol coupling - export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_aer" - export FIELD_TABLE="$HOMEgfs/parm/parm_fv3diag/field_table_aer" - export CHM_CFGDIR="not_set" - export CHM_INPDIR="not_set" - export dnats="$(( $dnats + 0 ))" -elif [[ $DO_COUPLED = "YES" ]] ; then # coupled model +if [[ $DO_COUPLED = "YES" ]] ; then # coupled model export DIAG_TABLE="$HOMEgfs/parm/parm_fv3diag/diag_table_cpl" fi +if [ $DO_AERO = "YES" ]; then # temporary settings for aerosol coupling + export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-$HOMEgfs/parm/parm_fv3diag/diag_table.aero}" + export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-$HOMEgfs/parm/parm_fv3diag/field_table.aero}" + export AERO_EMIS_FIRE=$( echo "${AERO_EMIS_FIRE:-none}" | awk '{ print tolower($1) }' ) + export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-$HOMEgfs/parm/chem}" + export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" + export fscav_aero="${aero_conv_scav_factors:-${fscav_aero}}" + export dnats_aero="${aero_diag_tracers:-0}" +fi + # Remember config.efcs will over-ride these values for ensemble forecasts # if these variables are re-defined there. # Otherwise, the ensemble forecast will inherit from config.fcst diff --git a/parm/config/config.fv3 b/parm/config/config.fv3 index 06bcf1d95b..e6efd81b06 100755 --- a/parm/config/config.fv3 +++ b/parm/config/config.fv3 @@ -38,7 +38,6 @@ elif [[ "$machine" = "ORION" ]]; then export npe_node_max=40 fi - # (Standard) Model resolution dependent variables case $case_in in "C48") @@ -91,15 +90,14 @@ case $case_in in export WRTIOBUF="8M" ;; "C384") - export DELTIM=${DELTIM:-240} + export DELTIM=${DELTIM:-300} export layout_x=6 export layout_y=8 - export layout_x_gfs=${layout_x_gfs:-6} - export layout_y_gfs=${layout_y_gfs:-8} + export layout_x_gfs=${layout_x_gfs:-8} + export layout_y_gfs=${layout_y_gfs:-12} export nth_fv3=2 export nth_fv3_gfs=${nth_fv3_gfs:-2} - export cdmbgwd="1.0,2.2,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling - if [[ "$CCPP_SUITE" == "FV3_RAP_noah_sfcdiff_ugwpv1" ]]; then export cdmbgwd="1.0,1.0,1.0,1.0"; fi + export cdmbgwd="1.1,0.72,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export WRITE_GROUP=1 export WRTTASK_PER_GROUP=$npe_node_max export WRITE_GROUP_GFS=${WRITE_GROUP_GFS:-2} diff --git a/parm/config/config.ocn b/parm/config/config.ocn index e8ecd1aca1..fbb750d90b 100644 --- a/parm/config/config.ocn +++ b/parm/config/config.ocn @@ -1,10 +1,11 @@ #!/bin/ksh -x -case "$CASE" in - "C48") export OCNRES=100;; - "C96") export OCNRES=100;; - "C192") export OCNRES=050;; - "C384") export OCNRES=025;; - "C768") export OCNRES=025;; - *) export OCNRES=025;; -esac +# OCNRES is currently being set in config.base +# case "$CASE" in +# "C48") export OCNRES=400;; +# "C96") export OCNRES=100;; +# "C192") export OCNRES=050;; +# "C384") export OCNRES=025;; +# "C768") export OCNRES=025;; +# *) export OCNRES=025;; +# esac diff --git a/parm/config/config.resources b/parm/config/config.resources index 9db26854dc..08ceeef6c2 100755 --- a/parm/config/config.resources +++ b/parm/config/config.resources @@ -198,8 +198,14 @@ elif [ $step = "fcst" ]; then (( ATMPETS = layout_x * layout_y * 6 )) - # Mediator only uses the atm model PETS - export MEDPETS=$ATMPETS + # Mediator only uses the atm model PETS or less + export MEDPETS=${MEDPETS:-ATMPETS} + + if [[ $DO_AERO == "YES" ]]; then + # Aerosol model only uses the atm model PETS + export CHMPETS=$ATMPETS + # Aerosol model runs on same PETs as ATM, so don't add to $NTASKS_TOT + fi # If using in-line post, add the write tasks to the ATMPETS if [[ $QUILTING == ".true." ]]; then @@ -256,11 +262,6 @@ elif [ $step = "fcst" ]; then (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) fi - if [[ $DO_AERO == "YES" ]]; then - # Aerosol model runs on same PETS as ATM model - export CHMPETS=$MEDPETS - fi - if [[ $CDUMP == "gfs" ]]; then export npe_fcst_gfs=$NTASKS_TOT else diff --git a/parm/config/config.vrfy b/parm/config/config.vrfy index 82d0d8f9f5..461c2c025f 100755 --- a/parm/config/config.vrfy +++ b/parm/config/config.vrfy @@ -8,11 +8,11 @@ echo "BEGIN: config.vrfy" # Get task specific resources . $EXPDIR/config.resources vrfy -export DO_VSDB=${DO_VSDB:-"NO"} # Switch to run VSDB package; set in config.base +export DO_VSDB=${DO_VSDB:-"NO"} # Switch to run VSDB package; set in config.base -export VDUMP="gfs" # Verifying dump -export CDUMPFCST="gdas" # Fit-to-obs with GDAS/GFS prepbufr -export CDFNL="gdas" # Scores verification against GDAS/GFS analysis +export VDUMP="gfs" # Verifying dump +export CDUMPFCST="gdas" # Fit-to-obs with GDAS/GFS prepbufr +export CDFNL="gdas" # Scores verification against GDAS/GFS analysis export MKPGB4PRCP="NO" # Make 0.25-deg pgb files in ARCDIR for precip verification ## JKH export VRFYFITS="NO" # Fit to observations ## JKH diff --git a/parm/mom6/MOM_input_template_025 b/parm/mom6/MOM_input_template_025 index aa682602ee..3abbf2191b 100644 --- a/parm/mom6/MOM_input_template_025 +++ b/parm/mom6/MOM_input_template_025 @@ -98,7 +98,7 @@ WRITE_GEOM = 2 ! default = 1 ! If =0, never write the geometry and vertical grid files. If =1, write the ! geometry and vertical grid files only for a new simulation. If =2, always ! write the geometry and vertical grid files. Other values are invalid. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False +SAVE_INITIAL_CONDS = False ! [Boolean] default = False ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. ! === module MOM_hor_index === @@ -406,6 +406,9 @@ GILL_EQUATORIAL_LD = True ! [Boolean] default = False ! radius, otherwise, if false, use Pedlosky's definition. These definitions ! differ by a factor of 2 in front of the beta term in the denominator. Gill's ! is the more appropriate definition. +INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. ! === module MOM_set_visc === CHANNEL_DRAG = True ! [Boolean] default = False @@ -728,6 +731,11 @@ NSTAR = 0.06 ! [nondim] default = 0.2 ! The portion of the buoyant potential energy imparted by surface fluxes that is ! available to drive entrainment at the base of mixed layer when that energy is ! positive. +EPBL_MLD_BISECTION = True ! [Boolean] default = False + ! If true, use bisection with the iterative determination of the self-consistent + ! mixed layer depth. Otherwise use the false position after a maximum and + ! minimum bound have been evaluated and the returned value or bisection before + ! this. MSTAR_CONV_ADJ = 0.667 ! [nondim] default = 0.0 ! Coefficient used for reducing mstar during convection due to reduction of ! stable density gradient. diff --git a/parm/mom6/MOM_input_template_050 b/parm/mom6/MOM_input_template_050 index 2662e976ed..4e703a4bfd 100644 --- a/parm/mom6/MOM_input_template_050 +++ b/parm/mom6/MOM_input_template_050 @@ -98,7 +98,7 @@ WRITE_GEOM = 2 ! default = 1 ! If =0, never write the geometry and vertical grid files. If =1, write the ! geometry and vertical grid files only for a new simulation. If =2, always ! write the geometry and vertical grid files. Other values are invalid. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False +SAVE_INITIAL_CONDS = False ! [Boolean] default = False ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. ! === module MOM_hor_index === @@ -419,6 +419,9 @@ GILL_EQUATORIAL_LD = True ! [Boolean] default = False ! radius, otherwise, if false, use Pedlosky's definition. These definitions ! differ by a factor of 2 in front of the beta term in the denominator. Gill's ! is the more appropriate definition. +INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. ! === module MOM_set_visc === CHANNEL_DRAG = True ! [Boolean] default = False @@ -754,6 +757,11 @@ MSTAR2_COEF1 = 0.29 ! [nondim] default = 0.3 MSTAR2_COEF2 = 0.152 ! [nondim] default = 0.085 ! Coefficient in computing mstar when only rotation limits the total mixing ! (used if EPBL_MSTAR_SCHEME = OM4) +EPBL_MLD_BISECTION = True ! [Boolean] default = False + ! If true, use bisection with the iterative determination of the self-consistent + ! mixed layer depth. Otherwise use the false position after a maximum and + ! minimum bound have been evaluated and the returned value or bisection before + ! this. NSTAR = 0.06 ! [nondim] default = 0.2 ! The portion of the buoyant potential energy imparted by surface fluxes that is ! available to drive entrainment at the base of mixed layer when that energy is @@ -822,15 +830,6 @@ LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 ! === module MOM_regularize_layers === ! === module MOM_opacity === -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by - ! OPACITY_SCHEME to determine the e-folding depth of - ! incoming short wave radiation. -CHL_FILE = @[CHLCLIM] ! CHL_FILE is the file containing chl_a concentrations in - ! the variable CHL_A. It is used when VAR_PEN_SW and - ! CHL_FROM_FILE are true. -CHL_VARNAME = "chlor_a" ! default = "CHL_A" - ! Name of CHL_A variable in CHL_FILE. PEN_SW_NBANDS = 3 ! default = 1 ! The number of bands of penetrating shortwave radiation. diff --git a/parm/mom6/MOM_input_template_100 b/parm/mom6/MOM_input_template_100 index 6c65fe3d24..1716f6fabd 100644 --- a/parm/mom6/MOM_input_template_100 +++ b/parm/mom6/MOM_input_template_100 @@ -72,7 +72,7 @@ WRITE_GEOM = 2 ! default = 1 ! If =0, never write the geometry and vertical grid files. If =1, write the ! geometry and vertical grid files only for a new simulation. If =2, always ! write the geometry and vertical grid files. Other values are invalid. -SAVE_INITIAL_CONDS = True ! [Boolean] default = False +SAVE_INITIAL_CONDS = False ! [Boolean] default = False ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. ! === module MOM_oda_incupd === @@ -430,6 +430,9 @@ VISC_RES_FN_POWER = 2 ! [nondim] default = 100 ! used, although even integers are more efficient to calculate. Setting this ! greater than 100 results in a step-function being used. This function affects ! lateral viscosity, Kh, and not KhTh. +INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True + ! If true, use a more robust estimate of the first mode wave speed as the + ! starting point for iterations. ! === module MOM_set_visc === CHANNEL_DRAG = True ! [Boolean] default = False diff --git a/parm/parm_fv3diag/diag_table b/parm/parm_fv3diag/diag_table index 4617eab270..6fdc90c6e3 100644 --- a/parm/parm_fv3diag/diag_table +++ b/parm/parm_fv3diag/diag_table @@ -10,8 +10,8 @@ "gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "ice_nc", "nccice", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "rain_nc", "nconrd", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "ice_nc", "nccice", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "rain_nc", "nconrd", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "cld_amt", "cld_amt", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 @@ -110,6 +110,14 @@ "gfs_phys", "u10m", "ugrd10m", "fv3_history2d", "all", .false., "none", 2 "gfs_phys", "v10m", "vgrd10m", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "pahi", "pahi", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "pah_ave", "pah_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "ecan_acc", "ecan_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "etran_acc", "etran_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "edir_acc", "edir_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "wa_acc", "wa_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "lfrac", "lfrac", "fv3_history2d", "all", .false., "none", 2 + "gfs_sfc", "crain", "crain", "fv3_history2d", "all", .false., "none", 2 "gfs_sfc", "tprcp", "tprcp", "fv3_history2d", "all", .false., "none", 2 "gfs_phys", "rainc", "cnvprcp", "fv3_history2d", "all", .false., "none", 2 diff --git a/parm/parm_fv3diag/diag_table.aero b/parm/parm_fv3diag/diag_table.aero new file mode 100644 index 0000000000..683c50cc4a --- /dev/null +++ b/parm/parm_fv3diag/diag_table.aero @@ -0,0 +1,28 @@ +### +# chemical tracers advected by FV3 +### +"gfs_dyn", "so2", "so2", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "so4", "so4", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "dms", "dms", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "msa", "msa", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "bc1", "bc1", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "bc2", "bc2", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "oc1", "oc1", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "oc2", "oc2", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "dust1", "dust1", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "dust2", "dust2", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "dust3", "dust3", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "dust4", "dust4", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "dust5", "dust5", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "seas1", "seas1", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "seas2", "seas2", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "seas3", "seas3", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "seas4", "seas4", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "seas5", "seas5", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "nh3", "nh3", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "nh4a", "nh4a", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "no3an1", "no3an1", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "no3an2", "no3an2", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "no3an3", "no3an3", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "pm25", "pm25", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "pm10", "pm10", "fv3_history", "all", .false., "none", 2 diff --git a/parm/parm_fv3diag/diag_table_cpl b/parm/parm_fv3diag/diag_table_cpl index e2e792a6b0..584718ce15 100644 --- a/parm/parm_fv3diag/diag_table_cpl +++ b/parm/parm_fv3diag/diag_table_cpl @@ -108,8 +108,8 @@ "gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "ice_nc", "nccice", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "rain_nc", "nconrd", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "ice_nc", "nccice", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "rain_nc", "nconrd", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "cld_amt", "cld_amt", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 diff --git a/parm/parm_fv3diag/diag_table_da b/parm/parm_fv3diag/diag_table_da index 57c106531e..d34c0fd752 100644 --- a/parm/parm_fv3diag/diag_table_da +++ b/parm/parm_fv3diag/diag_table_da @@ -10,8 +10,8 @@ "gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "ice_nc", "nccice", "fv3_history", "all", .false., "none", 2 -#"gfs_dyn", "rain_nc", "nconrd", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "ice_nc", "nccice", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "rain_nc", "nconrd", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 #"gfs_dyn", "cld_amt", "cld_amt", "fv3_history", "all", .false., "none", 2 "gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 diff --git a/parm/parm_fv3diag/field_table.aero b/parm/parm_fv3diag/field_table.aero new file mode 100644 index 0000000000..d917dd786c --- /dev/null +++ b/parm/parm_fv3diag/field_table.aero @@ -0,0 +1,127 @@ +# prognostic aerosols + "TRACER", "atmos_mod", "so2" + "longname", "so2 mixing ratio" + "units", "ppm" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "so4" + "longname", "sulfate mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "dms" + "longname", "DMS mixing ratio" + "units", "ppm" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "msa" + "longname", "msa mixing ratio" + "units", "ppm" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "bc1" + "longname", "hydrophobic black carbon mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "bc2" + "longname", "hydrophillic black carbon mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "oc1" + "longname", "hydrophobic organic carbon mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "oc2" + "longname", "hydrophillic organic carbon mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "dust1" + "longname", "fine dust1 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "dust2" + "longname", "fine dust2 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "dust3" + "longname", "coarse dust3 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "dust4" + "longname", "coarse dust4 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "dust5" + "longname", "coarse dust5 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "seas1" + "longname", "seasalt1 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "seas2" + "longname", "seasalt2 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "seas3" + "longname", "seasalt3 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "seas4" + "longname", "seasalt4 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "seas5" + "longname", "seasalt5 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "nh3" + "longname", "primary NH3 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "nh4a" + "longname", "primary NH4a mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "no3an1" + "longname", "primary NO3an1 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "no3an2" + "longname", "primary NO3an2 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "no3an3" + "longname", "primary NO3an3 mixing ratio" + "units", "ug/kg" + "tracer_usage", "chemistry" + "profile_type", "fixed", "surface_value=0.0" / +# diagnostic PM tracers + "TRACER", "atmos_mod", "pm25" + "longname", "primary PM25 mixing ratio" + "units", "ug/m3" + "tracer_usage", "chemistry", "type=diagnostic" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "pm10" + "longname", "primary PM10 mixing ratio" + "units", "ug/m3" + "tracer_usage", "chemistry", "type=diagnostic" + "profile_type", "fixed", "surface_value=0.0" / diff --git a/parm/parm_fv3diag/field_table_thompson_noaero_tke b/parm/parm_fv3diag/field_table_thompson_noaero_tke new file mode 100644 index 0000000000..bc96278faa --- /dev/null +++ b/parm/parm_fv3diag/field_table_thompson_noaero_tke @@ -0,0 +1,65 @@ +# added by FRE: sphum must be present in atmos +# specific humidity for moist runs + "TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=3.e-6" / +# prognostic cloud water mixing ratio + "TRACER", "atmos_mod", "liq_wat" + "longname", "cloud water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic ice water mixing ratio + "TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic rain water mixing ratio + "TRACER", "atmos_mod", "rainwat" + "longname", "rain water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic snow water mixing ratio + "TRACER", "atmos_mod", "snowwat" + "longname", "snow water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic Grau water mixing ratio + "TRACER", "atmos_mod", "graupel" + "longname", "graupel mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic cloud water number concentration - not for non-aerosol runs +# "TRACER", "atmos_mod", "water_nc" +# "longname", "cloud liquid water number concentration" +# "units", "/kg" +# "profile_type", "fixed", "surface_value=0.0" / +# prognostic cloud ice number concentration + "TRACER", "atmos_mod", "ice_nc" + "longname", "cloud ice water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic rain number concentration + "TRACER", "atmos_mod", "rain_nc" + "longname", "rain number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic ozone mixing ratio tracer + "TRACER", "atmos_mod", "o3mr" + "longname", "ozone mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# water- and ice-friendly aerosols (Thompson) - not for non-aerosol runs +# "TRACER", "atmos_mod", "liq_aero" +# "longname", "water-friendly aerosol number concentration" +# "units", "/kg" +# "profile_type", "fixed", "surface_value=0.0" / +# "TRACER", "atmos_mod", "ice_aero" +# "longname", "ice-friendly aerosol number concentration" +# "units", "/kg" +# "profile_type", "fixed", "surface_value=0.0" / +# prognostic subgrid scale turbulent kinetic energy + "TRACER", "atmos_mod", "sgs_tke" + "longname", "subgrid scale turbulent kinetic energy" + "units", "m2/s2" + "profile_type", "fixed", "surface_value=0.0" / diff --git a/scripts/exgfs_nceppost_cpl.sh b/scripts/exgfs_nceppost_cpl.sh index 487bf7d516..1cddb79e71 100755 --- a/scripts/exgfs_nceppost_cpl.sh +++ b/scripts/exgfs_nceppost_cpl.sh @@ -114,7 +114,7 @@ then # produce flux file, the default will be /nwprod/parm/gfs_cntrl.parm if [ $GRIBVERSION = 'grib2' ]; then # use grib2 nomonic table in product g2tmpl directory as default - export POSTGRB2TBL=${POSTGRB2TBL:-${G2TMPL_SRC}/params_grib2_tbl_new} + export POSTGRB2TBL=${POSTGRB2TBL:-${g2tmpl_ROOT}/share/params_grib2_tbl_new} export PostFlatFile=${PostFlatFile:-$PARMpost/postxconfig-NT-GFS-ANL.txt} export CTLFILE=$PARMpost/postcntrl_gfs_anl.xml fi diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 1de88e1cc1..4c398e5055 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -101,7 +101,7 @@ confignamevarfornems=${confignamevarfornems:-'atm'} cpl=${cpl:-.false.} cplflx=${cplflx:-.false.} # default off,import from outside source cplwav=${cplwav:-.false.} # ? how to control 1-way/2-way? -cplchem=${cplchem:-.false.} # Chemistry model +cplchm=${cplchm:-.false.} # Chemistry model cplice=${cplice:-.false.} # ICE model OCNTIM=${OCNTIM:-1800} @@ -156,6 +156,7 @@ esac #no post determination set up for data atmosphere [[ $cplflx = .true. ]] && MOM6_postdet [[ $cplwav = .true. ]] && WW3_postdet [[ $cplice = .true. ]] && CICE_postdet +[[ $cplchm = .true. ]] && GOCART_postdet echo "MAIN: Post-determination set up of run type finished" echo "MAIN: Writing name lists and model configuration" @@ -168,7 +169,7 @@ esac #no namelist for data atmosphere [[ $cplflx = .true. ]] && MOM6_nml [[ $cplwav = .true. ]] && WW3_nml [[ $cplice = .true. ]] && CICE_nml -[[ $cplchem = .true. ]] && GOCART_rc +[[ $cplchm = .true. ]] && GOCART_rc case $RUN in 'data') DATM_model_configure;; diff --git a/scripts/exglobal_forecast.sh_gfsv16 b/scripts/exglobal_forecast.sh_gfsv16 deleted file mode 100755 index 6c1b5c0c3d..0000000000 --- a/scripts/exglobal_forecast.sh_gfsv16 +++ /dev/null @@ -1,1422 +0,0 @@ -#!/bin/ksh -################################################################################ -# UNIX Script Documentation Block -# Script name: exglobal_forecast.sh -# Script description: Runs a global FV3GFS model forecast -# -# Author: Fanglin Yang Org: NCEP/EMC Date: 2016-11-15 -# Abstract: This script runs a single GFS forecast with FV3 dynamical core. -# This script is created based on a C-shell script that GFDL wrote -# for the NGGPS Phase-II Dycore Comparison Project. -# -# Script history log: -# 2016-11-15 Fanglin Yang First Version. -# 2017-02-09 Rahul Mahajan Added warm start and restructured the code. -# 2017-03-10 Fanglin Yang Updated for running forecast on Cray. -# 2017-03-24 Fanglin Yang Updated to use NEMS FV3GFS with IPD4 -# 2017-05-24 Rahul Mahajan Updated for cycling with NEMS FV3GFS -# 2017-09-13 Fanglin Yang Updated for using GFDL MP and Write Component -# 2019-03-05 Rahul Mahajan Implemented IAU -# 2019-03-21 Fanglin Yang Add restart capability for running gfs fcst from a break point. -# 2019-12-12 Henrique Alves Added wave model blocks for coupled run -# 2020-01-31 Henrique Alves Added IAU capability for wave component -# 2020-06-02 Fanglin Yang restore restart capability when IAU is turned on. -# -# $Id$ -# -# Attributes: -# Language: Portable Operating System Interface (POSIX) Shell -# Machine: WCOSS-CRAY, Theia -################################################################################ - -# Set environment. -VERBOSE=${VERBOSE:-"YES"} -if [ $VERBOSE = "YES" ] ; then - echo $(date) EXECUTING $0 $* >&2 - set -x -fi - -machine=${machine:-"WCOSS_C"} -machine=$(echo $machine | tr '[a-z]' '[A-Z]') - -# Cycling and forecast hour specific parameters -CDUMPwave="${CDUMP}wave" -CASE=${CASE:-C768} -CDATE=${CDATE:-2017032500} -CDUMP=${CDUMP:-gdas} -FHMIN=${FHMIN:-0} -FHMAX=${FHMAX:-9} -FHOUT=${FHOUT:-3} -FHZER=${FHZER:-6} -FHCYC=${FHCYC:-24} -FHMAX_HF=${FHMAX_HF:-0} -FHOUT_HF=${FHOUT_HF:-1} -NSOUT=${NSOUT:-"-1"} -FDIAG=$FHOUT -if [ $FHMAX_HF -gt 0 -a $FHOUT_HF -gt 0 ]; then FDIAG=$FHOUT_HF; fi -WRITE_DOPOST=${WRITE_DOPOST:-".false."} -restart_interval=${restart_interval:-0} -rst_invt1=`echo $restart_interval |cut -d " " -f 1` - -PDY=$(echo $CDATE | cut -c1-8) -cyc=$(echo $CDATE | cut -c9-10) - -# Directories. -pwd=$(pwd) -NWPROD=${NWPROD:-${NWROOT:-$pwd}} -HOMEgfs=${HOMEgfs:-$NWPROD} -FIX_DIR=${FIX_DIR:-$HOMEgfs/fix} -FIX_AM=${FIX_AM:-$FIX_DIR/fix_am} -export FIX_AER=${FIX_AER:-$FIX_DIR/fix_aer} -export FIX_LUT=${FIX_LUT:-$FIX_DIR/fix_lut} -FIXfv3=${FIXfv3:-$FIX_DIR/fix_fv3_gmted2010} -DATA=${DATA:-$pwd/fv3tmp$$} # temporary running directory -ROTDIR=${ROTDIR:-$pwd} # rotating archive directory -ICSDIR=${ICSDIR:-$pwd} # cold start initial conditions -DMPDIR=${DMPDIR:-$pwd} # global dumps for seaice, snow and sst analysis - -# Model resolution specific parameters -DELTIM=${DELTIM:-225} -layout_x=${layout_x:-8} -layout_y=${layout_y:-16} -LEVS=${LEVS:-65} - -# Utilities -NCP=${NCP:-"/bin/cp -p"} -NLN=${NLN:-"/bin/ln -sf"} -NMV=${NMV:-"/bin/mv"} -SEND=${SEND:-"YES"} #move final result to rotating directory -ERRSCRIPT=${ERRSCRIPT:-'eval [[ $err = 0 ]]'} -KEEPDATA=${KEEPDATA:-"NO"} - -# Other options -MEMBER=${MEMBER:-"-1"} # -1: control, 0: ensemble mean, >0: ensemble member $MEMBER -ENS_NUM=${ENS_NUM:-1} # Single executable runs multiple members (e.g. GEFS) -PREFIX_ATMINC=${PREFIX_ATMINC:-""} # allow ensemble to use recentered increment - -# IAU options -DOIAU=${DOIAU:-"NO"} -IAUFHRS=${IAUFHRS:-0} -IAU_DELTHRS=${IAU_DELTHRS:-0} -IAU_OFFSET=${IAU_OFFSET:-0} - -# Model specific stuff -FCSTEXECDIR=${FCSTEXECDIR:-$HOMEgfs/sorc/fv3gfs.fd/NEMS/exe} -FCSTEXEC=${FCSTEXEC:-fv3_gfs.x} -PARM_FV3DIAG=${PARM_FV3DIAG:-$HOMEgfs/parm/parm_fv3diag} -PARM_POST=${PARM_POST:-$HOMEgfs/parm/post} - -# Wave coupling parameter defaults to false -cplwav=${cplwav:-.false.} - -# Model config options -APRUN_FV3=${APRUN_FV3:-${APRUN_FCST:-${APRUN:-""}}} -NTHREADS_FV3=${NTHREADS_FV3:-${NTHREADS_FCST:-${nth_fv3:-1}}} -cores_per_node=${cores_per_node:-${npe_node_max:-24}} -ntiles=${ntiles:-6} -NTASKS_FV3=${NTASKS_FV3:-$npe_fv3} - -TYPE=${TYPE:-"nh"} # choices: nh, hydro -MONO=${MONO:-"non-mono"} # choices: mono, non-mono -RUN_CCPP=${RUN_CCPP:-"NO"} - -QUILTING=${QUILTING:-".true."} -OUTPUT_GRID=${OUTPUT_GRID:-"gaussian_grid"} -OUTPUT_FILE=${OUTPUT_FILE:-"nemsio"} -WRITE_NEMSIOFLIP=${WRITE_NEMSIOFLIP:-".true."} -WRITE_FSYNCFLAG=${WRITE_FSYNCFLAG:-".true."} -affix="nemsio" -[[ "$OUTPUT_FILE" = "netcdf" ]] && affix="nc" - -rCDUMP=${rCDUMP:-$CDUMP} - -#------------------------------------------------------------------ -# setup the runtime environment -if [ $machine = "WCOSS_C" ] ; then - HUGEPAGES=${HUGEPAGES:-hugepages4M} - . $MODULESHOME/init/sh 2>/dev/null - module load iobuf craype-$HUGEPAGES 2>/dev/null - export MPICH_GNI_COLL_OPT_OFF=${MPICH_GNI_COLL_OPT_OFF:-MPI_Alltoallv} - export MKL_CBWR=AVX2 - export WRTIOBUF=${WRTIOBUF:-"4M"} - export NC_BLKSZ=${NC_BLKSZ:-"4M"} - export IOBUF_PARAMS="*nemsio:verbose:size=${WRTIOBUF},*:verbose:size=${NC_BLKSZ}" -fi - -#------------------------------------------------------- -if [ ! -d $ROTDIR ]; then mkdir -p $ROTDIR; fi -mkdata=NO -if [ ! -d $DATA ]; then - mkdata=YES - mkdir -p $DATA -fi -cd $DATA || exit 8 -mkdir -p $DATA/INPUT - -if [ $cplwav = ".true." ]; then - if [ $CDUMP = "gdas" ]; then - RSTDIR_WAVE=$ROTDIR/${CDUMP}.${PDY}/${cyc}/wave/restart - else - RSTDIR_WAVE=${RSTDIR_WAVE:-$ROTDIR/${CDUMP}.${PDY}/${cyc}/wave/restart} - fi - if [ ! -d $RSTDIR_WAVE ]; then mkdir -p $RSTDIR_WAVE ; fi - $NLN $RSTDIR_WAVE restart_wave -fi - -if [ $CDUMP = "gfs" -a $rst_invt1 -gt 0 ]; then - RSTDIR_ATM=${RSTDIR:-$ROTDIR}/${CDUMP}.${PDY}/${cyc}/atmos/RERUN_RESTART - if [ ! -d $RSTDIR_ATM ]; then mkdir -p $RSTDIR_ATM ; fi - $NLN $RSTDIR_ATM RESTART -else - mkdir -p $DATA/RESTART -fi - -#------------------------------------------------------- -# determine if restart IC exists to continue from a previous forecast -RERUN="NO" -filecount=$(find $RSTDIR_ATM -type f | wc -l) -if [ $CDUMP = "gfs" -a $rst_invt1 -gt 0 -a $FHMAX -gt $rst_invt1 -a $filecount -gt 10 ]; then - reverse=$(echo "${restart_interval[@]} " | tac -s ' ') - for xfh in $reverse ; do - yfh=$((xfh-(IAU_OFFSET/2))) - SDATE=$($NDATE +$yfh $CDATE) - PDYS=$(echo $SDATE | cut -c1-8) - cycs=$(echo $SDATE | cut -c9-10) - flag1=$RSTDIR_ATM/${PDYS}.${cycs}0000.coupler.res - flag2=$RSTDIR_ATM/coupler.res - if [ -s $flag1 ]; then - CDATE_RST=$SDATE - [[ $RERUN = "YES" ]] && break - mv $flag1 ${flag1}.old - if [ -s $flag2 ]; then mv $flag2 ${flag2}.old ;fi - RERUN="YES" - [[ $xfh = $rst_invt1 ]] && RERUN="NO" - fi - done -fi - -#------------------------------------------------------- -# member directory -if [ $MEMBER -lt 0 ]; then - prefix=$CDUMP - rprefix=$rCDUMP - memchar="" -else - prefix=enkf$CDUMP - rprefix=enkf$rCDUMP - memchar=mem$(printf %03i $MEMBER) -fi -memdir=$ROTDIR/${prefix}.$PDY/$cyc/atmos/$memchar -if [ ! -d $memdir ]; then mkdir -p $memdir; fi - -GDATE=$($NDATE -$assim_freq $CDATE) -gPDY=$(echo $GDATE | cut -c1-8) -gcyc=$(echo $GDATE | cut -c9-10) -gmemdir=$ROTDIR/${rprefix}.$gPDY/$gcyc/atmos/$memchar -sCDATE=$($NDATE -3 $CDATE) - -if [[ "$DOIAU" = "YES" ]]; then - sCDATE=$($NDATE -3 $CDATE) - sPDY=$(echo $sCDATE | cut -c1-8) - scyc=$(echo $sCDATE | cut -c9-10) - tPDY=$gPDY - tcyc=$gcyc -else - sCDATE=$CDATE - sPDY=$PDY - scyc=$cyc - tPDY=$sPDY - tcyc=$cyc -fi - -#------------------------------------------------------- -# initial conditions -warm_start=${warm_start:-".false."} -read_increment=${read_increment:-".false."} -res_latlon_dynamics="''" - -# Determine if this is a warm start or cold start -if [ -f $gmemdir/RESTART/${sPDY}.${scyc}0000.coupler.res ]; then - export warm_start=".true." -fi - -# turn IAU off for cold start -DOIAU_coldstart=${DOIAU_coldstart:-"NO"} -if [ $DOIAU = "YES" -a $warm_start = ".false." ] || [ $DOIAU_coldstart = "YES" -a $warm_start = ".true." ]; then - export DOIAU="NO" - echo "turning off IAU" - DOIAU_coldstart="YES" - IAU_OFFSET=0 - sCDATE=$CDATE - sPDY=$PDY - scyc=$cyc - tPDY=$sPDY - tcyc=$cyc -fi - -#------------------------------------------------------- -if [ $warm_start = ".true." -o $RERUN = "YES" ]; then -#------------------------------------------------------- -#............................. - if [ $RERUN = "NO" ]; then -#............................. - - # Link all (except sfc_data) restart files from $gmemdir - for file in $(ls $gmemdir/RESTART/${sPDY}.${scyc}0000.*.nc); do - file2=$(echo $(basename $file)) - file2=$(echo $file2 | cut -d. -f3-) # remove the date from file - fsuf=$(echo $file2 | cut -d. -f1) - if [ $fsuf != "sfc_data" ]; then - $NLN $file $DATA/INPUT/$file2 - fi - done - - # Link sfcanl_data restart files from $memdir - for file in $(ls $memdir/RESTART/${sPDY}.${scyc}0000.*.nc); do - file2=$(echo $(basename $file)) - file2=$(echo $file2 | cut -d. -f3-) # remove the date from file - fsufanl=$(echo $file2 | cut -d. -f1) - if [ $fsufanl = "sfcanl_data" ]; then - file2=$(echo $file2 | sed -e "s/sfcanl_data/sfc_data/g") - $NLN $file $DATA/INPUT/$file2 - fi - done - - # Need a coupler.res when doing IAU - if [ $DOIAU = "YES" ]; then - rm -f $DATA/INPUT/coupler.res - cat >> $DATA/INPUT/coupler.res << EOF - 2 (Calendar: no_calendar=0, thirty_day_months=1, julian=2, gregorian=3, noleap=4) - ${gPDY:0:4} ${gPDY:4:2} ${gPDY:6:2} ${gcyc} 0 0 Model start time: year, month, day, hour, minute, second - ${sPDY:0:4} ${sPDY:4:2} ${sPDY:6:2} ${scyc} 0 0 Current model time: year, month, day, hour, minute, second -EOF - fi - - # Link increments - if [ $DOIAU = "YES" ]; then - for i in $(echo $IAUFHRS | sed "s/,/ /g" | rev); do - incfhr=$(printf %03i $i) - if [ $incfhr = "006" ]; then - increment_file=$memdir/${CDUMP}.t${cyc}z.${PREFIX_ATMINC}atminc.nc - else - increment_file=$memdir/${CDUMP}.t${cyc}z.${PREFIX_ATMINC}atmi${incfhr}.nc - fi - if [ ! -f $increment_file ]; then - echo "ERROR: DOIAU = $DOIAU, but missing increment file for fhr $incfhr at $increment_file" - echo "Abort!" - exit 1 - fi - $NLN $increment_file $DATA/INPUT/fv_increment$i.nc - IAU_INC_FILES="'fv_increment$i.nc',$IAU_INC_FILES" - done - read_increment=".false." - res_latlon_dynamics="" - else - increment_file=$memdir/${CDUMP}.t${cyc}z.${PREFIX_INC}atminc.nc - if [ -f $increment_file ]; then - $NLN $increment_file $DATA/INPUT/fv_increment.nc - read_increment=".true." - res_latlon_dynamics="fv_increment.nc" - fi - fi - -#............................. - else ##RERUN - - export warm_start=".true." - PDYT=$(echo $CDATE_RST | cut -c1-8) - cyct=$(echo $CDATE_RST | cut -c9-10) - for file in $(ls $RSTDIR_ATM/${PDYT}.${cyct}0000.*); do - file2=$(echo $(basename $file)) - file2=$(echo $file2 | cut -d. -f3-) - $NLN $file $DATA/INPUT/$file2 - done - - hour_rst=`$NHOUR $CDATE_RST $CDATE` - IAU_FHROT=$((IAU_OFFSET+hour_rst)) - if [ $DOIAU = "YES" ]; then - IAUFHRS=-1 - IAU_DELTHRS=0 - IAU_INC_FILES="''" - fi - - rst_list_rerun="" - xfh=$restart_interval_gfs - while [ $xfh -le $FHMAX_GFS ]; do - rst_list_rerun="$rst_list_rerun $xfh" - xfh=$((xfh+restart_interval_gfs)) - done - restart_interval="$rst_list_rerun" - - fi -#............................. - -else ## cold start - - for file in $(ls $memdir/INPUT/*.nc); do - file2=$(echo $(basename $file)) - fsuf=$(echo $file2 | cut -c1-3) - if [ $fsuf = "gfs" -o $fsuf = "sfc" ]; then - $NLN $file $DATA/INPUT/$file2 - fi - done - -#------------------------------------------------------- -fi -#------------------------------------------------------- - -nfiles=$(ls -1 $DATA/INPUT/* | wc -l) -if [ $nfiles -le 0 ]; then - echo "Initial conditions must exist in $DATA/INPUT, ABORT!" - msg="Initial conditions must exist in $DATA/INPUT, ABORT!" - postmsg "$jlogfile" "$msg" - exit 1 -fi - -# If doing IAU, change forecast hours -if [[ "$DOIAU" = "YES" ]]; then - FHMAX=$((FHMAX+6)) - if [ $FHMAX_HF -gt 0 ]; then - FHMAX_HF=$((FHMAX_HF+6)) - fi -fi - -#-------------------------------------------------------------------------- -# Grid and orography data -for n in $(seq 1 $ntiles); do - $NLN $FIXfv3/$CASE/${CASE}_grid.tile${n}.nc $DATA/INPUT/${CASE}_grid.tile${n}.nc - $NLN $FIXfv3/$CASE/${CASE}_oro_data.tile${n}.nc $DATA/INPUT/oro_data.tile${n}.nc -done -$NLN $FIXfv3/$CASE/${CASE}_mosaic.nc $DATA/INPUT/grid_spec.nc - -# GFS standard input data -IAER=${IAER:-111} -ICO2=${ICO2:-2} - -if [ ${new_o3forc:-YES} = YES ]; then - O3FORC=ozprdlos_2015_new_sbuvO3_tclm15_nuchem.f77 -else - O3FORC=global_o3prdlos.f77 -fi -H2OFORC=${H2OFORC:-"global_h2o_pltc.f77"} -$NLN $FIX_AM/${O3FORC} $DATA/global_o3prdlos.f77 -$NLN $FIX_AM/${H2OFORC} $DATA/global_h2oprdlos.f77 -$NLN $FIX_AM/global_solarconstant_noaa_an.txt $DATA/solarconstant_noaa_an.txt -$NLN $FIX_AM/global_sfc_emissivity_idx.txt $DATA/sfc_emissivity_idx.txt - -## merra2 aerosol climo -for n in 01 02 03 04 05 06 07 08 09 10 11 12; do -$NLN $FIX_AER/merra2.aerclim.2003-2014.m${n}.nc $DATA/aeroclim.m${n}.nc -done -$NLN $FIX_LUT/optics_BC.v1_3.dat $DATA/optics_BC.dat -$NLN $FIX_LUT/optics_OC.v1_3.dat $DATA/optics_OC.dat -$NLN $FIX_LUT/optics_DU.v15_3.dat $DATA/optics_DU.dat -$NLN $FIX_LUT/optics_SS.v3_3.dat $DATA/optics_SS.dat -$NLN $FIX_LUT/optics_SU.v1_3.dat $DATA/optics_SU.dat - -$NLN $FIX_AM/global_co2historicaldata_glob.txt $DATA/co2historicaldata_glob.txt -$NLN $FIX_AM/co2monthlycyc.txt $DATA/co2monthlycyc.txt -if [ $ICO2 -gt 0 ]; then - for file in $(ls $FIX_AM/fix_co2_proj/global_co2historicaldata*) ; do - $NLN $file $DATA/$(echo $(basename $file) | sed -e "s/global_//g") - done -fi - -$NLN $FIX_AM/global_climaeropac_global.txt $DATA/aerosol.dat -if [ $IAER -gt 0 ] ; then - for file in $(ls $FIX_AM/global_volcanic_aerosols*) ; do - $NLN $file $DATA/$(echo $(basename $file) | sed -e "s/global_//g") - done -fi - -#-------------wavewave---------------------- -if [ $cplwav = ".true." ]; then - - for file in $(ls $COMINwave/rundata/rmp_src_to_dst_conserv_*) ; do - $NLN $file $DATA/ - done - $NLN $COMINwave/rundata/ww3_multi.${CDUMPwave}${WAV_MEMBER}.${cycle}.inp $DATA/ww3_multi.inp - - array=($WAVECUR_FID $WAVEICE_FID $WAVEWND_FID $waveuoutpGRD $waveGRD $waveesmfGRD $wavesbsGRD $wavepostGRD $waveinterpGRD) - grdALL=`printf "%s\n" "${array[@]}" | sort -u | tr '\n' ' '` - - for wavGRD in ${grdALL}; do - $NLN $COMINwave/rundata/${CDUMPwave}.mod_def.$wavGRD $DATA/mod_def.$wavGRD - done - - export WAVHCYC=${WAVHCYC:-6} - export WRDATE=`$NDATE -${WAVHCYC} $CDATE` - export WRPDY=`echo $WRDATE | cut -c1-8` - export WRcyc=`echo $WRDATE | cut -c9-10` - export WRDIR=${ROTDIR}/${CDUMPRSTwave}.${WRPDY}/${WRcyc}/wave/restart - export datwave=$COMOUTwave/rundata - export wavprfx=${CDUMPwave}${WAV_MEMBER} - - for wavGRD in $waveGRD ; do - if [ $RERUN = "NO" ]; then - if [ ! -f ${WRDIR}/${sPDY}.${scyc}0000.restart.${wavGRD} ]; then - echo "WARNING: NON-FATAL ERROR wave IC is missing, will start from rest" - fi - $NLN ${WRDIR}/${sPDY}.${scyc}0000.restart.${wavGRD} $DATA/restart.${wavGRD} - else - if [ ! -f ${RSTDIR_WAVE}/${PDYT}.${cyct}0000.restart.${wavGRD} ]; then - echo "WARNING: NON-FATAL ERROR wave IC is missing, will start from rest" - fi - $NLN ${RSTDIR_WAVE}/${PDYT}.${cyct}0000.restart.${wavGRD} $DATA/restart.${wavGRD} - fi - eval $NLN $datwave/${wavprfx}.log.${wavGRD}.${PDY}${cyc} log.${wavGRD} - done - - if [ "$WW3ICEINP" = "YES" ]; then - wavicefile=$COMINwave/rundata/${CDUMPwave}.${WAVEICE_FID}.${cycle}.ice - if [ ! -f $wavicefile ]; then - echo "ERROR: WW3ICEINP = ${WW3ICEINP}, but missing ice file" - echo "Abort!" - exit 1 - fi - $NLN ${wavicefile} $DATA/ice.${WAVEICE_FID} - fi - - if [ "$WW3CURINP" = "YES" ]; then - wavcurfile=$COMINwave/rundata/${CDUMPwave}.${WAVECUR_FID}.${cycle}.cur - if [ ! -f $wavcurfile ]; then - echo "ERROR: WW3CURINP = ${WW3CURINP}, but missing current file" - echo "Abort!" - exit 1 - fi - $NLN $wavcurfile $DATA/current.${WAVECUR_FID} - fi - - # Link output files - cd $DATA - eval $NLN $datwave/${wavprfx}.log.mww3.${PDY}${cyc} log.mww3 - - # Loop for gridded output (uses FHINC) - fhr=$FHMIN_WAV - while [ $fhr -le $FHMAX_WAV ]; do - YMDH=`$NDATE $fhr $CDATE` - YMD=$(echo $YMDH | cut -c1-8) - HMS="$(echo $YMDH | cut -c9-10)0000" - for wavGRD in ${waveGRD} ; do - eval $NLN $datwave/${wavprfx}.out_grd.${wavGRD}.${YMD}.${HMS} ${YMD}.${HMS}.out_grd.${wavGRD} - done - FHINC=$FHOUT_WAV - if [ $FHMAX_HF_WAV -gt 0 -a $FHOUT_HF_WAV -gt 0 -a $fhr -lt $FHMAX_HF_WAV ]; then - FHINC=$FHOUT_HF_WAV - fi - fhr=$((fhr+FHINC)) - done - - # Loop for point output (uses DTPNT) - fhr=$FHMIN_WAV - while [ $fhr -le $FHMAX_WAV ]; do - YMDH=`$NDATE $fhr $CDATE` - YMD=$(echo $YMDH | cut -c1-8) - HMS="$(echo $YMDH | cut -c9-10)0000" - eval $NLN $datwave/${wavprfx}.out_pnt.${waveuoutpGRD}.${YMD}.${HMS} ${YMD}.${HMS}.out_pnt.${waveuoutpGRD} - FHINC=$FHINCP_WAV - fhr=$((fhr+FHINC)) - done - -fi #cplwav=true -#-------------wavewave---------------------- - -# inline post fix files -if [ $WRITE_DOPOST = ".true." ]; then - $NLN $PARM_POST/post_tag_gfs${LEVS} $DATA/itag - $NLN $PARM_POST/postxconfig-NT-GFS-TWO.txt $DATA/postxconfig-NT.txt - $NLN $PARM_POST/postxconfig-NT-GFS-F00-TWO.txt $DATA/postxconfig-NT_FH00.txt - $NLN $PARM_POST/params_grib2_tbl_new $DATA/params_grib2_tbl_new -fi -#------------------------------------------------------------------ - -# changeable parameters -# dycore definitions -res=$(echo $CASE |cut -c2-5) -resp=$((res+1)) -npx=$resp -npy=$resp -npz=$((LEVS-1)) -io_layout=${io_layout:-"1,1"} -#ncols=$(( (${npx}-1)*(${npy}-1)*3/2 )) - -# spectral truncation and regular grid resolution based on FV3 resolution -JCAP_CASE=$((2*res-2)) -LONB_CASE=$((4*res)) -LATB_CASE=$((2*res)) - -JCAP=${JCAP:-$JCAP_CASE} -LONB=${LONB:-$LONB_CASE} -LATB=${LATB:-$LATB_CASE} - -LONB_IMO=${LONB_IMO:-$LONB_CASE} -LATB_JMO=${LATB_JMO:-$LATB_CASE} - -# Fix files -FNGLAC=${FNGLAC:-"$FIX_AM/global_glacier.2x2.grb"} -FNMXIC=${FNMXIC:-"$FIX_AM/global_maxice.2x2.grb"} -FNTSFC=${FNTSFC:-"$FIX_AM/RTGSST.1982.2012.monthly.clim.grb"} -FNSNOC=${FNSNOC:-"$FIX_AM/global_snoclim.1.875.grb"} -FNZORC=${FNZORC:-"igbp"} -FNALBC2=${FNALBC2:-"$FIX_AM/global_albedo4.1x1.grb"} -FNAISC=${FNAISC:-"$FIX_AM/CFSR.SEAICE.1982.2012.monthly.clim.grb"} -FNTG3C=${FNTG3C:-"$FIX_AM/global_tg3clim.2.6x1.5.grb"} -FNVEGC=${FNVEGC:-"$FIX_AM/global_vegfrac.0.144.decpercent.grb"} -FNMSKH=${FNMSKH:-"$FIX_AM/global_slmask.t1534.3072.1536.grb"} -FNVMNC=${FNVMNC:-"$FIX_AM/global_shdmin.0.144x0.144.grb"} -FNVMXC=${FNVMXC:-"$FIX_AM/global_shdmax.0.144x0.144.grb"} -FNSLPC=${FNSLPC:-"$FIX_AM/global_slope.1x1.grb"} -FNALBC=${FNALBC:-"$FIX_AM/global_snowfree_albedo.bosu.t${JCAP}.${LONB}.${LATB}.rg.grb"} -FNVETC=${FNVETC:-"$FIX_AM/global_vegtype.igbp.t${JCAP}.${LONB}.${LATB}.rg.grb"} -FNSOTC=${FNSOTC:-"$FIX_AM/global_soiltype.statsgo.t${JCAP}.${LONB}.${LATB}.rg.grb"} -FNABSC=${FNABSC:-"$FIX_AM/global_mxsnoalb.uariz.t${JCAP}.${LONB}.${LATB}.rg.grb"} -FNSMCC=${FNSMCC:-"$FIX_AM/global_soilmgldas.statsgo.t${JCAP}.${LONB}.${LATB}.grb"} - -# If the appropriate resolution fix file is not present, use the highest resolution available (T1534) -[[ ! -f $FNALBC ]] && FNALBC="$FIX_AM/global_snowfree_albedo.bosu.t1534.3072.1536.rg.grb" -[[ ! -f $FNVETC ]] && FNVETC="$FIX_AM/global_vegtype.igbp.t1534.3072.1536.rg.grb" -[[ ! -f $FNSOTC ]] && FNSOTC="$FIX_AM/global_soiltype.statsgo.t1534.3072.1536.rg.grb" -[[ ! -f $FNABSC ]] && FNABSC="$FIX_AM/global_mxsnoalb.uariz.t1534.3072.1536.rg.grb" -[[ ! -f $FNSMCC ]] && FNSMCC="$FIX_AM/global_soilmgldas.statsgo.t1534.3072.1536.grb" - -# NSST Options -# nstf_name contains the NSST related parameters -# nstf_name(1) : NST_MODEL (NSST Model) : 0 = OFF, 1 = ON but uncoupled, 2 = ON and coupled -# nstf_name(2) : NST_SPINUP : 0 = OFF, 1 = ON, -# nstf_name(3) : NST_RESV (Reserved, NSST Analysis) : 0 = OFF, 1 = ON -# nstf_name(4) : ZSEA1 (in mm) : 0 -# nstf_name(5) : ZSEA2 (in mm) : 0 -# nst_anl : .true. or .false., NSST analysis over lake -NST_MODEL=${NST_MODEL:-0} -NST_SPINUP=${NST_SPINUP:-0} -NST_RESV=${NST_RESV-0} -ZSEA1=${ZSEA1:-0} -ZSEA2=${ZSEA2:-0} -nstf_name=${nstf_name:-"$NST_MODEL,$NST_SPINUP,$NST_RESV,$ZSEA1,$ZSEA2"} -nst_anl=${nst_anl:-".false."} - - -# blocking factor used for threading and general physics performance -#nyblocks=`expr \( $npy - 1 \) \/ $layout_y ` -#nxblocks=`expr \( $npx - 1 \) \/ $layout_x \/ 32` -#if [ $nxblocks -le 0 ]; then nxblocks=1 ; fi -blocksize=${blocksize:-32} - -# the pre-conditioning of the solution -# =0 implies no pre-conditioning -# >0 means new adiabatic pre-conditioning -# <0 means older adiabatic pre-conditioning -na_init=${na_init:-1} -[[ $warm_start = ".true." ]] && na_init=0 - -# variables for controlling initialization of NCEP/NGGPS ICs -filtered_terrain=${filtered_terrain:-".true."} -gfs_dwinds=${gfs_dwinds:-".true."} - -# various debug options -no_dycore=${no_dycore:-".false."} -dycore_only=${adiabatic:-".false."} -chksum_debug=${chksum_debug:-".false."} -print_freq=${print_freq:-6} - -if [ ${TYPE} = "nh" ]; then # non-hydrostatic options - - hydrostatic=".false." - phys_hydrostatic=".false." # enable heating in hydrostatic balance in non-hydrostatic simulation - use_hydro_pressure=".false." # use hydrostatic pressure for physics - if [ $warm_start = ".true." ]; then - make_nh=".false." # restarts contain non-hydrostatic state - else - make_nh=".true." # re-initialize non-hydrostatic state - fi - -else # hydrostatic options - - hydrostatic=".true." - phys_hydrostatic=".false." # ignored when hydrostatic = T - use_hydro_pressure=".false." # ignored when hydrostatic = T - make_nh=".false." # running in hydrostatic mode - -fi - -# Conserve total energy as heat globally -consv_te=${consv_te:-1.} # range 0.-1., 1. will restore energy to orig. val. before physics - -# time step parameters in FV3 -k_split=${k_split:-2} -n_split=${n_split:-6} - -if [ $(echo $MONO | cut -c-4) = "mono" ]; then # monotonic options - - d_con=${d_con_mono:-"0."} - do_vort_damp=".false." - if [ ${TYPE} = "nh" ]; then # non-hydrostatic - hord_mt=${hord_mt_nh_mono:-"10"} - hord_xx=${hord_xx_nh_mono:-"10"} - else # hydrostatic - hord_mt=${hord_mt_hydro_mono:-"10"} - hord_xx=${hord_xx_hydro_mono:-"10"} - fi - -else # non-monotonic options - - d_con=${d_con_nonmono:-"1."} - do_vort_damp=".true." - if [ ${TYPE} = "nh" ]; then # non-hydrostatic - hord_mt=${hord_mt_nh_nonmono:-"5"} - hord_xx=${hord_xx_nh_nonmono:-"5"} - else # hydrostatic - hord_mt=${hord_mt_hydro_nonmono:-"10"} - hord_xx=${hord_xx_hydro_nonmono:-"10"} - fi - -fi - -if [ $(echo $MONO | cut -c-4) != "mono" -a $TYPE = "nh" ]; then - vtdm4=${vtdm4_nh_nonmono:-"0.06"} -else - vtdm4=${vtdm4:-"0.05"} -fi - -if [ $warm_start = ".true." ]; then # warm start from restart file - - nggps_ic=".false." - ncep_ic=".false." - external_ic=".false." - mountain=".true." - if [ $read_increment = ".true." ]; then # add increment on the fly to the restarts - res_latlon_dynamics="fv_increment.nc" - else - res_latlon_dynamics='""' - fi - -else # CHGRES'd GFS analyses - - nggps_ic=${nggps_ic:-".true."} - ncep_ic=${ncep_ic:-".false."} - external_ic=".true." - mountain=".false." - read_increment=".false." - res_latlon_dynamics='""' - -fi - -# Stochastic Physics Options -if [ ${SET_STP_SEED:-"YES"} = "YES" ]; then - ISEED_SKEB=$((CDATE*1000 + MEMBER*10 + 1)) - ISEED_SHUM=$((CDATE*1000 + MEMBER*10 + 2)) - ISEED_SPPT=$((CDATE*1000 + MEMBER*10 + 3)) -else - ISEED=${ISEED:-0} -fi -DO_SKEB=${DO_SKEB:-"NO"} -DO_SPPT=${DO_SPPT:-"NO"} -DO_SHUM=${DO_SHUM:-"NO"} - -if [ $DO_SKEB = "YES" ]; then - do_skeb=".true." -fi -if [ $DO_SHUM = "YES" ]; then - do_shum=".true." -fi -if [ $DO_SPPT = "YES" ]; then - do_sppt=".true." -fi - -# copy over the tables -DIAG_TABLE=${DIAG_TABLE:-$PARM_FV3DIAG/diag_table} -DATA_TABLE=${DATA_TABLE:-$PARM_FV3DIAG/data_table} -FIELD_TABLE=${FIELD_TABLE:-$PARM_FV3DIAG/field_table} - -# build the diag_table with the experiment name and date stamp -if [ $DOIAU = "YES" ]; then -cat > diag_table << EOF -FV3 Forecast -${gPDY:0:4} ${gPDY:4:2} ${gPDY:6:2} ${gcyc} 0 0 -EOF -cat $DIAG_TABLE >> diag_table -else -cat > diag_table << EOF -FV3 Forecast -${sPDY:0:4} ${sPDY:4:2} ${sPDY:6:2} ${scyc} 0 0 -EOF -cat $DIAG_TABLE >> diag_table -fi - -$NCP $DATA_TABLE data_table -$NCP $FIELD_TABLE field_table - -# copy CCN_ACTIVATE.BIN for Thompson microphysics -if [ $RUN_CCPP = "YES" ]; then -if [ "$CCPP_SUITE" = 'FV3_GSD_v0' -o "$CCPP_SUITE" = 'FV3_GSD_noah' -o "$CCPP_SUITE" = 'FV3_GFS_v16_thompson' ]; then - $NLN $FIX_AM/CCN_ACTIVATE.BIN CCN_ACTIVATE.BIN - $NLN $FIX_AM/freezeH2O.dat freezeH2O.dat - $NLN $FIX_AM/qr_acr_qg.dat qr_acr_qg.dat - $NLN $FIX_AM/qr_acr_qs.dat qr_acr_qs.dat -fi -fi - -# JKH copy yaml file over -cp $HOMEgfs/sorc/fv3gfs.fd/tests/parm/fd_nems.yaml fd_nems.yaml - -#------------------------------------------------------------------ -rm -f nems.configure - -if [ $cplwav = ".true." ]; then -#### ww3 version of nems.configure - -# Switch on cpl flag - cpl=.true. - -NTASKS_FV3m1=$((NTASKS_FV3-1)) -atm_petlist_bounds=" 0 $((NTASKS_FV3-1))" -wav_petlist_bounds=" $((NTASKS_FV3)) $((NTASKS_FV3m1+npe_wav))" -### atm_petlist_bounds=" 0 1511" -### atm_petlist_bounds=$atm_petlist_bounds -### wav_petlist_bounds="1512 1691" -### wav_petlist_bounds=$wav_petlist_bounds - coupling_interval_sec=${coupling_interval_sec:-1800} - rm -f nems.configure -cat > nems.configure < WAV :SrcTermProcessing=0:TermOrder=SrcSeq - WAV - @ -:: -EOF -else -#### fv3 standalone version of nems.configure -cat > nems.configure < model_configure < input.nml <> input.nml << EOF - iovr = ${iovr:-"3"} - ltaerosol = ${ltaerosol:-".false."} - lradar = ${lradar:-".false."} - ttendlim = ${ttendlim:-"0.005"} - oz_phys = ${oz_phys:-".false."} - oz_phys_2015 = ${oz_phys_2015:-".true."} - lsoil_lsm = ${lsoil_lsm:-"4"} - do_mynnedmf = ${do_mynnedmf:-".false."} - do_mynnsfclay = ${do_mynnsfclay:-".false."} - icloud_bl = ${icloud_bl:-"1"} - bl_mynn_edmf = ${bl_mynn_edmf:-"1"} - bl_mynn_tkeadvect = ${bl_mynn_tkeadvect:-".true."} - bl_mynn_edmf_mom = ${bl_mynn_edmf_mom:-"1"} - min_lakeice = ${min_lakeice:-"0.15"} - min_seaice = ${min_seaice:-"0.15"} -EOF -else - cat >> input.nml << EOF - iovr_lw = ${iovr_lw:-"3"} - iovr_sw = ${iovr_sw:-"3"} -EOF -fi - -# Add namelist for IAU -if [ $DOIAU = "YES" ]; then - cat >> input.nml << EOF - iaufhrs = ${IAUFHRS} - iau_delthrs = ${IAU_DELTHRS} - iau_inc_files= ${IAU_INC_FILES} - iau_drymassfixer = .false. -EOF -fi - -cat >> input.nml <> input.nml - -cat >> input.nml <> input.nml -if [ $MEMBER -gt 0 ]; then - - cat >> input.nml << EOF -&nam_stochy -EOF - - if [ $DO_SKEB = "YES" ]; then - cat >> input.nml << EOF - skeb = $SKEB - iseed_skeb = ${ISEED_SKEB:-$ISEED} - skeb_tau = ${SKEB_TAU:-"-999."} - skeb_lscale = ${SKEB_LSCALE:-"-999."} - skebnorm = ${SKEBNORM:-"1"} - skeb_npass = ${SKEB_nPASS:-"30"} - skeb_vdof = ${SKEB_VDOF:-"5"} -EOF - fi - - if [ $DO_SHUM = "YES" ]; then - cat >> input.nml << EOF - shum = $SHUM - iseed_shum = ${ISEED_SHUM:-$ISEED} - shum_tau = ${SHUM_TAU:-"-999."} - shum_lscale = ${SHUM_LSCALE:-"-999."} -EOF - fi - - if [ $DO_SPPT = "YES" ]; then - cat >> input.nml << EOF - sppt = $SPPT - iseed_sppt = ${ISEED_SPPT:-$ISEED} - sppt_tau = ${SPPT_TAU:-"-999."} - sppt_lscale = ${SPPT_LSCALE:-"-999."} - sppt_logit = ${SPPT_LOGIT:-".true."} - sppt_sfclimit = ${SPPT_SFCLIMIT:-".true."} - use_zmtnblck = ${use_zmtnblck:-".true."} -EOF - fi - - cat >> input.nml << EOF - $nam_stochy_nml -/ -EOF - - - cat >> input.nml << EOF -&nam_sfcperts - $nam_sfcperts_nml -/ -EOF - -else - - cat >> input.nml << EOF -&nam_stochy -/ -&nam_sfcperts -/ -EOF - -fi - - -#------------------------------------------------------------------ -# make symbolic links to write forecast files directly in memdir -cd $DATA -if [ $QUILTING = ".true." -a $OUTPUT_GRID = "gaussian_grid" ]; then - fhr=$FHMIN - while [ $fhr -le $FHMAX ]; do - FH3=$(printf %03i $fhr) - FH2=$(printf %02i $fhr) - atmi=atmf${FH3}.$affix - sfci=sfcf${FH3}.$affix - logi=logf${FH3} - pgbi=GFSPRS.GrbF${FH2} - flxi=GFSFLX.GrbF${FH2} - atmo=$memdir/${CDUMP}.t${cyc}z.atmf${FH3}.$affix - sfco=$memdir/${CDUMP}.t${cyc}z.sfcf${FH3}.$affix - logo=$memdir/${CDUMP}.t${cyc}z.logf${FH3}.txt - pgbo=$memdir/${CDUMP}.t${cyc}z.master.grb2f${FH3} - flxo=$memdir/${CDUMP}.t${cyc}z.sfluxgrbf${FH3}.grib2 - eval $NLN $atmo $atmi - eval $NLN $sfco $sfci - eval $NLN $logo $logi - if [ $WRITE_DOPOST = ".true." ]; then - eval $NLN $pgbo $pgbi - eval $NLN $flxo $flxi - fi - FHINC=$FHOUT - if [ $FHMAX_HF -gt 0 -a $FHOUT_HF -gt 0 -a $fhr -lt $FHMAX_HF ]; then - FHINC=$FHOUT_HF - fi - fhr=$((fhr+FHINC)) - done -else - for n in $(seq 1 $ntiles); do - eval $NLN nggps2d.tile${n}.nc $memdir/nggps2d.tile${n}.nc - eval $NLN nggps3d.tile${n}.nc $memdir/nggps3d.tile${n}.nc - eval $NLN grid_spec.tile${n}.nc $memdir/grid_spec.tile${n}.nc - eval $NLN atmos_static.tile${n}.nc $memdir/atmos_static.tile${n}.nc - eval $NLN atmos_4xdaily.tile${n}.nc $memdir/atmos_4xdaily.tile${n}.nc - done -fi - -# Copy namelist file #JKH -$NCP input.nml $memdir - -# Copy model_configure file #JKH -$NCP model_configure $memdir - -#------------------------------------------------------------------ -# run the executable - -$NCP $FCSTEXECDIR/$FCSTEXEC $DATA/. -export OMP_NUM_THREADS=$NTHREADS_FV3 -eval $APRUN_FV3 $DATA/$FCSTEXEC 1>&1 2>&2 -export ERR=$? -export err=$ERR -$ERRSCRIPT || exit $err - -#------------------------------------------------------------------ -if [ $SEND = "YES" ]; then - - # Copy gdas and enkf member restart files - if [ $CDUMP = "gdas" -a $rst_invt1 -gt 0 ]; then - cd $DATA/RESTART - mkdir -p $memdir/RESTART - for rst_int in $restart_interval ; do - if [ $rst_int -ge 0 ]; then - RDATE=$($NDATE +$rst_int $CDATE) - rPDY=$(echo $RDATE | cut -c1-8) - rcyc=$(echo $RDATE | cut -c9-10) - for file in $(ls ${rPDY}.${rcyc}0000.*) ; do - $NCP $file $memdir/RESTART/$file - done - fi - done - if [ $DOIAU = "YES" ] || [ $DOIAU_coldstart = "YES" ]; then - # if IAU is on, save restart at start of IAU window - rst_iau=$(( ${IAU_OFFSET} - (${IAU_DELTHRS}/2) )) - if [ $rst_iau -lt 0 ];then - rst_iau=$(( (${IAU_DELTHRS}) - ${IAU_OFFSET} )) - fi - RDATE=$($NDATE +$rst_iau $CDATE) - rPDY=$(echo $RDATE | cut -c1-8) - rcyc=$(echo $RDATE | cut -c9-10) - for file in $(ls ${rPDY}.${rcyc}0000.*) ; do - $NCP $file $memdir/RESTART/$file - done - fi - fi -fi - -#------------------------------------------------------------------ -# Clean up before leaving -if [ $mkdata = "YES" ]; then rm -rf $DATA; fi - -#------------------------------------------------------------------ -set +x -if [ $VERBOSE = "YES" ] ; then - echo $(date) EXITING $0 with return code $err >&2 -fi -exit 0 diff --git a/sorc/build_ufs.sh b/sorc/build_ufs.sh index 33db2bc0af..e39f64fd84 100755 --- a/sorc/build_ufs.sh +++ b/sorc/build_ufs.sh @@ -3,19 +3,13 @@ set -eux # Build ATMW by default APP="ATMW" -CCPP_SUITES="FV3_GFS_v16,FV3_GFS_v16_RRTMGP,FV3_GFS_v16_ugwpv1,FV3_RAP_noah_sfcdiff_unified_ugwp,FV3_RAP_cires_ugwp" +CCPP_SUITES="FV3_GFS_v16,FV3_GFS_v16_RRTMGP,FV3_GFS_v16_ugwpv1,FV3_RAP_noah_sfcdiff_unified_ugwp,FV3_GFS_v17_p8" -while getopts "ac" option; do +while getopts "c" option; do case "${option}" in - a) - APP="ATMAERO" - CCPP_SUITES="FV3_GFS_v16,FV3_GFS_v16_ugwpv1" - shift - ;; c) APP="S2SW" - CCPP_SUITES="FV3_GFS_v16_coupled_nsstNoahmpUGWPv1,FV3_GFS_v16_coupled_p7_rrtmgp" - shift + CCPP_SUITES="FV3_GFS_v16_coupled_nsstNoahmpUGWPv1,FV3_GFS_v16_coupled_p7_rrtmgp,FV3_GFS_v17_coupled_p8" ;; *) echo "Unrecognized option: ${1}" @@ -27,7 +21,6 @@ done source ./machine-setup.sh > /dev/null 2>&1 cwd=$(pwd) - # Set target platform case "${target}" in hera|orion|stampede|jet|cheyenne) @@ -50,5 +43,5 @@ if [ -d build ]; then rm -R build fi mkdir -p build && cd build -cmake -DAPP=${APP} -DCCPP_SUITES=${CCPP_SUITES} .. +cmake -DAPP=${APP} -DCCPP_SUITES=${CCPP_SUITES} -DUFS_GOCART="ON" .. OMP_NUM_THREADS=1 make -j ${BUILD_JOBS:-8} VERBOSE=${BUILD_VERBOSE:-} diff --git a/sorc/checkout.sh b/sorc/checkout.sh index 1db450ac38..87c1127f5a 100755 --- a/sorc/checkout.sh +++ b/sorc/checkout.sh @@ -71,7 +71,7 @@ if [[ ! -d ufs_utils.fd ]] ; then rm -f ${topdir}/checkout-ufs_utils.log git clone --recursive https://github.com/ufs-community/UFS_UTILS.git ufs_utils.fd >> ${logdir}/checkout-ufs_utils.fd.log 2>&1 cd ufs_utils.fd - git checkout 26cd024 + git checkout 04ad17e cd ${topdir} if [[ -d ufs_utils.fd_gsl ]]; then rsync -avx ufs_utils.fd_gsl/ ufs_utils.fd/ ## copy over GSL changes not in UFS_UTILS repository @@ -85,7 +85,7 @@ if [[ ! -d gfs_post.fd ]] ; then rm -f ${topdir}/checkout-gfs_post.log git clone https://github.com/NOAA-EMC/UPP.git gfs_post.fd >> ${logdir}/checkout-gfs_post.log 2>&1 cd gfs_post.fd - git checkout c939eae + git checkout upp_v10.0.11 git submodule update --init CMakeModules ################################################################################ # checkout_gtg diff --git a/sorc/ens_tracker.v1.1.15.2/sorc/Module_ens_tracker.v1.1.15_for_Dell b/sorc/ens_tracker.v1.1.15.2/sorc/Module_ens_tracker.v1.1.15_for_Dell deleted file mode 100644 index 5230ecb22a..0000000000 --- a/sorc/ens_tracker.v1.1.15.2/sorc/Module_ens_tracker.v1.1.15_for_Dell +++ /dev/null @@ -1,25 +0,0 @@ -#%Module##################################################### -## Module file for ens_tracker -############################################################# - -module load ips/18.0.1.163 -module load impi/18.0.1 - -#module load w3emc/2.3.0 -module load w3nco/2.0.6 -module load bacio/2.0.2 -module load sp/2.0.2 -module load nemsio/2.2.3 -module load nemsiogfs/2.0.1 -module load sigio/2.0.1 - -module load jasper/1.900.1 -module load libpng/1.2.59 -module load zlib/1.2.11 -module load g2/3.1.0 -module load PNetCDF/1.8.1 - -module use /usrx/local/nceplibs/dev/NCEPLIBS/modulefiles -#module load hdf5_parallel/1.10.6 -module load netcdf_parallel/4.7.4 -module load w3emc_para/2.4.0 diff --git a/ush/cplvalidate.sh b/ush/cplvalidate.sh index a9d124aad1..29db7b3ad9 100755 --- a/ush/cplvalidate.sh +++ b/ush/cplvalidate.sh @@ -14,13 +14,14 @@ return case $confignamevarfornems in 'atm') combination=.false..false..false..false..false.;; 'datm') combination=.true..true..false..false..false.;; - 'atm_aer') combination=.true..false..false..false..true.;; + 'atm_aero') combination=.true..false..false..false..true.;; 'med_atm_ocn_ice') combination=.true..true..true..false..false.;; 'cpld') combination=.true..true..true..false..false.;; 'blocked_atm_wav') combination=.true..false..false..true..false.;; 'leapfrog_atm_wav')combination=.true..false..false..true..false.;; 'med_atm_ocn_ice_wav') combination=.true..true..true..true..false.;; 'cpld_wave') combination=.true..true..true..true..false.;; + 'cpld_aero_wave') combination=.true..true..true..true..true.;; 'medcold_atm_ocn_ice_wav') combination=.true..true..true..true..false.;; 'med_atm_ocn_ice_wav1way') combination=.true..true..true..true..false.;; 'med_atm_ocn_ice_wav1waywcurr') combination=.true..true..true..true..false.;; @@ -29,7 +30,7 @@ case $confignamevarfornems in *) echo "SUB cplvalidate: Combination not supported" exit 1 ;; esac -control=$cpl$cplflx$cplice$cplwav$cplchem +control=$cpl$cplflx$cplice$cplwav$cplchm if [ $control != $combination ]; then echo "SUB cplvalidate: inconsistent cpl setting!" exit 2 diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 06908a0db3..f0c996b70c 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -186,7 +186,7 @@ EOF done else OROFIX=${OROFIX:-"${FIXfv3}/${CASE}"} - FIX_SFC=${FIX_SFC:-"${FIXgrd}/fix_sfc"} + FIX_SFC=${FIX_SFC:-"${OROFIX}/fix_sfc"} for n in $(seq 1 $ntiles); do $NLN ${OROFIX}/${CASE}_oro_data.tile${n}.nc $DATA/INPUT/oro_data.tile${n}.nc done @@ -217,6 +217,8 @@ EOF iopt_snf=${iopt_snf:-"4"} iopt_tbot=${iopt_tbot:-"2"} iopt_stc=${iopt_stc:-"3"} + IALB=${IALB:-2} + IEMS=${IEMS:-2} elif [ $(grep lsm_ruc ${_suite_file} | wc -l ) -gt 0 ]; then lsm="3" lsoil_lsm=9 @@ -242,40 +244,20 @@ EOF iopt_snf=${iopt_snf:-"4"} iopt_tbot=${iopt_tbot:-"2"} iopt_stc=${iopt_stc:-"1"} + IALB=${IALB:-1} + IEMS=${IEMS:-1} fi - # Scan suite file to determine whether it uses UGWP v1 - if [ $(grep -i ugwpv1_gsldrag ${_suite_file} | wc -l ) -gt 0 ]; then - gwd_opt="2" - knob_ugwp_version="1" - OROFIX_ugwd=${OROFIX_ugwd:-"${FIX_DIR}/fix_ugwd"} - $NLN ${OROFIX_ugwd}/ugwp_limb_tau.nc $DATA/ugwp_limb_tau.nc - for n in $(seq 1 $ntiles); do - $NLN ${OROFIX_ugwd}/$CASE/${CASE}_oro_data_ls.tile${n}.nc $DATA/INPUT/oro_data_ls.tile${n}.nc - $NLN ${OROFIX_ugwd}/$CASE/${CASE}_oro_data_ss.tile${n}.nc $DATA/INPUT/oro_data_ss.tile${n}.nc - done - # Scan suite file to determine whether it uses Unified UGWP - # JKH -- 'workaround' to get correct settings for unified_ugwp in parsing_namelist_FV3.sh for GSL - # (gwd_opt will be set to "2" in namelist) - elif [ $(grep -i unified_ugwp ${_suite_file} | wc -l ) -gt 0 ]; then - gwd_opt="3" - knob_ugwp_version="0" - launch_level=${launch_level:-$(echo "$LEVS/2.35" |bc)} - OROFIX_ugwd=${OROFIX_ugwd:-"${FIX_DIR}/fix_ugwd"} - for n in $(seq 1 $ntiles); do - $NLN ${OROFIX_ugwd}/$CASE/${CASE}_oro_data_ls.tile${n}.nc $DATA/INPUT/oro_data_ls.tile${n}.nc - $NLN ${OROFIX_ugwd}/$CASE/${CASE}_oro_data_ss.tile${n}.nc $DATA/INPUT/oro_data_ss.tile${n}.nc - done - else - gwd_opt="1" - knob_ugwp_version="0" - launch_level=${launch_level:-$(echo "$LEVS/2.35" |bc)} - fi + # Files for GWD + OROFIX_ugwd=${OROFIX_ugwd:-"${FIX_DIR}/fix_ugwd"} + $NLN ${OROFIX_ugwd}/ugwp_limb_tau.nc $DATA/ugwp_limb_tau.nc + for n in $(seq 1 $ntiles); do + $NLN ${OROFIX_ugwd}/$CASE/${CASE}_oro_data_ls.tile${n}.nc $DATA/INPUT/oro_data_ls.tile${n}.nc + $NLN ${OROFIX_ugwd}/$CASE/${CASE}_oro_data_ss.tile${n}.nc $DATA/INPUT/oro_data_ss.tile${n}.nc + done # GFS standard input data - IALB=${IALB:-1} - IEMS=${IEMS:-1} ISOL=${ISOL:-2} IAER=${IAER:-1011} ICO2=${ICO2:-2} @@ -289,13 +271,12 @@ EOF #### # copy CCN_ACTIVATE.BIN for Thompson microphysics if [ $imp_physics -eq 8 ]; then - $NCP $FV3INP/CCN_ACTIVATE.BIN CCN_ACTIVATE.BIN - #### - $NCP $FIX_AM/freezeH2O.dat . - $NCP $FIX_AM/qr_acr_qg.dat . - $NCP $FIX_AM/qr_acr_qs.dat . - sleep 60 + $NLN $FIX_AM/CCN_ACTIVATE.BIN $DATA/CCN_ACTIVATE.BIN + $NLN $FIX_AM/freezeH2O.dat $DATA/freezeH2O.dat + $NLN $FIX_AM/qr_acr_qg.dat $DATA/qr_acr_qg.dat + $NLN $FIX_AM/qr_acr_qs.dat $DATA/qr_acr_qs.dat fi + $NLN $FIX_AM/${O3FORC} $DATA/global_o3prdlos.f77 $NLN $FIX_AM/${H2OFORC} $DATA/global_h2oprdlos.f77 $NLN $FIX_AM/global_solarconstant_noaa_an.txt $DATA/solarconstant_noaa_an.txt @@ -369,31 +350,17 @@ EOF FNSNOC=${FNSNOC:-"$FIX_AM/global_snoclim.1.875.grb"} FNZORC=${FNZORC:-"igbp"} FNAISC=${FNAISC:-"$FIX_AM/CFSR.SEAICE.1982.2012.monthly.clim.grb"} - if [ $cplflx = ".false." ] ; then - FNALBC2=${FNALBC2:-"$FIX_AM/global_albedo4.1x1.grb"} - FNTG3C=${FNTG3C:-"$FIX_AM/global_tg3clim.2.6x1.5.grb"} - FNVEGC=${FNVEGC:-"$FIX_AM/global_vegfrac.0.144.decpercent.grb"} - FNMSKH=${FNMSKH:-"$FIX_AM/global_slmask.t1534.3072.1536.grb"} - FNVMNC=${FNVMNC:-"$FIX_AM/global_shdmin.0.144x0.144.grb"} - FNVMXC=${FNVMXC:-"$FIX_AM/global_shdmax.0.144x0.144.grb"} - FNSLPC=${FNSLPC:-"$FIX_AM/global_slope.1x1.grb"} - FNALBC=${FNALBC:-"$FIX_AM/global_snowfree_albedo.bosu.t${JCAP}.${LONB}.${LATB}.rg.grb"} - FNVETC=${FNVETC:-"$FIX_AM/global_vegtype.igbp.t${JCAP}.${LONB}.${LATB}.rg.grb"} - FNSOTC=${FNSOTC:-"$FIX_AM/global_soiltype.statsgo.t${JCAP}.${LONB}.${LATB}.rg.grb"} - FNABSC=${FNABSC:-"$FIX_AM/global_mxsnoalb.uariz.t${JCAP}.${LONB}.${LATB}.rg.grb"} - else - FNALBC2=${FNALBC2:-"${FIX_SFC}/${CASE}.facsf.tileX.nc"} - FNTG3C=${FNTG3C:-"${FIX_SFC}/${CASE}.substrate_temperature.tileX.nc"} - FNVEGC=${FNVEGC:-"${FIX_SFC}/${CASE}.vegetation_greenness.tileX.nc"} - FNMSKH=${FNMSKH:-"$FIX_AM/global_slmask.t1534.3072.1536.grb"} - FNVMNC=${FNVMNC:-"${FIX_SFC}/${CASE}.vegetation_greenness.tileX.nc"} - FNVMXC=${FNVMXC:-"${FIX_SFC}/${CASE}.vegetation_greenness.tileX.nc"} - FNSLPC=${FNSLPC:-"${FIX_SFC}/${CASE}.slope_type.tileX.nc"} - FNALBC=${FNALBC:-"${FIX_SFC}/${CASE}.snowfree_albedo.tileX.nc"} - FNVETC=${FNVETC:-"${FIX_SFC}/${CASE}.vegetation_type.tileX.nc"} - FNSOTC=${FNSOTC:-"${FIX_SFC}/${CASE}.soil_type.tileX.nc"} - FNABSC=${FNABSC:-"${FIX_SFC}/${CASE}.maximum_snow_albedo.tileX.nc"} - fi + FNALBC2=${FNALBC2:-"${FIX_SFC}/${CASE}.facsf.tileX.nc"} + FNTG3C=${FNTG3C:-"${FIX_SFC}/${CASE}.substrate_temperature.tileX.nc"} + FNVEGC=${FNVEGC:-"${FIX_SFC}/${CASE}.vegetation_greenness.tileX.nc"} + FNMSKH=${FNMSKH:-"$FIX_AM/global_slmask.t1534.3072.1536.grb"} + FNVMNC=${FNVMNC:-"${FIX_SFC}/${CASE}.vegetation_greenness.tileX.nc"} + FNVMXC=${FNVMXC:-"${FIX_SFC}/${CASE}.vegetation_greenness.tileX.nc"} + FNSLPC=${FNSLPC:-"${FIX_SFC}/${CASE}.slope_type.tileX.nc"} + FNALBC=${FNALBC:-"${FIX_SFC}/${CASE}.snowfree_albedo.tileX.nc"} + FNVETC=${FNVETC:-"${FIX_SFC}/${CASE}.vegetation_type.tileX.nc"} + FNSOTC=${FNSOTC:-"${FIX_SFC}/${CASE}.soil_type.tileX.nc"} + FNABSC=${FNABSC:-"${FIX_SFC}/${CASE}.maximum_snow_albedo.tileX.nc"} FNSMCC=${FNSMCC:-"$FIX_AM/global_soilmgldas.statsgo.t${JCAP}.${LONB}.${LATB}.grb"} # If the appropriate resolution fix file is not present, use the highest resolution available (T1534) @@ -788,7 +755,13 @@ MOM6_postdet() { $NCP -pf $FIXmom/$OCNRES/* $DATA/INPUT/ # Copy coupled grid_spec - $NCP -pf $FIX_DIR/fix_cpl/a${CASE}o${OCNRES}/grid_spec.nc $DATA/INPUT/ + spec_file="$FIX_DIR/fix_cpl/a${CASE}o${OCNRES}/grid_spec.nc" + if [ -s $spec_file ]; then + $NCP -pf $spec_file $DATA/INPUT/ + else + echo "FATAL ERROR: grid_spec file '$spec_file' does not exist" + exit 3 + fi # Copy mediator restart files to RUNDIR if [ $warm_start = ".true." -o $RERUN = "YES" ]; then @@ -896,7 +869,7 @@ CICE_postdet() { FRAZIL_FWSALT=${FRAZIL_FWSALT:-".true."} ktherm=${ktherm:-2} - tfrz_option=${tfrz_option:-"mushy"} + tfrz_option=${tfrz_option:-"'mushy'"} tr_pond_lvl=${tr_pond_lvl:-".true."} # Use level melt ponds tr_pond_lvl=true # restart_pond_lvl (if tr_pond_lvl=true): @@ -983,17 +956,46 @@ GOCART_rc() { # this variable is platform-dependent and should be set via a YAML file # link directory containing GOCART input dataset, if provided - if [ ! -z "${CHM_INPDIR}" ]; then - $NLN -sf ${CHM_INPDIR} $DATA + if [ ! -z "${AERO_INPUTS_DIR}" ]; then + $NLN -sf ${AERO_INPUTS_DIR} $DATA/ExtData status=$? [[ $status -ne 0 ]] && exit $status fi # copying GOCART configuration files - if [ ! -z "${CHM_CFGDIR}" ]; then - $NCP ${CHM_CFGDIR}/*.rc $DATA + if [ ! -z "${AERO_CONFIG_DIR}" ]; then + $NCP ${AERO_CONFIG_DIR}/*.rc $DATA status=$? [[ $status -ne 0 ]] && exit $status + # attempt to generate ExtData configuration file if not provided + if [ ! -f $DATA/AERO_ExtData.rc ]; then + { \ + echo "PrimaryExports%%" ; \ + cat ${AERO_CONFIG_DIR}/ExtData.other ; \ + cat ${AERO_CONFIG_DIR}/ExtData.${AERO_EMIS_FIRE:-none} ; \ + echo "%%" ; \ + } > $DATA/AERO_ExtData.rc + [[ $status -ne 0 ]] && exit $status + fi fi } +GOCART_postdet() { + echo "SUB ${FUNCNAME[0]}: Linking output data for GOCART" + + [[ ! -d $COMOUT/chem ]] && mkdir -p $COMOUT/chem + + for fhr in $fhrlst; do + if [ $fhr = 'anl' ]; then + continue + fi + VDATE=$($NDATE $fhr $IDATE) + YYYY=$(echo $VDATE | cut -c1-4) + MM=$(echo $VDATE | cut -c5-6) + DD=$(echo $VDATE | cut -c7-8) + HH=$(echo $VDATE | cut -c9-10) + SS=$((10#$HH*3600)) + + $NLN $COMOUT/chem/gocart.inst_aod.${YYYY}${MM}${DD}_${HH}00z.nc4 $DATA/gocart.inst_aod.${YYYY}${MM}${DD}_${HH}00z.nc4 + done +} diff --git a/ush/hpssarch_gen.sh b/ush/hpssarch_gen.sh index a1ea8685e9..6b7c595dfb 100755 --- a/ush/hpssarch_gen.sh +++ b/ush/hpssarch_gen.sh @@ -271,6 +271,17 @@ if [ $type = "gfs" ]; then echo "${dirname}ice*nc " >>ice.txt fi + if [ $DO_AERO = "YES" ]; then + dirpath="gfs.${PDY}/${cyc}/chem" + dirname="./${dirpath}" + + head="gocart" + + rm -f chem.txt + touch chem.txt + + echo "${dirname}/${head}*" >> chem.txt + fi #----------------------------------------------------- fi ##end of gfs diff --git a/ush/nems.configure.atm.IN b/ush/nems.configure.atm.IN index 5fbecb03cd..0d95533fa3 100644 --- a/ush/nems.configure.atm.IN +++ b/ush/nems.configure.atm.IN @@ -1,3 +1,6 @@ +# ESMF # +logKindFlag: ESMF_LOGKIND_MULTI + EARTH_component_list: ATM ATM_model: fv3 runSeq:: diff --git a/ush/nems.configure.atm_aero.IN b/ush/nems.configure.atm_aero.IN new file mode 100644 index 0000000000..b253255106 --- /dev/null +++ b/ush/nems.configure.atm_aero.IN @@ -0,0 +1,47 @@ +############################################# +#### NEMS Run-Time Configuration File ##### +############################################# + +# ESMF # + logKindFlag: ESMF_LOGKIND_MULTI + +# EARTH # +EARTH_component_list: ATM CHM +EARTH_attributes:: + Verbosity = max +:: + +# ATM # +ATM_model: @[atm_model] +ATM_petlist_bounds: @[atm_petlist_bounds] +ATM_attributes:: + Verbosity = max +:: + +# CHM # +CHM_model: @[chm_model] +CHM_petlist_bounds: @[chm_petlist_bounds] +CHM_attributes:: + Verbosity = max +:: + +# Run Sequence # +runSeq:: + @@[coupling_interval_fast_sec] + ATM phase1 + ATM -> CHM + CHM + CHM -> ATM + ATM phase2 + @ +:: + +# CMEPS variables + +DRIVER_attributes:: + mediator_read_restart = .false. +:: + +ALLCOMP_attributes:: + start_type = startup +:: diff --git a/ush/nems.configure.blocked_atm_wav.IN b/ush/nems.configure.blocked_atm_wav.IN index 8883d8dc22..4435cf793e 100644 --- a/ush/nems.configure.blocked_atm_wav.IN +++ b/ush/nems.configure.blocked_atm_wav.IN @@ -2,6 +2,9 @@ #### NEMS Run-Time Configuration File ##### ############################################# +# ESMF # + logKindFlag: ESMF_LOGKIND_MULTI + # EARTH # EARTH_component_list: ATM WAV EARTH_attributes:: diff --git a/ush/nems.configure.cpld.IN b/ush/nems.configure.cpld.IN index 57e7085cad..e38f5774a0 100644 --- a/ush/nems.configure.cpld.IN +++ b/ush/nems.configure.cpld.IN @@ -2,6 +2,9 @@ #### NEMS Run-Time Configuration File ##### ############################################# +# ESMF # +logKindFlag: ESMF_LOGKIND_MULTI + # EARTH # EARTH_component_list: MED ATM OCN ICE EARTH_attributes:: diff --git a/ush/nems.configure.cpld_aero_wave.IN b/ush/nems.configure.cpld_aero_wave.IN new file mode 100644 index 0000000000..166a51ae09 --- /dev/null +++ b/ush/nems.configure.cpld_aero_wave.IN @@ -0,0 +1,136 @@ +############################################# +#### NEMS Run-Time Configuration File ##### +############################################# + +# ESMF # + logKindFlag: ESMF_LOGKIND_MULTI + +# EARTH # +EARTH_component_list: MED ATM CHM OCN ICE WAV +EARTH_attributes:: + Verbosity = 0 +:: + +# MED # +MED_model: @[med_model] +MED_petlist_bounds: @[med_petlist_bounds] +:: + +# ATM # +ATM_model: @[atm_model] +ATM_petlist_bounds: @[atm_petlist_bounds] +ATM_attributes:: + Verbosity = 0 + DumpFields = @[DumpFields] + ProfileMemory = false + OverwriteSlice = true +:: + +# CHM # +CHM_model: @[chm_model] +CHM_petlist_bounds: @[chm_petlist_bounds] +CHM_attributes:: + Verbosity = 0 +:: + +# OCN # +OCN_model: @[ocn_model] +OCN_petlist_bounds: @[ocn_petlist_bounds] +OCN_attributes:: + Verbosity = 0 + DumpFields = @[DumpFields] + ProfileMemory = false + OverwriteSlice = true + mesh_ocn = @[MESH_OCN_ICE] +:: + +# ICE # +ICE_model: @[ice_model] +ICE_petlist_bounds: @[ice_petlist_bounds] +ICE_attributes:: + Verbosity = 0 + DumpFields = @[DumpFields] + ProfileMemory = false + OverwriteSlice = true + mesh_ice = @[MESH_OCN_ICE] + stop_n = @[RESTART_N] + stop_option = nhours + stop_ymd = -999 +:: + +# WAV # +WAV_model: @[wav_model] +WAV_petlist_bounds: @[wav_petlist_bounds] +WAV_attributes:: + Verbosity = 0 + OverwriteSlice = false +:: + +# CMEPS warm run sequence +runSeq:: +@@[coupling_interval_slow_sec] + MED med_phases_prep_ocn_avg + MED -> OCN :remapMethod=redist + OCN -> WAV + WAV -> OCN :srcMaskValues=1 + OCN + @@[coupling_interval_fast_sec] + MED med_phases_prep_atm + MED med_phases_prep_ice + MED -> ATM :remapMethod=redist + MED -> ICE :remapMethod=redist + WAV -> ATM :srcMaskValues=1 + ATM -> WAV + ICE -> WAV + ATM phase1 + ATM -> CHM + CHM + CHM -> ATM + ATM phase2 + ICE + WAV + ATM -> MED :remapMethod=redist + MED med_phases_post_atm + ICE -> MED :remapMethod=redist + MED med_phases_post_ice + MED med_phases_prep_ocn_accum + @ + OCN -> MED :remapMethod=redist + MED med_phases_post_ocn + MED med_phases_restart_write +@ +:: + +# CMEPS variables + +DRIVER_attributes:: +:: +MED_attributes:: + ATM_model = @[atm_model] + ICE_model = @[ice_model] + OCN_model = @[ocn_model] + history_n = 0 + history_option = nhours + history_ymd = -999 + coupling_mode = @[CPLMODE] + history_tile_atm = @[ATMTILESIZE] +:: +ALLCOMP_attributes:: + ScalarFieldCount = 2 + ScalarFieldIdxGridNX = 1 + ScalarFieldIdxGridNY = 2 + ScalarFieldName = cpl_scalars + start_type = @[RUNTYPE] + restart_dir = RESTART/ + case_name = ufs.cpld + restart_n = @[RESTART_N] + restart_option = nhours + restart_ymd = -999 + dbug_flag = @[cap_dbug_flag] + use_coldstart = @[use_coldstart] + use_mommesh = @[use_mommesh] + eps_imesh = @[eps_imesh] + stop_n = @[FHMAX] + stop_option = nhours + stop_ymd = -999 +:: diff --git a/ush/nems.configure.cpld_wave.IN b/ush/nems.configure.cpld_wave.IN index 949e3c8199..d99d1c3bf4 100644 --- a/ush/nems.configure.cpld_wave.IN +++ b/ush/nems.configure.cpld_wave.IN @@ -2,6 +2,9 @@ #### NEMS Run-Time Configuration File ##### ############################################# +# ESMF # +logKindFlag: ESMF_LOGKIND_MULTI + # EARTH # EARTH_component_list: MED ATM OCN ICE WAV EARTH_attributes:: diff --git a/ush/nems.configure.leapfrog_atm_wav.IN b/ush/nems.configure.leapfrog_atm_wav.IN index 6229deae2a..5c01c08a4f 100644 --- a/ush/nems.configure.leapfrog_atm_wav.IN +++ b/ush/nems.configure.leapfrog_atm_wav.IN @@ -2,6 +2,9 @@ #### NEMS Run-Time Configuration File ##### ############################################# +# ESMF # + logKindFlag: ESMF_LOGKIND_MULTI + # EARTH # EARTH_component_list: ATM WAV EARTH_attributes:: diff --git a/ush/nems_configure.sh b/ush/nems_configure.sh index e0b3bab05f..d8de1d849d 100755 --- a/ush/nems_configure.sh +++ b/ush/nems_configure.sh @@ -58,7 +58,13 @@ wav_petlist_bounds=${wav_petlist_bounds:-"$(( $ATMPETS+$OCNPETS+$ICEPETS )) $(( chm_petlist_bounds=${chm_petlist_bounds:-"0 $(( $CHMPETS-1 ))"} # Copy the selected template into run directory -cp $SCRIPTDIR/nems.configure.$confignamevarfornems.IN tmp1 +infile="$SCRIPTDIR/nems.configure.$confignamevarfornems.IN" +if [ -s $infile ]; then + cp $infile tmp1 +else + echo "FATAL ERROR: nem.configure template '$infile' does not exist!" + exit 1 +fi sed -i -e "s;@\[med_model\];cmeps;g" tmp1 sed -i -e "s;@\[atm_model\];$ATM_model;g" tmp1 sed -i -e "s;@\[med_petlist_bounds\];$med_petlist_bounds;g" tmp1 @@ -98,7 +104,7 @@ if [ $cplice = .true. ]; then sed -i -e "s;@\[MESH_OCN_ICE\];$MESH_OCN_ICE;g" tmp1 sed -i -e "s;@\[FHMAX\];$FHMAX_GFS;g" tmp1 fi -if [ $cplchem = .true. ]; then +if [ $cplchm = .true. ]; then sed -i -e "s;@\[chm_model\];$CHM_model;g" tmp1 sed -i -e "s;@\[chm_petlist_bounds\];$chm_petlist_bounds;g" tmp1 sed -i -e "s;@\[coupling_interval_fast_sec\];$CPL_FAST;g" tmp1 diff --git a/ush/parsing_model_configure_FV3.sh b/ush/parsing_model_configure_FV3.sh index 94a79c95c5..4c35179e90 100755 --- a/ush/parsing_model_configure_FV3.sh +++ b/ush/parsing_model_configure_FV3.sh @@ -14,7 +14,6 @@ FV3_model_configure(){ rm -f model_configure cat >> model_configure <> model_configure < ice_in < diag_table << EOF @@ -31,22 +34,36 @@ EOF cat $DIAG_TABLE >> diag_table fi +if [ ! -z "${AERO_DIAG_TABLE}" ]; then + cat ${AERO_DIAG_TABLE} >> diag_table +fi + cat $DIAG_TABLE_APPEND >> diag_table +# copy data table $NCP $DATA_TABLE data_table -$NCP $FIELD_TABLE field_table -cat > input.nml < 0 )); then + prec=$( grep -F -n TRACER ${FIELD_TABLE} 2> /dev/null | tail -n ${dnats} | head -1 | cut -d: -f1 ) + prec=${prec:-0} + prec=$(( prec > 0 ? prec - 1 : prec )) + fi + { \ + head -n ${prec} ${FIELD_TABLE} ; \ + cat ${AERO_FIELD_TABLE} ; \ + tail -n $(( nrec - prec )) ${FIELD_TABLE} ; \ + } > field_table + # add non-prognostic tracers from additional table + dnats=$(( dnats + dnats_aero )) +else + $NCP $FIELD_TABLE field_table +fi +cat > input.nml < input.nml <> input.nml << EOF nwat = ${nwat:-2} na_init = $na_init d_ext = 0. - dnats = ${dnats:-0} + dnats = ${dnats} fv_sg_adj = ${fv_sg_adj:-"450"} d2_bg = 0. nord = ${nord:-3} @@ -197,7 +215,7 @@ EOF ltaerosol = ${ltaerosol:-".F."} lradar = ${lradar:-".F."} dt_inner = ${dt_inner:-"40."} - ttendlim = ${ttendlim:-0.005} + ttendlim = ${ttendlim:-"-999"} oz_phys = ${oz_phys:-".false."} oz_phys_2015 = ${oz_phys_2015:-".true."} lsoil_lsm = ${lsoil_lsm:-"4"} @@ -215,6 +233,17 @@ EOF bl_mynn_mixqt = ${bl_mynn_mixqt:="0"} bl_mynn_output = ${bl_mynn_output:="0"} bl_mynn_closure = ${bl_mynn_closure:="2.6"} + do_ugwp = ${do_ugwp:-".false."} + do_tofd = ${do_tofd:-".true."} + gwd_opt = ${gwd_opt:-"2"} + do_ugwp_v0 = ${do_ugwp_v0:-".true."} + do_ugwp_v1 = ${do_ugwp_v1:-".false."} + do_ugwp_v0_orog_only = ${do_ugwp_v0_orog_only:-".false."} + do_ugwp_v0_nst_only = ${do_ugwp_v0_nst_only:-".false."} + do_gsl_drag_ls_bl = ${do_gsl_drag_ls_bl:-".false."} + do_gsl_drag_ss = ${do_gsl_drag_ss:-".true."} + do_gsl_drag_tofd = ${do_gsl_drag_tofd:-".true."} + do_ugwp_v1_orog_only = ${do_ugwp_v1_orog_only:-".false."} min_lakeice = ${min_lakeice:-"0.15"} min_seaice = ${min_seaice:-"0.15"} use_cice_alb = ${use_cice_alb:-".false."} @@ -255,6 +284,38 @@ EOF bl_mynn_edmf_mom = ${bl_mynn_edmf_mom:-"1"} min_lakeice = ${min_lakeice:-"0.15"} min_seaice = ${min_seaice:-"0.15"} +EOF + ;; + FV3_GFS_v17*) + cat >> input.nml << EOF + iovr = ${iovr:-"3"} + ltaerosol = ${ltaerosol:-".false."} + lradar = ${lradar:-".false."} + ttendlim = ${ttendlim:-"-999"} + dt_inner = ${dt_inner:-"$(echo "$DELTIM/2" |bc)"} + oz_phys = ${oz_phys:-".false."} + oz_phys_2015 = ${oz_phys_2015:-".true."} + lsoil_lsm = ${lsoil_lsm:-"4"} + do_mynnedmf = ${do_mynnedmf:-".false."} + do_mynnsfclay = ${do_mynnsfclay:-".false."} + icloud_bl = ${icloud_bl:-"1"} + bl_mynn_edmf = ${bl_mynn_edmf:-"1"} + bl_mynn_tkeadvect = ${bl_mynn_tkeadvect:-".true."} + bl_mynn_edmf_mom = ${bl_mynn_edmf_mom:-"1"} + do_ugwp = ${do_ugwp:-".false."} + do_tofd = ${do_tofd:-".false."} + gwd_opt = ${gwd_opt:-"2"} + do_ugwp_v0 = ${do_ugwp_v0:-".true."} + do_ugwp_v1 = ${do_ugwp_v1:-".false."} + do_ugwp_v0_orog_only = ${do_ugwp_v0_orog_only:-".false."} + do_ugwp_v0_nst_only = ${do_ugwp_v0_nst_only:-".false."} + do_gsl_drag_ls_bl = ${do_gsl_drag_ls_bl:-".false."} + do_gsl_drag_ss = ${do_gsl_drag_ss:-".true."} + do_gsl_drag_tofd = ${do_gsl_drag_tofd:-".true."} + do_ugwp_v1_orog_only = ${do_ugwp_v1_orog_only:-".false."} + min_lakeice = ${min_lakeice:-"0.15"} + min_seaice = ${min_seaice:-"0.15"} + use_cice_alb = ${use_cice_alb:-".false."} EOF ;; *) @@ -319,7 +380,6 @@ cat >> input.nml <> input.nml <> input.nml <> input.nml << EOF &cires_ugwp_nml - knob_ugwp_version = ${knob_ugwp_version:-0} knob_ugwp_solver = ${knob_ugwp_solver:-2} knob_ugwp_source = ${knob_ugwp_source:-1,1,0,0} knob_ugwp_wvspec = ${knob_ugwp_wvspec:-1,25,25,25} @@ -396,27 +448,15 @@ case ${gwd_opt:-"2"} in knob_ugwp_doheat = ${knob_ugwp_doheat:-1} knob_ugwp_dokdis = ${knob_ugwp_dokdis:-1} knob_ugwp_ndx4lh = ${knob_ugwp_ndx4lh:-1} + knob_ugwp_version = ${knob_ugwp_version:-0} launch_level = ${launch_level:-54} - $cires_ugwp_nml / - EOF - ;; - 2) +fi + +if [ $knob_ugwp_version -eq 1 ]; then cat >> input.nml << EOF - gwd_opt = 2 - do_ugwp = .false. - do_ugwp_v0 = .false. - do_ugwp_v1 = .true. - do_tofd = .false. - do_ugwp_v1_orog_only = .false. - do_gsl_drag_ls_bl = ${do_gsl_drag_ls_bl:-".true."} - do_gsl_drag_ss = ${do_gsl_drag_ss:-".true."} - do_gsl_drag_tofd = ${do_gsl_drag_tofd:-".true."} - $gfs_physics_nml -/ &cires_ugwp_nml - knob_ugwp_version = ${knob_ugwp_version:-1} knob_ugwp_solver = ${knob_ugwp_solver:-2} knob_ugwp_source = ${knob_ugwp_source:-1,1,0,0} knob_ugwp_wvspec = ${knob_ugwp_wvspec:-1,25,25,25} @@ -427,7 +467,7 @@ EOF knob_ugwp_doheat = ${knob_ugwp_doheat:-1} knob_ugwp_dokdis = ${knob_ugwp_dokdis:-2} knob_ugwp_ndx4lh = ${knob_ugwp_ndx4lh:-4} - knob_ugwp_palaunch = ${knob_ugwp_palaunch:-275.0e2} + knob_ugwp_palaunch = ${knob_ugwp_palaunch:-275.0e2} knob_ugwp_nslope = ${knob_ugwp_nslope:-1} knob_ugwp_lzmax = ${knob_ugwp_lzmax:-15.750e3} knob_ugwp_lzmin = ${knob_ugwp_lzmin:-0.75e3} @@ -436,45 +476,11 @@ EOF knob_ugwp_tauamp = ${knob_ugwp_tauamp:-3.0e-3} knob_ugwp_lhmet = ${knob_ugwp_lhmet:-200.0e3} knob_ugwp_orosolv = ${knob_ugwp_orosolv:-'pss-1986'} - $cires_ugwp_nml / EOF - ;; - 3) - cat >> input.nml <> input.nml @@ -485,10 +491,10 @@ cat >> input.nml <> input.nml <> input.nml <> input.nml <