diff --git a/.gitmodules b/.gitmodules index 2d1616f6c6..2626856b26 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,96 +1,164 @@ -[submodule "chem_proc"] - path = chem_proc - url = https://github.com/ESCOMP/CHEM_PREPROCESSOR.git +# This is a git submodule file with additional support for +# git-fleximod (https://github.com/ESMCI/git-fleximod) +# +# The additional flags supported by git-fleximod are +# fxtag - the tag associated with the submodule, this tag can be tested for +# consistancy with the submodule hash using git-fleximod status +# the hash can be updated to the tag using git-fleximod update +# +# fxrequired - indicates if a given submodule should be checked out on install +# submoudules can be toplevel or internal and required or optional +# toplevel means that the submodule should only be checked out if the +# module is the toplevel of the git repo (is not a submodule itself) +# internal means that the submodule is needed by the component whether +# the component is toplevel or the submodule of another repo +# required means that the submodule should always be checked out +# optional means that the submodule should only be checked out if the +# optional flag is provided to git-fleximod or the submodule name is +# explicitly listed on the git-fleximod command line. +# +# fxsparse - this is a path to a git sparse checkout file indicating that the +# submodule should be checked out in sparse mode +# +# fxDONOTUSEurl - this field is used by git-fleximod test to insure that the url is pointing +# to the official url of the repo and not to an unofficial fork. +# It is intended for use of github workflows to test commits to protected +# repository branches. +# + +#----------------------------- +# Required CAM externals +#----------------------------- + +[submodule "atmos_phys"] + path = src/atmos_phys + url = https://github.com/ESCOMP/atmospheric_physics + fxtag = atmos_phys0_06_009 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics + +[submodule "camnor_phys"] + path = src/physics/camnor_phys + url = https://github.com/NorESMhub/CAM-Nor-physics + fxtag = camnor_noresm_v0.0.5 fxrequired = AlwaysRequired - fxtag = chem_proc5_0_06 - fxDONOTUSEurl = https://github.com/ESCOMP/CHEM_PREPROCESSOR.git + fxDONOTUSEurl = https://github.com/CAM-Nor-physics.git [submodule "carma"] path = src/physics/carma/base url = https://github.com/ESCOMP/CARMA_base.git - fxrequired = AlwaysRequired - fxtag = carma4_01 - fxDONOTUSEurl = https://github.com/ESCOMP/CARMA_base.git + fxtag = carma4_01 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/ESCOMP/CARMA_base.git + +[submodule "chem_proc"] + path = chem_proc + url = https://github.com/ESCOMP/CHEM_PREPROCESSOR.git + fxtag = chem_proc5_0_06 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/ESCOMP/CHEM_PREPROCESSOR.git + +[submodule "clubb"] + path = src/physics/clubb + url = https://github.com/larson-group/clubb_release + fxtag = clubb_4ncar_20240605_73d60f6_gpufixes_posinf + fxsparse = ../.clubb_sparse_checkout + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/larson-group/clubb_release + +[submodule "cosp2"] + path = src/physics/cosp2/src + url = https://github.com/CFMIP/COSPv2.0 + fxtag = v2.1.4cesm + fxsparse = ../.cosp_sparse_checkout + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/CFMIP/COSPv2.0 + +[submodule "hemco"] + path = src/hemco + url = https://github.com/ESCOMP/HEMCO_CESM.git + fxtag = hemco-cesm2_0_hemco3_9_0 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/ESCOMP/HEMCO_CESM.git + +[submodule "oslo_aero"] + path = src/chemistry/oslo_aero + url = https://github.com/NorESMhub/OSLO_AERO + fxtag = noresm_oslo_aero_v3 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/NorESMhub/OSLO_AERO.git [submodule "pumas"] path = src/physics/pumas url = https://github.com/ESCOMP/PUMAS - fxrequired = AlwaysRequired - fxtag = pumas_cam-release_v1.36 - fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS + fxtag = pumas_cam-release_v1.36 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS [submodule "pumas-frozen"] path = src/physics/pumas-frozen url = https://github.com/ESCOMP/PUMAS - fxrequired = AlwaysRequired - fxtag = pumas_cam-release_v1.17_rename - fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS + fxtag = pumas_cam-release_v1.17_rename + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/ESCOMP/PUMAS + +[submodule "rrtmgp-data"] + path = src/physics/rrtmgp/data + url = https://github.com/earth-system-radiation/rrtmgp-data.git + fxtag = v1.8 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/earth-system-radiation/rrtmgp-data.git + +[submodule "rte-rrtmgp"] + path = src/physics/rrtmgp/ext + url = https://github.com/earth-system-radiation/rte-rrtmgp.git + fxtag = v1.7 + fxrequired = AlwaysRequired + fxDONOTUSEurl = https://github.com/earth-system-radiation/rte-rrtmgp.git + +#----------------------------- +# Optional CAM externals +#----------------------------- [submodule "ali_arms"] path = src/physics/ali_arms url = https://github.com/ESCOMP/ALI-ARMS - fxrequired = AlwaysOptional - fxtag = ALI_ARMS_v1.0.1 - fxDONOTUSEurl = https://github.com/ESCOMP/ALI-ARMS + fxtag = ALI_ARMS_v1.0.1 + fxrequired = AlwaysOptional + fxDONOTUSEurl = https://github.com/ESCOMP/ALI-ARMS -[submodule "atmos_phys"] - path = src/atmos_phys - url = https://github.com/ESCOMP/atmospheric_physics - fxtag = atmos_phys0_02_006 - fxrequired = AlwaysRequired - fxDONOTUSEurl = https://github.com/ESCOMP/atmospheric_physics +[submodule "cloud_j"] + path = src/chemistry/cloud_j + url = https://github.com/geoschem/cloud-j.git + fxtag = 7.7.3 + fxrequired = AlwaysOptional + fxDONOTUSEurl = https://github.com/geoschem/cloud-j.git [submodule "geoschem"] path = src/chemistry/geoschem/geoschem_src url = https://github.com/geoschem/geos-chem.git - fxrequired = AlwaysOptional - fxtag = 14.1.2 - fxDONOTUSEurl = https://github.com/geoschem/geos-chem.git - -[submodule "hemco"] - path = src/hemco - url = https://github.com/ESCOMP/HEMCO_CESM.git - fxtag = hemco-cesm1_2_1_hemco3_6_3_cesm_rme - fxrequired = AlwaysRequired - fxDONOTUSEurl = https://github.com/ESCOMP/HEMCO_CESM.git - -[submodule "rte-rrtmgp"] - path = src/physics/rrtmgp/ext - url = https://github.com/earth-system-radiation/rte-rrtmgp.git - fxrequired = AlwaysRequired - fxtag = v1.7 - fxDONOTUSEurl = https://github.com/earth-system-radiation/rte-rrtmgp.git + fxtag = 14.4.3 + fxrequired = AlwaysOptional + fxDONOTUSEurl = https://github.com/geoschem/geos-chem.git -[submodule "rrtmgp-data"] - path = src/physics/rrtmgp/data - url = https://github.com/earth-system-radiation/rrtmgp-data.git - fxrequired = AlwaysRequired - fxtag = v1.8 - fxDONOTUSEurl = https://github.com/earth-system-radiation/rrtmgp-data.git +[submodule "hetp"] + path = src/chemistry/hetp + url = https://github.com/geoschem/heterogeneous-vectorized-or-parallel.git + fxtag = geoschem_hetp_1.0 + fxrequired = AlwaysOptional + fxDONOTUSEurl = https://github.com/geoschem/heterogeneous-vectorized-or-parallel.git [submodule "mpas"] path = src/dynamics/mpas/dycore url = https://github.com/MPAS-Dev/MPAS-Model.git - fxrequired = AlwaysOptional - fxsparse = ../.mpas_sparse_checkout - fxtag = b8c33daa + fxtag = v8.2.1 + fxsparse = ../.mpas_sparse_checkout + fxrequired = AlwaysOptional fxDONOTUSEurl = https://github.com/MPAS-Dev/MPAS-Model.git -[submodule "cosp2"] - path = src/physics/cosp2/src - url = https://github.com/CFMIP/COSPv2.0 - fxrequired = AlwaysRequired - fxsparse = ../.cosp_sparse_checkout - fxtag = v2.1.4cesm - fxDONOTUSEurl = https://github.com/CFMIP/COSPv2.0 - -[submodule "clubb"] - path = src/physics/clubb - url = https://github.com/larson-group/clubb_release - fxrequired = AlwaysRequired - fxsparse = ../.clubb_sparse_checkout - fxtag = clubb_4ncar_20231115_5406350 - fxDONOTUSEurl = https://github.com/larson-group/clubb_release +#----------------------------- +# CESM libraries +#----------------------------- [submodule "parallelio"] path = libraries/parallelio @@ -149,7 +217,7 @@ fxDONOTUSEurl = https://github.com/ESCOMP/CDEPS.git [submodule "cice6"] path = components/cice url = https://github.com/NorESMhub/NorESM_CICE -fxtag = cesm_cice6_5_0_20240702_noresm_v1 +fxtag = cesm_cice6_5_0_20240702_noresm_v2 fxrequired = ToplevelRequired fxDONOTUSEurl = https://github.com/NorESMhub/NorESM_CICE @@ -180,4 +248,3 @@ url = https://github.com/ESCOMP/MOSART fxtag = mosart1.1.02 fxrequired = ToplevelRequired fxDONOTUSEurl = https://github.com/ESCOMP/MOSART - diff --git a/bld/build-namelist b/bld/build-namelist index 739e9cab13..f417ad606b 100755 --- a/bld/build-namelist +++ b/bld/build-namelist @@ -509,8 +509,17 @@ if ($phys_mode_flags > 1) { my $simple_phys = 0; if ($adia_mode or $ideal_mode) { $simple_phys = 1; } +# If running either a simple physics or an aquaplanet configuration, the +# nitrogen deposition data is not used. These files are set in buildnml and +# can't be overridden via user_nl_cam. So provide an override here. +if ($simple_phys or $aqua_mode) { + $nl->set_variable_value('ndep_stream_nl', 'stream_ndep_data_filename', '" "'); + $nl->set_variable_value('ndep_stream_nl', 'stream_ndep_mesh_filename', '" "'); +} + # Single column mode my $scam = $cfg->get('scam'); +my $scam_iop = $cfg->get('scam_iop'); # Coupling interval # The default is for CAM to couple to the surface components every CAM timestep. @@ -574,6 +583,14 @@ if( $chem =~ /_oslo/){ print " ==> Using Oslo aerosols: PRESCRIBED AERO = FALSE (not yet implemented) \n" } +# CTSM Dust emissions scheme +my $soil_erod_atm = $FALSE; +add_default($nl, 'dust_emis_method'); +if ( $nl->get_value('dust_emis_method') =~ /Zender/ ) { + add_default($nl, 'zender_soil_erod_source'); + if ($nl->get_value('zender_soil_erod_source') =~ /atm/) {$soil_erod_atm = $TRUE;} +} + # Chemistry deposition lists if ( ($chem ne 'none') or ( $prog_species ) ){ my $chem_proc_src = $cfg->get('chem_proc_src'); @@ -596,8 +613,9 @@ if ( ($chem ne 'none') or ( $prog_species ) ){ ($aer_wetdep_list =~ /ncl/i || $aer_wetdep_list =~ /sslt/i)) { $prescribe_aerosols = $FALSE; } - - add_default($nl, 'aer_wetdep_list', 'val'=>$aer_wetdep_list ); + if ($chem !~ /_mam/) { + add_default($nl, 'aer_wetdep_list', 'val'=>$aer_wetdep_list ); + } if (!($chem =~ /_mam/)) { if (!defined $nl->get_value('aer_sol_facti')) { @@ -620,11 +638,17 @@ if ( ($chem ne 'none') or ( $prog_species ) ){ } } if ($chem) { - # drydep_srf_file is only needed for prognostic MAM when the grid is unstructured. - # structured grids can do interpolation on the fly. - if ($chem =~ /_mam/ and ($dyn =~ /se|fv3|mpas/)) { - add_default($nl, 'drydep_srf_file'); + + # drydep_srf_file is not needed for simple physics or aquaplanet + if ( !($simple_phys or $aqua_mode) ) { + + # drydep_srf_file is only needed for prognostic MAM when the grid is unstructured. + # structured grids can do interpolation on the fly. + if ($chem =~ /_mam/ and ($dyn =~ /se|fv3|mpas/)) { + add_default($nl, 'drydep_srf_file'); + } } + add_default($nl, 'dep_data_file'); } @@ -746,7 +770,7 @@ if ($rad_pkg =~ /rrtmg/ or $chem =~ /waccm/) { elsif (!$simple_phys) { if ($chem eq 'none' and !($prog_species =~ /SO4/) ) { # Spectral solar data is needed for photolysis - # this preserves the default cam3 and cam4 configurations which do not have chemistry + # this preserves the default cam4 configuration which does not have chemistry unless (defined $nl->get_value('solar_irrad_data_file')) { add_default($nl, 'solar_const'); } @@ -825,17 +849,8 @@ if ($test_tracer_num > 0) { if ($cfg->get('age_of_air_trcs')) { add_default($nl, 'aoa_tracers_flag', 'val'=>'.true.'); } -# If phys option is "cam3" then turn on the CAM3 prescribed ozone and aerosols -if ($phys eq 'cam3' and !$aqua_mode) { - add_default($nl, 'cam3_ozone_data_on', 'val'=>'.true.'); - add_default($nl, 'cam3_aero_data_on', 'val'=>'.true.'); -} - # Defaults for radiatively active constituents -my $cam3_ozone_data = $FALSE; -my $cam3_aero_data = $FALSE; - my $moz_ozone_data = $FALSE; if (!$rad_prog_ozone) { $moz_ozone_data = $TRUE; @@ -846,24 +861,6 @@ if (!($rad_prog_ocarb) or !($rad_prog_bcarb) or !($rad_prog_sulf) or !($rad_prog $moz_aero_data = $TRUE; } -# CAM3 prescribed ozone only by request -if (defined $nl->get_value('cam3_ozone_data_on') and - $nl->get_value('cam3_ozone_data_on') =~ /$TRUE/io) { - add_default($nl, 'bndtvo'); - $cam3_ozone_data = $TRUE; - $moz_ozone_data = $FALSE; -} - -# CAM3 prescribed aerosols only by request -if (defined $nl->get_value('cam3_aero_data_on') and - $nl->get_value('cam3_aero_data_on') =~ /$TRUE/io) { - - # CAM3 aerosol mass climatology dataset (horizontal resolution dependent) - add_default($nl, 'bndtvaer'); - $cam3_aero_data = $TRUE; - $moz_aero_data = $FALSE; -} - if ($chem_rad_passive or $aqua_mode) { add_default($nl, 'atm_dep_flux', 'val'=>'.false.'); } @@ -912,8 +909,6 @@ if ($rad_prog_ozone) { add_default($nl, 'prescribed_ozone_type'); add_default($nl, 'prescribed_ozone_cycle_yr'); } -} elsif ($cam3_ozone_data =~ /$TRUE/io) { - $radval .= ",'N:O3:O3'"; } else { die "ERROR: can not set ozone rad_climate specification\n"; } @@ -957,7 +952,9 @@ else { my $aer_model = 'bam'; if ($prescribed_aero_model eq 'modal' or $chem =~ /_mam/) {$aer_model = 'mam';} -if ($chem =~ /_mam_oslo/) {$aer_model = 'oslo';} +if ($chem =~ /_mam_oslo/) { + $aer_model = 'oslo'; +} if ($aer_model eq 'oslo') { @@ -1106,9 +1103,6 @@ if ($aer_model eq 'oslo') { } elsif ($moz_aero_data =~ /$TRUE/io) { push(@aero_names, "sulf"); push(@aerosources, "N:" ); - } elsif ($cam3_aero_data =~ /$TRUE/io) { - push(@aero_names, "cam3_sul" ); - push(@aerosources, "N:" ); } else { die "ERROR: can not set sulf rad_climate specification\n"; } @@ -1119,9 +1113,6 @@ if ($aer_model eq 'oslo') { } elsif ($moz_aero_data =~ /$TRUE/io) { push(@aero_names, "dust1", "dust2", "dust3", "dust4"); push(@aerosources, "N:", "N:", "N:", "N:" ); - } elsif ($cam3_aero_data =~ /$TRUE/io) { - push(@aero_names, "cam3_dust1", "cam3_dust2", "cam3_dust3", "cam3_dust4" ); - push(@aerosources, "N:", "N:", "N:", "N:" ); } else { die "ERROR: can not set dust rad_climate specification\n"; } @@ -1132,9 +1123,6 @@ if ($aer_model eq 'oslo') { } elsif ($moz_aero_data =~ /$TRUE/io) { push(@aero_names, "bcar1", "bcar2"); push(@aerosources, "N:", "N:" ); - } elsif ($cam3_aero_data =~ /$TRUE/io) { - push(@aero_names, "cam3_bcpho", "cam3_bcphi"); - push(@aerosources, "N:", "N:" ); } else { die "ERROR: can not set black carbon rad_climate specification\n"; } @@ -1145,9 +1133,6 @@ if ($aer_model eq 'oslo') { } elsif ($moz_aero_data =~ /$TRUE/io) { push(@aero_names, "ocar1", "ocar2"); push(@aerosources, "N:", "N:" ); - } elsif ($cam3_aero_data =~ /$TRUE/io) { - push(@aero_names, "cam3_ocpho", "cam3_ocphi"); - push(@aerosources, "N:", "N:" ); } else { die "ERROR: can not set organic carbon rad_climate specification\n"; } @@ -1168,9 +1153,6 @@ if ($aer_model eq 'oslo') { push(@aero_names, "SSLTA", "SSLTC"); push(@aerosources, "N:", "N:"); } - } elsif ($cam3_aero_data =~ /$TRUE/io ) { - push(@aero_names, "cam3_ssam", "cam3_sscm"); - push(@aerosources, "N:", "N:" ); } else { die "ERROR: can not set sslt rad_climate specification\n"; } @@ -1191,7 +1173,7 @@ if ( $prescribed_aero_model ne 'none' ) { # Prescribed aerosol deposition fluxes. # Not needed if in aquaplanet mode. - if ( (($moz_aero_data =~ /$TRUE/io) or ($cam3_aero_data =~ /$TRUE/io)) and !$aqua_mode ) { + if ( $moz_aero_data =~ /$TRUE/io and !$aqua_mode ) { # If user has not set aerodep_flx_file, then use defaults unless (defined $nl->get_value('aerodep_flx_file')) { my @settings = ('aerodep_flx_datapath', 'aerodep_flx_file', 'aerodep_flx_type', @@ -1577,7 +1559,7 @@ elsif ($carma eq 'tholin') { # turn on stratospheric aerosol forcings in CAM6 configurations my $chem_has_ocs = chem_has_species($cfg, 'OCS'); -if (($phys =~ /cam6/ or $phys =~ /cam_dev/) and $chem =~ /_mam/ and $chem ne 'trop_mam_oslo') { +if (($phys =~ /cam6/ or $phys =~ /cam7/) and $chem =~ /_mam/ and $chem ne 'trop_mam_oslo') { # turn on volc forcings in cam6 -- prognostic or prescribed if ( $chem_has_ocs ) { # turn on prognostic stratospheric aerosols @@ -1607,9 +1589,9 @@ if (chem_has_species($cfg, 'O3S')) { # stratospheric aerosols are needed for heterogeneous chemistry as well as radiation feedback my $het_chem = chem_has_species($cfg, 'N2O5'); -# Default for CAM6, is that prescribed_strataero_3modes is TRUE, but allow user to override +# Default for cam6 and cam7 is that prescribed_strataero_3modes is TRUE, but allow user to override my $prescribed_strataero_3modes = $FALSE; -if ($phys =~ /cam6/ or $phys =~ /cam_dev/) { +if ($phys =~ /cam6/ or $phys =~ /cam7/) { $prescribed_strataero_3modes = $TRUE; } if (defined $nl->get_value('prescribed_strataero_3modes')) { @@ -1797,7 +1779,7 @@ if ( $prog_species ) { add_default($nl, 'ghg_chem', 'val'=>".true."); add_default($nl, 'bndtvg'); } - if ( $prog_species =~ /DST/ ) { + if ( $prog_species =~ /DST/ and $soil_erod_atm =~ /$TRUE/) { add_default($nl, 'soil_erod_file' ); } @@ -1865,7 +1847,7 @@ my $megan_emis = defined $nl->get_value('megan_specifier'); if ( $megan_emis ) { add_default($nl, 'megan_factors_file'); } # Tropospheric full chemistry options -if (($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) and ($phys !~ /cam6/) and ($phys !~ /cam_dev/)) { +if (($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) and ($phys !~ /cam6/) and ($phys !~ /cam7/)) { # Surface emission datasets: my %verhash; @@ -2069,10 +2051,13 @@ if (($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) if ($chem =~ /geoschem/) { - my $val; + # Input directories + add_default($nl, 'geoschem_chem_inputs'); + add_default($nl, 'geoschem_aeropt_inputs'); + add_default($nl, 'geoschem_photol_inputs'); # Species with fixed lower boundary - $val = "'CCL4','CH4','N2O','CO2','CFC11','CFC12','CH3BR','CH3CCL3','CH3CL'" + my $val = "'CCL4','CH4','N2O','CO2','CFC11','CFC12','CH3BR','CH3CCL3','CH3CL'" .",'HCFC22','CFC114','CFC115','HCFC141B','HCFC142B','CH2BR2','CHBR3','H2402'"; if ($chem_has_ocs) { @@ -2087,9 +2072,11 @@ if ($chem =~ /geoschem/) { add_default($nl, 'flbc_cycle_yr', 'val'=>'2000'); } - my @files; # Datasets - @files = ( 'soil_erod_file', 'flbc_file' ); + my @files = ( 'flbc_file' ); + if ($soil_erod_atm =~ /$TRUE/) { + @files = ( @files, 'soil_erod_file' ); + } foreach my $file (@files) { add_default($nl, $file); } @@ -2128,12 +2115,15 @@ if ($chem =~ /trop_mozart/ or $chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) { my @files; # Datasets if ($chem =~ /trop_strat/ or $chem =~ /waccm_tsmlt/) { - @files = ( 'soil_erod_file', 'flbc_file', + @files = ( 'flbc_file', 'xs_coef_file','xs_short_file','xs_long_file', 'rsf_file' ); } else { - @files = ( 'soil_erod_file', 'flbc_file', + @files = ( 'flbc_file', 'xs_coef_file','xs_short_file','xs_long_file', 'rsf_file', 'exo_coldens_file', 'sulf_file' ); } + if ($soil_erod_atm =~ /$TRUE/) { + @files = ( @files, 'soil_erod_file' ); + } foreach my $file (@files) { add_default($nl, $file); } @@ -2231,15 +2221,17 @@ if ($chem eq 'trop_mam3') { add_default($nl, 'flbc_list', 'val'=>"' '"); # Datasets - my @files = ('soil_erod_file', - 'xs_long_file', 'rsf_file', 'exo_coldens_file' ); + my @files = ( 'xs_long_file', 'rsf_file', 'exo_coldens_file' ); + if ($soil_erod_atm =~ /$TRUE/) { + @files = ( @files, 'soil_erod_file' ); + } foreach my $file (@files) { add_default($nl, $file); } } # CMIP6 emissions -if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam_dev/)) { +if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam7/)) { # OASISS (ocean) DMS emissions if (!$aqua_mode and !$scam) { @@ -2317,14 +2309,8 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam # for troposphere gas-phase chemistry if ($chem =~ /trop_strat/ or $chem =~ /_tsmlt/) { %species = (%species, - 'BENZENE_an_srf_file' => 'BENZENE', - 'BENZENE_bb_srf_file' => 'BENZENE', 'BIGALK_an_srf_file' => 'BIGALK', 'BIGALK_bb_srf_file' => 'BIGALK', - 'BIGENE_an_srf_file' => 'BIGENE', - 'BIGENE_bb_srf_file' => 'BIGENE', - 'C2H2_an_srf_file' => 'C2H2', - 'C2H2_bb_srf_file' => 'C2H2', 'C2H4_an_srf_file' => 'C2H4', 'C2H4_bb_srf_file' => 'C2H4', 'C2H4_ot_srf_file' => 'C2H4', @@ -2341,8 +2327,6 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam 'C3H8_ot_srf_file' => 'C3H8', 'CH3CHO_an_srf_file' => 'CH3CHO', 'CH3CHO_bb_srf_file' => 'CH3CHO', - 'CH3CN_an_srf_file' => 'CH3CN', - 'CH3CN_bb_srf_file' => 'CH3CN', 'CH3COCH3_an_srf_file' => 'CH3COCH3', 'CH3COCH3_bb_srf_file' => 'CH3COCH3', 'CH3COCHO_bb_srf_file' => 'CH3COCHO', @@ -2351,25 +2335,39 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam 'CH3OH_an_srf_file' => 'CH3OH', 'CH3OH_bb_srf_file' => 'CH3OH', 'GLYALD_bb_srf_file' => 'GLYALD', + 'ISOP_bb_srf_file' => 'ISOP', + 'NH3_an_srf_file' => 'NH3', + 'NH3_bb_srf_file' => 'NH3', + 'NH3_ot_srf_file' => 'NH3', + 'E90_srf_file' => 'E90' ); + if ($chem !~ /_ts4/) { + %species = (%species, + 'BENZENE_an_srf_file' => 'BENZENE', + 'BENZENE_bb_srf_file' => 'BENZENE', + 'BIGENE_an_srf_file' => 'BIGENE', + 'BIGENE_bb_srf_file' => 'BIGENE', + 'C2H2_an_srf_file' => 'C2H2', + 'C2H2_bb_srf_file' => 'C2H2', + 'CH3CN_an_srf_file' => 'CH3CN', + 'CH3CN_bb_srf_file' => 'CH3CN', 'HCN_an_srf_file' => 'HCN', 'HCN_bb_srf_file' => 'HCN', 'HCOOH_an_srf_file' => 'HCOOH', 'HCOOH_bb_srf_file' => 'HCOOH', - 'ISOP_bb_srf_file' => 'ISOP', 'MEK_an_srf_file' => 'MEK', 'MEK_bb_srf_file' => 'MEK', - 'NH3_an_srf_file' => 'NH3', - 'NH3_bb_srf_file' => 'NH3', - 'NH3_ot_srf_file' => 'NH3', 'TOLUENE_an_srf_file' => 'TOLUENE', 'TOLUENE_bb_srf_file' => 'TOLUENE', 'XYLENES_an_srf_file' => 'XYLENES', - 'XYLENES_bb_srf_file' => 'XYLENES', - 'E90_srf_file' => 'E90' ); + 'XYLENES_bb_srf_file' => 'XYLENES' ) ; + } if ($chem =~ /trop_strat_mam4_ts2/ or $chem =~ /trop_strat_mam5_ts2/) { %species = (%species, 'MTERP_bb_srf_file' => 'APIN') ; - } else { + } elsif ($chem =~ /_ts4/) { + %species = (%species, + 'MTERP_bb_srf_file' => 'TERP') ; + } else { %species = (%species, 'MTERP_bb_srf_file' => 'MTERP' ); } @@ -2391,7 +2389,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam 'IVOC_bb_srf_file' => 'IVOCbb', 'SVOC_an_srf_file' => 'SVOCff', 'SVOC_bb_srf_file' => 'SVOCbb' ); - } else { + } elsif ($chem !~ /_ts4/) { %species = (%species, 'IVOC_an_srf_file' => 'IVOC', 'IVOC_bb_srf_file' => 'IVOC', @@ -2400,7 +2398,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam } } - # Note, this section might need to be modified if cam_dev values + # Note, this section might need to be modified if cam7 values # diverge from cam6 values my %verhash = ('ver'=>'cam6'); my $first = 1; @@ -2416,7 +2414,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam $first = 0; } } - if ($chem eq 'trop_mam4' or $chem eq 'waccm_sc_mam4'or $chem eq 'ghg_mam4') { + if ($chem eq 'trop_mam4' or $chem eq 'waccm_sc_mam4' or $chem eq 'ghg_mam4' or $chem =~ /_ts4/) { # SOA yields (used for the interactive emissions) have been calculated based on the VBS yields in CAM-chem. # Duseong S. Jo, et al. to be submitted to GMD, 2023 -- see https://github.com/ESCOMP/CAM/pull/727 discussion for additional detail. my %soae_fctrs = ('BENZENE_an_srf_file' => '2.5592D0', @@ -2521,7 +2519,7 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam } # MEGAN emissions - if (($chem eq 'trop_mam4' or $chem eq 'waccm_sc_mam4' or $chem eq 'ghg_mam4') and !$aqua_mode and !$scam){ + if (($chem eq 'trop_mam4' or $chem eq 'waccm_sc_mam4' or $chem eq 'ghg_mam4') and !$aqua_mode){ my $val = "'SOAE = 0.5954*isoprene + 5.1004*(carene_3 + pinene_a + thujene_a + bornene +'," . "' terpineol_4 + terpineol_a + terpinyl_ACT_a + myrtenal + sabinene + pinene_b + camphene +'," . "' fenchene_a + limonene + phellandrene_a + terpinene_a + terpinene_g + terpinolene +'," @@ -2626,6 +2624,38 @@ if (($chem =~ /_mam4/ or $chem =~ /_mam5/) and ($phys =~ /cam6/ or $phys =~ /cam add_default($nl, 'megan_factors_file'); add_default($nl, 'megan_mapped_emisfctrs', 'val'=>'.false.'); } + if ($chem =~ /trop_strat_mam5_ts4/) { + my $val = "'ISOP = isoprene'," + . "'TERP = carene_3 + pinene_a + thujene_a + bornene + terpineol_4 + terpineol_a + terpinyl_ACT_a +'," + . "' myrtenal + sabinene + pinene_b + camphene + fenchene_a + limonene + phellandrene_a + terpinene_a +'," + . "' terpinene_g + terpinolene + phellandrene_b + linalool + ionone_b + geranyl_acetone + neryl_acetone +'," + . "' jasmone + verbenene + ipsenol + myrcene + ocimene_t_b + ocimene_al + ocimene_c_b + 2met_nonatriene +'," + . "' farnescene_a + caryophyllene_b + acoradiene + aromadendrene + bergamotene_a + bergamotene_b +'," + . "' bisabolene_a + bisabolene_b + bourbonene_b + cadinene_d + cadinene_g + cedrene_a + copaene_a +'," + . "' cubebene_a + cubebene_b + elemene_b + farnescene_b + germacrene_B + germacrene_D + gurjunene_b +'," + . "' humulene_a + humulene_g + isolongifolene + longifolene + longipinene + muurolene_a + muurolene_g +'," + . "' selinene_b + selinene_d + nerolidol_c + nerolidol_t'," + . "'BIGALK = tricyclene + camphor + fenchone + thujone_a + thujone_b + cineole_1_8 + borneol + bornyl_ACT +'," + . "' cedrol + decanal + heptanal + heptane + hexane + nonanal + octanal + octanol + oxopentanal + pentane +'," + . "' hexanal + hexanol_1 + pentanal + heptanone', 'CH3OH = methanol'," + . "'CH3COCH3 = acetone', 'CH3CHO = acetaldehyde', 'C2H5OH = ethanol'," + . "'CH2O = formaldehyde', 'CH3COOH = acetic_acid', 'CO = carbon_monoxide'," + . "'C2H6 = ethane', 'C2H4 = ethene', 'C3H8 = propane', 'C3H6 = propene'," + . "'SOAE = 0.5954*isoprene + 5.1004*(carene_3 + pinene_a + thujene_a + bornene +'," + . "' terpineol_4 + terpineol_a + terpinyl_ACT_a + myrtenal + sabinene + pinene_b + camphene +'," + . "' fenchene_a + limonene + phellandrene_a + terpinene_a + terpinene_g + terpinolene +'," + . "' phellandrene_b + linalool + ionone_b + geranyl_acetone + neryl_acetone + jasmone +'," + . "' verbenene + ipsenol + myrcene + ocimene_t_b + ocimene_al + ocimene_c_b + 2met_nonatriene) + '," + . "' 12.3942*(farnescene_a + caryophyllene_b + acoradiene + aromadendrene + bergamotene_a +'," + . "' bergamotene_b + bisabolene_a + bisabolene_b + bourbonene_b + cadinene_d + cadinene_g +'," + . "' cedrene_a + copaene_a + cubebene_a + cubebene_b + elemene_b + farnescene_b +'," + . "' germacrene_B + germacrene_D + gurjunene_b + humulene_a + humulene_g + isolongifolene +'," + . "' longifolene + longipinene + muurolene_a + muurolene_g + selinene_b + selinene_d +'," + . "' nerolidol_c + nerolidol_t)'"; + add_default($nl, 'megan_specifier', 'val'=>$val); + add_default($nl, 'megan_factors_file'); + add_default($nl, 'megan_mapped_emisfctrs', 'val'=>'.false.'); + } if ($chem =~ /trop_strat_mam4_ts2/ or $chem =~ /trop_strat_mam5_ts2/) { my $val = "'ISOP = isoprene'," . "'APIN = pinene_a + myrtenal'," @@ -2698,8 +2728,10 @@ if (($chem eq 'trop_mam4') or ($chem eq 'waccm_sc_mam4') or ($chem eq 'ghg_mam4' add_default($nl, 'flbc_list', 'val'=>"' '"); # Datasets - my @files = ('soil_erod_file', - 'xs_long_file', 'rsf_file', 'exo_coldens_file' ); + my @files = ('xs_long_file', 'rsf_file', 'exo_coldens_file' ); + if ($soil_erod_atm =~ /$TRUE/) { + @files = ( @files, 'soil_erod_file' ); + } foreach my $file (@files) { add_default($nl, $file); } @@ -2711,16 +2743,16 @@ if ($chem eq 'trop_mam_oslo' ) { # Surface emission datasets: %species = (); %species = (%species, - 'DMS -> ' => 'dms_oslo_emis_file', - 'SO2 -> ' => 'so2_oslo_emis_file', - 'BC_AX -> ' => 'bc_ax_oslo_emis_file', - 'BC_N -> ' => 'bc_n_oslo_emis_file', - 'BC_NI -> ' => 'bc_ni_oslo_emis_file', - 'SO4_PR -> ' => 'so4_pr_oslo_emis_file', - 'OM_NI -> ' => 'om_ni_oslo_emis_file', - 'monoterp -> ' => 'monoterp_oslo_emis_file', - 'isoprene -> ' => 'isoprene_oslo_emis_file', - ); + 'DMS -> ' => 'dms_oslo_emis_file', + 'SO2 -> ' => 'so2_oslo_emis_file', + 'BC_AX -> ' => 'bc_ax_oslo_emis_file', + 'BC_N -> ' => 'bc_n_oslo_emis_file', + 'BC_NI -> ' => 'bc_ni_oslo_emis_file', + 'SO4_PR -> ' => 'so4_pr_oslo_emis_file', + 'OM_NI -> ' => 'om_ni_oslo_emis_file', + 'monoterp -> ' => 'monoterp_oslo_emis_file', + 'isoprene -> ' => 'isoprene_oslo_emis_file', + ); my $first = 1; my $pre = ""; @@ -2770,8 +2802,8 @@ if ($chem eq 'trop_mam_oslo' ) { # Prescribed species add_default($nl, 'tracer_cnst_specifier', 'val'=>"'O3','OH','NO3','HO2'"); unless (defined $nl->get_value('tracer_cnst_type')) { - add_default($nl, 'tracer_cnst_type', 'ver'=>'fixed_ox'); - add_default($nl, 'tracer_cnst_cycle_yr','ver'=>'fixed_ox'); + add_default($nl, 'tracer_cnst_type', 'ver'=>'fixed_ox'); + add_default($nl, 'tracer_cnst_cycle_yr','ver'=>'fixed_ox'); } my @files = ('tracer_cnst_datapath', 'tracer_cnst_file', 'tracer_cnst_filelist'); @@ -2783,8 +2815,10 @@ if ($chem eq 'trop_mam_oslo' ) { add_default($nl, 'flbc_list', 'val'=>"' '"); # Datasets - my @files = ('soil_erod_file', - 'xs_long_file', 'rsf_file', 'exo_coldens_file' ); + my @files = ('xs_long_file', 'rsf_file', 'exo_coldens_file' ); + if ($soil_erod_atm =~ /$TRUE/) { + @files = ( @files, 'soil_erod_file' ); + } foreach my $file (@files) { add_default($nl, $file); } @@ -2872,8 +2906,10 @@ if ($chem eq 'trop_mam7') { add_default($nl, 'flbc_list', 'val'=>"' '"); # Datasets - my @files = ('soil_erod_file', - 'xs_long_file', 'rsf_file', 'exo_coldens_file' ); + my @files = ('xs_long_file', 'rsf_file', 'exo_coldens_file' ); + if ($soil_erod_atm =~ /$TRUE/) { + @files = ( @files, 'soil_erod_file' ); + } foreach my $file (@files) { add_default($nl, $file); } @@ -2932,8 +2968,10 @@ if ($chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/) { 'photon_file', 'electron_file', 'igrf_geomag_coefs_file', 'euvac_file', 'solar_parms_data_file', 'depvel_lnd_file', - 'xs_coef_file', 'xs_short_file','xs_long_file', 'rsf_file', - 'soil_erod_file' ); + 'xs_coef_file', 'xs_short_file','xs_long_file', 'rsf_file' ); + if ($soil_erod_atm =~ /$TRUE/) { + @files = ( @files, 'soil_erod_file' ); + } if (!$waccmx) { @files = (@files, 'tgcm_ubc_file', 'snoe_ubc_file' ); } @@ -3197,6 +3235,7 @@ if ($waccmx) { add_default($nl,'ionos_xport_nsplit'); add_default($nl,'steady_state_ion_elec_temp', 'val'=>'.false.'); add_default($nl,'oplus_ring_polar_filter'); + add_default($nl,'rxn_rate_sums'); } # Chemistry options @@ -3263,17 +3302,18 @@ if (($chem ne 'none') and ($chem ne 'terminator') and !($chem =~ /geoschem/)) { # Deep convection scheme add_default($nl, 'deep_scheme'); +my $deep_scheme = $nl->get_value('deep_scheme'); # Aerosol convective processes -if (($phys =~ /cam6/ or $phys =~ /cam_dev/) and $nl->get_value('deep_scheme') =~ /ZM/) { +if (($phys =~ /cam6/ or $phys =~ /cam7/) and $deep_scheme =~ /ZM/) { add_default($nl, 'convproc_do_aer', 'val'=>'.true.'); add_default($nl, 'convproc_do_evaprain_atonce', 'val'=>'.true.'); add_default($nl, 'convproc_pom_spechygro', 'val'=>'0.2D0'); add_default($nl, 'convproc_wup_max', 'val'=>'4.0D0'); } -# cam_dev specific namelists -if ($phys =~ /cam_dev/ and $nl->get_value('deep_scheme') =~ /ZM/) { +# cam7 specific namelists +if ($phys =~ /cam7/ and $deep_scheme =~ /ZM/) { add_default($nl, 'zmconv_parcel_pbl', 'val'=>'.true.'); } else { add_default($nl, 'zmconv_parcel_pbl', 'val'=>'.false.'); @@ -3326,8 +3366,8 @@ if ($cfg->get('microphys') =~ /^mg/) { # namelist options for pumas tag release_v1.22 or later - # (currently only in the cam_dev physics package) - if ($phys =~ /cam_dev/) { + # (currently only in the cam7 physics package) + if ($phys =~ /cam7/) { add_default($nl, 'micro_mg_warm_rain'); add_default($nl, 'micro_mg_accre_sees_auto'); add_default($nl, 'micro_mg_vtrms_factor'); @@ -3344,7 +3384,7 @@ if ($cfg->get('microphys') =~ /^mg/) { }else { # For CESM2, the decision was made to set micro_do_sb_physics to false - # This variable is replaced with micro_mg_warm_rain in cam_dev runs + # This variable is replaced with micro_mg_warm_rain in cam7 runs add_default($nl, 'micro_do_sb_physics', 'val'=>'.false.'); } @@ -3360,13 +3400,13 @@ if ($cfg->get('microphys') =~ /^mg/) { $micro_mg_dcs = '390.D-6'; # default for SIHLS } elsif ($hgrid =~ /1.9x2.5/ and $phys eq 'cam6') { - $micro_mg_dcs = '200.D-6'; # default for FV 2-deg + $micro_mg_dcs = '200.D-6'; } elsif ($phys eq 'cam6') { - $micro_mg_dcs = '500.D-6'; # default for cam6 + $micro_mg_dcs = '500.D-6'; } - elsif ($phys eq 'cam_dev') { - $micro_mg_dcs = '500.D-6'; # default for cam_dev + elsif ($phys eq 'cam7') { + $micro_mg_dcs = '500.D-6'; } } @@ -3472,6 +3512,12 @@ if ($use_subcol_microp =~ /$TRUE/io) { } # CLUBB_SGS +my $do_clubb_sgs = $nl->get_value('do_clubb_sgs'); +if (defined $do_clubb_sgs) { + die "CAM Namelist ERROR: User may not specify the value of do_clubb_sgs.\n". + "This variable is set by build-namelist based on information\n". + "from the configure cache file.\n"; +} add_default($nl, 'do_clubb_sgs'); my $clubb_sgs = $nl->get_value('do_clubb_sgs'); if ($clubb_sgs =~ /$TRUE/io) { @@ -3640,13 +3686,6 @@ if ($clubb_sgs =~ /$TRUE/io) { add_default($nl, 'do_hb_above_clubb'); } -# Force exit if running cam_dev and CLUBB is off -if ($phys eq 'cam_dev') { - if ($clubb_sgs =~ /$FALSE/io) { - die "$ProgName - ERROR: If running cam_dev physics, do_clubb_sgs must be .true.\n"; - } -} - # Tuning for wet scavenging of modal aerosols if ($chem =~ /_mam/) { add_default($nl, 'sol_facti_cloud_borne'); @@ -3790,19 +3829,15 @@ if ($cfg->get('microphys') eq 'rk') { } # Dust emissions tuning factor -# If dust is prognostic ==> supply the tuning factor -if ( length($nl->get_value('soil_erod_file'))>0 ) { - # check whether turbulent mountain stress parameterization is on - if ($nl->get_value('do_tms') =~ /$TRUE/io) { - add_default($nl, 'dust_emis_fact', 'tms'=>'1'); +# check whether turbulent mountain stress parameterization is on +if ($nl->get_value('do_tms') =~ /$TRUE/io) { + add_default($nl, 'dust_emis_fact', 'tms'=>'1'); +} else { + if ($chem =~ /trop_strat/ or $chem =~ /geoschem/ or $chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /trop_mozart/) { + add_default($nl, 'dust_emis_fact', 'ver'=>'chem'); } else { - if ($chem =~ /trop_strat/ or $chem =~ /geoschem/ or $chem =~ /waccm_ma/ or $chem =~ /waccm_tsmlt/ or $chem =~ /trop_mozart/) { - add_default($nl, 'dust_emis_fact', 'ver'=>'chem'); - } - else { - add_default($nl, 'dust_emis_fact'); - } + add_default($nl, 'dust_emis_fact'); } } if (chem_has_species($cfg, 'NO')) { @@ -3834,7 +3869,7 @@ if ($chem =~ /_mam(\d)/) { # By default, orographic waves are always on if (!$simple_phys) { - if ($phys =~ /cam6/ or $phys =~ /cam_dev/) { + if ($phys =~ /cam6/ or $phys =~ /cam7/) { add_default($nl, 'use_gw_oro', 'val'=>'.false.'); @@ -3851,6 +3886,10 @@ if (!$simple_phys) { add_default($nl, 'use_gw_rdg_beta', 'val'=>'.false.'); } + if ($phys =~ /cam7/) { + add_default($nl, 'use_gw_movmtn_pbl', 'val'=>'.true.'); + } + add_default($nl, 'use_gw_rdg_gamma' , 'val'=>'.false.'); add_default($nl, 'use_gw_front_igw' , 'val'=>'.false.'); add_default($nl, 'use_gw_convect_sh', 'val'=>'.false.'); @@ -3864,12 +3903,13 @@ if (!$simple_phys) { add_default($nl, 'gw_rdg_do_divstream' , 'val'=>'.true.'); } +my $use_gw_convect_dp = '.false.'; if ($waccm_phys or - (!$simple_phys and $cfg->get('nlev') >= 60)) { + (!$simple_phys and $cfg->get('model_top') eq 'mt')) { # Spectral gravity waves are part of WACCM physics, and also drive the # QBO in the high vertical resolution configuration. add_default($nl, 'use_gw_front' , 'val'=>'.true.'); - add_default($nl, 'use_gw_convect_dp', 'val'=>'.true.'); + $use_gw_convect_dp = '.true.'; my $hdepth_scaling = '0.25D0' ; my $qbo_forcing = '.false.'; if ($dyn eq 'fv') { @@ -3888,15 +3928,19 @@ if ($waccm_phys or } add_default($nl, 'gw_qbo_hdepth_scaling', 'val'=>$hdepth_scaling); add_default($nl, 'gw_top_taper'); -} elsif ($phys =~ /cam_dev/) { - # cam_dev settings for nlev<60 (Other cam_dev set above) +} elsif ($phys =~ /cam7/) { + # cam7 settings for model_top = 'lt' add_default($nl, 'use_gw_front' , 'val'=>'.true.'); - add_default($nl, 'use_gw_convect_dp', 'val'=>'.true.'); + $use_gw_convect_dp = '.true.'; add_default($nl, 'gw_qbo_hdepth_scaling', 'val'=>'1.0D0'); } else { add_default($nl, 'use_gw_front' , 'val'=>'.false.'); - add_default($nl, 'use_gw_convect_dp', 'val'=>'.false.'); } +# Check if deep convection scheme used. If not set use_gw_convect_dp=.false. +if ($deep_scheme =~ /off/) { + $use_gw_convect_dp = '.false.'; +} +add_default($nl, 'use_gw_convect_dp', 'val'=>$use_gw_convect_dp); # We need a lot of logic to use these below, so make flags for them. my $do_gw_oro = ($nl->get_value('use_gw_oro') =~ /$TRUE/io); @@ -3904,15 +3948,12 @@ my $do_gw_front = ($nl->get_value('use_gw_front') =~ /$TRUE/io); my $do_gw_front_igw = ($nl->get_value('use_gw_front_igw') =~ /$TRUE/io); my $do_gw_convect_dp = ($nl->get_value('use_gw_convect_dp') =~ /$TRUE/io); my $do_gw_convect_sh = ($nl->get_value('use_gw_convect_sh') =~ /$TRUE/io); +my $do_gw_movmtn_pbl = ($nl->get_value('use_gw_movmtn_pbl') =~ /$TRUE/io); my $do_gw_rdg_beta = ($nl->get_value('use_gw_rdg_beta') =~ /$TRUE/io); my $do_gw_rdg_gamma = ($nl->get_value('use_gw_rdg_gamma') =~ /$TRUE/io); my $do_divstream = ($nl->get_value('gw_rdg_do_divstream') =~ /$TRUE/io); -if (!$simple_phys) { - # GW option used only for backwards compatibility with CAM3. - add_default($nl, 'fcrit2', 'val'=>'1.0'); -} # Mid-scale wavelength settings. if ($do_gw_front or $do_gw_convect_dp or $do_gw_convect_sh) { add_default($nl, 'pgwv'); @@ -3961,6 +4002,11 @@ if ($do_gw_convect_sh) { add_default($nl, 'effgw_beres_sh'); } +if ($do_gw_movmtn_pbl) { + add_default($nl, 'gw_drag_file_mm'); + add_default($nl, 'alpha_gw_movmtn'); +} + if ($do_gw_rdg_beta) { if ($use_topo_file =~ m/$FALSE/io) { die "$ProgName - ERROR: beta ridge scheme requires data from a topo file.\n"; @@ -4025,7 +4071,7 @@ if ((not $waccm_phys) and ($do_gw_front or $do_gw_front_igw or $do_gw_convect_dp or $do_gw_convect_sh )) { add_default($nl, 'tau_0_ubc', 'val'=>'.true.'); -} elsif ($phys =~ /cam_dev/) { +} elsif ($phys =~ /cam7/) { add_default($nl, 'tau_0_ubc', 'val'=>'.true.'); } elsif (!$simple_phys) { add_default($nl, 'tau_0_ubc', 'val'=>'.false.'); @@ -4156,6 +4202,30 @@ if ($dyn eq 'sld') { # Single column model if ($cfg->get('scam')) { add_default($nl, 'iopfile'); + add_default($nl, 'nhtfrq'); + add_default($nl, 'mfilt'); + add_default($nl, 'scm_use_obs_uv'); + add_default($nl, 'scale_dry_air_mass'); + add_default($nl, 'scm_relaxation'); + add_default($nl, 'scm_relax_bot_p'); + add_default($nl, 'scm_relax_top_p'); + add_default($nl, 'scm_relax_linear'); + add_default($nl, 'scm_relax_tau_bot_sec'); + add_default($nl, 'scm_relax_tau_top_sec'); + if ($chem =~ /_mam/) { + add_default($nl, 'scm_relax_fincl'); + } + if ($scam_iop) { + add_default($nl, 'iopfile'); + } + if ($scam_iop eq 'SAS') { + add_default($nl, 'use_gw_front'); + add_default($nl, 'scm_backfill_iop_w_init'); + } + if ($scam_iop eq 'twp06') { + add_default($nl, 'iradsw'); + add_default($nl, 'iradlw'); + } } # CAM generates IOP file for SCAM @@ -4477,7 +4547,7 @@ my %nl_group = (); foreach my $name (@nl_groups) { $nl_group{$name} = ''; } # Dry deposition, MEGAN VOC emis and ozone namelists -@comp_groups = qw(drydep_inparm megan_emis_nl fire_emis_nl carma_inparm ndep_inparm ozone_coupling_nl lightning_coupling_nl); +@comp_groups = qw(drydep_inparm megan_emis_nl fire_emis_nl carma_inparm ndep_inparm ozone_coupling_nl lightning_coupling_nl dust_emis_inparm); $outfile = "$opts{'dir'}/drv_flds_in"; $nl->write($outfile, 'groups'=>\@comp_groups); @@ -5199,8 +5269,8 @@ sub check_snapshot_settings { if ($chem ne 'none') { push (@validList_bc, ("'chem_timestep_tend'")); } - } elsif ($phys =~ /cam_dev/) { - # CAM_DEV physpkg + } elsif ($phys =~ /cam7/) { + # cam7 physpkg push(@validList_ac, ("'chem_emissions'", "'clubb_tend_cam'", "'microp_section'")); diff --git a/bld/config_files/definition.xml b/bld/config_files/definition.xml index 164ac87f92..f146ddec7c 100644 --- a/bld/config_files/definition.xml +++ b/bld/config_files/definition.xml @@ -57,8 +57,8 @@ Option to turn on waccmx thermosphere/ionosphere extension: 0 => no, 1 => yes Ionosphere model used in WACCMX. - -Physics package: cam3, cam4, cam5, cam6, cam_dev, held_suarez, adiabatic, kessler, tj2016, grayrad, spcam_sam1mom, spcam_m2005. + +Physics package: cam3, cam4, cam5, cam6, cam7, held_suarez, adiabatic, kessler, tj2016, grayrad, spcam_sam1mom, spcam_m2005. Switch to turn on Harmonized Emissions Component (HEMCO) for chemistry: 0 => no, 1 => yes. @@ -153,9 +153,13 @@ Modifications that allow perturbation growth testing: 0=off, 1=on. Configure CAM for single column mode: 0=off, 1=on. This option only supported for the Eulerian dycore. + +Single column IOP +Supported for Eulerian and SE dycores. + Configure CAM to generate an IOP file that can be used to drive SCAM: 0=no, 1=yes. -This option only supported for the Eulerian dycore. +This option supported for the Eulerian and SE dycores. Horizontal grid specifier. The recognized values depend on diff --git a/bld/configure b/bld/configure index e084c395cd..661fa036b2 100755 --- a/bld/configure +++ b/bld/configure @@ -65,7 +65,7 @@ OPTIONS Default: none. -chem Build CAM with specified prognostic chemistry package [ none | ghg_mam4 | terminator | trop_mam3 | trop_mam4 | trop_mam7 | trop_mam_oslo | trop_mozart | trop_strat_mam4_ts2 | - trop_strat_mam4_vbs | trop_strat_mam4_vbsext | trop_strat_mam5_ts2 | trop_strat_mam5_vbs | + trop_strat_mam4_vbs | trop_strat_mam4_vbsext | trop_strat_mam5_ts2 | trop_strat_mam5_ts4 | trop_strat_mam5_vbs | trop_strat_mam5_vbsext | waccm_ma | waccm_mad | waccm_ma_sulfur | waccm_sc | waccm_sc_mam4 | waccm_mad_mam4 | waccm_ma_mam4 | waccm_tsmlt_mam4 | waccm_tsmlt_mam4_vbsext | waccm_mad_mam5 | waccm_ma_mam5 | waccm_tsmlt_mam5 | waccm_tsmlt_mam5_vbsext | geoschem_mam4 ]. @@ -73,7 +73,7 @@ OPTIONS Default: trop_mam5 for cam7 Default: trop_mam4 for cam6 Default: trop_mam3 for cam5. - -[no]clubb_sgs Switch on [off] CLUBB_SGS. Default: on for cam6, otherwise off. + -[no]clubb_sgs Switch on [off] CLUBB_SGS. Default: on for cam6 and cam7, otherwise off. -clubb_opts Comma separated list of CLUBB options to turn on/off. By default they are all off. Current option is: clubb_do_adv (Advect CLUBB moments) -co2_cycle This option modifies the CAM configuration by @@ -82,7 +82,7 @@ OPTIONS -cppdefs A string of user specified CPP defines. Appended to Makefile defaults. E.g. -cppdefs '-DVAR1 -DVAR2' -cpl Coupling framework [mct | nuopc]. Default: mct. - -dyn Dynamical core option: [eul | fv | se ]. Default: fv. + -dyn Dynamical core option: [eul | fv | se ]. Default: se. -edit_chem_mech Invokes CAMCHEM_EDITOR to allow the user to edit the chemistry mechanism file -hgrid Specify horizontal grid. Use nlatxnlon for spectral grids; dlatxdlon for fv grids (dlat and dlon are the grid cell size @@ -93,7 +93,7 @@ OPTIONS -max_n_rad_cnst Maximum number of constituents that are either radiatively active, or in any single diagnostic list for the radiation. -microphys Specify the microphysics option [mg1 | mg2 | mg3| rk | pumas]. - -model_top Specify the model_top option [ lt | mt ]. + -model_top Specify the model_top option for cam7 [ lt | mt ]. -nadv Set total number of advected species to . -nadv_tt Set number of advected test tracers . -nlev Set number of levels to . @@ -101,9 +101,9 @@ OPTIONS -pbl Specify the PBL option [uw | hb | hbr]. -pcols Set maximum number of columns in a chunk to . -pergro Switch enables building CAM for perturbation growth tests. - -phys Physics option [cam3 | cam4 | cam5 | cam6 | cam_dev | + -phys Physics option [cam4 | cam5 | cam6 | cam7 | held_suarez | adiabatic | kessler | tj2016 | grayrad | - spcam_sam1mom | spcam_m2005]. Default: cam6 + spcam_sam1mom | spcam_m2005]. Default: cam7 -prog_species Comma-separate list of prognostic mozart species packages. Currently available: DST,SSLT,SO4,GHG,OC,BC,CARBON16 -psubcols Maximum number of sub-columns in a run - set to 1 if not using sub-columns (default) @@ -128,7 +128,10 @@ OPTIONS -camiop Configure CAM to generate an IOP file that can be used to drive SCAM. This switch only works with the Eulerian dycore. - -scam Compiles model in single column mode. Only works with Eulerian dycore. + -scam Compiles model in single column mode and configures for iop + [ arm95 | arm97 | atex | bomex | cgilsS11 | cgilsS12 | cgilsS6 | dycomsRF01 | + dycomsRF02 | gateIII | mpace | rico | sparticus | togaII | twp06 | SAS | camfrc ]. + Default: arm97 CAM parallelization: @@ -175,6 +178,7 @@ OPTIONS -ldflags A string of user specified load options. Appended to Makefile defaults. -linker User specified linker. Overrides Makefile default of \$(FC). + -mpas_libdir Directory containing MPAS library. -mct_libdir Directory containing MCT library. Default: build the library from source in a subdirectory of \$cam_bld. -mpi_inc Directory containing MPI include files. @@ -211,6 +215,7 @@ EOF # command was issued from the current working directory. (my $ProgName = $0) =~ s!(.*)/!!; # name of this script +$ProgName = "CAM $ProgName"; # distinquish from other components configure my $ProgDir = $1; # name of directory containing this script -- may be a # relative or absolute path, or null if the script is in # the user's PATH @@ -275,6 +280,7 @@ GetOptions( "mct_libdir=s" => \$opts{'mct_libdir'}, "microphys=s" => \$opts{'microphys'}, "model_top=s" => \$opts{'model_top'}, + "mpas_libdir=s" => \$opts{'mpas_libdir'}, "mpi_inc=s" => \$opts{'mpi_inc'}, "mpi_lib=s" => \$opts{'mpi_lib'}, "nadv=s" => \$opts{'nadv'}, @@ -297,7 +303,7 @@ GetOptions( "psubcols=s" => \$opts{'psubcols'}, "rad=s" => \$opts{'rad'}, "offline_drv=s" => \$opts{'offline_drv'}, - "scam" => \$opts{'scam'}, + "scam=s" => \$opts{'scam'}, "silhs" => \$opts{'silhs'}, "s|silent" => \$opts{'silent'}, "smp!" => \$opts{'smp'}, @@ -535,34 +541,28 @@ if ($print>=2) { print "Coupling framework: $cpl$eol"; } #----------------------------------------------------------------------------------------------- # Physics package -# -# The default physics package is cam6. Physics packages >=cam5 use chemistry packages -# that include modal aerosols, i.e., the -chem value matches /_mam/. If the chem_pkg -# name doesn't match /_mam/ then set the default physics package to cam4. -my $phys_pkg = 'cam6'; -if (defined $opts{'chem'} and $opts{'chem'} !~ /_mam/) { - $phys_pkg = 'cam4'; -} -elsif (defined $opts{'waccmx'}) { - $phys_pkg = 'cam4'; -} -# user override +my $phys_pkg = 'not_set'; + +# There is no default physics package. It is always specified by the CAM component part +# of a compset longname. Add check that -phys has been set. + if (defined $opts{'phys'}) { $phys_pkg = lc($opts{'phys'}); +} else { + die "$ProgName ERROR: the -phys option must be set"; } # Special configuration for CAM-Nor options -# Currently, each CAM-Nor selection only works with the CAM6 or CAM_DEV -# ESCOMP/CAM physics suites +# Currently, each CAM-Nor selection only works with CAM7 my $camnor = 0; # user or compset override is only way to turn on this feature if (defined $opts{'camnor'}) { $camnor = $opts{'camnor'}; } # Check supported physics suite -if ($camnor && $phys_pkg ne 'cam_dev') { - die "ERROR: CAM-Nor (-camnor) is only available for CAM6 and cam_dev.$eol"; +if ($camnor && $phys_pkg ne 'cam7') { + die "ERROR: CAM-Nor (-camnor) is only available for CAM6 and cam7.$eol"; } # Add to the config object. @@ -586,7 +586,7 @@ if ($phys_pkg =~ m/^adiabatic$|^held_suarez$|^kessler$|^tj2016$|^grayrad$/) { #----------------------------------------------------------------------------------------------- # Chemistry package -my $chem_pkg = 'trop_mam4'; +my $chem_pkg = 'not_set'; # defaults based on physics package if ($simple_phys or $phys_pkg =~ m/^cam[34]$/ or $phys_pkg eq 'spcam_sam1mom') { @@ -598,6 +598,12 @@ elsif ($camnor) { elsif ($phys_pkg eq 'cam5' or $phys_pkg eq 'spcam_m2005') { $chem_pkg = 'trop_mam3'; } +elsif ($phys_pkg eq 'cam6') { + $chem_pkg = 'trop_mam4'; +} +elsif ($phys_pkg eq 'cam7') { + $chem_pkg = 'ghg_mam4'; +} # some overrides for special configurations if (defined $opts{'prog_species'}) { @@ -615,14 +621,13 @@ if (defined $opts{'chem'}) { # If the user has specified a simple physics package... if ($simple_phys) { - # the only valid chemistry options are 'none' and 'terminator' if (($chem_pkg ne 'none') and ($chem_pkg ne 'terminator')) { die "configure ERROR: -phys=$phys_pkg -chem=$chem_pkg\n". " -chem can only be set to 'none' or 'terminator'.\n"; } } - elsif ($phys_pkg =~ m/^cam3$|^cam4$|^spcam_sam1mom$/) { - # The modal aerosols are not valid with cam3 or cam4 physics + elsif ($phys_pkg =~ m/^cam4$|^spcam_sam1mom$/) { + # The modal aerosols are not valid with cam4 physics if ($chem_pkg =~ /_mam/) { die "configure ERROR: -phys=$phys_pkg -chem=$chem_pkg\n". " -chem cannot be set to a modal aerosol option.\n"; @@ -659,6 +664,11 @@ if (defined $opts{'dyn'}) { } my $dyn_pkg = $cfg_ref->get('dyn'); + +if ($dyn_pkg eq 'se' and $smp eq 'ON') { + die "CAM configure: ERROR: The SE dycore does not currently work with threading on. $eol"; +} + if ($print>=2) { print "Dynamics package: $dyn_pkg$eol"; } $cfg_ref->set('analytic_ic', (defined $opts{'analytic_ic'}) ? $opts{'analytic_ic'} : 0); @@ -695,18 +705,6 @@ my $max_n_rad_cnst = $cfg_ref->get('max_n_rad_cnst'); if ($print>=2) { print "Maximum radiatively active tracers: $max_n_rad_cnst$eol"; } -#----------------------------------------------------------------------------------------------- -# model_top - not set by default -my $model_top = 'none'; -$cfg_ref->set('model_top', $model_top); - -# user override -if (defined $opts{'model_top'}) { - $cfg_ref->set('model_top', $opts{'model_top'}); -} -if ($print>=2) { print "model_top: $model_top$eol"; } - - #----------------------------------------------------------------------------------------------- # waccm physics my $waccm_phys = 0; @@ -724,7 +722,7 @@ $waccm_phys = $cfg_ref->get('waccm_phys'); if ($print>=2) { print "WACCM physics: $waccm_phys$eol"; } -# WACCM physics only runs with FV and SEdycores +# WACCM physics only runs with FV and SE dycores if ( ($waccm_phys) and ($dyn_pkg eq 'eul') ) { die <<"EOF"; ** ERROR: WACCM physics does not run with the Eulerian spectral dycore. @@ -844,7 +842,7 @@ elsif ($phys_pkg eq 'cam5') { elsif ($phys_pkg eq 'cam6') { $microphys_pkg = 'mg2'; } -elsif ($phys_pkg eq 'cam_dev') { +elsif ($phys_pkg eq 'cam7') { $microphys_pkg = 'mg3'; } elsif ($phys_pkg eq 'spcam_sam1mom') { @@ -893,7 +891,7 @@ if ($print>=2) { print "CARMA microphysical model: $carma_pkg$eol"; } #----------------------------------------------------------------------------------------------- # CLUBB my $clubb_sgs = 0; -if ($phys_pkg eq 'cam6' or $phys_pkg eq 'cam_dev') { +if ($phys_pkg eq 'cam6' or $phys_pkg eq 'cam7') { $clubb_sgs = 1; } @@ -904,7 +902,14 @@ if (defined $opts{'clubb_sgs'}) { # consistency checks... -# CLUBB_SGS only works with mg or PUMAS microphysics +# cam7 only works with CLUBB_SGS +if (($phys_pkg eq 'cam7') and not ($clubb_sgs )) { + die <<"EOF"; +** ERROR: CLUBB_SGS must be enabled for cam7 physics. +EOF +} + +# CLUBB_SGS only works with mg microphysics if ($clubb_sgs and not ($microphys_pkg =~ m/^mg/ )) { die <<"EOF"; ** ERROR: microphysics package set to: $microphys_pkg @@ -976,13 +981,15 @@ if ($phys_pkg =~ /cam[34]/) { elsif ($phys_pkg =~ /cam5/) { $macrophys_pkg = 'park'; } -elsif ($phys_pkg =~ /cam6/ and $clubb_sgs) { - $macrophys_pkg = 'clubb_sgs'; -} -elsif ($phys_pkg =~ /cam6/ and !$clubb_sgs) { - $macrophys_pkg = 'park'; +elsif ($phys_pkg =~ /cam6/) { + if ($clubb_sgs) { + $macrophys_pkg = 'clubb_sgs'; + } + else { + $macrophys_pkg = 'park'; + } } -elsif ($phys_pkg =~ /cam_dev/ and $clubb_sgs) { +elsif ($phys_pkg =~ /cam7/ and $clubb_sgs) { $macrophys_pkg = 'clubb_sgs'; } elsif ($phys_pkg eq 'spcam_sam1mom') { @@ -1017,13 +1024,15 @@ if ($phys_pkg =~ m/^cam[34]$/) { elsif ($phys_pkg =~ /cam5/) { $pbl_pkg = 'uw'; } -elsif ($phys_pkg =~ /cam6/ and $clubb_sgs) { - $pbl_pkg = 'clubb_sgs'; -} -elsif ($phys_pkg =~ /cam6/ and !$clubb_sgs) { - $pbl_pkg = 'uw'; +elsif ($phys_pkg =~ /cam6/) { + if ($clubb_sgs) { + $pbl_pkg = 'clubb_sgs'; + } + else { + $pbl_pkg = 'uw'; + } } -elsif ($phys_pkg =~ /cam_dev/ and $clubb_sgs) { +elsif ($phys_pkg =~ /cam7/ and $clubb_sgs) { $pbl_pkg = 'clubb_sgs'; } elsif ($phys_pkg eq 'spcam_sam1mom') { @@ -1043,7 +1052,7 @@ if (defined $opts{'pbl'}) { # consistency checks... -# UW PBL only works with mg or PUMAS microphysics +# UW PBL only works with mg microphysics if ($pbl_pkg =~ m/uw/i) { unless ($microphys_pkg =~ /^mg/) { die <<"EOF"; @@ -1083,10 +1092,10 @@ if ($unicon and $print>=2) { print "Using UNICON scheme.$eol"; } # Set default my $rad_pkg = 'none'; -if ($phys_pkg =~ m/^cam[34]$|^spcam_sam1mom$/) { +if ($phys_pkg =~ m/cam4|spcam_sam1mom/) { $rad_pkg = 'camrt'; } -elsif ($phys_pkg =~ m/^cam[56]$|^cam_dev$|^spcam_m2005$/) { +elsif ($phys_pkg =~ m/cam5|cam6|cam7|spcam_m2005/) { $rad_pkg = 'rrtmg'; } # Allow the user to override the default via the commandline. @@ -1114,12 +1123,6 @@ if ($rad_pkg eq 'camrt') { } elsif ($rad_pkg =~ m/rrtmg/) { - # The rrtmg package doesn't work with the CAM3 prescribed aerosols - if ($phys_pkg eq 'cam3') { - die "configure ERROR: radiation package: $rad_pkg is not compatible\n". - " with physics package $phys_pkg\n"; - } - # RRTMGP not currently working with CARMA if ($rad_pkg eq 'rrtmgp' and $carma_pkg ne 'none') { die "configure ERROR: The CARMA microphysics package does not currently work with RRTMGP\n"; @@ -1137,8 +1140,8 @@ if (defined $opts{'cosp'}) { } my $cosp = $cfg_ref->get('cosp'); -# cosp is only implemented with the cam5 and cam6 physics packages -if ($cosp and ($phys_pkg ne 'cam5' and $phys_pkg ne 'cam6' and $phys_pkg ne 'cam_dev')) { +# cosp is only implemented with the cam5, cam6, and cam7 physics packages +if ($cosp and ($phys_pkg ne 'cam5' and $phys_pkg ne 'cam6' and $phys_pkg ne 'cam7')) { die "configure ERROR: cosp not implemented for the $phys_pkg physics package \n"; } @@ -1159,7 +1162,7 @@ if ($phys_pkg eq 'spcam_sam1mom') { } if ($phys_pkg eq 'spcam_m2005') { - if ($rad_pkg ne 'rrtmg') { + if ($rad_pkg !~ m/rrtmg/) { die "configure ERROR: radiation package: $rad_pkg is not compatible\n". " with m2005 -- it should be rrtmg\n"; } @@ -1222,15 +1225,25 @@ if ($print>=2) { print "Perturbation growth testing: $pergro$eol"; } #----------------------------------------------------------------------------------------------- # Single column mode + +# Set default iop +my $scam_iop; + +# Allow the user to override the default via the commandline. +if (defined $opts{'scam'}) { + $scam_iop = lc($opts{'scam'}); + $cfg_ref->set('scam_iop', $scam_iop); +} + if (defined $opts{'scam'}) { $cfg_ref->set('scam', 1); } my $scam = $cfg_ref->get('scam') ? "ON" : "OFF"; -# The only dycore supported in SCAM mode is Eulerian -if ($scam eq 'ON' and $dyn_pkg ne 'eul') { +# The only dycores supported in SCAM mode are Eulerian and Spectral Elements +if ($scam eq 'ON' and !($dyn_pkg eq 'eul' or $dyn_pkg eq 'se')) { die <<"EOF"; -** ERROR: SCAM mode only works with Eulerian dycore. +** ERROR: SCAM mode only works with Eulerian or SE dycores. ** Requested dycore is: $dyn_pkg EOF } @@ -1244,10 +1257,10 @@ if (defined $opts{'camiop'}) { } my $camiop = $cfg_ref->get('camiop') ? "ON" : "OFF"; -# The only dycore supported in CAMIOP mode is Eulerian -if ($camiop eq 'ON' and $dyn_pkg ne 'eul') { +# The only dycores supported in SCAM mode are Eulerian and Spectral Elements +if ($camiop eq 'ON' and !($dyn_pkg eq 'eul' or $dyn_pkg eq 'se')) { die <<"EOF"; -** ERROR: CAMIOP mode only works with Eulerian dycore. +** ERROR: CAMIOP mode only works with the Eulerian or Spectral Element dycores. ** Requested dycore is: $dyn_pkg EOF } @@ -1267,6 +1280,9 @@ elsif ($dyn_pkg eq 'eul') { elsif ($dyn_pkg eq 'se') { $hgrid = 'ne16np4'; } +elsif ($dyn_pkg eq 'mpas') { + $hgrid = 'mpasa480'; +} $cfg_ref->set('hgrid', $hgrid); # User override. @@ -1318,6 +1334,24 @@ EOF if ($print>=2) { print "Maximum number of sub-columns per column: $psubcols$eol"; } +#----------------------------------------------------------------------------------------------- +# model_top -- Introduced in cam7 to provide a way to specify the model top +# independently of the number of model layers. + +# Set default +my $model_top = 'none'; +$cfg_ref->set('model_top', $model_top); + +# user override +if (defined $opts{'model_top'} and $opts{'model_top'} ne 'none') { + if ($phys_pkg eq 'cam7') { + $cfg_ref->set('model_top', $opts{'model_top'}); + } else { + die "configure ERROR: model_top=$opts{'model_top'} is only implemented for cam7 physics"; + } +} +if ($print>=2) { print "model_top: $model_top$eol"; } + #----------------------------------------------------------------------------------------------- # Number of vertical levels my $nlev = 0; @@ -1326,7 +1360,7 @@ my $nlev = 0; if ($waccmx) { if ($phys_pkg eq 'cam6') { $nlev = 130; - } elsif ($phys_pkg eq 'cam_dev') { + } elsif ($phys_pkg eq 'cam7') { $nlev = 130; } else { $nlev = 126; @@ -1340,7 +1374,7 @@ elsif ($chem_pkg =~ /waccm_/) { $nlev = 70; } } -elsif ($phys_pkg eq 'cam_dev') { +elsif ($phys_pkg eq 'cam7') { $nlev = 32; } elsif ($phys_pkg eq 'cam6') { @@ -1352,9 +1386,6 @@ elsif ($phys_pkg eq 'cam5' or $phys_pkg eq 'spcam_m2005') { elsif ($phys_pkg eq 'cam4' or $phys_pkg eq 'spcam_sam1mom') { $nlev = 26; } -elsif ($phys_pkg eq 'cam3') { - $nlev = 26; -} else { # This will be used for Held-Suarez and other 'simple' physics # We may change this to 32 once IC files are available. @@ -1437,17 +1468,17 @@ if ($chem_pkg =~ '_mam3') { } elsif ($chem_pkg =~ '_mam7') { $chem_cppdefs = ' -DMODAL_AERO -DMODAL_AERO_7MODE '; } elsif ($chem_pkg =~ '_oslo') { - $chem_cppdefs = ' -DOSLO_AERO'; + # Add MODAL_AERO_4MODE so that modal_aero_coag.F90 will compile + $chem_cppdefs = ' -DOSLO_AERO -DMODAL_AERO_4MODE'; } # Customize GEOS-Chem advected species and chemistry CPP definitions if ($chem_pkg =~ 'geoschem') { - $chem_cppdefs .= ' -DEXTERNAL_GRID -DEXTERNAL_FORCING '; + $chem_cppdefs .= ' -DEXTERNAL_GRID -DEXTERNAL_FORCING -DMODEL_CESM -DMODEL_GEOSCHEM'; if ($chem_pkg =~ '_mam4') { - $chem_nadv = 267; # includes GC advected species (233), CO2 (1), and MAM aerosols (33) + $chem_nadv = 269; # includes all GEOS-Chem advected species, CO2, and MAM aerosols } } - # CARMA sectional microphysics # # New CARMA models need to define the number of advected constituents. @@ -1599,7 +1630,7 @@ else { if ($print>=2 and $ttrac_nadv) { print "Advected constituents added by test tracer package: $ttrac_nadv$eol"; } if ($age_of_air_trcs eq "ON") { - $nadv += 4; + $nadv += 3; if ($print>=2) { print "Advected constituents added by the age of air tracer package: 4$eol"; } } @@ -1717,7 +1748,7 @@ elsif ($fc =~ /nvfor/) { $fc_type = 'nvhpc'; } # User override for Fortran compiler type if (defined $opts{'fc_type'}) { $fc_type = $opts{'fc_type'}; } -if ($fc_type == "intel") {$fc_type = 'intel'; } +if ($fc_type =~ /intel/) {$fc_type = 'intel'; } if ($fc_type) { $cfg_ref->set('fc_type', $fc_type); if ($print>=2) { print "Fortran compiler type: $fc_type$eol"; } @@ -2132,7 +2163,7 @@ sub write_filepath # CAM-Nor-physics has precedence over everything except SourceMods and oslo-aero # Only active in NF or NB compsets if ($camnor) { - if ($phys_pkg eq 'cam_dev') { + if ($phys_pkg eq 'cam7') { print $fh "$camsrcdir/src/physics/camnor_phys/physics\n"; } else { print $fh "$camsrcdir/src/physics/camnor_phys/physics_cam6\n"; @@ -2147,19 +2178,20 @@ sub write_filepath print $fh "$camsrcdir/src/unit_drivers\n"; print $fh "$camsrcdir/src/unit_drivers/${offline_drv}\n"; - if ($phys_pkg eq 'cam_dev') { - print $fh "$camsrcdir/src/physics/cam_dev\n"; + if ($phys_pkg eq 'cam7') { + print $fh "$camsrcdir/src/physics/cam7\n"; } if ($simple_phys) { print $fh "$camsrcdir/src/physics/simple\n"; - print $fh "$camsrcdir/src/atmos_phys/kessler\n"; - print $fh "$camsrcdir/src/atmos_phys/held_suarez\n"; + print $fh "$camsrcdir/src/atmos_phys/schemes/kessler\n"; + print $fh "$camsrcdir/src/atmos_phys/schemes/held_suarez\n"; + print $fh "$camsrcdir/src/atmos_phys/schemes/tj2016\n"; } # Weak scaling fix. This has to come before physics/cam and before dycores # It also has to come before utils (which is already near the end). - if ($dyn eq 'se') { + if ($dyn eq 'se' or $dyn eq 'mpas') { print $fh "$camsrcdir/src/infrastructure\n"; } @@ -2179,22 +2211,23 @@ sub write_filepath if ($chem_src_dir) { print $fh "$chem_src_dir\n"; } - if ($chem !~/_oslo/) { - # GEOS-Chem must be prior to Mozart - if ($chem_pkg =~ 'geoschem') { - print $fh "$chem_src_dir/geoschem_src/GeosCore\n"; - print $fh "$chem_src_dir/geoschem_src/GeosUtil\n"; - print $fh "$chem_src_dir/geoschem_src/Headers\n"; - print $fh "$chem_src_dir/geoschem_src/ISORROPIA\n"; - print $fh "$chem_src_dir/geoschem_src/KPP/fullchem\n"; - print $fh "$camsrcdir/src/chemistry/pp_none\n"; - } - if ($chem =~ /_mam/) { - print $fh "$camsrcdir/src/chemistry/modal_aero\n"; - } else { - print $fh "$camsrcdir/src/chemistry/bulk_aero\n"; - } + # GEOS-Chem and dependencies; GEOS-Chem must be prior to Mozart + if ($chem_pkg =~ 'geoschem') { + print $fh "$camsrcdir/src/chemistry/cloud_j/src/Core\n"; + print $fh "$camsrcdir/src/chemistry/hetp/src/Core\n"; + print $fh "$chem_src_dir/geoschem_src/GeosCore\n"; + print $fh "$chem_src_dir/geoschem_src/GeosUtil\n"; + print $fh "$chem_src_dir/geoschem_src/Headers\n"; + print $fh "$chem_src_dir/geoschem_src/ISORROPIA\n"; + print $fh "$chem_src_dir/geoschem_src/KPP/fullchem\n"; + print $fh "$camsrcdir/src/chemistry/pp_none\n"; + } + + if ($chem =~ /_mam/) { + print $fh "$camsrcdir/src/chemistry/modal_aero\n"; + } else { + print $fh "$camsrcdir/src/chemistry/bulk_aero\n"; } print $fh "$camsrcdir/src/chemistry/aerosol\n"; @@ -2206,9 +2239,9 @@ sub write_filepath } if ($waccm_phys) { print $fh "$camsrcdir/src/physics/waccm\n"; - print $fh "$camsrcdir/src/physics/ali_arms\n"; - print $fh "$camsrcdir/src/physics/ali_arms/subs\n"; - print $fh "$camsrcdir/src/physics/ali_arms/include\n"; + print $fh "$camsrcdir/src/physics/ali_arms\n"; + print $fh "$camsrcdir/src/physics/ali_arms/subs\n"; + print $fh "$camsrcdir/src/physics/ali_arms/include\n"; } print $fh "$camsrcdir/src/ionosphere\n"; @@ -2227,7 +2260,6 @@ sub write_filepath print $fh "$camsrcdir/src/hemco/HEMCO/src/Extensions\n"; print $fh "$camsrcdir/src/hemco/HEMCO/src/Interfaces/Shared\n"; - print $fh "$camsrcdir/src/chemistry/utils\n"; if ($rad eq 'rrtmg') { @@ -2259,7 +2291,7 @@ sub write_filepath print $fh "$camsrcdir/src/physics/clubb/src/SILHS\n"; } - if ($phys_pkg eq 'cam_dev') { + if ($phys_pkg eq 'cam7') { print $fh "$camsrcdir/src/physics/pumas\n"; } else { print $fh "$camsrcdir/src/physics/pumas-frozen\n"; @@ -2295,7 +2327,10 @@ sub write_filepath print $fh "$camsrcdir/src/physics/cam\n"; #Add the CCPP'ized subdirectories - print $fh "$camsrcdir/src/atmos_phys/zhang_mcfarlane\n"; + print $fh "$camsrcdir/src/atmos_phys/schemes/tropopause_find\n"; + print $fh "$camsrcdir/src/atmos_phys/schemes/zhang_mcfarlane\n"; + print $fh "$camsrcdir/src/atmos_phys/schemes/dry_adiabatic_adjust\n"; + print $fh "$camsrcdir/src/atmos_phys/schemes/utilities\n"; # Dynamics package and test utilities print $fh "$camsrcdir/src/dynamics/$dyn\n"; @@ -2321,8 +2356,6 @@ sub write_filepath print $fh "$camsrcdir/src/control\n"; print $fh "$camsrcdir/src/utils\n"; print $fh "$camsrcdir/src/utils/cam_ccpp\n"; - print $fh "$camsrcdir/src/atmos_phys/utilities\n"; - $fh->close; } @@ -2363,6 +2396,7 @@ CS_PATH := $cam_dir/src/physics/cosp2/src/src/simulator/actsim MISR_PATH := $cam_dir/src/physics/cosp2/src/src/simulator/MISR_simulator MODIS_PATH := $cam_dir/src/physics/cosp2/src/src/simulator/MODIS_simulator PARASOL_PATH := $cam_dir/src/physics/cosp2/src/src/simulator/parasol + EOF # Copy the "template" makefile to the new makefile. @@ -2403,6 +2437,7 @@ EOF $fh_in->close; } + #------------------------------------------------------------------------------- sub write_config_h diff --git a/bld/namelist_files/namelist_defaults_cam.xml b/bld/namelist_files/namelist_defaults_cam.xml index dbe2ff7a9c..42424b9d91 100644 --- a/bld/namelist_files/namelist_defaults_cam.xml +++ b/bld/namelist_files/namelist_defaults_cam.xml @@ -44,12 +44,16 @@ atm/cam/inic/cam_vcoords_L32_c180105.nc -atm/cam/inic/mpas/mpasa480_L32_notopo_coords_c201125.nc -atm/cam/inic/mpas/mpasa120_L32_notopo_coords_c201216.nc -atm/cam/inic/mpas/mpasa120_L32_topo_coords_c201022.nc -atm/cam/inic/mpas/mpasa120_L32_topo_coords_c201022.nc -atm/cam/inic/mpas/mpasa60_L32_notopo_coords_c230707.nc -atm/cam/inic/mpas/mpasa30_L32_notopo_coords_c230707.nc +atm/cam/inic/mpas/mpasa480_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa120_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa60_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa30_L32_notopo_coords_c240507.nc +atm/cam/inic/mpas/mpasa480_L58_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa120_L58_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa60_L58_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa480_L93_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa120_L93_notopo_coords_c240814.nc +atm/cam/inic/mpas/mpasa60_L93_notopo_coords_c240814.nc atm/cam/inic/fv/cami_0000-01-01_0.23x0.31_L26_c100513.nc @@ -125,11 +129,10 @@ atm/cam/inic/se/f.e22.FCnudged.ne0CONUSne30x8_ne0CONUSne30x8_mt12.cam6_2_032.002.cam.i.2013-01-01-00000_c200623.nc atm/cam/inic/se/f.e22.FCnudged.ne0CONUSne30x8_ne0CONUSne30x8_mt12.cam6_2_032.002.cam.i.2013-01-01-00000_c200623.nc atm/cam/inic/se/f.e22.FCnudged.ne30_ne30_mg17.release-cesm2.2.0_spinup.2010_2020.001.cam.i.2011-01-01-00000_L58_c220310.nc -atm/cam/inic/se/FCMTHIST_ne30pg3_1980-01-01_c221214.nc -atm/cam/inic/se/f.cam6_3_112.FCMTHIST_v0c.ne30.non-ogw-ubcT-effgw0.7.001.cam.i.1998-01-01-00000_c230810.nc +atm/cam/inic/se/f.cam6_3_160.FCMT_ne30.moving_mtn.001.cam.i.1996-01-01-00000_c240618.nc atm/cam/inic/se/FLT_L58_ne30pg3_IC_c220623.nc -atm/cam/inic/se/cam7_FMT_ne30pg3_mg17_L93_c221118.nc +atm/cam/inic/se/c153_ne30pg3_FMTHIST_x02.cam.i.1990-01-01-00000_c240618.nc atm/cam/chem/trop_mozart/ic/cami_0000-09-01_4x5_L26_c060217.nc atm/cam/chem/trop_mozart/ic/cami_0000-09-01_10x15_L26_c060216.nc @@ -162,17 +165,13 @@ atm/waccm/ic/FC6X2000_f05_spinup01.cam.i.0002-01-01-00000_c190711.nc atm/waccm/ic/waccmx_mam4_aqua_4x5_L130_c180803.nc atm/waccm/ic/waccmx_mam4_aqua_1.9x2.5_L130_c180803.nc -atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L32_01-01-31_c221214.nc -atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L58_01-01-31_c221214.nc -atm/cam/inic/se/cam6_QPC6_topo_ne3pg3_mg37_L32_01-01-31_c221214.nc -atm/cam/inic/se/cam6_QPC6_topo_ne3pg3_mg37_L58_01-01-31_c221214.nc atm/waccm/ic/waccmx_aqua_ne5np4_126L_c210304.nc atm/waccm/ic/waccmx_ne16np4_126L_c200108.nc atm/waccm/ic/fx2000_phys-ionos-cpl_ne16_spinup03.cam.i.0002-01-01-00000_c201005.nc atm/waccm/ic/waccmx_aqua_ne16np4_126L_c191108.nc atm/waccm/ic/waccmx4_neutral_aquap_ne16np4_126lev_c200827.nc atm/waccm/ic/fx2000_phys-ionos-cpl_ne30_spinup01.cam.i.0002-01-01-00000_c201014.nc -+atm/waccm/ic/waccmx_ne30pg3_c231005.nc +atm/waccm/ic/waccmx_ne30pg3_c231005.nc atm/cam/inic/fv3/aqua_0006-01-01_C24_L32_c200625.nc atm/cam/inic/fv3/aqua_0006-01-01_C48_L32_c200625.nc @@ -223,13 +222,18 @@ atm/cam/inic/gaus/cami_0000-09-01_8x16_L26_c030918.nc atm/cam/inic/gaus/cami_0000-01-01_8x16_L30_c090102.nc +atm/cam/inic/se/FCts4MTHIST_ne3pg3_spinup02.cam.i.1980-01-01_c240702.nc atm/cam/inic/se/cam6_QPC6_topo_ne3pg3_mg37_L32_01-01-31_c221214.nc +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-09-01-00000.nc +atm/cam/inic/se/cami_0000-01-01_ne3np4_L30_c120315.nc +atm/cam/inic/se/cami_0000-01-01_ne3np4_L30_c120315.nc +atm/cam/inic/se/cami_0000-01-01_ne3np4_L26_c120525.nc +atm/cam/inic/se/cami_0000-01-01_ne3np4_L26_c120525.nc atm/cam/inic/se/cam6_QPC6_topo_ne3pg3_mg37_L58_01-01-31_c221214.nc -atm/cam/inic/se/cam6_QPC6_topo_ne3pg3_mg37_L93_01-01-31_c221214.nc +atm/cam/inic/se/cam6_FMTHIST_ne3pg3_mg37_L93_79-02-01_c240517.nc atm/cam/inic/homme/cami-mam3_0000-01_ne5np4_L30.140707.nc atm/cam/inic/se/F2000climo_ne5pg3_mg37_L32_01-01-31_c230520.nc atm/cam/inic/se/F2000climo_ne5pg3_mg37_L58_01-01-31_c230520.nc - atm/cam/inic/se/ape_topo_cam4_ne16np4_L26_c171020.nc atm/cam/inic/se/ape_topo_cam4_ne16np4_L30_c171020.nc atm/cam/inic/se/ape_topo_cam4_ne16np4_L32_c171020.nc @@ -247,10 +251,7 @@ atm/cam/inic/homme/cami-mam3_0000-01-ne240np4_L30_c111004.nc -atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L32_01-01-31_c221214.nc -atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L58_01-01-31_c221214.nc -atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L93_01-01-31_c221214.nc -atm/cam/inic/se/ape_cam4_ne5np4_L26_c170517.nc +atm/cam/inic/se/ape_cam4_ne5np4_L26_c170517.nc atm/cam/inic/se/ape_cam4_ne16np4_L26_c170417.nc atm/cam/inic/se/ape_cam4_ne30np4_L26_c170417.nc atm/cam/inic/se/ape_cam4_ne60np4_L26_c171023.nc @@ -262,6 +263,9 @@ atm/cam/inic/se/ape_cam5_ne30np4_L30_c170417.nc atm/cam/inic/se/ape_cam5_ne120np4_L30_c170419.nc +atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L32_01-01-31_c221214.nc +atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L58_01-01-31_c221214.nc +atm/cam/inic/se/cam6_QPC6_aqua_ne3pg3_mg37_L93_01_02_01_c240518.nc atm/cam/inic/se/ape_cam6_ne5np4_L32_c170517.nc atm/cam/inic/se/ape_cam6_ne16np4_L32_c170509.nc atm/cam/inic/se/ape_cam6_ne30np4_L32_c170509.nc @@ -280,10 +284,14 @@ atm/waccm/ic/FW2000_CONUS_30x8_L70_01-01-0001_c200602.nc -atm/waccm/ic/mpasa120km.waccm_fulltopo_c220818.nc +atm/waccm/ic/mpasa120_L70.waccm_topography_SC_c240904.nc -atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L32_CFSR_c210426.nc -atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L32_CFSR_c211013.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L32_CFSR_c240508.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L32_CFSR_c240508.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L58_CFSR_c240814.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L58_CFSR_c240814.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa480_L93_CFSR_c240814.nc +atm/cam/inic/mpas/cami_01-01-2000_00Z_mpasa120_L93_CFSR_c240814.nc atm/cam/topo/topo-from-cami_0000-01-01_256x512_L26_c030918.nc @@ -296,7 +304,7 @@ atm/cam/topo/USGS_gtopo30_0.23x0.31_remap_c061107.nc atm/cam/topo/USGS_gtopo30_0.47x0.63_remap_c061106.nc atm/cam/topo/fv_0.47x0.63_nc3000_Co030_Fi001_PF_nullRR_Nsw021_20171023.nc -atm/cam/topo/fv_0.47x0.63_nc3000_Co030_Fi001_PF_nullRR_Nsw021_20171023.nc +atm/cam/topo/fv_0.47x0.63_nc3000_Co030_Fi001_PF_nullRR_Nsw021_20171023.nc atm/cam/topo/topo-from-cami_0000-10-01_0.5x0.625_L26_c031204.nc atm/cam/topo/fv_0.9x1.25_nc3000_Nsw042_Nrs008_Co060_Fi001_ZR_sgh30_24km_GRNL_c170103.nc atm/cam/topo/fv_1.9x2.5_nc3000_Nsw084_Nrs016_Co120_Fi001_ZR_GRNL_c190405.nc @@ -317,13 +325,13 @@ atm/cam/topo/se/ne120np4_nc3000_Co015_Fi001_PF_nullRR_Nsw010_20171011.nc atm/cam/topo/se/ne240np4_nc3000_Co008_Fi001_PF_nullRR_Nsw005_20171014.nc -atm/cam/topo/se/ne3pg3_gmted2010_modis_bedmachine_nc0540_Laplace1000_noleak_20230209.nc atm/cam/topo/se/ne5pg2_nc3000_Co360_Fi001_MulG_PF_nullRR_Nsw060_20170706.nc atm/cam/topo/se/ne30pg2_nc3000_Co060_Fi001_PF_nullRR_Nsw042_20171014.nc atm/cam/topo/se/ne60pg2_nc3000_Co030_Fi001_PF_nullRR_Nsw021_20171014.nc atm/cam/topo/se/ne120pg2_nc3000_Co015_Fi001_PF_nullRR_Nsw010_20171012.nc atm/cam/topo/se/ne240pg2_nc3000_Co008_Fi001_PF_nullRR_Nsw005_20171014.nc - +atm/cam/topo/se/ne3np4_gmted2010_modis_bedmachine_nc0540_Laplace1000_noleak_20230717.nc +atm/cam/topo/se/ne3pg3_gmted2010_modis_bedmachine_nc0540_Laplace1000_noleak_20230209.nc atm/cam/topo/se/ne5pg3_nc3000_Co360_Fi001_MulG_PF_nullRR_Nsw064_20170516.nc atm/cam/topo/se/ne16pg3_nc3000_Co120_Fi001_PF_nullRR_Nsw084_20171012.nc atm/cam/topo/se/ne30pg3_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240117.nc @@ -335,8 +343,8 @@ atm/cam/topo/se/ne30x4_ARCTIC_nc3000_Co060_Fi001_MulG_PF_RR_Nsw042_c200428.nc atm/cam/topo/se/ne30x8_ARCTICGRIS_nc3000_Co060_Fi001_MulG_PF_RR_Nsw042_c200428.nc -atm/cam/topo/mpas/mpas_120_nc3000_Co060_Fi001_MulG_PF_Nsw042_c200921.nc -atm/cam/topo/mpas_480_nc3000_Co240_Fi001_MulG_PF_Nsw170.nc +atm/cam/topo/mpas/mpasa480_gmted2010_modis_bedmachine_nc3000_Laplace0400_noleak_20240507.nc +atm/cam/topo/mpas/mpasa120_gmted2010_modis_bedmachine_nc3000_Laplace0100_noleak_20240507.nc 0.0D0 @@ -345,7 +353,7 @@ 98288.0D0 98288.0D0 98288.0D0 - 98288.0D0 + 98288.0D0 98288.0D0 98288.0D0 @@ -393,19 +401,6 @@ - -atm/cam/physprops/sul_cam3_c080918.nc -atm/cam/physprops/dustv1b1_cam3_c080918.nc -atm/cam/physprops/dustv1b2_cam3_c080918.nc -atm/cam/physprops/dustv1b3_cam3_c080918.nc -atm/cam/physprops/dustv1b4_cam3_c080918.nc -atm/cam/physprops/bcpho_cam3_c080918.nc -atm/cam/physprops/bcphi_cam3_c080918.nc -atm/cam/physprops/ocpho_cam3_c080918.nc -atm/cam/physprops/ocphi_cam3_c080918.nc -atm/cam/physprops/ssam_cam3_c080918.nc -atm/cam/physprops/sscm_cam3_c080918.nc - atm/cam/physprops/sulfate_camrt_c080918.nc @@ -570,7 +565,7 @@ atm/cam/physprops/mam4_mode4_rrtmg_c130628.nc atm/cam/physprops/mam4_mode1_rrtmg_aeronetdust_sig1.6_dgnh.48_c140304.nc -atm/cam/physprops/mam4_mode3_rrtmg_aeronetdust_sig1.2_dgnl.40_c150219.nc +atm/cam/physprops/mam4_mode3_rrtmg_aeronetdust_sig1.2_dgnl.40_c150219.nc atm/cam/physprops/mam4_mode1_rrtmg_aeronetdust_sig1.6_dgnh.48_c140304.nc atm/cam/physprops/mam4_mode2_rrtmg_aitkendust_c141106.nc @@ -590,7 +585,7 @@ .false. .true. -.true. +.true. slingo @@ -636,9 +631,9 @@ ozone_strataero_CAM6chem_2000climo_zm_5day_c171004.nc -ozone_strataero_CAM6chem_2000climo_zm_5day_c171004.nc +ozone_strataero_CAM6chem_2000climo_zm_5day_c171004.nc ozone_strataero_CAM6chem_2000climo_zm_5day_c171004.nc -ozone_strataero_CAM6chem_2000climo_zm_5day_c171004.nc +ozone_strataero_CAM6chem_2000climo_zm_5day_c171004.nc waccm_ozone_c121126.nc 0 @@ -848,6 +843,7 @@ atm/waccm/gw/newmfspectra40_dc25.nc atm/waccm/gw/mfspectra_shallow_c140530.nc +atm/waccm/gw/mfc0lookup_mm.nc 0.25d0 0.5d0 0.5d0 @@ -877,8 +873,8 @@ .true. .true. .true. -.false. -.false. +.false. +.false. .false. .false. .false. @@ -898,6 +894,7 @@ 1.0d-3 0.002d0 0.1d0 + 0.01d0 15 @@ -935,6 +932,7 @@ atm/cam/coords/ne5np4_esmf_20191204.nc atm/cam/coords/ne5np4.pg3_esmf_mesh_c210121.nc atm/cam/coords/ne16np4_esmf_c210305.nc +share/meshes/ne16pg3_ESMFmesh_cdf5_c20211018.nc atm/cam/coords/ne30np4_esmf_c210305.nc atm/cam/coords/ne30pg3_esmf_20200428.nc @@ -946,10 +944,10 @@ 1.30D0 1.60D0 0.32D0 -1.50D0 -1.30D0 -1.60D0 -0.32D0 +1.50D0 +1.30D0 +1.60D0 +0.32D0 atm/cam/chem/trop_mozart/emis/megan21_emis_factors_78pft_c20161108.nc @@ -1933,10 +1931,10 @@ 1850 oxid_1.9x2.5_L26_1850clim_c091123.nc 1850 -oxid_1.9x2.5_L26_1850clim_c091123.nc -1850 -oxid_1.9x2.5_L26_1850clim_c091123.nc -1850 +oxid_1.9x2.5_L26_1850clim_c091123.nc +1850 +oxid_1.9x2.5_L26_1850clim_c091123.nc +1850 atm/cam/chem/trop_mozart_aero/oxid CYCLICAL @@ -1978,12 +1976,12 @@ atm/cam/ozone ozone_strataero_WACCM6_L70_zm5day_19750101-20141229_c180216.nc atm/cam/ozone_strataero -CESM_1849_2100_sad_V3_c160211.nc -atm/cam/volc -ozone_strataero_CAM6chem_1849-2014_zm_5day_c170924.nc -atm/cam/ozone -ozone_strataero_WACCM6_L70_zm5day_19750101-20141229_c180216.nc -atm/cam/ozone_strataero +CESM_1849_2100_sad_V3_c160211.nc +atm/cam/volc +ozone_strataero_CAM6chem_1849-2014_zm_5day_c170924.nc +atm/cam/ozone +ozone_strataero_WACCM6_L70_zm5day_19750101-20141229_c180216.nc +atm/cam/ozone_strataero atm/waccm/sulf/sulfate.ar5_camchem_c130304.nc @@ -1994,16 +1992,20 @@ OFF + +atm/cam/chem/trop_mam/atmsrf_ne3np4_230718.nc atm/cam/chem/trop_mam/atmsrf_ne3np4.pg3_221214.nc +atm/cam/chem/trop_mam/atmsrf_ne5np4_110920.nc atm/cam/chem/trop_mam/atmsrf_ne5pg3_201105.nc -atm/cam/chem/trop_mam/atmsrf_ne5np4_cdf5_110920.nc -atm/cam/chem/trop_mam/atmsrf_ne16np4_cdf5_110920.nc +atm/cam/chem/trop_mam/atmsrf_ne16np4_110920.nc atm/cam/chem/trop_mam/atmsrf_ne16pg3_c230520.nc -atm/cam/chem/trop_mam/atmsrf_ne30np4_cdf5_110920.nc -atm/cam/chem/trop_mam/atmsrf_ne30pg3_cdf5_180522.nc +atm/cam/chem/trop_mam/atmsrf_ne30np4_110920.nc +atm/cam/chem/trop_mam/atmsrf_ne30np4.pg2_200108.nc +atm/cam/chem/trop_mam/atmsrf_ne30pg3_180522.nc atm/cam/chem/trop_mam/atmsrf_ne60np4_110920.nc -atm/cam/chem/trop_mam/atmsrf_ne120np4_cdf5_110920.nc -atm/cam/chem/trop_mam/atmsrf_ne240np4_cdf5_110920.nc +atm/cam/chem/trop_mam/atmsrf_ne120np4_110920.nc +atm/cam/chem/trop_mam/atmsrf_ne120np4.pg2_200109.nc +atm/cam/chem/trop_mam/atmsrf_ne240np4_110920.nc atm/cam/chem/trop_mam/atmsrf_ne0np4conus30x8_161116.nc atm/cam/chem/trop_mam/atmsrf_ne30x4_ARCTIC_191011.nc @@ -2024,7 +2026,7 @@ atm/cam/chem/trop_mozart/dvel/dep_data_c20221208.nc -atm/cam/chem/geoschem/dvel/dep_data_file_geoschem_c230417.nc +atm/cam/chem/geoschem/dvel/dep_data_file_geoschem_v14.3_2023Jan08.nc atm/waccm/phot/effxstex.txt @@ -2063,7 +2065,7 @@ .true. .true. .false. - .false. + .false. .true. 0.075D0 @@ -2075,20 +2077,20 @@ .false. .true. - .true. + .true. .false. .true. .true. - .true. + .true. .true. 0 1 1 - 1 + 1 1 0.01d0 @@ -2135,10 +2137,10 @@ 6.0 1.0 0.5 - 0.1 + 0.1 0.5 4.2 - 4.25 + 4.25 0.0 1.0 0.1 @@ -2155,21 +2157,21 @@ 1.25 0.25 0.3 - 0.1 + 0.1 0.3 0.0 0.4 25.0D-6 - 61.0D-6 + 61.0D-6 8.0D-6 238.15D0 .true. .false. 0.308 - 0.3 + 0.3 0.280 0.32 - 0.3 + 0.3 2 0.04 0.1 @@ -2183,15 +2185,16 @@ .false. .false. .false. - .false. - .true. + .false. + .true. + .false. .false. .false. .true. .false. .false. .false. - .true. + .true. .false. .false. .true. @@ -2203,7 +2206,7 @@ .true. .false. .false. - .true. + .true. .false. .false. .false. @@ -2238,8 +2241,9 @@ 0.5 25.0 .false. -.true. .true. +.true. + .true. 0.2 @@ -2265,6 +2269,7 @@ 10.0 4.0 0.0 + 5.0 .true. .false. @@ -2283,6 +2288,9 @@ .false. .false. .false. + 0.5 + 25.00 + .false. @@ -2309,6 +2317,7 @@ 1 0 1 + 2 0 1 @@ -2343,15 +2352,15 @@ 1.D0 1.D0 - 1.D0 + 1.D0 1.D0 0.2D0 - 0.1D0 + 0.1D0 0.1D0 - 0.0D0 + 0.0D0 0.001D0 @@ -2370,10 +2379,10 @@ 1.D8 1.D8 - .true. - .true. - kk2000 - .true. + .true. + .true. + kk2000 + .true. 1 3 @@ -2404,20 +2413,20 @@ 1.2D0 1.2D0 -.false. -.true. -.true. +.false. +.true. +.true. .true. 0.01D0 0.05D0 .false. .true. -.true. +.true. .true. .false. -.false. +.false. 1.0D0 .true. @@ -2449,7 +2458,7 @@ 1.D0 0.D0 0.D0 -0.D0 +0.D0 1.D0 @@ -2459,12 +2468,12 @@ 30.D0 100.D0 100.D0 -100.D0 +100.D0 100.D3 100.D0 100.D0 -100.D0 +100.D0 30.D0 40.D0 @@ -2484,51 +2493,55 @@ 0.45D0 0.45D0 0.35D0 -1.30D0 +1.30D0 0.30D0 -0.30D0 +0.30D0 0.45D0 -0.45D0 +0.45D0 0.45D0 -0.45D0 +0.45D0 0.45D0 0.55D0 0.22D0 0.70D0 -1.30D0 +1.30D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.8D0 -0.8D0 +0.8D0 0.70D0 -0.70D0 +0.70D0 0.13D0 0.26D0 -0.26D0 +0.26D0 0.7D0 -0.7D0 +0.7D0 0.24D0 -0.24D0 +0.24D0 0.9D0 -0.9D0 +0.9D0 + + +Zender_2003 +atm @@ -2536,7 +2549,7 @@ 1.62D0 0.90D0 1.00D0 -1.5D0 +1.5D0 1.10D0 1.2D0 0.60D0 @@ -2644,7 +2657,7 @@ .false. .true. .true. -.true. +.true. 0.900D0 0.910D0 @@ -2664,12 +2677,12 @@ 0.8875D0 0.9125D0 - 0.910D0 - 0.950D0 - 0.950D0 - 0.8975D0 - 0.8875D0 - 0.9125D0 + 0.910D0 + 0.950D0 + 0.950D0 + 0.8975D0 + 0.8875D0 + 0.9125D0 0.910D0 0.920D0 @@ -2683,7 +2696,7 @@ 0.100D0 0.000D0 - 0.000D0 + 0.000D0 0.000D0 0.800D0 @@ -2707,7 +2720,7 @@ 0.14D0 0.10D0 0.10D0 - 0.10D0 + 0.10D0 0.10D0 0.10D0 @@ -2732,25 +2745,25 @@ 750.0D2 700.0D2 700.0D2 - 700.0D2 + 700.0D2 1 5 5 - 5 + 5 4 4 4 - 4 + 4 0.95D0 0.93D0 0.93D0 - 0.93D0 + 0.93D0 0.70D0 0.70D0 0.70D0 - 0.70D0 + 0.70D0 0.80D0 0.85D0 @@ -2774,7 +2787,7 @@ .false. .true. -.true. +.true. .false. @@ -2854,11 +2867,11 @@ 0.0035D0 0.0075D0 0.0075D0 - 0.0059D0 - 0.0035D0 - 0.0035D0 - 0.0075D0 - 0.0075D0 + 0.0059D0 + 0.0035D0 + 0.0035D0 + 0.0075D0 + 0.0075D0 0.0035D0 0.0035D0 0.0020D0 @@ -2875,11 +2888,11 @@ 0.0035D0 0.0300D0 0.0300D0 - 0.0450D0 - 0.0035D0 - 0.0035D0 - 0.0300D0 - 0.0300D0 + 0.0450D0 + 0.0035D0 + 0.0035D0 + 0.0300D0 + 0.0300D0 0.0035D0 0.0035D0 0.0020D0 @@ -2903,7 +2916,7 @@ 5 1 - 1 + 1 -1.0E-3 0.5 @@ -2919,13 +2932,12 @@ 0.5D0 -0 1 2 4 4 - 4 + 4 4 42 42 @@ -2935,9 +2947,9 @@ 42 42 42 -42 +42 42 -42 +42 42 1 @@ -2972,12 +2984,141 @@ -atm/cam/inic/gaus/cami_0000-09-01_64x128_L30_c031210.nc -atm/cam/scam/iop/ARM97_4scam.nc - 1500 - 9 - .true. - slt + 1 + 10000 + .true. + 0.0D0 + .true. + 10800._r8 + + 'T', 'bc_a1', 'bc_a4', 'dst_a1', 'dst_a2', 'dst_a3', 'ncl_a1', 'ncl_a2', 'ncl_a3', + 'num_a1', 'num_a2', 'num_a3', 'num_a4', 'pom_a1', 'pom_a4', 'so4_a1', 'so4_a2', 'so4_a3', 'soa_a1', 'soa_a2' + + + 'T', 'bc_a1', 'bc_a4', 'dst_a1', 'dst_a2', 'dst_a3', 'ncl_a1', 'ncl_a2', 'ncl_a3', + 'num_a1', 'num_a2', 'num_a3', 'num_a4', 'pom_a1', 'pom_a4', 'so4_a1', 'so4_a2', 'so4_a3', 'soa_a1', 'soa_a2' + + + 'T', 'bc_a1', 'bc_a4', 'dst_a1', 'dst_a2', 'dst_a3', 'ncl_a1', 'ncl_a2', 'ncl_a3', + 'num_a1', 'num_a2', 'num_a3', 'num_a4', 'pom_a1', 'pom_a4', 'so4_a1', 'so4_a2', 'so4_a3', 'soa_a1', 'soa_a2' + + 105000.D0 + 200.D0 + .true. + 864000.D0 + 172800.D0 + + + + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-06-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-06-01-00000.nc +atm/cam/scam/iop/ARM95_4scam.nc + 368.9e-6 + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-06-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-06-01-00000.nc +atm/cam/scam/iop/ARM97_4scam.nc + 368.9e-6 + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-02-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-02-01-00000.nc +atm/cam/scam/iop/ATEX_48hr_4scam.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-06-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-06-01-00000.nc +atm/cam/scam/iop/BOMEX_5day_4scam.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-07-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-07-01-00000.nc +atm/cam/scam/iop/S11_CTL_MixedLayerInit_reduced.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-07-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-07-01-00000.nc +atm/cam/scam/iop/S12_CTL_MixedLayerInit_reduced.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-07-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-07-01-00000.nc +atm/cam/scam/iop/S6_CTL_reduced.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-07-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-07-01-00000.nc +atm/cam/scam/iop/DYCOMSrf01_4day_4scam.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-07-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-07-01-00000.nc +atm/cam/scam/iop/DYCOMSrf02_48hr_4scam.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-08-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-08-01-00000.nc +atm/cam/scam/iop/GATEIII_4scam_c170809.nc + + +atm/cam/scam/iop/micre2017_3mo.cam.i.2017-01-01-00000.regrid.ne3np4.nc +atm/cam/scam/iop/micre2017_3mo.cam.i.2017-01-01-00000.regrid.Gaus_64x128.nc +atm/cam/scam/iop/micre2017_3mo.macquarie2017.iop.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-10-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-10-01-00000.nc +atm/cam/scam/iop/MPACE_4scam.nc + + 'CLDST', 'CNVCLD', + 'ICWMR','ICIMR','FREQL','FREQI','LANDFRAC','CDNUMC','FICE','WSUB','CCN3','ICLDIWP', + 'CDNUMC', 'AQSNOW', 'WSUB', 'CCN3', 'FREQI', 'FREQL', 'FREQR', 'FREQS', 'CLDLIQ', 'CLDICE', + 'FSDS', 'FLDS','AREL','AREI','NSNOW','QSNOW','DSNOW', + 'FLNT','FLNTC','FSNT','FSNTC','FSNS','FSNSC','FLNT','FLNTC','QRS','QRSC','QRL','QRLC', + 'LWCF','SWCF', 'NCAI', 'NCAL', 'NIHF','NIDEP','NIIMM','NIMEY','ICLDIWP','ICLDTWP', 'CONCLD', + 'QCSEVAP', 'QISEVAP', 'QVRES', 'CMELIQ', 'CMEIOUT', 'EVAPPREC', 'EVAPSNOW', 'TAQ', + 'ICLMRCU', 'ICIMRCU' ,'ICWMRSH' ,'ICWMRDP', 'ICLMRTOT' , 'ICIMRTOT' , 'SH_CLD' , 'DP_CLD', + 'LIQCLDF','ICECLDF', 'ICWMRST', 'ICIMRST', 'EFFLIQ', 'EFFICE','ADRAIN','ADSNOW','WSUBI', + 'TGCLDLWP','GCLDLWP' + + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-07-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-07-01-00000.nc +atm/cam/scam/iop/RICO_3day_4scam.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-06-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-06-01-00000.nc +atm/cam/scam/iop/SAS_ideal_4scam.nc + 368.9e-6 + .false. + .true. + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-04-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-04-01-00000.nc +atm/cam/scam/iop/SPARTICUS_4scam.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-12-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-12-01-00000.nc +atm/cam/scam/iop/TOGAII_4scam.nc + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-01-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-01-01-00000.nc +atm/cam/scam/iop/TWP06_4scam.nc + 1 + 1 + + +atm/cam/inic/se/CESM2.F2000climo.ne3np4.cam.i.0003-06-01-00000.nc +atm/cam/inic/gaus/CESM2.F2000climo.64x128.cam.i.0003-06-01-00000.nc +atm/cam/scam/iop/ARM97_4scam.nc @@ -3085,9 +3226,9 @@ 3 3 5 - 5 + 5 6 - 6 + 6 1 1 3 @@ -3157,7 +3298,6 @@ 3 2 4 - 4 9 8 2 @@ -3165,11 +3305,6 @@ 3 1 - 1 - 20 - 4 - 2 - 4 1 3 2 @@ -3343,11 +3478,19 @@ 'O3S_Loss = 2.0*O_O3 + O1D_H2O + HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3 + 2.0*NO2_O + 2.0*jno3_b + 2.0*CLO_O + 2.0*jcl2o2 + ', - '2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + S_O3' + '2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + S_O3' 'O3S_Loss = 2.0*O_O3 + O1D_H2O + HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3 + 2.0*NO2_O + 2.0*jno3_b + 2.0*CLO_O + 2.0*jcl2o2 + ', - '2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + S_O3', + '2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + S_O3', + 'SolIonRate_Tot = jeuv_1 + jeuv_2 + jeuv_3 + jeuv_4 + jeuv_5 + jeuv_6 + jeuv_7 + jeuv_8 + jeuv_9 + jeuv_10 + jeuv_11 + ', + 'jeuv_14 + jeuv_15 + jeuv_16 + jeuv_17 + jeuv_18 + jeuv_19 + jeuv_20 + jeuv_21 + jeuv_22 + jeuv_23', + + + 'SolIonRate_Tot = jeuv_1 + jeuv_2 + jeuv_3 + jeuv_4 + jeuv_5 + jeuv_6 + jeuv_7 + jeuv_8 + jeuv_9 + jeuv_10 + jeuv_11 + ', + 'jeuv_14 + jeuv_15 + jeuv_16 + jeuv_17 + jeuv_18 + jeuv_19 + jeuv_20 + jeuv_21 + jeuv_22 + jeuv_23', + + 'SolIonRate_Tot = jeuv_1 + jeuv_2 + jeuv_3 + jeuv_4 + jeuv_5 + jeuv_6 + jeuv_7 + jeuv_8 + jeuv_9 + jeuv_10 + jeuv_11 + ', 'jeuv_14 + jeuv_15 + jeuv_16 + jeuv_17 + jeuv_18 + jeuv_19 + jeuv_20 + jeuv_21 + jeuv_22 + jeuv_23', @@ -3462,6 +3605,35 @@ 'APIN_O3 + BPIN_O3 + LIMON_O3 + MYRC_O3 + ', 'ISOPN1D_O3 + ISOPN4D_O3 + ISOPNOOHD_O3 + NC4CHO_O3 + TERPF1_O3 + TERPF2_O3' + + 'O3_Prod = NO_HO2 + CH3O2_NO + C2H5O2_NO + CH3CO3_NO + EO2_NO + C3H7O2_NO + PO2_NO + RO2_NO + ', + ' MACRO2_NOa + MCO3_NO + .92*ISOPO2_NO + ISOPNO3_NO + XO2_NO + jnoa + jonitr + NOA_OH ', + 'O3_Loss = O1D_H2O + OH_O3 + HO2_O3 + C2H4_O3 + C3H6_O3 + ISOP_O3 + MVK_O3 + MACR_O3 + TERP_O3 + S_O3 + SO_O3', + 'O3S_Loss = 2.0*O_O3 + O1D_H2O + HO2_O3 + OH_O3 + H_O3 + 2.0*NO2_O + 2.0*jno3_b + 2.0*CLO_O + 2.0*jcl2o2 + 2.0*CLO_CLOa + ', + ' 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + S_O3 + SO_O3 + ', + ' C2H4_O3 + C3H6_O3 + ISOP_O3 + MVK_O3 + MACR_O3', + 'O3_alkenes = C2H4_O3 + C3H6_O3 + ISOP_O3 + MVK_O3 + MACR_O3', + 'RO2_NO_sum = CH3O2_NO + C2H5O2_NO + CH3CO3_NO + EO2_NO + C3H7O2_NO + PO2_NO + RO2_NO + MACRO2_NOa + ', + ' MACRO2_NOb + MCO3_NO + ISOPO2_NO + ISOPNO3_NO + XO2_NO', 'RO2_NO3_sum = MACRO2_NO3 + MCO3_NO3 + ISOPO2_NO3 + ISOPNO3_NO3 + XO2_NO3', + 'RO2_HO2_sum = CH3O2_HO2 + C2H5O2_HO2 + CH3CO3_HO2 + EO2_HO2 + C3H7O2_HO2 + PO2_HO2 + RO2_HO2 + MACRO2_HO2 + ', + ' MCO3_HO2 + ISOPO2_HO2 + ISOPNO3_HO2 + XO2_HO2', + 'RO2_RO2_sum = CH3O2_CH3O2a + CH3O2_CH3O2b + C2H5O2_CH3O2 + C2H5O2_C2H5O2 + CH3CO3_CH3O2 + CH3CO3_CH3CO3 + C3H7O2_CH3O2 + ', + ' RO2_CH3O2 + MACRO2_CH3O2 + MACRO2_CH3CO3 + MCO3_CH3O2 + MCO3_CH3CO3 + MCO3_MCO3 + ISOPO2_CH3O2 + ', + ' ISOPO2_CH3CO3 + XO2_CH3O2 + XO2_CH3CO3', + 'RCO2_NO2_sum = CH3CO3_NO2 + MCO3_NO2', + 'OddOx_Ox_Loss = 2.0*O_O3 + O1D_H2O', + 'OddOx_HOx_Loss = HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3', + 'OddOx_NOx_Loss = 2.0*NO2_O + 2.0*jno3_b', + 'OddOx_CLOxBROx_Loss = 2.0*CLO_O + 2.0*jcl2o2 + 2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2', + 'OddOx_Loss_Tot = 2.0*O_O3 + O1D_H2O + HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3 + 2.0*NO2_O + 2.0*jno3_b + 2.0*CLO_O + 2.0*jcl2o2 + ', + ' 2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2', + 'OddOx_Prod_Tot = 2.0*jo2_a + 2.0*jo2_b', + 'Ox_Prod = 2.0*jo2_a + 2.0*jo2_b + NO_HO2 + CH3O2_NO + C2H5O2_NO + CH3CO3_NO + EO2_NO + C3H7O2_NO + PO2_NO + ', + ' RO2_NO + MACRO2_NOa + MCO3_NO + .92*ISOPO2_NO + ISOPNO3_NO + XO2_NO + jnoa + jonitr + NOA_OH', + 'Ox_Loss = 2.0*O_O3 + O1D_H2O + HO2_O + HO2_O3 + OH_O + OH_O3 + H_O3 + 2.0*NO2_O + 2.0*jno3_b + 2.0*CLO_O + 2.0*jcl2o2 + ', + ' 2.0*CLO_CLOa + 2.0*CLO_CLOb + 2.0*BRO_CLOb + 2.0*BRO_CLOc + 2.0*BRO_BRO + 2.0*BRO_O + CLO_HO2 + BRO_HO2 + C2H4_O3 + ', + ' C3H6_O3 + ISOP_O3 + MVK_O3 + MACR_O3 + TERP_O3 + S_O3 + SO_O3' + 'O3_Prod = NO_HO2 + CH3O2_NO + HOCH2OO_NO + C2H5O2_NO + CH3CO3_NO + EO2_NO + C3H7O2_NO + PO2_NO + RO2_NO + ENEO2_NO + ', ' MACRO2_NOa + MCO3_NO + MEKO2_NO + ALKO2_NO + .92*ISOPAO2_NO + .92*ISOPBO2_NO + ISOPNO3_NO + XO2_NO + ACBZO2_NO + ', @@ -3502,7 +3674,6 @@ ' C3H6_O3 + ISOP_O3 + MVK_O3 + MACR_O3 + MTERP_O3 + BCARY_O3 + S_O3 + SO_O3' - .false. atm/cam/geoschem/emis/ExtData/HEMCO @@ -3530,6 +3701,11 @@ 144 91 + +atm/cam/geoschem/emis/ExtData/CHEM_INPUTS +atm/cam/geoschem/emis/ExtData/CHEM_INPUTS/FAST_JX/v2024-05/ +atm/cam/geoschem/emis/ExtData/CHEM_INPUTS/CLOUD_J/v2023-05/ + .false. .true. diff --git a/bld/namelist_files/namelist_definition.xml b/bld/namelist_files/namelist_definition.xml index 15594a7cc3..5aad5a9ac3 100644 --- a/bld/namelist_files/namelist_definition.xml +++ b/bld/namelist_files/namelist_definition.xml @@ -168,7 +168,7 @@ The ocean temperatures are initailized with the values: T_s = Tmin + Tdlt*exp[-0.5*(Lat/Twidth)^2] Default: 26. - + @@ -476,20 +476,6 @@ Default: none - - - -Full pathname of time-variant boundary dataset for aerosol masses. -Default: set by build-namelist. - - - -Add CAM3 prescribed aerosols to the physics buffer. -Default: FALSE - - -1 for FFT filter always, 0 for combined algebraic/FFT filter. The value 0 -is used for CAM3, otherwise it is using the value 1. +1 for FFT filter always, 0 for combined algebraic/FFT filter. Default: set by build-namelist @@ -1354,6 +1339,12 @@ Whether or not to enable gravity waves produced by shallow convection. Default: .false. + +Whether or not to enable gravity waves from PBL moving mountains source. +Default: .false. + + Gravity wave spectrum dimension (wave numbers are from -pgwv to pgwv). @@ -1511,12 +1502,6 @@ Full pathname of boundary dataset for meso-gamma ridges. Default: set by build-namelist. - -Critical Froude number squared (used only for orographic waves). -Default: set by build-namelist. - - Factor to multiply tau by, for orographic waves in the southern hemisphere. @@ -1555,6 +1540,13 @@ Width of gaussian used to create frontogenesis tau profile [m/s]. Default: set by build-namelist. + +Tunable parameter controlling proportion of boundary layer momentum flux escaping as GW momentum flux +Default: set by build-namelist. + + + Full pathname of Beres lookup table data file for gravity waves sourced @@ -1569,6 +1561,12 @@ from shallow convection. Default: set by build-namelist. + +Relative pathname of lookup table for deep convective moving mountain GW source +Default: set by build-namelist. + + Background source strength (used for waves from frontogenesis). @@ -2764,7 +2762,7 @@ Default: 1.0 -Unitless scaling factor for snow fall speed to account for sub-grid scale ice crysta shape variability. +Unitless scaling factor for snow fall speed to account for sub-grid scale ice crystal shape variability. Default: 1.0 @@ -2994,8 +2992,6 @@ Default: 1.0 -Minimum subgrid vertical velocity for liquid droplets during aerosol activation with units of (m s-1). -Default: 0.2 m s-1 Minimum subgrid vertical velocity (before scale factor) for liquid droplets during aerosol activation with units of (m s-1). Default: set by build-namelist @@ -3629,7 +3625,9 @@ Default: set by build-namelist -Switch for CLUBB_SGS +Flag for CLUBB_SGS. N.B. this variable may not be set by the user. It is +set by build-namelist via information in the configure cache file to be +consistent with how CAM was built. Default: set by build-namelist @@ -4916,30 +4914,6 @@ Specifies the name of the sea salt emission parameterization. Default: Gong - -======= - - - -Full pathname of time-variant ozone mixing ratio boundary dataset. -Default: set by build-namelist. - - - -Add CAM3 prescribed ozone to the physics buffer. -Default: FALSE - - - -Flag for yearly cycling of ozone data. If set to FALSE, a multi-year -dataset is assumed, otherwise a single-year dataset is assumed, and ozone -will be cycled over the 12 monthly averages in the file. -Default: TRUE - - + group="phys_ctl_nl" valid_values="cam4,cam5,cam6,adiabatic,held_suarez,kessler,frierson" > Name of the CAM physics package. N.B. this variable may not be set by the user. It is set by build-namelist via information in the configure cache file to be consistent with how CAM was built. @@ -5300,9 +5274,21 @@ Default: set by build-namelist for climo cases, otherwise -1 to use model clock. - -Full pathname to GEOS-Chem chemistry inputs directory +Full pathname of the GEOS-Chem chemistry inputs directory. +Default: set by build-namelist. + + + +Full pathname of the aerosols optical property inputs directory used in GEOS-Chem outside of Cloud-J. +Default: set by build-namelist. + + + +Full pathname of the Cloud-J photolysis inputs directory used in GEOS-Chem. Default: set by build-namelist. @@ -5603,7 +5589,7 @@ Default: Unused + group="phys_ctl_nl" valid_values="rrtmgp,rrtmg,camrt" > Type of radiation scheme employed. Default: set by build-namelist @@ -5811,6 +5797,7 @@ code directory for the CAM component. Default: set by build-namelist. + + +Use the SCAM-IOP 3d forcing if true, use combination of dycore vertical advection and iop horiz advection if false +Default:False + + Force scam to use the lat lon fields specified in the scam namelist not what is closest to IOP avail lat lon @@ -6289,19 +6282,19 @@ Default: set by build-namelist. + group="aero_wetdep_nl" valid_values="" > Tuning for below cloud scavenging of interstitial modal aerosols. Default: set by build-namelist. + group="aero_wetdep_nl" valid_values="" > Tuning for in-cloud scavenging of interstitial modal aerosols. Default: set by build-namelist. + group="aero_wetdep_nl" valid_values="" > Tuning for in-cloud scavenging of cloud-borne modal aerosols. Default: set by build-namelist. @@ -7710,6 +7703,21 @@ List of fluxes needed by the CARMA model, from CLM to CAM. Default: set by build-namelist. + +Which dust emission method is going to be used. +Either the Zender 2003 scheme or the Leung 2023 scheme. +Default: Zender_2003 + + + +Option only applying for the Zender_2003 method for whether the soil erodibility +file is handled in the active LAND model or in the ATM model. +(only used when dust_emis_method is Zender_2003) +Default: atm + + + @@ -8403,6 +8412,7 @@ Default: Set by build-namelist. Default: Set by build-namelist. + - CAM cam6 physics: - CAM cam5 physics: - CAM cam4 physics: - CAM cam3 physics: - CAM simplified and non-versioned physics : - CAM7 development physics: + CAM cam7 physics: + CAM cam6 physics: + CAM cam5 physics: + CAM cam4 physics: + CAM simplified and non-versioned physics : + + - CAM-Nor physics and dynamics differences : - CAM stand-alone single column mode -- need to define usermods directory with IOP settings: + CAM stand-alone single column mode -- user defined IOP settings can be placed under the usermods scam_user directory: CAM specified dynamics is used in finite volume dynamical core: CAM physics is nudged towards prescribed meteorology: - CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA: - CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA and expanded isoprene and terpene oxidation: - GEOS-Chem troposphere/stratosphere chemistry : - CAM-Chem troposphere/stratosphere chem with simplified volatility basis set SOA scheme and fire emissons : - CAM CLUBB - turned on by default in CAM60: - CAM-Chem troposphere/stratosphere chem with extended volatility basis set SOA scheme and modal aersols : - CAM low top model - Prognostic GHG chemistry mechanism for CAM7: - Modal Aerosol Model composed of 7 modes: - CAM mid top model - CAM CO2 ramp: - CAM super-parameterized CAM one moment SAM microphysics - CAM super-parameterized CAM one moment SAM microphysics using CLUBB - CAM super-parameterized CAM double moment m2005 SAM microphysics - CAM super-parameterized CAM double moment m2005 SAM microphysics using CLUBB - CAM tropospheric chemistry with bulk aerosols: + CAM-Chem troposphere/stratosphere chem with simplified volatility basis set SOA scheme and fire emissons : + CAM CLUBB - turned on by default in CAM60: + CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA: + CAM-Chem troposphere/stratosphere chemistry with simplified VBS-SOA and expanded isoprene and terpene oxidation: + CAM-Chem troposphere/stratosphere simplified chemistry for climate simulations: + CAM-Chem troposphere/stratosphere chem with extended volatility basis set SOA scheme and modal aersols : + GEOS-Chem troposphere/stratosphere chemistry : + Prognostic GHG chemistry mechanism for CAM7: + CAM low top model + Modal Aerosol Model composed of 7 modes: + CAM mid top model + CAM CO2 ramp: + CAM super-parameterized CAM one moment SAM microphysics + CAM super-parameterized CAM one moment SAM microphysics using CLUBB + CAM super-parameterized CAM double moment m2005 SAM microphysics + CAM super-parameterized CAM double moment m2005 SAM microphysics using CLUBB + CAM tropospheric chemistry with bulk aerosols: - -phys cam_dev - -chem ghg_mam4 - -chem trop_strat_mam5_vbs + -camnor -chem trop_mam4 + -chem ghg_mam4 -chem trop_mam_oslo + + + -chem trop_strat_mam5_vbs + -chem ghg_mam4 -chem geoschem_mam4 + -chem trop_mam7 -chem trop_strat_mam5_vbsext - -chem trop_strat_mam5_ts2 + -chem trop_strat_mam5_ts2 + -chem trop_strat_mam5_ts4 -clubb_sgs - -dyn eul -scam -rad camrt -chem none -spcam_nx 32 -spcam_ny 1 -spcam_dx 4000 -spcam_dt 20 -phys spcam_sam1mom -rad camrt -chem none -spcam_nx 32 -spcam_ny 1 -spcam_dx 4000 -spcam_dt 20 -phys spcam_sam1mom -spcam_clubb_sgs -rad rrtmg -chem trop_mam3 -spcam_nx 32 -spcam_ny 1 -spcam_dx 4000 -spcam_dt 20 -phys spcam_m2005 @@ -173,7 +177,7 @@ - -age_of_air_trcs + -age_of_air_trcs -chem waccm_ma -chem waccm_ma_mam5 -chem waccm_mad_mam5 @@ -189,11 +193,29 @@ -offline_dyn -nlev 56 - -nlev 56 + -nlev 56 -nlev 88 -nlev 145 - -nlev 58 -model_top lt - -nlev 93 -model_top mt + -nlev 58 -model_top lt + -nlev 93 -model_top mt + + + -scam arm95 + -scam arm97 + -scam atex + -scam bomex + -scam cgilss11 + -scam cgilss12 + -scam cgilss6 + -scam dycomsrf01 + -scam dycomsrf02 + -scam gateIII + -scam mpace + -scam rico + -scam sparticus + -scam togaII + -scam twp06 + -scam camfrc -phys adiabatic @@ -234,31 +256,22 @@ waccm_tsmlt_1850_cam6 waccm_ma_1850_cam6 waccm_sc_1850_cam6 - - 1850_cam_lt - 1850_camnor_lt_tropmam4 - 1850_camnor_lt_osloaero - 1850_cam_mt - - 2000_cam4_trop_chem - waccmxie_ma_2000_cam4 - waccmx_ma_2000_cam4 - - 2000_cam6 - waccm_tsmlt_2000_cam6 - waccm_ma_2000_cam6 - waccm_sc_2000_cam6 - 2000_trop_strat_vbs_cam6 + 1850_cam_lt + 1850_cam_mt + + 2000_cam4_trop_chem + waccmxie_ma_2000_cam4 + waccmx_ma_2000_cam4 + + 2000_cam6 + 2000_cam6 + waccm_tsmlt_2000_cam6 + waccm_ma_2000_cam6 + waccm_sc_2000_cam6 + 2000_trop_strat_vbs_cam6 2000_geoschem - waccmx_ma_2000_cam6 + waccmx_ma_2000_cam6 - 2000_cam6 - 2000_camnor_tropmam4 - 2000_camnor_osloaero - 2000_camnor_tropmam4 - 2000_camnor_osloaero - - aquaplanet_cam3 aquaplanet_cam4 aquaplanet_cam4 aquaplanet_cam5 @@ -268,38 +281,35 @@ aquaplanet_rce_cam6 aquaplanet_waccm_2000 - 2010_cam6 - 2010_trop_strat_vbs_cam6 - waccm_tsmlt_2010_cam6 - waccm_sc_2010_cam6 + 2010_cam6 + 2010_trop_strat_vbs_cam6 + waccm_tsmlt_2010_cam6 + waccm_sc_2010_cam6 2010_geoschem - 1850-2005_cam5 - 1850-2005_cam4 - - 1850-2005_cam4 - 1850-2005_cam4_bgc - 1950-2010_ccmi_refc1_waccmx_ma - 1850-2005_cam5 - hist_cam6 - - hist_cam_lt - hist_camnor_lt_tropmam4 - hist_camnor_lt_osloaero - hist_cam_mt + 1850-2005_cam5 + 1850-2005_cam4 + 1850-2005_cam4 + 1850-2005_cam4_bgc + 1950-2010_ccmi_refc1_waccmx_ma + 1850-2005_cam5 + hist_cam6 + hist_cam_lt + hist_cam_mt waccm_tsmlt_hist_cam6 waccm_sc_hist_cam6 waccm_ma_hist_cam6 waccm_ma_hist_cam6 waccm_ma_hist_cam4 - hist_trop_strat_vbs_cam6 - hist_trop_strat_nudged_cam6 - hist_trop_strat_vbsext_cam6 - hist_trop_strat_vbsfire_cam6 - hist_geoschem + hist_trop_strat_vbs_cam6 + hist_trop_strat_ts4_cam7 + hist_trop_strat_nudged_cam6 + hist_trop_strat_vbsext_cam6 + hist_trop_strat_vbsfire_cam6 + hist_geoschem hist_geoschem_nudged - waccmx_ma_hist_cam6 + waccmx_ma_hist_cam6 1850-PD_cam5 @@ -323,8 +333,8 @@ sd_waccm_ma_cam6 sd_waccm_ma_cam6 sd_waccm_ma_cam4 - sd_trop_strat_vbs_cam6 - sd_trop_strat2_cam6 + sd_trop_strat_vbs_cam6 + sd_trop_strat2_cam6 sd_cam6 dabi_p2004 @@ -333,6 +343,13 @@ dctest_frierson dctest_baro_kessler + + 1850_camnor_lt_tropmam4 + 1850_camnor_lt_osloaero + hist_camnor_lt_tropmam4 + hist_camnor_lt_osloaero + 2000_camnor_tropmam4 + 2000_camnor_osloaero @@ -391,7 +408,8 @@ $COMP_ROOT_DIR_ATM/cime_config/usermods_dirs/aquap $COMP_ROOT_DIR_ATM/cime_config/usermods_dirs/aquap - $COMP_ROOT_DIR_ATM/cime_config/usermods_dirs/scam_mandatory + $COMP_ROOT_DIR_ATM/cime_config/usermods_dirs/scam_mandatory + $COMP_ROOT_DIR_ATM/cime_config/usermods_dirs/scam_camfrc run_component_cam env_case.xml @@ -453,7 +471,7 @@ $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP1-2.6-WACCM_1849-2101_monthly_c191007.nc $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP2-4.5-WACCM_1849-2101_monthly_c191007.nc $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_SSP370_b.e21.BWSSP370cmip6.f09_g17.CMIP6-SSP3-7.0-WACCM.002_1849-2101_monthly_0.9x1.25_c211216.nc - $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc + $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_hist_b.e21.BWHIST.f09_g17.CMIP6-historical-WACCM.ensmean_1849-2015_monthly_0.9x1.25_c180926.nc $DIN_LOC_ROOT/lnd/clm2/ndepdata/fndep_clm_WACCM6_CMIP6piControl001_y21-50avg_1850monthly_0.95x1.25_c180802.nc diff --git a/cime_config/config_compsets.xml b/cime_config/config_compsets.xml index 8797c3b9f2..f3d6436ee5 100644 --- a/cime_config/config_compsets.xml +++ b/cime_config/config_compsets.xml @@ -32,83 +32,102 @@ - lname - alias - support (optional description of the support level for this compset) - Each compset node can also have the following attributes - grid (optional regular expression match for grid to work with the compset) + + + - + - + NF2000 - 2000_CAM%DEV%LT%NORESM%CAMoslo_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV + 2000_CAM70%LT%NORESM%CAMoslo_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV NF2000mam4 - 2000_CAM%DEV%LT%NORESM%GHGMAM4_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV + 2000_CAM70%LT%NORESM%GHGMAM4_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV NF1850 - 1850_CAM%DEV%LT%NORESM%CAMoslo_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV + 1850_CAM70%LT%NORESM%CAMoslo_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV NF1850mam4 - 1850_CAM%DEV%LT%NORESM%GHGMAM4_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV + 1850_CAM70%LT%NORESM%GHGMAM4_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV NFLTHIST - HIST_CAM%DEV%LT%NORESM%CAMoslo_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV + HIST_CAM70%LT%NORESM%CAMoslo_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV NFLTHISTmam4 - HIST_CAM%DEV%LT%NORESM%GHGMAM4_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV + HIST_CAM70%LT%NORESM%GHGMAM4_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_DGLC%NOEVOLVE_SWAV + + + + + + F2000Nuopc + 2000_CAM40_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + + F2000climo 2000_CAM60_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHIST HIST_CAM60_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FLTHIST - HIST_CAM%DEV%LT%GHGMAM4_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM70%LT_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FMTHIST - HIST_CAM%DEV%MT%GHGMAM4_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM70%MT_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FLT1850_TESTINGONLY_v0c - 1850_CAM%DEV%LT%GHGMAM4_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + 1850_CAM70%LT_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FMT1850_TESTINGONLY_v0c - 1850_CAM%DEV%MT%GHGMAM4_CLM51%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + 1850_CAM70%MT_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FHIST_BGC HIST_CAM60_CLM50%BGC-CROP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + @@ -116,11 +135,17 @@ FDABIP04 2000_CAM%DABIP04_SLND_SICE_SOCN_SROF_SGLC_SWAV + + + FHS94 2000_CAM%HS94_SLND_SICE_SOCN_SROF_SGLC_SWAV + + + @@ -139,13 +164,105 @@ - FSCAM - 2000_CAM60%SCAM_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + FSCAMARM95 + 2000_CAM60%FSCAMARM95_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMARM97 + 2000_CAM60%SCAMARM97_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMATEX + 2000_CAM60%SCAMATEX_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMBOMEX + 2000_CAM60%SCAMBOMEX_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMCGILSS11 + 2000_CAM60%SCAMCGILSS11_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMCGILSS12 + 2000_CAM60%SCAMCGILSS12_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMCGILSS6 + 2000_CAM60%SCAMCGILSS6_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMDYCOMSRF01 + 2000_CAM60%SCAMDYCOMSRF01_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMDYCOMSRF02 + 2000_CAM60%SCAMDYCOMSRF02_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMGATE3 + 2000_CAM60%SCAMGATE3_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMMPACE + 2000_CAM60%SCAMMPACE_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMRICO + 2000_CAM60%SCAMRICO_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMSPARTICUS + 2000_CAM60%SCAMSPARTICUS_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMTOGA2 + 2000_CAM60%SCAMTOGA2_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMTWP06 + 2000_CAM60%SCAMTWP06_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + + + + + FSCAMCAMFRC + 2000_CAM60%SCAMCAMFRC_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + FCSCAM - 2000_CAM60%SCAM%CCTS1_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + 2000_CAM60%SCAM%CT1S_CLM50%SP_CICE%PRES_DOCN%DOM_SROF_SGLC_SWAV + @@ -155,11 +272,6 @@ - - QPC3 - 2000_CAM30_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV - - QPC4 2000_CAM40_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV @@ -205,29 +317,21 @@ HIST_CAM60_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV - - QSPCAMS - 2000_CAM%SPCAMS_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV - - - - QPSPCAMM - 2000_CAM%SPCAMM_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV - - QPC6 2000_CAM60_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV + + QPC2000climo - 2000_CAM60%CCTS1_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV + 2000_CAM60%CT1S_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV QPSCAMC5 - 2000_CAM50%SCAM_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV + 2000_CAM50%SCAMARM97_SLND_SICE_DOCN%AQP3_SROF_SGLC_SWAV @@ -251,6 +355,8 @@ QSC6 2000_CAM60_SLND_SICE_DOCN%SOMAQP_SROF_SGLC_SWAV + + @@ -277,16 +383,6 @@ 1850_CAM60_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - - FSPCAMM - 2000_CAM%SPCAMM_CLM50%SP_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV - - - - FSPCAMS - 2000_CAM%SPCAMS_CLM50%SP_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV - - FHIST_BDRD HIST_CAM60_CLM50%BGC-CROP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV_BGC%BDRD @@ -294,7 +390,7 @@ F2000dev - 2000_CAM%DEV_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + 2000_CAM70_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV @@ -317,50 +413,54 @@ - - - - FSPCAMCLBS - 2000_CAM%SPCAMCLBS_CLM50%SP_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV - - - - FSPCAMCLBM - 2000_CAM%SPCAMCLBM_CLM50%SP_CICE%PRES_DOCN%DOM_RTM_SGLC_SWAV - - - FC2000climo - 2000_CAM60%CCTS1_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + 2000_CAM60%CT1S_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FC2000climo_HCO - 2000_CAM60%CCTS1%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + 2000_CAM60%CT1S%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + + FC2000climo_GC + 2000_CAM60%GEOSCHEM%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FC2010climo - 2010_CAM60%CCTS1_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + 2010_CAM60%CT1S_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FC2010climo_HCO - 2010_CAM60%CCTS1%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + 2010_CAM60%CT1S%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + + FC2010climo_GC + 2010_CAM60%GEOSCHEM%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCHIST - HIST_CAM60%CCTS1_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT1S_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + FCHIST_GC + HIST_CAM60%GEOSCHEM%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_CISM2%NOEVOLVE_SWAV + + - FCLTHIST - HIST_CAM%DEV%LT%CCTS1_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_LTt1s + HISTC_CAM70%LT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - FCMTHIST - HIST_CAM%DEV%MT%CCTS1_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FHISTC_MTt1s + HISTC_CAM70%MT%CT1S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + + FHISTC_MTt4s + HISTC_CAM70%MT%CT4S_CLM60%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCvbsxHIST @@ -372,37 +472,42 @@ FCHIST_HCO - HIST_CAM60%CCTS1%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT1S%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCnudged - HIST_CAM60%CCTS1%NUDG_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT1S%NUDG_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + FCnudged_GC + HIST_CAM60%GEOSCHEM%NUDG%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + + FCts2nudged - HIST_CAM60%CCTS2%NUDG_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT2S%NUDG_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCnudged_HCO - HIST_CAM60%CCTS1%NUDG%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT1S%NUDG%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCts2nudged_HCO - HIST_CAM60%CCTS2%NUDG%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT2S%NUDG%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCSD - HIST_CAM60%CCTS1%SDYN_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT1S%SDYN_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCts2SD - HIST_CAM60%CCTS2%SDYN_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT2S%SDYN_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV FCSD_HCO - HIST_CAM60%CCTS1%SDYN%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + HIST_CAM60%CT1S%SDYN%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV @@ -431,42 +536,49 @@ - + FWHIST HIST_CAM60%WCTS_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FWHIST_BGC HIST_CAM60%WCTS_CLM50%BGC-CROP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FWsc2010climo 2010_CAM60%WCSC_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FWsc2000climo 2000_CAM60%WCSC_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FWsc1850 1850_CAM60%WCSC_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FWscHIST HIST_CAM60%WCSC_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + FW1850 1850_CAM60%WCTS_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV + @@ -560,41 +672,20 @@ HIST_CAM60%WXIED%SDYN_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - - FC2000climo_GC - 2000_CAM60%GEOSCHEM%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_CISM2%NOEVOLVE_SWAV - - - - FC2010climo_GC - 2010_CAM60%GEOSCHEM%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_CISM2%NOEVOLVE_SWAV - - - - FCHIST_GC - HIST_CAM60%GEOSCHEM%HEMCO_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_CISM2%NOEVOLVE_SWAV - - - - FCnudged_GC - HIST_CAM60%GEOSCHEM%HEMCO%NUDG_CLM50%SP_CICE%PRES_DOCN%DOM_MOSART_SGLC_SWAV - - - 1997-06-18 - 1979-01-01 + 1979-01-01 1950-01-01 2000-01-01 2005-01-01 1980-01-01 1850-01-01 - 2010-01-01 + 2010-01-01 2015-01-01 - 2013-01-01 + 2013-01-01 1995-01-01 1995-01-01 2005-01-01 @@ -607,12 +698,70 @@ 2004-01-01 1950-01-01 + 1995-07-18 + 1997-06-18 + 1969-02-15 + 1969-06-25 + 1997-07-15 + 1997-07-15 + 1997-07-15 + 1999-07-11 + 1999-07-11 + 1974-08-30 + 2004-10-05 + 1995-07-15 + 2010-04-01 + 1992-12-18 + 2006-01-17 + 1997-06-18 + + + + + + 418 + 695 + 47 + 119 + 719 + 719 + 719 + 47 + 47 + 479 + 413 + 71 + 717 + 480 + 641 + 10 + + + + + + nhours - 84585 + 19800 + 84585 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 7171 + 0 + 3599 + 0 + 10800 + 0 @@ -638,76 +787,6 @@ - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - - - - 1 - 1 - - - @@ -718,13 +797,49 @@ - 36.6 + 36.6 + 36.6 + 15.0 + 15.0 + 32.0 + 35.0 + 17.0 + 31.5 + 31.5 + 9.0 + 70.5 + 18.0 + 36.6 + -2.1 + -12.43 + 36.6 - 262.5 + 262.5 + 262.5 + 345.0 + 300.0 + 231.0 + 235.0 + 211.0 + 238.5 + 238.5 + 336.0 + 206.0 + 298.5 + 262.51 + 154.69 + 130.89 + 262.5 + + + + + + FALSE diff --git a/cime_config/testdefs/testlist_cam.xml b/cime_config/testdefs/testlist_cam.xml index 029878b583..bb0d57e7da 100644 --- a/cime_config/testdefs/testlist_cam.xml +++ b/cime_config/testdefs/testlist_cam.xml @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + diff --git a/components/cice b/components/cice index bfc0a0892b..b0bf4fef4a 160000 --- a/components/cice +++ b/components/cice @@ -1 +1 @@ -Subproject commit bfc0a0892bada6219d6283ae96eed3ce48c82744 +Subproject commit b0bf4fef4aa944c57c0972b66411882e20d3868d diff --git a/components/mizuRoute b/components/mizuRoute deleted file mode 160000 index 2ff305a029..0000000000 --- a/components/mizuRoute +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2ff305a0292cb06789de6cfea7ad3cc0d6173493 diff --git a/components/rtm b/components/rtm deleted file mode 160000 index b3dfcfbba5..0000000000 --- a/components/rtm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b3dfcfbba58c151ac5a6ab513b3515ef3deff798 diff --git a/src/atmos_phys b/src/atmos_phys index 4944547f04..67927f1511 160000 --- a/src/atmos_phys +++ b/src/atmos_phys @@ -1 +1 @@ -Subproject commit 4944547f04b1457d78bf7d3c0becddcfe0deabb9 +Subproject commit 67927f15113eb9c5d4a57f2276d67b8ad88c5149 diff --git a/src/chemistry/oslo_aero b/src/chemistry/oslo_aero new file mode 160000 index 0000000000..63d5443fd2 --- /dev/null +++ b/src/chemistry/oslo_aero @@ -0,0 +1 @@ +Subproject commit 63d5443fd2de9f1e1bea0058f4f2d7d3feedf2d6 diff --git a/src/cpl/nuopc/atm_import_export.F90 b/src/cpl/nuopc/atm_import_export.F90 index 07b7f46ae3..9486209fa1 100644 --- a/src/cpl/nuopc/atm_import_export.F90 +++ b/src/cpl/nuopc/atm_import_export.F90 @@ -27,7 +27,7 @@ module atm_import_export use srf_field_check , only : set_active_Faxa_nhx use srf_field_check , only : set_active_Faxa_noy use srf_field_check , only : active_Faxa_nhx, active_Faxa_noy - use atm_stream_ndep , only : stream_ndep_init, stream_ndep_interp, stream_ndep_is_initialized + use atm_stream_ndep , only : stream_ndep_init, stream_ndep_interp, stream_ndep_is_initialized, use_ndep_stream implicit none private ! except @@ -246,7 +246,8 @@ subroutine advertise_fields(gcomp, flds_scalar_name, rc) call set_active_Faxa_nhx(.true.) call set_active_Faxa_noy(.true.) else - ! The following is used for reading in stream data + ! The following is used for reading in stream data, or for aquaplanet or simple model + ! cases where the ndep fluxes are not used. call set_active_Faxa_nhx(.false.) call set_active_Faxa_noy(.false.) end if @@ -1246,25 +1247,51 @@ subroutine export_fields( gcomp, model_mesh, model_clock, cam_out, rc) end do end if - ! If ndep fields are not computed in cam and must be obtained from the ndep input stream call state_getfldptr(exportState, 'Faxa_ndep', fldptr2d=fldptr_ndep, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (.not. active_Faxa_nhx .and. .not. active_Faxa_noy) then + + ! ndep fields not active (i.e., not computed by WACCM). Either they are not needed, + ! or they are obtained from the ndep input stream. + + ! The ndep_stream_nl namelist group is read in stream_ndep_init. This sets whether + ! or not the stream will be used. if (.not. stream_ndep_is_initialized) then call stream_ndep_init(model_mesh, model_clock, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return stream_ndep_is_initialized = .true. end if - call stream_ndep_interp(cam_out, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! NDEP read from forcing is expected to be in units of gN/m2/sec - but the mediator - ! expects units of kgN/m2/sec - scale_ndep = .001_r8 + + if (use_ndep_stream) then + + ! get ndep fluxes from the stream + call stream_ndep_interp(cam_out, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + ! NDEP read from forcing is expected to be in units of gN/m2/sec - but the mediator + ! expects units of kgN/m2/sec + scale_ndep = .001_r8 + + else + + ! ndep fluxes not used. Set to zero. + do c = begchunk,endchunk + do i = 1,get_ncols_p(c) + cam_out(c)%nhx_nitrogen_flx(i) = 0._r8 + cam_out(c)%noy_nitrogen_flx(i) = 0._r8 + end do + end do + scale_ndep = 1._r8 + + end if + else + ! If waccm computes ndep, then its in units of kgN/m2/s - and the mediator expects ! units of kgN/m2/sec, so the following conversion needs to happen scale_ndep = 1._r8 + end if + g = 1 do c = begchunk,endchunk do i = 1,get_ncols_p(c) diff --git a/src/hemco b/src/hemco index 3a6d999ab0..7bd8358229 160000 --- a/src/hemco +++ b/src/hemco @@ -1 +1 @@ -Subproject commit 3a6d999ab0dbee9f03ab6b9a13dd3b6d9670eb54 +Subproject commit 7bd8358229eefd2cbb910ff30c46dfc97e34fb6f diff --git a/src/physics/camnor_phys b/src/physics/camnor_phys new file mode 160000 index 0000000000..6910b103ba --- /dev/null +++ b/src/physics/camnor_phys @@ -0,0 +1 @@ +Subproject commit 6910b103ba64968ba8da94886add717e877cb0e1 diff --git a/src/physics/clubb b/src/physics/clubb index 50cee042e5..15e802092f 160000 --- a/src/physics/clubb +++ b/src/physics/clubb @@ -1 +1 @@ -Subproject commit 50cee042e588fefd3fe58c2a1d638affec8c0389 +Subproject commit 15e802092f65b3a20e5d67cb32d40f8a2771ca9b