@@ -1360,8 +1360,8 @@ sub setup_cmdl_simulation_year {
13601360 }
13611361 $val = " '" .$defaults -> get_value($var )." '" ;
13621362 $nl -> set_variable_value($group , $var , $val );
1363- $log -> verbose_message(" CLM sim_year_range is $nl_flags ->{'sim_year_range'}" );
13641363 }
1364+ $log -> verbose_message(" CLM sim_year_range is $nl_flags ->{'sim_year_range'}" );
13651365}
13661366
13671367# -------------------------------------------------------------------------------
@@ -1758,10 +1758,10 @@ sub process_namelist_inline_logic {
17581758 # ##############################
17591759 setup_logic_methane($opts , $nl_flags , $definition , $defaults , $nl );
17601760
1761- # ##############################
1762- # namelist group: ndepdyn_nml #
1763- # ##############################
1764- setup_logic_nitrogen_deposition($opts , $nl_flags , $definition , $defaults , $nl );
1761+ # #####################################################
1762+ # Handle Nitrogen Deposition either from CPL or CTSM #
1763+ # #####################################################
1764+ setup_logic_nitrogen_deposition($opts , $nl_flags , $definition , $defaults , $nl , $envxml_ref );
17651765
17661766 # #################################
17671767 # namelist group: cnmresp_inparm #
@@ -3916,12 +3916,33 @@ sub setup_logic_c14_streams {
39163916# -------------------------------------------------------------------------------
39173917
39183918sub setup_logic_nitrogen_deposition {
3919+ my ($opts , $nl_flags , $definition , $defaults , $nl , $envxml_ref ) = @_ ;
3920+
3921+ # Determine if we are using ndep from the CPL or internal to CTSM
3922+ # and if it's needed
3923+ $nl_flags -> {' ndep_from_cpl' } = logical_to_fortran( $envxml_ref -> {' CLM_NDEP_FROM_CPL' } );
3924+ if ( ($nl_flags -> {' bgc_mode' } =~/ bgc/ ) ) { # or ($nl_flags->{'bgc_mode'} =~/fates/) ) {
3925+ $nl_flags -> {' ndep_needed' } = " .true."
3926+ } else {
3927+ $nl_flags -> {' ndep_needed' } = " .false."
3928+ }
3929+ # Handle the ndep_inparm namelist in drv_flds_in
3930+ if ( &value_is_true($nl_flags -> {' ndep_from_cpl' }) && &value_is_true($nl_flags -> {' ndep_needed' }) ) {
3931+ add_default($opts , $nl_flags -> {' inputdata_rootdir' }, $definition , $defaults , $nl , " ndep_list" , val => " 'noy','nhx'" );
3932+ }
3933+ # Handle the internal ndep-streams namelist
3934+ setup_logic_nitrogen_deposition_streams($opts , $nl_flags , $definition , $defaults , $nl );
3935+ }
3936+
3937+ # -------------------------------------------------------------------------------
3938+
3939+ sub setup_logic_nitrogen_deposition_streams {
39193940 my ($opts , $nl_flags , $definition , $defaults , $nl ) = @_ ;
39203941
39213942 #
3922- # Nitrogen deposition for bgc=CN or fates
3943+ # Nitrogen deposition streams when needed to be read internally for BGC
39233944 #
3924- if ( ($nl_flags -> {' bgc_mode ' } =~ / bgc / ) ) { # or ($nl_flags->{'bgc_mode'} =~/fates/ ) ) {
3945+ if ( (not &value_is_true( $nl_flags -> {' ndep_from_cpl ' })) and &value_is_true ($nl_flags -> {' ndep_needed ' } ) ) {
39253946 add_default($opts , $nl_flags -> {' inputdata_rootdir' }, $definition , $defaults , $nl , ' ndepmapalgo' , ' phys' => $nl_flags -> {' phys' },
39263947 ' use_cn' => $nl_flags -> {' use_cn' }, ' hgrid' => $nl_flags -> {' res' },
39273948 ' clm_accelerated_spinup' => $nl_flags -> {' clm_accelerated_spinup' } );
@@ -3943,15 +3964,17 @@ sub setup_logic_nitrogen_deposition {
39433964 ' sim_year_range' => $nl_flags -> {' sim_year_range' });
39443965 }
39453966 add_default($opts , $nl_flags -> {' inputdata_rootdir' }, $definition , $defaults , $nl , ' stream_fldfilename_ndep' , ' phys' => $nl_flags -> {' phys' },
3946- ' use_cn' => $nl_flags -> {' use_cn' }, ' lnd_tuning_mode' => $nl_flags -> {' lnd_tuning_mode' },
3947- ' hgrid' => " 0.9x1.25" , ' ssp_rcp' => $nl_flags -> {' ssp_rcp' }, ' nofail' => 1 );
3967+ ' use_cn' => $nl_flags -> {' use_cn' }, ' lnd_tuning_mode' => $nl_flags -> {' lnd_tuning_mode' }, ' sim_year_range ' => $nl_flags -> { ' sim_year_range ' },
3968+ ' hgrid' => " 0.9x1.25" , ' ssp_rcp' => $nl_flags -> {' ssp_rcp' }, ' sim_year ' => $nl_flags -> { ' sim_year ' }, ' nofail' => 1 );
39483969 if ( ! defined ($nl -> get_value(' stream_fldfilename_ndep' ) ) ) {
39493970 # Also check at f19 resolution
39503971 add_default($opts , $nl_flags -> {' inputdata_rootdir' }, $definition , $defaults , $nl , ' stream_fldfilename_ndep' , ' phys' => $nl_flags -> {' phys' },
3951- ' use_cn' => $nl_flags -> {' use_cn' }, ' lnd_tuning_mode' => $nl_flags -> {' lnd_tuning_mode' },
3952- ' hgrid' => " 1.9x2.5" , ' ssp_rcp' => $nl_flags -> {' ssp_rcp' }, ' nofail' => 1 );
3972+ ' use_cn' => $nl_flags -> {' use_cn' }, ' lnd_tuning_mode' => $nl_flags -> {' lnd_tuning_mode' }, ' sim_year_range ' => $nl_flags -> { ' sim_year_range ' },
3973+ ' hgrid' => " 1.9x2.5" , ' ssp_rcp' => $nl_flags -> {' ssp_rcp' }, ' sim_year ' => $nl_flags -> { ' sim_year ' }, ' nofail' => 1 );
39533974 # If not found report an error
39543975 if ( ! defined ($nl -> get_value(' stream_fldfilename_ndep' ) ) ) {
3976+ $log -> verbose_message( " lnd_tuning_mode = " . $nl_flags -> {' lnd_tuning_mode' }, " ssp_rcp = " . $nl_flags -> {' ssp_rcp' } );
3977+ $log -> verbose_message( " sim_year = " . $nl_flags -> {' sim_year' }, " sim_year_range = " . $nl_flags -> {' sim_year_range' } );
39553978 $log -> warning(" Did NOT find the Nitrogen-deposition forcing file (stream_fldfilename_ndep) for this ssp_rcp\n " .
39563979 " One way to get around this is to point to a file for another existing ssp_rcp in your user_nl_clm file.\n " .
39573980 " If you are running with CAM and WACCM chemistry Nitrogen deposition will come through the coupler.\n " .
@@ -3974,15 +3997,15 @@ sub setup_logic_nitrogen_deposition {
39743997 }
39753998 }
39763999 } else {
3977- # If bgc is NOT CN/CNDV then make sure none of the ndep settings are set!
4000+ # If ndep is NOT required then make sure none of the ndep settings are set!
39784001 if ( defined ($nl -> get_value(' stream_year_first_ndep' )) ||
39794002 defined ($nl -> get_value(' stream_year_last_ndep' )) ||
39804003 defined ($nl -> get_value(' model_year_align_ndep' )) ||
39814004 defined ($nl -> get_value(' ndep_taxmode' )) ||
39824005 defined ($nl -> get_value(' ndep_varlist' )) ||
39834006 defined ($nl -> get_value(' stream_fldfilename_ndep' ))
39844007 ) {
3985- $log -> fatal_error(" When bgc is NOT CN or CNDV none of: stream_year_first_ndep," .
4008+ $log -> fatal_error(" When ndep isn't required or coming from the CPL none of: stream_year_first_ndep," .
39864009 " stream_year_last_ndep, model_year_align_ndep, ndep_taxmod, " .
39874010 " ndep_varlist, nor stream_fldfilename_ndep" .
39884011 " can be set!" );
@@ -5452,7 +5475,7 @@ sub write_output_files {
54525475 $log -> verbose_message(" Writing clm namelist to $outfile " );
54535476
54545477 # Drydep, fire-emission or MEGAN namelist for driver
5455- @groups = qw( drydep_inparm megan_emis_nl fire_emis_nl carma_inparm dust_emis_inparm) ;
5478+ @groups = qw( drydep_inparm megan_emis_nl fire_emis_nl carma_inparm dust_emis_inparm ndep_inparm ) ;
54565479 $outfile = " $opts ->{'dir'}/drv_flds_in" ;
54575480 $nl -> write ($outfile , ' groups' => \@groups , ' note' => " $note " );
54585481 $log -> verbose_message(" Writing @groups namelists to $outfile " );
0 commit comments