From 219c6c19e603b29fc74a80e66ee54c1e57ca0a4a Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 11 Jun 2021 15:39:08 -0600 Subject: [PATCH 01/63] Include CWD in HR --- .../SoilBiogeochemCarbonFluxType.F90 | 175 +++++++++--------- .../SoilBiogeochemDecompCascadeBGCMod.F90 | 3 +- .../SoilBiogeochemDecompMod.F90 | 1 - .../SoilBiogeochemNitrogenFluxType.F90 | 120 ++++++------ .../SoilBiogeochemPotentialMod.F90 | 13 +- 5 files changed, 142 insertions(+), 170 deletions(-) diff --git a/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 b/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 index 9c43dd4fce..0a1ae06174 100644 --- a/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 +++ b/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 @@ -243,28 +243,26 @@ subroutine InitHistory(this, bounds, carbon_type) do l = 1, ndecomp_cascade_transitions ! output the vertically integrated fluxes only as default - !-- HR fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - data1dptr => this%decomp_cascade_hr_col(:,l) - ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file - ii = 0 - do jj = 1, ndecomp_cascade_transitions - if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 - end do - if ( ii == 1 ) then - fieldname = & - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//'_HR' - else - fieldname = & - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//'_HR_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l))) - endif - longname = 'Het. Resp. from '//& - trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) - call hist_addfld1d (fname=fieldname, units='gC/m^2/s', & - avgflag='A', long_name=longname, & - ptr_col=data1dptr, default='inactive') + !-- HR fluxes + data1dptr => this%decomp_cascade_hr_col(:,l) + ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file + ii = 0 + do jj = 1, ndecomp_cascade_transitions + if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 + end do + if ( ii == 1 ) then + fieldname = & + trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//'_HR' + else + fieldname = & + trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//'_HR_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l))) endif + longname = 'Het. Resp. from '//& + trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) + call hist_addfld1d (fname=fieldname, units='gC/m^2/s', & + avgflag='A', long_name=longname, & + ptr_col=data1dptr, default='inactive') !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then @@ -281,30 +279,28 @@ subroutine InitHistory(this, bounds, carbon_type) ! output the vertically resolved fluxes if ( nlevdecomp_full > 1 ) then - !-- HR fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - data2dptr => this%decomp_cascade_hr_vr_col(:,:,l) - ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file - ii = 0 - do jj = 1, ndecomp_cascade_transitions - if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 - end do - if ( ii == 1 ) then - fieldname = & - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'_HR'//trim(vr_suffix) - else - fieldname = & - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//'_HR_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))& - //trim(vr_suffix) - endif - longname = 'Het. Resp. from '//& - trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) - call hist_addfld_decomp (fname=fieldname, units='gC/m^3/s', type2d='levdcmp', & - avgflag='A', long_name=longname, & - ptr_col=data2dptr, default='inactive') + !-- HR fluxes + data2dptr => this%decomp_cascade_hr_vr_col(:,:,l) + ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file + ii = 0 + do jj = 1, ndecomp_cascade_transitions + if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 + end do + if ( ii == 1 ) then + fieldname = & + trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'_HR'//trim(vr_suffix) + else + fieldname = & + trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//'_HR_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))& + //trim(vr_suffix) endif + longname = 'Het. Resp. from '//& + trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) + call hist_addfld_decomp (fname=fieldname, units='gC/m^3/s', type2d='levdcmp', & + avgflag='A', long_name=longname, & + ptr_col=data2dptr, default='inactive') !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then @@ -349,7 +345,7 @@ subroutine InitHistory(this, bounds, carbon_type) this%decomp_cpools_leached_col(begc:endc,:) = spval this%decomp_cpools_transport_tendency_col(begc:endc,:,:) = spval - do k = 1, ndecomp_pools + do k = 1, ndecomp_pools ! none from CWD if ( .not. decomp_cascade_con%is_cwd(k) ) then data1dptr => this%decomp_cpools_leached_col(:,k) fieldname = 'M_'//trim(decomp_cascade_con%decomp_pool_name_history(k))//'C_TO_LEACHING' @@ -403,29 +399,28 @@ subroutine InitHistory(this, bounds, carbon_type) this%decomp_cascade_ctransfer_col(begc:endc,:) = spval this%decomp_cascade_ctransfer_vr_col(begc:endc,:,:) = spval do l = 1, ndecomp_cascade_transitions - !-- HR fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - data2dptr => this%decomp_cascade_hr_vr_col(:,:,l) - ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file - ii = 0 - do jj = 1, ndecomp_cascade_transitions - if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 - end do - if ( ii == 1 ) then - fieldname = 'C13_'//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'_HR'//trim(vr_suffix) - else - fieldname = 'C13_'//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'_HR_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))//& - trim(vr_suffix) - endif - longname = 'C13 Het. Resp. from '& - //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) - call hist_addfld_decomp (fname=fieldname, units='gC13/m^3', type2d='levdcmp', & - avgflag='A', long_name=longname, & - ptr_col=data2dptr, default='inactive') + !-- HR fluxes + data2dptr => this%decomp_cascade_hr_vr_col(:,:,l) + ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file + ii = 0 + do jj = 1, ndecomp_cascade_transitions + if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 + end do + if ( ii == 1 ) then + fieldname = 'C13_'//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'_HR'//trim(vr_suffix) + else + fieldname = 'C13_'//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'_HR_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))//& + trim(vr_suffix) endif + longname = 'C13 Het. Resp. from '& + //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) + call hist_addfld_decomp (fname=fieldname, units='gC13/m^3', type2d='levdcmp', & + avgflag='A', long_name=longname, & + ptr_col=data2dptr, default='inactive') + !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then data2dptr => this%decomp_cascade_ctransfer_vr_col(:,:,l) @@ -473,31 +468,29 @@ subroutine InitHistory(this, bounds, carbon_type) this%decomp_cascade_ctransfer_vr_col(begc:endc,:,:) = spval do l = 1, ndecomp_cascade_transitions - !-- HR fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - data2dptr => this%decomp_cascade_hr_vr_col(:,:,l) - - ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file - ii = 0 - do jj = 1, ndecomp_cascade_transitions - if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 - end do - if ( ii == 1 ) then - fieldname = 'C14_'//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'_HR'//trim(vr_suffix) - else - fieldname = 'C14_'//& - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'_HR_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))& - //trim(vr_suffix) - endif - longname = 'C14 Het. Resp. from '& - //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) - call hist_addfld_decomp (fname=fieldname, units='gC14/m^3', type2d='levdcmp', & - avgflag='A', long_name=longname, & - ptr_col=data2dptr, default='inactive') + !-- HR fluxes + data2dptr => this%decomp_cascade_hr_vr_col(:,:,l) + + ! check to see if there are multiple pathways that include respiration, and if so, note that in the history file + ii = 0 + do jj = 1, ndecomp_cascade_transitions + if ( decomp_cascade_con%cascade_donor_pool(jj) == decomp_cascade_con%cascade_donor_pool(l) ) ii = ii+1 + end do + if ( ii == 1 ) then + fieldname = 'C14_'//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'_HR'//trim(vr_suffix) + else + fieldname = 'C14_'//& + trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'_HR_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))& + //trim(vr_suffix) endif + longname = 'C14 Het. Resp. from '& + //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l))) + call hist_addfld_decomp (fname=fieldname, units='gC14/m^3', type2d='levdcmp', & + avgflag='A', long_name=longname, & + ptr_col=data2dptr, default='inactive') !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then diff --git a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 index 589263aa74..318b014c20 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 @@ -9,8 +9,7 @@ module SoilBiogeochemDecompCascadeBGCMod use shr_kind_mod , only : r8 => shr_kind_r8 use shr_const_mod , only : SHR_CONST_TKFRZ use shr_log_mod , only : errMsg => shr_log_errMsg - use clm_varpar , only : nlevsoi, nlevgrnd - use clm_varpar , only : nlevdecomp, ndecomp_cascade_transitions, ndecomp_pools, ndecomp_pools_max + use clm_varpar , only : nlevdecomp, ndecomp_pools_max use clm_varpar , only : i_litr_min, i_litr_max, i_met_lit, i_cwd use clm_varctl , only : iulog, spinup_state, anoxia, use_lch4, use_vertsoilc, use_fates use clm_varcon , only : zsoi diff --git a/src/soilbiogeochem/SoilBiogeochemDecompMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompMod.F90 index a6d960e487..43b817c65b 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompMod.F90 @@ -127,7 +127,6 @@ subroutine SoilBiogeochemDecomp (bounds, num_soilc, filter_soilc, w_scalar => soilbiogeochem_carbonflux_inst%w_scalar_col , & ! Input: [real(r8) (:,:) ] fraction by which decomposition is limited by moisture availability decomp_cascade_hr_vr => soilbiogeochem_carbonflux_inst%decomp_cascade_hr_vr_col , & ! Output: [real(r8) (:,:,:) ] vertically-resolved het. resp. from decomposing C pools (gC/m3/s) decomp_cascade_ctransfer_vr => soilbiogeochem_carbonflux_inst%decomp_cascade_ctransfer_vr_col , & ! Output: [real(r8) (:,:,:) ] vertically-resolved het. resp. from decomposing C pools (gC/m3/s) - decomp_k => soilbiogeochem_carbonflux_inst%decomp_k_col , & ! Output: [real(r8) (:,:,:) ] rate constant for decomposition (1./sec) phr_vr => soilbiogeochem_carbonflux_inst%phr_vr_col , & ! Input: [real(r8) (:,:) ] potential HR (gC/m3/s) fphr => soilbiogeochem_carbonflux_inst%fphr_col & ! Output: [real(r8) (:,:) ] fraction of potential SOM + LITTER heterotrophic ) diff --git a/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 b/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 index d852c35496..53e89fcbb5 100644 --- a/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 +++ b/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 @@ -334,27 +334,25 @@ subroutine InitHistory(this, bounds) do l = 1, ndecomp_cascade_transitions ! vertically integrated fluxes - !-- mineralization/immobilization fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - this%decomp_cascade_sminn_flux_col(begc:endc,l) = spval - data1dptr => this%decomp_cascade_sminn_flux_col(:,l) - if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then - fieldname = 'SMINN_TO_'//& - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l))) - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& - 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - else - fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'N_TO_SMINN' - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) - endif - call hist_addfld1d (fname=fieldname, units='gN/m^2', & - avgflag='A', long_name=longname, & - ptr_col=data1dptr, default='inactive') - end if + !-- mineralization/immobilization fluxes + this%decomp_cascade_sminn_flux_col(begc:endc,l) = spval + data1dptr => this%decomp_cascade_sminn_flux_col(:,l) + if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then + fieldname = 'SMINN_TO_'//& + trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l))) + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& + 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) + else + fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'N_TO_SMINN' + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) + endif + call hist_addfld1d (fname=fieldname, units='gN/m^2', & + avgflag='A', long_name=longname, & + ptr_col=data1dptr, default='inactive') !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then @@ -371,27 +369,25 @@ subroutine InitHistory(this, bounds) ! vertically resolved fluxes if ( nlevdecomp_full > 1 ) then - !-- mineralization/immobilization fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - this%decomp_cascade_sminn_flux_vr_col(begc:endc,:,l) = spval - data2dptr => this%decomp_cascade_sminn_flux_vr_col(:,:,l) - if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then - fieldname = 'SMINN_TO_'& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l)))//trim(vr_suffix) - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& - 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - else - fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'N_TO_SMINN'//trim(vr_suffix) - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) - endif - call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & - avgflag='A', long_name=longname, & - ptr_col=data2dptr, default='inactive') + !-- mineralization/immobilization fluxes + this%decomp_cascade_sminn_flux_vr_col(begc:endc,:,l) = spval + data2dptr => this%decomp_cascade_sminn_flux_vr_col(:,:,l) + if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then + fieldname = 'SMINN_TO_'& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l)))//trim(vr_suffix) + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& + 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) + else + fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'N_TO_SMINN'//trim(vr_suffix) + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) endif + call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & + avgflag='A', long_name=longname, & + ptr_col=data2dptr, default='inactive') !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then @@ -422,7 +418,7 @@ subroutine InitHistory(this, bounds) ptr_col=this%som_n_leached_col, default='inactive') do k = 1, ndecomp_pools - if ( .not. decomp_cascade_con%is_cwd(k) ) then + if ( .not. decomp_cascade_con%is_cwd(k) ) then ! none from CWD this%decomp_npools_leached_col(begc:endc,k) = spval data1dptr => this%decomp_npools_leached_col(:,k) fieldname = 'M_'//trim(decomp_cascade_con%decomp_pool_name_history(k))//'N_TO_LEACHING' @@ -443,32 +439,28 @@ subroutine InitHistory(this, bounds) if (.not. use_nitrif_denitrif) then do l = 1, ndecomp_cascade_transitions - !-- denitrification fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - this%sminn_to_denit_decomp_cascade_col(begc:endc,l) = spval - data1dptr => this%sminn_to_denit_decomp_cascade_col(:,l) - fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l)) + !-- denitrification fluxes + this%sminn_to_denit_decomp_cascade_col(begc:endc,l) = spval + data1dptr => this%sminn_to_denit_decomp_cascade_col(:,l) + fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l)) + longname = 'denitrification for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l)))//& + 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) + call hist_addfld1d (fname=fieldname, units='gN/m^2', & + avgflag='A', long_name=longname, & + ptr_col=data1dptr, default='inactive') + + if ( nlevdecomp_full > 1 ) then + !-- denitrification fluxes + this%sminn_to_denit_decomp_cascade_vr_col(begc:endc,:,l) = spval + data2dptr => this%sminn_to_denit_decomp_cascade_vr_col(:,:,l) + fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l))//trim(vr_suffix) longname = 'denitrification for decomp. of '& //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l)))//& 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - call hist_addfld1d (fname=fieldname, units='gN/m^2', & + call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & avgflag='A', long_name=longname, & - ptr_col=data1dptr, default='inactive') - endif - - if ( nlevdecomp_full > 1 ) then - !-- denitrification fluxes (none from CWD) - if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then - this%sminn_to_denit_decomp_cascade_vr_col(begc:endc,:,l) = spval - data2dptr => this%sminn_to_denit_decomp_cascade_vr_col(:,:,l) - fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l))//trim(vr_suffix) - longname = 'denitrification for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l)))//& - 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & - avgflag='A', long_name=longname, & - ptr_col=data2dptr, default='inactive') - endif + ptr_col=data2dptr, default='inactive') endif end do end if diff --git a/src/soilbiogeochem/SoilBiogeochemPotentialMod.F90 b/src/soilbiogeochem/SoilBiogeochemPotentialMod.F90 index 70d9289e7d..d7d6ed727f 100644 --- a/src/soilbiogeochem/SoilBiogeochemPotentialMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemPotentialMod.F90 @@ -109,7 +109,6 @@ subroutine SoilBiogeochemPotential (bounds, num_soilc, filter_soilc, & floating_cn_ratio_decomp_pools => decomp_cascade_con%floating_cn_ratio_decomp_pools , & ! Input: [logical (:) ] TRUE => pool has fixed C:N ratio initial_cn_ratio => decomp_cascade_con%initial_cn_ratio , & ! Input: [real(r8) (:) ] c:n ratio for initialization of pools - fpi_vr => soilbiogeochem_state_inst%fpi_vr_col , & ! Input: [real(r8) (:,:) ] fraction of potential immobilization (no units) rf_decomp_cascade => soilbiogeochem_state_inst%rf_decomp_cascade_col , & ! Input: [real(r8) (:,:,:) ] respired fraction in decomposition step (frac) pathfrac_decomp_cascade => soilbiogeochem_state_inst%pathfrac_decomp_cascade_col , & ! Input: [real(r8) (:,:,:) ] what fraction of C leaving a given pool passes through a given transition (frac) @@ -117,21 +116,11 @@ subroutine SoilBiogeochemPotential (bounds, num_soilc, filter_soilc, & decomp_cpools_vr => soilbiogeochem_carbonstate_inst%decomp_cpools_vr_col , & ! Input: [real(r8) (:,:,:) ] (gC/m3) vertically-resolved decomposing (litter, cwd, soil) c pools - decomp_cascade_ntransfer_vr => soilbiogeochem_nitrogenflux_inst%decomp_cascade_ntransfer_vr_col , & ! Output: [real(r8) (:,:,:) ] vert-res transfer of N from donor to receiver pool along decomp. cascade (gN/m3/s) - decomp_cascade_sminn_flux_vr => soilbiogeochem_nitrogenflux_inst%decomp_cascade_sminn_flux_vr_col , & ! Output: [real(r8) (:,:,:) ] vert-res mineral N flux for transition along decomposition cascade (gN/m3/s) potential_immob_vr => soilbiogeochem_nitrogenflux_inst%potential_immob_vr_col , & ! Output: [real(r8) (:,:) ] - sminn_to_denit_decomp_cascade_vr => soilbiogeochem_nitrogenflux_inst%sminn_to_denit_decomp_cascade_vr_col , & ! Output: [real(r8) (:,:,:) ] gross_nmin_vr => soilbiogeochem_nitrogenflux_inst%gross_nmin_vr_col , & ! Output: [real(r8) (:,:) ] - net_nmin_vr => soilbiogeochem_nitrogenflux_inst%net_nmin_vr_col , & ! Output: [real(r8) (:,:) ] - gross_nmin => soilbiogeochem_nitrogenflux_inst%gross_nmin_col , & ! Output: [real(r8) (:) ] gross rate of N mineralization (gN/m2/s) - net_nmin => soilbiogeochem_nitrogenflux_inst%net_nmin_col , & ! Output: [real(r8) (:) ] net rate of N mineralization (gN/m2/s) - w_scalar => soilbiogeochem_carbonflux_inst%w_scalar_col , & ! Input: [real(r8) (:,:) ] fraction by which decomposition is limited by moisture availability - decomp_cascade_hr_vr => soilbiogeochem_carbonflux_inst%decomp_cascade_hr_vr_col , & ! Output: [real(r8) (:,:,:) ] vertically-resolved het. resp. from decomposing C pools (gC/m3/s) - decomp_cascade_ctransfer_vr => soilbiogeochem_carbonflux_inst%decomp_cascade_ctransfer_vr_col , & ! Output: [real(r8) (:,:,:) ] vertically-resolved het. resp. from decomposing C pools (gC/m3/s) decomp_k => soilbiogeochem_carbonflux_inst%decomp_k_col , & ! Output: [real(r8) (:,:,:) ] rate constant for decomposition (1./sec) - phr_vr => soilbiogeochem_carbonflux_inst%phr_vr_col , & ! Output: [real(r8) (:,:) ] potential HR (gC/m3/s) - fphr => soilbiogeochem_carbonflux_inst%fphr_col & ! Output: [real(r8) (:,:) ] fraction of potential SOM + LITTER heterotrophic + phr_vr => soilbiogeochem_carbonflux_inst%phr_vr_col & ! Output: [real(r8) (:,:) ] potential HR (gC/m3/s) ) if ( .not. use_fates ) then From 97aacfe42c9f46ef61ae4a99b32a56da97b1bd1a Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 14 Jun 2021 10:28:26 -0600 Subject: [PATCH 02/63] refactorization of streams --- bld/CLMBuildNamelist.pm | 71 +- bld/namelist_files/namelist_defaults_ctsm.xml | 1081 +++++++++-------- .../namelist_definition_ctsm.xml | 31 + cime_config/buildnml | 6 +- src/biogeochem/SatellitePhenologyMod.F90 | 349 +----- src/biogeophys/CanopyStateType.F90 | 14 +- src/{main => cpl/mct}/FireDataBaseType.F90 | 0 .../mct}/SoilMoistureStreamMod.F90 | 0 .../mct}/UrbanTimeVarType.F90 | 0 .../mct}/ch4FInundatedStreamType.F90 | 4 +- src/cpl/mct/laiStreamMod.F90 | 241 ++++ src/{main => cpl/mct}/ndepStreamMod.F90 | 1 + src/cpl/nuopc/FireDataBaseType.F90 | 468 +++++++ src/cpl/nuopc/SoilMoistureStreamMod.F90 | 30 +- src/cpl/nuopc/UrbanTimeVarType.F90 | 294 +++++ src/cpl/nuopc/ch4FInundatedStreamType.F90 | 388 ++++++ src/cpl/nuopc/laiStreamMod.F90 | 252 ++++ src/cpl/nuopc/ndepStreamMod.F90 | 270 ++++ src/main/clm_driver.F90 | 2 +- 19 files changed, 2623 insertions(+), 879 deletions(-) rename src/{main => cpl/mct}/FireDataBaseType.F90 (100%) rename src/{biogeophys => cpl/mct}/SoilMoistureStreamMod.F90 (100%) rename src/{biogeophys => cpl/mct}/UrbanTimeVarType.F90 (100%) rename src/{biogeochem => cpl/mct}/ch4FInundatedStreamType.F90 (99%) create mode 100644 src/cpl/mct/laiStreamMod.F90 rename src/{main => cpl/mct}/ndepStreamMod.F90 (99%) create mode 100644 src/cpl/nuopc/FireDataBaseType.F90 create mode 100644 src/cpl/nuopc/UrbanTimeVarType.F90 create mode 100644 src/cpl/nuopc/ch4FInundatedStreamType.F90 create mode 100644 src/cpl/nuopc/laiStreamMod.F90 create mode 100644 src/cpl/nuopc/ndepStreamMod.F90 diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 359909f94b..82cb6f167a 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -83,6 +83,7 @@ REQUIRED OPTIONS (default 2000) -structure "structure" The overall structure being used [ standard | fast ] OPTIONS + -driver "value" mct or nuopc -bgc "value" Build CLM with BGC package [ sp | cn | bgc | fates ] (default is sp). CLM Biogeochemistry mode @@ -242,7 +243,7 @@ sub process_commandline { # Save the command line arguments to the script. NOTE: this must be # before GetOptions() is called because items are removed from from # the array! - $nl_flags->{'cmdline'} = "@ARGV"; + $nl_flags->{'cmdline'} = "@ARGV\n"; my %opts = ( cimeroot => undef, config => "config_cache.xml", @@ -252,6 +253,7 @@ sub process_commandline { co2_type => undef, co2_ppmv => undef, clm_demand => "null", + driver => "mct", help => 0, glc_nec => "default", glc_use_antarctica => 0, @@ -284,6 +286,7 @@ sub process_commandline { GetOptions( "cimeroot=s" => \$opts{'cimeroot'}, + "driver=s" => \$opts{'driver'}, "clm_demand=s" => \$opts{'clm_demand'}, "co2_ppmv=f" => \$opts{'co2_ppmv'}, "co2_type=s" => \$opts{'co2_type'}, @@ -2925,15 +2928,13 @@ sub setup_logic_methane { if ( &value_is_true($nl_flags->{'use_lch4'}) ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'finundation_method', 'use_cn'=>$nl_flags->{'use_cn'}, 'use_fates'=>$nl_flags->{'use_fates'} ); - # - # Get resolution to read streams file for - # my $finundation_method = remove_leading_and_trailing_quotes($nl->get_value('finundation_method' )); - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'finundation_res', - 'finundation_method'=>$finundation_method ); add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_ch4finundated', - 'finundation_method'=>$finundation_method, - 'finundation_res'=>$nl->get_value('finundation_res') ); + 'finundation_method'=>$finundation_method); + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_ch4finundated', + 'finundation_method'=>$finundation_method); + } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'use_aereoxid_prog', 'use_cn'=>$nl_flags->{'use_cn'}, 'use_fates'=>$nl_flags->{'use_fates'} ); # @@ -3216,6 +3217,8 @@ sub setup_logic_nitrogen_deposition { # # Nitrogen deposition for bgc=CN # + print "DEBUG: input driver is $opts->{'driver'}\n"; + print "DEBUG: input mask is $opts->{'mask'}\n"; if ( $nl_flags->{'bgc_mode'} =~/cn|bgc/ ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'ndepmapalgo', 'phys'=>$nl_flags->{'phys'}, @@ -3242,17 +3245,32 @@ sub setup_logic_nitrogen_deposition { 'use_cn'=>$nl_flags->{'use_cn'}, 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'}, 'hgrid'=>"0.9x1.25", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'nofail'=>1 ); if ( ! defined($nl->get_value('stream_fldfilename_ndep') ) ) { - # Also check at f19 resolution - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_ndep', 'phys'=>$nl_flags->{'phys'}, - 'use_cn'=>$nl_flags->{'use_cn'}, 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'}, - 'hgrid'=>"1.9x2.5", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'nofail'=>1 ); - # If not found report an error - if ( ! defined($nl->get_value('stream_fldfilename_ndep') ) ) { - $log->warning("Did NOT find the Nitrogen-deposition forcing file (stream_fldfilename_ndep) for this ssp_rcp\n" . - "One way to get around this is to point to a file for another existing ssp_rcp in your user_nl_clm file.\n" . - "If you are running with CAM and WACCM chemistry Nitrogen deposition will come through the coupler.\n" . - "This file won't be used, so it doesn't matter what it points to -- but it's required to point to something.\n" ) - } + # Also check at f19 resolution + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_ndep', 'phys'=>$nl_flags->{'phys'}, + 'use_cn'=>$nl_flags->{'use_cn'}, 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'}, + 'hgrid'=>"1.9x2.5", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'nofail'=>1 ); + # If not found report an error + if ( ! defined($nl->get_value('stream_fldfilename_ndep') ) ) { + $log->warning("Did NOT find the Nitrogen-deposition forcing file (stream_fldfilename_ndep) for this ssp_rcp\n" . + "One way to get around this is to point to a file for another existing ssp_rcp in your user_nl_clm file.\n" . + "If you are running with CAM and WACCM chemistry Nitrogen deposition will come through the coupler.\n" . + "This file won't be used, so it doesn't matter what it points to -- but it's required to point to something.\n" ) + } + } + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_ndep', 'phys'=>$nl_flags->{'phys'}, + 'use_cn'=>$nl_flags->{'use_cn'}, 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'}, + 'hgrid'=>"0.9x1.25", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'nofail'=>1 ); + if ( ! defined($nl->get_value('stream_fldfilename_ndep') ) ) { + # Also check at f19 resolution + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_ndep', 'phys'=>$nl_flags->{'phys'}, + 'use_cn'=>$nl_flags->{'use_cn'}, 'lnd_tuning_mode'=>$nl_flags->{'lnd_tuning_mode'}, + 'hgrid'=>"1.9x2.5", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'}, 'nofail'=>1 ); + # If not found report an error + if ( ! defined($nl->get_value('stream_meshfile_ndep') ) ) { + $log->warning("Did NOT find the Nitrogen-deposition meshfile file (stream_meshfilee_ndep) for this ssp_rcp. \n") + } + } } } else { # If bgc is NOT CN/CNDV then make sure none of the ndep settings are set! @@ -3363,6 +3381,9 @@ sub setup_logic_popd_streams { } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_popdens', 'phys'=>$nl_flags->{'phys'}, 'cnfireson'=>$nl_flags->{'cnfireson'}, 'hgrid'=>"0.5x0.5", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_popdens', 'hgrid'=>"0.5x0.5"); + } } else { # If bgc is NOT CN/CNDV or fire_method==nofire then make sure none of the popdens settings are set if ( defined($nl->get_value('stream_year_first_popdens')) || @@ -3399,6 +3420,10 @@ sub setup_logic_urbantv_streams { } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_urbantv', 'phys'=>$nl_flags->{'phys'}, 'hgrid'=>"0.9x1.25" ); + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_urbantv', 'phys'=>$nl_flags->{'phys'}, + 'hgrid'=>"0.9x1.25" ); + } } #------------------------------------------------------------------------------- @@ -3425,6 +3450,10 @@ sub setup_logic_lightning_streams { } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_lightng', 'hgrid'=>$nl_flags->{'light_res'} ); + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_lightng', + 'hgrid'=>$nl_flags->{'light_res'} ); + } } else { # If bgc is NOT CN/CNDV then make sure none of the Lightng settings are set if ( defined($nl->get_value('stream_year_first_lightng')) || @@ -3582,6 +3611,10 @@ sub setup_logic_lai_streams { } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_lai', 'hgrid'=>"360x720cru" ); + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_lai', + 'hgrid'=>"360x720cru" ); + } } } else { # If bgc is CN/CNDV then make sure none of the LAI settings are set diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index d805f11dee..adc6845efa 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -349,10 +349,10 @@ attributes from the config_cache.xml file (with keys converted to upper-case). 2 3 -60. +60. 1.e-8 -1.e-1 -1.e-2 +1.e-1 +1.e-2 42 1 1 @@ -611,7 +611,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). .true. - + .false. - @@ -1272,7 +1272,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts lnd/clm2/surfdata_map/release-clm5.0.30/landuse.timeseries_C96_SSP5-8.5_78pfts_CMIP6_simyr1850-2100_c200317.nc -lnd/clm2/surfdata_map/release-clm5.0.30/landuse.timeseries_ne30np4_SSP5-8.5_78pfts_CMIP6_simyr1850-2100_c200426.nc lnd/clm2/surfdata_map/release-clm5.0.30/landuse.timeseries_ne30np4.pg2_SSP5-8.5_78pfts_CMIP6_simyr1850-2100_c200426.nc @@ -1512,6 +1512,9 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts lnd/clm2/ndepdata/fndep_clm_f09_g17.CMIP6-SSP3-7.0-WACCM_1849-2101_monthly_c191007.nc +share/meshes/fv1.9x2.5_141008_ESMFmesh_c20191001.nc +share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc + cycle NDEP_month limit @@ -1524,7 +1527,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts NDEP_month limit -bilinear +bilinear nn nn @@ -1547,13 +1550,15 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts 0 + .false. 2001 2013 2001 -lnd/clm2/lai_streams/MODISPFTLAI_0.5x0.5_c140711.nc - +lnd/clm2/lai_streams/MODISPFTLAI_0.5x0.5_c140711.nc +lnd/clm2/lai_streams/MODISPFTLAI_0.5x0_ESMFmesh_cdf5_090621.nc + bilinear nn @@ -1589,6 +1594,8 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts 0001 atm/datm7/NASA_LIS/clmforc.Li_2012_climo1995-2011.T62.lnfm_Total_c140423.nc +atm/datm7/NASA_LIS/clmforc.Li_2012_climo1995-2011.T62_ESMFmesh_cdf5_110621.nc + atm/datm7/NASA_LIS/clmforc.Li_2016_climo1995-2013.360x720.lnfm_Total_c160825.nc bilinear @@ -1650,6 +1657,8 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts 2000 2000 +lnd/clm2/firedata/clmforc.Li_2017_HYDEv3.2_CMIP6_hdm_0.5x0_ESMFmesh_cdf5_100621.nc + lnd/clm2/firedata/clmforc.Li_2017_HYDEv3.2_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2016_c180202.nc lnd/clm2/firedata/clmforc.Li_2018_SSP1_CMIP6_hdm_0.5x0.5_AVHRR_simyr1850-2100_c181205.nc @@ -1737,14 +1746,20 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts 1850 2106 -lnd/clm2/urbandata/CLM50_tbuildmax_Oleson_2016_0.9x1.25_simyr1849-2106_c160923.nc +lnd/clm2/urbandata/CLM50_tbuildmax_Oleson_2016_0.9x1_ESMFmesh_cdf5_100621.nc -lnd/clm2/urbandata/CLM50_tbuildmax_Oleson_2016_0.9x1.25_simyr1849-2106_c160923.nc +lnd/clm2/urbandata/CLM50_tbuildmax_Oleson_2016_0.9x1_ESMFmesh_cdf5_100621.nc -lnd/clm2/urbandata/CLM45_tbuildmax_Oleson_2016_0.9x1.25_simyr1849-2106_c160923.nc +lnd/clm2/urbandata/CLM50_tbuildmax_Oleson_2016_0.9x1_ESMFmesh_cdf5_100621.nc nn @@ -1789,440 +1804,440 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts - + -lnd/clm2/mappingdata/maps/0.1x0.1/map_0.1x0.1_nomask_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_0.5x0.5_AVHRR_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_0.5x0.5_MODIS_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_0.25x0.25_MODIS_to_0.1x0.1_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_0.5x0.5_nomask_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_10x10min_nomask_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_3x3min_MODIS_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_3x3min_MODIS-wCsp_to_0.1x0.1_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_5x5min_IGBP-GSDP_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_5x5min_ISRIC-WISE_to_0.1x0.1_nomask_aave_da_c120406.nc lnd/clm2/mappingdata/maps/0.1x0.1/map_5x5min_ORNL-Soil_to_0.1x0.1_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_5x5min_nomask_to_0.1x0.1_nomask_aave_da_c120406.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_ne120np4_nomask_to_0.1x0.1_nomask_aave_da_c120711.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_4x5_nomask_to_0.1x0.1_nomask_aave_da_c120706.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_1.9x2.5_nomask_to_0.1x0.1_nomask_aave_da_c120709.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_ne240np4_nomask_to_0.1x0.1_nomask_aave_da_c120711.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_0.9x1.25_GRDC_to_0.1x0.1_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_360x720_cruncep_to_0.1x0.1_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/0.1x0.1/map_1km-merge-10min_HYDRO1K-merge-nomask_to_0.1x0.1_nomask_aave_da_c130405.nc - + - + -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_0.5x0.5_AVHRR_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_0.5x0.5_MODIS_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_0.25x0.25_MODIS_to_1x1_asphaltjungleNJ_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_0.5x0.5_nomask_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_10x10min_nomask_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_3x3min_MODIS_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_3x3min_MODISv2_to_1x1_asphaltjungleNJ_nomask_aave_da_c190507.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_3x3min_MODIS-wCsp_to_1x1_asphaltjungleNJ_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_3x3min_USGS_to_1x1_asphaltjungleNJ_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_3x3min_LandScan2004_to_1x1_asphaltjungleNJ_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_5x5min_IGBP-GSDP_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_5x5min_ISRIC-WISE_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_5x5min_ORNL-Soil_to_1x1_asphaltjungleNJ_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_5x5min_nomask_to_1x1_asphaltjungleNJ_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_3x3min_GLOBE-Gardner_to_1x1_asphaltjungleNJ_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_asphaltjungleNJ_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_0.9x1.25_GRDC_to_1x1_asphaltjungleNJ_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_360x720_cruncep_to_1x1_asphaltjungleNJ_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_asphaltjungleNJ/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_asphaltjungleNJ_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/1x1_brazil/map_0.5x0.5_AVHRR_to_1x1_brazil_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_0.5x0.5_MODIS_to_1x1_brazil_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_0.25x0.25_MODIS_to_1x1_brazil_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_0.5x0.5_nomask_to_1x1_brazil_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_10x10min_nomask_to_1x1_brazil_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_3x3min_MODIS_to_1x1_brazil_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_3x3min_MODISv2_to_1x1_brazil_nomask_aave_da_c190507.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_3x3min_MODIS-wCsp_to_1x1_brazil_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_3x3min_USGS_to_1x1_brazil_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_3x3min_LandScan2004_to_1x1_brazil_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_5x5min_IGBP-GSDP_to_1x1_brazil_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_5x5min_ISRIC-WISE_to_1x1_brazil_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_brazil/map_5x5min_ORNL-Soil_to_1x1_brazil_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_5x5min_nomask_to_1x1_brazil_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_brazil/map_3x3min_GLOBE-Gardner_to_1x1_brazil_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_brazil/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_brazil_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_0.9x1.25_GRDC_to_1x1_brazil_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_360x720_cruncep_to_1x1_brazil_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_brazil/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_brazil_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_0.5x0.5_AVHRR_to_1x1_camdenNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_0.5x0.5_MODIS_to_1x1_camdenNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_0.25x0.25_MODIS_to_1x1_camdenNJ_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_0.5x0.5_nomask_to_1x1_camdenNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_10x10min_nomask_to_1x1_camdenNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_3x3min_MODIS_to_1x1_camdenNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_3x3min_MODISv2_to_1x1_camdenNJ_nomask_aave_da_c190506.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_3x3min_MODIS-wCsp_to_1x1_camdenNJ_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_3x3min_USGS_to_1x1_camdenNJ_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_3x3min_LandScan2004_to_1x1_camdenNJ_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_5x5min_IGBP-GSDP_to_1x1_camdenNJ_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_5x5min_ISRIC-WISE_to_1x1_camdenNJ_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_5x5min_ORNL-Soil_to_1x1_camdenNJ_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_5x5min_nomask_to_1x1_camdenNJ_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_3x3min_GLOBE-Gardner_to_1x1_camdenNJ_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_camdenNJ_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_0.9x1.25_GRDC_to_1x1_camdenNJ_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_360x720_cruncep_to_1x1_camdenNJ_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_camdenNJ/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_camdenNJ_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_0.5x0.5_AVHRR_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_0.5x0.5_MODIS_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_0.25x0.25_MODIS_to_1x1_mexicocityMEX_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_0.5x0.5_nomask_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_10x10min_nomask_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_3x3min_MODIS_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_3x3min_MODISv2_to_1x1_mexicocityMEX_nomask_aave_da_c190507.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_3x3min_MODIS-wCsp_to_1x1_mexicocityMEX_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_3x3min_USGS_to_1x1_mexicocityMEX_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_3x3min_LandScan2004_to_1x1_mexicocityMEX_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_5x5min_IGBP-GSDP_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_5x5min_ISRIC-WISE_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_5x5min_ORNL-Soil_to_1x1_mexicocityMEX_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_5x5min_nomask_to_1x1_mexicocityMEX_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_3x3min_GLOBE-Gardner_to_1x1_mexicocityMEX_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_mexicocityMEX_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_0.9x1.25_GRDC_to_1x1_mexicocityMEX_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_360x720_cruncep_to_1x1_mexicocityMEX_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_mexicocityMEX/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_mexicocityMEX_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/1x1_numaIA/map_0.5x0.5_AVHRR_to_1x1_numaIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_0.5x0.5_MODIS_to_1x1_numaIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_0.25x0.25_MODIS_to_1x1_numaIA_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_0.5x0.5_nomask_to_1x1_numaIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_10x10min_nomask_to_1x1_numaIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_3x3min_MODIS_to_1x1_numaIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_3x3min_MODISv2_to_1x1_numaIA_nomask_aave_da_c190507.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_3x3min_MODIS-wCsp_to_1x1_numaIA_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_3x3min_USGS_to_1x1_numaIA_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_3x3min_LandScan2004_to_1x1_numaIA_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_5x5min_IGBP-GSDP_to_1x1_numaIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_5x5min_ISRIC-WISE_to_1x1_numaIA_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_numaIA/map_5x5min_ORNL-Soil_to_1x1_numaIA_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_5x5min_nomask_to_1x1_numaIA_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_numaIA/map_3x3min_GLOBE-Gardner_to_1x1_numaIA_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_numaIA/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_numaIA_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_0.9x1.25_GRDC_to_1x1_numaIA_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_360x720_cruncep_to_1x1_numaIA_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_numaIA/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_numaIA_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_0.5x0.5_AVHRR_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_0.5x0.5_MODIS_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_0.25x0.25_MODIS_to_1x1_smallvilleIA_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_0.5x0.5_nomask_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_10x10min_nomask_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_3x3min_MODIS_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_3x3min_MODISv2_to_1x1_smallvilleIA_nomask_aave_da_c190507.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_3x3min_MODIS-wCsp_to_1x1_smallvilleIA_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_3x3min_USGS_to_1x1_smallvilleIA_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_3x3min_LandScan2004_to_1x1_smallvilleIA_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_5x5min_IGBP-GSDP_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_5x5min_ISRIC-WISE_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_5x5min_ORNL-Soil_to_1x1_smallvilleIA_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_5x5min_nomask_to_1x1_smallvilleIA_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_3x3min_GLOBE-Gardner_to_1x1_smallvilleIA_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_smallvilleIA_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_0.9x1.25_GRDC_to_1x1_smallvilleIA_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_360x720_cruncep_to_1x1_smallvilleIA_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_smallvilleIA/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_smallvilleIA_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_0.5x0.5_AVHRR_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_0.5x0.5_MODIS_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_0.25x0.25_MODIS_to_1x1_urbanc_alpha_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_0.5x0.5_nomask_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_10x10min_nomask_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_3x3min_MODIS_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_3x3min_MODISv2_to_1x1_urbanc_alpha_nomask_aave_da_c190507.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_3x3min_MODIS-wCsp_to_1x1_urbanc_alpha_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_3x3min_USGS_to_1x1_urbanc_alpha_nomask_aave_da_c120928.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_3x3min_LandScan2004_to_1x1_urbanc_alpha_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_5x5min_IGBP-GSDP_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_5x5min_ISRIC-WISE_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_5x5min_ORNL-Soil_to_1x1_urbanc_alpha_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_5x5min_nomask_to_1x1_urbanc_alpha_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_3x3min_GLOBE-Gardner_to_1x1_urbanc_alpha_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_urbanc_alpha_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_0.9x1.25_GRDC_to_1x1_urbanc_alpha_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_360x720_cruncep_to_1x1_urbanc_alpha_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_urbanc_alpha/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_urbanc_alpha_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_0.5x0.5_AVHRR_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_0.5x0.5_MODIS_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_0.25x0.25_MODIS_to_1x1_vancouverCAN_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_0.5x0.5_nomask_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_10x10min_nomask_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_3x3min_MODIS_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_3x3min_MODISv2_to_1x1_vancouverCAN_nomask_aave_da_c190506.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_3x3min_MODIS-wCsp_to_1x1_vancouverCAN_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_3x3min_USGS_to_1x1_vancouverCAN_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_3x3min_LandScan2004_to_1x1_vancouverCAN_nomask_aave_da_c121114.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_5x5min_IGBP-GSDP_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_5x5min_ISRIC-WISE_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_5x5min_ORNL-Soil_to_1x1_vancouverCAN_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_5x5min_nomask_to_1x1_vancouverCAN_nomask_aave_da_c120717.nc lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_3x3min_GLOBE-Gardner_to_1x1_vancouverCAN_nomask_aave_da_c120927.nc lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_3x3min_GLOBE-Gardner-mergeGIS_to_1x1_vancouverCAN_nomask_aave_da_c120927.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_0.9x1.25_GRDC_to_1x1_vancouverCAN_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_360x720_cruncep_to_1x1_vancouverCAN_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1x1_vancouverCAN/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1x1_vancouverCAN_nomask_aave_da_c130403.nc - + - + -lnd/clm2/mappingdata/maps/0.47x0.63/map_0.25x0.25_MODIS_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_0.5x0.5_AVHRR_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_0.5x0.5_MODIS_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_0.9x1.25_GRDC_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_10x10min_IGBPmergeICESatGIS_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_10x10min_nomask_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_1km-merge-10min_HYDRO1K-merge-nomask_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_360x720cru_cruncep_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_3x3min_GLOBE-Gardner-mergeGIS_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_3x3min_GLOBE-Gardner_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_3x3min_LandScan2004_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_3x3min_MODISv2_to_0.47x0.63_nomask_aave_da_c190505.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_3x3min_MODIS-wCsp_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_3x3min_USGS_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_5x5min_IGBP-GSDP_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_5x5min_ISRIC-WISE_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_5x5min_nomask_to_0.47x0.63_nomask_aave_da_c170914.nc -lnd/clm2/mappingdata/maps/0.47x0.63/map_5x5min_ORNL-Soil_to_0.47x0.63_nomask_aave_da_c170914.nc - + -lnd/clm2/mappingdata/maps/0.9x1.25/map_0.5x0.5_landuse_to_0.9x1.25_aave_da_110307.nc -lnd/clm2/mappingdata/maps/0.9x1.25/map_0.25x0.25_MODIS_to_0.9x1.25_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/0.9x1.25/map_0.5x0.5_lanwat_to_0.9x1.25_aave_da_110307.nc lnd/clm2/mappingdata/maps/0.9x1.25/map_10minx10min_topo_to_0.9x1.25_aave_da_110630.nc @@ -2236,7 +2251,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/0.9x1.25/map_5x5min_ORNL-Soil_to_0.9x1.25_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/0.9x1.25/map_3x3min_MODIS_to_0.9x1.25_nomask_aave_da_c120523.nc -lnd/clm2/mappingdata/maps/0.9x1.25/map_3x3min_MODISv2_to_0.9x1.25_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/0.9x1.25/map_3x3min_MODIS-wCsp_to_0.9x1.25_nomask_aave_da_c160425.nc @@ -2248,18 +2263,18 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/0.9x1.25/map_3x3min_GLOBE-Gardner_to_0.9x1.25_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/0.9x1.25/map_3x3min_GLOBE-Gardner-mergeGIS_to_0.9x1.25_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/0.9x1.25/map_0.9x1.25_GRDC_to_0.9x1.25_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/0.9x1.25/map_360x720_cruncep_to_0.9x1.25_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/0.9x1.25/map_1km-merge-10min_HYDRO1K-merge-nomask_to_0.9x1.25_nomask_aave_da_c130405.nc -lnd/clm2/mappingdata/maps/1.9x2.5/map_0.5x0.5_landuse_to_1.9x2.5_aave_da_110307.nc -lnd/clm2/mappingdata/maps/1.9x2.5/map_0.25x0.25_MODIS_to_1.9x2.5_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/1.9x2.5/map_0.5x0.5_lanwat_to_1.9x2.5_aave_da_110307.nc lnd/clm2/mappingdata/maps/1.9x2.5/map_10minx10min_topo_to_1.9x2.5_aave_da_110307.nc @@ -2273,7 +2288,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/1.9x2.5/map_5x5min_ORNL-Soil_to_1.9x2.5_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/1.9x2.5/map_3x3min_MODIS_to_1.9x2.5_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/1.9x2.5/map_3x3min_MODISv2_to_1.9x2.5_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/1.9x2.5/map_3x3min_MODIS-wCsp_to_1.9x2.5_nomask_aave_da_c160425.nc @@ -2285,19 +2300,19 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/1.9x2.5/map_3x3min_GLOBE-Gardner_to_1.9x2.5_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/1.9x2.5/map_3x3min_GLOBE-Gardner-mergeGIS_to_1.9x2.5_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/1.9x2.5/map_0.9x1.25_GRDC_to_1.9x2.5_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/1.9x2.5/map_360x720_cruncep_to_1.9x2.5_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/1.9x2.5/map_1km-merge-10min_HYDRO1K-merge-nomask_to_1.9x2.5_nomask_aave_da_c130405.nc -lnd/clm2/mappingdata/maps/10x15/map_0.5x0.5_landuse_to_10x15_aave_da_110307.nc -lnd/clm2/mappingdata/maps/10x15/map_0.25x0.25_MODIS_to_10x15_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/10x15/map_0.5x0.5_lanwat_to_10x15_aave_da_110307.nc lnd/clm2/mappingdata/maps/10x15/map_10minx10min_topo_to_10x15_aave_da_110307.nc @@ -2311,7 +2326,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/10x15/map_5x5min_ORNL-Soil_to_10x15_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/10x15/map_3x3min_MODIS_to_10x15_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/10x15/map_3x3min_MODISv2_to_10x15_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/10x15/map_3x3min_MODIS-wCsp_to_10x15_nomask_aave_da_c160425.nc @@ -2323,18 +2338,18 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/10x15/map_3x3min_GLOBE-Gardner_to_10x15_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/10x15/map_3x3min_GLOBE-Gardner-mergeGIS_to_10x15_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/10x15/map_0.9x1.25_GRDC_to_10x15_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/10x15/map_360x720_cruncep_to_10x15_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/10x15/map_1km-merge-10min_HYDRO1K-merge-nomask_to_10x15_nomask_aave_da_c130411.nc -lnd/clm2/mappingdata/maps/360x720/map_0.5x0.5_MODIS_to_360x720_nomask_aave_da_c120830.nc -lnd/clm2/mappingdata/maps/360x720/map_0.25x0.25_MODIS_to_360x720cru_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/360x720/map_0.5x0.5_AVHRR_to_360x720_nomask_aave_da_c120830.nc lnd/clm2/mappingdata/maps/360x720/map_10x10min_nomask_to_360x720_nomask_aave_da_c120830.nc @@ -2348,7 +2363,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/360x720/map_5x5min_ORNL-Soil_to_360x720cru_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/360x720/map_3x3min_MODIS_to_360x720_nomask_aave_da_c120830.nc -lnd/clm2/mappingdata/maps/360x720/map_3x3min_MODISv2_to_360x720cru_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/360x720/map_3x3min_MODIS-wCsp_to_360x720cru_nomask_aave_da_c160425.nc @@ -2360,19 +2375,19 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/360x720/map_3x3min_GLOBE-Gardner_to_360x720_nomask_aave_da_c121128.nc lnd/clm2/mappingdata/maps/360x720/map_3x3min_GLOBE-Gardner-mergeGIS_to_360x720_nomask_aave_da_c121128.nc -lnd/clm2/mappingdata/maps/360x720/map_0.9x1.25_GRDC_to_360x720_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/360x720/map_360x720_cruncep_to_360x720_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/360x720/map_1km-merge-10min_HYDRO1K-merge-nomask_to_360x720_nomask_aave_da_c130403.nc -lnd/clm2/mappingdata/maps/512x1024/map_0.5x0.5_MODIS_to_512x1024_nomask_aave_da_c110920.nc -lnd/clm2/mappingdata/maps/512x1024/map_0.25x0.25_MODIS_to_512x1024_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/512x1024/map_0.5x0.5_AVHRR_to_512x1024_nomask_aave_da_c110920.nc lnd/clm2/mappingdata/maps/512x1024/map_10x10min_nomask_to_512x1024_nomask_aave_da_c110920.nc @@ -2386,7 +2401,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/512x1024/map_5x5min_ORNL-Soil_to_512x1024_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/512x1024/map_3x3min_MODIS_to_512x1024_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/512x1024/map_3x3min_MODISv2_to_512x1024_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/512x1024/map_3x3min_MODIS-wCsp_to_512x1024_nomask_aave_da_c160425.nc @@ -2398,19 +2413,19 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/512x1024/map_3x3min_GLOBE-Gardner_to_512x1024_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/512x1024/map_3x3min_GLOBE-Gardner-mergeGIS_to_512x1024_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/512x1024/map_0.9x1.25_GRDC_to_512x1024_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/512x1024/map_360x720_cruncep_to_512x1024_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/512x1024/map_1km-merge-10min_HYDRO1K-merge-nomask_to_512x1024_nomask_aave_da_c130403.nc -lnd/clm2/mappingdata/maps/128x256/map_0.5x0.5_MODIS_to_128x256_nomask_aave_da_c110920.nc -lnd/clm2/mappingdata/maps/128x256/map_0.25x0.25_MODIS_to_128x256_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/128x256/map_0.5x0.5_AVHRR_to_128x256_nomask_aave_da_c110920.nc lnd/clm2/mappingdata/maps/128x256/map_10x10min_nomask_to_128x256_nomask_aave_da_c110920.nc @@ -2424,7 +2439,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/128x256/map_5x5min_ORNL-Soil_to_128x256_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/128x256/map_3x3min_MODIS_to_128x256_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/128x256/map_3x3min_MODISv2_to_128x256_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/128x256/map_3x3min_MODIS-wCsp_to_128x256_nomask_aave_da_c160425.nc @@ -2436,19 +2451,19 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/128x256/map_3x3min_GLOBE-Gardner_to_128x256_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/128x256/map_3x3min_GLOBE-Gardner-mergeGIS_to_128x256_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/128x256/map_0.9x1.25_GRDC_to_128x256_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/128x256/map_360x720_cruncep_to_128x256_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/128x256/map_1km-merge-10min_HYDRO1K-merge-nomask_to_128x256_nomask_aave_da_c130403.nc -lnd/clm2/mappingdata/maps/64x128/map_0.5x0.5_MODIS_to_64x128_nomask_aave_da_c110920.nc -lnd/clm2/mappingdata/maps/64x128/map_0.25x0.25_MODIS_to_64x128_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/64x128/map_0.5x0.5_AVHRR_to_64x128_nomask_aave_da_c110920.nc lnd/clm2/mappingdata/maps/64x128/map_10x10min_nomask_to_64x128_nomask_aave_da_c110920.nc @@ -2462,7 +2477,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/64x128/map_5x5min_ORNL-Soil_to_64x128_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/64x128/map_3x3min_MODIS_to_64x128_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/64x128/map_3x3min_MODISv2_to_64x128_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/64x128/map_3x3min_MODIS-wCsp_to_64x128_nomask_aave_da_c160428.nc @@ -2474,18 +2489,18 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/64x128/map_3x3min_GLOBE-Gardner_to_64x128_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/64x128/map_3x3min_GLOBE-Gardner-mergeGIS_to_64x128_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/64x128/map_0.9x1.25_GRDC_to_64x128_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/64x128/map_360x720_cruncep_to_64x128_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/64x128/map_1km-merge-10min_HYDRO1K-merge-nomask_to_64x128_nomask_aave_da_c130403.nc -lnd/clm2/mappingdata/maps/48x96/map_0.5x0.5_MODIS_to_48x96_nomask_aave_da_c110822.nc -lnd/clm2/mappingdata/maps/48x96/map_0.25x0.25_MODIS_to_48x96_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/48x96/map_0.5x0.5_AVHRR_to_48x96_nomask_aave_da_c110822.nc lnd/clm2/mappingdata/maps/48x96/map_10x10min_nomask_to_48x96_nomask_aave_da_c110822.nc @@ -2499,7 +2514,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/48x96/map_5x5min_ORNL-Soil_to_48x96_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/48x96/map_3x3min_MODIS_to_48x96_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/48x96/map_3x3min_MODISv2_to_48x96_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/48x96/map_3x3min_MODIS-wCsp_to_48x96_nomask_aave_da_c160425.nc @@ -2511,18 +2526,18 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/48x96/map_3x3min_GLOBE-Gardner_to_48x96_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/48x96/map_3x3min_GLOBE-Gardner-mergeGIS_to_48x96_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/48x96/map_0.9x1.25_GRDC_to_48x96_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/48x96/map_360x720_cruncep_to_48x96_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/48x96/map_1km-merge-10min_HYDRO1K-merge-nomask_to_48x96_nomask_aave_da_c130405.nc -lnd/clm2/mappingdata/maps/4x5/map_0.5x0.5_MODIS_to_4x5_nomask_aave_da_c110822.nc -lnd/clm2/mappingdata/maps/4x5/map_0.25x0.25_MODIS_to_4x5_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/4x5/map_0.5x0.5_AVHRR_to_4x5_nomask_aave_da_c110822.nc lnd/clm2/mappingdata/maps/4x5/map_10x10min_nomask_to_4x5_nomask_aave_da_c110822.nc @@ -2536,7 +2551,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/4x5/map_5x5min_ORNL-Soil_to_4x5_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/4x5/map_3x3min_MODIS_to_4x5_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/4x5/map_3x3min_MODISv2_to_4x5_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/4x5/map_3x3min_MODIS-wCsp_to_4x5_nomask_aave_da_c160425.nc @@ -2548,18 +2563,18 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/4x5/map_3x3min_GLOBE-Gardner_to_4x5_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/4x5/map_3x3min_GLOBE-Gardner-mergeGIS_to_4x5_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/4x5/map_0.9x1.25_GRDC_to_4x5_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/4x5/map_360x720_cruncep_to_4x5_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/4x5/map_1km-merge-10min_HYDRO1K-merge-nomask_to_4x5_nomask_aave_da_c130411.nc -lnd/clm2/mappingdata/maps/0.23x0.31/map_0.5x0.5_MODIS_to_0.23x0.31_nomask_aave_da_c110920.nc -lnd/clm2/mappingdata/maps/0.23x0.31/map_0.25x0.25_MODIS_to_0.23x0.31_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/0.23x0.31/map_0.5x0.5_AVHRR_to_0.23x0.31_nomask_aave_da_c110920.nc lnd/clm2/mappingdata/maps/0.23x0.31/map_10x10min_nomask_to_0.23x0.31_nomask_aave_da_c110920.nc @@ -2573,7 +2588,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/0.23x0.31/map_5x5min_ORNL-Soil_to_0.23x0.31_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/0.23x0.31/map_3x3min_MODIS_to_0.23x0.31_nomask_aave_da_c110930.nc -lnd/clm2/mappingdata/maps/0.23x0.31/map_3x3min_MODISv2_to_0.23x0.31_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/0.23x0.31/map_3x3min_MODIS-wCsp_to_0.23x0.31_nomask_aave_da_c160425.nc @@ -2587,19 +2602,19 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/0.23x0.31/map_3x3min_GLOBE-Gardner-mergeGIS_to_0.23x0.31_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/0.23x0.31/map_3x3min_LandScan2004_to_0.23x0.31_nomask_aave_da_c120518.nc -lnd/clm2/mappingdata/maps/0.23x0.31/map_0.9x1.25_GRDC_to_0.23x0.31_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/0.23x0.31/map_360x720_cruncep_to_0.23x0.31_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/0.23x0.31/map_1km-merge-10min_HYDRO1K-merge-nomask_to_0.23x0.31_nomask_aave_da_c130405.nc -lnd/clm2/mappingdata/maps/2.5x3.33/map_0.5x0.5_MODIS_to_2.5x3.33_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/2.5x3.33/map_0.25x0.25_MODIS_to_2.5x3.33_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/2.5x3.33/map_0.5x0.5_AVHRR_to_2.5x3.33_nomask_aave_da_c110823.nc lnd/clm2/mappingdata/maps/2.5x3.33/map_10x10min_nomask_to_2.5x3.33_nomask_aave_da_c110823.nc @@ -2613,7 +2628,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/2.5x3.33/map_5x5min_ORNL-Soil_to_2.5x3.33_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/2.5x3.33/map_3x3min_MODIS_to_2.5x3.33_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/2.5x3.33/map_3x3min_MODISv2_to_2.5x3.33_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/2.5x3.33/map_3x3min_MODIS-wCsp_to_2.5x3.33_nomask_aave_da_c160425.nc @@ -2625,63 +2640,63 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/2.5x3.33/map_3x3min_GLOBE-Gardner_to_2.5x3.33_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/2.5x3.33/map_3x3min_GLOBE-Gardner-mergeGIS_to_2.5x3.33_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/2.5x3.33/map_0.9x1.25_GRDC_to_2.5x3.33_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/2.5x3.33/map_360x720_cruncep_to_2.5x3.33_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/2.5x3.33/map_1km-merge-10min_HYDRO1K-merge-nomask_to_2.5x3.33_nomask_aave_da_c130405.nc - + -lnd/clm2/mappingdata/maps/0.5x0.5/map_0.5x0.5_AVHRR_to_0.5x0.5_nomask_aave_da_c111021.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_0.25x0.25_MODIS_to_0.5x0.5_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_0.5x0.5_MODIS_to_0.5x0.5_nomask_aave_da_c111021.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_0.5x0.5_nomask_to_0.5x0.5_nomask_aave_da_c111021.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_10x10min_IGBPmergeICESatGIS_to_0.5x0.5_nomask_aave_da_c111021.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_10x10min_nomask_to_0.5x0.5_nomask_aave_da_c111021.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_5x5min_IGBP-GSDP_to_0.5x0.5_nomask_aave_da_c111021.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_5x5min_nomask_to_0.5x0.5_nomask_aave_da_c111021.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_3x3min_MODIS_to_0.5x0.5_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_3x3min_MODIS-wCsp_to_0.5x0.5_nomask_aave_da_c160425.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_5x5min_ISRIC-WISE_to_0.5x0.5_nomask_aave_da_c111115.nc lnd/clm2/mappingdata/maps/0.5x0.5/map_5x5min_ORNL-Soil_to_0.5x0.5_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_3x3min_LandScan2004_to_0.5x0.5_nomask_aave_da_c120518.nc lnd/clm2/mappingdata/maps/0.5x0.5/map_3x3min_GLOBE-Gardner_to_0.5x0.5_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/0.5x0.5/map_3x3min_GLOBE-Gardner-mergeGIS_to_0.5x0.5_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_0.1x0.1_nomask_to_0.5x0.5_nomask_aave_da_c120706.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_ne240np4_nomask_to_0.5x0.5_nomask_aave_da_c120711.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_4x5_nomask_to_0.5x0.5_nomask_aave_da_c120706.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_1.9x2.5_nomask_to_0.5x0.5_nomask_aave_da_c120709.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_ne120np4_nomask_to_0.5x0.5_nomask_aave_da_c120711.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_3x3_USGS_nomask_to_0.5x0.5_nomask_aave_da_c120912.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_0.9x1.25_GRDC_to_0.5x0.5_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_360x720_cruncep_to_0.5x0.5_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/0.5x0.5/map_1km-merge-10min_HYDRO1K-merge-nomask_to_0.5x0.5_nomask_aave_da_c130405.nc @@ -2882,11 +2897,11 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/C384/map_C384_nomask_to_0.5x0.5_nomask_aave_da_c181018.nc -lnd/clm2/mappingdata/maps/ne4np4/map_0.5x0.5_MODIS_to_ne4np4_nomask_aave_da_c110923.nc -lnd/clm2/mappingdata/maps/ne4np4/map_0.25x0.25_MODIS_to_ne4np4_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/ne4np4/map_0.5x0.5_AVHRR_to_ne4np4_nomask_aave_da_c110923.nc lnd/clm2/mappingdata/maps/ne4np4/map_10x10min_nomask_to_ne4np4_nomask_aave_da_c110923.nc @@ -2900,7 +2915,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne4np4/map_5x5min_ORNL-Soil_to_ne4np4_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/ne4np4/map_3x3min_MODIS_to_ne4np4_nomask_aave_da_c120906.nc -lnd/clm2/mappingdata/maps/ne4np4/map_3x3min_MODISv2_to_ne4np4_nomask_aave_da_c190514.nc lnd/clm2/mappingdata/maps/ne4np4/map_3x3min_MODIS-wCsp_to_ne4np4_nomask_aave_da_c160425.nc @@ -2914,23 +2929,23 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne4np4/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne4np4_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/ne4np4/map_3x3min_LandScan2004_to_ne4np4_nomask_aave_da_c120518.nc -lnd/clm2/mappingdata/maps/ne4np4/map_0.9x1.25_GRDC_to_ne4np4_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/ne4np4/map_360x720_cruncep_to_ne4np4_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/ne4np4/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne4np4_nomask_aave_da_c130411.nc lnd/clm2/mappingdata/maps/ne4np4/map_ne4np4_nomask_to_0.5x0.5_nomask_aave_da_c110923.nc -lnd/clm2/mappingdata/maps/ne16np4/map_0.5x0.5_MODIS_to_ne16np4_nomask_aave_da_c110922.nc -lnd/clm2/mappingdata/maps/ne16np4/map_0.25x0.25_MODIS_to_ne16np4_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/ne16np4/map_3x3min_MODISv2_to_ne16np4_nomask_aave_da_c190514.nc -lnd/clm2/mappingdata/maps/ne16np4/map_0.5x0.5_AVHRR_to_ne16np4_nomask_aave_da_c110922.nc lnd/clm2/mappingdata/maps/ne16np4/map_10x10min_nomask_to_ne16np4_nomask_aave_da_c110922.nc @@ -2954,21 +2969,21 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne16np4/map_3x3min_GLOBE-Gardner_to_ne16np4_nomask_aave_da_c120924.nc lnd/clm2/mappingdata/maps/ne16np4/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne16np4_nomask_aave_da_c120924.nc -lnd/clm2/mappingdata/maps/ne16np4/map_0.9x1.25_GRDC_to_ne16np4_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/ne16np4/map_360x720_cruncep_to_ne16np4_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/ne16np4/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne16np4_nomask_aave_da_c130408.nc lnd/clm2/mappingdata/maps/ne16np4/map_ne16np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc -lnd/clm2/mappingdata/maps/ne30np4/map_0.5x0.5_landuse_to_ne30np4_aave_da_110320.nc -lnd/clm2/mappingdata/maps/ne30np4/map_0.25x0.25_MODIS_to_ne30np4_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/ne30np4/map_0.5x0.5_lanwat_to_ne30np4_aave_da_110320.nc lnd/clm2/mappingdata/maps/ne30np4/map_10minx10min_topo_to_ne30np4_aave_da_110320.nc @@ -2982,7 +2997,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne30np4/map_5x5min_ORNL-Soil_to_ne30np4_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/ne30np4/map_3x3min_MODIS_to_ne30np4_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/ne30np4/map_3x3min_MODISv2_to_ne30np4_nomask_aave_da_c190507.nc lnd/clm2/mappingdata/maps/ne30np4/map_3x3min_MODIS-wCsp_to_ne30np4_nomask_aave_da_c160425.nc @@ -2994,21 +3009,21 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne30np4/map_3x3min_GLOBE-Gardner_to_ne30np4_nomask_aave_da_c120924.nc lnd/clm2/mappingdata/maps/ne30np4/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne30np4_nomask_aave_da_c120924.nc -lnd/clm2/mappingdata/maps/ne30np4/map_0.9x1.25_GRDC_to_ne30np4_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/ne30np4/map_360x720_cruncep_to_ne30np4_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/ne30np4/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne30np4_nomask_aave_da_c130405.nc lnd/clm2/mappingdata/maps/ne30np4/map_ne30np4_to_0.5x0.5rtm_aave_da_110320.nc -lnd/clm2/mappingdata/maps/ne60np4/map_0.5x0.5_MODIS_to_ne60np4_nomask_aave_da_c110922.nc -lnd/clm2/mappingdata/maps/ne60np4/map_0.25x0.25_MODIS_to_ne60np4_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/ne60np4/map_0.5x0.5_AVHRR_to_ne60np4_nomask_aave_da_c110922.nc lnd/clm2/mappingdata/maps/ne60np4/map_10x10min_nomask_to_ne60np4_nomask_aave_da_c110922.nc @@ -3022,7 +3037,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne60np4/map_5x5min_ORNL-Soil_to_ne60np4_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/ne60np4/map_3x3min_MODIS_to_ne60np4_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/ne60np4/map_3x3min_MODISv2_to_ne60np4_nomask_aave_da_c190507.nc lnd/clm2/mappingdata/maps/ne60np4/map_3x3min_MODIS-wCsp_to_ne60np4_nomask_aave_da_c160425.nc @@ -3034,20 +3049,20 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne60np4/map_3x3min_GLOBE-Gardner_to_ne60np4_nomask_aave_da_c120924.nc lnd/clm2/mappingdata/maps/ne60np4/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne60np4_nomask_aave_da_c120924.nc -lnd/clm2/mappingdata/maps/ne60np4/map_0.9x1.25_GRDC_to_ne60np4_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/ne60np4/map_360x720_cruncep_to_ne60np4_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/ne60np4/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne60np4_nomask_aave_da_c130405.nc lnd/clm2/mappingdata/maps/ne60np4/map_ne60np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc -lnd/clm2/mappingdata/maps/ne120np4/map_0.5x0.5_landuse_to_ne120np4_aave_da_110320.nc -lnd/clm2/mappingdata/maps/ne120np4/map_0.25x0.25_MODIS_to_ne120np4_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/ne120np4/map_0.5x0.5_lanwat_to_ne120np4_aave_da_110320.nc lnd/clm2/mappingdata/maps/ne120np4/map_10minx10min_topo_to_ne120np4_aave_da_110320.nc @@ -3061,7 +3076,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne120np4/map_5minx5min_irrig_to_ne120np4_aave_da_110817.nc lnd/clm2/mappingdata/maps/ne120np4/map_3x3min_MODIS_to_ne120np4_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/ne120np4/map_3x3min_MODISv2_to_ne120np4_nomask_aave_da_c190514.nc lnd/clm2/mappingdata/maps/ne120np4/map_3x3min_MODIS-wCsp_to_ne120np4_nomask_aave_da_c160425.nc @@ -3075,20 +3090,20 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne120np4/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne120np4_nomask_aave_da_c120924.nc lnd/clm2/mappingdata/maps/ne120np4/map_3x3min_USGS_to_ne120np4_nomask_aave_da_c120913.nc -lnd/clm2/mappingdata/maps/ne120np4/map_0.9x1.25_GRDC_to_ne120np4_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/ne120np4/map_360x720_cruncep_to_ne120np4_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/ne120np4/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne120np4_nomask_aave_da_c130405.nc - + -lnd/clm2/mappingdata/maps/ne120np4/map_0.1x0.1_nomask_to_ne120np4_nomask_aave_da_c120706.nc - + @@ -3134,52 +3149,52 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts - + -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_5x5min_ORNL-Soil_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_3x3min_MODIS-wCsp_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_5x5min_ISRIC-WISE_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_0.9x1.25_GRDC_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_5x5min_nomask_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_3x3min_GLOBE-Gardner_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_3x3min_LandScan2004_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_360x720cru_cruncep_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_5x5min_IGBP-GSDP_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_3x3min_USGS_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_10x10min_nomask_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_3x3min_MODISv2_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_0.5x0.5_AVHRR_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_0.25x0.25_MODIS_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_0.5x0.5_MODIS_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne0np4CONUS.ne30x8/map_10x10min_IGBPmergeICESatGIS_to_ne0np4CONUS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/5x5_amazon/map_0.5x0.5_MODIS_to_5x5_amazon_nomask_aave_da_c110920.nc -lnd/clm2/mappingdata/maps/5x5_amazon/map_0.25x0.25_MODIS_to_5x5_amazon_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/5x5_amazon/map_0.5x0.5_AVHRR_to_5x5_amazon_nomask_aave_da_c110920.nc lnd/clm2/mappingdata/maps/5x5_amazon/map_10x10min_nomask_to_5x5_amazon_nomask_aave_da_c110920.nc @@ -3193,7 +3208,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/5x5_amazon/map_5x5min_ORNL-Soil_to_5x5_amazon_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/5x5_amazon/map_3x3min_MODIS_to_5x5_amazon_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/5x5_amazon/map_3x3min_MODISv2_to_5x5_amazon_nomask_aave_da_c190505.nc lnd/clm2/mappingdata/maps/5x5_amazon/map_3x3min_MODIS-wCsp_to_5x5_amazon_nomask_aave_da_c160425.nc @@ -3205,18 +3220,18 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/5x5_amazon/map_3x3min_GLOBE-Gardner_to_5x5_amazon_nomask_aave_da_c120923.nc lnd/clm2/mappingdata/maps/5x5_amazon/map_3x3min_GLOBE-Gardner-mergeGIS_to_5x5_amazon_nomask_aave_da_c120923.nc -lnd/clm2/mappingdata/maps/5x5_amazon/map_0.9x1.25_GRDC_to_5x5_amazon_nomask_aave_da_c130309.nc -lnd/clm2/mappingdata/maps/5x5_amazon/map_360x720_cruncep_to_5x5_amazon_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/5x5_amazon/map_1km-merge-10min_HYDRO1K-merge-nomask_to_5x5_amazon_nomask_aave_da_c130403.nc -lnd/clm2/mappingdata/maps/ne240np4/map_0.5x0.5_MODIS_to_ne240np4_nomask_aave_da_c110922.nc -lnd/clm2/mappingdata/maps/ne240np4/map_0.25x0.25_MODIS_to_ne240np4_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/ne240np4/map_0.5x0.5_AVHRR_to_ne240np4_nomask_aave_da_c110922.nc lnd/clm2/mappingdata/maps/ne240np4/map_10x10min_nomask_to_ne240np4_nomask_aave_da_c110922.nc @@ -3230,7 +3245,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne240np4/map_5x5min_ORNL-Soil_to_ne240np4_nomask_aave_da_c170706.nc lnd/clm2/mappingdata/maps/ne240np4/map_3x3min_MODIS_to_ne240np4_nomask_aave_da_c111111.nc -lnd/clm2/mappingdata/maps/ne240np4/map_3x3min_MODISv2_to_ne240np4_nomask_aave_da_c190514.nc lnd/clm2/mappingdata/maps/ne240np4/map_3x3min_MODIS-wCsp_to_ne240np4_nomask_aave_da_c160425.nc @@ -3242,359 +3257,359 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts >lnd/clm2/mappingdata/maps/ne240np4/map_3x3min_GLOBE-Gardner_to_ne240np4_nomask_aave_da_c120925.nc lnd/clm2/mappingdata/maps/ne240np4/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne240np4_nomask_aave_da_c120925.nc -lnd/clm2/mappingdata/maps/ne240np4/map_0.9x1.25_GRDC_to_ne240np4_nomask_aave_da_c130308.nc -lnd/clm2/mappingdata/maps/ne240np4/map_360x720_cruncep_to_ne240np4_nomask_aave_da_c130326.nc -lnd/clm2/mappingdata/maps/ne240np4/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne240np4_nomask_aave_da_c130405.nc lnd/clm2/mappingdata/maps/ne240np4/map_ne240np4_nomask_to_0.5x0.5_nomask_aave_da_c110922.nc - + -lnd/clm2/mappingdata/maps/0.125x0.125/map_0.5x0.5_AVHRR_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_0.5x0.5_MODIS_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_0.25x0.25_MODIS_to_0.125x0.125_nomask_aave_da_c170321.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_0.9x1.25_GRDC_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_10x10min_IGBPmergeICESatGIS_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_10x10min_nomask_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_1km-merge-10min_HYDRO1K-merge-nomask_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_360x720cru_cruncep_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_3x3min_GLOBE-Gardner-mergeGIS_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_3x3min_GLOBE-Gardner_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_3x3min_LandScan2004_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_3x3min_MODIS_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_3x3min_MODISv2_to_0.125x0.125_nomask_aave_da_c190613.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_3x3min_MODIS-wCsp_to_0.125x0.125_nomask_aave_da_c160427.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_3x3min_USGS_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_5x5min_IGBP-GSDP_to_0.125x0.125_nomask_aave_da_c140702.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_5x5min_ISRIC-WISE_to_0.125x0.125_nomask_aave_da_c140702.nc lnd/clm2/mappingdata/maps/0.125x0.125/map_5x5min_ORNL-Soil_to_0.125x0.125_nomask_aave_da_c170706.nc -lnd/clm2/mappingdata/maps/0.125x0.125/map_5x5min_nomask_to_0.125x0.125_nomask_aave_da_c140702.nc - + -lnd/clm2/mappingdata/maps/94x192/map_3x3min_USGS_to_94x192_nomask_aave_da_c120926.nc -lnd/clm2/mappingdata/maps/94x192/map_0.5x0.5_nomask_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_5x5min_ORNL-Soil_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_94x192_nomask_to_0.5x0.5_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_5x5min_IGBP-GSDP_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_3x3min_MODIS-wCsp_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_1km-merge-10min_HYDRO1K-merge-nomask_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_0.5x0.5_MODIS_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_5x5min_nomask_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_0.5x0.5_USGS_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_0.9x1.25_GRDC_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_10x10min_nomask_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_10x10min_IGBPmergeICESatGIS_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_3x3min_LandScan2004_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_360x720cru_cruncep_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_3x3min_GLOBE-Gardner_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_0.25x0.25_MODIS_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_0.5x0.5_AVHRR_to_94x192_nomask_aave_da_c110823.nc -lnd/clm2/mappingdata/maps/94x192/map_5x5min_ISRIC-WISE_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_3x3min_GLOBE-Gardner-mergeGIS_to_94x192_nomask_aave_da_c190521.nc -lnd/clm2/mappingdata/maps/94x192/map_3x3min_MODISv2_to_94x192_nomask_aave_da_c190521.nc - + -lnd/clm2/mappingdata/maps/ARCTIC/map_3x3min_USGS_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_0.9x1.25_GRDC_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_360x720cru_cruncep_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_5x5min_ISRIC-WISE_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_0.5x0.5_AVHRR_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_3x3min_GLOBE-Gardner_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_5x5min_nomask_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_5x5min_IGBP-GSDP_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_0.5x0.5_MODIS_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_3x3min_MODISv2_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_0.25x0.25_MODIS_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_3x3min_MODIS-wCsp_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_10x10min_nomask_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_5x5min_ORNL-Soil_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_3x3min_LandScan2004_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTIC/map_10x10min_IGBPmergeICESatGIS_to_ne0np4.ARCTIC.ne30x4_nomask_aave_da_c200426.nc - + - + -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_5x5min_nomask_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_0.5x0.5_MODIS_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_3x3min_MODISv2_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_5x5min_ORNL-Soil_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_3x3min_MODIS-wCsp_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_0.5x0.5_AVHRR_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_3x3min_GLOBE-Gardner_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_10x10min_nomask_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_5x5min_ISRIC-WISE_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_360x720cru_cruncep_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_10x10min_IGBPmergeICESatGIS_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_5x5min_IGBP-GSDP_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_0.25x0.25_MODIS_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_3x3min_USGS_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_0.9x1.25_GRDC_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ARCTICGRIS/map_3x3min_LandScan2004_to_ne0np4.ARCTICGRIS.ne30x8_nomask_aave_da_c200426.nc - + - + -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_5x5min_nomask_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_3x3min_MODIS-wCsp_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_5x5min_IGBP-GSDP_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_3x3min_LandScan2004_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_360x720cru_cruncep_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_3x3min_USGS_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_0.9x1.25_GRDC_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_0.5x0.5_AVHRR_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_10x10min_IGBPmergeICESatGIS_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_0.5x0.5_MODIS_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_5x5min_ISRIC-WISE_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_3x3min_MODISv2_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_3x3min_GLOBE-Gardner_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_5x5min_ORNL-Soil_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_10x10min_nomask_to_ne30np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30np4.pg2/map_0.25x0.25_MODIS_to_ne30np4.pg2_nomask_aave_da_c200426.nc - + - + -lnd/clm2/mappingdata/maps/ne30pg3/map_3x3min_USGS_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_0.25x0.25_MODIS_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_5x5min_ORNL-Soil_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_3x3min_LandScan2004_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_5x5min_nomask_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_0.9x1.25_GRDC_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_3x3min_MODISv2_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_5x5min_ISRIC-WISE_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_5x5min_IGBP-GSDP_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_3x3min_MODIS-wCsp_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_3x3min_GLOBE-Gardner_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_10x10min_IGBPmergeICESatGIS_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_360x720cru_cruncep_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_10x10min_nomask_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_0.5x0.5_MODIS_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne30np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne30pg3/map_0.5x0.5_AVHRR_to_ne30np4.pg3_nomask_aave_da_c200426.nc - + - + -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_10x10min_nomask_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_5x5min_ISRIC-WISE_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_360x720cru_cruncep_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_5x5min_IGBP-GSDP_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_0.25x0.25_MODIS_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_5x5min_nomask_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_3x3min_USGS_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_3x3min_LandScan2004_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_0.5x0.5_MODIS_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_3x3min_MODISv2_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_10x10min_IGBPmergeICESatGIS_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_0.9x1.25_GRDC_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_0.5x0.5_AVHRR_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_5x5min_ORNL-Soil_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_3x3min_MODIS-wCsp_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_3x3min_GLOBE-Gardner_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne120np4.pg2_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg2/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne120np4.pg2_nomask_aave_da_c200426.nc - + - + -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_0.5x0.5_MODIS_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_5x5min_ORNL-Soil_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_10x10min_IGBPmergeICESatGIS_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_0.25x0.25_MODIS_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_10x10min_nomask_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_1km-merge-10min_HYDRO1K-merge-nomask_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_3x3min_MODIS-wCsp_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_360x720cru_cruncep_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_3x3min_LandScan2004_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_0.5x0.5_AVHRR_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_3x3min_USGS_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_3x3min_GLOBE-Gardner-mergeGIS_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_3x3min_GLOBE-Gardner_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_0.9x1.25_GRDC_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_5x5min_IGBP-GSDP_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_5x5min_ISRIC-WISE_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_5x5min_nomask_to_ne120np4.pg3_nomask_aave_da_c200426.nc -lnd/clm2/mappingdata/maps/ne120np4.pg3/map_3x3min_MODISv2_to_ne120np4.pg3_nomask_aave_da_c200426.nc - + @@ -3612,14 +3627,16 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts .true. .true. -1.9x2.5 -1.9x2.5 - -lnd/clm2/paramdata/finundated_inversiondata_0.9x1.25_c170706.nc -lnd/clm2/paramdata/finundated_inversiondata_0.9x1.25_c170706.nc +lnd/clm2/paramdata/finundated_inversiondata_0.9x1_ESMFmesh_cdf5_130621.nc +lnd/clm2/paramdata/finundated_inversiondata_0.9x1_ESMFmesh_cdf5_130621.nc + diff --git a/bld/namelist_files/namelist_definition_ctsm.xml b/bld/namelist_files/namelist_definition_ctsm.xml index d74989889c..77feaad354 100644 --- a/bld/namelist_files/namelist_definition_ctsm.xml +++ b/bld/namelist_files/namelist_definition_ctsm.xml @@ -1636,6 +1636,11 @@ Simulation year that aligns with stream_year_first_ndep value Filename of input stream data for Nitrogen Deposition + +Stream meshfile for Nitrogen Deposition data + + Time interpolation mode to determine how to handle data before and after the times in the file @@ -1676,6 +1681,12 @@ Filename of input stream data for finundated inversion of observed (from Prigent to hydrologic variables (either TWS or ZWT) + +mesh filename of input stream data for finundated inversion of observed (from Prigent dataset) +to hydrologic variables (either TWS or ZWT) + + @@ -1751,6 +1762,11 @@ Simulation year that aligns with stream_year_first_lai value Filename of input stream data for LAI + +Filename of input stream data for LAI + + Time interpolation method to use with LAI streams @@ -1792,6 +1808,11 @@ Simulation year that aligns with stream_year_first_lightng value Filename of input stream data for Lightning + +Stream meshfile for Nitrogen Deposition data + + Time interpolation method to use with Lightning streams @@ -1834,6 +1855,11 @@ Simulation year that aligns with stream_year_first_popdens value Filename of input stream data for human population density + +mesh file for input stream data for human population density + + Time interpolation method to use with human population density streams @@ -1876,6 +1902,11 @@ Simulation year that aligns with stream_year_first_urbantv value Filename of input stream data for urban time varying + +mesh filename of input stream data for urban time varying + + Time interpolation method to use with urban time varying streams diff --git a/cime_config/buildnml b/cime_config/buildnml index 725f636642..d47b77fbde 100755 --- a/cime_config/buildnml +++ b/cime_config/buildnml @@ -62,6 +62,7 @@ def buildnml(case, caseroot, compname): glc_nec = case.get_value("GLC_NEC") cism_use_antarctica = case.get_value("CISM_USE_ANTARCTICA") mask = case.get_value("MASK_GRID") + driver = case.get_value("COMP_INTERFACE").lower() # ----------------------------------------------------- # Set ctsmconf @@ -231,13 +232,14 @@ def buildnml(case, caseroot, compname): command = ("%s -cimeroot %s -infile %s -csmdata %s -inputdata %s %s -namelist \"&clm_inparm start_ymd=%s %s/ \" " "%s %s -res %s %s -clm_start_type %s -envxml_dir %s " "-configuration %s -structure %s " - "-lnd_frac %s -glc_nec %s %s -co2_ppmv %s -co2_type %s -config %s " + "-lnd_frac %s -glc_nec %s %s -co2_ppmv %s -co2_type %s -config %s -driver %s " "%s %s %s %s" %(cmd, _CIMEROOT, infile, din_loc_root, inputdata_file, ignore, start_ymd, clm_namelist_opts, nomeg, usecase, lnd_grid, clmusr, start_type, caseroot, configuration, structure, - lndfrac_file, glc_nec, glc_use_antarctica_flag, ccsm_co2_ppmv, clm_co2_type, config_cache_file, + lndfrac_file, glc_nec, glc_use_antarctica_flag, ccsm_co2_ppmv, clm_co2_type, config_cache_file, driver, clm_bldnml_opts, spinup, tuning, gridmask)) + print "DEBUG: command is ",command rc, out, err = run_cmd(command, from_dir=ctsmconf) expect(rc==0,"Command %s failed rc=%d\nout=%s\nerr=%s"%(cmd,rc,out,err)) diff --git a/src/biogeochem/SatellitePhenologyMod.F90 b/src/biogeochem/SatellitePhenologyMod.F90 index 1d273a9e64..63a5007da0 100644 --- a/src/biogeochem/SatellitePhenologyMod.F90 +++ b/src/biogeochem/SatellitePhenologyMod.F90 @@ -9,27 +9,14 @@ module SatellitePhenologyMod ! so that DryDeposition code can get estimates of LAI differences between months. ! ! !USES: - use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create - use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance - use shr_kind_mod , only : r8 => shr_kind_r8 - use shr_kind_mod , only : CL => shr_kind_CL - use shr_kind_mod , only : CXX => shr_kind_CXX - use shr_log_mod , only : errMsg => shr_log_errMsg - use decompMod , only : bounds_type - use abortutils , only : endrun - use clm_varctl , only : iulog, use_lai_streams, inst_name - use clm_varcon , only : grlnd - use controlMod , only : NLFilename - use decompMod , only : gsmap_lnd_gdc2glo - use domainMod , only : ldomain - use fileutils , only : getavu, relavu - use PatchType , only : patch - use CanopyStateType , only : canopystate_type - use WaterDiagnosticBulkType , only : waterdiagnosticbulk_type - use perf_mod , only : t_startf, t_stopf - use spmdMod , only : masterproc - use spmdMod , only : mpicom, comp_id - use mct_mod + use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_CL, CS => shr_kind_CS + use shr_log_mod , only : errMsg => shr_log_errMsg + use decompMod , only : bounds_type + use abortutils , only : endrun + use clm_varctl , only : iulog, use_lai_streams + use perf_mod , only : t_startf, t_stopf + use spmdMod , only : masterproc, mpicom, iam + use laiStreamMod , only : lai_init, lai_advance, lai_interp use ncdio_pio ! ! !PUBLIC TYPES: @@ -41,253 +28,25 @@ module SatellitePhenologyMod public :: SatellitePhenologyInit ! Dynamically allocate memory public :: interpMonthlyVeg ! interpolate monthly vegetation data public :: readAnnualVegetation ! Read in annual vegetation (needed for Dry-deposition) - public :: lai_advance ! Advance the LAI streams (outside of a Open-MP threading loop) ! ! !PRIVATE MEMBER FUNCTIONS: private :: readMonthlyVegetation ! read monthly vegetation data for two months - private :: lai_init ! position datasets for LAI - private :: lai_interp ! interpolates between two years of LAI data (when LAI streams are being used) - - ! !PRIVATE MEMBER DATA: - type(shr_strdata_type) :: sdat_lai ! LAI input data stream ! - ! !PRIVATE TYPES: - integer, allocatable :: g_to_ig(:) ! Array matching gridcell index to data index - integer , private :: InterpMonths1 ! saved month index - real(r8), private :: timwt(2) ! time weights for month 1 and month 2 - real(r8), private, allocatable :: mlai2t(:,:) ! lai for interpolation (2 months) - real(r8), private, allocatable :: msai2t(:,:) ! sai for interpolation (2 months) - real(r8), private, allocatable :: mhvt2t(:,:) ! top vegetation height for interpolation (2 months) - real(r8), private, allocatable :: mhvb2t(:,:) ! bottom vegetation height for interpolation(2 months) - - character(len=*), parameter, private :: sourcefile = & + ! !PRIVATE MEMBER DATA: + integer :: InterpMonths1 ! saved month index + real(r8) :: timwt(2) ! time weights for month 1 and month 2 + real(r8), allocatable :: mlai2t(:,:) ! lai for interpolation (2 months) + real(r8), allocatable :: msai2t(:,:) ! sai for interpolation (2 months) + real(r8), allocatable :: mhvt2t(:,:) ! top vegetation height for interpolation (2 months) + real(r8), allocatable :: mhvb2t(:,:) ! bottom vegetation height for interpolation(2 months) + + character(len=*), parameter :: sourcefile = & __FILE__ - !----------------------------------------------------------------------- +!============================================================================== contains +!============================================================================== - !----------------------------------------------------------------------- - ! - ! lai_init - ! - !----------------------------------------------------------------------- - subroutine lai_init(bounds) - ! - ! Initialize data stream information for LAI. - ! - ! - ! !USES: - use clm_time_manager , only : get_calendar - use ncdio_pio , only : pio_subsystem - use shr_pio_mod , only : shr_pio_getiotype - use clm_nlUtilsMod , only : find_nlgroup_name - use ndepStreamMod , only : clm_domain_mct - use histFileMod , only : hist_addfld1d - use shr_stream_mod , only : shr_stream_file_null - use shr_string_mod , only : shr_string_listCreateField - ! - ! !ARGUMENTS: - implicit none - type(bounds_type), intent(in) :: bounds ! bounds - ! - ! !LOCAL VARIABLES: - integer :: i ! index - integer :: stream_year_first_lai ! first year in Lai stream to use - integer :: stream_year_last_lai ! last year in Lai stream to use - integer :: model_year_align_lai ! align stream_year_first_lai with - integer :: nu_nml ! unit for namelist file - integer :: nml_error ! namelist i/o error flag - type(mct_ggrid) :: dom_clm ! domain information - character(len=CL) :: stream_fldFileName_lai ! lai stream filename to read - character(len=CL) :: lai_mapalgo = 'bilinear' ! Mapping alogrithm - character(len=CL) :: lai_tintalgo = 'linear' ! Time interpolation alogrithm - - character(*), parameter :: subName = "('laidyn_init')" - character(*), parameter :: F00 = "('(laidyn_init) ',4a)" - character(*), parameter :: laiString = "LAI" ! base string for field string - integer , parameter :: numLaiFields = 16 ! number of fields to build field string - character(len=CXX) :: fldList ! field string - !----------------------------------------------------------------------- - ! - ! deal with namelist variables here in init - ! - namelist /lai_streams/ & - stream_year_first_lai, & - stream_year_last_lai, & - model_year_align_lai, & - lai_mapalgo, & - stream_fldFileName_lai, & - lai_tintalgo - - ! Default values for namelist - stream_year_first_lai = 1 ! first year in stream to use - stream_year_last_lai = 1 ! last year in stream to use - model_year_align_lai = 1 ! align stream_year_first_lai with this model year - stream_fldFileName_lai = shr_stream_file_null - - ! Read lai_streams namelist - if (masterproc) then - nu_nml = getavu() - open( nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) - call find_nlgroup_name(nu_nml, 'lai_streams', status=nml_error) - if (nml_error == 0) then - read(nu_nml, nml=lai_streams,iostat=nml_error) - if (nml_error /= 0) then - call endrun(subname // ':: ERROR reading lai_streams namelist') - end if - else - call endrun(subname // ':: ERROR finding lai_streams namelist') - end if - close(nu_nml) - call relavu( nu_nml ) - endif - - call shr_mpi_bcast(stream_year_first_lai, mpicom) - call shr_mpi_bcast(stream_year_last_lai, mpicom) - call shr_mpi_bcast(model_year_align_lai, mpicom) - call shr_mpi_bcast(stream_fldFileName_lai, mpicom) - call shr_mpi_bcast(lai_tintalgo, mpicom) - - if (masterproc) then - - write(iulog,*) ' ' - write(iulog,*) 'lai_stream settings:' - write(iulog,*) ' stream_year_first_lai = ',stream_year_first_lai - write(iulog,*) ' stream_year_last_lai = ',stream_year_last_lai - write(iulog,*) ' model_year_align_lai = ',model_year_align_lai - write(iulog,*) ' stream_fldFileName_lai = ',trim(stream_fldFileName_lai) - write(iulog,*) ' lai_tintalgo = ',trim(lai_tintalgo) - - endif - - call clm_domain_mct (bounds, dom_clm) - - ! - ! create the field list for these lai fields...use in shr_strdata_create - ! - fldList = shr_string_listCreateField( numLaiFields, laiString ) - - call shr_strdata_create(sdat_lai,name="laidyn", & - pio_subsystem=pio_subsystem, & - pio_iotype=shr_pio_getiotype(inst_name), & - mpicom=mpicom, compid=comp_id, & - gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & - nxg=ldomain%ni, nyg=ldomain%nj, & - yearFirst=stream_year_first_lai, & - yearLast=stream_year_last_lai, & - yearAlign=model_year_align_lai, & - offset=0, & - domFilePath='', & - domFileName=trim(stream_fldFileName_lai), & - domTvarName='time', & - domXvarName='lon' , & - domYvarName='lat' , & - domAreaName='area', & - domMaskName='mask', & - filePath='', & - filename=(/stream_fldFileName_lai/), & - fldListFile=fldList, & - fldListModel=fldList, & - fillalgo='none', & - mapalgo=lai_mapalgo, & - tintalgo=lai_tintalgo, & - calendar=get_calendar(), & - taxmode='cycle' ) - - if (masterproc) then - call shr_strdata_print(sdat_lai,'LAI data') - endif - - end subroutine lai_init - - !----------------------------------------------------------------------- - ! - ! lai_advance - ! - !----------------------------------------------------------------------- - subroutine lai_advance( bounds ) - ! - ! Advance LAI streams - ! - ! !USES: - use clm_time_manager, only : get_curr_date - ! - ! !ARGUMENTS: - implicit none - type(bounds_type) , intent(in) :: bounds - ! - ! !LOCAL VARIABLES: - integer :: g, ig ! Indices - integer :: year ! year (0, ...) for nstep+1 - integer :: mon ! month (1, ..., 12) for nstep+1 - integer :: day ! day of month (1, ..., 31) for nstep+1 - integer :: sec ! seconds into current date for nstep+1 - integer :: mcdate ! Current model date (yyyymmdd) - !----------------------------------------------------------------------- - - call get_curr_date(year, mon, day, sec) - mcdate = year*10000 + mon*100 + day - - call shr_strdata_advance(sdat_lai, mcdate, sec, mpicom, 'laidyn') - if ( .not. allocated(g_to_ig) )then - allocate (g_to_ig(bounds%begg:bounds%endg) ) - - ig = 0 - do g = bounds%begg,bounds%endg - ig = ig+1 - g_to_ig(g) = ig - end do - end if - - end subroutine lai_advance - - - !----------------------------------------------------------------------- - ! - ! lai_interp - ! - !----------------------------------------------------------------------- - subroutine lai_interp(bounds, canopystate_inst) - ! - ! Interpolate data stream information for Lai. - ! - ! !USES: - use pftconMod , only : noveg - ! - ! !ARGUMENTS: - implicit none - type(bounds_type) , intent(in) :: bounds - type(canopystate_type) , intent(inout) :: canopystate_inst - ! - ! !LOCAL VARIABLES: - integer :: ivt, p, ip, ig - character(len=CL) :: stream_var_name - !----------------------------------------------------------------------- - SHR_ASSERT_FL( (lbound(g_to_ig,1) <= bounds%begg ), sourcefile, __LINE__) - SHR_ASSERT_FL( (ubound(g_to_ig,1) >= bounds%endg ), sourcefile, __LINE__) - SHR_ASSERT_FL( (lbound(sdat_lai%avs(1)%rAttr,2) <= g_to_ig(bounds%begg) ), sourcefile, __LINE__) - SHR_ASSERT_FL( (ubound(sdat_lai%avs(1)%rAttr,2) >= g_to_ig(bounds%endg) ), sourcefile, __LINE__) - do p = bounds%begp, bounds%endp - ivt = patch%itype(p) - if (ivt /= noveg) then ! vegetated pft - write(stream_var_name,"(i6)") ivt - stream_var_name = 'LAI_'//trim(adjustl(stream_var_name)) - ip = mct_aVect_indexRA(sdat_lai%avs(1),trim(stream_var_name)) - endif - ig = g_to_ig(patch%gridcell(p)) - ! - ! Set lai for each gridcell/patch combination - ! - if (ivt /= noveg) then ! vegetated pft - canopystate_inst%tlai_patch(p) = sdat_lai%avs(1)%rAttr(ip,ig) - else ! non-vegetated pft - canopystate_inst%tlai_patch(p) = 0._r8 - endif - end do - - end subroutine lai_interp - - !----------------------------------------------------------------------- subroutine SatellitePhenologyInit (bounds) ! ! !DESCRIPTION: @@ -306,11 +65,11 @@ subroutine SatellitePhenologyInit (bounds) InterpMonths1 = -999 ! saved month index ier = 0 - if(.not.allocated(mlai2t)) then + if (.not.allocated(mlai2t)) then allocate (mlai2t(bounds%begp:bounds%endp,2), & - msai2t(bounds%begp:bounds%endp,2), & - mhvt2t(bounds%begp:bounds%endp,2), & - mhvb2t(bounds%begp:bounds%endp,2), stat=ier) + msai2t(bounds%begp:bounds%endp,2), & + mhvt2t(bounds%begp:bounds%endp,2), & + mhvb2t(bounds%begp:bounds%endp,2), stat=ier) end if if (ier /= 0) then write(iulog,*) 'EcosystemDynini allocation error' @@ -328,7 +87,7 @@ subroutine SatellitePhenologyInit (bounds) end subroutine SatellitePhenologyInit - !----------------------------------------------------------------------- + !================================================================ subroutine SatellitePhenology(bounds, num_nolakep, filter_nolakep, & waterdiagnosticbulk_inst, canopystate_inst) ! @@ -337,24 +96,27 @@ subroutine SatellitePhenology(bounds, num_nolakep, filter_nolakep, & ! Calculates leaf areas (tlai, elai), stem areas (tsai, esai) and height (htop). ! ! !USES: - use pftconMod, only : noveg, nbrdlf_dcd_brl_shrub + use pftconMod , only : noveg, nbrdlf_dcd_brl_shrub + use WaterDiagnosticBulkType , only : waterdiagnosticbulk_type + use CanopyStateType , only : canopystate_type + use PatchType , only : patch ! ! !ARGUMENTS: - type(bounds_type) , intent(in) :: bounds - integer , intent(in) :: num_nolakep ! number of column non-lake points in patch filter - integer , intent(in) :: filter_nolakep(bounds%endp-bounds%begp+1) ! patch filter for non-lake points - type(waterdiagnosticbulk_type) , intent(in) :: waterdiagnosticbulk_inst - type(canopystate_type) , intent(inout) :: canopystate_inst + type(bounds_type) , intent(in) :: bounds + integer , intent(in) :: num_nolakep ! number of column non-lake points in patch filter + integer , intent(in) :: filter_nolakep(bounds%endp-bounds%begp+1) ! patch filter for non-lake points + type(waterdiagnosticbulk_type) , intent(in) :: waterdiagnosticbulk_inst + type(canopystate_type) , intent(inout) :: canopystate_inst ! ! !LOCAL VARIABLES: - integer :: fp,p,c ! indices - real(r8) :: ol ! thickness of canopy layer covered by snow (m) - real(r8) :: fb ! fraction of canopy layer covered by snow + integer :: fp,p,c ! indices + real(r8) :: ol ! thickness of canopy layer covered by snow (m) + real(r8) :: fb ! fraction of canopy layer covered by snow !----------------------------------------------------------------------- associate( & - frac_sno => waterdiagnosticbulk_inst%frac_sno_col , & ! Input: [real(r8) (:) ] fraction of ground covered by snow (0 to 1) - snow_depth => waterdiagnosticbulk_inst%snow_depth_col , & ! Input: [real(r8) (:) ] snow height (m) + frac_sno => waterdiagnosticbulk_inst%frac_sno_col , & ! Input: [real(r8) (:) ] fraction of ground covered by snow (0 to 1) + snow_depth => waterdiagnosticbulk_inst%snow_depth_col , & ! Input: [real(r8) (:) ] snow height (m) tlai => canopystate_inst%tlai_patch , & ! Output: [real(r8) (:) ] one-sided leaf area index, no burying by snow tsai => canopystate_inst%tsai_patch , & ! Output: [real(r8) (:) ] one-sided stem area index, no burying by snow elai => canopystate_inst%elai_patch , & ! Output: [real(r8) (:) ] one-sided leaf area index with burying by snow @@ -368,7 +130,6 @@ subroutine SatellitePhenology(bounds, num_nolakep, filter_nolakep, & call lai_interp(bounds, canopystate_inst) endif - do fp = 1, num_nolakep p = filter_nolakep(fp) c = patch%column(p) @@ -434,19 +195,20 @@ subroutine SatellitePhenology(bounds, num_nolakep, filter_nolakep, & end subroutine SatellitePhenology - !----------------------------------------------------------------------- + !============================================================================== subroutine interpMonthlyVeg (bounds, canopystate_inst) ! ! !DESCRIPTION: ! Determine if 2 new months of data are to be read. ! ! !USES: - use clm_varctl , only : fsurdat - use clm_time_manager, only : get_curr_date, get_step_size_real, get_nstep + use clm_varctl , only : fsurdat + use clm_time_manager , only : get_curr_date, get_step_size_real, get_nstep + use CanopyStateType , only : canopystate_type ! ! !ARGUMENTS: - type(bounds_type), intent(in) :: bounds - type(canopystate_type), intent(inout) :: canopystate_inst + type(bounds_type) , intent(in) :: bounds + type(canopystate_type) , intent(inout) :: canopystate_inst ! ! !LOCAL VARIABLES: integer :: kyr ! year (0, ...) for nstep+1 @@ -488,18 +250,21 @@ subroutine interpMonthlyVeg (bounds, canopystate_inst) end subroutine interpMonthlyVeg - !----------------------------------------------------------------------- + !============================================================================== subroutine readAnnualVegetation (bounds, canopystate_inst) ! ! !DESCRIPTION: ! read 12 months of veg data for dry deposition ! ! !USES: - use clm_varpar , only : maxveg, maxsoil_patches - use pftconMod , only : noveg - use domainMod , only : ldomain - use fileutils , only : getfil - use clm_varctl , only : fsurdat + use clm_varpar , only : maxveg, maxsoil_patches + use pftconMod , only : noveg + use fileutils , only : getfil + use clm_varctl , only : fsurdat + use domainMod , only : ldomain + use clm_varcon , only : grlnd + use PatchType , only : patch + use CanopyStateType , only : canopystate_type ! ! !ARGUMENTS: type(bounds_type), intent(in) :: bounds @@ -579,9 +344,8 @@ subroutine readAnnualVegetation (bounds, canopystate_inst) endsubroutine readAnnualVegetation - !----------------------------------------------------------------------- - subroutine readMonthlyVegetation (bounds, & - fveg, months, canopystate_inst) + !============================================================================== + subroutine readMonthlyVegetation (bounds, fveg, months, canopystate_inst) ! ! !DESCRIPTION: ! Read monthly vegetation data for two consec. months. @@ -592,6 +356,9 @@ subroutine readMonthlyVegetation (bounds, & use fileutils , only : getfil use spmdMod , only : masterproc, mpicom, MPI_REAL8, MPI_INTEGER use clm_time_manager , only : get_nstep + use CanopyStateType , only : canopystate_type + use PatchType , only : patch + use clm_varcon , only : grlnd use netcdf ! ! !ARGUMENTS: diff --git a/src/biogeophys/CanopyStateType.F90 b/src/biogeophys/CanopyStateType.F90 index c5f1bc30f6..ddcb32c83a 100644 --- a/src/biogeophys/CanopyStateType.F90 +++ b/src/biogeophys/CanopyStateType.F90 @@ -200,12 +200,7 @@ subroutine InitHistory(this, bounds) avgflag='A', long_name='Aboveground leaf biomass', & ptr_patch=this%leaf_biomass_patch, default='inactive') - if (use_cn .or. use_fates) then - this%fsun_patch(begp:endp) = spval - call hist_addfld1d (fname='FSUN', units='proportion', & - avgflag='A', long_name='sunlit fraction of canopy', & - ptr_patch=this%fsun_patch, default='inactive') - + !DEBUG this%htop_patch(begp:endp) = spval call hist_addfld1d (fname='HTOP', units='m', & avgflag='A', long_name='canopy top', & @@ -215,6 +210,13 @@ subroutine InitHistory(this, bounds) call hist_addfld1d (fname='HBOT', units='m', & avgflag='A', long_name='canopy bottom', & ptr_patch=this%hbot_patch, default='inactive') + !DEBUG + + if (use_cn .or. use_fates) then + this%fsun_patch(begp:endp) = spval + call hist_addfld1d (fname='FSUN', units='proportion', & + avgflag='A', long_name='sunlit fraction of canopy', & + ptr_patch=this%fsun_patch, default='inactive') this%displa_patch(begp:endp) = spval call hist_addfld1d (fname='DISPLA', units='m', & diff --git a/src/main/FireDataBaseType.F90 b/src/cpl/mct/FireDataBaseType.F90 similarity index 100% rename from src/main/FireDataBaseType.F90 rename to src/cpl/mct/FireDataBaseType.F90 diff --git a/src/biogeophys/SoilMoistureStreamMod.F90 b/src/cpl/mct/SoilMoistureStreamMod.F90 similarity index 100% rename from src/biogeophys/SoilMoistureStreamMod.F90 rename to src/cpl/mct/SoilMoistureStreamMod.F90 diff --git a/src/biogeophys/UrbanTimeVarType.F90 b/src/cpl/mct/UrbanTimeVarType.F90 similarity index 100% rename from src/biogeophys/UrbanTimeVarType.F90 rename to src/cpl/mct/UrbanTimeVarType.F90 diff --git a/src/biogeochem/ch4FInundatedStreamType.F90 b/src/cpl/mct/ch4FInundatedStreamType.F90 similarity index 99% rename from src/biogeochem/ch4FInundatedStreamType.F90 rename to src/cpl/mct/ch4FInundatedStreamType.F90 index 9d38ab8332..dcdc76fa08 100644 --- a/src/biogeochem/ch4FInundatedStreamType.F90 +++ b/src/cpl/mct/ch4FInundatedStreamType.F90 @@ -325,7 +325,7 @@ subroutine ReadNML(this, bounds, NLFilename) ! ! arguments implicit none - class(streamcontrol_type) :: this + class(streamcontrol_type) :: this type(bounds_type), intent(in) :: bounds character(len=*), intent(in) :: NLFilename ! Namelist filename ! @@ -345,7 +345,7 @@ subroutine ReadNML(this, bounds, NLFilename) ! Default values for namelist - ! Read ch4finundateddyn_nml namelist + ! Read ch4finundated namelist if (masterproc) then nu_nml = getavu() open( nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) diff --git a/src/cpl/mct/laiStreamMod.F90 b/src/cpl/mct/laiStreamMod.F90 new file mode 100644 index 0000000000..df12d6912e --- /dev/null +++ b/src/cpl/mct/laiStreamMod.F90 @@ -0,0 +1,241 @@ +module laiStreamMod + +#include "shr_assert.h" + + !----------------------------------------------------------------------- + ! !DESCRIPTION: + ! Read LAI from stream + ! + ! !USES: + use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create + use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance + use shr_kind_mod , only : r8=>shr_kind_r8, CL=>shr_kind_CL, CS=>shr_kind_CS, CXX=>shr_kind_CXX + use shr_log_mod , only : errMsg => shr_log_errMsg + use decompMod , only : bounds_type + use abortutils , only : endrun + use clm_varctl , only : iulog, inst_name + use perf_mod , only : t_startf, t_stopf + use spmdMod , only : masterproc, mpicom, comp_id + use ncdio_pio + use mct_mod + ! + ! !PUBLIC TYPES: + implicit none + private + + ! !PUBLIC MEMBER FUNCTIONS: + public :: lai_init ! position datasets for LAI + public :: lai_advance ! Advance the LAI streams (outside of a Open-MP threading loop) + public :: lai_interp ! interpolates between two years of LAI data (when LAI streams + + ! !PRIVATE MEMBER DATA: + integer, allocatable :: g_to_ig(:) ! Array matching gridcell index to data index + type(shr_strdata_type) :: sdat_lai ! LAI input data stream + + character(len=*), parameter :: sourcefile = & + __FILE__ + +!============================================================================== +contains +!============================================================================== + + subroutine lai_init(bounds) + ! + ! Initialize data stream information for LAI. + ! + ! !USES: + use clm_time_manager , only : get_calendar + use ncdio_pio , only : pio_subsystem + use shr_pio_mod , only : shr_pio_getiotype + use shr_stream_mod , only : shr_stream_file_null + use shr_string_mod , only : shr_string_listCreateField + use clm_nlUtilsMod , only : find_nlgroup_name + use ndepStreamMod , only : clm_domain_mct + use histFileMod , only : hist_addfld1d + use domainMod , only : ldomain + use decompMod , only : gsmap_lnd_gdc2glo + use controlMod , only : NLFilename + ! + ! !ARGUMENTS: + implicit none + type(bounds_type), intent(in) :: bounds ! bounds + ! + ! !LOCAL VARIABLES: + integer :: stream_year_first_lai ! first year in Lai stream to use + integer :: stream_year_last_lai ! last year in Lai stream to use + integer :: model_year_align_lai ! align stream_year_first_lai with + integer :: nu_nml ! unit for namelist file + integer :: nml_error ! namelist i/o error flag + type(mct_ggrid) :: dom_clm ! domain information + character(len=CL) :: stream_fldFileName_lai ! lai stream filename to read + character(len=CL) :: lai_mapalgo = 'bilinear' ! Mapping alogrithm + character(len=CL) :: lai_tintalgo = 'linear' ! Time interpolation alogrithm + character(len=CXX) :: fldList ! field string + character(*), parameter :: laiString = "LAI" ! base string for field string + integer , parameter :: numLaiFields = 16 ! number of fields to build field string + character(*), parameter :: subName = "('laidyn_init')" + !----------------------------------------------------------------------- + ! + ! deal with namelist variables here in init + ! + namelist /lai_streams/ & + stream_year_first_lai, & + stream_year_last_lai, & + model_year_align_lai, & + lai_mapalgo, & + stream_fldFileName_lai, & + lai_tintalgo + + ! Default values for namelist + stream_year_first_lai = 1 ! first year in stream to use + stream_year_last_lai = 1 ! last year in stream to use + model_year_align_lai = 1 ! align stream_year_first_lai with this model year + stream_fldFileName_lai = shr_stream_file_null + + ! Read lai_streams namelist + if (masterproc) then + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + call find_nlgroup_name(nu_nml, 'lai_streams', status=nml_error) + if (nml_error == 0) then + read(nu_nml, nml=lai_streams,iostat=nml_error) + if (nml_error /= 0) then + call endrun(subname // ':: ERROR reading lai_streams namelist') + end if + else + call endrun(subname // ':: ERROR finding lai_streams namelist') + end if + close(nu_nml) + endif + call shr_mpi_bcast(stream_year_first_lai , mpicom) + call shr_mpi_bcast(stream_year_last_lai , mpicom) + call shr_mpi_bcast(model_year_align_lai , mpicom) + call shr_mpi_bcast(stream_fldFileName_lai , mpicom) + call shr_mpi_bcast(lai_tintalgo , mpicom) + + if (masterproc) then + write(iulog,*) ' ' + write(iulog,*) 'lai_stream settings:' + write(iulog,*) ' stream_year_first_lai = ',stream_year_first_lai + write(iulog,*) ' stream_year_last_lai = ',stream_year_last_lai + write(iulog,*) ' model_year_align_lai = ',model_year_align_lai + write(iulog,*) ' stream_fldFileName_lai = ',trim(stream_fldFileName_lai) + write(iulog,*) ' lai_tintalgo = ',trim(lai_tintalgo) + endif + + call clm_domain_mct (bounds, dom_clm) + + ! create the field list for these lai fields...use in shr_strdata_create + fldList = shr_string_listCreateField( numLaiFields, laiString ) + + call shr_strdata_create(sdat_lai,name="laidyn", & + pio_subsystem=pio_subsystem, & + pio_iotype=shr_pio_getiotype(inst_name), & + mpicom=mpicom, compid=comp_id, & + gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & + nxg=ldomain%ni, nyg=ldomain%nj, & + yearFirst=stream_year_first_lai, & + yearLast=stream_year_last_lai, & + yearAlign=model_year_align_lai, & + offset=0, & + domFilePath='', & + domFileName=trim(stream_fldFileName_lai), & + domTvarName='time', & + domXvarName='lon' , & + domYvarName='lat' , & + domAreaName='area', & + domMaskName='mask', & + filePath='', & + filename=(/stream_fldFileName_lai/), & + fldListFile=fldList, & + fldListModel=fldList, & + fillalgo='none', & + mapalgo=lai_mapalgo, & + tintalgo=lai_tintalgo, & + calendar=get_calendar(), & + taxmode='cycle' ) + + if (masterproc) then + call shr_strdata_print(sdat_lai,'LAI data') + endif + + end subroutine lai_init + + !============================================================================== + subroutine lai_advance( bounds ) + ! + ! Advance LAI streams + ! + ! !USES: + use clm_time_manager, only : get_curr_date + ! + ! !ARGUMENTS: + implicit none + type(bounds_type) , intent(in) :: bounds + ! + ! !LOCAL VARIABLES: + integer :: g, ig ! Indices + integer :: year ! year (0, ...) for nstep+1 + integer :: mon ! month (1, ..., 12) for nstep+1 + integer :: day ! day of month (1, ..., 31) for nstep+1 + integer :: sec ! seconds into current date for nstep+1 + integer :: mcdate ! Current model date (yyyymmdd) + !----------------------------------------------------------------------- + + call get_curr_date(year, mon, day, sec) + mcdate = year*10000 + mon*100 + day + + call shr_strdata_advance(sdat_lai, mcdate, sec, mpicom, 'laidyn') + if ( .not. allocated(g_to_ig) )then + allocate (g_to_ig(bounds%begg:bounds%endg) ) + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + g_to_ig(g) = ig + end do + end if + + end subroutine lai_advance + + !============================================================================== + subroutine lai_interp(bounds, canopystate_inst) + ! + ! Interpolate data stream information for Lai. + ! + ! !USES: + use pftconMod , only : noveg + use CanopyStateType , only : canopystate_type + use PatchType , only : patch + ! + ! !ARGUMENTS: + implicit none + type(bounds_type) , intent(in) :: bounds + type(canopystate_type) , intent(inout) :: canopystate_inst + ! + ! !LOCAL VARIABLES: + integer :: ivt, p, ip, ig + character(len=CL) :: stream_var_name + !----------------------------------------------------------------------- + SHR_ASSERT_FL( (lbound(g_to_ig,1) <= bounds%begg ), sourcefile, __LINE__) + SHR_ASSERT_FL( (ubound(g_to_ig,1) >= bounds%endg ), sourcefile, __LINE__) + SHR_ASSERT_FL( (lbound(sdat_lai%avs(1)%rAttr,2) <= g_to_ig(bounds%begg) ), sourcefile, __LINE__) + SHR_ASSERT_FL( (ubound(sdat_lai%avs(1)%rAttr,2) >= g_to_ig(bounds%endg) ), sourcefile, __LINE__) + + do p = bounds%begp, bounds%endp + ivt = patch%itype(p) + ! Set lai for each gridcell/patch combination + if (ivt /= noveg) then + ! vegetated pft + write(stream_var_name,"(i6)") ivt + stream_var_name = 'LAI_'//trim(adjustl(stream_var_name)) + ip = mct_aVect_indexRA(sdat_lai%avs(1),trim(stream_var_name)) + ig = g_to_ig(patch%gridcell(p)) + canopystate_inst%tlai_patch(p) = sdat_lai%avs(1)%rAttr(ip,ig) + else + ! non-vegetated pft + canopystate_inst%tlai_patch(p) = 0._r8 + endif + end do + + end subroutine lai_interp + +end module LaiStreamMod diff --git a/src/main/ndepStreamMod.F90 b/src/cpl/mct/ndepStreamMod.F90 similarity index 99% rename from src/main/ndepStreamMod.F90 rename to src/cpl/mct/ndepStreamMod.F90 index 4741e879ea..e99afd81f3 100644 --- a/src/main/ndepStreamMod.F90 +++ b/src/cpl/mct/ndepStreamMod.F90 @@ -30,6 +30,7 @@ module ndepStreamMod ! !PRIVATE MEMBER FUNCTIONS: private :: check_units ! Check the units and make sure they can be used + ! ! PRIVATE TYPES type(shr_strdata_type) :: sdat ! input data stream integer :: stream_year_first_ndep ! first year in stream to use diff --git a/src/cpl/nuopc/FireDataBaseType.F90 b/src/cpl/nuopc/FireDataBaseType.F90 new file mode 100644 index 0000000000..6ae9c5f3c1 --- /dev/null +++ b/src/cpl/nuopc/FireDataBaseType.F90 @@ -0,0 +1,468 @@ +module FireDataBaseType + +#include "shr_assert.h" + + !----------------------------------------------------------------------- + ! !DESCRIPTION: + ! module for handling of fire data + ! + ! !USES: + use ESMF + use dshr_strdata_mod , only : shr_strdata_type + use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_CL + use shr_log_mod , only : errMsg => shr_log_errMsg + use clm_varctl , only : iulog + use spmdMod , only : masterproc, mpicom, iam + use abortutils , only : endrun + use decompMod , only : bounds_type + use FireMethodType , only : fire_method_type + ! + implicit none + private + ! + ! !PUBLIC TYPES: + public :: fire_base_type + ! + type, abstract, extends(fire_method_type) :: fire_base_type + private + ! !PRIVATE MEMBER DATA: + real(r8), public, pointer :: forc_hdm(:) ! Human population density + type(shr_strdata_type) :: sdat_hdm ! Human population density input data stream + real(r8), public, pointer :: forc_lnfm(:) ! Lightning frequency + type(shr_strdata_type) :: sdat_lnfm ! Lightning frequency input data stream + contains + ! + ! !PUBLIC MEMBER FUNCTIONS: + procedure, public :: FireInit => BaseFireInit ! Initialization of Fire + procedure, public :: BaseFireInit ! Initialization of Fire + procedure, public :: FireInterp ! Interpolate fire data + procedure(FireReadNML_interface), public, deferred :: & + FireReadNML ! Read in namelist for Fire + procedure(need_lightning_and_popdens_interface), public, deferred :: & + need_lightning_and_popdens ! Returns true if need lightning & popdens + ! + ! !PRIVATE MEMBER FUNCTIONS: + procedure, private :: hdm_init ! position datasets for dynamic human population density + procedure, private :: hdm_interp ! interpolates between two years of human pop. density file data + procedure, private :: lnfm_init ! position datasets for Lightning + procedure, private :: lnfm_interp ! interpolates between two years of Lightning file data + end type fire_base_type + + abstract interface + !----------------------------------------------------------------------- + function need_lightning_and_popdens_interface(this) result(need_lightning_and_popdens) + ! + ! !DESCRIPTION: + ! Returns true if need lightning and popdens, false otherwise + ! + ! USES + import :: fire_base_type + ! + ! !ARGUMENTS: + class(fire_base_type), intent(in) :: this + logical :: need_lightning_and_popdens ! function result + !----------------------------------------------------------------------- + end function need_lightning_and_popdens_interface + end interface + + character(len=*), parameter, private :: sourcefile = & + __FILE__ + +!============================================================================== +contains +!============================================================================== + + subroutine FireReadNML_interface( this, NLFilename ) + ! + ! !DESCRIPTION: + ! Read the namelist for Fire + ! + ! !USES: + ! + ! !ARGUMENTS: + class(fire_base_type) :: this + character(len=*), intent(in) :: NLFilename ! Namelist filename + end subroutine FireReadNML_interface + + !================================================================ + subroutine BaseFireInit( this, bounds, NLFilename ) + ! + ! !DESCRIPTION: + ! Initialize CN Fire module + ! !USES: + use shr_infnan_mod , only : nan => shr_infnan_nan, assignment(=) + ! + ! !ARGUMENTS: + class(fire_base_type) :: this + type(bounds_type), intent(in) :: bounds + character(len=*), intent(in) :: NLFilename + !----------------------------------------------------------------------- + + if ( this%need_lightning_and_popdens() ) then + ! Allocate lightning forcing data + allocate( this%forc_lnfm(bounds%begg:bounds%endg) ) + this%forc_lnfm(bounds%begg:) = nan + ! Allocate pop dens forcing data + allocate( this%forc_hdm(bounds%begg:bounds%endg) ) + this%forc_hdm(bounds%begg:) = nan + + call this%hdm_init(bounds, NLFilename) + call this%hdm_interp(bounds) + call this%lnfm_init(bounds, NLFilename) + call this%lnfm_interp(bounds) + end if + + end subroutine BaseFireInit + + !================================================================ + subroutine FireInterp(this,bounds) + ! + ! !DESCRIPTION: + ! Interpolate CN Fire datasets + ! + ! !ARGUMENTS: + class(fire_base_type) :: this + type(bounds_type), intent(in) :: bounds + !----------------------------------------------------------------------- + + if ( this%need_lightning_and_popdens() ) then + call this%hdm_interp(bounds) + call this%lnfm_interp(bounds) + end if + + end subroutine FireInterp + + !================================================================ + subroutine hdm_init( this, bounds, NLFilename ) + ! + ! !DESCRIPTION: + ! Initialize data stream information for population density. + ! + ! !USES: + use clm_nlUtilsMod , only : find_nlgroup_name + use histFileMod , only : hist_addfld1d + use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use dshr_strdata_mod , only : shr_strdata_init_from_inline + use shr_mpi_mod , only : shr_mpi_bcast + ! + ! !ARGUMENTS: + implicit none + class(fire_base_type) :: this + type(bounds_type), intent(in) :: bounds + character(len=*), intent(in) :: NLFilename ! Namelist filename + ! + ! !LOCAL VARIABLES: + integer :: nu_nml ! unit for namelist file + integer :: nml_error ! namelist i/o error flag + integer :: stream_year_first_popdens ! first year in pop. dens. stream to use + integer :: stream_year_last_popdens ! last year in pop. dens. stream to use + integer :: model_year_align_popdens ! align stream_year_first_hdm with + character(len=CL) :: stream_fldFileName_popdens ! population density streams filename + character(len=CL) :: stream_meshfile_popdens ! population density streams filename + character(len=CL) :: popdensmapalgo ! mapping alogrithm for population density + character(len=CL) :: popdens_tintalgo ! time interpolation alogrithm for population density + integer :: rc + character(*), parameter :: subName = "('hdmdyn_init')" + !----------------------------------------------------------------------- + + namelist /popd_streams/ & + stream_year_first_popdens, & + stream_year_last_popdens, & + model_year_align_popdens, & + popdensmapalgo, & + stream_fldFileName_popdens, & + stream_meshfile_popdens, & + popdens_tintalgo + + ! Default values for namelist + stream_year_first_popdens = 1 ! first year in stream to use + stream_year_last_popdens = 1 ! last year in stream to use + model_year_align_popdens = 1 ! align stream_year_first_popdens with this model year + stream_fldFileName_popdens = ' ' + stream_meshfile_popdens = ' ' + popdens_tintalgo = 'nearest' + popdensgmapalgo = 'bilinear' + + ! Read popd_streams namelist + if (masterproc) then + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + call find_nlgroup_name(nu_nml, 'popd_streams', status=nml_error) + if (nml_error == 0) then + read(nu_nml, nml=popd_streams,iostat=nml_error) + if (nml_error /= 0) then + call endrun(msg='ERROR reading popd_streams namelist'//errMsg(sourcefile, __LINE__)) + end if + end if + close(nu_nml) + endif + + call shr_mpi_bcast(stream_year_first_popdens , mpicom) + call shr_mpi_bcast(stream_year_last_popdens , mpicom) + call shr_mpi_bcast(model_year_align_popdens , mpicom) + call shr_mpi_bcast(stream_fldFileName_popdens , mpicom) + call shr_mpi_bcast(stream_meshfile_popdens , mpicom) + call shr_mpi_bcast(popdens_tintalgo , mpicom) + + if (masterproc) then + write(iulog,'(a)' ) ' ' + write(iulog,'(a)' ) 'popdens_streams settings:' + write(iulog,'(a,i8)') ' stream_year_first_popdens = ',stream_year_first_popdens + write(iulog,'(a,i8)') ' stream_year_last_popdens = ',stream_year_last_popdens + write(iulog,'(a,i8)') ' model_year_align_popdens = ',model_year_align_popdens + write(iulog,'(a,a)' ) ' stream_fldFileName_popdens = ',trim(stream_fldFileName_popdens) + write(iulog,'(a,a)' ) ' stream_meshfile_popdens = ',trim(stream_meshfile_popdens) + write(iulog,'(a,a)' ) ' stream_varnames = ','hdm' + write(iulog,'(a,a)' ) ' time interp algo = ',trim(popdens_tintalgo) + write(iulog,'(a,a)' ) ' mapping interp algo = ',trim(popdensmapalgo) + write(iulog,'(a)' ) ' ' + endif + + ! Initialize the cdeps data type sdat + call shr_strdata_init_from_inline(this%sdat_hdm, & + my_task = iam, & + logunit = iulog, & + compname = 'LND', & + model_clock = model_clock, & + model_mesh = mesh, & + stream_meshfile = trim(stream_meshfile_popdens), & + stream_lev_dimname = 'null', & + stream_mapalgo = trim(popdensmapalgo), & + stream_filenames = (/trim(stream_fldfilename_popdens)/), & + stream_fldlistFile = (/'hdm'/), & + stream_fldListModel = (/'hdm'/), & + stream_yearFirst = stream_year_first_popdens, & + stream_yearLast = stream_year_last_popdens, & + stream_yearAlign = model_year_align_popdens, & + stream_offset = 0, & + stream_taxmode = 'extend', & + stream_dtlimit = 1.5_r8, & + stream_tintalgo = popdens_tintalgo, & + stream_name = 'Population density data', & + rc = rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Add history fields + call hist_addfld1d (fname='HDM', units='counts/km^2', & + avgflag='A', long_name='human population density', & + ptr_lnd=this%forc_hdm, default='inactive') + + end subroutine hdm_init + + !================================================================ + subroutine hdm_interp( this, bounds) + ! + ! !DESCRIPTION: + ! Interpolate data stream information for population density. + ! + ! !USES: + use clm_time_manager , only : get_curr_date + use dshr_methods_mod , only : dshr_fldbun_getfldptr + use dshr_strdata_mod , only : shr_strdata_advance + ! + ! !ARGUMENTS: + class(fire_base_type) :: this + type(bounds_type), intent(in) :: bounds + ! + ! !LOCAL VARIABLES: + integer :: g, ig + integer :: year ! year (0, ...) for nstep+1 + integer :: mon ! month (1, ..., 12) for nstep+1 + integer :: day ! day of month (1, ..., 31) for nstep+1 + integer :: sec ! seconds into current date for nstep+1 + integer :: mcdate ! Current model date (yyyymmdd) + integer :: rc + real(r8), pointer :: dataptr1d(:) + !----------------------------------------------------------------------- + + ! Advance sdat stream + call get_curr_date(year, mon, day, sec) + mcdate = year*10000 + mon*100 + day + call shr_strdata_advance(this%sdat_hdm, ymd=mcdate, tod=sec, logunit=iulog, istr='hdmdyn', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Get pointer for stream data that is time and spatially interpolate to model time and grid + call dshr_fldbun_getFldPtr(this%sdat_hdm%pstrm(1)%fldbun_model, 'hdm', fldptr1=dataptr1d, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + this%forc_hdm(g) = dataptr1d(ig) + end do + + end subroutine hdm_interp + + !================================================================ + subroutine lnfm_init( this, bounds, NLFilename ) + ! + ! !DESCRIPTION: + ! + ! Initialize data stream information for Lightning. + ! + ! !USES: + use clm_nlUtilsMod , only : find_nlgroup_name + use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use dshr_strdata_mod , only : shr_strdata_init_from_inline + use histFileMod , only : hist_addfld1d + use shr_mpi_mod , only : shr_mpi_bcast + ! + ! !ARGUMENTS: + implicit none + class(fire_base_type) :: this + type(bounds_type), intent(in) :: bounds + character(len=*), intent(in) :: NLFilename + ! + ! !LOCAL VARIABLES: + integer :: nu_nml ! unit for namelist file + integer :: nml_error ! namelist i/o error flag + integer :: stream_year_first_lightng ! first year in Lightning stream to use + integer :: stream_year_last_lightng ! last year in Lightning stream to use + integer :: model_year_align_lightng ! align stream_year_first_lnfm with + character(len=CL) :: stream_fldFileName_lightng ! lightning stream filename to read + character(len=CL) :: stream_meshfile_lightng ! lightning stream filename to read + character(len=CL) :: lightng_tintalgo ! stream -> model time interpolation alogrithm + character(len=CL) :: lightngmapalgo ! stream-> model mapping alogrithm + integer :: rc + character(*), parameter :: subName = "('lnfmdyn_init')" + !----------------------------------------------------------------------- + + namelist /light_streams/ & + stream_year_first_lightng, & + stream_year_last_lightng, & + model_year_align_lightng, & + lightngmapalgo, & + stream_fldFileName_lightng, & + stream_meshfile_lightng, & + lightng_tintalgo + + ! Default values for namelist + stream_year_first_lightng = 1 ! first year in stream to use + stream_year_last_lightng = 1 ! last year in stream to use + model_year_align_lightng = 1 ! align stream_year_first_lnfm with this model year + stream_fldFileName_lightng = ' ' + stream_meshfile_lightng = ' ' + lightng_tintalgo = 'linear' + lightngmapalgo = 'bilinear' + + ! Read light_streams namelist + if (masterproc) then + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + call find_nlgroup_name(nu_nml, 'light_streams', status=nml_error) + if (nml_error == 0) then + read(nu_nml, nml=light_streams,iostat=nml_error) + if (nml_error /= 0) then + call endrun(msg='ERROR reading light_streams namelist'//errMsg(sourcefile, __LINE__)) + end if + end if + close(nu_nml) + endif + + call shr_mpi_bcast(stream_year_first_lightng , mpicom) + call shr_mpi_bcast(stream_year_last_lightng , mpicom) + call shr_mpi_bcast(model_year_align_lightng , mpicom) + call shr_mpi_bcast(stream_fldFileName_lightng , mpicom) + call shr_mpi_bcast(stream_meshfile_lightng , mpicom) + call shr_mpi_bcast(lightng_tintalgo , mpicom) + + if (masterproc) then + write(iulog,'(a)') ' ' + write(iulog,'(a)' ) 'light_stream settings:' + write(iulog,'(a,i8)') ' stream_year_first_lightng = ',stream_year_first_lightng + write(iulog,'(a,i8)') ' stream_year_last_lightng = ',stream_year_last_lightng + write(iulog,'(a,a)' ) ' model_year_align_lightng = ',model_year_align_lightng + write(iulog,'(a,a)' ) ' stream_fldFileName_lightng = ',trim(stream_fldFileName_lightng) + write(iulog,'(a,a)' ) ' stream_meshfile = ',trim(stream_meshfile_lightng) + write(iulog,'(a,a)' ) ' stream_varnames = ','lnfm' + write(iulog,'(a,a)' ) ' time interp algo = ',trim(lightng_tintalgo) + write(iulog,'(a,a)' ) ' mapping interp algo = ',trim(lightngmapalgo) + write(iulog,'(a)') ' ' + endif + + ! Initialize the cdeps data type sdat + call shr_strdata_init_from_inline(this%sdat_lnfm, & + my_task = iam, & + logunit = iulog, & + compname = 'LND', & + model_clock = model_clock, & + model_mesh = mesh, & + stream_meshfile = trim(stream_meshfile_lightng), & + stream_lev_dimname = 'null', & + stream_mapalgo = trim(lightngmapalgo), & + stream_filenames = (/trim(stream_fldfilename_lightng)/), & + stream_fldlistFile = (/'lnfm'/), & + stream_fldListModel = (/'lnfm'/), & + stream_yearFirst = stream_year_first_lightng, & + stream_yearLast = stream_year_last_lightng, & + stream_yearAlign = model_year_align_lightng, & + stream_offset = 0, & + stream_taxmode = 'cycle', & + stream_dtlimit = 1.5_r8, & + stream_tintalgo = lightng_tintalgo, & + stream_name = 'Lightning frequency data', & + rc = rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Add history fields + call hist_addfld1d (fname='LNFM', units='counts/km^2/hr', & + avgflag='A', long_name='Lightning frequency', & + ptr_lnd=this%forc_lnfm, default='inactive') + + end subroutine lnfm_init + + !================================================================ + subroutine lnfm_interp(this, bounds ) + ! + ! !DESCRIPTION: + ! Interpolate data stream information for Lightning. + ! + ! !USES: + use clm_time_manager , only : get_curr_date + use dshr_methods_mod , only : dshr_fldbun_getfldptr + use dshr_strdata_mod , only : shr_strdata_advance + ! + ! !ARGUMENTS: + class(fire_base_type) :: this + type(bounds_type), intent(in) :: bounds + ! + ! !LOCAL VARIABLES: + integer :: g, ig + integer :: year ! year (0, ...) for nstep+1 + integer :: mon ! month (1, ..., 12) for nstep+1 + integer :: day ! day of month (1, ..., 31) for nstep+1 + integer :: sec ! seconds into current date for nstep+1 + integer :: mcdate ! Current model date (yyyymmdd) + integer :: rc + real(r8), pointer :: dataptr1d(:) + !----------------------------------------------------------------------- + + ! Advance sdat stream + call get_curr_date(year, mon, day, sec) + mcdate = year*10000 + mon*100 + day + call shr_strdata_advance(this%sdat_lnfm, ymd=mcdate, tod=sec, logunit=iulog, istr='lnfmdyn', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Get pointer for stream data that is time and spatially interpolate to model time and grid + call dshr_fldbun_getFldPtr(this%sdat_lnfm%pstrm(1)%fldbun_model, 'lnfm', fldptr1=dataptr1d, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + this%forc_lnfm(g) = dataptr1d(ig) + end do + + end subroutine lnfm_interp + +end module FireDataBaseType diff --git a/src/cpl/nuopc/SoilMoistureStreamMod.F90 b/src/cpl/nuopc/SoilMoistureStreamMod.F90 index 3c6b23a0aa..7972a85b9e 100644 --- a/src/cpl/nuopc/SoilMoistureStreamMod.F90 +++ b/src/cpl/nuopc/SoilMoistureStreamMod.F90 @@ -1,15 +1,5 @@ module SoilMoistureStreamMod - ! ********************************************************************** - ! --------------------------- IMPORTANT NOTE --------------------------- - ! - ! This file is here temporarily in order to exercise the CDEPS stream code for this 3-d - ! stream. In cases using the NUOPC driver/mediator, this version is used instead of the - ! version in src/biogeophys. Changes to the science here should also be made in the - ! similar file in src/biogeophys. Once we start using CDEPS by default, we can remove - ! the version in src/biogeophys and move this version into there. - ! ********************************************************************** - #include "shr_assert.h" !----------------------------------------------------------------------- @@ -64,15 +54,11 @@ module SoilMoistureStreamMod __FILE__ character(*), parameter :: u_FILE_u = & __FILE__ - !----------------------------------------------------------------------- +!============================================================================== contains +!============================================================================== - !----------------------------------------------------------------------- - ! - ! soil_moisture_init - ! - !----------------------------------------------------------------------- subroutine PrescribedSoilMoistureInit(bounds) ! ! Initialize data stream information for soil moisture. @@ -193,11 +179,7 @@ subroutine PrescribedSoilMoistureInit(bounds) end subroutine PrescribedSoilMoistureInit - !----------------------------------------------------------------------- - ! - ! PrescribedSoilMoistureAdvance - ! - !----------------------------------------------------------------------- + !============================================================================== subroutine PrescribedSoilMoistureAdvance( bounds ) ! ! Advanace the prescribed soil moisture stream @@ -247,11 +229,7 @@ subroutine PrescribedSoilMoistureAdvance( bounds ) end subroutine PrescribedSoilMoistureAdvance - !----------------------------------------------------------------------- - ! - ! PrescribedSoilMoistureInterp - ! - !----------------------------------------------------------------------- + !============================================================================== subroutine PrescribedSoilMoistureInterp(bounds, soilstate_inst, waterstatebulk_inst) ! ! Assign data stream information for prescribed soil moisture. diff --git a/src/cpl/nuopc/UrbanTimeVarType.F90 b/src/cpl/nuopc/UrbanTimeVarType.F90 new file mode 100644 index 0000000000..628ac7a4d3 --- /dev/null +++ b/src/cpl/nuopc/UrbanTimeVarType.F90 @@ -0,0 +1,294 @@ +module UrbanTimeVarType + + !------------------------------------------------------------------------------ + ! !DESCRIPTION: + ! Urban Time Varying Data + ! + ! !USES: + use ESMF + use dshr_strdata_mod, only : shr_strdata_type + use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_CL + use shr_log_mod , only : errMsg => shr_log_errMsg + use abortutils , only : endrun + use decompMod , only : bounds_type + use clm_varctl , only : iulog + use landunit_varcon , only : isturb_MIN, isturb_MAX + use clm_varcon , only : spval + use LandunitType , only : lun + use GridcellType , only : grc + ! + implicit none + private + ! + ! !PUBLIC TYPE + type, public :: urbantv_type + ! + real(r8), public, pointer :: t_building_max(:) ! lun maximum internal building air temperature (K) + type(shr_strdata_type) :: sdat_urbantv ! urban time varying input data stream + contains + ! !PUBLIC MEMBER FUNCTIONS: + procedure, public :: Init ! Allocate and initialize urbantv + procedure, public :: urbantv_init ! Initialize urban time varying stream + procedure, public :: urbantv_interp ! Interpolate urban time varying stream + end type urbantv_type + + character(15), private :: stream_varnames(isturb_MIN:isturb_MAX) + + character(len=*), parameter, private :: sourcefile = & + __FILE__ + +!============================================================================== +contains +!============================================================================== + + subroutine Init(this, bounds, NLFilename) + ! + ! Allocate module variables and data structures + ! + ! !USES: + use shr_infnan_mod , only : nan => shr_infnan_nan, assignment(=) + use histFileMod , only : hist_addfld1d + ! + ! !ARGUMENTS: + class(urbantv_type) :: this + type(bounds_type) , intent(in) :: bounds + character(len=*) , intent(in) :: NLFilename ! Namelist filename + ! + ! !LOCAL VARIABLES: + integer :: begl, endl + !--------------------------------------------------------------------- + + begl = bounds%begl; endl = bounds%endl + + ! Allocate urbantv data structure + + allocate(this%t_building_max(begl:endl)); this%t_building_max(:) = nan + + call this%urbantv_init(bounds, NLFilename) + call this%urbantv_interp(bounds) + + ! Add history fields + call hist_addfld1d (fname='TBUILD_MAX', units='K', & + avgflag='A', long_name='prescribed maximum interior building temperature', & + ptr_lunit=this%t_building_max, default='inactive', set_nourb=spval, & + l2g_scale_type='unity') + + end subroutine Init + + !============================================================================== + subroutine urbantv_init(this, bounds, NLFilename) + ! + ! !DESCRIPTION: + ! Initialize data stream information for urban time varying data + ! + ! !USES: + use clm_nlUtilsMod , only : find_nlgroup_name + use spmdMod , only : masterproc, mpicom, iam + use shr_mpi_mod , only : shr_mpi_bcast + use landunit_varcon , only : isturb_tbd, isturb_hd, isturb_md + use dshr_strdata_mod , only : shr_strdata_init_from_inline + use lnd_comp_shr , only : mesh, model_meshfile, model_clock + ! + ! !ARGUMENTS: + implicit none + class(urbantv_type) :: this + type(bounds_type), intent(in) :: bounds + character(len=*), intent(in) :: NLFilename ! Namelist filename + ! + ! !LOCAL VARIABLES: + integer :: n + integer :: stream_year_first_urbantv ! first year in urban tv stream to use + integer :: stream_year_last_urbantv ! last year in urban tv stream to use + integer :: model_year_align_urbantv ! align stream_year_first_urbantv with this model year + integer :: nu_nml ! unit for namelist file + integer :: nml_error ! namelist i/o error flag + character(len=CL) :: stream_fldFileName_urbantv ! urban tv streams filename + character(len=CL) :: stream_meshfile_urbantv ! urban tv streams filename + character(len=CL) :: urbantvmapalgo = 'nn' ! mapping alogrithm for urban ac + character(len=CL) :: urbantv_tintalgo = 'linear' ! time interpolation alogrithm + integer :: rc ! error code + character(*), parameter :: urbantvString = "tbuildmax_" ! base string for field string + character(*), parameter :: subName = "('urbantv_init')" + !----------------------------------------------------------------------- + + namelist /urbantv_streams/ & + stream_year_first_urbantv, & + stream_year_last_urbantv, & + model_year_align_urbantv, & + urbantvmapalgo, & + stream_fldFileName_urbantv, & + stream_meshfile_urbantv, & + urbantv_tintalgo + + ! Default values for namelist + stream_year_first_urbantv = 1 ! first year in stream to use + stream_year_last_urbantv = 1 ! last year in stream to use + model_year_align_urbantv = 1 ! align stream_year_first_urbantv with this model year + stream_fldFileName_urbantv = ' ' + stream_meshfile_urbantv = ' ' + stream_varnames(isturb_tbd) = urbantvString//"TBD" + stream_varnames(isturb_hd) = urbantvString//"HD" + stream_varnames(isturb_md) = urbantvString//"MD" + + ! Read urbantv_streams namelist + if (masterproc) then + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + call find_nlgroup_name(nu_nml, 'urbantv_streams', status=nml_error) + if (nml_error == 0) then + read(nu_nml, nml=urbantv_streams,iostat=nml_error) + if (nml_error /= 0) then + call endrun(msg='ERROR reading urbantv_streams namelist'//errMsg(sourcefile, __LINE__)) + end if + end if + close(nu_nml) + endif + + call shr_mpi_bcast(stream_year_first_urbantv , mpicom) + call shr_mpi_bcast(stream_year_last_urbantv , mpicom) + call shr_mpi_bcast(model_year_align_urbantv , mpicom) + call shr_mpi_bcast(stream_fldFileName_urbantv , mpicom) + call shr_mpi_bcast(stream_meshfile_urbantv , mpicom) + call shr_mpi_bcast(urbantv_tintalgo , mpicom) + + if (masterproc) then + write(iulog,*) ' ' + write(iulog,'(a)') 'urbantv_streams settings:' + write(iulog,'(a,i8)') ' stream_year_first_urbantv = ',stream_year_first_urbantv + write(iulog,'(a,i8)') ' stream_year_last_urbantv = ',stream_year_last_urbantv + write(iulog,'(a,i8)') ' model_year_align_urbantv = ',model_year_align_urbantv + write(iulog,'(a,a)' ) ' stream_fldFileName_urbantv = ',stream_fldFileName_urbantv + write(iulog,'(a,a)' ) ' stream_meshfile_urbantv = ',stream_meshfile_urbantv + write(iulog,'(a,a)' ) ' urbantv_tintalgo = ',urbantv_tintalgo + do n = isturb_tbd,isturb_md + write(iulog,'(a,a)' ) ' stream_varname = ',trim(stream_varnames(n)) + end do + write(iulog,*) ' ' + endif + + ! Initialize the cdeps data type this%sdat_urbantv + call shr_strdata_init_from_inline(this%sdat_urbantv, & + my_task = iam, & + logunit = iulog, & + compname = 'LND', & + model_clock = model_clock, & + model_mesh = mesh, & + stream_meshfile = trim(stream_meshfile_urbantv), & + stream_lev_dimname = 'null', & + stream_mapalgo = trim(urbantvmapalgo), & + stream_filenames = (/trim(stream_fldfilename_urbantv)/), & + stream_fldlistFile = stream_varnames(isturb_tbd:isturb_md),& + stream_fldListModel = stream_varnames(isturb_tbd:isturb_md),& + stream_yearFirst = stream_year_first_urbantv, & + stream_yearLast = stream_year_last_urbantv, & + stream_yearAlign = model_year_align_urbantv, & + stream_offset = 0, & + stream_taxmode = 'extend', & + stream_dtlimit = 1.5_r8, & + stream_tintalgo = urbantv_tintalgo, & + stream_name = 'Urban time varying data', & + rc = rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + end subroutine urbantv_init + + !============================================================================== + subroutine urbantv_interp(this, bounds) + ! + ! !DESCRIPTION: + ! Interpolate data stream information for urban time varying data. + ! + ! !USES: + use clm_time_manager , only : get_curr_date + use clm_instur , only : urban_valid + use dshr_methods_mod , only : dshr_fldbun_getfldptr + use dshr_strdata_mod , only : shr_strdata_advance + ! + ! !ARGUMENTS: + class(urbantv_type) :: this + type(bounds_type), intent(in) :: bounds + ! + ! !LOCAL VARIABLES: + logical :: found + integer :: l, ig, g, ip, n + integer :: year ! year (0, ...) for nstep+1 + integer :: mon ! month (1, ..., 12) for nstep+1 + integer :: day ! day of month (1, ..., 31) for nstep+1 + integer :: sec ! seconds into current date for nstep+1 + integer :: mcdate ! Current model date (yyyymmdd) + integer :: lindx ! landunit index + integer :: gindx ! gridcell index + integer :: lsize + integer :: rc + real(r8), pointer :: dataptr1d(:) + real(r8), pointer :: dataptr2d(:,:) + !----------------------------------------------------------------------- + + ! Advance sdat stream + call get_curr_date(year, mon, day, sec) + mcdate = year*10000 + mon*100 + day + call shr_strdata_advance(this%sdat_urbantv, ymd=mcdate, tod=sec, logunit=iulog, istr='hdmdyn', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Create 2d array for all stream variable data + lsize = bounds%endg - bounds%begg + 1 + allocate(dataptr2d(lsize, isturb_MIN:isturb_MAX)) + do n = isturb_MIN,isturb_MAX + call dshr_fldbun_getFldPtr(this%sdat_urbantv%pstrm(1)%fldbun_model, trim(stream_varnames(n)), & + fldptr1=dataptr1d, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + dataptr2d(:,n) = dataptr1d(:) + end do + + ! Determine this%tbuilding_max for all landunits + do l = bounds%begl,bounds%endl + if (lun%urbpoi(l)) then + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + if (g == lun%gridcell(l)) exit + end do + do n = isturb_MIN,isturb_MAX + if (stream_varnames(lun%itype(l)) == stream_varnames(n)) then + this%t_building_max(l) = dataptr2d(ig,n) + end if + end do + else + this%t_building_max(l) = spval + end if + end do + deallocate(dataptr2d) + + ! Error check + found = .false. + do l = bounds%begl,bounds%endl + if (lun%urbpoi(l)) then + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + if (g == lun%gridcell(l)) exit + end do + if ( .not. urban_valid(g) .or. (this%t_building_max(l) <= 0._r8)) then + found = .true. + gindx = g + lindx = l + exit + end if + end if + end do + if ( found ) then + write(iulog,*)'ERROR: no valid urban data for g= ',gindx + write(iulog,*)'landunit type: ',lun%itype(l) + write(iulog,*)'urban_valid: ',urban_valid(gindx) + write(iulog,*)'t_building_max: ',this%t_building_max(lindx) + call endrun(msg=errmsg(sourcefile, __LINE__)) + end if + + end subroutine urbantv_interp + +end module UrbanTimeVarType diff --git a/src/cpl/nuopc/ch4FInundatedStreamType.F90 b/src/cpl/nuopc/ch4FInundatedStreamType.F90 new file mode 100644 index 0000000000..7435cbde1e --- /dev/null +++ b/src/cpl/nuopc/ch4FInundatedStreamType.F90 @@ -0,0 +1,388 @@ +module ch4FInundatedStreamType + +#include "shr_assert.h" + + !----------------------------------------------------------------------- + ! !DESCRIPTION: + ! Contains methods for reading in finundated streams file for methane code. + ! + ! !USES + use ESMF + use dshr_strdata_mod , only : shr_strdata_type + use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_cl + use shr_log_mod , only : errMsg => shr_log_errMsg + use spmdMod , only : mpicom, masterproc + use clm_varctl , only : iulog + use abortutils , only : endrun + use decompMod , only : bounds_type + use ch4varcon , only : finundation_mtd + + ! !PUBLIC TYPES: + implicit none + private + + type, public :: ch4finundatedstream_type + real(r8), pointer, private :: zwt0_gdc (:) ! col coefficient for determining finundated (m) + real(r8), pointer, private :: f0_gdc (:) ! col maximum inundated fraction for a gridcell (for methane code) + real(r8), pointer, private :: p3_gdc (:) ! col coefficient for determining finundated (m) + real(r8), pointer, private :: fws_slope_gdc (:) ! col slope in fws = slope * tws + intercept (A coefficient) + real(r8), pointer, private :: fws_intercept_gdc (:) ! col slope in fws = slope * tws + intercept (B coefficient) + contains + + ! !PUBLIC MEMBER FUNCTIONS: + procedure, public :: Init ! Initialize and read data in + procedure, public :: CalcFinundated ! Calculate finundated based on input streams + procedure, public :: UseStreams ! If streams will be used + + ! !PRIVATE MEMBER FUNCTIONS: + procedure, private :: InitAllocate ! Allocate data + + end type ch4finundatedstream_type + + ! ! PRIVATE DATA: + type, private :: streamcontrol_type + character(len=CL) :: stream_fldFileName_ch4finundated ! data Filename + character(len=CL) :: stream_meshfile_ch4finundated ! mesh Filename + character(len=CL) :: ch4finundatedmapalgo ! map algo + contains + procedure, private :: ReadNML ! Read in namelist + end type streamcontrol_type + + type(streamcontrol_type), private :: control ! Stream control data + + character(len=*), parameter, private :: sourcefile = & + __FILE__ + +!============================================================================== +contains +!============================================================================== + + subroutine Init(this, bounds, NLFilename) + ! + ! Initialize the ch4 finundated stream object + ! + ! Uses: + use spmdMod , only : iam + use ch4varcon , only : finundation_mtd_h2osfc + use ch4varcon , only : finundation_mtd_ZWT_inversion, finundation_mtd_TWS_inversion + use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use dshr_strdata_mod , only : shr_strdata_init_from_inline, shr_strdata_print + use dshr_strdata_mod , only : shr_strdata_advance + use dshr_methods_mod , only : dshr_fldbun_getfldptr + ! + ! arguments + implicit none + class(ch4finundatedstream_type) :: this + type(bounds_type), intent(in) :: bounds + character(len=*), intent(in) :: NLFilename ! Namelist filename + ! + ! local variables + integer :: ig, g, n ! Indices + integer :: year ! year (0, ...) for nstep+1 + integer :: mon ! month (1, ..., 12) for nstep+1 + integer :: day ! day of month (1, ..., 31) for nstep+1 + integer :: sec ! seconds into current date for nstep+1 + integer :: mcdate ! Current model date (yyyymmdd) + type(shr_strdata_type) :: sdat_ch4 ! input data stream + character(len=16), allocatable :: stream_varnames(:) ! array of stream field names + integer :: rc ! error code + real(r8), pointer :: dataptr1d(:) ! temporary pointer + character(len=*), parameter :: stream_name = 'ch4finundated' + !----------------------------------------------------------------------- + + if ( finundation_mtd /= finundation_mtd_h2osfc )then + call this%InitAllocate( bounds ) + call control%ReadNML( bounds, NLFileName ) + + if ( this%useStreams() )then + + if (finundation_mtd == finundation_mtd_ZWT_inversion )then + allocate(stream_varnames(3)) + stream_varnames = (/"ZWT0","F0 ","P3 "/) + else if ( finundation_mtd == finundation_mtd_TWS_inversion )then + allocate(stream_varnames(2)) + stream_varnames = (/"FWS_TWS_A","FWS_TWS_B"/) + else + call endrun(msg=' ERROR do NOT know what list of variables to read for this finundation_mtd type'// & + errMsg(sourcefile, __LINE__)) + end if + + if (masterproc) then + write(iulog,*) ' stream_varnames = ',stream_varnames + end if + + ! Initialize the cdeps data type sdat_ndep + call shr_strdata_init_from_inline(sdat_ch4, & + my_task = iam, & + logunit = iulog, & + compname = 'LND', & + model_clock = model_clock, & + model_mesh = mesh, & + stream_meshfile = control%stream_meshfile_ch4finundated, & + stream_lev_dimname = 'null', & + stream_mapalgo = control%ch4finundatedmapalgo, & + stream_filenames = (/trim(control%stream_fldFileName_ch4finundated)/), & + stream_fldlistFile = stream_varnames, & + stream_fldListModel = stream_varnames, & + stream_yearFirst = 1996, & + stream_yearLast = 1996, & + stream_yearAlign = 1, & + stream_offset = 0, & + stream_taxmode = 'extend', & + stream_dtlimit = 1.5_r8, & + stream_tintalgo = 'linear', & + rc = rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + if (masterproc) then + call shr_strdata_print(sdat_ch4, trim(stream_name)//' data') + endif + + ! Explicitly set current date to a hardcoded constant value. Otherwise + ! using the real date can cause roundoff differences that are + ! detrected as issues with exact restart. EBK M05/20/2017 + ! call get_curr_date(year, mon, day, sec) + year = 1996 + mon = 12 + day = 31 + sec = 0 + mcdate = year*10000 + mon*100 + day + + call shr_strdata_advance(sdat_ch4, ymd=mcdate, tod=sec, logunit=iulog, istr='ch4', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Get pointer for stream data that is time and spatially interpolate to model time and grid + do n = 1,size(stream_varnames) + call dshr_fldbun_getFldPtr(sdat_ch4%pstrm(1)%fldbun_model, stream_varnames(n), fldptr1=dataptr1d, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + if (trim(stream_varnames(n)) == 'ZWT0') then + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + this%zwt0_gdc(g) = dataptr1d(ig) + end do + else if (trim(stream_varnames(n)) == 'F0') then + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + this%f0_gdc(g) = dataptr1d(ig) + end do + else if (trim(stream_varnames(n)) == 'P3') then + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + this%p3_gdc(g) = dataptr1d(ig) + end do + else if (trim(stream_varnames(n)) == 'FWS_TWS_A') then + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + this%fws_slope_gdc(g) = dataptr1d(ig) + end do + else if (trim(stream_varnames(n)) == 'FWS_TWS_B') then + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + this%fws_intercept_gdc(g) = dataptr1d(ig) + end do + end if + end do + end if + end if + + end subroutine Init + + !============================================================================== + logical function UseStreams(this) + ! + ! !DESCRIPTION: + ! Return true if + ! + ! !USES: + ! + ! !ARGUMENTS: + implicit none + class(ch4finundatedstream_type) :: this + ! + ! !LOCAL VARIABLES: + if ( trim(control%stream_fldFileName_ch4finundated) == '' )then + UseStreams = .false. + else + UseStreams = .true. + end if + end function UseStreams + + !============================================================================== + subroutine InitAllocate(this, bounds) + ! + ! !DESCRIPTION: + ! Allocate module variables and data structures + ! + ! !USES: + use shr_infnan_mod, only: nan => shr_infnan_nan, assignment(=) + use ch4varcon , only: finundation_mtd_ZWT_inversion, finundation_mtd_TWS_inversion + ! + ! !ARGUMENTS: + implicit none + class(ch4finundatedstream_type) :: this + type(bounds_type), intent(in) :: bounds + ! + ! !LOCAL VARIABLES: + integer :: begc, endc + integer :: begg, endg + !--------------------------------------------------------------------- + + begc = bounds%begc; endc = bounds%endc + begg = bounds%begg; endg = bounds%endg + + if( finundation_mtd == finundation_mtd_ZWT_inversion )then + allocate(this%zwt0_gdc (begg:endg)) ; this%zwt0_gdc (:) = nan + allocate(this%f0_gdc (begg:endg)) ; this%f0_gdc (:) = nan + allocate(this%p3_gdc (begg:endg)) ; this%p3_gdc (:) = nan + else if( finundation_mtd == finundation_mtd_TWS_inversion )then + allocate(this%fws_slope_gdc (begg:endg)) ; this%fws_slope_gdc (:) = nan + allocate(this%fws_intercept_gdc(begg:endg)) ; this%fws_intercept_gdc(:) = nan + end if + + end subroutine InitAllocate + + !============================================================================== + subroutine CalcFinundated(this, bounds, num_soilc, filter_soilc, soilhydrology_inst, & + waterdiagnosticbulk_inst, qflx_surf_lag_col, finundated ) + ! + ! !DESCRIPTION: + ! Calculate finundated according to the appropriate methodology + ! + ! !USES: + use ColumnType , only : col + use ch4varcon , only : finundation_mtd_h2osfc, finundation_mtd_ZWT_inversion + use ch4varcon , only : finundation_mtd_TWS_inversion + use clm_varpar , only : nlevsoi + use SoilHydrologyType , only : soilhydrology_type + use WaterDiagnosticBulkType , only : waterdiagnosticbulk_type + ! + ! !ARGUMENTS: + implicit none + class(ch4finundatedstream_type) :: this + type(bounds_type) , intent(in) :: bounds + integer , intent(in) :: num_soilc ! number of column soil points in column filter + integer , intent(in) :: filter_soilc(:) ! column filter for soil points + type(soilhydrology_type) , intent(in) :: soilhydrology_inst + type(waterdiagnosticbulk_type) , intent(in) :: waterdiagnosticbulk_inst + real(r8) , intent(in) :: qflx_surf_lag_col(bounds%begc:) !time-lagged surface runoff (mm H2O /s) + real(r8) , intent(inout) :: finundated(bounds%begc:) ! fractional inundated area in soil column (excluding dedicated wetland columns) + ! + ! !LOCAL VARIABLES: + integer :: g, c, fc ! Indices + real(r8) :: zwt_actual ! Total water storage (ZWT) to use either perched or total depending on conditions + !--------------------------------------------------------------------- + + SHR_ASSERT_ALL_FL((ubound(qflx_surf_lag_col) == (/bounds%endc/)), sourcefile, __LINE__) + SHR_ASSERT_ALL_FL((ubound(finundated) == (/bounds%endc/)), sourcefile, __LINE__) + + associate( & + z => col%z , & ! Input: [real(r8) (:,:) ] layer depth (m) (-nlevsno+1:nlevsoi) + zwt => soilhydrology_inst%zwt_col , & ! Input: [real(r8) (:) ] water table depth (m) + zwt_perched => soilhydrology_inst%zwt_perched_col , & ! Input: [real(r8) (:) ] perched water table depth (m) + tws => waterdiagnosticbulk_inst%tws_grc , & ! Input: [real(r8) (:) ] total water storage (kg m-2) + frac_h2osfc => waterdiagnosticbulk_inst%frac_h2osfc_col & ! Input: [real(r8) (:) ] fraction of ground covered by surface water (0 to 1) + ) + + ! Calculate finundated + do fc = 1, num_soilc + c = filter_soilc(fc) + g = col%gridcell(c) + select case( finundation_mtd ) + case ( finundation_mtd_h2osfc ) + finundated(c) = frac_h2osfc(c) + case ( finundation_mtd_ZWT_inversion ) + if (this%zwt0_gdc(g) > 0._r8) then + if (zwt_perched(c) < z(c,nlevsoi)-1.e-5_r8 .and. zwt_perched(c) < zwt(c)) then + zwt_actual = zwt_perched(c) + else + zwt_actual = zwt(c) + end if + finundated(c) = this%f0_gdc(g) * exp(-zwt_actual/this%zwt0_gdc(g)) + this%p3_gdc(g)*qflx_surf_lag_col(c) + else + finundated(c) = this%p3_gdc(g)*qflx_surf_lag_col(c) + end if + case ( finundation_mtd_TWS_inversion ) + finundated(c) = this%fws_slope_gdc(g) * tws(g) + this%fws_intercept_gdc(g) + end select + finundated(c) = min( 1.0_r8, max( 0.0_r8, finundated(c) ) ) + end do + end associate + + end subroutine CalcFinundated + + !============================================================================== + subroutine ReadNML(this, bounds, NLFilename) + ! + ! Read the namelist data stream information. + ! + ! Uses: + use shr_nl_mod , only : shr_nl_find_group_name + use shr_log_mod , only : errMsg => shr_log_errMsg + use shr_mpi_mod , only : shr_mpi_bcast + use ch4varcon , only : finundation_mtd_ZWT_inversion, finundation_mtd_TWS_inversion + ! + ! arguments + implicit none + class(streamcontrol_type) :: this + type(bounds_type), intent(in) :: bounds + character(len=*), intent(in) :: NLFilename ! Namelist filename + ! + ! local variables + integer :: nu_nml ! unit for namelist file + integer :: nml_error ! namelist i/o error flag + character(len=CL) :: stream_fldFileName_ch4finundated = ' ' + character(len=CL) :: stream_meshfile_ch4finundated = ' ' + character(len=CL) :: ch4finundatedmapalgo = 'bilinear' + character(len=*), parameter :: namelist_name = 'ch4finundated' ! MUST agree with name in namelist and read + character(len=*), parameter :: subName = "('ch4finundated::ReadNML')" + !----------------------------------------------------------------------- + + namelist /ch4finundated/ & ! MUST agree with namelist_name above + ch4finundatedmapalgo, stream_fldFileName_ch4finundated, stream_meshfile_ch4finundated + + ! Default values for namelist + + ! Read ch4finundated namelist + if (masterproc) then + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + call shr_nl_find_group_name(nu_nml, namelist_name, status=nml_error) + if (nml_error == 0) then + read(nu_nml, nml=ch4finundated,iostat=nml_error) ! MUST agree with namelist_name above + if (nml_error /= 0) then + call endrun(msg=' ERROR reading '//namelist_name//' namelist'//errMsg(sourcefile, __LINE__)) + end if + else + call endrun(msg=' ERROR finding '//namelist_name//' namelist'//errMsg(sourcefile, __LINE__)) + end if + close(nu_nml) + endif + + call shr_mpi_bcast(ch4finundatedmapalgo , mpicom) + call shr_mpi_bcast(stream_fldFileName_ch4finundated , mpicom) + call shr_mpi_bcast(stream_meshfile_ch4finundated , mpicom) + + if (masterproc) then + write(iulog,*) ' ' + write(iulog,*) namelist_name, ' stream settings:' + write(iulog,*) ' stream_fldFileName_ch4finundated = ',stream_fldFileName_ch4finundated + write(iulog,*) ' stream_meshfile_ch4finundated = ',stream_meshfile_ch4finundated + write(iulog,*) ' ch4finundatedmapalgo = ',ch4finundatedmapalgo + endif + this%stream_fldFileName_ch4finundated = stream_fldFileName_ch4finundated + this%stream_meshfile_ch4finundated = stream_meshfile_ch4finundated + this%ch4finundatedmapalgo = ch4finundatedmapalgo + + end subroutine ReadNML + +end module ch4FInundatedStreamType diff --git a/src/cpl/nuopc/laiStreamMod.F90 b/src/cpl/nuopc/laiStreamMod.F90 new file mode 100644 index 0000000000..0005819972 --- /dev/null +++ b/src/cpl/nuopc/laiStreamMod.F90 @@ -0,0 +1,252 @@ +module laiStreamMod + +#include "shr_assert.h" + + !----------------------------------------------------------------------- + ! !DESCRIPTION: + ! Read LAI from stream + ! + ! !USES: + use ESMF + use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_CL, CS => shr_kind_CS + use dshr_strdata_mod , only : shr_strdata_type + use decompMod , only : bounds_type + use abortutils , only : endrun + use clm_varctl , only : iulog + use perf_mod , only : t_startf, t_stopf + use spmdMod , only : masterproc, mpicom, iam + ! + ! !PUBLIC TYPES: + implicit none + private + + ! !PUBLIC MEMBER FUNCTIONS: + public :: lai_init ! position datasets for LAI + public :: lai_advance ! Advance the LAI streams (outside of a Open-MP threading loop) + public :: lai_interp ! interpolates between two years of LAI data (when LAI streams + + ! !PRIVATE MEMBER DATA: + integer, allocatable :: g_to_ig(:) ! Array matching gridcell index to data index + type(shr_strdata_type) :: sdat_lai ! LAI input data stream + character(*), parameter :: laiString = "LAI_" ! base string for field string + integer , parameter :: numLaiFields = 16 ! number of fields to build field string + character(len=CS) :: stream_varnames(numLaiFields) + + character(len=*), parameter :: sourcefile = & + __FILE__ + +!============================================================================== +contains +!============================================================================== + + subroutine lai_init(bounds) + ! + ! Initialize data stream information for LAI. + ! + ! !USES: + use shr_mpi_mod , only : shr_mpi_bcast + use clm_nlUtilsMod , only : find_nlgroup_name + use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use dshr_strdata_mod , only : shr_strdata_init_from_inline + use controlMod , only : NLFilename + ! + ! !ARGUMENTS: + type(bounds_type), intent(in) :: bounds ! bounds + ! + ! !LOCAL VARIABLES: + integer :: i,n ! index + integer :: stream_year_first_lai ! first year in Lai stream to use + integer :: stream_year_last_lai ! last year in Lai stream to use + integer :: model_year_align_lai ! align stream_year_first_lai with + integer :: nu_nml ! unit for namelist file + integer :: nml_error ! namelist i/o error flag + character(len=CL) :: stream_fldFileName_lai ! lai stream filename to read + character(len=CL) :: stream_meshfile_lai ! lai stream meshfile + character(len=CL) :: lai_mapalgo = 'bilinear' ! Mapping alogrithm + character(len=CL) :: lai_tintalgo = 'linear' ! Time interpolation alogrithm + integer :: lai_offset = 0 ! Offset in time for dataset (sec) + integer :: rc + character(*), parameter :: subName = "('laidyn_init')" + !----------------------------------------------------------------------- + ! + ! deal with namelist variables here in init + ! + namelist /lai_streams/ & + stream_year_first_lai, & + stream_year_last_lai, & + model_year_align_lai, & + lai_mapalgo, & + stream_fldFileName_lai, & + stream_meshfile_lai, & + lai_tintalgo + + ! Default values for namelist + stream_year_first_lai = 1 ! first year in stream to use + stream_year_last_lai = 1 ! last year in stream to use + model_year_align_lai = 1 ! align stream_year_first_lai with this model year + stream_fldFileName_lai = '' + stream_meshfile_lai = '' + do n = 1,numLaiFields + write(stream_varnames(n),'(a,i0)') laiString,n + end do + + ! Read lai_streams namelist + if (masterproc) then + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + call find_nlgroup_name(nu_nml, 'lai_streams', status=nml_error) + if (nml_error == 0) then + read(nu_nml, nml=lai_streams,iostat=nml_error) + if (nml_error /= 0) then + call endrun(subname // ':: ERROR reading lai_streams namelist') + end if + else + call endrun(subname // ':: ERROR finding lai_streams namelist') + end if + close(nu_nml) + endif + call shr_mpi_bcast(stream_year_first_lai , mpicom) + call shr_mpi_bcast(stream_year_last_lai , mpicom) + call shr_mpi_bcast(model_year_align_lai , mpicom) + call shr_mpi_bcast(stream_fldFileName_lai , mpicom) + call shr_mpi_bcast(stream_meshfile_lai , mpicom) + call shr_mpi_bcast(lai_tintalgo , mpicom) + + if (masterproc) then + write(iulog,*) + write(iulog,'(a)') 'lai_stream settings:' + write(iulog,'(a,i8)') ' stream_year_first_lai = ',stream_year_first_lai + write(iulog,'(a,i8)') ' stream_year_last_lai = ',stream_year_last_lai + write(iulog,'(a,i8)') ' model_year_align_lai = ',model_year_align_lai + write(iulog,'(a,a)' ) ' stream_fldFileName_lai = ',trim(stream_fldFileName_lai) + write(iulog,'(a,a)' ) ' stream_meshfile_lai = ',trim(stream_meshfile_lai) + write(iulog,'(a,a)' ) ' lai_tintalgo = ',trim(lai_tintalgo) + do n = 1,numLaiFields + write(iulog,'(a,a)' ) ' stream_varname = ',trim(stream_varnames(n)) + end do + write(iulog,*) + endif + + ! Initialize the cdeps data type sdat_lai + call shr_strdata_init_from_inline(sdat_lai, & + my_task = iam, & + logunit = iulog, & + compname = 'LND', & + model_clock = model_clock, & + model_mesh = mesh, & + stream_meshfile = trim(stream_meshfile_lai), & + stream_lev_dimname = 'null', & + stream_mapalgo = trim(lai_mapalgo), & + stream_filenames = (/trim(stream_fldfilename_lai)/), & + stream_fldlistFile = stream_varnames, & + stream_fldListModel = stream_varnames, & + stream_yearFirst = stream_year_first_lai, & + stream_yearLast = stream_year_last_lai, & + stream_yearAlign = model_year_align_lai, & + stream_offset = lai_offset, & + stream_taxmode = 'cycle', & + stream_dtlimit = 1.5_r8, & + stream_tintalgo = lai_tintalgo, & + stream_name = 'LAI data', & + rc = rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + end subroutine lai_init + + !================================================================ + subroutine lai_advance( bounds ) + ! + ! Advance LAI streams + ! + ! !USES: + use clm_time_manager , only : get_curr_date + use dshr_strdata_mod , only : shr_strdata_advance + ! + ! !ARGUMENTS: + type(bounds_type), intent(in) :: bounds + ! + ! !LOCAL VARIABLES: + integer :: g, ig ! Indices + integer :: year ! year (0, ...) for nstep+1 + integer :: mon ! month (1, ..., 12) for nstep+1 + integer :: day ! day of month (1, ..., 31) for nstep+1 + integer :: sec ! seconds into current date for nstep+1 + integer :: mcdate ! Current model date (yyyymmdd) + integer :: rc + !----------------------------------------------------------------------- + + call get_curr_date(year, mon, day, sec) + mcdate = year*10000 + mon*100 + day + call shr_strdata_advance(sdat_lai, ymd=mcdate, tod=sec, logunit=iulog, istr='laidyn', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + if ( .not. allocated(g_to_ig) )then + allocate (g_to_ig(bounds%begg:bounds%endg) ) + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + g_to_ig(g) = ig + end do + end if + + end subroutine lai_advance + + !================================================================ + subroutine lai_interp(bounds, canopystate_inst) + ! + ! Interpolate data stream information for Lai. + ! + ! !USES: + use pftconMod , only : noveg + use PatchType , only : patch + use CanopyStateType , only : canopystate_type + use dshr_methods_mod , only : dshr_fldbun_getfldptr + ! + ! !ARGUMENTS: + type(bounds_type) , intent(in) :: bounds + type(canopystate_type) , intent(inout) :: canopystate_inst + ! + ! !LOCAL VARIABLES: + integer :: ivt, p, ip, ig, n + integer :: lsize + integer :: rc + real(r8), pointer :: dataptr1d(:) + real(r8), pointer :: dataptr2d(:,:) + !----------------------------------------------------------------------- + + SHR_ASSERT_FL( (lbound(g_to_ig,1) <= bounds%begg ), sourcefile, __LINE__) + SHR_ASSERT_FL( (ubound(g_to_ig,1) >= bounds%endg ), sourcefile, __LINE__) + + ! Get pointer for stream data that is time and spatially interpolate to model time and grid + ! Place all lai data from each type into a temporary 2d array + lsize = bounds%endg - bounds%begg + 1 + allocate(dataptr2d(lsize, numLaiFields)) + do n = 1,numLaiFields + call dshr_fldbun_getFldPtr(sdat_lai%pstrm(1)%fldbun_model, trim(stream_varnames(n)), & + fldptr1=dataptr1d, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + dataptr2d(:,n) = dataptr1d(:) + end do + + do p = bounds%begp, bounds%endp + ivt = patch%itype(p) + ! Set lai for each gridcell/patch combination + if (ivt /= noveg) then + ! vegetated pft + ig = g_to_ig(patch%gridcell(p)) + canopystate_inst%tlai_patch(p) = dataptr2d(ig,ivt) + else + ! non-vegetated pft + canopystate_inst%tlai_patch(p) = 0._r8 + endif + end do + deallocate(dataptr2d) + + end subroutine lai_interp + +end module LaiStreamMod diff --git a/src/cpl/nuopc/ndepStreamMod.F90 b/src/cpl/nuopc/ndepStreamMod.F90 new file mode 100644 index 0000000000..4432b0eeea --- /dev/null +++ b/src/cpl/nuopc/ndepStreamMod.F90 @@ -0,0 +1,270 @@ +module ndepStreamMod + + !----------------------------------------------------------------------- + ! !DESCRIPTION: + ! Contains methods for reading in nitrogen deposition data file + ! Also includes functions for dynamic ndep file handling and + ! interpolation. + ! + ! !USES + use ESMF + use dshr_strdata_mod , only : shr_strdata_type + use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_cl, CS => shr_kind_cs + use spmdMod , only : mpicom, masterproc, iam + use decompMod , only : bounds_type + use clm_varctl , only : iulog, inst_name + use abortutils , only : endrun + + ! !PUBLIC TYPES: + implicit none + private + + ! !PUBLIC MEMBER FUNCTIONS: + public :: ndep_init ! position datasets for dynamic ndep + public :: ndep_interp ! interpolates between two years of ndep file data + + ! !PRIVATE MEMBER FUNCTIONS: + private :: check_units ! Check the units and make sure they can be used + + ! ! PRIVATE TYPES + type(shr_strdata_type) :: sdat_ndep ! input data stream + logical :: divide_by_secs_per_yr = .true. ! divide by the number of seconds per year + character(len=CS) :: stream_varnames(1) + + character(len=*), parameter, private :: sourcefile = & + __FILE__ + +!============================================================================== +contains +!============================================================================== + + subroutine ndep_init(bounds, NLFilename) + ! + ! Initialize data stream information. + ! + ! Uses: + use shr_nl_mod , only : shr_nl_find_group_name + use shr_string_mod , only : shr_string_listGetName, shr_string_listGetNum + use shr_log_mod , only : errMsg => shr_log_errMsg + use shr_mpi_mod , only : shr_mpi_bcast + use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use dshr_strdata_mod , only : shr_strdata_init_from_inline + ! + ! arguments + type(bounds_type), intent(in) :: bounds + character(len=*), intent(in) :: NLFilename ! Namelist filename + ! + ! local variables + integer :: nu_nml ! unit for namelist file + integer :: nml_error ! namelist i/o error flag + integer :: stream_year_first_ndep ! first year in stream to use + integer :: stream_year_last_ndep ! last year in stream to use + integer :: model_year_align_ndep ! align stream_year_firstndep with + real(r8) :: ndep_dtlimit = 1.5_r8 + character(len=CL) :: ndepmapalgo = 'bilinear' + character(len=CL) :: ndep_tintalgo = 'linear' + character(len=CS) :: ndep_taxmode = 'extend' + character(len=CL) :: ndep_varlist = 'NDEP_year' + integer :: ndep_offset = 0 ! Offset in time for dataset (sec) + character(len=CL) :: stream_fldFileName_ndep + character(len=CL) :: stream_meshfile_ndep + integer :: stream_nflds + integer :: rc + character(*), parameter :: subName = "('ndepdyn_init')" + !----------------------------------------------------------------------- + + namelist /ndepdyn_nml/ & + stream_year_first_ndep, & + stream_year_last_ndep, & + model_year_align_ndep, & + ndepmapalgo, & + ndep_taxmode, & + ndep_varlist, & + ndep_tintalgo, & + stream_fldFileName_ndep, & + stream_meshfile_ndep + + ! Default values for namelist + stream_year_first_ndep = 1 ! first year in stream to use + stream_year_last_ndep = 1 ! last year in stream to use + model_year_align_ndep = 1 ! align stream_year_first_ndep with this model year + stream_fldFileName_ndep = ' ' + stream_meshfile_ndep = ' ' + + ! Read ndepdyn_nml namelist + if (masterproc) then + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + call shr_nl_find_group_name(nu_nml, 'ndepdyn_nml', status=nml_error) + if (nml_error == 0) then + read(nu_nml, nml=ndepdyn_nml,iostat=nml_error) + if (nml_error /= 0) then + call endrun(msg=' ERROR reading ndepdyn_nml namelist'//errMsg(sourcefile, __LINE__)) + end if + else + call endrun(msg=' ERROR finding ndepdyn_nml namelist'//errMsg(sourcefile, __LINE__)) + end if + close(nu_nml) + endif + + call shr_mpi_bcast(stream_year_first_ndep , mpicom) + call shr_mpi_bcast(stream_year_last_ndep , mpicom) + call shr_mpi_bcast(model_year_align_ndep , mpicom) + call shr_mpi_bcast(ndep_varlist , mpicom) + call shr_mpi_bcast(ndep_taxmode , mpicom) + call shr_mpi_bcast(ndep_tintalgo , mpicom) + call shr_mpi_bcast(stream_fldFileName_ndep, mpicom) + call shr_mpi_bcast(stream_meshfile_ndep , mpicom) + + stream_nflds = shr_string_listGetNum(ndep_varlist) ! Get number of fields in list, fn + if (stream_nflds /= 1) then + call endrun(msg=' ERROR stream_nflds is not 1 for '//errMsg(sourcefile, __LINE__)) + end if + call shr_string_listGetName(ndep_varlist, 1, stream_varnames(1)) + + if (masterproc) then + write(iulog,'(a)' ) ' ' + write(iulog,'(a,i8)') 'ndepdyn stream settings:' + write(iulog,'(a,i8)') ' stream_year_first_ndep = ',stream_year_first_ndep + write(iulog,'(a,i8)') ' stream_year_last_ndep = ',stream_year_last_ndep + write(iulog,'(a,i8)') ' model_year_align_ndep = ',model_year_align_ndep + write(iulog,'(a,a)' ) ' stream_fldFileName_ndep = ',trim(stream_fldFileName_ndep) + write(iulog,'(a,a)' ) ' stream_meshfile_ndep = ',trim(stream_meshfile_ndep) + write(iulog,'(a,a)' ) ' stream_varnames = ',trim(stream_varnames(1)) + write(iulog,'(a,a)' ) ' ndep_taxmode = ',trim(ndep_taxmode) + write(iulog,'(a,a)' ) ' ndep_tintalgo = ',trim(ndep_tintalgo) + write(iulog,'(a)' ) ' ' + endif + + ! Read in units + call check_units( stream_fldFileName_ndep ) + + ! Initialize the cdeps data type sdat_ndep + call shr_strdata_init_from_inline(sdat_ndep, & + my_task = iam, & + logunit = iulog, & + compname = 'LND', & + model_clock = model_clock, & + model_mesh = mesh, & + stream_meshfile = trim(stream_meshfile_ndep), & + stream_lev_dimname = 'null', & + stream_mapalgo = trim(ndepmapalgo), & + stream_filenames = (/trim(stream_fldfilename_ndep)/), & + stream_fldlistFile = stream_varnames, & + stream_fldListModel = stream_varnames, & + stream_yearFirst = stream_year_first_ndep, & + stream_yearLast = stream_year_last_ndep, & + stream_yearAlign = model_year_align_ndep, & + stream_offset = ndep_offset, & + stream_taxmode = ndep_taxmode, & + stream_dtlimit = ndep_dtlimit, & + stream_tintalgo = ndep_tintalgo, & + stream_name = 'Nitrogen deposition data ', & + rc = rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + end subroutine ndep_init + + !================================================================ + subroutine check_units( stream_fldFileName_ndep) + + !------------------------------------------------------------------- + ! Check that units are correct on the file and if need any conversion + + use ncdio_pio , only : ncd_pio_openfile, ncd_inqvid, ncd_getatt, ncd_pio_closefile, ncd_nowrite + use ncdio_pio , only : file_desc_t, var_desc_t + use shr_log_mod , only : errMsg => shr_log_errMsg + + ! Arguments + character(len=*), intent(in) :: stream_fldFileName_ndep ! ndep filename + ! + ! Local variables + type(file_desc_t) :: ncid ! NetCDF filehandle for ndep file + type(var_desc_t) :: vardesc ! variable descriptor + integer :: varid ! variable index + logical :: readvar ! If variable was read + character(len=CS) :: ndepunits! ndep units + !----------------------------------------------------------------------- + + call ncd_pio_openfile( ncid, trim(stream_fldFileName_ndep), ncd_nowrite ) + call ncd_inqvid(ncid, stream_varnames(1), varid, vardesc, readvar=readvar) + if ( readvar ) then + call ncd_getatt(ncid, varid, "units", ndepunits) + else + call endrun(msg=' ERROR finding variable: '//trim(stream_varnames(1))//" in file: "// & + trim(stream_fldFileName_ndep)//errMsg(sourcefile, __LINE__)) + end if + call ncd_pio_closefile( ncid ) + + ! Now check to make sure they are correct + if (trim(ndepunits) == "g(N)/m2/s" )then + divide_by_secs_per_yr = .false. + else if ( trim(ndepunits) == "g(N)/m2/yr" )then + divide_by_secs_per_yr = .true. + else + call endrun(msg=' ERROR in units for nitrogen deposition equal to: '//trim(ndepunits)//" not units expected"// & + errMsg(sourcefile, __LINE__)) + end if + + end subroutine check_units + + !================================================================ + subroutine ndep_interp(bounds, atm2lnd_inst) + + !----------------------------------------------------------------------- + use clm_time_manager , only : get_curr_date, get_days_per_year + use clm_varcon , only : secspday + use atm2lndType , only : atm2lnd_type + use dshr_methods_mod , only : dshr_fldbun_getfldptr + use dshr_strdata_mod , only : shr_strdata_advance + ! + ! Arguments + type(bounds_type) , intent(in) :: bounds + type(atm2lnd_type), intent(inout) :: atm2lnd_inst + ! + ! Local variables + integer :: g, ig + integer :: year ! year (0, ...) for nstep+1 + integer :: mon ! month (1, ..., 12) for nstep+1 + integer :: day ! day of month (1, ..., 31) for nstep+1 + integer :: sec ! seconds into current date for nstep+1 + integer :: mcdate ! Current model date (yyyymmdd) + integer :: dayspyr ! days per year + integer :: rc + real(r8), pointer :: dataptr1d(:) + !----------------------------------------------------------------------- + + ! Advance sdat stream + call get_curr_date(year, mon, day, sec) + mcdate = year*10000 + mon*100 + day + call shr_strdata_advance(sdat_ndep, ymd=mcdate, tod=sec, logunit=iulog, istr='ndepdyn', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Get pointer for stream data that is time and spatially interpolate to model time and grid + call dshr_fldbun_getFldPtr(sdat_ndep%pstrm(1)%fldbun_model, stream_varnames(1), fldptr1=dataptr1d, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + + ! Fill in atm2lnd_inst%forc_ndep_grc + if ( divide_by_secs_per_yr )then + ig = 0 + dayspyr = get_days_per_year( ) + do g = bounds%begg,bounds%endg + ig = ig+1 + atm2lnd_inst%forc_ndep_grc(g) = dataptr1d(ig) / (secspday * dayspyr) + end do + else + ig = 0 + do g = bounds%begg,bounds%endg + ig = ig+1 + atm2lnd_inst%forc_ndep_grc(g) = dataptr1d(ig) + end do + end if + + end subroutine ndep_interp + +end module ndepStreamMod diff --git a/src/main/clm_driver.F90 b/src/main/clm_driver.F90 index e84e9daf90..2661a2cadc 100644 --- a/src/main/clm_driver.F90 +++ b/src/main/clm_driver.F90 @@ -110,7 +110,7 @@ subroutine clm_drv(doalb, nextsw_cday, declinp1, declin, rstwr, nlend, rdate, ro ! !USES: use clm_time_manager , only : get_curr_date use clm_varctl , only : use_lai_streams, fates_spitfire_mode - use SatellitePhenologyMod, only : lai_advance + use laiStreamMod , only : lai_advance use FATESFireFactoryMod , only : scalar_lightning ! ! !ARGUMENTS: From 2a90c2063ad5b61f381b9cd69c1c6e47850ee1fb Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Tue, 15 Jun 2021 09:54:18 -0600 Subject: [PATCH 03/63] Fix invalid xml Resolves ESCOMP/CTSM#1402 --- cime_config/testdefs/ExpectedTestFails.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 2584fdbf6b..39d33e2292 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -79,7 +79,7 @@ - FAIL #1356 @@ -100,7 +100,7 @@ - FAIL #1356 From 399353e4a89fba326bad331f8b92faebd4434989 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 15 Jun 2021 10:36:58 -0600 Subject: [PATCH 04/63] updated cdeps and bug fixes --- Externals.cfg | 2 +- bld/namelist_files/namelist_defaults_ctsm.xml | 1 + src/cpl/nuopc/FireDataBaseType.F90 | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index f847deb5b7..345c84089d 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -51,7 +51,7 @@ required = True local_path = components/cdeps protocol = git repo_url = https://github.com/ESCOMP/CDEPS.git -tag = cdeps0.12.4 +tag = cdeps0.12.10 externals = Externals_CDEPS.cfg required = True diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 67521d66b6..50fbadc380 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -1581,6 +1581,7 @@ lnd/clm2/surfdata_map/release-clm5.0.30/surfdata_ne0np4.CONUS.ne30x8_hist_78pfts atm/datm7/NASA_LIS/clmforc.Li_2012_climo1995-2011.T62.lnfm_Total_c140423.nc atm/datm7/NASA_LIS/clmforc.Li_2012_climo1995-2011.T62_ESMFmesh_cdf5_110621.nc atm/datm7/NASA_LIS/clmforc.Li_2016_climo1995-2013.360x720.lnfm_Total_c160825.nc +atm/datm7/NASA_LIS/clmforc.Li_2016_climo1995-2013.360x720_ESMFmesh_cdf5_150621.nc bilinear diff --git a/src/cpl/nuopc/FireDataBaseType.F90 b/src/cpl/nuopc/FireDataBaseType.F90 index 6ae9c5f3c1..a0e429e10b 100644 --- a/src/cpl/nuopc/FireDataBaseType.F90 +++ b/src/cpl/nuopc/FireDataBaseType.F90 @@ -181,7 +181,7 @@ subroutine hdm_init( this, bounds, NLFilename ) stream_fldFileName_popdens = ' ' stream_meshfile_popdens = ' ' popdens_tintalgo = 'nearest' - popdensgmapalgo = 'bilinear' + popdensmapalgo = 'bilinear' ! Read popd_streams namelist if (masterproc) then From b4d64ac56ff84112631535eb9353853df1c8a951 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Wed, 16 Jun 2021 15:59:14 -0600 Subject: [PATCH 05/63] cdeps streams moved to share_esmf and lilac stream moved to lilac --- cime_config/buildnml | 1 - lilac/bld_templates/lilac_in_template | 1 + lilac/src/lilac_atmaero.F90 | 264 +++++++----------- lilac/src/lilac_mod.F90 | 3 +- python/ctsm/lilac_make_runtime_inputs.py | 1 + src/cpl/lilac/lnd_comp_esmf.F90 | 22 +- src/cpl/lilac/lnd_comp_shr.F90 | 15 + .../FireDataBaseType.F90 | 4 +- .../SoilMoistureStreamMod.F90 | 0 .../UrbanTimeVarType.F90 | 8 +- .../ch4FInundatedStreamType.F90 | 6 +- .../{nuopc => share_esmf}/laiStreamMod.F90 | 10 +- .../{nuopc => share_esmf}/ndepStreamMod.F90 | 2 +- 13 files changed, 146 insertions(+), 191 deletions(-) create mode 100644 src/cpl/lilac/lnd_comp_shr.F90 rename src/cpl/{nuopc => share_esmf}/FireDataBaseType.F90 (99%) rename src/cpl/{nuopc => share_esmf}/SoilMoistureStreamMod.F90 (100%) rename src/cpl/{nuopc => share_esmf}/UrbanTimeVarType.F90 (97%) rename src/cpl/{nuopc => share_esmf}/ch4FInundatedStreamType.F90 (98%) rename src/cpl/{nuopc => share_esmf}/laiStreamMod.F90 (96%) rename src/cpl/{nuopc => share_esmf}/ndepStreamMod.F90 (99%) diff --git a/cime_config/buildnml b/cime_config/buildnml index d47b77fbde..44064b40b8 100755 --- a/cime_config/buildnml +++ b/cime_config/buildnml @@ -239,7 +239,6 @@ def buildnml(case, caseroot, compname): configuration, structure, lndfrac_file, glc_nec, glc_use_antarctica_flag, ccsm_co2_ppmv, clm_co2_type, config_cache_file, driver, clm_bldnml_opts, spinup, tuning, gridmask)) - print "DEBUG: command is ",command rc, out, err = run_cmd(command, from_dir=ctsmconf) expect(rc==0,"Command %s failed rc=%d\nout=%s\nerr=%s"%(cmd,rc,out,err)) diff --git a/lilac/bld_templates/lilac_in_template b/lilac/bld_templates/lilac_in_template index 78a8ab75cf..1543ed2a0e 100644 --- a/lilac/bld_templates/lilac_in_template +++ b/lilac/bld_templates/lilac_in_template @@ -14,6 +14,7 @@ / &atmaero_stream stream_fldfilename='$INPUTDATA/atm/cam/chem/trop_mozart_aero/aero/aerosoldep_WACCM.ensmean_monthly_hist_1849-2015_0.9x1.25_CMIP6_c180926.nc' + stream_meshfile = '$INPUTDATA/share/meshes/fv0.9x1.25_141008_polemod_ESMFmesh.nc' stream_year_first = 2000 stream_year_last = 2000 / diff --git a/lilac/src/lilac_atmaero.F90 b/lilac/src/lilac_atmaero.F90 index f9098f4a89..8832c78417 100644 --- a/lilac/src/lilac_atmaero.F90 +++ b/lilac/src/lilac_atmaero.F90 @@ -14,25 +14,16 @@ module lilac_atmaero use shr_nl_mod , only : shr_nl_find_group_name use shr_log_mod , only : shr_log_errMsg use shr_mpi_mod , only : shr_mpi_bcast - use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create - use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance - use shr_string_mod , only : shr_string_listAppend use shr_cal_mod , only : shr_cal_ymd2date - use shr_pio_mod , only : shr_pio_getiotype - use mct_mod , only : mct_avect_indexra, mct_gsmap, mct_ggrid - use mct_mod , only : mct_gsmap_init, mct_gsmap_orderedpoints - use mct_mod , only : mct_ggrid_init, mct_ggrid_importIAttr, mct_ggrid_importRattr - ! ctsm uses - use ncdio_pio , only : pio_subsystem - use domainMod , only : ldomain - use clm_time_manager , only : get_calendar + ! cdeps uses + use dshr_methods_mod , only : dshr_fldbun_getfldptr + use dshr_strdata_mod , only : shr_strdata_type, shr_strdata_init_from_inline, shr_strdata_advance ! lilac uses - use lilac_atmcap , only : gindex_atm use lilac_methods , only : chkerr use lilac_methods , only : lilac_methods_FB_getFieldN - use lilac_constants , only : field_index_unset + use lilac_constants , only : field_index_unset, logunit use ctsm_LilacCouplingFields, only : a2l_fields, lilac_atm2lnd use ctsm_LilacCouplingFieldIndices @@ -44,8 +35,8 @@ module lilac_atmaero integer :: field_index = field_index_unset end type field_mapping_type - public :: lilac_atmaero_init ! initialize stream data type sdat - public :: lilac_atmaero_interp ! interpolates between two years of ndep file data + public :: lilac_atmaero_init ! initialize stream data type sdat + public :: lilac_atmaero_interp ! interpolates between two years of ndep file data ! module data type(shr_strdata_type) :: sdat ! input data stream @@ -63,7 +54,7 @@ module lilac_atmaero contains !============================================================================== - subroutine lilac_atmaero_init(atm2cpl_state, rc) + subroutine lilac_atmaero_init(atm2cpl_state, lilac_clock, rc) ! ---------------------------------------- ! Initialize data stream information. @@ -71,45 +62,35 @@ subroutine lilac_atmaero_init(atm2cpl_state, rc) ! input/output variables type(ESMF_State) , intent(inout) :: atm2cpl_state + type(ESMF_Clock) , intent(inout) :: lilac_clock integer , intent(out) :: rc ! local variables type(ESMF_VM) :: vm - type(ESMF_Mesh) :: lmesh + type(ESMF_Mesh) :: mesh type(ESMF_FieldBundle) :: lfieldbundle type(ESMF_Field) :: lfield - type(mct_ggrid) :: ggrid_atm ! domain information - type(mct_gsmap) :: gsmap_atm ! decompositoin info + integer :: mytask ! mpi task number + integer :: mpicom ! mpi communicator + integer :: n, nfld ! indices + integer :: field_index ! field index + integer :: nunit ! namelist input unit + integer :: ierr ! namelist i/o error flag + character(len=cl) :: stream_fldfilename ! name of input stream datafile + character(len=cl) :: stream_meshfile ! name of input stream meshfile + character(len=CL) :: mapalgo = 'bilinear' ! type of 2d mapping + character(len=CS) :: taxmode = 'extend' ! time extrapolation + integer :: stream_year_first ! first year in stream to use + integer :: stream_year_last ! last year in stream to use + integer :: model_year_align ! align stream_year_first with model year type(field_mapping_type), allocatable :: all_fields(:) ! all fields that can possibly be read from data - integer :: mytask ! mpi task number - integer :: mpicom ! mpi communicator - integer :: n ! index - integer :: field_index - integer :: lsize ! local size - integer :: gsize ! global size - integer :: nunit ! namelist input unit - integer :: ierr ! namelist i/o error flag - character(len=cl) :: stream_fldfilename ! name of input stream file - character(len=CL) :: mapalgo = 'bilinear' ! type of 2d mapping - character(len=CS) :: taxmode = 'extend' ! time extrapolation - character(len=CL) :: fldlistFile ! name of fields in input stream file - character(len=CL) :: fldlistModel ! name of fields in model - integer :: stream_year_first ! first year in stream to use - integer :: stream_year_last ! last year in stream to use - integer :: model_year_align ! align stream_year_first with model year - integer :: spatialDim - integer :: numOwnedElements - real(r8), pointer :: ownedElemCoords(:) - real(r8), pointer :: mesh_lons(:) - real(r8), pointer :: mesh_lats(:) - real(r8), pointer :: mesh_areas(:) - real(r8), pointer :: rdata(:) - integer , pointer :: idata(:) + character(len=CS), allocatable :: fldlistFile(:) + character(len=CS), allocatable :: fldlistModel(:) !----------------------------------------------------------------------- namelist /atmaero_stream/ & stream_year_first, stream_year_last, model_year_align, & - stream_fldfilename + stream_fldfilename, stream_meshfile rc = ESMF_SUCCESS @@ -129,29 +110,40 @@ subroutine lilac_atmaero_init(atm2cpl_state, rc) field_mapping_type('DSTX04WD', lilac_a2l_Faxa_dstwet4), & field_mapping_type('DSTX04DD', lilac_a2l_Faxa_dstdry4)] - num_fields_to_read = 0 - allocate(fields_to_read(size(all_fields))) - fldlistFile = ' ' - fldlistModel = ' ' + nfld = 0 do n = 1, size(all_fields) field_index = all_fields(n)%field_index if (a2l_fields%is_needed_from_data(field_index)) then - num_fields_to_read = num_fields_to_read + 1 - fields_to_read(num_fields_to_read) = all_fields(n) - call shr_string_listAppend(fldlistFile, fields_to_read(num_fields_to_read)%field_name) - call shr_string_listAppend(fldlistModel, a2l_fields%get_fieldname(field_index)) + nfld = nfld + 1 end if end do + num_fields_to_read = nfld + if (num_fields_to_read == 0) then return end if + allocate(fields_to_read(num_fields_to_read)) + allocate(fldlistFile(num_fields_to_read)) + allocate(fldlistModel(num_fields_to_read)) + nfld = 0 + do n = 1, size(all_fields) + field_index = all_fields(n)%field_index + if (a2l_fields%is_needed_from_data(field_index)) then + nfld = nfld + 1 + fields_to_read(nfld) = all_fields(n) + fldListFile(nfld) = trim(fields_to_read(nfld)%field_name) + fldListModel(nfld) = trim(a2l_fields%get_fieldname(field_index)) + end if + end do + ! default values for namelist stream_year_first = 1 ! first year in stream to use stream_year_last = 1 ! last year in stream to use model_year_align = 1 ! align stream_year_first with this model year stream_fldFileName = ' ' + stream_meshfile = ' ' ! get mytask and mpicom call ESMF_VMGetCurrent(vm, rc=rc) @@ -177,107 +169,57 @@ subroutine lilac_atmaero_init(atm2cpl_state, rc) call shr_mpi_bcast(stream_year_last , mpicom) call shr_mpi_bcast(model_year_align , mpicom) call shr_mpi_bcast(stream_fldfilename, mpicom) + call shr_mpi_bcast(stream_meshfile , mpicom) if (mytask == 0) then print *, ' ' - print *, 'atmaero stream settings:' - print *, ' stream_year_first = ',stream_year_first - print *, ' stream_year_last = ',stream_year_last - print *, ' model_year_align = ',model_year_align - print *, ' stream_fldFileName = ',stream_fldFileName + write(logunit,'(a)') 'atmaero stream settings:' + write(logunit,'(a,i8)')' stream_year_first = ',stream_year_first + write(logunit,'(a,i8)')' stream_year_last = ',stream_year_last + write(logunit,'(a,i8)')' model_year_align = ',model_year_align + write(logunit,'(a)' )' stream_fldFileName = ',trim(stream_fldFileName) + write(logunit,'(a)' )' stream_meshfile = ',trim(stream_meshfile) print *, ' ' endif ! ------------------------------ - ! create the mct gsmap - ! ------------------------------ - lsize = size(gindex_atm) - gsize = ldomain%ni * ldomain%nj - call mct_gsmap_init( gsmap_atm, gindex_atm, mpicom, 1, lsize, gsize ) - - ! ------------------------------ - ! obtain mesh lats, lons and areas + ! obtain atm mesh ! ------------------------------ call ESMF_StateGet(atm2cpl_state, 'a2c_fb', lfieldbundle, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call lilac_methods_FB_getFieldN(lfieldbundle, fieldnum=1, field=lfield, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - - call ESMF_FieldGet(lfield, mesh=lmesh, rc=rc) + call ESMF_FieldGet(lfield, mesh=mesh, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - call ESMF_MeshGet(lmesh, spatialDim=spatialDim, numOwnedElements=numOwnedElements, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - if (numOwnedElements /= lsize) then - call shr_sys_abort('ERROR: numOwnedElements is not equal to lsize') - end if - allocate(ownedElemCoords(spatialDim*numOwnedElements)) - - call ESMF_MeshGet(lmesh, ownedElemCoords=ownedElemCoords, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - allocate(mesh_lons(numOwnedElements)) - allocate(mesh_lats(numOwnedElements)) - allocate(mesh_areas(numOwnedElements)) - do n = 1,numOwnedElements - mesh_lons(n) = ownedElemCoords(2*n-1) - mesh_lats(n) = ownedElemCoords(2*n) - mesh_areas(n) = 1.e36 ! hard-wire for now for testing - end do - - ! ------------------------------ - ! create the mct ggrid - ! ------------------------------ - call mct_ggrid_init( ggrid=ggrid_atm, CoordChars='lat:lon:hgt', OtherChars='area:aream:mask:frac', lsize=lsize) - call mct_gsmap_orderedpoints(gsmap_atm, mytask, idata) - call mct_gGrid_importIAttr(ggrid_atm,'GlobGridNum', idata, lsize) - call mct_gGrid_importRattr(ggrid_atm,"lon" , mesh_lons , lsize) - call mct_gGrid_importRattr(ggrid_atm,"lat" , mesh_lats , lsize) - call mct_gGrid_importRattr(ggrid_atm,"area", mesh_areas, lsize) - allocate(rdata(lsize)) - rdata(:) = 1._R8 - call mct_gGrid_importRattr(ggrid_atm,"mask", rdata, lsize) - deallocate(mesh_lons, mesh_lats, mesh_areas, rdata) - ! ------------------------------ ! create the stream data sdat ! ------------------------------ - call shr_strdata_create(sdat,& - name = "atmaero", & - pio_subsystem = pio_subsystem, & - pio_iotype = shr_pio_getiotype(compid= 1), & - mpicom = mpicom, & - compid = 1, & - gsmap = gsmap_atm, & - ggrid = ggrid_atm, & - nxg = ldomain%ni, & - nyg = ldomain%nj, & - yearFirst = stream_year_first, & - yearLast = stream_year_last, & - yearAlign = model_year_align, & - offset = 0, & - domFilePath = '', & - domfilename = trim(stream_fldfilename), & - domTvarName = 'time', & - domXvarName = 'lon' , & - domYvarName = 'lat' , & - domAreaName = 'area', & - domMaskName = 'mask', & - filePath = '', & - filename = (/trim(stream_fldfilename)/), & - fldListFile = trim(fldlistFile), & - fldListModel = trim(fldlistModel), & - fillalgo = 'none', & - mapalgo = mapalgo, & - calendar = get_calendar(), & - taxmode = taxmode ) - - if (mytask == 0) then - call shr_strdata_print(sdat,'ATMAERO data') - endif + call shr_strdata_init_from_inline(sdat, & + my_task = mytask, & + logunit = logunit, & + compname = 'LND', & + model_clock = lilac_clock, & + model_mesh = mesh, & + stream_meshfile = trim(stream_meshfile), & + stream_lev_dimname = 'null', & + stream_mapalgo = trim(mapalgo), & + stream_filenames = (/trim(stream_fldfilename)/), & + stream_fldlistFile = fldlistFile, & + stream_fldListModel = fldlistModel, & + stream_yearFirst = stream_year_first, & + stream_yearLast = stream_year_last, & + stream_yearAlign = model_year_align, & + stream_offset = 0, & + stream_taxmode = taxmode, & + stream_dtlimit = 1.5_r8, & + stream_tintalgo = 'linear', & + stream_name = 'ATMAERO data ', & + rc = rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if end subroutine lilac_atmaero_init @@ -290,13 +232,12 @@ subroutine lilac_atmaero_interp(clock, rc) integer, intent(out) :: rc ! local variables - type(ESMF_VM) :: vm - integer :: mpicom ! mpi communicator - integer :: mytask ! mpi task number - type(ESMF_FieldBundle) :: lfieldbundle - type(ESMF_Time) :: currTime - integer :: yy, mm, dd, sec, curr_ymd - integer :: n + type(ESMF_Time) :: currTime + integer :: yy, mm, dd, sec, curr_ymd + integer :: n + integer :: field_index + character(len=CS) :: stream_varname + real(r8), pointer :: dataptr1d(:) character(len=*), parameter :: subname='lilac_atmaero: [lilac_atmaero_interp]' !----------------------------------------------------------------------- @@ -306,43 +247,32 @@ subroutine lilac_atmaero_interp(clock, rc) return end if - ! get mytask and mpicom - call ESMF_VMGetCurrent(vm, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - call ESMF_VMGet(vm, localPet=mytask, mpiCommunicator=mpicom, rc=rc) - if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - ! get current time info call ESMF_ClockGet( clock, currTime=currTime, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_TimeGet( currTime, yy=yy, mm=mm, dd=dd, s=sec, rc=rc ) if (ChkErr(rc,__LINE__,u_FILE_u)) return call shr_cal_ymd2date(yy,mm,dd,curr_ymd) ! advance the streams - call shr_strdata_advance(sdat, curr_ymd, sec, mpicom, 'atmaero') + call shr_strdata_advance(sdat, ymd=curr_ymd, tod=sec, logunit=logunit, istr='atmaero', rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + ! obtain the stream data do n = 1, num_fields_to_read - call set_field(n) + field_index = fields_to_read(n)%field_index + stream_varname = a2l_fields%get_fieldname(field_index) + write(6,*)'DEBUG: stream_varname = ',trim(stream_varname) + call dshr_fldbun_getFldPtr(sdat%pstrm(1)%fldbun_model, trim(stream_varname), fldptr1=dataptr1d, rc=rc) + + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then + call ESMF_Finalize(endflag=ESMF_END_ABORT) + end if + call lilac_atm2lnd(field_index, dataptr1d) end do end subroutine lilac_atmaero_interp - !============================================================================== - - subroutine set_field(fieldnum) - - ! input/output data - integer, intent(in) :: fieldnum ! index into fields_to_read and sdat (which are assumed to have the same ordering) - - ! local data - integer :: field_index ! index in a2l_fields - !----------------------------------------------------------------------- - - field_index = fields_to_read(fieldnum)%field_index - call lilac_atm2lnd(field_index, sdat%avs(1)%rAttr(fieldnum,:)) - - end subroutine set_field - end module lilac_atmaero diff --git a/lilac/src/lilac_mod.F90 b/lilac/src/lilac_mod.F90 index d98e3e080c..6eb17d008c 100644 --- a/lilac/src/lilac_mod.F90 +++ b/lilac/src/lilac_mod.F90 @@ -151,7 +151,6 @@ subroutine lilac_init2(mpicom, atm_global_index, atm_lons, atm_lats, & integer, pointer :: mycomms(:) ! for mct integer, pointer :: myids(:) ! for mct integer :: compids(1) = (/1/) ! for pio_init2 - array with component ids - integer :: comms(1) ! for both mct and pio_init2 - array with mpicoms character(len=32) :: compLabels(1) = (/'LND'/) ! for pio_init2 character(len=64) :: comp_name(1) = (/'LND'/) ! for pio_init2 logical :: comp_iamin(1) = (/.true./) ! for pio init2 @@ -485,7 +484,7 @@ subroutine lilac_init2(mpicom, atm_global_index, atm_lons, atm_lats, & ! Initialize atmaero stream data (using share strearm capability from CIME) !------------------------------------------------------------------------- - call lilac_atmaero_init(atm2cpl_state, rc) + call lilac_atmaero_init(atm2cpl_state, lilac_clock, rc) if (chkerr(rc,__LINE__,u_FILE_u)) call shr_sys_abort("lilac error in initializing lilac_atmaero_init") !------------------------------------------------------------------------- diff --git a/python/ctsm/lilac_make_runtime_inputs.py b/python/ctsm/lilac_make_runtime_inputs.py index 2119c0e225..ff292cb660 100644 --- a/python/ctsm/lilac_make_runtime_inputs.py +++ b/python/ctsm/lilac_make_runtime_inputs.py @@ -233,6 +233,7 @@ def buildnml(cime_path, rundir): # call build-namelist cmd = os.path.abspath(os.path.join(path_to_ctsm_root(), "bld", "build-namelist")) command = [cmd, + '-driver', 'nuopc', '-cimeroot', cime_path, '-infile', infile, '-csmdata', inputdata_path, diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index 7d227a4134..c01e454211 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -39,6 +39,7 @@ module lnd_comp_esmf use clm_driver , only : clm_drv use lnd_import_export , only : import_fields, export_fields use lnd_shr_methods , only : chkerr, state_diagnose + use lnd_comp_shr , only : mesh, model_meshfile, model_clock use lnd_set_decomp_and_domain, only :lnd_set_decomp_and_domain_from_readmesh implicit none @@ -127,7 +128,6 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) type(ESMF_Field) :: lfield ! mesh generation - type(ESMF_Mesh) :: lnd_mesh character(ESMF_MAXSTR) :: lnd_mesh_filename ! full filepath of land mesh file integer, pointer :: gindex(:) ! global index space for land and ocean points type(ESMF_DistGrid) :: distgrid @@ -251,6 +251,9 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) end if call shr_mpi_bcast(lnd_mesh_filename, mpicom) + ! Fill in the value for model_meshfile in lnd_comp_shr used by the stream routines in share_esmf/ + model_meshfile = trim(lnd_mesh_filename) + !---------------------- ! Obtain caseid and start type from attributes in import state !---------------------- @@ -320,6 +323,9 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) ref_ymd_in=ref_ymd, ref_tod_in=ref_tod, dtime_in=dtime_lilac) call ESMF_LogWrite(subname//"ctsm time manager initialized....", ESMF_LOGMSG_INFO) + ! Set model clock in lnd_comp_shr + model_clock = clock + !---------------------- ! Read namelist, grid and surface data !---------------------- @@ -342,7 +348,7 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) ! For now set the meshfile_mask equal to the model_meshfile call lnd_set_decomp_and_domain_from_readmesh(driver='lilac', vm=vm, & meshfile_lnd=lnd_mesh_filename, meshfile_mask=lnd_mesh_filename, & - mesh_ctsm=lnd_mesh, ni=ni, nj=nj, rc=rc) + mesh_ctsm=mesh, ni=ni, nj=nj, rc=rc) !-------------------------------- ! Finish initializing ctsm @@ -357,9 +363,9 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) c2l_fb_atm = ESMF_FieldBundleCreate (name='c2l_fb_atm', rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! now add atm import fields on lnd_mesh to this field bundle + ! now add atm import fields on mesh to this field bundle do n = 1, a2l_fields%num_fields() - lfield = ESMF_FieldCreate(lnd_mesh, ESMF_TYPEKIND_R8 , meshloc=ESMF_MESHLOC_ELEMENT, & + lfield = ESMF_FieldCreate(mesh, ESMF_TYPEKIND_R8 , meshloc=ESMF_MESHLOC_ELEMENT, & name=a2l_fields%get_fieldname(n), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_FieldBundleAdd(c2l_fb_atm, (/lfield/), rc=rc) @@ -393,9 +399,9 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) l2c_fb_atm = ESMF_FieldBundleCreate(name='l2c_fb_atm', rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! now add atm export fields on lnd_mesh to this field bundle + ! now add atm export fields on mesh to this field bundle do n = 1, l2a_fields%num_fields() - lfield = ESMF_FieldCreate(lnd_mesh, ESMF_TYPEKIND_R8 , meshloc=ESMF_MESHLOC_ELEMENT, & + lfield = ESMF_FieldCreate(mesh, ESMF_TYPEKIND_R8 , meshloc=ESMF_MESHLOC_ELEMENT, & name=l2a_fields%get_fieldname(n), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_FieldBundleAdd(l2c_fb_atm, (/lfield/), rc=rc) @@ -410,7 +416,7 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) l2c_fb_rof = ESMF_FieldBundleCreate(name='l2c_fb_rof', rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! now add rof export fields on lnd_mesh to this field bundle + ! now add rof export fields on mesh to this field bundle call fldbundle_add('Flrl_rofsur', l2c_fb_rof, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call fldbundle_add('Flrl_rofgwl', l2c_fb_rof, rc=rc) @@ -488,7 +494,7 @@ subroutine fldbundle_add(stdname, fieldbundle, rc) type(ESMF_Field) :: field !------------------------------------------------------------------------------- rc = ESMF_SUCCESS - field = ESMF_FieldCreate(lnd_mesh, ESMF_TYPEKIND_R8 , meshloc=ESMF_MESHLOC_ELEMENT , name=trim(stdname), rc=rc) + field = ESMF_FieldCreate(mesh, ESMF_TYPEKIND_R8 , meshloc=ESMF_MESHLOC_ELEMENT , name=trim(stdname), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_FieldBundleAdd(fieldbundle, (/field/), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return diff --git a/src/cpl/lilac/lnd_comp_shr.F90 b/src/cpl/lilac/lnd_comp_shr.F90 new file mode 100644 index 0000000000..dd619c7648 --- /dev/null +++ b/src/cpl/lilac/lnd_comp_shr.F90 @@ -0,0 +1,15 @@ +module lnd_comp_shr + + ! Model mesh info is here in order to be leveraged by CDEPS in line calls + + use ESMF + use shr_kind_mod, only : r8 => shr_kind_r8, cl=>shr_kind_cl + + implicit none + public + + type(ESMF_Clock) :: model_clock ! model clock + type(ESMF_Mesh) :: mesh ! model_mesh + character(len=cl) :: model_meshfile ! model mesh file + +end module lnd_comp_shr diff --git a/src/cpl/nuopc/FireDataBaseType.F90 b/src/cpl/share_esmf/FireDataBaseType.F90 similarity index 99% rename from src/cpl/nuopc/FireDataBaseType.F90 rename to src/cpl/share_esmf/FireDataBaseType.F90 index a0e429e10b..f842fc270b 100644 --- a/src/cpl/nuopc/FireDataBaseType.F90 +++ b/src/cpl/share_esmf/FireDataBaseType.F90 @@ -141,7 +141,7 @@ subroutine hdm_init( this, bounds, NLFilename ) ! !USES: use clm_nlUtilsMod , only : find_nlgroup_name use histFileMod , only : hist_addfld1d - use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use lnd_comp_shr , only : mesh, model_clock use dshr_strdata_mod , only : shr_strdata_init_from_inline use shr_mpi_mod , only : shr_mpi_bcast ! @@ -307,7 +307,7 @@ subroutine lnfm_init( this, bounds, NLFilename ) ! ! !USES: use clm_nlUtilsMod , only : find_nlgroup_name - use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use lnd_comp_shr , only : mesh, model_clock use dshr_strdata_mod , only : shr_strdata_init_from_inline use histFileMod , only : hist_addfld1d use shr_mpi_mod , only : shr_mpi_bcast diff --git a/src/cpl/nuopc/SoilMoistureStreamMod.F90 b/src/cpl/share_esmf/SoilMoistureStreamMod.F90 similarity index 100% rename from src/cpl/nuopc/SoilMoistureStreamMod.F90 rename to src/cpl/share_esmf/SoilMoistureStreamMod.F90 diff --git a/src/cpl/nuopc/UrbanTimeVarType.F90 b/src/cpl/share_esmf/UrbanTimeVarType.F90 similarity index 97% rename from src/cpl/nuopc/UrbanTimeVarType.F90 rename to src/cpl/share_esmf/UrbanTimeVarType.F90 index 628ac7a4d3..5a479934f0 100644 --- a/src/cpl/nuopc/UrbanTimeVarType.F90 +++ b/src/cpl/share_esmf/UrbanTimeVarType.F90 @@ -87,7 +87,7 @@ subroutine urbantv_init(this, bounds, NLFilename) use shr_mpi_mod , only : shr_mpi_bcast use landunit_varcon , only : isturb_tbd, isturb_hd, isturb_md use dshr_strdata_mod , only : shr_strdata_init_from_inline - use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use lnd_comp_shr , only : mesh, model_clock ! ! !ARGUMENTS: implicit none @@ -242,7 +242,11 @@ subroutine urbantv_interp(this, bounds) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then call ESMF_Finalize(endflag=ESMF_END_ABORT) end if - dataptr2d(:,n) = dataptr1d(:) + ! Note that the size of dataptr1d includes ocean points so it will be around 3x larger than lsize + ! So an explicit loop is required here + do g = 1,lsize + dataptr2d(g,n) = dataptr1d(g) + end do end do ! Determine this%tbuilding_max for all landunits diff --git a/src/cpl/nuopc/ch4FInundatedStreamType.F90 b/src/cpl/share_esmf/ch4FInundatedStreamType.F90 similarity index 98% rename from src/cpl/nuopc/ch4FInundatedStreamType.F90 rename to src/cpl/share_esmf/ch4FInundatedStreamType.F90 index 7435cbde1e..9a3910a73a 100644 --- a/src/cpl/nuopc/ch4FInundatedStreamType.F90 +++ b/src/cpl/share_esmf/ch4FInundatedStreamType.F90 @@ -65,7 +65,7 @@ subroutine Init(this, bounds, NLFilename) use spmdMod , only : iam use ch4varcon , only : finundation_mtd_h2osfc use ch4varcon , only : finundation_mtd_ZWT_inversion, finundation_mtd_TWS_inversion - use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use lnd_comp_shr , only : mesh, model_clock use dshr_strdata_mod , only : shr_strdata_init_from_inline, shr_strdata_print use dshr_strdata_mod , only : shr_strdata_advance use dshr_methods_mod , only : dshr_fldbun_getfldptr @@ -136,10 +136,6 @@ subroutine Init(this, bounds, NLFilename) call ESMF_Finalize(endflag=ESMF_END_ABORT) end if - if (masterproc) then - call shr_strdata_print(sdat_ch4, trim(stream_name)//' data') - endif - ! Explicitly set current date to a hardcoded constant value. Otherwise ! using the real date can cause roundoff differences that are ! detrected as issues with exact restart. EBK M05/20/2017 diff --git a/src/cpl/nuopc/laiStreamMod.F90 b/src/cpl/share_esmf/laiStreamMod.F90 similarity index 96% rename from src/cpl/nuopc/laiStreamMod.F90 rename to src/cpl/share_esmf/laiStreamMod.F90 index 0005819972..a44f0b7198 100644 --- a/src/cpl/nuopc/laiStreamMod.F90 +++ b/src/cpl/share_esmf/laiStreamMod.F90 @@ -46,7 +46,7 @@ subroutine lai_init(bounds) ! !USES: use shr_mpi_mod , only : shr_mpi_bcast use clm_nlUtilsMod , only : find_nlgroup_name - use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use lnd_comp_shr , only : mesh, model_clock use dshr_strdata_mod , only : shr_strdata_init_from_inline use controlMod , only : NLFilename ! @@ -210,7 +210,7 @@ subroutine lai_interp(bounds, canopystate_inst) type(canopystate_type) , intent(inout) :: canopystate_inst ! ! !LOCAL VARIABLES: - integer :: ivt, p, ip, ig, n + integer :: ivt, p, ip, ig, n, g integer :: lsize integer :: rc real(r8), pointer :: dataptr1d(:) @@ -230,7 +230,11 @@ subroutine lai_interp(bounds, canopystate_inst) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then call ESMF_Finalize(endflag=ESMF_END_ABORT) end if - dataptr2d(:,n) = dataptr1d(:) + ! Note that the size of dataptr1d includes ocean points so it will be around 3x larger than lsize + ! So an explicit loop is required here + do g = 1,lsize + dataptr2d(g,n) = dataptr1d(g) + end do end do do p = bounds%begp, bounds%endp diff --git a/src/cpl/nuopc/ndepStreamMod.F90 b/src/cpl/share_esmf/ndepStreamMod.F90 similarity index 99% rename from src/cpl/nuopc/ndepStreamMod.F90 rename to src/cpl/share_esmf/ndepStreamMod.F90 index 4432b0eeea..7aab7c1d5f 100644 --- a/src/cpl/nuopc/ndepStreamMod.F90 +++ b/src/cpl/share_esmf/ndepStreamMod.F90 @@ -47,7 +47,7 @@ subroutine ndep_init(bounds, NLFilename) use shr_string_mod , only : shr_string_listGetName, shr_string_listGetNum use shr_log_mod , only : errMsg => shr_log_errMsg use shr_mpi_mod , only : shr_mpi_bcast - use lnd_comp_shr , only : mesh, model_meshfile, model_clock + use lnd_comp_shr , only : mesh, model_clock use dshr_strdata_mod , only : shr_strdata_init_from_inline ! ! arguments From 16ac9082b86c7dc92804b312af83648333455960 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Thu, 17 Jun 2021 09:50:57 -0600 Subject: [PATCH 06/63] bug fixes caught in testing --- bld/CLMBuildNamelist.pm | 14 +- .../use_cases/1850_noanthro_control.xml | 1 + src/cpl/mct/lnd_set_decomp_and_domain.F90 | 58 ++++++- src/cpl/share_esmf/FireDataBaseType.F90 | 2 +- src/cpl/share_esmf/UrbanTimeVarType.F90 | 2 +- .../share_esmf/ch4FInundatedStreamType.F90 | 3 +- .../share_esmf/lnd_set_decomp_and_domain.F90 | 63 +++++++- src/cpl/share_esmf/ndepStreamMod.F90 | 2 +- src/main/decompInitMod.F90 | 143 +----------------- src/utils/clmfates_interfaceMod.F90 | 2 +- 10 files changed, 131 insertions(+), 159 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 5ac7884e73..dc1c6aebed 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3212,9 +3212,6 @@ sub setup_logic_nitrogen_deposition { # # Nitrogen deposition for bgc=CN # - print "DEBUG: input driver is $opts->{'driver'}\n"; - print "DEBUG: input mask is $opts->{'mask'}\n"; - if ( $nl_flags->{'bgc_mode'} =~/cn|bgc/ ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'ndepmapalgo', 'phys'=>$nl_flags->{'phys'}, 'use_cn'=>$nl_flags->{'use_cn'}, 'hgrid'=>$nl_flags->{'res'}, @@ -3378,6 +3375,17 @@ sub setup_logic_popd_streams { 'cnfireson'=>$nl_flags->{'cnfireson'}, 'hgrid'=>"0.5x0.5", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); if ($opts->{'driver'} eq "nuopc" ) { add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_popdens', 'hgrid'=>"0.5x0.5"); + my $inputdata_rootdir = $nl_flags->{'inputdata_rootdir'}; + my $default_value = $nl->get_value('stream_meshfile_popdens'); + my $none_filename = $inputdata_rootdir . '/none'; + my $none_filename = "e_string($none_filename); + if ($default_value eq $none_filename) { + my $var = 'stream_meshfile_popdens'; + my $group = $definition->get_group_name($var); + my $val = "none"; + $val = "e_string( $val ); + $nl->set_variable_value($group, $var, $val); + } } } else { # If bgc is NOT CN/CNDV or fire_method==nofire then make sure none of the popdens settings are set diff --git a/bld/namelist_files/use_cases/1850_noanthro_control.xml b/bld/namelist_files/use_cases/1850_noanthro_control.xml index c998d97608..59d06b83b5 100644 --- a/bld/namelist_files/use_cases/1850_noanthro_control.xml +++ b/bld/namelist_files/use_cases/1850_noanthro_control.xml @@ -34,6 +34,7 @@ lnd/clm2/firedata/clmforc.no_anthro_zero_hdm_1x1_simyr1925_181113.nc +none nn 1850 diff --git a/src/cpl/mct/lnd_set_decomp_and_domain.F90 b/src/cpl/mct/lnd_set_decomp_and_domain.F90 index 0e1dbb9477..ca661a9144 100644 --- a/src/cpl/mct/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/mct/lnd_set_decomp_and_domain.F90 @@ -212,7 +212,7 @@ subroutine surfrd_get_grid(begg, endg, ldomain, filename, glcfilename) character(len=256) :: locfn ! local file name integer :: n ! indices character(len=32) :: subname = 'surfrd_get_grid' ! subroutine name -!----------------------------------------------------------------------- + !----------------------------------------------------------------------- if (masterproc) then if (filename == ' ') then @@ -291,4 +291,60 @@ subroutine surfrd_get_grid(begg, endg, ldomain, filename, glcfilename) end subroutine surfrd_get_grid + !------------------------------------------------------------------------------ + subroutine decompInit_lnd3D(lni,lnj,lnk) + ! + ! !DESCRIPTION: + ! + ! Create a 3D decomposition gsmap for the global 2D grid with soil levels + ! as the 3rd dimesnion. + ! + ! !USES: + ! + ! !ARGUMENTS: + integer , intent(in) :: lni,lnj,lnk ! domain global size + ! + ! !LOCAL VARIABLES: + integer :: m,n,k ! indices + integer :: begg,endg,lsize,gsize ! used for gsmap init + integer :: begg3d,endg3d + integer, pointer :: gindex(:) ! global index for gsmap init + !------------------------------------------------------------------------------ + + ! Set gsMap_lnd_gdc2glo (the global index here includes mask=0 or ocean points) + call get_proc_bounds(begg, endg) + begg3d = (begg-1)*lnk + 1 + endg3d = endg*lnk + lsize = (endg3d - begg3d + 1 ) + allocate(gindex(begg3d:endg3d)) + do k = 1, lnk + do n = begg,endg + m = (begg-1)*lnk + (k-1)*(endg-begg+1) + (n-begg+1) + gindex(m) = ldecomp%gdc2glo(n) + (k-1)*(lni*lnj) + enddo + enddo + gsize = lni * lnj * lnk + call mct_gsMap_init(gsMap_lnd2Dsoi_gdc2glo, gindex, mpicom, comp_id, lsize, gsize) + + ! Diagnostic output + + if (masterproc) then + write(iulog,*)' 3D GSMap' + write(iulog,*)' longitude points = ',lni + write(iulog,*)' latitude points = ',lnj + write(iulog,*)' soil levels = ',lnk + write(iulog,*)' gsize = ',gsize + write(iulog,*)' lsize = ',lsize + write(iulog,*)' bounds(gindex) = ',size(gindex) + write(iulog,*)' gsMap Characteristics' + write(iulog,*) ' lnd gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_lnd2Dsoi_gdc2glo) + write(iulog,*) + end if + + deallocate(gindex) + + call shr_sys_flush(iulog) + + end subroutine decompInit_lnd3D + end module lnd_set_decomp_and_domain diff --git a/src/cpl/share_esmf/FireDataBaseType.F90 b/src/cpl/share_esmf/FireDataBaseType.F90 index f842fc270b..18f5f39acd 100644 --- a/src/cpl/share_esmf/FireDataBaseType.F90 +++ b/src/cpl/share_esmf/FireDataBaseType.F90 @@ -235,7 +235,7 @@ subroutine hdm_init( this, bounds, NLFilename ) stream_yearAlign = model_year_align_popdens, & stream_offset = 0, & stream_taxmode = 'extend', & - stream_dtlimit = 1.5_r8, & + stream_dtlimit = 1.0e30_r8, & stream_tintalgo = popdens_tintalgo, & stream_name = 'Population density data', & rc = rc) diff --git a/src/cpl/share_esmf/UrbanTimeVarType.F90 b/src/cpl/share_esmf/UrbanTimeVarType.F90 index 5a479934f0..68ba3655cd 100644 --- a/src/cpl/share_esmf/UrbanTimeVarType.F90 +++ b/src/cpl/share_esmf/UrbanTimeVarType.F90 @@ -183,7 +183,7 @@ subroutine urbantv_init(this, bounds, NLFilename) stream_yearAlign = model_year_align_urbantv, & stream_offset = 0, & stream_taxmode = 'extend', & - stream_dtlimit = 1.5_r8, & + stream_dtlimit = 1.0e30_r8, & stream_tintalgo = urbantv_tintalgo, & stream_name = 'Urban time varying data', & rc = rc) diff --git a/src/cpl/share_esmf/ch4FInundatedStreamType.F90 b/src/cpl/share_esmf/ch4FInundatedStreamType.F90 index 9a3910a73a..0d78bd6469 100644 --- a/src/cpl/share_esmf/ch4FInundatedStreamType.F90 +++ b/src/cpl/share_esmf/ch4FInundatedStreamType.F90 @@ -129,8 +129,9 @@ subroutine Init(this, bounds, NLFilename) stream_yearAlign = 1, & stream_offset = 0, & stream_taxmode = 'extend', & - stream_dtlimit = 1.5_r8, & + stream_dtlimit = 1.0e30_r8, & stream_tintalgo = 'linear', & + stream_name = 'ch4 finundation ', & rc = rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) then call ESMF_Finalize(endflag=ESMF_END_ABORT) diff --git a/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 b/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 index 55ab210e18..40f43e7f4d 100644 --- a/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 @@ -35,7 +35,7 @@ module lnd_set_decomp_and_domain subroutine lnd_set_decomp_and_domain_from_readmesh(driver, vm, meshfile_lnd, meshfile_mask, mesh_ctsm, & ni, nj, rc) - use decompInitMod , only : decompInit_ocn, decompInit_lnd, decompInit_lnd3D + use decompInitMod , only : decompInit_lnd use domainMod , only : ldomain, domain_init use decompMod , only : ldecomp, bounds_type, get_proc_bounds use clm_varpar , only : nlevsoi @@ -116,9 +116,6 @@ subroutine lnd_set_decomp_and_domain_from_readmesh(driver, vm, meshfile_lnd, mes ! Determine lnd decomposition that will be used by ctsm from lndmask_glob call decompInit_lnd(lni=ni, lnj=nj, amask=lndmask_glob) - if (use_soil_moisture_streams) then - call decompInit_lnd3D(lni=ni, lnj=nj, lnk=nlevsoi) - end if ! Determine ocn decomposition that will be used to create the full mesh ! note that the memory for gindex_ocn will be allocated in the following call @@ -227,7 +224,7 @@ end subroutine lnd_set_mesh_for_single_column !=============================================================================== subroutine lnd_set_decomp_and_domain_for_single_column(scol_lon, scol_lat, scol_mask, scol_frac) - use decompInitMod , only : decompInit_lnd, decompInit_lnd3D + use decompInitMod , only : decompInit_lnd use decompMod , only : bounds_type, get_proc_bounds use domainMod , only : ldomain, domain_init use clm_varctl , only : use_soil_moisture_streams @@ -246,9 +243,6 @@ subroutine lnd_set_decomp_and_domain_for_single_column(scol_lon, scol_lat, scol_ ! Determine ldecomp and ldomain call decompInit_lnd(lni=1, lnj=1, amask=(/1/)) - if (use_soil_moisture_streams) then - call decompInit_lnd3D(lni=1, lnj=1, lnk=nlevsoi) - end if ! Initialize processor bounds call get_proc_bounds(bounds) @@ -807,5 +801,58 @@ subroutine lnd_set_read_write_landmask(write_file, read_file, lndmask_glob, lndf end subroutine lnd_set_read_write_landmask + !=============================================================================== + subroutine decompInit_ocn(ni, nj, amask, gindex_ocn) + + ! !DESCRIPTION: + ! calculate a decomposition of only ocn points (needed for the nuopc interface) + + ! !USES: + use spmdMod , only : npes, iam + + ! !ARGUMENTS: + integer , intent(in) :: amask(:) + integer , intent(in) :: ni,nj ! domain global size + integer , pointer, intent(out) :: gindex_ocn(:) ! this variable is allocated here, and is assumed to start unallocated + + ! !LOCAL VARIABLES: + integer :: n,i,j,nocn + integer :: nlnd_global + integer :: nocn_global + integer :: nocn_local + integer :: my_ocn_start, my_ocn_end + !------------------------------------------------------------------------------ + + ! count total land and ocean gridcells + nlnd_global = 0 + nocn_global = 0 + do n = 1,ni*nj + if (amask(n) == 1) then + nlnd_global = nlnd_global + 1 + else + nocn_global = nocn_global + 1 + endif + enddo + + ! create the a global index array for ocean points + nocn_local = nocn_global / npes + + my_ocn_start = nocn_local*iam + min(iam, mod(nocn_global, npes)) + 1 + if (iam < mod(nocn_global, npes)) then + nocn_local = nocn_local + 1 + end if + my_ocn_end = my_ocn_start + nocn_local - 1 + + allocate(gindex_ocn(nocn_local)) + nocn = 0 + do n = 1,ni*nj + if (amask(n) == 0) then + nocn = nocn + 1 + if (nocn >= my_ocn_start .and. nocn <= my_ocn_end) then + gindex_ocn(nocn - my_ocn_start + 1) = n + end if + end if + end do + end subroutine decompInit_ocn end module lnd_set_decomp_and_domain diff --git a/src/cpl/share_esmf/ndepStreamMod.F90 b/src/cpl/share_esmf/ndepStreamMod.F90 index 7aab7c1d5f..45ea586ba1 100644 --- a/src/cpl/share_esmf/ndepStreamMod.F90 +++ b/src/cpl/share_esmf/ndepStreamMod.F90 @@ -60,7 +60,7 @@ subroutine ndep_init(bounds, NLFilename) integer :: stream_year_first_ndep ! first year in stream to use integer :: stream_year_last_ndep ! last year in stream to use integer :: model_year_align_ndep ! align stream_year_firstndep with - real(r8) :: ndep_dtlimit = 1.5_r8 + real(r8) :: ndep_dtlimit = 1.0e30_r8 character(len=CL) :: ndepmapalgo = 'bilinear' character(len=CL) :: ndep_tintalgo = 'linear' character(len=CS) :: ndep_taxmode = 'extend' diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index 880d362cad..a6dbdda578 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -19,7 +19,7 @@ module decompInitMod use PatchType , only : patch use glcBehaviorMod , only : glc_behavior_type use decompMod - use mct_mod , only : mct_gsMap_init, mct_gsMap_ngseg, mct_gsMap_nlseg, mct_gsmap_gsize + use mct_mod , only : mct_gsMap_init, mct_gsmap_gsize use FatesInterfaceTypesMod, only : fates_maxElementsPerSite ! ! !PUBLIC TYPES: @@ -27,8 +27,6 @@ module decompInitMod ! ! !PUBLIC MEMBER FUNCTIONS: public decompInit_lnd ! initializes lnd grid decomposition into clumps and processors - public decompInit_lnd3D ! initializes lnd grid 3D decomposition - public decompInit_ocn ! initializes grid ocean points decomposition public decompInit_clumps ! initializes atm grid decomposition into clumps public decompInit_glcp ! initializes g,l,c,p decomp info ! @@ -306,8 +304,6 @@ subroutine decompInit_lnd(lni,lnj,amask) write(iulog,*)' total number of land gridcells = ',numg write(iulog,*)' Decomposition Characteristics' write(iulog,*)' clumps per process = ',clump_pproc - write(iulog,*)' gsMap Characteristics' - write(iulog,*) ' lnd gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_lnd_gdc2glo) write(iulog,*) end if @@ -315,118 +311,6 @@ subroutine decompInit_lnd(lni,lnj,amask) end subroutine decompInit_lnd - !------------------------------------------------------------------------------ - subroutine decompInit_lnd3D(lni,lnj,lnk) - ! - ! !DESCRIPTION: - ! - ! Create a 3D decomposition gsmap for the global 2D grid with soil levels - ! as the 3rd dimesnion. - ! - ! !USES: - ! - ! !ARGUMENTS: - implicit none - integer , intent(in) :: lni,lnj,lnk ! domain global size - ! - ! !LOCAL VARIABLES: - integer :: m,n,k ! indices - integer :: begg,endg,lsize,gsize ! used for gsmap init - integer :: begg3d,endg3d - integer, pointer :: gindex(:) ! global index for gsmap init - - - ! Set gsMap_lnd_gdc2glo (the global index here includes mask=0 or ocean points) - call get_proc_bounds(begg, endg) - begg3d = (begg-1)*lnk + 1 - endg3d = endg*lnk - lsize = (endg3d - begg3d + 1 ) - allocate(gindex(begg3d:endg3d)) - do k = 1, lnk - do n = begg,endg - m = (begg-1)*lnk + (k-1)*(endg-begg+1) + (n-begg+1) - gindex(m) = ldecomp%gdc2glo(n) + (k-1)*(lni*lnj) - enddo - enddo - gsize = lni * lnj * lnk - call mct_gsMap_init(gsMap_lnd2Dsoi_gdc2glo, gindex, mpicom, comp_id, lsize, gsize) - - ! Diagnostic output - - if (masterproc) then - write(iulog,*)' 3D GSMap' - write(iulog,*)' longitude points = ',lni - write(iulog,*)' latitude points = ',lnj - write(iulog,*)' soil levels = ',lnk - write(iulog,*)' gsize = ',gsize - write(iulog,*)' lsize = ',lsize - write(iulog,*)' bounds(gindex) = ',size(gindex) - write(iulog,*)' gsMap Characteristics' - write(iulog,*) ' lnd gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_lnd2Dsoi_gdc2glo) - write(iulog,*) - end if - - deallocate(gindex) - - call shr_sys_flush(iulog) - - end subroutine decompInit_lnd3D - - !------------------------------------------------------------------------------ - subroutine decompInit_ocn(ni, nj, amask, gindex_ocn) - - ! !DESCRIPTION: - ! calculate a decomposition of only ocn points (needed for the nuopc interface) - - ! !USES: - use spmdMod , only : npes, iam - - ! !ARGUMENTS: - integer , intent(in) :: amask(:) - integer , intent(in) :: ni,nj ! domain global size - integer , pointer, intent(out) :: gindex_ocn(:) ! this variable is allocated here, and is assumed to start unallocated - - ! !LOCAL VARIABLES: - integer :: n,i,j,nocn - integer :: nlnd_global - integer :: nocn_global - integer :: nocn_local - integer :: my_ocn_start, my_ocn_end - !------------------------------------------------------------------------------ - - ! count total land and ocean gridcells - nlnd_global = 0 - nocn_global = 0 - do n = 1,ni*nj - if (amask(n) == 1) then - nlnd_global = nlnd_global + 1 - else - nocn_global = nocn_global + 1 - endif - enddo - - ! create the a global index array for ocean points - nocn_local = nocn_global / npes - - my_ocn_start = nocn_local*iam + min(iam, mod(nocn_global, npes)) + 1 - if (iam < mod(nocn_global, npes)) then - nocn_local = nocn_local + 1 - end if - my_ocn_end = my_ocn_start + nocn_local - 1 - - allocate(gindex_ocn(nocn_local)) - nocn = 0 - do n = 1,ni*nj - if (amask(n) == 0) then - nocn = nocn + 1 - if (nocn >= my_ocn_start .and. nocn <= my_ocn_end) then - gindex_ocn(nocn - my_ocn_start + 1) = n - end if - end if - end do - - end subroutine decompInit_ocn - !------------------------------------------------------------------------------ subroutine decompInit_clumps(lni,lnj,glc_behavior) ! @@ -880,13 +764,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) write(iulog,*)' total number of cohorts = ',numCohort write(iulog,*)' Decomposition Characteristics' write(iulog,*)' clumps per process = ',clump_pproc - write(iulog,*)' gsMap Characteristics' - write(iulog,*) ' lnd gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_lnd_gdc2glo) - write(iulog,*) ' gce gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_gce_gdc2glo) - write(iulog,*) ' lun gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_lun_gdc2glo) - write(iulog,*) ' col gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_col_gdc2glo) - write(iulog,*) ' patch gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_patch_gdc2glo) - write(iulog,*) ' coh gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_cohort_gdc2glo) write(iulog,*) end if @@ -937,24 +814,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ' beg coh = ',procinfo%begCohort, & ' end coh = ',procinfo%endCohort, & ' total coh per proc = ',procinfo%nCohorts - write(iulog,*)'proc= ',pid,& - ' lnd ngseg = ',mct_gsMap_ngseg(gsMap_lnd_gdc2glo), & - ' lnd nlseg = ',mct_gsMap_nlseg(gsMap_lnd_gdc2glo,iam) - write(iulog,*)'proc= ',pid,& - ' gce ngseg = ',mct_gsMap_ngseg(gsMap_gce_gdc2glo), & - ' gce nlseg = ',mct_gsMap_nlseg(gsMap_gce_gdc2glo,iam) - write(iulog,*)'proc= ',pid,& - ' lun ngseg = ',mct_gsMap_ngseg(gsMap_lun_gdc2glo), & - ' lun nlseg = ',mct_gsMap_nlseg(gsMap_lun_gdc2glo,iam) - write(iulog,*)'proc= ',pid,& - ' col ngseg = ',mct_gsMap_ngseg(gsMap_col_gdc2glo), & - ' col nlseg = ',mct_gsMap_nlseg(gsMap_col_gdc2glo,iam) - write(iulog,*)'proc= ',pid,& - ' patch ngseg = ',mct_gsMap_ngseg(gsMap_patch_gdc2glo), & - ' patch nlseg = ',mct_gsMap_nlseg(gsMap_patch_gdc2glo,iam) - write(iulog,*)'proc= ',pid,& - ' coh ngseg = ',mct_gsMap_ngseg(gsMap_cohort_gdc2glo), & - ' coh nlseg = ',mct_gsMap_nlseg(gsMap_cohort_gdc2glo,iam) write(iulog,*)'proc= ',pid,' nclumps = ',procinfo%nclumps clmin = 1 diff --git a/src/utils/clmfates_interfaceMod.F90 b/src/utils/clmfates_interfaceMod.F90 index 223cdc6970..b43d9a33b3 100644 --- a/src/utils/clmfates_interfaceMod.F90 +++ b/src/utils/clmfates_interfaceMod.F90 @@ -2212,7 +2212,7 @@ subroutine wrap_update_hifrq_hist(this, bounds_clump, & end associate - call t_stopf('fates_wrap_hifrq_hist') + call t_stopf('fates_update_hifrq_hist') end subroutine wrap_update_hifrq_hist From cf4aa65aaae77493d08bb49fb5676f717b68ae1d Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Thu, 17 Jun 2021 20:50:15 -0600 Subject: [PATCH 07/63] more bug fixes for tests --- .../testmods_dirs/clm/cplhist/shell_commands | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cime_config/testdefs/testmods_dirs/clm/cplhist/shell_commands b/cime_config/testdefs/testmods_dirs/clm/cplhist/shell_commands index f33e602348..ac079d5334 100755 --- a/cime_config/testdefs/testmods_dirs/clm/cplhist/shell_commands +++ b/cime_config/testdefs/testmods_dirs/clm/cplhist/shell_commands @@ -1,5 +1,12 @@ +driver=`./xmlquery --value COMP_INTERFACE` +if [ "$driver" = "nuopc" ]; then + ./xmlchange DATM_YR_ALIGN=1 + ./xmlchange DATM_YR_END=84 + ./xmlchange DATM_YR_START=82 +else + ./xmlchange DATM_CPLHIST_YR_ALIGN=1 + ./xmlchange DATM_CPLHIST_YR_END=84 + ./xmlchange DATM_CPLHIST_YR_START=82 +fi ./xmlchange DATM_CPLHIST_CASE=b.e20.B1850.f09_g17.pi_control.all.221.cplhist ./xmlchange DATM_CPLHIST_DIR=/glade/p/cesm/bgcwg_dev/forcing/b.e20.B1850.f09_g17.pi_control.all.221.cplhist/cpl/hist.mon -./xmlchange DATM_CPLHIST_YR_ALIGN=1 -./xmlchange DATM_CPLHIST_YR_END=84 -./xmlchange DATM_CPLHIST_YR_START=82 From 63b512a9de19261b70e417deb6a5acd4f2275bfe Mon Sep 17 00:00:00 2001 From: mvertens Date: Sun, 20 Jun 2021 15:06:45 -0600 Subject: [PATCH 08/63] first steps in removing mct other than in the cap --- src/cpl/mct/FireDataBaseType.F90 | 98 ++-- src/cpl/mct/SoilMoistureStreamMod.F90 | 46 +- src/cpl/mct/UrbanTimeVarType.F90 | 52 +- src/cpl/mct/ch4FInundatedStreamType.F90 | 51 +- src/cpl/mct/laiStreamMod.F90 | 4 +- src/cpl/mct/lnd_set_decomp_and_domain.F90 | 48 +- src/cpl/mct/ndepStreamMod.F90 | 27 +- src/main/GetGlobalValuesMod.F90 | 45 +- src/main/GridcellType.F90 | 3 - src/main/accumulMod.F90 | 15 +- src/main/clm_initializeMod.F90 | 13 +- src/main/decompInitMod.F90 | 321 ++++++------ src/main/decompMod.F90 | 114 +--- src/main/initGridCellsMod.F90 | 1 - src/main/ncdio_pio.F90.in | 41 +- src/utils/spmdGathScatMod.F90 | 600 ++++------------------ 16 files changed, 486 insertions(+), 993 deletions(-) diff --git a/src/cpl/mct/FireDataBaseType.F90 b/src/cpl/mct/FireDataBaseType.F90 index ac7d28171f..e4bbe48d10 100644 --- a/src/cpl/mct/FireDataBaseType.F90 +++ b/src/cpl/mct/FireDataBaseType.F90 @@ -14,7 +14,7 @@ module FireDataBaseType use clm_varctl , only : iulog, inst_name use spmdMod , only : masterproc, mpicom, comp_id use fileutils , only : getavu, relavu - use decompMod , only : gsmap_lnd_gdc2glo + use spmdGathScatMod , only : gsmap_global use domainMod , only : ldomain use abortutils , only : endrun use decompMod , only : bounds_type @@ -222,31 +222,31 @@ subroutine hdm_init( this, bounds, NLFilename ) call clm_domain_mct (bounds, dom_clm) - call shr_strdata_create(this%sdat_hdm,name="clmhdm", & - pio_subsystem=pio_subsystem, & - pio_iotype=shr_pio_getiotype(inst_name), & - mpicom=mpicom, compid=comp_id, & - gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & - nxg=ldomain%ni, nyg=ldomain%nj, & - yearFirst=stream_year_first_popdens, & - yearLast=stream_year_last_popdens, & - yearAlign=model_year_align_popdens, & - offset=0, & - domFilePath='', & - domFileName=trim(stream_fldFileName_popdens), & - domTvarName='time', & - domXvarName='lon' , & - domYvarName='lat' , & - domAreaName='area', & - domMaskName='mask', & - filePath='', & + call shr_strdata_create(this%sdat_hdm,name="clmhdm", & + pio_subsystem=pio_subsystem, & + pio_iotype=shr_pio_getiotype(inst_name), & + mpicom=mpicom, compid=comp_id, & + gsmap=gsmap_global, ggrid=dom_clm, & + nxg=ldomain%ni, nyg=ldomain%nj, & + yearFirst=stream_year_first_popdens, & + yearLast=stream_year_last_popdens, & + yearAlign=model_year_align_popdens, & + offset=0, & + domFilePath='', & + domFileName=trim(stream_fldFileName_popdens), & + domTvarName='time', & + domXvarName='lon' , & + domYvarName='lat' , & + domAreaName='area', & + domMaskName='mask', & + filePath='', & filename=(/trim(stream_fldFileName_popdens)/) , & - fldListFile='hdm', & - fldListModel='hdm', & - fillalgo='none', & - mapalgo=popdensmapalgo, & - calendar=get_calendar(), & - tintalgo=popdens_tintalgo, & + fldListFile='hdm', & + fldListModel='hdm', & + fillalgo='none', & + mapalgo=popdensmapalgo, & + calendar=get_calendar(), & + tintalgo=popdens_tintalgo, & taxmode='extend' ) if (masterproc) then @@ -378,31 +378,31 @@ subroutine lnfm_init( this, bounds, NLFilename ) call clm_domain_mct (bounds, dom_clm) - call shr_strdata_create(this%sdat_lnfm,name="clmlnfm", & - pio_subsystem=pio_subsystem, & + call shr_strdata_create(this%sdat_lnfm,name="clmlnfm", & + pio_subsystem=pio_subsystem, & pio_iotype=shr_pio_getiotype(inst_name), & - mpicom=mpicom, compid=comp_id, & - gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & - nxg=ldomain%ni, nyg=ldomain%nj, & - yearFirst=stream_year_first_lightng, & - yearLast=stream_year_last_lightng, & - yearAlign=model_year_align_lightng, & - offset=0, & - domFilePath='', & - domFileName=trim(stream_fldFileName_lightng), & - domTvarName='time', & - domXvarName='lon' , & - domYvarName='lat' , & - domAreaName='area', & - domMaskName='mask', & - filePath='', & - filename=(/trim(stream_fldFileName_lightng)/),& - fldListFile='lnfm', & - fldListModel='lnfm', & - fillalgo='none', & - tintalgo=lightng_tintalgo, & - mapalgo=lightngmapalgo, & - calendar=get_calendar(), & + mpicom=mpicom, compid=comp_id, & + gsmap=gsmap_global, ggrid=dom_clm, & + nxg=ldomain%ni, nyg=ldomain%nj, & + yearFirst=stream_year_first_lightng, & + yearLast=stream_year_last_lightng, & + yearAlign=model_year_align_lightng, & + offset=0, & + domFilePath='', & + domFileName=trim(stream_fldFileName_lightng), & + domTvarName='time', & + domXvarName='lon' , & + domYvarName='lat' , & + domAreaName='area', & + domMaskName='mask', & + filePath='', & + filename=(/trim(stream_fldFileName_lightng)/), & + fldListFile='lnfm', & + fldListModel='lnfm', & + fillalgo='none', & + tintalgo=lightng_tintalgo, & + mapalgo=lightngmapalgo, & + calendar=get_calendar(), & taxmode='cycle' ) if (masterproc) then diff --git a/src/cpl/mct/SoilMoistureStreamMod.F90 b/src/cpl/mct/SoilMoistureStreamMod.F90 index eab6d26c02..fcba37de4f 100644 --- a/src/cpl/mct/SoilMoistureStreamMod.F90 +++ b/src/cpl/mct/SoilMoistureStreamMod.F90 @@ -16,26 +16,25 @@ module SoilMoistureStreamMod ! Read in soil moisture from data stream ! ! !USES: - use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create - use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance - use shr_kind_mod , only : r8 => shr_kind_r8 - use shr_kind_mod , only : CL => shr_kind_CL, CXX => shr_kind_CXX - use shr_log_mod , only : errMsg => shr_log_errMsg - use decompMod , only : bounds_type - use abortutils , only : endrun - use clm_varctl , only : iulog, use_soil_moisture_streams, inst_name - use clm_varcon , only : grlnd - use controlMod , only : NLFilename - use decompMod , only : gsMap_lnd2Dsoi_gdc2glo - use domainMod , only : ldomain - use fileutils , only : getavu, relavu - use LandunitType , only : lun - use ColumnType , only : col - use SoilStateType , only : soilstate_type - use WaterStateBulkType, only : waterstatebulk_type - use perf_mod , only : t_startf, t_stopf - use spmdMod , only : masterproc - use spmdMod , only : mpicom, comp_id + use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create + use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance + use shr_kind_mod , only : r8 => shr_kind_r8 + use shr_kind_mod , only : CL => shr_kind_CL, CXX => shr_kind_CXX + use shr_log_mod , only : errMsg => shr_log_errMsg + use decompMod , only : bounds_type + use abortutils , only : endrun + use clm_varctl , only : iulog, use_soil_moisture_streams, inst_name + use clm_varcon , only : grlnd + use controlMod , only : NLFilename + use domainMod , only : ldomain + use LandunitType , only : lun + use ColumnType , only : col + use SoilStateType , only : soilstate_type + use WaterStateBulkType , only : waterstatebulk_type + use perf_mod , only : t_startf, t_stopf + use spmdMod , only : masterproc + use spmdMod , only : mpicom, comp_id + use lnd_set_decomp_and_domain , only : gsMap_lnd2Dsoi_gdc2glo use mct_mod use ncdio_pio ! @@ -127,8 +126,7 @@ subroutine PrescribedSoilMoistureInit(bounds) ! Read soilm_streams namelist if (masterproc) then - nu_nml = getavu() - open( nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) call find_nlgroup_name(nu_nml, 'soil_moisture_streams', status=nml_error) if (nml_error == 0) then read(nu_nml, nml=soil_moisture_streams,iostat=nml_error) @@ -139,7 +137,6 @@ subroutine PrescribedSoilMoistureInit(bounds) call endrun(subname // ':: ERROR finding soilm_streams namelist') end if close(nu_nml) - call relavu( nu_nml ) endif call shr_mpi_bcast(stream_year_first_soilm, mpicom) @@ -170,11 +167,8 @@ subroutine PrescribedSoilMoistureInit(bounds) call clm_domain_mct (bounds, dom_clm, nlevels=nlevsoi) - ! ! create the field list for these fields...use in shr_strdata_create - ! fldList = trim(soilmString) - if (masterproc) write(iulog,*) 'fieldlist: ', trim(fldList) call shr_strdata_create(sdat_soilm,name="soil_moisture", & diff --git a/src/cpl/mct/UrbanTimeVarType.F90 b/src/cpl/mct/UrbanTimeVarType.F90 index 7a907bb9b9..d6606afce3 100644 --- a/src/cpl/mct/UrbanTimeVarType.F90 +++ b/src/cpl/mct/UrbanTimeVarType.F90 @@ -100,7 +100,7 @@ subroutine urbantv_init(this, bounds, NLFilename) use shr_mpi_mod , only : shr_mpi_bcast use shr_string_mod , only : shr_string_listAppend use shr_strdata_mod , only : shr_strdata_create, shr_strdata_print - use decompMod , only : gsmap_lnd_gdc2glo + use spmdGathScatMod , only : gsmap_global use domainMod , only : ldomain use shr_infnan_mod , only : nan => shr_infnan_nan, assignment(=) use landunit_varcon , only : isturb_TBD, isturb_HD, isturb_MD @@ -190,31 +190,31 @@ subroutine urbantv_init(this, bounds, NLFilename) call shr_string_listAppend( fldList, stream_var_name(ifield) ) end do - call shr_strdata_create(this%sdat_urbantv,name="clmurbantv", & - pio_subsystem=pio_subsystem, & - pio_iotype=shr_pio_getiotype(inst_name), & - mpicom=mpicom, compid=comp_id, & - gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & - nxg=ldomain%ni, nyg=ldomain%nj, & - yearFirst=stream_year_first_urbantv, & - yearLast=stream_year_last_urbantv, & - yearAlign=model_year_align_urbantv, & - offset=0, & - domFilePath='', & - domFileName=trim(stream_fldFileName_urbantv), & - domTvarName='time', & - domXvarName='lon' , & - domYvarName='lat' , & - domAreaName='area', & - domMaskName='LANDMASK', & - filePath='', & - filename=(/trim(stream_fldFileName_urbantv)/) , & - fldListFile=fldList, & - fldListModel=fldList, & - fillalgo='none', & - mapalgo=urbantvmapalgo, & - calendar=get_calendar(), & - tintalgo=urbantv_tintalgo, & + call shr_strdata_create(this%sdat_urbantv,name="clmurbantv", & + pio_subsystem=pio_subsystem, & + pio_iotype=shr_pio_getiotype(inst_name), & + mpicom=mpicom, compid=comp_id, & + gsmap=gsmap_global, ggrid=dom_clm, & + nxg=ldomain%ni, nyg=ldomain%nj, & + yearFirst=stream_year_first_urbantv, & + yearLast=stream_year_last_urbantv, & + yearAlign=model_year_align_urbantv, & + offset=0, & + domFilePath='', & + domFileName=trim(stream_fldFileName_urbantv), & + domTvarName='time', & + domXvarName='lon' , & + domYvarName='lat' , & + domAreaName='area', & + domMaskName='LANDMASK', & + filePath='', & + filename=(/trim(stream_fldFileName_urbantv)/) , & + fldListFile=fldList, & + fldListModel=fldList, & + fillalgo='none', & + mapalgo=urbantvmapalgo, & + calendar=get_calendar(), & + tintalgo=urbantv_tintalgo, & taxmode='extend' ) if (masterproc) then diff --git a/src/cpl/mct/ch4FInundatedStreamType.F90 b/src/cpl/mct/ch4FInundatedStreamType.F90 index dcdc76fa08..1fa385865b 100644 --- a/src/cpl/mct/ch4FInundatedStreamType.F90 +++ b/src/cpl/mct/ch4FInundatedStreamType.F90 @@ -70,7 +70,8 @@ subroutine Init(this, bounds, NLFilename) use shr_mpi_mod , only : shr_mpi_bcast use ndepStreamMod , only : clm_domain_mct use domainMod , only : ldomain - use decompMod , only : bounds_type, gsmap_lnd_gdc2glo + use decompMod , only : bounds_type + use spmdGathScatMod , only : gsmap_global use mct_mod , only : mct_ggrid, mct_avect_indexra use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance @@ -108,30 +109,30 @@ subroutine Init(this, bounds, NLFilename) if ( this%useStreams() )then call clm_domain_mct (bounds, dom_clm) - call shr_strdata_create(sdat,name=stream_name,& - pio_subsystem=pio_subsystem, & - pio_iotype=shr_pio_getiotype(inst_name), & - mpicom=mpicom, compid=comp_id, & - gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & - nxg=ldomain%ni, nyg=ldomain%nj, & - yearFirst=1996, & - yearLast=1996, & - yearAlign=1, & - offset=0, & - domFilePath='', & - domFileName=trim(control%stream_fldFileName_ch4finundated), & - domTvarName='time', & - domXvarName='LONGXY' , & - domYvarName='LATIXY' , & - domAreaName='AREA', & - domMaskName='LANDMASK', & - filePath='', & - filename=(/trim(control%stream_fldFileName_ch4finundated)/),& - fldListFile=control%fldList, & - fldListModel=control%fldList, & - fillalgo='none', & - mapalgo=control%ch4finundatedmapalgo, & - calendar=get_calendar(), & + call shr_strdata_create(sdat,name=stream_name, & + pio_subsystem=pio_subsystem, & + pio_iotype=shr_pio_getiotype(inst_name), & + mpicom=mpicom, compid=comp_id, & + gsmap=gsmap_global, ggrid=dom_clm, & + nxg=ldomain%ni, nyg=ldomain%nj, & + yearFirst=1996, & + yearLast=1996, & + yearAlign=1, & + offset=0, & + domFilePath='', & + domFileName=trim(control%stream_fldFileName_ch4finundated), & + domTvarName='time', & + domXvarName='LONGXY' , & + domYvarName='LATIXY' , & + domAreaName='AREA', & + domMaskName='LANDMASK', & + filePath='', & + filename=(/trim(control%stream_fldFileName_ch4finundated)/), & + fldListFile=control%fldList, & + fldListModel=control%fldList, & + fillalgo='none', & + mapalgo=control%ch4finundatedmapalgo, & + calendar=get_calendar(), & taxmode='extend' ) if (masterproc) then diff --git a/src/cpl/mct/laiStreamMod.F90 b/src/cpl/mct/laiStreamMod.F90 index df12d6912e..c6e55d7c99 100644 --- a/src/cpl/mct/laiStreamMod.F90 +++ b/src/cpl/mct/laiStreamMod.F90 @@ -53,7 +53,7 @@ subroutine lai_init(bounds) use ndepStreamMod , only : clm_domain_mct use histFileMod , only : hist_addfld1d use domainMod , only : ldomain - use decompMod , only : gsmap_lnd_gdc2glo + use spmdGathScatMod , only : gsmap_global use controlMod , only : NLFilename ! ! !ARGUMENTS: @@ -131,7 +131,7 @@ subroutine lai_init(bounds) pio_subsystem=pio_subsystem, & pio_iotype=shr_pio_getiotype(inst_name), & mpicom=mpicom, compid=comp_id, & - gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & + gsmap=gsmap_global, ggrid=dom_clm, & nxg=ldomain%ni, nyg=ldomain%nj, & yearFirst=stream_year_first_lai, & yearLast=stream_year_last_lai, & diff --git a/src/cpl/mct/lnd_set_decomp_and_domain.F90 b/src/cpl/mct/lnd_set_decomp_and_domain.F90 index ca661a9144..17682d01b4 100644 --- a/src/cpl/mct/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/mct/lnd_set_decomp_and_domain.F90 @@ -1,9 +1,9 @@ module lnd_set_decomp_and_domain - use shr_kind_mod , only : r8 => shr_kind_r8, cl=>shr_kind_cl + use shr_kind_mod , only : r8 => shr_kind_r8 use spmdMod , only : masterproc use clm_varctl , only : iulog - use perf_mod , only : t_startf, t_stopf, t_barrierf + use mct_mod , only : mct_gsMap implicit none private ! except @@ -15,6 +15,8 @@ module lnd_set_decomp_and_domain private :: surfrd_get_globmask ! Reads global land mask (needed for setting domain decomp) private :: surfrd_get_grid ! Read grid/ladnfrac data into domain (after domain decomp) + type(mct_gsmap), target, public :: gsMap_lnd2Dsoi_gdc2glo + character(len=*), parameter, private :: sourcefile = & __FILE__ @@ -28,9 +30,9 @@ subroutine lnd_set_decomp_and_domain_from_surfrd(noland, ni, nj) use clm_varpar , only: nlevsoi use clm_varctl , only: fatmlndfrc, use_soil_moisture_streams - use decompInitMod , only: decompInit_lnd, decompInit_lnd3D + use decompInitMod , only: decompInit_lnd use decompMod , only: bounds_type, get_proc_bounds - use domainMod , only: ldomain, domain_init, domain_check + use domainMod , only: ldomain, domain_check ! input/output variables logical, intent(out) :: noland @@ -112,7 +114,6 @@ subroutine surfrd_get_globmask(filename, mask, ni, nj) integer :: n,i,j ! index integer :: ier ! error status type(file_desc_t) :: ncid ! netcdf id - character(len=256) :: varname ! variable name character(len=256) :: locfn ! local file name logical :: readvar ! read variable in or not integer , allocatable :: idata2d(:,:) @@ -174,7 +175,7 @@ subroutine surfrd_get_globmask(filename, mask, ni, nj) end subroutine surfrd_get_globmask !----------------------------------------------------------------------- - subroutine surfrd_get_grid(begg, endg, ldomain, filename, glcfilename) + subroutine surfrd_get_grid(begg, endg, ldomain, filename) ! Read the surface dataset grid related information: ! This is called after the domain decomposition has been created @@ -182,28 +183,24 @@ subroutine surfrd_get_grid(begg, endg, ldomain, filename, glcfilename) ! - real longitude of grid cell (degrees) use clm_varcon , only : spval, re, grlnd - use domainMod , only : domain_type, domain_init, domain_clean, lon1d, lat1d + use domainMod , only : domain_type, lon1d, lat1d, domain_init use fileutils , only : getfil use abortutils , only : endrun use shr_log_mod , only : errMsg => shr_log_errMsg - use ncdio_pio , only : file_desc_t, var_desc_t, ncd_pio_openfile, ncd_pio_closefile - use ncdio_pio , only : ncd_io, check_var, ncd_inqfdims, check_dim_size, ncd_inqdid, ncd_inqdlen + use ncdio_pio , only : file_desc_t, ncd_pio_openfile, ncd_pio_closefile + use ncdio_pio , only : ncd_io, check_var, ncd_inqfdims, check_dim_size use pio ! input/output variables integer , intent(in) :: begg, endg type(domain_type) , intent(inout) :: ldomain ! domain to init character(len=*) , intent(in) :: filename ! grid filename - character(len=*) ,optional , intent(in) :: glcfilename ! glc mask filename ! local variables type(file_desc_t) :: ncid ! netcdf id integer :: beg ! local beg index integer :: end ! local end index integer :: ni,nj,ns ! size of grid on file - integer :: dimid,varid ! netCDF id's - integer :: start(1), count(1) ! 1d lat/lon array sections - integer :: ier,ret ! error status logical :: readvar ! true => variable is on input file logical :: isgrid2d ! true => file is 2d lat/lon logical :: istype_domain ! true => input file is of type domain @@ -295,24 +292,29 @@ end subroutine surfrd_get_grid subroutine decompInit_lnd3D(lni,lnj,lnk) ! ! !DESCRIPTION: - ! - ! Create a 3D decomposition gsmap for the global 2D grid with soil levels - ! as the 3rd dimesnion. + ! Create a 3D decomposition gsmap for the global 2D grid with soil levels + ! as the 3rd dimesnion. ! ! !USES: + use decompMod, only : ldecomp, get_proc_bounds, bounds_type + use spmdMod , only : mpicom, comp_id + use mct_mod , only : mct_gsMap_init, mct_gsmap_ngseg ! ! !ARGUMENTS: integer , intent(in) :: lni,lnj,lnk ! domain global size ! ! !LOCAL VARIABLES: - integer :: m,n,k ! indices - integer :: begg,endg,lsize,gsize ! used for gsmap init - integer :: begg3d,endg3d - integer, pointer :: gindex(:) ! global index for gsmap init + integer :: m,n,k ! indices + integer :: begg,endg,lsize,gsize ! used for gsmap init + integer :: begg3d,endg3d + integer, pointer :: gindex(:) ! global index for gsmap init + type(bounds_type) :: bounds !------------------------------------------------------------------------------ - ! Set gsMap_lnd_gdc2glo (the global index here includes mask=0 or ocean points) - call get_proc_bounds(begg, endg) + ! Initialize gsmap_lnd2dsoi_gdc2glo + call get_proc_bounds(bounds) + begg = bounds%begg; endg=bounds%endg + begg3d = (begg-1)*lnk + 1 endg3d = endg*lnk lsize = (endg3d - begg3d + 1 ) @@ -343,8 +345,6 @@ subroutine decompInit_lnd3D(lni,lnj,lnk) deallocate(gindex) - call shr_sys_flush(iulog) - end subroutine decompInit_lnd3D end module lnd_set_decomp_and_domain diff --git a/src/cpl/mct/ndepStreamMod.F90 b/src/cpl/mct/ndepStreamMod.F90 index e99afd81f3..fdce01e457 100644 --- a/src/cpl/mct/ndepStreamMod.F90 +++ b/src/cpl/mct/ndepStreamMod.F90 @@ -14,14 +14,12 @@ module ndepStreamMod use spmdMod , only: mpicom, masterproc, comp_id, iam use clm_varctl , only: iulog, inst_name use abortutils , only: endrun - use fileutils , only: getavu, relavu use decompMod , only: bounds_type, ldecomp use domainMod , only: ldomain ! !PUBLIC TYPES: implicit none private - save ! !PUBLIC MEMBER FUNCTIONS: public :: ndep_init ! position datasets for dynamic ndep @@ -58,7 +56,7 @@ subroutine ndep_init(bounds, NLFilename) use shr_nl_mod , only : shr_nl_find_group_name use shr_log_mod , only : errMsg => shr_log_errMsg use shr_mpi_mod , only : shr_mpi_bcast - use decompMod , only : gsmap_lnd_gdc2glo + use spmdGathScatMod , only : gsmap_global ! ! arguments implicit none @@ -96,8 +94,7 @@ subroutine ndep_init(bounds, NLFilename) ! Read ndepdyn_nml namelist if (masterproc) then - nu_nml = getavu() - open( nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) + open( newunit=nu_nml, file=trim(NLFilename), status='old', iostat=nml_error ) call shr_nl_find_group_name(nu_nml, 'ndepdyn_nml', status=nml_error) if (nml_error == 0) then read(nu_nml, nml=ndepdyn_nml,iostat=nml_error) @@ -108,7 +105,6 @@ subroutine ndep_init(bounds, NLFilename) call endrun(msg=' ERROR finding ndepdyn_nml namelist'//errMsg(sourcefile, __LINE__)) end if close(nu_nml) - call relavu( nu_nml ) endif call shr_mpi_bcast(stream_year_first_ndep , mpicom) @@ -141,7 +137,7 @@ subroutine ndep_init(bounds, NLFilename) pio_subsystem=pio_subsystem, & pio_iotype=shr_pio_getiotype(inst_name), & mpicom=mpicom, compid=comp_id, & - gsmap=gsmap_lnd_gdc2glo, ggrid=dom_clm, & + gsmap=gsmap_global, ggrid=dom_clm, & nxg=ldomain%ni, nyg=ldomain%nj, & yearFirst=stream_year_first_ndep, & yearLast=stream_year_last_ndep, & @@ -268,13 +264,14 @@ subroutine clm_domain_mct(bounds, dom_clm, nlevels) !------------------------------------------------------------------- ! Set domain data type for internal clm grid - use clm_varcon , only : re - use domainMod , only : ldomain - use mct_mod , only : mct_ggrid, mct_gsMap_lsize, mct_gGrid_init - use mct_mod , only : mct_gsMap_orderedPoints, mct_gGrid_importIAttr - use mct_mod , only : mct_gGrid_importRAttr - use mct_mod , only : mct_gsMap - use decompMod , only : gsmap_lnd_gdc2glo, gsMap_lnd2Dsoi_gdc2glo + use clm_varcon , only : re + use domainMod , only : ldomain + use mct_mod , only : mct_ggrid, mct_gsMap_lsize, mct_gGrid_init + use mct_mod , only : mct_gsMap_orderedPoints, mct_gGrid_importIAttr + use mct_mod , only : mct_gGrid_importRAttr + use mct_mod , only : mct_gsMap + use spmdGathScatMod , only : gsmap_global + use lnd_set_decomp_and_domain , only : gsMap_lnd2Dsoi_gdc2glo implicit none ! ! arguments @@ -294,7 +291,7 @@ subroutine clm_domain_mct(bounds, dom_clm, nlevels) nlevs = 1 if ( present(nlevels) ) nlevs = nlevels if ( nlevs == 1 ) then - gsmap => gsmap_lnd_gdc2glo + gsmap => gsmap_global else gsmap => gsMap_lnd2Dsoi_gdc2glo end if diff --git a/src/main/GetGlobalValuesMod.F90 b/src/main/GetGlobalValuesMod.F90 index 9e06672c45..7ea1fc5538 100644 --- a/src/main/GetGlobalValuesMod.F90 +++ b/src/main/GetGlobalValuesMod.F90 @@ -27,11 +27,10 @@ integer function GetGlobalIndex(decomp_index, clmlevel) ! ! Uses: use shr_log_mod, only: errMsg => shr_log_errMsg - use decompMod , only: bounds_type, get_clmlevel_gsmap, get_proc_bounds + use decompMod , only: bounds_type, get_clmlevel_gindex, get_proc_bounds use spmdMod , only: iam use clm_varcon , only: nameg, namel, namec, namep use clm_varctl , only: iulog - use mct_mod , only: mct_gsMap, mct_gsMap_orderedPoints use shr_sys_mod, only: shr_sys_abort ! ! Arguments @@ -39,10 +38,9 @@ integer function GetGlobalIndex(decomp_index, clmlevel) character(len=*) , intent(in) :: clmlevel ! ! Local Variables: - type(bounds_type) :: bounds_proc ! processor bounds - type(mct_gsMap),pointer :: gsmap ! global seg map - integer, pointer,dimension(:) :: gsmap_ordered ! gsmap ordered points - integer :: beg_index ! beginning proc index for clmlevel + type(bounds_type) :: bounds_proc ! processor bounds + integer :: beg_index ! beginning proc index for clmlevel + integer, pointer :: gindex(:) !---------------------------------------------------------------- call get_proc_bounds(bounds_proc) @@ -60,10 +58,8 @@ integer function GetGlobalIndex(decomp_index, clmlevel) errmsg(sourcefile, __LINE__)) end if - call get_clmlevel_gsmap(clmlevel=trim(clmlevel), gsmap=gsmap) - call mct_gsMap_orderedPoints(gsmap, iam, gsmap_ordered) - GetGlobalIndex = gsmap_ordered(decomp_index - beg_index + 1) - deallocate(gsmap_ordered) + call get_clmlevel_gindex(clmlevel=trim(clmlevel), gindex=gindex) + GetGlobalIndex = gindex(decomp_index - beg_index + 1) end function GetGlobalIndex @@ -82,25 +78,24 @@ function GetGlobalIndexArray(decomp_index, bounds1, bounds2, clmlevel) ! Uses: #include "shr_assert.h" use shr_log_mod, only: errMsg => shr_log_errMsg - use decompMod , only: bounds_type, get_clmlevel_gsmap, get_proc_bounds + use decompMod , only: bounds_type, get_clmlevel_gindex, get_proc_bounds use spmdMod , only: iam use clm_varcon , only: nameg, namel, namec, namep use clm_varctl , only: iulog - use mct_mod + use shr_sys_mod, only: shr_sys_abort ! ! Arguments - integer, intent(in) :: bounds1 ! lower bound of the input & returned arrays - integer, intent(in) :: bounds2 ! upper bound of the input & returned arrays - integer, intent(in) :: decomp_index(bounds1:) - character(len=*) , intent(in) :: clmlevel - integer :: GetGlobalIndexArray(bounds1:bounds2) + integer , intent(in) :: bounds1 ! lower bound of the input & returned arrays + integer , intent(in) :: bounds2 ! upper bound of the input & returned arrays + integer , intent(in) :: decomp_index(bounds1:) + character(len=*) , intent(in) :: clmlevel + integer :: GetGlobalIndexArray(bounds1:bounds2) ! ! Local Variables: - type(bounds_type) :: bounds_proc ! processor bounds - type(mct_gsMap),pointer :: gsmap ! global seg map - integer, pointer,dimension(:) :: gsmap_ordered ! gsmap ordered points - integer :: beg_index ! beginning proc index for clmlevel - integer :: i + type(bounds_type) :: bounds_proc ! processor bounds + integer :: beg_index ! beginning proc index for clmlevel + integer :: i + integer , pointer :: gindex(:) !---------------------------------------------------------------- SHR_ASSERT_ALL_FL((ubound(decomp_index) == (/bounds2/)), sourcefile, __LINE__) @@ -119,12 +114,10 @@ function GetGlobalIndexArray(decomp_index, bounds1, bounds2, clmlevel) errmsg(__FILE__, __LINE__)) end if - call get_clmlevel_gsmap(clmlevel=trim(clmlevel), gsmap=gsmap) - call mct_gsMap_orderedPoints(gsmap, iam, gsmap_ordered) + call get_clmlevel_gindex(clmlevel=trim(clmlevel), gindex=gindex) do i=bounds1,bounds2 - GetGlobalIndexArray(i) = gsmap_ordered(decomp_index(i) - beg_index + 1) + GetGlobalIndexArray(i) = gindex(decomp_index(i) - beg_index + 1) enddo - deallocate(gsmap_ordered) end function GetGlobalIndexArray diff --git a/src/main/GridcellType.F90 b/src/main/GridcellType.F90 index 30fe988eff..9d31d41e86 100644 --- a/src/main/GridcellType.F90 +++ b/src/main/GridcellType.F90 @@ -21,7 +21,6 @@ module GridcellType type, public :: gridcell_type ! topological mapping functionality, local 1d gdc arrays - integer , pointer :: gindex (:) ! global index real(r8), pointer :: area (:) ! total land area, gridcell (km^2) real(r8), pointer :: lat (:) ! latitude (radians) real(r8), pointer :: lon (:) ! longitude (radians) @@ -63,7 +62,6 @@ subroutine Init(this, begg, endg) !------------------------------------------------------------------------ ! The following is set in InitGridCells - allocate(this%gindex (begg:endg)) ; this%gindex (:) = ispval allocate(this%area (begg:endg)) ; this%area (:) = nan allocate(this%lat (begg:endg)) ; this%lat (:) = nan allocate(this%lon (begg:endg)) ; this%lon (:) = nan @@ -88,7 +86,6 @@ subroutine Clean(this) class(gridcell_type) :: this !------------------------------------------------------------------------ - deallocate(this%gindex ) deallocate(this%area ) deallocate(this%lat ) deallocate(this%lon ) diff --git a/src/main/accumulMod.F90 b/src/main/accumulMod.F90 index 3baba13814..55ac2bfa7d 100644 --- a/src/main/accumulMod.F90 +++ b/src/main/accumulMod.F90 @@ -150,9 +150,9 @@ subroutine init_accum_field (name, units, desc, & ! possible that init_value doesn't matter even in this case). ! ! !USES: - use shr_const_mod, only: SHR_CONST_CDAY - use clm_time_manager, only : get_step_size - use decompMod, only : get_proc_bounds + use shr_const_mod , only: SHR_CONST_CDAY + use clm_time_manager , only : get_step_size + use decompMod , only : get_proc_bounds, bounds_type ! ! !ARGUMENTS: implicit none @@ -175,6 +175,7 @@ subroutine init_accum_field (name, units, desc, & integer :: begl, endl ! per-proc beginning and ending landunit indices integer :: begg, endg ! per-proc gridcell ending gridcell indices integer :: begCohort, endCohort ! per-proc beg end cohort indices + type(bounds_type) :: bounds character(len=*), parameter :: subname = 'init_accum_field' !------------------------------------------------------------------------ @@ -188,8 +189,12 @@ subroutine init_accum_field (name, units, desc, & ! Determine necessary indices - call get_proc_bounds(begg, endg, begl, endl, begc, endc, begp, endp, & - begCohort, endCohort ) + call get_proc_bounds(bounds) + begg = bounds%begg; endg = bounds%endg + begl = bounds%begl; endl = bounds%endl + begc = bounds%begc; endc = bounds%endc + begp = bounds%begp; endp = bounds%endp + begCohort = bounds%begCoHort; endCohort = bounds%endCoHort ! update field index ! Consistency check that number of accumulated does not exceed maximum. diff --git a/src/main/clm_initializeMod.F90 b/src/main/clm_initializeMod.F90 index 47b8b32775..536f10a548 100644 --- a/src/main/clm_initializeMod.F90 +++ b/src/main/clm_initializeMod.F90 @@ -181,22 +181,19 @@ subroutine initialize2(ni,nj) type(bounds_type) :: bounds_clump ! clump bounds integer :: nclumps ! number of clumps on this processor integer :: nc ! clump index - logical :: lexist logical :: reset_dynbal_baselines_all_columns logical :: reset_dynbal_baselines_lake_columns integer :: begg, endg - integer :: begp, endp - integer :: begc, endc - integer :: begl, endl real(r8), pointer :: data2dptr(:,:) ! temp. pointers for slicing larger arrays - character(len=32) :: subname = 'initialize2' ! subroutine name + character(len=32) :: subname = 'initialize2' ! subroutine name !----------------------------------------------------------------------- call t_startf('clm_init2') - ! Get processor bounds - call get_proc_bounds(begg, endg) - + ! Get processor bounds for gridcells + call get_proc_bounds(bounds_proc) + begg = bounds_proc%begg; endg = bounds_proc%endg + ! Initialize glc behavior call glc_behavior%Init(begg, endg, NLFilename) diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index a6dbdda578..b664be0936 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -9,21 +9,24 @@ module decompInitMod use shr_kind_mod , only : r8 => shr_kind_r8 use shr_sys_mod , only : shr_sys_flush use shr_log_mod , only : errMsg => shr_log_errMsg - use spmdMod , only : masterproc, iam, npes, mpicom, comp_id + use spmdMod , only : masterproc, iam, npes, mpicom use abortutils , only : endrun use clm_varctl , only : iulog, use_fates - use clm_varcon , only : grlnd - use GridcellType , only : grc use LandunitType , only : lun use ColumnType , only : col use PatchType , only : patch use glcBehaviorMod , only : glc_behavior_type - use decompMod - use mct_mod , only : mct_gsMap_init, mct_gsmap_gsize use FatesInterfaceTypesMod, only : fates_maxElementsPerSite + use decompMod + ! use decompMod , only : gindex_global, gindex_grc, gindex_lun, gindex_col + ! use decompMod , only : gindex_patch, gindex_cohort, gindexlnd2Dsoi + ! use decompMod , only : nglob_x, nglob_y + ! use decompMod , only : clumps, ldecomp + ! use decompMod , only : get_proc_clumps, get_proc_total, get_proc_global ! ! !PUBLIC TYPES: implicit none + private ! ! !PUBLIC MEMBER FUNCTIONS: public decompInit_lnd ! initializes lnd grid decomposition into clumps and processors @@ -31,7 +34,6 @@ module decompInitMod public decompInit_glcp ! initializes g,l,c,p decomp info ! ! !PRIVATE TYPES: - private integer, pointer :: lcid(:) ! temporary for setting ldecomp character(len=*), parameter, private :: sourcefile = & @@ -49,7 +51,9 @@ subroutine decompInit_lnd(lni,lnj,amask) ! set by clump_pproc ! ! !USES: - use clm_varctl, only : nsegspc + use clm_varctl , only : nsegspc + use decompMod , only : nglob_x, nglob_y, gindex_global + use spmdGathScatMod , only : gsmap_global_init ! ! !ARGUMENTS: implicit none @@ -58,7 +62,7 @@ subroutine decompInit_lnd(lni,lnj,amask) ! ! !LOCAL VARIABLES: integer :: lns ! global domain size - integer :: ln,lj ! indices + integer :: ln ! indices integer :: ag,an,ai,aj ! indices integer :: numg ! number of land gridcells logical :: seglen1 ! is segment length one @@ -67,9 +71,9 @@ subroutine decompInit_lnd(lni,lnj,amask) integer :: cid,pid ! indices integer :: n,m,ng ! indices integer :: ier ! error code - integer :: beg,end,lsize,gsize ! used for gsmap init - integer, pointer :: gindex(:) ! global index for gsmap init - integer, pointer :: clumpcnt(:) ! clump index counter + integer :: begg, endg ! beg and end gridcells + integer, pointer :: clumpcnt(:) ! clump index counter + type(bounds_type) :: bounds ! contains subgrid bounds data !------------------------------------------------------------------------------ lns = lni * lnj @@ -282,21 +286,21 @@ subroutine decompInit_lnd(lni,lnj,amask) deallocate(clumpcnt) - ! Set gsMap_lnd_gdc2glo (the global index here includes mask=0 or ocean points) - - call get_proc_bounds(beg, end) - - allocate(gindex(beg:end)) - do n = beg,end - gindex(n) = ldecomp%gdc2glo(n) + ! Initialize global gindex (non-compressed, includes ocean points) + ! Note that gindex_global goes from (1:endg-begg_1) + nglob_x = lni ! decompMod module variables + nglob_y = lnj ! decompMod module variables + call get_proc_bounds(bounds) + begg = bounds%begg; endg = bounds%endg + allocate(gindex_global(endg-begg+1)) + do n = begg,endg + gindex_global(n-begg+1) = ldecomp%gdc2glo(n) enddo - lsize = end-beg+1 - gsize = lni * lnj - call mct_gsMap_init(gsMap_lnd_gdc2glo, gindex, mpicom, comp_id, lsize, gsize) - deallocate(gindex) - ! Diagnostic output + ! Initialize gsmap_global - module variable in spmdGathScatMod + call gsmap_global_init(gindex_global) + ! Diagnostic output if (masterproc) then write(iulog,*)' Surface Grid Characteristics' write(iulog,*)' longitude points = ',lni @@ -344,11 +348,13 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) integer, allocatable :: allvecg(:,:) ! temporary vector "global" integer, allocatable :: allvecl(:,:) ! temporary vector "local" integer :: ntest + type(bounds_type) :: bounds character(len=32), parameter :: subname = 'decompInit_clumps' !------------------------------------------------------------------------------ !--- assign gridcells to clumps (and thus pes) --- - call get_proc_bounds(begg, endg) + call get_proc_bounds(bounds) + begg = bounds%begg; endg = bounds%endg allocate(allvecl(nclumps,5)) ! local clumps [gcells,lunit,cols,patches,coh] allocate(allvecg(nclumps,5)) ! global clumps [gcells,lunit,cols,patches,coh] @@ -477,21 +483,20 @@ end subroutine decompInit_clumps subroutine decompInit_glcp(lni,lnj,glc_behavior) ! ! !DESCRIPTION: - ! Determine gsMaps for landunits, columns, patches and cohorts + ! Determine gindex for landunits, columns, patches and cohorts ! ! !USES: use spmdMod - use spmdGathScatMod - use subgridMod, only : subgrid_get_gcellinfo + use subgridMod , only : subgrid_get_gcellinfo + use spmdGathScatMod , only : gather_data_to_master, scatter_data_from_master ! ! !ARGUMENTS: - implicit none integer , intent(in) :: lni,lnj ! land domain global size type(glc_behavior_type), intent(in) :: glc_behavior ! ! !LOCAL VARIABLES: integer :: gi,li,ci,pi,coi ! indices - integer :: i,g,k,l,n,np ! indices + integer :: i,g,l,n,np ! indices integer :: cid,pid ! indices integer :: begg,endg ! beg,end gridcells integer :: begl,endl ! beg,end landunits @@ -503,7 +508,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) integer :: numc ! total number of columns across all processors integer :: nump ! total number of patches across all processors integer :: numCohort ! fates cohorts - integer :: icells ! temporary integer :: ilunits ! temporary integer :: icols ! temporary integer :: ipatches ! temporary @@ -511,56 +515,41 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) integer :: ier ! error code integer :: npmin,npmax,npint ! do loop values for printing integer :: clmin,clmax ! do loop values for printing - integer :: locsize,globsize ! used for gsMap init - integer :: ng ! number of gridcells in gsMap_lnd_gdc2glo + integer :: ng ! number of global gridcells integer :: val1, val2 ! temporaries - integer, pointer :: gindex(:) ! global index for gsMap init - integer, pointer :: arrayglob(:) ! temporaroy + integer, pointer :: gindex_global(:) ! global index + integer, pointer :: arrayglob(:) ! temporaroy integer, pointer :: gstart(:), gcount(:) integer, pointer :: lstart(:), lcount(:) integer, pointer :: cstart(:), ccount(:) integer, pointer :: pstart(:), pcount(:) integer, pointer :: coStart(:), coCount(:) integer, pointer :: ioff(:) + type(bounds_type):: bounds integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max character(len=32), parameter :: subname = 'decompInit_glcp' !------------------------------------------------------------------------------ - !init + ! Get processor bounds + + call get_proc_bounds(bounds) + begg = bounds%begg; endg = bounds%endg + begl = bounds%begl; endl = bounds%endl + begc = bounds%begc; endc = bounds%endc + begp = bounds%begp; endp = bounds%endp + begCohort = bounds%begCoHort; endCohort = bounds%endCoHort - call get_proc_bounds(begg, endg, begl, endl, begc, endc, begp, endp, & - begCohort, endCohort) call get_proc_global(ng=numg, nl=numl, nc=numc, np=nump, nCohorts=numCohort) - ! Determine global seg megs - - allocate(gstart(begg:endg)) - gstart(:) = 0 - allocate(gcount(begg:endg)) - gcount(:) = 0 - allocate(lstart(begg:endg)) - lstart(:) = 0 - allocate(lcount(begg:endg)) - lcount(:) = 0 - allocate(cstart(begg:endg)) - cstart(:) = 0 - allocate(ccount(begg:endg)) - ccount(:) = 0 - allocate(pstart(begg:endg)) - pstart(:) = 0 - allocate(pcount(begg:endg)) - pcount(:) = 0 - if ( use_fates ) then - allocate(coStart(begg:endg)) - coStart(:) = 0 - endif - allocate(coCount(begg:endg)) - coCount(:) = 0 - allocate(ioff(begg:endg)) - ioff(:) = 0 + ! Allocate start and count for determining subgrid level global index space + allocate(gcount(begg:endg)) ; gcount(:) = 0 + allocate(lcount(begg:endg)) ; lcount(:) = 0 + allocate(ccount(begg:endg)) ; ccount(:) = 0 + allocate(pcount(begg:endg)) ; pcount(:) = 0 + allocate(coCount(begg:endg)); coCount(:) = 0 + allocate(ioff(begg:endg)) ; ioff(:) = 0 ! Determine gcount, lcount, ccount and pcount - do gi = begg,endg call subgrid_get_gcellinfo (gi, nlunits=ilunits, ncols=icols, npatches=ipatches, & ncohorts=icohorts, glc_behavior=glc_behavior) @@ -572,17 +561,26 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) enddo ! Determine gstart, lstart, cstart, pstart, coStart for the OUTPUT 1d data structures - ! gather the gdc subgrid counts to masterproc in glo order ! compute glo ordered start indices from the counts ! scatter the subgrid start indices back out to the gdc gridcells ! set the local gindex array for the subgrid from the subgrid start and count arrays - ng = mct_gsmap_gsize(gsmap_lnd_gdc2glo) + ! --------------------------------------- + ! Determine total number of global gridcells (including ocean) + ! --------------------------------------- + + ng = nglob_x * nglob_y allocate(arrayglob(ng)) + call shr_sys_flush(6) + + ! --------------------------------------- + ! Gridcell gindex (compressed, no ocean points) + ! --------------------------------------- + call shr_sys_flush(6) arrayglob(:) = 0 - call gather_data_to_master(gcount, arrayglob, grlnd) + call gather_data_to_master(gcount, arrayglob) if (masterproc) then val1 = arrayglob(1) arrayglob(1) = 1 @@ -592,13 +590,29 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) val1 = val2 enddo endif - call scatter_data_from_master(gstart, arrayglob, grlnd) + allocate(gstart(begg:endg)) ; gstart(:) = 0 + call scatter_data_from_master(arrayglob, gstart) + allocate(gindex_grc(endg-begg+1)) + i = 0 + do gi = begg,endg + if (gcount(gi) < 1) then + write(iulog,*) 'decompInit_glcp warning count g ',iam,g,gcount(g) + endif + do l = 1,gcount(gi) + i = i + 1 + gindex_grc(i) = gstart(gi) + l - 1 + enddo + enddo + deallocate(gstart) + call shr_sys_flush(6) - ! lstart for gridcell (n) is the total number of the landunits - ! over gridcells 1->n-1 + ! --------------------------------------- + ! Landunit gindex + ! --------------------------------------- + ! lstart for gridcell (n) is the total number of the landunits over gridcells 1->n-1 arrayglob(:) = 0 - call gather_data_to_master(lcount, arrayglob, grlnd) + call gather_data_to_master(lcount, arrayglob) if (masterproc) then val1 = arrayglob(1) arrayglob(1) = 1 @@ -608,10 +622,28 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) val1 = val2 enddo endif - call scatter_data_from_master(lstart, arrayglob, grlnd) + allocate(lstart(begg:endg)) ; lstart(:) = 0 + call scatter_data_from_master(arrayglob, lstart) + allocate(gindex_lun(endl-begl+1)) + ioff(:) = 0 + do li = begl,endl + !this is determined internally from how landunits are spread + !out in memory + gi = lun%gridcell(li) + ! the output gindex is ALWAYS the same regardless of how + ! landuntis are spread out in memory + gindex_lun(li-begl+1) = lstart(gi) + ioff(gi) + ioff(gi) = ioff(gi) + 1 + ! check that this is less than [lstart(gi) + lcount(gi)] + enddo + deallocate(lstart) + + ! --------------------------------------- + ! Column gindex + ! --------------------------------------- arrayglob(:) = 0 - call gather_data_to_master(ccount, arrayglob, grlnd) + call gather_data_to_master(ccount, arrayglob) if (masterproc) then val1 = arrayglob(1) arrayglob(1) = 1 @@ -621,10 +653,24 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) val1 = val2 enddo endif - call scatter_data_from_master(cstart, arrayglob, grlnd) + allocate(cstart(begg:endg)) ; cstart(:) = 0 + call scatter_data_from_master(arrayglob, cstart) + allocate(gindex_col(endc-begc+1)) + ioff(:) = 0 + do ci = begc,endc + gi = col%gridcell(ci) + gindex_col(ci-begc+1) = cstart(gi) + ioff(gi) + ioff(gi) = ioff(gi) + 1 + ! check that this is less than [cstart(gi) + ccount(gi)] + enddo + deallocate(cstart) + + ! --------------------------------------- + ! PATCH gindex + ! --------------------------------------- arrayglob(:) = 0 - call gather_data_to_master(pcount, arrayglob, grlnd) + call gather_data_to_master(pcount, arrayglob) if (masterproc) then val1 = arrayglob(1) arrayglob(1) = 1 @@ -634,11 +680,25 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) val1 = val2 enddo endif - call scatter_data_from_master(pstart, arrayglob, grlnd) + allocate(pstart(begg:endg)) ; pstart(:) = 0 + call scatter_data_from_master(arrayglob, pstart) + allocate(gindex_patch(endp-begp+1)) + ioff(:) = 0 + do pi = begp,endp + gi = patch%gridcell(pi) + gindex_patch(pi-begp+1) = pstart(gi) + ioff(gi) + ioff(gi) = ioff(gi) + 1 + ! check that this is less than [pstart(gi) + pcount(gi)] + enddo + deallocate(pstart) + + ! --------------------------------------- + ! FATES gindex for the cohort/element vector + ! --------------------------------------- if ( use_fates ) then arrayglob(:) = 0 - call gather_data_to_master(coCount, arrayglob, grlnd) + call gather_data_to_master(coCount, arrayglob) if (masterproc) then val1 = arrayglob(1) arrayglob(1) = 1 @@ -648,111 +708,35 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) val1 = val2 enddo endif - call scatter_data_from_master(coStart, arrayglob, grlnd) - endif - - deallocate(arrayglob) - - ! Gridcell gsmap (compressed, no ocean points) - - allocate(gindex(begg:endg)) - i = begg-1 - do gi = begg,endg - if (gcount(gi) < 1) then - write(iulog,*) 'decompInit_glcp warning count g ',k,iam,g,gcount(g) - endif - do l = 1,gcount(gi) - i = i + 1 - if (i < begg .or. i > endg) then - write(iulog,*) 'decompInit_glcp error i ',i,begg,endg - call endrun(msg=errMsg(sourcefile, __LINE__)) - endif - gindex(i) = gstart(gi) + l - 1 - enddo - enddo - if (i /= endg) then - write(iulog,*) 'decompInit_glcp error size ',i,begg,endg - call endrun(msg=errMsg(sourcefile, __LINE__)) - endif - locsize = endg-begg+1 - globsize = numg - call mct_gsMap_init(gsmap_gce_gdc2glo, gindex, mpicom, comp_id, locsize, globsize) - deallocate(gindex) - - ! Landunit gsmap - - allocate(gindex(begl:endl)) - ioff(:) = 0 - do li = begl,endl - gi = lun%gridcell(li) !===this is determined internally from how landunits are spread out in memory - gindex(li) = lstart(gi) + ioff(gi) !=== the output gindex is ALWAYS the same regardless of how landuntis are spread out in memory - ioff(gi) = ioff(gi) + 1 - ! check that this is less than [lstart(gi) + lcount(gi)] - enddo - locsize = endl-begl+1 - globsize = numl - call mct_gsMap_init(gsmap_lun_gdc2glo, gindex, mpicom, comp_id, locsize, globsize) - deallocate(gindex) - - ! Column gsmap - - allocate(gindex(begc:endc)) - ioff(:) = 0 - do ci = begc,endc - gi = col%gridcell(ci) - gindex(ci) = cstart(gi) + ioff(gi) - ioff(gi) = ioff(gi) + 1 - ! check that this is less than [cstart(gi) + ccount(gi)] - enddo - locsize = endc-begc+1 - globsize = numc - call mct_gsMap_init(gsmap_col_gdc2glo, gindex, mpicom, comp_id, locsize, globsize) - deallocate(gindex) - - ! PATCH gsmap - - allocate(gindex(begp:endp)) - ioff(:) = 0 - do pi = begp,endp - gi = patch%gridcell(pi) - gindex(pi) = pstart(gi) + ioff(gi) - ioff(gi) = ioff(gi) + 1 - ! check that this is less than [pstart(gi) + pcount(gi)] - enddo - locsize = endp-begp+1 - globsize = nump - call mct_gsMap_init(gsmap_patch_gdc2glo, gindex, mpicom, comp_id, locsize, globsize) - deallocate(gindex) - - ! FATES gsmap for the cohort/element vector - - if ( use_fates ) then - allocate(gindex(begCohort:endCohort)) + allocate(coStart(begg:endg)); coStart(:) = 0 + call scatter_data_from_master(arrayglob, coStart) + allocate(gindex_cohort(endCohort-begCohort+1)) ioff(:) = 0 gi = begg do coi = begCohort,endCohort - gindex(coi) = coStart(gi) + ioff(gi) + gindex_cohort(coi-begCohort+1) = coStart(gi) + ioff(gi) ioff(gi) = ioff(gi) + 1 if ( mod(coi, fates_maxElementsPerSite ) == 0 ) gi = gi + 1 enddo - locsize = endCohort-begCohort+1 - globsize = numCohort - call mct_gsMap_init(gsMap_cohort_gdc2glo, gindex, mpicom, comp_id, locsize, globsize) - deallocate(gindex) + deallocate(coStart) endif + ! --------------------------------------- + ! Deallocate memory and diagnostic output + ! --------------------------------------- + ! Deallocate start/count arrays - deallocate(gstart, gcount) - deallocate(lstart, lcount) - deallocate(cstart, ccount) - deallocate(pstart, pcount) + deallocate(arrayglob) + deallocate(gcount) + deallocate(lcount) + deallocate(ccount) + deallocate(pcount) if ( use_fates ) then - deallocate(coStart,coCount) + deallocate(coCount) endif deallocate(ioff) ! Diagnostic output - if (masterproc) then write(iulog,*)' Surface Grid Characteristics' write(iulog,*)' longitude points = ',lni @@ -769,7 +753,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! Write out clump and proc info, one pe at a time, ! barrier to control pes overwriting each other on stdout - call shr_sys_flush(iulog) call mpi_barrier(mpicom,ier) npmin = 0 diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index 3f885e090b..2b342d5b59 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -11,7 +11,6 @@ module decompMod use shr_sys_mod , only : shr_sys_abort use clm_varctl , only : iulog use clm_varcon , only : grlnd, nameg, namel, namec, namep, nameCohort - use mct_mod , only : mct_gsMap ! ! !PUBLIC TYPES: implicit none @@ -29,25 +28,14 @@ module decompMod integer, parameter, public :: BOUNDS_LEVEL_CLUMP = 2 ! ! !PUBLIC MEMBER FUNCTIONS: - public get_beg ! get beg bound for a given subgrid level public get_end ! get end bound for a given subgrid level public get_proc_clumps ! number of clumps for this processor public get_proc_total ! total no. of gridcells, landunits, columns and patchs for any processor public get_proc_global ! total gridcells, landunits, columns, patchs across all processors public get_clmlevel_gsize ! get global size associated with clmlevel - public get_clmlevel_gsmap ! get gsmap associated with clmlevel - - interface get_clump_bounds - module procedure get_clump_bounds_old - module procedure get_clump_bounds_new - end interface + public get_clmlevel_gindex! get global size associated with clmlevel public get_clump_bounds ! clump beg and end gridcell,landunit,column,patch - - interface get_proc_bounds - module procedure get_proc_bounds_old - module procedure get_proc_bounds_new - end interface public get_proc_bounds ! this processor beg and end gridcell,landunit,column,patch ! !PRIVATE MEMBER FUNCTIONS: @@ -118,14 +106,16 @@ module decompMod public decomp_type type(decomp_type),public,target :: ldecomp - type(mct_gsMap) ,public,target :: gsMap_lnd_gdc2glo ! GS map for full 2D land grid - type(mct_gsMap) ,public,target :: gsMap_gce_gdc2glo ! GS map for 1D gridcells - type(mct_gsMap) ,public,target :: gsMap_lun_gdc2glo ! GS map for 1D landunits - type(mct_gsMap) ,public,target :: gsMap_col_gdc2glo ! GS map for 1d columns - type(mct_gsMap) ,public,target :: gsMap_patch_gdc2glo ! GS map for 1D patches - type(mct_gsMap) ,public,target :: gsMap_cohort_gdc2glo ! GS map for 1D cohorts (only for FATES) + integer, public :: nglob_x, nglob_y ! global sizes - type(mct_gsMap) ,public,target :: gsMap_lnd2Dsoi_gdc2glo ! GS map for full 3D land grid with soil levels as 3rd dim + ! NOTE: the following are allocated with a lower bound of 1! + integer, public, pointer :: gindex_global(:) => null() + integer, public, pointer :: gindex_grc(:) => null() + integer, public, pointer :: gindex_lun(:) => null() + integer, public, pointer :: gindex_col(:) => null() + integer, public, pointer :: gindex_patch(:) => null() + integer, public, pointer :: gindex_cohort(:) => null() + integer, public, pointer :: gindex_lnd2Dsoi(:) => null() !------------------------------------------------------------------------------ contains @@ -186,12 +176,11 @@ pure function get_end(bounds, subgrid_level) result(end_index) ! !USES: ! ! !ARGUMENTS: - integer :: end_index ! function result - type(bounds_type), intent(in) :: bounds - integer, intent(in) :: subgrid_level + integer :: end_index ! function result + type(bounds_type) , intent(in) :: bounds + integer , intent(in) :: subgrid_level ! ! !LOCAL VARIABLES: - character(len=*), parameter :: subname = 'get_end' !----------------------------------------------------------------------- @@ -213,7 +202,7 @@ pure function get_end(bounds, subgrid_level) result(end_index) end function get_end !------------------------------------------------------------------------------ - subroutine get_clump_bounds_new (n, bounds) + subroutine get_clump_bounds (n, bounds) ! ! !DESCRIPTION: ! Determine clump bounds @@ -257,35 +246,10 @@ subroutine get_clump_bounds_new (n, bounds) bounds%level = BOUNDS_LEVEL_CLUMP bounds%clump_index = n - end subroutine get_clump_bounds_new + end subroutine get_clump_bounds !------------------------------------------------------------------------------ - subroutine get_clump_bounds_old (n, begg, endg, begl, endl, begc, endc, begp, endp, & - begCohort, endCohort) - integer, intent(in) :: n ! proc clump index - integer, intent(out) :: begp, endp ! clump beg and end patch indices - integer, intent(out) :: begc, endc ! clump beg and end column indices - integer, intent(out) :: begl, endl ! clump beg and end landunit indices - integer, intent(out) :: begg, endg ! clump beg and end gridcell indices - integer, intent(out) :: begCohort, endCohort ! cohort beg and end gridcell indices - integer :: cid ! clump id - !------------------------------------------------------------------------------ - - cid = procinfo%cid(n) - begp = clumps(cid)%begp - endp = clumps(cid)%endp - begc = clumps(cid)%begc - endc = clumps(cid)%endc - begl = clumps(cid)%begl - endl = clumps(cid)%endl - begg = clumps(cid)%begg - endg = clumps(cid)%endg - begCohort = clumps(cid)%begCohort - endCohort = clumps(cid)%endCohort - end subroutine get_clump_bounds_old - - !------------------------------------------------------------------------------ - subroutine get_proc_bounds_new (bounds) + subroutine get_proc_bounds (bounds) ! ! !DESCRIPTION: ! Retrieve processor bounds @@ -306,7 +270,6 @@ subroutine get_proc_bounds_new (bounds) ! FIX(SPM, 090314) - for debugging fates and openMP !write(*,*) 'SPM omp debug decompMod 2 ', & !OMP_GET_NUM_THREADS(),OMP_GET_MAX_THREADS(),OMP_GET_THREAD_NUM() - if ( OMP_GET_NUM_THREADS() > 1 )then call shr_sys_abort( trim(subname)//' ERROR: Calling from inside a threaded region') end if @@ -326,30 +289,7 @@ subroutine get_proc_bounds_new (bounds) bounds%level = BOUNDS_LEVEL_PROC bounds%clump_index = -1 ! irrelevant for proc, so assigned a bogus value - end subroutine get_proc_bounds_new - - !------------------------------------------------------------------------------ - subroutine get_proc_bounds_old (begg, endg, begl, endl, begc, endc, begp, endp, & - begCohort, endCohort) - - integer, optional, intent(out) :: begp, endp ! proc beg and end patch indices - integer, optional, intent(out) :: begc, endc ! proc beg and end column indices - integer, optional, intent(out) :: begl, endl ! proc beg and end landunit indices - integer, optional, intent(out) :: begg, endg ! proc beg and end gridcell indices - integer, optional, intent(out) :: begCohort, endCohort ! cohort beg and end gridcell indices - !------------------------------------------------------------------------------ - - if (present(begp)) begp = procinfo%begp - if (present(endp)) endp = procinfo%endp - if (present(begc)) begc = procinfo%begc - if (present(endc)) endc = procinfo%endc - if (present(begl)) begl = procinfo%begl - if (present(endl)) endl = procinfo%endl - if (present(begg)) begg = procinfo%begg - if (present(endg)) endg = procinfo%endg - if (present(begCohort)) begCohort = procinfo%begCohort - if (present(endCohort)) endCohort = procinfo%endCohort - end subroutine get_proc_bounds_old + end subroutine get_proc_bounds !------------------------------------------------------------------------------ subroutine get_proc_total(pid, ncells, nlunits, ncols, npatches, nCohorts) @@ -452,34 +392,34 @@ integer function get_clmlevel_gsize (clmlevel) end function get_clmlevel_gsize !----------------------------------------------------------------------- - subroutine get_clmlevel_gsmap (clmlevel, gsmap) + subroutine get_clmlevel_gindex (clmlevel, gindex) ! ! !DESCRIPTION: ! Compute arguments for gatherv, scatterv for vectors ! ! !ARGUMENTS: character(len=*), intent(in) :: clmlevel ! type of input data - type(mct_gsmap) , pointer :: gsmap + integer, pointer :: gindex(:) !---------------------------------------------------------------------- select case (clmlevel) case(grlnd) - gsmap => gsmap_lnd_gdc2glo + gindex => gindex_global case(nameg) - gsmap => gsmap_gce_gdc2glo + gindex => gindex_grc case(namel) - gsmap => gsmap_lun_gdc2glo + gindex => gindex_lun case(namec) - gsmap => gsmap_col_gdc2glo + gindex => gindex_col case(namep) - gsmap => gsmap_patch_gdc2glo + gindex => gindex_patch case(nameCohort) - gsmap => gsMap_cohort_gdc2glo + gindex => gindex_cohort case default - write(iulog,*) 'get_clmlevel_gsmap: Invalid expansion character: ',trim(clmlevel) + write(iulog,*) 'get_clmlevel_gindex: Invalid expansion character: ',trim(clmlevel) call shr_sys_abort() end select - end subroutine get_clmlevel_gsmap + end subroutine get_clmlevel_gindex end module decompMod diff --git a/src/main/initGridCellsMod.F90 b/src/main/initGridCellsMod.F90 index eb34161f47..e8a84f3dcf 100644 --- a/src/main/initGridCellsMod.F90 +++ b/src/main/initGridCellsMod.F90 @@ -187,7 +187,6 @@ subroutine initGridcells(glc_behavior) ! Set some other gridcell-level variables do gdc = bounds_clump%begg,bounds_clump%endg - grc%gindex(gdc) = ldecomp%gdc2glo(gdc) grc%area(gdc) = ldomain%area(gdc) grc%latdeg(gdc) = ldomain%latc(gdc) grc%londeg(gdc) = ldomain%lonc(gdc) diff --git a/src/main/ncdio_pio.F90.in b/src/main/ncdio_pio.F90.in index b321dc04bc..a09ea78f82 100644 --- a/src/main/ncdio_pio.F90.in +++ b/src/main/ncdio_pio.F90.in @@ -20,10 +20,9 @@ module ncdio_pio use clm_varcon , only : spval,ispval, grlnd, nameg, namel, namec, namep use clm_varctl , only : single_column, iulog use shr_sys_mod , only : shr_sys_flush - use decompMod , only : get_clmlevel_gsize,get_clmlevel_gsmap + use decompMod , only : get_clmlevel_gsize, get_clmlevel_gindex use perf_mod , only : t_startf, t_stopf use fileutils , only : getavu, relavu - use mct_mod , only : mct_gsMap, mct_gsMap_lsize, mct_gsMap_gsize, mct_gsMap_orderedPoints use pio , only : file_desc_t, io_desc_t, iosystem_desc_t use pio , only : pio_bcast_error, pio_char, pio_clobber, pio_closefile, pio_createfile, pio_def_dim use pio , only : pio_def_var, pio_double, pio_redef, pio_enddef, pio_get_att, pio_get_var, pio_global, pio_initdecomp @@ -2576,19 +2575,17 @@ contains ! !LOCAL VARIABLES: integer :: k,m,n,cnt ! indices integer :: basetype ! pio basetype - integer :: gsmap_lsize ! local size of gsmap - integer :: gsmap_gsize ! global size of gsmap integer :: fullsize ! size of entire array on cdf + integer :: lsize ! local size of clmlevel gindex integer :: gsize ! global size of clmlevel integer :: vsize ! other dimensions integer :: vsize1, vsize2 ! other dimensions integer :: status ! error status logical :: found ! true => found created iodescriptor integer :: ndims_file ! temporary - character(len=64) dimname_file ! dimension name on file - character(len=64) dimname_iodesc ! dimension name from io descriptor - type(mct_gsMap),pointer :: gsmap ! global seg map - integer, pointer,dimension(:) :: gsmOP ! gsmap ordered points + character(len=64) :: dimname_file ! dimension name on file + character(len=64) :: dimname_iodesc ! dimension name from io descriptor + integer, pointer :: gindex(:) ! global index space integer(pio_offset_kind), pointer :: compDOF(:) character(len=32) :: subname = 'ncd_getiodesc' !------------------------------------------------------------------------ @@ -2662,12 +2659,12 @@ contains call shr_sys_abort(errMsg(sourcefile,__LINE__)) end if - call get_clmlevel_gsmap(clmlevel,gsmap) + call get_clmlevel_gindex(clmlevel, gindex) + if (.not. associated(gindex)) then + call shr_sys_abort('gindex for clmlevel '//trim(clmlevel)//' is not associated') + end if gsize = get_clmlevel_gsize(clmlevel) - gsmap_lsize = mct_gsmap_lsize(gsmap,mpicom) - gsmap_gsize = mct_gsmap_gsize(gsmap) - - call mct_gsMap_orderedPoints(gsmap,iam,gsmOP) + lsize = size(gindex) fullsize = 1 do n = 1,ndims @@ -2680,15 +2677,15 @@ contains call shr_sys_abort(errMsg(sourcefile, __LINE__)) endif - allocate(compDOF(gsmap_lsize*vsize)) + allocate(compDOF(lsize*vsize)) if (present(switchdim)) then if (switchdim) then cnt = 0 - do m = 1,gsmap_lsize + do m = 1,lsize do n = 1,vsize cnt = cnt + 1 - compDOF(cnt) = (gsmOP(m)-1)*vsize + n + compDOF(cnt) = (gindex(m)-1)*vsize + n enddo enddo else @@ -2706,18 +2703,18 @@ contains cnt = 0 do k = 1,vsize2 do n = 1,vsize1 - do m = 1,gsmap_lsize + do m = 1,lsize cnt = cnt + 1 - compDOF(cnt) = (k-1)*vsize1*gsmap_gsize + (n-1)*gsmap_gsize + gsmOP(m) + compDOF(cnt) = (k-1)*vsize1*gsize + (n-1)*gsize + gindex(m) enddo enddo end do else cnt = 0 do n = 1,vsize - do m = 1,gsmap_lsize + do m = 1,lsize cnt = cnt + 1 - compDOF(cnt) = (n-1)*gsmap_gsize + gsmOP(m) + compDOF(cnt) = (n-1)*gsize + gindex(m) enddo enddo end if @@ -2726,7 +2723,7 @@ contains if (debug > 1) then do m = 0,npes-1 if (iam == m) then - write(iulog,*) trim(subname),' sizes1 = ',iam,gsize,gsmap_gsize,gsmap_lsize + write(iulog,*) trim(subname),' sizes1 = ',iam,gsize,lsize write(iulog,*) trim(subname),' sizes2 = ',iam,fullsize,npes,vsize write(iulog,*) trim(subname),' compDOF = ',iam,size(compDOF),minval(compDOF),maxval(compDOF) call shr_sys_flush(iulog) @@ -2735,8 +2732,6 @@ contains enddo endif - deallocate(gsmOP) - call pio_initdecomp(pio_subsystem, xTYPE, dims(1:ndims), compDOF, iodesc_list(iodnum)%iodesc) deallocate(compDOF) diff --git a/src/utils/spmdGathScatMod.F90 b/src/utils/spmdGathScatMod.F90 index b3314d2da6..95d446b49b 100644 --- a/src/utils/spmdGathScatMod.F90 +++ b/src/utils/spmdGathScatMod.F90 @@ -1,540 +1,132 @@ module spmdGathScatMod -!----------------------------------------------------------------------- -!BOP -! -! !MODULE: spmdGathScatMod -! -! !DESCRIPTION: -! Perform SPMD gather and scatter operations. -! -! !USES: - use clm_varcon, only: spval, ispval - use decompMod, only : get_clmlevel_gsmap - use shr_kind_mod, only: r8 => shr_kind_r8 - use spmdMod , only : masterproc, mpicom - use mct_mod , only : mct_aVect, mct_gsMap - use mct_mod , only : mct_aVect_init, mct_aVect_importIattr, mct_aVect_scatter - use mct_mod , only : mct_aVect_gather, mct_aVect_exportIattr, mct_aVect_clean - use mct_mod , only : mct_aVect_exportRattr, mct_aVect_importRattr - use abortutils, only : endrun - use clm_varctl, only : iulog - use perf_mod , only : t_startf, t_stopf -! -! !PUBLIC TYPES: + !----------------------------------------------------------------------- + ! !DESCRIPTION: + ! Perform SPMD gather and scatter operations. + ! + ! !USES: + use shr_kind_mod , only : r8 => shr_kind_r8 + use spmdMod , only : masterproc, mpicom + use mct_mod , only : mct_aVect, mct_gsMap + use mct_mod , only : mct_aVect_init, mct_aVect_importIattr, mct_aVect_scatter + use mct_mod , only : mct_aVect_gather, mct_aVect_exportIattr, mct_aVect_clean + use mct_mod , only : mct_aVect_exportRattr, mct_aVect_importRattr + use abortutils , only : endrun + use clm_varctl , only : iulog + ! + ! !PUBLIC TYPES: implicit none private -! -! !PUBLIC MEMBER FUNCTIONS: - public scatter_data_from_master, gather_data_to_master - - interface scatter_data_from_master - module procedure scatter_1darray_int - module procedure scatter_1darray_real - end interface - - interface gather_data_to_master - module procedure gather_1darray_int - module procedure gather_1darray_real - end interface -! -! !REVISION HISTORY: -! Author: Mariana Vertenstein -! -!EOP -! - integer,private,parameter :: debug = 0 + ! + ! !PUBLIC MEMBER FUNCTIONS: + public :: scatter_data_from_master + public :: gather_data_to_master + public :: gsmap_global_init + + type(mct_gsMap), target, public :: gsmap_global ! global seg map !----------------------------------------------------------------------- - contains - -!----------------------------------------------------------------------- -!BOP -! -! !IROUTINE: scatter_1darray_int -! -! !INTERFACE: - subroutine scatter_1darray_int (alocal, aglobal, clmlevel) -! -! !DESCRIPTION: -! Wrapper routine to scatter int 1d array -! -! !USES: -! -! !ARGUMENTS: - implicit none - integer , pointer :: alocal(:) ! local data (output) - integer , pointer :: aglobal(:) ! global data (input) - character(len=*) ,intent(in) :: clmlevel ! type of input grid -! -! !REVISION HISTORY: -! Author: T Craig -! -! -! !LOCAL VARIABLES: -!EOP - integer :: n1,n2,lb1,ub1,lb2,ub2 ! indices - integer :: lsize ! size of local array - type(mct_aVect) :: AVi, AVo ! attribute vectors - integer ,pointer :: adata(:) ! local data array - character(len=256) :: rstring ! real field list string - character(len=256) :: istring ! int field list string - character(len=8) :: fname ! arbitrary field name - type(mct_gsMap),pointer :: gsmap ! global seg map - character(len=*),parameter :: subname = 'scatter_1darray_int' - !----------------------------------------------------------------------- - call t_startf(trim(subname)//'_total') - call get_clmlevel_gsmap(clmlevel,gsmap) - - lb1 = lbound(alocal,dim=1) - ub1 = ubound(alocal,dim=1) - lb2 = 1 - ub2 = 1 - - rstring = "" - istring = "" - - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - if (len_trim(istring) == 0) then - istring = trim(fname) - else - istring = trim(istring)//":"//trim(fname) - endif - enddo - - if (masterproc .and. debug > 2) then - write(iulog,*) trim(subname),' strings:',trim(rstring),' ',trim(istring) - endif - - if (debug > 1) call t_startf(trim(subname)//'_pack') + subroutine gsmap_global_init(gindex_global) + ! + ! !USES: + use spmdMod , only : mpicom, comp_id + use decompMod , only : nglob_x, nglob_y + use mct_mod , only : mct_gsMap_init + ! + ! !ARGUMENTS: + integer, intent(in) :: gindex_global(:) + ! + ! !LOCAL VARIABLES: + integer :: lsize, gsize + !----------------------------------------------------------------------- + + lsize = size(gindex_global) + gsize = nglob_x * nglob_y + + call mct_gsMap_init(gsmap_global, gindex_global, mpicom, comp_id, lsize, gsize) + + end subroutine gsmap_global_init + + !----------------------------------------------------------------------- + subroutine scatter_data_from_master (aglobal, alocal) + ! + ! !DESCRIPTION: + ! Wrapper routine to scatter int 1d array + ! + ! !USES: + ! + ! !ARGUMENTS: + integer , pointer :: aglobal(:) ! global data (input) + integer , pointer :: alocal(:) ! local data (output) + + ! !LOCAL VARIABLES: + integer :: n,lb,ub ! indices + integer :: lsize ! size of local array + type(mct_aVect) :: AVi, AVo ! attribute vectors + integer ,pointer :: adata(:) ! local data array + character(len=*),parameter :: subname = 'scatter_1darray_int' + !----------------------------------------------------------------------- if (masterproc) then - lsize = size(aglobal,dim=1) - call mct_aVect_init(AVi,rList=trim(rstring),iList=trim(istring),lsize=lsize) - allocate(adata(lsize)) - do n2 = lb2,ub2 - adata(1:lsize) = aglobal(1:lsize) - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_importIattr(AVi,trim(fname),adata,lsize) - enddo - deallocate(adata) + call mct_aVect_init(AVi, rList="", iList="f1", lsize=lsize) + call mct_aVect_importIattr(AVi, 'f1', aglobal, size(aglobal,dim=1)) endif - - if (debug > 1) call t_stopf(trim(subname)//'_pack') - if (debug > 1) call t_startf(trim(subname)//'_scat') - - call mct_aVect_scatter(AVi, AVo, gsmap, 0, mpicom) - - if (debug > 1) call t_stopf(trim(subname)//'_scat') - if (debug > 1) call t_startf(trim(subname)//'_upck') - - lsize = size(alocal,dim=1) + call mct_aVect_scatter(AVi, AVo, gsmap_global, 0, mpicom) + lsize = size(alocal, dim=1) allocate(adata(lsize)) - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_exportIattr(AVo,trim(fname),adata,lsize) - do n1 = lb1,ub1 - alocal(n1) = adata(n1-lb1+1) - enddo + call mct_aVect_exportIattr(AVo, 'f1', adata, lsize) + lb = lbound(alocal, dim=1); ub = ubound(alocal, dim=1) + do n = lb,ub + alocal(n) = adata(n-lb+1) enddo deallocate(adata) - - if (debug > 1) call t_stopf(trim(subname)//'_upck') - if (masterproc) then call mct_aVect_clean(AVi) endif call mct_aVect_clean(AVo) - call t_stopf(trim(subname)//'_total') - - end subroutine scatter_1darray_int - -!----------------------------------------------------------------------- -!BOP -! -! !IROUTINE: gather_1darray_int -! -! !INTERFACE: - subroutine gather_1darray_int (alocal, aglobal, clmlevel, missing) -! -! !DESCRIPTION: -! Wrapper routine to gather int 1d array -! -! !USES: -! -! !ARGUMENTS: - implicit none - integer , pointer :: alocal(:) ! local data (output) - integer , pointer :: aglobal(:) ! global data (input) - character(len=*) ,intent(in) :: clmlevel ! type of input grid - integer ,optional,intent(in) :: missing ! missing value -! -! !REVISION HISTORY: -! Author: T Craig -! -! -! !LOCAL VARIABLES: -!EOP - integer :: n1,n2,lb1,ub1,lb2,ub2 ! indices + end subroutine scatter_data_from_master + + !----------------------------------------------------------------------- + subroutine gather_data_to_master (alocal, aglobal) + ! + ! !DESCRIPTION: + ! Wrapper routine to gather int 1d array + ! + ! !USES: + ! + ! !ARGUMENTS: + integer , pointer :: alocal(:) ! local data (output) + integer , pointer :: aglobal(:) ! global data (input) + ! + ! !LOCAL VARIABLES: + integer :: n,lb,ub ! indices integer :: lsize ! size of local array type(mct_aVect) :: AVi, AVo ! attribute vectors integer ,pointer :: adata(:) ! temporary data array - integer ,pointer :: mvect(:) ! local array for mask - character(len=256) :: rstring ! real field list string - character(len=256) :: istring ! int field list string - character(len=8) :: fname ! arbitrary field name - type(mct_gsMap),pointer :: gsmap ! global seg map character(len=*),parameter :: subname = 'gather_1darray_int' + !----------------------------------------------------------------------- -!----------------------------------------------------------------------- - - call t_startf(trim(subname)//'_total') - call get_clmlevel_gsmap(clmlevel,gsmap) - - lsize = size(alocal,dim=1) - lb1 = lbound(alocal,dim=1) - ub1 = ubound(alocal,dim=1) - lb2 = 1 - ub2 = 1 - - rstring = "" - istring = "" - - if (present(missing)) then - istring = "mask" - endif - - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - if (len_trim(istring) == 0) then - istring = trim(fname) - else - istring = trim(istring)//":"//trim(fname) - endif - enddo - - if (masterproc .and. debug > 2) then - write(iulog,*) trim(subname),' strings:',trim(rstring),' ',trim(istring) - endif - - call mct_aVect_init(AVi,rList=trim(rstring),iList=trim(istring),lsize=lsize) - - if (debug > 1) call t_startf(trim(subname)//'_pack') + lsize = size(alocal, dim=1) + lb = lbound(alocal, dim=1); ub = ubound(alocal, dim=1) + call mct_aVect_init(AVi, rList="", iList='f1', lsize=lsize) allocate(adata(lsize)) - do n2 = lb2,ub2 - do n1 = lb1,ub1 - adata(n1-lb1+1) = alocal(n1) - enddo - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_importIattr(AVi,trim(fname),adata,lsize) + do n = lb,ub + adata(n-lb+1) = alocal(n) enddo + call mct_aVect_importIattr(AVi, 'f1', adata, lsize) deallocate(adata) - - if (present(missing)) then - allocate(mvect(lsize)) - do n1 = lb1,ub1 - mvect(n1-lb1+1) = 1 - enddo - call mct_aVect_importIattr(AVi,"mask",mvect,lsize) - deallocate(mvect) - endif - - if (debug > 1) call t_stopf(trim(subname)//'_pack') - if (debug > 1) call t_startf(trim(subname)//'_gath') - - if (present(missing)) then -! tcx wait for update in mct, then get rid of "mask" -! call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom, missing = missing) - call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom) - else - call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom) - endif - - if (debug > 1) call t_stopf(trim(subname)//'_gath') - if (debug > 1) call t_startf(trim(subname)//'_upck') - + call mct_aVect_gather(AVi, AVo, gsmap_global, 0, mpicom) if (masterproc) then lsize = size(aglobal,dim=1) - allocate(adata(lsize)) - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_exportIattr(AVo,trim(fname),adata,lsize) - aglobal(1:lsize) = adata(1:lsize) - enddo - deallocate(adata) - if (present(missing)) then - allocate(mvect(lsize)) - call mct_aVect_exportIattr(AVo,"mask",mvect,lsize) - do n1 = 1,lsize - if (mvect(n1) == 0) then - do n2 = lb2,ub2 - aglobal(n1) = missing - enddo - endif - enddo - deallocate(mvect) - endif - endif - - if (debug > 1) call t_stopf(trim(subname)//'_upck') - - if (masterproc) then + call mct_aVect_exportIattr(AVo, 'f1', aglobal, lsize) call mct_aVect_clean(AVo) endif - call mct_aVect_clean(AVi) - call t_stopf(trim(subname)//'_total') - - end subroutine gather_1darray_int - -!----------------------------------------------------------------------- -!BOP -! -! !IROUTINE: scatter_1darray_real -! -! !INTERFACE: - subroutine scatter_1darray_real (alocal, aglobal, clmlevel) -! -! !DESCRIPTION: -! Wrapper routine to scatter real 1d array -! -! !USES: -! -! !ARGUMENTS: - implicit none - real(r8), pointer :: alocal(:) ! local data (output) - real(r8), pointer :: aglobal(:) ! global data (input) - character(len=*) ,intent(in) :: clmlevel ! type of input grid -! -! !REVISION HISTORY: -! Author: T Craig -! -! -! !LOCAL VARIABLES: -!EOP - integer :: n1,n2,lb1,ub1,lb2,ub2 ! indices - integer :: lsize ! size of local array - type(mct_aVect) :: AVi, AVo ! attribute vectors - real(r8),pointer :: adata(:) ! local data array - character(len=256) :: rstring ! real field list string - character(len=256) :: istring ! int field list string - character(len=8) :: fname ! arbitrary field name - type(mct_gsMap),pointer :: gsmap ! global seg map - character(len=*),parameter :: subname = 'scatter_1darray_real' - -!----------------------------------------------------------------------- - - call t_startf(trim(subname)//'_total') - call get_clmlevel_gsmap(clmlevel,gsmap) - - lb1 = lbound(alocal,dim=1) - ub1 = ubound(alocal,dim=1) - lb2 = 1 - ub2 = 1 - - rstring = "" - istring = "" - - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - if (len_trim(rstring) == 0) then - rstring = trim(fname) - else - rstring = trim(rstring)//":"//trim(fname) - endif - enddo - - if (masterproc .and. debug > 2) then - write(iulog,*) trim(subname),' strings:',trim(rstring),' ',trim(istring) - endif - - if (debug > 1) call t_startf(trim(subname)//'_pack') - - if (masterproc) then - lsize = size(aglobal,dim=1) - call mct_aVect_init(AVi,rList=trim(rstring),iList=trim(istring),lsize=lsize) - allocate(adata(lsize)) - do n2 = lb2,ub2 - adata(1:lsize) = aglobal(1:lsize) - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_importRattr(AVi,trim(fname),adata,lsize) - enddo - deallocate(adata) - endif - - if (debug > 1) call t_stopf(trim(subname)//'_pack') - if (debug > 1) call t_startf(trim(subname)//'_scat') - - call mct_aVect_scatter(AVi, AVo, gsmap, 0, mpicom) - - if (debug > 1) call t_stopf(trim(subname)//'_scat') - if (debug > 1) call t_startf(trim(subname)//'_upck') - - lsize = size(alocal,dim=1) - allocate(adata(lsize)) - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_exportRattr(AVo,trim(fname),adata,lsize) - do n1 = lb1,ub1 - alocal(n1) = adata(n1-lb1+1) - enddo - enddo - deallocate(adata) - - if (debug > 1) call t_stopf(trim(subname)//'_upck') - - if (masterproc) then - call mct_aVect_clean(AVi) - endif - call mct_aVect_clean(AVo) - - call t_stopf(trim(subname)//'_total') - - end subroutine scatter_1darray_real - -!----------------------------------------------------------------------- -!BOP -! -! !IROUTINE: gather_1darray_real -! -! !INTERFACE: - subroutine gather_1darray_real (alocal, aglobal, clmlevel, missing) -! -! !DESCRIPTION: -! Wrapper routine to gather real 1d array -! -! !USES: -! -! !ARGUMENTS: - implicit none - real(r8), pointer :: alocal(:) ! local data (output) - real(r8), pointer :: aglobal(:) ! global data (input) - character(len=*) ,intent(in) :: clmlevel ! type of input grid - real(r8),optional,intent(in) :: missing ! missing value -! -! !REVISION HISTORY: -! Author: T Craig -! -! -! !LOCAL VARIABLES: -!EOP - integer :: n1,n2,lb1,ub1,lb2,ub2 ! indices - integer :: lsize ! size of local array - type(mct_aVect) :: AVi, AVo ! attribute vectors - real(r8),pointer :: adata(:) ! temporary data array - integer ,pointer :: mvect(:) ! local array for mask - character(len=256) :: rstring ! real field list string - character(len=256) :: istring ! int field list string - character(len=8) :: fname ! arbitrary field name - type(mct_gsMap),pointer :: gsmap ! global seg map - character(len=*),parameter :: subname = 'gather_1darray_real' - -!----------------------------------------------------------------------- - - call t_startf(trim(subname)//'_total') - call get_clmlevel_gsmap(clmlevel,gsmap) - - lsize = size(alocal,dim=1) - lb1 = lbound(alocal,dim=1) - ub1 = ubound(alocal,dim=1) - lb2 = 1 - ub2 = 1 - - rstring = "" - istring = "" - - if (present(missing)) then - istring = "mask" - endif - - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - if (len_trim(rstring) == 0) then - rstring = trim(fname) - else - rstring = trim(rstring)//":"//trim(fname) - endif - enddo - - if (masterproc .and. debug > 2) then - write(iulog,*) trim(subname),' strings:',trim(rstring),' ',trim(istring) - endif - - call mct_aVect_init(AVi,rList=trim(rstring),iList=trim(istring),lsize=lsize) - - if (debug > 1) call t_startf(trim(subname)//'_pack') - allocate(adata(lsize)) - do n2 = lb2,ub2 - do n1 = lb1,ub1 - adata(n1-lb1+1) = alocal(n1) - enddo - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_importRattr(AVi,trim(fname),adata,lsize) - enddo - deallocate(adata) - - if (present(missing)) then - allocate(mvect(lsize)) - do n1 = lb1,ub1 - mvect(n1-lb1+1) = 1 - enddo - call mct_aVect_importIattr(AVi,"mask",mvect,lsize) - deallocate(mvect) - endif - - if (debug > 1) call t_stopf(trim(subname)//'_pack') - if (debug > 1) call t_startf(trim(subname)//'_gath') - - if (present(missing)) then -! tcx wait for update in mct, then get rid of "mask" -! call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom, missing = missing) - call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom) - else - call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom) - endif - - if (debug > 1) call t_stopf(trim(subname)//'_gath') - if (debug > 1) call t_startf(trim(subname)//'_upck') - - if (masterproc) then - lsize = size(aglobal,dim=1) - allocate(adata(lsize)) - do n2 = lb2,ub2 - write(fname,'(a1,i3.3)') 'f',n2-lb2+1 - call mct_aVect_exportRattr(AVo,trim(fname),adata,lsize) - aglobal(1:lsize) = adata(1:lsize) - enddo - deallocate(adata) - if (present(missing)) then - allocate(mvect(lsize)) - call mct_aVect_exportIattr(AVo,"mask",mvect,lsize) - do n1 = 1,lsize - if (mvect(n1) == 0) then - do n2 = lb2,ub2 - aglobal(n1) = missing - enddo - endif - enddo - deallocate(mvect) - endif - endif - - if (debug > 1) call t_stopf(trim(subname)//'_upck') - - if (masterproc) then - call mct_aVect_clean(AVo) - endif - - call mct_aVect_clean(AVi) - - call t_stopf(trim(subname)//'_total') - - end subroutine gather_1darray_real + end subroutine gather_data_to_master end module spmdGathScatMod From abade4c922c502a5d531ad4e7737ae089b8df0dd Mon Sep 17 00:00:00 2001 From: mvertens Date: Sun, 20 Jun 2021 15:56:06 -0600 Subject: [PATCH 09/63] removed spmdGathScatMod.F90 and put the contents in decompInitMod.F90 --- src/cpl/mct/FireDataBaseType.F90 | 24 +- src/cpl/mct/UrbanTimeVarType.F90 | 2 +- src/cpl/mct/ch4FInundatedStreamType.F90 | 2 +- src/cpl/mct/laiStreamMod.F90 | 2 +- src/cpl/mct/ndepStreamMod.F90 | 4 +- src/main/decompInitMod.F90 | 291 +++++++++++++----------- src/main/decompMod.F90 | 9 +- src/utils/spmdGathScatMod.F90 | 132 ----------- 8 files changed, 186 insertions(+), 280 deletions(-) delete mode 100644 src/utils/spmdGathScatMod.F90 diff --git a/src/cpl/mct/FireDataBaseType.F90 b/src/cpl/mct/FireDataBaseType.F90 index e4bbe48d10..f8fd36e21e 100644 --- a/src/cpl/mct/FireDataBaseType.F90 +++ b/src/cpl/mct/FireDataBaseType.F90 @@ -7,19 +7,19 @@ module FireDataBaseType ! module for handling of fire data ! ! !USES: - use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_CL - use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create, shr_strdata_print - use shr_strdata_mod , only : shr_strdata_advance - use shr_log_mod , only : errMsg => shr_log_errMsg - use clm_varctl , only : iulog, inst_name - use spmdMod , only : masterproc, mpicom, comp_id - use fileutils , only : getavu, relavu - use spmdGathScatMod , only : gsmap_global - use domainMod , only : ldomain - use abortutils , only : endrun - use decompMod , only : bounds_type + use shr_kind_mod , only : r8 => shr_kind_r8, CL => shr_kind_CL + use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create, shr_strdata_print + use shr_strdata_mod , only : shr_strdata_advance + use shr_log_mod , only : errMsg => shr_log_errMsg + use clm_varctl , only : iulog, inst_name + use spmdMod , only : masterproc, mpicom, comp_id + use fileutils , only : getavu, relavu + use decompMod , only : gsmap_global + use domainMod , only : ldomain + use abortutils , only : endrun + use decompMod , only : bounds_type + use FireMethodType , only : fire_method_type use mct_mod - use FireMethodType , only : fire_method_type ! implicit none private diff --git a/src/cpl/mct/UrbanTimeVarType.F90 b/src/cpl/mct/UrbanTimeVarType.F90 index d6606afce3..0b779dd727 100644 --- a/src/cpl/mct/UrbanTimeVarType.F90 +++ b/src/cpl/mct/UrbanTimeVarType.F90 @@ -100,7 +100,7 @@ subroutine urbantv_init(this, bounds, NLFilename) use shr_mpi_mod , only : shr_mpi_bcast use shr_string_mod , only : shr_string_listAppend use shr_strdata_mod , only : shr_strdata_create, shr_strdata_print - use spmdGathScatMod , only : gsmap_global + use decompMod , only : gsmap_global use domainMod , only : ldomain use shr_infnan_mod , only : nan => shr_infnan_nan, assignment(=) use landunit_varcon , only : isturb_TBD, isturb_HD, isturb_MD diff --git a/src/cpl/mct/ch4FInundatedStreamType.F90 b/src/cpl/mct/ch4FInundatedStreamType.F90 index 1fa385865b..18170152ee 100644 --- a/src/cpl/mct/ch4FInundatedStreamType.F90 +++ b/src/cpl/mct/ch4FInundatedStreamType.F90 @@ -71,7 +71,7 @@ subroutine Init(this, bounds, NLFilename) use ndepStreamMod , only : clm_domain_mct use domainMod , only : ldomain use decompMod , only : bounds_type - use spmdGathScatMod , only : gsmap_global + use decompMod , only : gsmap_global use mct_mod , only : mct_ggrid, mct_avect_indexra use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance diff --git a/src/cpl/mct/laiStreamMod.F90 b/src/cpl/mct/laiStreamMod.F90 index c6e55d7c99..ea35e147a3 100644 --- a/src/cpl/mct/laiStreamMod.F90 +++ b/src/cpl/mct/laiStreamMod.F90 @@ -53,7 +53,7 @@ subroutine lai_init(bounds) use ndepStreamMod , only : clm_domain_mct use histFileMod , only : hist_addfld1d use domainMod , only : ldomain - use spmdGathScatMod , only : gsmap_global + use decompMod , only : gsmap_global use controlMod , only : NLFilename ! ! !ARGUMENTS: diff --git a/src/cpl/mct/ndepStreamMod.F90 b/src/cpl/mct/ndepStreamMod.F90 index fdce01e457..1a8e2b7390 100644 --- a/src/cpl/mct/ndepStreamMod.F90 +++ b/src/cpl/mct/ndepStreamMod.F90 @@ -56,7 +56,7 @@ subroutine ndep_init(bounds, NLFilename) use shr_nl_mod , only : shr_nl_find_group_name use shr_log_mod , only : errMsg => shr_log_errMsg use shr_mpi_mod , only : shr_mpi_bcast - use spmdGathScatMod , only : gsmap_global + use decompMod , only : gsmap_global ! ! arguments implicit none @@ -270,7 +270,7 @@ subroutine clm_domain_mct(bounds, dom_clm, nlevels) use mct_mod , only : mct_gsMap_orderedPoints, mct_gGrid_importIAttr use mct_mod , only : mct_gGrid_importRAttr use mct_mod , only : mct_gsMap - use spmdGathScatMod , only : gsmap_global + use decompMod , only : gsmap_global use lnd_set_decomp_and_domain , only : gsMap_lnd2Dsoi_gdc2glo implicit none ! diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index b664be0936..f808bcf8b3 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -6,36 +6,35 @@ module decompInitMod ! be mapped back to atmosphere physics chunks. ! ! !USES: - use shr_kind_mod , only : r8 => shr_kind_r8 - use shr_sys_mod , only : shr_sys_flush - use shr_log_mod , only : errMsg => shr_log_errMsg - use spmdMod , only : masterproc, iam, npes, mpicom - use abortutils , only : endrun - use clm_varctl , only : iulog, use_fates - use LandunitType , only : lun - use ColumnType , only : col - use PatchType , only : patch - use glcBehaviorMod , only : glc_behavior_type - use FatesInterfaceTypesMod, only : fates_maxElementsPerSite + use shr_kind_mod , only : r8 => shr_kind_r8 + use shr_sys_mod , only : shr_sys_flush + use shr_log_mod , only : errMsg => shr_log_errMsg + use spmdMod , only : masterproc, iam, npes, mpicom + use abortutils , only : endrun + use clm_varctl , only : iulog, use_fates + use LandunitType , only : lun + use ColumnType , only : col + use PatchType , only : patch + use glcBehaviorMod , only : glc_behavior_type + use FatesInterfaceTypesMod , only : fates_maxElementsPerSite use decompMod - ! use decompMod , only : gindex_global, gindex_grc, gindex_lun, gindex_col - ! use decompMod , only : gindex_patch, gindex_cohort, gindexlnd2Dsoi - ! use decompMod , only : nglob_x, nglob_y - ! use decompMod , only : clumps, ldecomp - ! use decompMod , only : get_proc_clumps, get_proc_total, get_proc_global ! - ! !PUBLIC TYPES: implicit none private ! + ! !PUBLIC TYPES: + ! ! !PUBLIC MEMBER FUNCTIONS: public decompInit_lnd ! initializes lnd grid decomposition into clumps and processors public decompInit_clumps ! initializes atm grid decomposition into clumps public decompInit_glcp ! initializes g,l,c,p decomp info ! + ! !PRIVATE MEMBER FUNCTIONS: + private :: set_subgrid_start + private :: set_gsmap_global + ! ! !PRIVATE TYPES: integer, pointer :: lcid(:) ! temporary for setting ldecomp - character(len=*), parameter, private :: sourcefile = & __FILE__ !------------------------------------------------------------------------------ @@ -53,7 +52,6 @@ subroutine decompInit_lnd(lni,lnj,amask) ! !USES: use clm_varctl , only : nsegspc use decompMod , only : nglob_x, nglob_y, gindex_global - use spmdGathScatMod , only : gsmap_global_init ! ! !ARGUMENTS: implicit none @@ -297,8 +295,8 @@ subroutine decompInit_lnd(lni,lnj,amask) gindex_global(n-begg+1) = ldecomp%gdc2glo(n) enddo - ! Initialize gsmap_global - module variable in spmdGathScatMod - call gsmap_global_init(gindex_global) + ! Initialize gsmap_global + call set_gsmap_global(gindex_global) ! Diagnostic output if (masterproc) then @@ -310,7 +308,6 @@ subroutine decompInit_lnd(lni,lnj,amask) write(iulog,*)' clumps per process = ',clump_pproc write(iulog,*) end if - call shr_sys_flush(iulog) end subroutine decompInit_lnd @@ -335,7 +332,7 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) ! !LOCAL VARIABLES: integer :: ln,an ! indices integer :: i,g,l,k ! indices - integer :: cid,pid ! indices + integer :: cid ! indices integer :: n,m,np ! indices integer :: anumg ! lnd num gridcells integer :: icells ! temporary @@ -487,46 +484,44 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! ! !USES: use spmdMod - use subgridMod , only : subgrid_get_gcellinfo - use spmdGathScatMod , only : gather_data_to_master, scatter_data_from_master + use subgridMod, only : subgrid_get_gcellinfo ! ! !ARGUMENTS: - integer , intent(in) :: lni,lnj ! land domain global size - type(glc_behavior_type), intent(in) :: glc_behavior + integer , intent(in) :: lni,lnj ! land domain global size + type(glc_behavior_type) , intent(in) :: glc_behavior ! ! !LOCAL VARIABLES: - integer :: gi,li,ci,pi,coi ! indices - integer :: i,g,l,n,np ! indices - integer :: cid,pid ! indices - integer :: begg,endg ! beg,end gridcells - integer :: begl,endl ! beg,end landunits - integer :: begc,endc ! beg,end columns - integer :: begp,endp ! beg,end patches - integer :: begCohort,endCohort! beg,end cohorts - integer :: numg ! total number of gridcells across all processors - integer :: numl ! total number of landunits across all processors - integer :: numc ! total number of columns across all processors - integer :: nump ! total number of patches across all processors - integer :: numCohort ! fates cohorts - integer :: ilunits ! temporary - integer :: icols ! temporary - integer :: ipatches ! temporary - integer :: icohorts ! temporary - integer :: ier ! error code - integer :: npmin,npmax,npint ! do loop values for printing - integer :: clmin,clmax ! do loop values for printing - integer :: ng ! number of global gridcells - integer :: val1, val2 ! temporaries + integer :: gi,li,ci,pi,coi ! indices + integer :: i,l,n,np ! indices + integer :: cid,pid ! indices + integer :: begg,endg ! beg,end gridcells + integer :: begl,endl ! beg,end landunits + integer :: begc,endc ! beg,end columns + integer :: begp,endp ! beg,end patches + integer :: begCohort,endCohort ! beg,end cohorts + integer :: numg ! total number of land gridcells across all processors + integer :: numl ! total number of landunits across all processors + integer :: numc ! total number of columns across all processors + integer :: nump ! total number of patches across all processors + integer :: numCohort ! fates cohorts + integer :: ilunits ! temporary + integer :: icols ! temporary + integer :: ipatches ! temporary + integer :: icohorts ! temporary + integer :: ier ! error code + integer :: npmin,npmax,npint ! do loop values for printing + integer :: clmin,clmax ! do loop values for printing + integer :: ng ! number of global gridcells integer, pointer :: gindex_global(:) ! global index - integer, pointer :: arrayglob(:) ! temporaroy - integer, pointer :: gstart(:), gcount(:) - integer, pointer :: lstart(:), lcount(:) - integer, pointer :: cstart(:), ccount(:) - integer, pointer :: pstart(:), pcount(:) + integer, pointer :: array_glob(:) ! temporaroy + integer, pointer :: gstart(:), gcount(:) + integer, pointer :: lstart(:), lcount(:) + integer, pointer :: cstart(:), ccount(:) + integer, pointer :: pstart(:), pcount(:) integer, pointer :: coStart(:), coCount(:) integer, pointer :: ioff(:) type(bounds_type):: bounds - integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max + integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max character(len=32), parameter :: subname = 'decompInit_glcp' !------------------------------------------------------------------------------ @@ -547,7 +542,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) allocate(ccount(begg:endg)) ; ccount(:) = 0 allocate(pcount(begg:endg)) ; pcount(:) = 0 allocate(coCount(begg:endg)); coCount(:) = 0 - allocate(ioff(begg:endg)) ; ioff(:) = 0 ! Determine gcount, lcount, ccount and pcount do gi = begg,endg @@ -571,32 +565,20 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! --------------------------------------- ng = nglob_x * nglob_y - allocate(arrayglob(ng)) - call shr_sys_flush(6) + allocate(array_glob(ng)) + allocate(ioff(begg:endg)); ioff(:) = 0 ! --------------------------------------- ! Gridcell gindex (compressed, no ocean points) ! --------------------------------------- - call shr_sys_flush(6) - arrayglob(:) = 0 - call gather_data_to_master(gcount, arrayglob) - if (masterproc) then - val1 = arrayglob(1) - arrayglob(1) = 1 - do n = 2,ng - val2 = arrayglob(n) - arrayglob(n) = arrayglob(n-1) + val1 - val1 = val2 - enddo - endif allocate(gstart(begg:endg)) ; gstart(:) = 0 - call scatter_data_from_master(arrayglob, gstart) + call set_subgrid_start(gsmap_global, array_glob, gcount, gstart) allocate(gindex_grc(endg-begg+1)) i = 0 do gi = begg,endg if (gcount(gi) < 1) then - write(iulog,*) 'decompInit_glcp warning count g ',iam,g,gcount(g) + write(iulog,*) 'decompInit_glcp warning count g ',iam,gi,gcount(gi) endif do l = 1,gcount(gi) i = i + 1 @@ -604,26 +586,15 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) enddo enddo deallocate(gstart) - call shr_sys_flush(6) + deallocate(gcount) ! --------------------------------------- ! Landunit gindex ! --------------------------------------- ! lstart for gridcell (n) is the total number of the landunits over gridcells 1->n-1 - arrayglob(:) = 0 - call gather_data_to_master(lcount, arrayglob) - if (masterproc) then - val1 = arrayglob(1) - arrayglob(1) = 1 - do n = 2,ng - val2 = arrayglob(n) - arrayglob(n) = arrayglob(n-1) + val1 - val1 = val2 - enddo - endif allocate(lstart(begg:endg)) ; lstart(:) = 0 - call scatter_data_from_master(arrayglob, lstart) + call set_subgrid_start(gsmap_global, array_glob, lcount, lstart) allocate(gindex_lun(endl-begl+1)) ioff(:) = 0 do li = begl,endl @@ -637,24 +608,14 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! check that this is less than [lstart(gi) + lcount(gi)] enddo deallocate(lstart) + deallocate(lcount) ! --------------------------------------- ! Column gindex ! --------------------------------------- - arrayglob(:) = 0 - call gather_data_to_master(ccount, arrayglob) - if (masterproc) then - val1 = arrayglob(1) - arrayglob(1) = 1 - do n = 2,ng - val2 = arrayglob(n) - arrayglob(n) = arrayglob(n-1) + val1 - val1 = val2 - enddo - endif allocate(cstart(begg:endg)) ; cstart(:) = 0 - call scatter_data_from_master(arrayglob, cstart) + call set_subgrid_start(gsmap_global, array_glob, ccount, cstart) allocate(gindex_col(endc-begc+1)) ioff(:) = 0 do ci = begc,endc @@ -664,24 +625,14 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! check that this is less than [cstart(gi) + ccount(gi)] enddo deallocate(cstart) + deallocate(ccount) ! --------------------------------------- ! PATCH gindex ! --------------------------------------- - arrayglob(:) = 0 - call gather_data_to_master(pcount, arrayglob) - if (masterproc) then - val1 = arrayglob(1) - arrayglob(1) = 1 - do n = 2,ng - val2 = arrayglob(n) - arrayglob(n) = arrayglob(n-1) + val1 - val1 = val2 - enddo - endif allocate(pstart(begg:endg)) ; pstart(:) = 0 - call scatter_data_from_master(arrayglob, pstart) + call set_subgrid_start(gsmap_global, array_glob, pcount, pstart) allocate(gindex_patch(endp-begp+1)) ioff(:) = 0 do pi = begp,endp @@ -690,6 +641,7 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ioff(gi) = ioff(gi) + 1 ! check that this is less than [pstart(gi) + pcount(gi)] enddo + deallocate(pcount) deallocate(pstart) ! --------------------------------------- @@ -697,19 +649,8 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! --------------------------------------- if ( use_fates ) then - arrayglob(:) = 0 - call gather_data_to_master(coCount, arrayglob) - if (masterproc) then - val1 = arrayglob(1) - arrayglob(1) = 1 - do n = 2,ng - val2 = arrayglob(n) - arrayglob(n) = arrayglob(n-1) + val1 - val1 = val2 - enddo - endif allocate(coStart(begg:endg)); coStart(:) = 0 - call scatter_data_from_master(arrayglob, coStart) + call set_subgrid_start(gsmap_global, array_glob, coCount, coStart) allocate(gindex_cohort(endCohort-begCohort+1)) ioff(:) = 0 gi = begg @@ -719,6 +660,7 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) if ( mod(coi, fates_maxElementsPerSite ) == 0 ) gi = gi + 1 enddo deallocate(coStart) + deallocate(coCount) endif ! --------------------------------------- @@ -726,14 +668,7 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! --------------------------------------- ! Deallocate start/count arrays - deallocate(arrayglob) - deallocate(gcount) - deallocate(lcount) - deallocate(ccount) - deallocate(pcount) - if ( use_fates ) then - deallocate(coCount) - endif + deallocate(array_glob) deallocate(ioff) ! Diagnostic output @@ -842,4 +777,102 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) end subroutine decompInit_glcp + !------------------------------------------------------------------------------ + subroutine set_subgrid_start(gsmap, array_glob, count, start) + ! !USES: + ! + use mct_mod , only : mct_aVect, mct_gsMap + use mct_mod , only : mct_aVect_init, mct_aVect_importIattr, mct_aVect_scatter + use mct_mod , only : mct_aVect_gather, mct_aVect_exportIattr, mct_aVect_clean + use mct_mod , only : mct_aVect_exportRattr, mct_aVect_importRattr + + ! !ARGUMENTS: + type(mct_gsmap) :: gsmap ! global gsmap + integer, pointer :: array_glob(:) ! input + integer, pointer :: count(:) ! input + integer, pointer :: start(:) ! output + + ! !LOCAL VARIABLES: + integer :: n,lb,ub ! indices + integer :: lsize ! size of local array + type(mct_aVect) :: AVi, AVo ! attribute vectors + integer ,pointer :: adata(:) ! temporary data array + integer :: val1, val2 ! temporaries + !----------------------------------------------------------------------- + + ! Initialize array_glob + array_glob(:) = 0 + + ! Gather count to master and place the data in arrray_global + lsize = size(count, dim=1) + lb = lbound(count, dim=1); ub = ubound(count, dim=1) + call mct_aVect_init(AVi, rList="", iList='f1', lsize=lsize) + allocate(adata(lsize)) + do n = lb,ub + adata(n-lb+1) = count(n) + enddo + call mct_aVect_importIattr(AVi, 'f1', adata, lsize) + deallocate(adata) + call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom) + if (masterproc) then + lsize = size(array_glob,dim=1) + call mct_aVect_exportIattr(AVo, 'f1', array_glob, lsize) + call mct_aVect_clean(AVo) + endif + call mct_aVect_clean(AVi) + + ! Create global start array in array_glob + if (masterproc) then + val1 = array_glob(1) + array_glob(1) = 1 + do n = 2,size(array_glob, dim=1) + val2 = array_glob(n) + array_glob(n) = array_glob(n-1) + val1 + val1 = val2 + enddo + endif + + ! Now scatter start array (i.e. array_glob from master) + if (masterproc) then + call mct_aVect_init(AVi, rList="", iList="f1", lsize=lsize) + call mct_aVect_importIattr(AVi, 'f1', array_glob, size(array_glob,dim=1)) + endif + call mct_aVect_scatter(AVi, AVo, gsmap, 0, mpicom) + lsize = size(start, dim=1) + allocate(adata(lsize)) + call mct_aVect_exportIattr(AVo, 'f1', adata, lsize) + lb = lbound(start, dim=1); ub = ubound(start, dim=1) + do n = lb,ub + start(n) = adata(n-lb+1) + enddo + deallocate(adata) + if (masterproc) then + call mct_aVect_clean(AVi) + endif + call mct_aVect_clean(AVo) + + end subroutine set_subgrid_start + + !------------------------------------------------------------------------------ + subroutine set_gsmap_global(gindex_global) + ! + ! !USES: + use spmdMod , only : mpicom, comp_id + use decompMod , only : nglob_x, nglob_y + use mct_mod , only : mct_gsMap_init + ! + ! !ARGUMENTS: + integer, intent(in) :: gindex_global(:) + ! + ! !LOCAL VARIABLES: + integer :: lsize, gsize + !----------------------------------------------------------------------- + + lsize = size(gindex_global) + gsize = nglob_x * nglob_y + + call mct_gsMap_init(gsmap_global, gindex_global, mpicom, comp_id, lsize, gsize) + + end subroutine set_gsmap_global + end module decompInitMod diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index 2b342d5b59..ba1b13dfc1 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -11,9 +11,14 @@ module decompMod use shr_sys_mod , only : shr_sys_abort use clm_varctl , only : iulog use clm_varcon , only : grlnd, nameg, namel, namec, namep, nameCohort + use mct_mod , only : mct_gsMap ! ! !PUBLIC TYPES: implicit none + + ! mct data type still needed for determining subgrid gindex + type(mct_gsMap), target, public :: gsmap_global ! global seg map + integer, public :: clump_pproc ! number of clumps per MPI process ! Define possible bounds subgrid levels @@ -98,8 +103,8 @@ module decompMod type(clump_type),public, allocatable :: clumps(:) !---global information on each pe - !--- glo = 1d global sn ordered - !--- gdc = 1d global dc ordered compressed + !--- glo = 1d global sn ordered including ocean points + !--- gdc = 1d global decomposition compressed, not including ocean points type decomp_type integer,pointer :: gdc2glo(:) ! 1d gdc to 1d glo end type decomp_type diff --git a/src/utils/spmdGathScatMod.F90 b/src/utils/spmdGathScatMod.F90 deleted file mode 100644 index 95d446b49b..0000000000 --- a/src/utils/spmdGathScatMod.F90 +++ /dev/null @@ -1,132 +0,0 @@ -module spmdGathScatMod - - !----------------------------------------------------------------------- - ! !DESCRIPTION: - ! Perform SPMD gather and scatter operations. - ! - ! !USES: - use shr_kind_mod , only : r8 => shr_kind_r8 - use spmdMod , only : masterproc, mpicom - use mct_mod , only : mct_aVect, mct_gsMap - use mct_mod , only : mct_aVect_init, mct_aVect_importIattr, mct_aVect_scatter - use mct_mod , only : mct_aVect_gather, mct_aVect_exportIattr, mct_aVect_clean - use mct_mod , only : mct_aVect_exportRattr, mct_aVect_importRattr - use abortutils , only : endrun - use clm_varctl , only : iulog - ! - ! !PUBLIC TYPES: - implicit none - private - ! - ! !PUBLIC MEMBER FUNCTIONS: - public :: scatter_data_from_master - public :: gather_data_to_master - public :: gsmap_global_init - - type(mct_gsMap), target, public :: gsmap_global ! global seg map - -!----------------------------------------------------------------------- -contains -!----------------------------------------------------------------------- - - subroutine gsmap_global_init(gindex_global) - ! - ! !USES: - use spmdMod , only : mpicom, comp_id - use decompMod , only : nglob_x, nglob_y - use mct_mod , only : mct_gsMap_init - ! - ! !ARGUMENTS: - integer, intent(in) :: gindex_global(:) - ! - ! !LOCAL VARIABLES: - integer :: lsize, gsize - !----------------------------------------------------------------------- - - lsize = size(gindex_global) - gsize = nglob_x * nglob_y - - call mct_gsMap_init(gsmap_global, gindex_global, mpicom, comp_id, lsize, gsize) - - end subroutine gsmap_global_init - - !----------------------------------------------------------------------- - subroutine scatter_data_from_master (aglobal, alocal) - ! - ! !DESCRIPTION: - ! Wrapper routine to scatter int 1d array - ! - ! !USES: - ! - ! !ARGUMENTS: - integer , pointer :: aglobal(:) ! global data (input) - integer , pointer :: alocal(:) ! local data (output) - - ! !LOCAL VARIABLES: - integer :: n,lb,ub ! indices - integer :: lsize ! size of local array - type(mct_aVect) :: AVi, AVo ! attribute vectors - integer ,pointer :: adata(:) ! local data array - character(len=*),parameter :: subname = 'scatter_1darray_int' - !----------------------------------------------------------------------- - - if (masterproc) then - call mct_aVect_init(AVi, rList="", iList="f1", lsize=lsize) - call mct_aVect_importIattr(AVi, 'f1', aglobal, size(aglobal,dim=1)) - endif - call mct_aVect_scatter(AVi, AVo, gsmap_global, 0, mpicom) - lsize = size(alocal, dim=1) - allocate(adata(lsize)) - call mct_aVect_exportIattr(AVo, 'f1', adata, lsize) - lb = lbound(alocal, dim=1); ub = ubound(alocal, dim=1) - do n = lb,ub - alocal(n) = adata(n-lb+1) - enddo - deallocate(adata) - if (masterproc) then - call mct_aVect_clean(AVi) - endif - call mct_aVect_clean(AVo) - - end subroutine scatter_data_from_master - - !----------------------------------------------------------------------- - subroutine gather_data_to_master (alocal, aglobal) - ! - ! !DESCRIPTION: - ! Wrapper routine to gather int 1d array - ! - ! !USES: - ! - ! !ARGUMENTS: - integer , pointer :: alocal(:) ! local data (output) - integer , pointer :: aglobal(:) ! global data (input) - ! - ! !LOCAL VARIABLES: - integer :: n,lb,ub ! indices - integer :: lsize ! size of local array - type(mct_aVect) :: AVi, AVo ! attribute vectors - integer ,pointer :: adata(:) ! temporary data array - character(len=*),parameter :: subname = 'gather_1darray_int' - !----------------------------------------------------------------------- - - lsize = size(alocal, dim=1) - lb = lbound(alocal, dim=1); ub = ubound(alocal, dim=1) - call mct_aVect_init(AVi, rList="", iList='f1', lsize=lsize) - allocate(adata(lsize)) - do n = lb,ub - adata(n-lb+1) = alocal(n) - enddo - call mct_aVect_importIattr(AVi, 'f1', adata, lsize) - deallocate(adata) - call mct_aVect_gather(AVi, AVo, gsmap_global, 0, mpicom) - if (masterproc) then - lsize = size(aglobal,dim=1) - call mct_aVect_exportIattr(AVo, 'f1', aglobal, lsize) - call mct_aVect_clean(AVo) - endif - call mct_aVect_clean(AVi) - - end subroutine gather_data_to_master - -end module spmdGathScatMod From 8f66e5c4f92befc79a8707517dd6e1ce0fe49382 Mon Sep 17 00:00:00 2001 From: mvertens Date: Sun, 20 Jun 2021 16:50:23 -0600 Subject: [PATCH 10/63] removed ldecomp type --- src/cpl/lilac/lnd_comp_esmf.F90 | 4 +- src/cpl/mct/lnd_comp_mct.F90 | 58 +++-------------- src/cpl/mct/lnd_set_decomp_and_domain.F90 | 7 +- src/cpl/mct/ndepStreamMod.F90 | 2 +- src/cpl/nuopc/lnd_comp_nuopc.F90 | 2 +- .../share_esmf/lnd_set_decomp_and_domain.F90 | 6 +- src/main/decompInitMod.F90 | 27 ++++---- src/main/decompMod.F90 | 65 ++++++++----------- src/main/histFileMod.F90 | 29 ++++++--- src/main/initGridCellsMod.F90 | 3 +- src/main/subgridRestMod.F90 | 27 +++++--- 11 files changed, 97 insertions(+), 133 deletions(-) diff --git a/src/cpl/lilac/lnd_comp_esmf.F90 b/src/cpl/lilac/lnd_comp_esmf.F90 index c01e454211..e9b9e7f407 100644 --- a/src/cpl/lilac/lnd_comp_esmf.F90 +++ b/src/cpl/lilac/lnd_comp_esmf.F90 @@ -24,7 +24,7 @@ module lnd_comp_esmf ! ctsm code use spmdMod , only : masterproc, spmd_init, mpicom - use decompMod , only : bounds_type, ldecomp, get_proc_bounds + use decompMod , only : bounds_type, get_proc_bounds use domainMod , only : ldomain use controlMod , only : control_setNL use clm_varorb , only : eccen, obliqr, lambm0, mvelpp @@ -342,7 +342,7 @@ subroutine lnd_init(comp, import_state, export_state, clock, rc) call ESMF_LogWrite(subname//"ctsm initialize1 done...", ESMF_LOGMSG_INFO) !---------------------- - ! Initialize decomposition (ldecomp) and domain (ldomain) types and generate land mesh + ! Initialize decomposition and domain (ldomain) types and generate land mesh !---------------------- ! TODO: generalize this so that a mask mesh is read in like for nuopc/cmeps ! For now set the meshfile_mask equal to the model_meshfile diff --git a/src/cpl/mct/lnd_comp_mct.F90 b/src/cpl/mct/lnd_comp_mct.F90 index f94a3544dc..8eb429f632 100644 --- a/src/cpl/mct/lnd_comp_mct.F90 +++ b/src/cpl/mct/lnd_comp_mct.F90 @@ -11,12 +11,11 @@ module lnd_comp_mct use shr_sys_mod , only : shr_sys_flush use shr_log_mod , only : errMsg => shr_log_errMsg use mct_mod , only : mct_avect, mct_gsmap, mct_gGrid - use decompmod , only : bounds_type, ldecomp + use decompmod , only : bounds_type use lnd_import_export, only : lnd_import, lnd_export ! ! !public member functions: implicit none - save private ! by default make data private ! ! !public member functions: @@ -25,7 +24,6 @@ module lnd_comp_mct public :: lnd_final_mct ! clm finalization/cleanup ! ! !private member functions: - private :: lnd_setgsmap_mct ! set the land model mct gs map private :: lnd_domain_mct ! set the land model domain information private :: lnd_handle_resume ! handle pause/resume signals from the coupler @@ -67,7 +65,8 @@ subroutine lnd_init_mct( EClock, cdata_l, x2l_l, l2x_l, NLFilename ) use spmdMod , only : masterproc, spmd_init use clm_varctl , only : nsrStartup, nsrContinue, nsrBranch use clm_cpl_indices , only : clm_cpl_indices_set - use mct_mod , only : mct_aVect_init, mct_aVect_zero, mct_gsMap_lsize + use mct_mod , only : mct_aVect_init, mct_aVect_zero, mct_gsMap, mct_gsMap_init + use decompMod , only : gindex_global use lnd_set_decomp_and_domain, only : lnd_set_decomp_and_domain_from_surfrd use ESMF ! @@ -84,6 +83,7 @@ subroutine lnd_init_mct( EClock, cdata_l, x2l_l, l2x_l, NLFilename ) type(mct_gGrid), pointer :: dom_l ! Land model domain type(seq_infodata_type), pointer :: infodata ! CESM driver level info data integer :: lsize ! size of attribute vector + integer :: gsize ! global size integer :: g,i,j ! indices integer :: dtime_sync ! coupling time-step from the input synchronization clock logical :: exists ! true if file exists @@ -208,7 +208,7 @@ subroutine lnd_init_mct( EClock, cdata_l, x2l_l, l2x_l, NLFilename ) ! Read namelists call initialize1(dtime=dtime_sync) - ! Initialize decomposition (ldecomp) and domain (ldomain) types + ! Initialize decomposition and domain (ldomain) type call lnd_set_decomp_and_domain_from_surfrd(noland, ni, nj) ! If no land then exit out of initialization @@ -227,8 +227,9 @@ subroutine lnd_init_mct( EClock, cdata_l, x2l_l, l2x_l, NLFilename ) ! Initialize clm gsMap, clm domain and clm attribute vectors call get_proc_bounds( bounds ) - call lnd_SetgsMap_mct( bounds, mpicom_lnd, LNDID, gsMap_lnd ) - lsize = mct_gsMap_lsize(gsMap_lnd, mpicom_lnd) + lsize = bounds%endg - bounds%begg + 1 + gsize = ldomain%ni * ldomain%nj + call mct_gsMap_init( gsMap_lnd, gindex_global, mpicom_lnd, LNDID, lsize, gsize ) call lnd_domain_mct( bounds, lsize, gsMap_lnd, dom_l ) call mct_aVect_init(x2l_l, rList=seq_flds_x2l_fields, lsize=lsize) call mct_aVect_zero(x2l_l) @@ -513,49 +514,6 @@ subroutine lnd_final_mct( EClock, cdata_l, x2l_l, l2x_l) ! fill this in end subroutine lnd_final_mct - !==================================================================================== - subroutine lnd_setgsmap_mct( bounds, mpicom_lnd, LNDID, gsMap_lnd ) - ! - ! !DESCRIPTION: - ! Set the MCT GS map for the land model - ! - ! !USES: - use shr_kind_mod , only : r8 => shr_kind_r8 - use domainMod , only : ldomain - use mct_mod , only : mct_gsMap, mct_gsMap_init - implicit none - ! - ! !ARGUMENTS: - type(bounds_type) , intent(in) :: bounds ! bounds - integer , intent(in) :: mpicom_lnd ! MPI communicator for the clm land model - integer , intent(in) :: LNDID ! Land model identifyer number - type(mct_gsMap) , intent(out) :: gsMap_lnd ! Resulting MCT GS map for the land model - ! - ! !LOCAL VARIABLES: - integer,allocatable :: gindex(:) ! Number the local grid points - integer :: i, j, n, gi ! Indices - integer :: lsize,gsize ! GS Map size - integer :: ier ! Error code - !--------------------------------------------------------------------------- - - ! Build the land grid numbering for MCT - ! NOTE: Numbering scheme is: West to East and South to North - ! starting at south pole. Should be the same as what's used in SCRIP - allocate(gindex(bounds%begg:bounds%endg),stat=ier) - - ! number the local grid - do n = bounds%begg, bounds%endg - gindex(n) = ldecomp%gdc2glo(n) - end do - lsize = bounds%endg - bounds%begg + 1 - gsize = ldomain%ni * ldomain%nj - - call mct_gsMap_init( gsMap_lnd, gindex, mpicom_lnd, LNDID, lsize, gsize ) - - deallocate(gindex) - - end subroutine lnd_SetgsMap_mct - !==================================================================================== subroutine lnd_domain_mct( bounds, lsize, gsMap_l, dom_l ) ! diff --git a/src/cpl/mct/lnd_set_decomp_and_domain.F90 b/src/cpl/mct/lnd_set_decomp_and_domain.F90 index 17682d01b4..97f452a86c 100644 --- a/src/cpl/mct/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/mct/lnd_set_decomp_and_domain.F90 @@ -26,7 +26,7 @@ module lnd_set_decomp_and_domain subroutine lnd_set_decomp_and_domain_from_surfrd(noland, ni, nj) - ! Initialize ldecomp and ldomain data types + ! Initialize ldomain data types use clm_varpar , only: nlevsoi use clm_varctl , only: fatmlndfrc, use_soil_moisture_streams @@ -63,7 +63,6 @@ subroutine lnd_set_decomp_and_domain_from_surfrd(noland, ni, nj) noland = .false. end if - ! Initialize ldecomp data type ! Determine ctsm gridcell decomposition and processor bounds for gridcells call decompInit_lnd(ni, nj, amask) deallocate(amask) @@ -296,7 +295,7 @@ subroutine decompInit_lnd3D(lni,lnj,lnk) ! as the 3rd dimesnion. ! ! !USES: - use decompMod, only : ldecomp, get_proc_bounds, bounds_type + use decompMod, only : gindex_global, get_proc_bounds, bounds_type use spmdMod , only : mpicom, comp_id use mct_mod , only : mct_gsMap_init, mct_gsmap_ngseg ! @@ -322,7 +321,7 @@ subroutine decompInit_lnd3D(lni,lnj,lnk) do k = 1, lnk do n = begg,endg m = (begg-1)*lnk + (k-1)*(endg-begg+1) + (n-begg+1) - gindex(m) = ldecomp%gdc2glo(n) + (k-1)*(lni*lnj) + gindex(m) = gindex_global(n-begg+1) + (k-1)*(lni*lnj) enddo enddo gsize = lni * lnj * lnk diff --git a/src/cpl/mct/ndepStreamMod.F90 b/src/cpl/mct/ndepStreamMod.F90 index 1a8e2b7390..47486708ae 100644 --- a/src/cpl/mct/ndepStreamMod.F90 +++ b/src/cpl/mct/ndepStreamMod.F90 @@ -14,7 +14,7 @@ module ndepStreamMod use spmdMod , only: mpicom, masterproc, comp_id, iam use clm_varctl , only: iulog, inst_name use abortutils , only: endrun - use decompMod , only: bounds_type, ldecomp + use decompMod , only: bounds_type use domainMod , only: ldomain ! !PUBLIC TYPES: diff --git a/src/cpl/nuopc/lnd_comp_nuopc.F90 b/src/cpl/nuopc/lnd_comp_nuopc.F90 index 19c7748297..d4bf072402 100644 --- a/src/cpl/nuopc/lnd_comp_nuopc.F90 +++ b/src/cpl/nuopc/lnd_comp_nuopc.F90 @@ -321,7 +321,7 @@ subroutine InitializeRealize(gcomp, importState, exportState, clock, rc) use ESMF , only : ESMF_VM, ESMF_VMGet use clm_instMod , only : lnd2atm_inst, lnd2glc_inst, water_inst use domainMod , only : ldomain - use decompMod , only : ldecomp, bounds_type, get_proc_bounds + use decompMod , only : bounds_type, get_proc_bounds use lnd_set_decomp_and_domain , only : lnd_set_decomp_and_domain_from_readmesh use lnd_set_decomp_and_domain , only : lnd_set_mesh_for_single_column use lnd_set_decomp_and_domain , only : lnd_set_decomp_and_domain_for_single_column diff --git a/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 b/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 index 40f43e7f4d..c881282132 100644 --- a/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/share_esmf/lnd_set_decomp_and_domain.F90 @@ -37,7 +37,7 @@ subroutine lnd_set_decomp_and_domain_from_readmesh(driver, vm, meshfile_lnd, mes use decompInitMod , only : decompInit_lnd use domainMod , only : ldomain, domain_init - use decompMod , only : ldecomp, bounds_type, get_proc_bounds + use decompMod , only : gindex_global, bounds_type, get_proc_bounds use clm_varpar , only : nlevsoi use clm_varctl , only : use_soil_moisture_streams @@ -134,7 +134,7 @@ subroutine lnd_set_decomp_and_domain_from_readmesh(driver, vm, meshfile_lnd, mes allocate(gindex_lnd(nlnd)) do g = begg, endg n = 1 + (g - begg) - gindex_lnd(n) = ldecomp%gdc2glo(g) + gindex_lnd(n) = gindex_global(g-begg+1) end do ! Initialize domain data structure @@ -241,7 +241,7 @@ subroutine lnd_set_decomp_and_domain_for_single_column(scol_lon, scol_lat, scol_ type(bounds_type) :: bounds ! bounds !------------------------------------------------------------------------------- - ! Determine ldecomp and ldomain + ! Determine decomp and ldomain call decompInit_lnd(lni=1, lnj=1, amask=(/1/)) ! Initialize processor bounds diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index f808bcf8b3..c75dd067d9 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -34,7 +34,7 @@ module decompInitMod private :: set_gsmap_global ! ! !PRIVATE TYPES: - integer, pointer :: lcid(:) ! temporary for setting ldecomp + integer, pointer :: lcid(:) ! temporary for setting decomposition character(len=*), parameter, private :: sourcefile = & __FILE__ !------------------------------------------------------------------------------ @@ -71,6 +71,7 @@ subroutine decompInit_lnd(lni,lnj,amask) integer :: ier ! error code integer :: begg, endg ! beg and end gridcells integer, pointer :: clumpcnt(:) ! clump index counter + integer, allocatable :: gdc2glo(:)! used to create gindex_global type(bounds_type) :: bounds ! contains subgrid bounds data !------------------------------------------------------------------------------ @@ -238,24 +239,23 @@ subroutine decompInit_lnd(lni,lnj,amask) end if enddo - ! Set ldecomp + ! Set gindex_global - allocate(ldecomp%gdc2glo(numg), stat=ier) + allocate(gdc2glo(numg), stat=ier) if (ier /= 0) then - write(iulog,*) 'decompInit_lnd(): allocation error1 for ldecomp, etc' + write(iulog,*) 'decompInit_lnd(): allocation error1 for gdc2glo , etc' call endrun(msg=errMsg(sourcefile, __LINE__)) end if + gdc2glo(:) = 0 allocate(clumpcnt(nclumps),stat=ier) if (ier /= 0) then write(iulog,*) 'decompInit_lnd(): allocation error1 for clumpcnt' call endrun(msg=errMsg(sourcefile, __LINE__)) end if - - ldecomp%gdc2glo(:) = 0 - ag = 0 - + ! clumpcnt is the start gdc index of each clump + ag = 0 clumpcnt = 0 ag = 1 do pid = 0,npes-1 @@ -276,14 +276,12 @@ subroutine decompInit_lnd(lni,lnj,amask) cid = lcid(an) if (cid > 0) then ag = clumpcnt(cid) - ldecomp%gdc2glo(ag) = an + gdc2glo(ag) = an clumpcnt(cid) = clumpcnt(cid) + 1 end if end do end do - deallocate(clumpcnt) - ! Initialize global gindex (non-compressed, includes ocean points) ! Note that gindex_global goes from (1:endg-begg_1) nglob_x = lni ! decompMod module variables @@ -292,9 +290,12 @@ subroutine decompInit_lnd(lni,lnj,amask) begg = bounds%begg; endg = bounds%endg allocate(gindex_global(endg-begg+1)) do n = begg,endg - gindex_global(n-begg+1) = ldecomp%gdc2glo(n) + gindex_global(n-begg+1) = gdc2glo(n) enddo + deallocate(clumpcnt) + deallocate(gdc2glo) + ! Initialize gsmap_global call set_gsmap_global(gindex_global) @@ -369,7 +370,7 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) allvecg= 0 allvecl= 0 do anumg = begg,endg - an = ldecomp%gdc2glo(anumg) + an = gindex_global(anumg - begg + 1) cid = lcid(an) ln = anumg call subgrid_get_gcellinfo (ln, nlunits=ilunits, ncols=icols, npatches=ipatches, & diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index ba1b13dfc1..644de9ea14 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -48,38 +48,37 @@ module decompMod ! !PRIVATE TYPES: private ! (now mostly public for decompinitmod) - integer,public :: nclumps ! total number of clumps across all processors - integer,public :: numg ! total number of gridcells on all procs - integer,public :: numl ! total number of landunits on all procs - integer,public :: numc ! total number of columns on all procs - integer,public :: nump ! total number of patchs on all procs - integer,public :: numCohort ! total number of fates cohorts on all procs + integer,public :: nclumps ! total number of clumps across all processors + integer,public :: numg ! total number of gridcells on all procs + integer,public :: numl ! total number of landunits on all procs + integer,public :: numc ! total number of columns on all procs + integer,public :: nump ! total number of patchs on all procs + integer,public :: numCohort ! total number of fates cohorts on all procs type bounds_type - integer :: begg, endg ! beginning and ending gridcell index - integer :: begl, endl ! beginning and ending landunit index - integer :: begc, endc ! beginning and ending column index - integer :: begp, endp ! beginning and ending patch index + integer :: begg, endg ! beginning and ending gridcell index + integer :: begl, endl ! beginning and ending landunit index + integer :: begc, endc ! beginning and ending column index + integer :: begp, endp ! beginning and ending patch index integer :: begCohort, endCohort ! beginning and ending cohort indices - - integer :: level ! whether defined on the proc or clump level - integer :: clump_index ! if defined on the clump level, this gives the clump index + integer :: level ! whether defined on the proc or clump level + integer :: clump_index ! if defined on the clump level, this gives the clump index end type bounds_type - public bounds_type + public :: bounds_type !---global information on each pe type processor_type - integer :: nclumps ! number of clumps for processor_type iam - integer,pointer :: cid(:) ! clump indices - integer :: ncells ! number of gridcells in proc - integer :: nlunits ! number of landunits in proc - integer :: ncols ! number of columns in proc - integer :: npatches ! number of patchs in proc - integer :: nCohorts ! number of cohorts in proc - integer :: begg, endg ! beginning and ending gridcell index - integer :: begl, endl ! beginning and ending landunit index - integer :: begc, endc ! beginning and ending column index - integer :: begp, endp ! beginning and ending patch index + integer :: nclumps ! number of clumps for processor_type iam + integer,pointer :: cid(:) ! clump indices + integer :: ncells ! number of gridcells in proc + integer :: nlunits ! number of landunits in proc + integer :: ncols ! number of columns in proc + integer :: npatches ! number of patchs in proc + integer :: nCohorts ! number of cohorts in proc + integer :: begg, endg ! beginning and ending gridcell index + integer :: begl, endl ! beginning and ending landunit index + integer :: begc, endc ! beginning and ending column index + integer :: begp, endp ! beginning and ending patch index integer :: begCohort, endCohort ! beginning and ending cohort indices end type processor_type public processor_type @@ -102,25 +101,15 @@ module decompMod public clump_type type(clump_type),public, allocatable :: clumps(:) - !---global information on each pe - !--- glo = 1d global sn ordered including ocean points - !--- gdc = 1d global decomposition compressed, not including ocean points - type decomp_type - integer,pointer :: gdc2glo(:) ! 1d gdc to 1d glo - end type decomp_type - public decomp_type - type(decomp_type),public,target :: ldecomp - - integer, public :: nglob_x, nglob_y ! global sizes - ! NOTE: the following are allocated with a lower bound of 1! - integer, public, pointer :: gindex_global(:) => null() - integer, public, pointer :: gindex_grc(:) => null() + integer, public, pointer :: gindex_global(:) => null() ! includes ocean points + integer, public, pointer :: gindex_grc(:) => null() ! does not include ocean points integer, public, pointer :: gindex_lun(:) => null() integer, public, pointer :: gindex_col(:) => null() integer, public, pointer :: gindex_patch(:) => null() integer, public, pointer :: gindex_cohort(:) => null() integer, public, pointer :: gindex_lnd2Dsoi(:) => null() + integer, public :: nglob_x, nglob_y ! global sizes !------------------------------------------------------------------------------ contains diff --git a/src/main/histFileMod.F90 b/src/main/histFileMod.F90 index 9ce24163ff..7bd416d19e 100644 --- a/src/main/histFileMod.F90 +++ b/src/main/histFileMod.F90 @@ -3282,7 +3282,7 @@ subroutine hfields_1dinfo(t, mode) ! Write/define 1d info for history tape. ! ! !USES: - use decompMod , only : ldecomp + use decompMod , only : gindex_global use domainMod , only : ldomain, ldomain ! ! !ARGUMENTS: @@ -3294,6 +3294,7 @@ subroutine hfields_1dinfo(t, mode) integer :: k ! 1d index integer :: g,c,l,p ! indices integer :: ier ! errir status + integer :: gindex ! global gridcell index real(r8), pointer :: rgarr(:) ! temporary real(r8), pointer :: rcarr(:) ! temporary real(r8), pointer :: rlarr(:) ! temporary @@ -3302,7 +3303,7 @@ subroutine hfields_1dinfo(t, mode) integer , pointer :: icarr(:) ! temporary integer , pointer :: ilarr(:) ! temporary integer , pointer :: iparr(:) ! temporary - type(file_desc_t), pointer :: ncid ! netcdf file + type(file_desc_t), pointer :: ncid ! netcdf file type(bounds_type) :: bounds character(len=*),parameter :: subname = 'hfields_1dinfo' !----------------------------------------------------------------------- @@ -3463,11 +3464,13 @@ subroutine hfields_1dinfo(t, mode) call ncd_io(varname='grid1d_lon', data=grc%londeg, dim1name=nameg, ncid=ncid, flag='write') call ncd_io(varname='grid1d_lat', data=grc%latdeg, dim1name=nameg, ncid=ncid, flag='write') do g = bounds%begg,bounds%endg - igarr(g)= mod(ldecomp%gdc2glo(g)-1,ldomain%ni) + 1 + gindex = gindex_global(g-bounds%begg+1) + igarr(g)= mod(gindex-1,ldomain%ni) + 1 enddo call ncd_io(varname='grid1d_ixy', data=igarr , dim1name=nameg, ncid=ncid, flag='write') do g = bounds%begg,bounds%endg - igarr(g)= (ldecomp%gdc2glo(g) - 1)/ldomain%ni + 1 + gindex = gindex_global(g-bounds%begg+1) + igarr(g)= (gindex-1)/ldomain%ni + 1 enddo call ncd_io(varname='grid1d_jxy', data=igarr , dim1name=nameg, ncid=ncid, flag='write') @@ -3482,11 +3485,13 @@ subroutine hfields_1dinfo(t, mode) enddo call ncd_io(varname='land1d_lat', data=rlarr, dim1name=namel, ncid=ncid, flag='write') do l= bounds%begl,bounds%endl - ilarr(l) = mod(ldecomp%gdc2glo(lun%gridcell(l))-1,ldomain%ni) + 1 + gindex = gindex_global(lun%gridcell(l)-bounds%begg+1) + ilarr(l) = mod(gindex-1,ldomain%ni) + 1 enddo call ncd_io(varname='land1d_ixy', data=ilarr, dim1name=namel, ncid=ncid, flag='write') do l = bounds%begl,bounds%endl - ilarr(l) = (ldecomp%gdc2glo(lun%gridcell(l))-1)/ldomain%ni + 1 + gindex = gindex_global(lun%gridcell(l)-bounds%begg+1) + ilarr(l) = (gindex-1)/ldomain%ni + 1 enddo call ncd_io(varname='land1d_jxy' , data=ilarr , dim1name=namel, ncid=ncid, flag='write') ilarr = GetGlobalIndexArray(lun%gridcell(bounds%begl:bounds%endl), bounds%begl, bounds%endl, clmlevel=nameg) @@ -3506,11 +3511,13 @@ subroutine hfields_1dinfo(t, mode) enddo call ncd_io(varname='cols1d_lat', data=rcarr, dim1name=namec, ncid=ncid, flag='write') do c = bounds%begc,bounds%endc - icarr(c) = mod(ldecomp%gdc2glo(col%gridcell(c))-1,ldomain%ni) + 1 + gindex = gindex_global(col%gridcell(c)-bounds%begg+1) + icarr(c) = mod(gindex-1,ldomain%ni) + 1 enddo call ncd_io(varname='cols1d_ixy', data=icarr, dim1name=namec, ncid=ncid, flag='write') do c = bounds%begc,bounds%endc - icarr(c) = (ldecomp%gdc2glo(col%gridcell(c))-1)/ldomain%ni + 1 + gindex = gindex_global(col%gridcell(c)-bounds%begg+1) + icarr(c) = (gindex-1)/ldomain%ni + 1 enddo call ncd_io(varname='cols1d_jxy' , data=icarr ,dim1name=namec, ncid=ncid, flag='write') icarr = GetGlobalIndexArray(col%gridcell(bounds%begc:bounds%endc), bounds%begc, bounds%endc, clmlevel=nameg) @@ -3540,11 +3547,13 @@ subroutine hfields_1dinfo(t, mode) enddo call ncd_io(varname='pfts1d_lat', data=rparr, dim1name=namep, ncid=ncid, flag='write') do p = bounds%begp,bounds%endp - iparr(p) = mod(ldecomp%gdc2glo(patch%gridcell(p))-1,ldomain%ni) + 1 + gindex = gindex_global(patch%gridcell(p)-bounds%begg+1) + iparr(p) = mod(gindex-1,ldomain%ni) + 1 enddo call ncd_io(varname='pfts1d_ixy', data=iparr, dim1name=namep, ncid=ncid, flag='write') do p = bounds%begp,bounds%endp - iparr(p) = (ldecomp%gdc2glo(patch%gridcell(p))-1)/ldomain%ni + 1 + gindex = gindex_global(patch%gridcell(p)-bounds%begg+1) + iparr(p) = (gindex-1)/ldomain%ni + 1 enddo call ncd_io(varname='pfts1d_jxy' , data=iparr , dim1name=namep, ncid=ncid, flag='write') diff --git a/src/main/initGridCellsMod.F90 b/src/main/initGridCellsMod.F90 index e8a84f3dcf..4bb15a8768 100644 --- a/src/main/initGridCellsMod.F90 +++ b/src/main/initGridCellsMod.F90 @@ -18,7 +18,7 @@ module initGridCellsMod use abortutils , only : endrun use clm_varctl , only : iulog use clm_varcon , only : namep, namec, namel, nameg - use decompMod , only : bounds_type, ldecomp + use decompMod , only : bounds_type use GridcellType , only : grc use LandunitType , only : lun use ColumnType , only : col @@ -512,7 +512,6 @@ subroutine set_landunit_urban (ltype, gi, li, ci, pi) use subgridMod , only : subgrid_get_info_urban_tbd, subgrid_get_info_urban_hd use subgridMod , only : subgrid_get_info_urban_md use UrbanParamsType , only : urbinp - use decompMod , only : ldecomp use pftconMod , only : noveg ! ! !ARGUMENTS: diff --git a/src/main/subgridRestMod.F90 b/src/main/subgridRestMod.F90 index 78a00b5492..e789866ee5 100644 --- a/src/main/subgridRestMod.F90 +++ b/src/main/subgridRestMod.F90 @@ -8,7 +8,7 @@ module subgridRestMod use shr_log_mod , only : errMsg => shr_log_errMsg use glc_elevclass_mod , only : glc_get_num_elevation_classes, glc_get_elevclass_bounds use abortutils , only : endrun - use decompMod , only : bounds_type, BOUNDS_LEVEL_PROC, ldecomp + use decompMod , only : bounds_type, BOUNDS_LEVEL_PROC, gindex_global use domainMod , only : ldomain use clm_time_manager , only : get_curr_date use clm_varcon , only : nameg, namel, namec, namep @@ -115,6 +115,7 @@ subroutine subgridRest_write_only(bounds, ncid, flag) integer , pointer :: ilarr(:) ! temporary integer , pointer :: icarr(:) ! temporary integer , pointer :: iparr(:) ! temporary + integer :: gindex ! global index real(r8), pointer :: elevclass_bounds(:) @@ -141,7 +142,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=grc%latdeg) do g=bounds%begg,bounds%endg - igarr(g)= mod(ldecomp%gdc2glo(g)-1,ldomain%ni) + 1 + gindex = gindex_global(g-bounds%begg+1) + igarr(g)= mod(gindex-1,ldomain%ni) + 1 enddo call restartvar(ncid=ncid, flag=flag, varname='grid1d_ixy', xtype=ncd_int, & dim1name='gridcell', & @@ -149,7 +151,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=igarr) do g=bounds%begg,bounds%endg - igarr(g)= (ldecomp%gdc2glo(g) - 1)/ldomain%ni + 1 + gindex = gindex_global(g-bounds%begg+1) + igarr(g)= (gindex - 1)/ldomain%ni + 1 enddo call restartvar(ncid=ncid, flag=flag, varname='grid1d_jxy', xtype=ncd_int, & dim1name='gridcell', & @@ -182,7 +185,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=rlarr) do l=bounds%begl,bounds%endl - ilarr(l) = mod(ldecomp%gdc2glo(lun%gridcell(l))-1,ldomain%ni) + 1 + gindex = gindex_global(lun%gridcell(l)-bounds%begg+1) + ilarr(l) = mod(gindex-1,ldomain%ni) + 1 enddo call restartvar(ncid=ncid, flag=flag, varname='land1d_ixy', xtype=ncd_int, & dim1name='landunit', & @@ -190,7 +194,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=ilarr) do l=bounds%begl,bounds%endl - ilarr(l) = (ldecomp%gdc2glo(lun%gridcell(l))-1)/ldomain%ni + 1 + gindex = gindex_global(lun%gridcell(l)-bounds%begg+1) + ilarr(l) = (gindex-1)/ldomain%ni + 1 end do call restartvar(ncid=ncid, flag=flag, varname='land1d_jxy', xtype=ncd_int, & dim1name='landunit', & @@ -245,7 +250,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=rcarr) do c= bounds%begc, bounds%endc - icarr(c) = mod(ldecomp%gdc2glo(col%gridcell(c))-1,ldomain%ni) + 1 + gindex = gindex_global(col%gridcell(c)-bounds%begg+1) + icarr(c) = mod(gindex-1,ldomain%ni) + 1 enddo call restartvar(ncid=ncid, flag=flag, varname='cols1d_ixy', xtype=ncd_int, & dim1name='column', & @@ -253,7 +259,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=icarr) do c= bounds%begc, bounds%endc - icarr(c) = (ldecomp%gdc2glo(col%gridcell(c))-1)/ldomain%ni + 1 + gindex = gindex_global(col%gridcell(c)-bounds%begg+1) + icarr(c) = (gindex-1)/ldomain%ni + 1 enddo call restartvar(ncid=ncid, flag=flag, varname='cols1d_jxy', xtype=ncd_int, & dim1name='column', & @@ -346,7 +353,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=rparr) do p=bounds%begp,bounds%endp - iparr(p) = mod(ldecomp%gdc2glo(patch%gridcell(p))-1,ldomain%ni) + 1 + gindex = gindex_global(patch%gridcell(p)-bounds%begg+1) + iparr(p) = mod(gindex-1,ldomain%ni) + 1 enddo call restartvar(ncid=ncid, flag=flag, varname='pfts1d_ixy', xtype=ncd_int, & dim1name='pft', & @@ -354,7 +362,8 @@ subroutine subgridRest_write_only(bounds, ncid, flag) interpinic_flag='skip', readvar=readvar, data=iparr) do p=bounds%begp,bounds%endp - iparr(p) = (ldecomp%gdc2glo(patch%gridcell(p))-1)/ldomain%ni + 1 + gindex = gindex_global(patch%gridcell(p)-bounds%begg+1) + iparr(p) = (gindex-1)/ldomain%ni + 1 enddo call restartvar(ncid=ncid, flag=flag, varname='pfts1d_jxy', xtype=ncd_int, & dim1name='pft', & From 93b392fe14aea0aa9fc3722f9c56194aa030175b Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Sun, 20 Jun 2021 21:05:37 -0600 Subject: [PATCH 11/63] moved all bound%beg[p,c,l,g,cohort] to be 1 --- src/main/decompInitMod.F90 | 7 +++--- src/main/decompMod.F90 | 44 +++++++++++++++++++------------------- src/main/ncdio_pio.F90.in | 6 +++--- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index c75dd067d9..b3e66acfee 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -287,10 +287,9 @@ subroutine decompInit_lnd(lni,lnj,amask) nglob_x = lni ! decompMod module variables nglob_y = lnj ! decompMod module variables call get_proc_bounds(bounds) - begg = bounds%begg; endg = bounds%endg - allocate(gindex_global(endg-begg+1)) - do n = begg,endg - gindex_global(n-begg+1) = gdc2glo(n) + allocate(gindex_global(1:bounds%endg)) + do n = procinfo%begg,procinfo%endg + gindex_global(n-procinfo%begg+1) = gdc2glo(n) enddo deallocate(clumpcnt) diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index 644de9ea14..57af050fe8 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -8,7 +8,7 @@ module decompMod ! !USES: use shr_kind_mod, only : r8 => shr_kind_r8 ! Must use shr_sys_abort rather than endrun here to avoid circular dependency - use shr_sys_mod , only : shr_sys_abort + use shr_sys_mod , only : shr_sys_abort use clm_varctl , only : iulog use clm_varcon , only : grlnd, nameg, namel, namec, namep, nameCohort use mct_mod , only : mct_gsMap @@ -226,17 +226,17 @@ subroutine get_clump_bounds (n, bounds) #endif cid = procinfo%cid(n) - bounds%begp = clumps(cid)%begp - bounds%endp = clumps(cid)%endp - bounds%begc = clumps(cid)%begc - bounds%endc = clumps(cid)%endc - bounds%begl = clumps(cid)%begl - bounds%endl = clumps(cid)%endl - bounds%begg = clumps(cid)%begg - bounds%endg = clumps(cid)%endg - bounds%begCohort = clumps(cid)%begCohort - bounds%endCohort = clumps(cid)%endCohort - + bounds%begp = 1 + bounds%endp = clumps(cid)%endp - clumps(cid)%begp + 1 + bounds%begc = 1 + bounds%endc = clumps(cid)%endc - clumps(cid)%begc + 1 + bounds%begl = 1 + bounds%endl = clumps(cid)%endl - clumps(cid)%begl + 1 + bounds%begg = 1 + bounds%endg = clumps(cid)%endg - clumps(cid)%begg + 1 + bounds%begCohort = 1 + bounds%endCohort = clumps(cid)%endCohort - clumps(cid)%begCohort + 1 + bounds%level = BOUNDS_LEVEL_CLUMP bounds%clump_index = n @@ -269,16 +269,16 @@ subroutine get_proc_bounds (bounds) end if #endif - bounds%begp = procinfo%begp - bounds%endp = procinfo%endp - bounds%begc = procinfo%begc - bounds%endc = procinfo%endc - bounds%begl = procinfo%begl - bounds%endl = procinfo%endl - bounds%begg = procinfo%begg - bounds%endg = procinfo%endg - bounds%begCohort = procinfo%begCohort - bounds%endCohort = procinfo%endCohort + bounds%begp = 1 + bounds%endp = procinfo%endp - procinfo%begp + 1 + bounds%begc = 1 + bounds%endc = procinfo%endc - procinfo%begc + 1 + bounds%begl = 1 + bounds%endl = procinfo%endl - procinfo%begl + 1 + bounds%begg = 1 + bounds%endg = procinfo%endg - procinfo%begg + 1 + bounds%begCohort = 1 + bounds%endCohort = procinfo%endCohort - procinfo%begCohort + 1 bounds%level = BOUNDS_LEVEL_PROC bounds%clump_index = -1 ! irrelevant for proc, so assigned a bogus value diff --git a/src/main/ncdio_pio.F90.in b/src/main/ncdio_pio.F90.in index a09ea78f82..e9a8e3e2bb 100644 --- a/src/main/ncdio_pio.F90.in +++ b/src/main/ncdio_pio.F90.in @@ -2723,9 +2723,9 @@ contains if (debug > 1) then do m = 0,npes-1 if (iam == m) then - write(iulog,*) trim(subname),' sizes1 = ',iam,gsize,lsize - write(iulog,*) trim(subname),' sizes2 = ',iam,fullsize,npes,vsize - write(iulog,*) trim(subname),' compDOF = ',iam,size(compDOF),minval(compDOF),maxval(compDOF) + write(iulog,'(a,3(i10,2x))') trim(subname)//' sizes1 = ',iam,gsize,lsize + write(iulog,'(a,4(i10,2x))') trim(subname)//' sizes2 = ',iam,fullsize,npes,vsize + write(iulog,'(a,5(i10,2x))') trim(subname)//' compDOF = ',iam,size(compDOF),minval(compDOF),maxval(compDOF) call shr_sys_flush(iulog) endif call mpi_barrier(mpicom,status) From 4b79e26fd2df9ce9b0100be4de4ab38264cef0ea Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 21 Jun 2021 11:24:21 -0600 Subject: [PATCH 12/63] update use statements --- src/main/controlMod.F90 | 2 +- src/main/decompInitMod.F90 | 68 ++++++++++++++++++++++---------------- src/main/decompMod.F90 | 2 -- 3 files changed, 41 insertions(+), 31 deletions(-) diff --git a/src/main/controlMod.F90 b/src/main/controlMod.F90 index a5dd42d89c..e91f853e32 100644 --- a/src/main/controlMod.F90 +++ b/src/main/controlMod.F90 @@ -17,7 +17,7 @@ module controlMod use abortutils , only: endrun use spmdMod , only: masterproc, mpicom use spmdMod , only: MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_REAL8 - use decompMod , only: clump_pproc + use decompInitMod , only: clump_pproc use clm_varcon , only: h2osno_max use clm_varpar , only: maxpatch_glc, numrad, nlevsno use fileutils , only: getavu, relavu, get_filename diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index b3e66acfee..b409258b8e 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -11,13 +11,7 @@ module decompInitMod use shr_log_mod , only : errMsg => shr_log_errMsg use spmdMod , only : masterproc, iam, npes, mpicom use abortutils , only : endrun - use clm_varctl , only : iulog, use_fates - use LandunitType , only : lun - use ColumnType , only : col - use PatchType , only : patch - use glcBehaviorMod , only : glc_behavior_type - use FatesInterfaceTypesMod , only : fates_maxElementsPerSite - use decompMod + use clm_varctl , only : iulog ! implicit none private @@ -25,14 +19,17 @@ module decompInitMod ! !PUBLIC TYPES: ! ! !PUBLIC MEMBER FUNCTIONS: - public decompInit_lnd ! initializes lnd grid decomposition into clumps and processors - public decompInit_clumps ! initializes atm grid decomposition into clumps - public decompInit_glcp ! initializes g,l,c,p decomp info + public :: decompInit_lnd ! initializes lnd grid decomposition into clumps and processors + public :: decompInit_clumps ! initializes atm grid decomposition into clumps + public :: decompInit_glcp ! initializes g,l,c,p decomp info ! ! !PRIVATE MEMBER FUNCTIONS: private :: set_subgrid_start private :: set_gsmap_global ! + ! PUBLIC TYPES: + integer, public :: clump_pproc ! number of clumps per MPI process + ! ! !PRIVATE TYPES: integer, pointer :: lcid(:) ! temporary for setting decomposition character(len=*), parameter, private :: sourcefile = & @@ -50,8 +47,10 @@ subroutine decompInit_lnd(lni,lnj,amask) ! set by clump_pproc ! ! !USES: - use clm_varctl , only : nsegspc - use decompMod , only : nglob_x, nglob_y, gindex_global + use clm_varctl , only : nsegspc + use decompMod , only : nglob_x, nglob_y, gindex_global + use decompMod , only : nclumps, clumps + use decompMod , only : bounds_type, get_proc_bounds, procinfo ! ! !ARGUMENTS: implicit none @@ -72,7 +71,7 @@ subroutine decompInit_lnd(lni,lnj,amask) integer :: begg, endg ! beg and end gridcells integer, pointer :: clumpcnt(:) ! clump index counter integer, allocatable :: gdc2glo(:)! used to create gindex_global - type(bounds_type) :: bounds ! contains subgrid bounds data + type(bounds_type) :: bounds ! contains subgrid bounds data !------------------------------------------------------------------------------ lns = lni * lnj @@ -241,7 +240,7 @@ subroutine decompInit_lnd(lni,lnj,amask) ! Set gindex_global - allocate(gdc2glo(numg), stat=ier) + allocate(gdc2glo(numg), stat=ier) if (ier /= 0) then write(iulog,*) 'decompInit_lnd(): allocation error1 for gdc2glo , etc' call endrun(msg=errMsg(sourcefile, __LINE__)) @@ -252,7 +251,7 @@ subroutine decompInit_lnd(lni,lnj,amask) write(iulog,*) 'decompInit_lnd(): allocation error1 for clumpcnt' call endrun(msg=errMsg(sourcefile, __LINE__)) end if - + ! clumpcnt is the start gdc index of each clump ag = 0 @@ -321,13 +320,17 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) ! set by clump_pproc ! ! !USES: - use subgridMod, only : subgrid_get_gcellinfo - use spmdMod + use subgridMod , only : subgrid_get_gcellinfo + use decompMod , only : bounds_type, get_proc_bounds, clumps, nclumps, procinfo + use decompMod , only : numg, numl, numc, nump, numCohort + use decompMod , only : gindex_global + use decompMod , only : nglob_x, nglob_y + use glcBehaviorMod , only : glc_behavior_type + use spmdMod , only : MPI_INTEGER, MPI_SUM ! ! !ARGUMENTS: - implicit none - integer , intent(in) :: lni,lnj ! land domain global size - type(glc_behavior_type), intent(in) :: glc_behavior + integer , intent(in) :: lni,lnj ! land domain global size + type(glc_behavior_type) , intent(in) :: glc_behavior ! ! !LOCAL VARIABLES: integer :: ln,an ! indices @@ -342,16 +345,15 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) integer :: ipatches ! temporary integer :: icohorts ! temporary integer :: ier ! error code + type(bounds_type) :: bounds ! bounds integer, allocatable :: allvecg(:,:) ! temporary vector "global" integer, allocatable :: allvecl(:,:) ! temporary vector "local" - integer :: ntest - type(bounds_type) :: bounds character(len=32), parameter :: subname = 'decompInit_clumps' !------------------------------------------------------------------------------ !--- assign gridcells to clumps (and thus pes) --- call get_proc_bounds(bounds) - begg = bounds%begg; endg = bounds%endg + begg = bounds%begg; endg = bounds%endg allocate(allvecl(nclumps,5)) ! local clumps [gcells,lunit,cols,patches,coh] allocate(allvecg(nclumps,5)) ! global clumps [gcells,lunit,cols,patches,coh] @@ -483,8 +485,19 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! Determine gindex for landunits, columns, patches and cohorts ! ! !USES: - use spmdMod - use subgridMod, only : subgrid_get_gcellinfo + use clm_varctl , only : use_fates + use subgridMod , only : subgrid_get_gcellinfo + use decompMod , only : bounds_type, nclumps, get_proc_global, get_proc_bounds + use decompMod , only : nglob_x, nglob_y + use decompMod , only : gindex_global + use decompMod , only : gindex_grc, gindex_lun, gindex_col, gindex_patch, gindex_Cohort + use decompMod , only : procinfo, nclumps, clump_type, clumps + use decompMod , only : gsmap_global, get_proc_global + use LandunitType , only : lun + use ColumnType , only : col + use PatchType , only : patch + use FatesInterfaceTypesMod , only : fates_maxElementsPerSite + use glcBehaviorMod , only : glc_behavior_type ! ! !ARGUMENTS: integer , intent(in) :: lni,lnj ! land domain global size @@ -512,7 +525,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) integer :: npmin,npmax,npint ! do loop values for printing integer :: clmin,clmax ! do loop values for printing integer :: ng ! number of global gridcells - integer, pointer :: gindex_global(:) ! global index integer, pointer :: array_glob(:) ! temporaroy integer, pointer :: gstart(:), gcount(:) integer, pointer :: lstart(:), lcount(:) @@ -526,7 +538,7 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) !------------------------------------------------------------------------------ ! Get processor bounds - + call get_proc_bounds(bounds) begg = bounds%begg; endg = bounds%endg begl = bounds%begl; endl = bounds%endl @@ -858,7 +870,7 @@ subroutine set_gsmap_global(gindex_global) ! ! !USES: use spmdMod , only : mpicom, comp_id - use decompMod , only : nglob_x, nglob_y + use decompMod , only : nglob_x, nglob_y, gsmap_global use mct_mod , only : mct_gsMap_init ! ! !ARGUMENTS: diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index 57af050fe8..8adbc29dfc 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -19,8 +19,6 @@ module decompMod ! mct data type still needed for determining subgrid gindex type(mct_gsMap), target, public :: gsmap_global ! global seg map - integer, public :: clump_pproc ! number of clumps per MPI process - ! Define possible bounds subgrid levels integer, parameter, public :: BOUNDS_SUBGRID_GRIDCELL = 1 integer, parameter, public :: BOUNDS_SUBGRID_LANDUNIT = 2 From 73487005cf88f32f7ebb77c14ae81c2c0ee470af Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 22 Jun 2021 07:35:21 -0600 Subject: [PATCH 13/63] fixed threading problem --- src/main/decompMod.F90 | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index 8adbc29dfc..f16d3b655e 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -217,23 +217,22 @@ subroutine get_clump_bounds (n, bounds) ! FIX(SPM, 090314) - for debugging fates and openMP !write(iulog,*) 'SPM omp debug decompMod 1 ', & !OMP_GET_NUM_THREADS(),OMP_GET_MAX_THREADS(),OMP_GET_THREAD_NUM() - if ( OMP_GET_NUM_THREADS() == 1 .and. OMP_GET_MAX_THREADS() > 1 )then call shr_sys_abort( trim(subname)//' ERROR: Calling from inside a non-threaded region)') end if #endif cid = procinfo%cid(n) - bounds%begp = 1 - bounds%endp = clumps(cid)%endp - clumps(cid)%begp + 1 - bounds%begc = 1 - bounds%endc = clumps(cid)%endc - clumps(cid)%begc + 1 - bounds%begl = 1 - bounds%endl = clumps(cid)%endl - clumps(cid)%begl + 1 - bounds%begg = 1 - bounds%endg = clumps(cid)%endg - clumps(cid)%begg + 1 - bounds%begCohort = 1 - bounds%endCohort = clumps(cid)%endCohort - clumps(cid)%begCohort + 1 + bounds%begp = clumps(cid)%begp - procinfo%begp + 1 + bounds%endp = clumps(cid)%endp - procinfo%begp + 1 + bounds%begc = clumps(cid)%begc - procinfo%begc + 1 + bounds%endc = clumps(cid)%endc - procinfo%begc + 1 + bounds%begl = clumps(cid)%begl - procinfo%begl + 1 + bounds%endl = clumps(cid)%endl - procinfo%begl + 1 + bounds%begg = clumps(cid)%begg - procinfo%begg + 1 + bounds%endg = clumps(cid)%endg - procinfo%begg + 1 + bounds%endCohort = clumps(cid)%endCohort - procinfo%begCohort + 1 + bounds%endCohort = clumps(cid)%endCohort - procinfo%begCohort + 1 bounds%level = BOUNDS_LEVEL_CLUMP bounds%clump_index = n From d7556eff95e0197822c9bdc01b83419755db57fb Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 22 Jun 2021 07:55:32 -0600 Subject: [PATCH 14/63] compilation fixes --- src/cpl/mct/lnd_set_decomp_and_domain.F90 | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cpl/mct/lnd_set_decomp_and_domain.F90 b/src/cpl/mct/lnd_set_decomp_and_domain.F90 index ca661a9144..f5f6046df0 100644 --- a/src/cpl/mct/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/mct/lnd_set_decomp_and_domain.F90 @@ -28,7 +28,7 @@ subroutine lnd_set_decomp_and_domain_from_surfrd(noland, ni, nj) use clm_varpar , only: nlevsoi use clm_varctl , only: fatmlndfrc, use_soil_moisture_streams - use decompInitMod , only: decompInit_lnd, decompInit_lnd3D + use decompInitMod , only: decompInit_lnd use decompMod , only: bounds_type, get_proc_bounds use domainMod , only: ldomain, domain_init, domain_check @@ -300,6 +300,9 @@ subroutine decompInit_lnd3D(lni,lnj,lnk) ! as the 3rd dimesnion. ! ! !USES: + use decompMod, only : ldecomp, gsmap_lnd2dsoi_gdc2glo, get_proc_bounds + use spmdMod , only : comp_id, mpicom + use mct_mod , only : mct_gsmap_init ! ! !ARGUMENTS: integer , intent(in) :: lni,lnj,lnk ! domain global size @@ -336,15 +339,11 @@ subroutine decompInit_lnd3D(lni,lnj,lnk) write(iulog,*)' gsize = ',gsize write(iulog,*)' lsize = ',lsize write(iulog,*)' bounds(gindex) = ',size(gindex) - write(iulog,*)' gsMap Characteristics' - write(iulog,*) ' lnd gsmap glo num of segs = ',mct_gsMap_ngseg(gsMap_lnd2Dsoi_gdc2glo) write(iulog,*) end if deallocate(gindex) - call shr_sys_flush(iulog) - end subroutine decompInit_lnd3D end module lnd_set_decomp_and_domain From 614a13675a8218b2cee43a2c1c8ba9c836db8dea Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 22 Jun 2021 10:04:54 -0600 Subject: [PATCH 15/63] new local creation of gsmap_global in initDecompMod that is separate from mct cap. Goal is to remove this gsmap_global in decompInitMod without touching the mct cap --- src/cpl/mct/FireDataBaseType.F90 | 2 +- src/cpl/mct/SoilMoistureStreamMod.F90 | 3 +- src/cpl/mct/UrbanTimeVarType.F90 | 2 +- src/cpl/mct/ch4FInundatedStreamType.F90 | 2 +- src/cpl/mct/laiStreamMod.F90 | 2 +- src/cpl/mct/lnd_comp_mct.F90 | 3 +- src/cpl/mct/lnd_set_decomp_and_domain.F90 | 3 +- src/cpl/mct/ndepStreamMod.F90 | 8 +- src/main/decompInitMod.F90 | 128 ++++++++++------------ src/main/decompMod.F90 | 9 +- 10 files changed, 69 insertions(+), 93 deletions(-) diff --git a/src/cpl/mct/FireDataBaseType.F90 b/src/cpl/mct/FireDataBaseType.F90 index f8fd36e21e..a9367e6d28 100644 --- a/src/cpl/mct/FireDataBaseType.F90 +++ b/src/cpl/mct/FireDataBaseType.F90 @@ -14,11 +14,11 @@ module FireDataBaseType use clm_varctl , only : iulog, inst_name use spmdMod , only : masterproc, mpicom, comp_id use fileutils , only : getavu, relavu - use decompMod , only : gsmap_global use domainMod , only : ldomain use abortutils , only : endrun use decompMod , only : bounds_type use FireMethodType , only : fire_method_type + use lnd_set_decomp_and_domain, only : gsmap_global use mct_mod ! implicit none diff --git a/src/cpl/mct/SoilMoistureStreamMod.F90 b/src/cpl/mct/SoilMoistureStreamMod.F90 index fcba37de4f..883daf7f63 100644 --- a/src/cpl/mct/SoilMoistureStreamMod.F90 +++ b/src/cpl/mct/SoilMoistureStreamMod.F90 @@ -32,8 +32,7 @@ module SoilMoistureStreamMod use SoilStateType , only : soilstate_type use WaterStateBulkType , only : waterstatebulk_type use perf_mod , only : t_startf, t_stopf - use spmdMod , only : masterproc - use spmdMod , only : mpicom, comp_id + use spmdMod , only : masterproc, mpicom, comp_id use lnd_set_decomp_and_domain , only : gsMap_lnd2Dsoi_gdc2glo use mct_mod use ncdio_pio diff --git a/src/cpl/mct/UrbanTimeVarType.F90 b/src/cpl/mct/UrbanTimeVarType.F90 index 0b779dd727..f637bd8461 100644 --- a/src/cpl/mct/UrbanTimeVarType.F90 +++ b/src/cpl/mct/UrbanTimeVarType.F90 @@ -100,10 +100,10 @@ subroutine urbantv_init(this, bounds, NLFilename) use shr_mpi_mod , only : shr_mpi_bcast use shr_string_mod , only : shr_string_listAppend use shr_strdata_mod , only : shr_strdata_create, shr_strdata_print - use decompMod , only : gsmap_global use domainMod , only : ldomain use shr_infnan_mod , only : nan => shr_infnan_nan, assignment(=) use landunit_varcon , only : isturb_TBD, isturb_HD, isturb_MD + use lnd_set_decomp_and_domain , only : gsmap_global ! ! !ARGUMENTS: implicit none diff --git a/src/cpl/mct/ch4FInundatedStreamType.F90 b/src/cpl/mct/ch4FInundatedStreamType.F90 index 18170152ee..3c26f4d109 100644 --- a/src/cpl/mct/ch4FInundatedStreamType.F90 +++ b/src/cpl/mct/ch4FInundatedStreamType.F90 @@ -71,13 +71,13 @@ subroutine Init(this, bounds, NLFilename) use ndepStreamMod , only : clm_domain_mct use domainMod , only : ldomain use decompMod , only : bounds_type - use decompMod , only : gsmap_global use mct_mod , only : mct_ggrid, mct_avect_indexra use shr_strdata_mod , only : shr_strdata_type, shr_strdata_create use shr_strdata_mod , only : shr_strdata_print, shr_strdata_advance use spmdMod , only : comp_id, iam use ch4varcon , only : finundation_mtd_h2osfc use ch4varcon , only : finundation_mtd_ZWT_inversion, finundation_mtd_TWS_inversion + use lnd_set_decomp_and_domain , only : gsmap_global ! ! arguments implicit none diff --git a/src/cpl/mct/laiStreamMod.F90 b/src/cpl/mct/laiStreamMod.F90 index ea35e147a3..47d25287b7 100644 --- a/src/cpl/mct/laiStreamMod.F90 +++ b/src/cpl/mct/laiStreamMod.F90 @@ -53,8 +53,8 @@ subroutine lai_init(bounds) use ndepStreamMod , only : clm_domain_mct use histFileMod , only : hist_addfld1d use domainMod , only : ldomain - use decompMod , only : gsmap_global use controlMod , only : NLFilename + use lnd_set_decomp_and_domain , only : gsmap_global ! ! !ARGUMENTS: implicit none diff --git a/src/cpl/mct/lnd_comp_mct.F90 b/src/cpl/mct/lnd_comp_mct.F90 index 8eb429f632..1595611a72 100644 --- a/src/cpl/mct/lnd_comp_mct.F90 +++ b/src/cpl/mct/lnd_comp_mct.F90 @@ -67,7 +67,7 @@ subroutine lnd_init_mct( EClock, cdata_l, x2l_l, l2x_l, NLFilename ) use clm_cpl_indices , only : clm_cpl_indices_set use mct_mod , only : mct_aVect_init, mct_aVect_zero, mct_gsMap, mct_gsMap_init use decompMod , only : gindex_global - use lnd_set_decomp_and_domain, only : lnd_set_decomp_and_domain_from_surfrd + use lnd_set_decomp_and_domain, only : lnd_set_decomp_and_domain_from_surfrd, gsmap_global use ESMF ! ! !ARGUMENTS: @@ -230,6 +230,7 @@ subroutine lnd_init_mct( EClock, cdata_l, x2l_l, l2x_l, NLFilename ) lsize = bounds%endg - bounds%begg + 1 gsize = ldomain%ni * ldomain%nj call mct_gsMap_init( gsMap_lnd, gindex_global, mpicom_lnd, LNDID, lsize, gsize ) + gsmap_global => gsmap_lnd ! module variable in lnd_set_decomp_and_domain call lnd_domain_mct( bounds, lsize, gsMap_lnd, dom_l ) call mct_aVect_init(x2l_l, rList=seq_flds_x2l_fields, lsize=lsize) call mct_aVect_zero(x2l_l) diff --git a/src/cpl/mct/lnd_set_decomp_and_domain.F90 b/src/cpl/mct/lnd_set_decomp_and_domain.F90 index 97f452a86c..867675acbf 100644 --- a/src/cpl/mct/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/mct/lnd_set_decomp_and_domain.F90 @@ -15,7 +15,8 @@ module lnd_set_decomp_and_domain private :: surfrd_get_globmask ! Reads global land mask (needed for setting domain decomp) private :: surfrd_get_grid ! Read grid/ladnfrac data into domain (after domain decomp) - type(mct_gsmap), target, public :: gsMap_lnd2Dsoi_gdc2glo + type(mct_gsmap), pointer, public :: gsmap_global + type(mct_gsmap), target , public :: gsMap_lnd2Dsoi_gdc2glo character(len=*), parameter, private :: sourcefile = & __FILE__ diff --git a/src/cpl/mct/ndepStreamMod.F90 b/src/cpl/mct/ndepStreamMod.F90 index 47486708ae..af03ca5c35 100644 --- a/src/cpl/mct/ndepStreamMod.F90 +++ b/src/cpl/mct/ndepStreamMod.F90 @@ -56,7 +56,7 @@ subroutine ndep_init(bounds, NLFilename) use shr_nl_mod , only : shr_nl_find_group_name use shr_log_mod , only : errMsg => shr_log_errMsg use shr_mpi_mod , only : shr_mpi_bcast - use decompMod , only : gsmap_global + use lnd_set_decomp_and_domain , only : gsMap_lnd2Dsoi_gdc2glo, gsmap_global ! ! arguments implicit none @@ -268,10 +268,8 @@ subroutine clm_domain_mct(bounds, dom_clm, nlevels) use domainMod , only : ldomain use mct_mod , only : mct_ggrid, mct_gsMap_lsize, mct_gGrid_init use mct_mod , only : mct_gsMap_orderedPoints, mct_gGrid_importIAttr - use mct_mod , only : mct_gGrid_importRAttr - use mct_mod , only : mct_gsMap - use decompMod , only : gsmap_global - use lnd_set_decomp_and_domain , only : gsMap_lnd2Dsoi_gdc2glo + use mct_mod , only : mct_gGrid_importRAttr, mct_gsMap + use lnd_set_decomp_and_domain , only : gsMap_lnd2Dsoi_gdc2glo, gsmap_global implicit none ! ! arguments diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index b409258b8e..7703b664c2 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -6,12 +6,12 @@ module decompInitMod ! be mapped back to atmosphere physics chunks. ! ! !USES: - use shr_kind_mod , only : r8 => shr_kind_r8 - use shr_sys_mod , only : shr_sys_flush - use shr_log_mod , only : errMsg => shr_log_errMsg - use spmdMod , only : masterproc, iam, npes, mpicom - use abortutils , only : endrun - use clm_varctl , only : iulog + use shr_kind_mod , only : r8 => shr_kind_r8 + use shr_sys_mod , only : shr_sys_flush + use shr_log_mod , only : errMsg => shr_log_errMsg + use spmdMod , only : masterproc, iam, npes, mpicom + use abortutils , only : endrun + use clm_varctl , only : iulog ! implicit none private @@ -25,13 +25,13 @@ module decompInitMod ! ! !PRIVATE MEMBER FUNCTIONS: private :: set_subgrid_start - private :: set_gsmap_global ! ! PUBLIC TYPES: integer, public :: clump_pproc ! number of clumps per MPI process ! ! !PRIVATE TYPES: - integer, pointer :: lcid(:) ! temporary for setting decomposition + integer, pointer :: lcid(:) ! temporary for setting decomposition + integer :: nglob_x, nglob_y ! global sizes character(len=*), parameter, private :: sourcefile = & __FILE__ !------------------------------------------------------------------------------ @@ -39,7 +39,7 @@ module decompInitMod contains !------------------------------------------------------------------------------ - subroutine decompInit_lnd(lni,lnj,amask) + subroutine decompInit_lnd(lni, lnj, amask) ! ! !DESCRIPTION: ! This subroutine initializes the land surface decomposition into a clump @@ -48,8 +48,7 @@ subroutine decompInit_lnd(lni,lnj,amask) ! ! !USES: use clm_varctl , only : nsegspc - use decompMod , only : nglob_x, nglob_y, gindex_global - use decompMod , only : nclumps, clumps + use decompMod , only : gindex_global, nclumps, clumps use decompMod , only : bounds_type, get_proc_bounds, procinfo ! ! !ARGUMENTS: @@ -294,9 +293,6 @@ subroutine decompInit_lnd(lni,lnj,amask) deallocate(clumpcnt) deallocate(gdc2glo) - ! Initialize gsmap_global - call set_gsmap_global(gindex_global) - ! Diagnostic output if (masterproc) then write(iulog,*)' Surface Grid Characteristics' @@ -324,7 +320,6 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) use decompMod , only : bounds_type, get_proc_bounds, clumps, nclumps, procinfo use decompMod , only : numg, numl, numc, nump, numCohort use decompMod , only : gindex_global - use decompMod , only : nglob_x, nglob_y use glcBehaviorMod , only : glc_behavior_type use spmdMod , only : MPI_INTEGER, MPI_SUM ! @@ -488,53 +483,55 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) use clm_varctl , only : use_fates use subgridMod , only : subgrid_get_gcellinfo use decompMod , only : bounds_type, nclumps, get_proc_global, get_proc_bounds - use decompMod , only : nglob_x, nglob_y use decompMod , only : gindex_global use decompMod , only : gindex_grc, gindex_lun, gindex_col, gindex_patch, gindex_Cohort - use decompMod , only : procinfo, nclumps, clump_type, clumps - use decompMod , only : gsmap_global, get_proc_global + use decompMod , only : procinfo, nclumps, clump_type, clumps, get_proc_global use LandunitType , only : lun use ColumnType , only : col use PatchType , only : patch use FatesInterfaceTypesMod , only : fates_maxElementsPerSite use glcBehaviorMod , only : glc_behavior_type + use mct_mod , only : mct_gsmap, mct_gsMap_init, mct_gsmap_clean + use spmdMod , only : comp_id ! ! !ARGUMENTS: integer , intent(in) :: lni,lnj ! land domain global size type(glc_behavior_type) , intent(in) :: glc_behavior ! ! !LOCAL VARIABLES: - integer :: gi,li,ci,pi,coi ! indices - integer :: i,l,n,np ! indices - integer :: cid,pid ! indices - integer :: begg,endg ! beg,end gridcells - integer :: begl,endl ! beg,end landunits - integer :: begc,endc ! beg,end columns - integer :: begp,endp ! beg,end patches - integer :: begCohort,endCohort ! beg,end cohorts - integer :: numg ! total number of land gridcells across all processors - integer :: numl ! total number of landunits across all processors - integer :: numc ! total number of columns across all processors - integer :: nump ! total number of patches across all processors - integer :: numCohort ! fates cohorts - integer :: ilunits ! temporary - integer :: icols ! temporary - integer :: ipatches ! temporary - integer :: icohorts ! temporary - integer :: ier ! error code - integer :: npmin,npmax,npint ! do loop values for printing - integer :: clmin,clmax ! do loop values for printing - integer :: ng ! number of global gridcells - integer, pointer :: array_glob(:) ! temporaroy - integer, pointer :: gstart(:), gcount(:) - integer, pointer :: lstart(:), lcount(:) - integer, pointer :: cstart(:), ccount(:) - integer, pointer :: pstart(:), pcount(:) - integer, pointer :: coStart(:), coCount(:) - integer, pointer :: ioff(:) - type(bounds_type):: bounds - integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max - character(len=32), parameter :: subname = 'decompInit_glcp' + integer :: gi,li,ci,pi,coi ! indices + integer :: i,l,n,np ! indices + integer :: cid,pid ! indices + integer :: begg,endg ! beg,end gridcells + integer :: begl,endl ! beg,end landunits + integer :: begc,endc ! beg,end columns + integer :: begp,endp ! beg,end patches + integer :: begCohort,endCohort ! beg,end cohorts + integer :: numg ! total number of land gridcells across all processors + integer :: numl ! total number of landunits across all processors + integer :: numc ! total number of columns across all processors + integer :: nump ! total number of patches across all processors + integer :: numCohort ! fates cohorts + integer :: ilunits ! temporary + integer :: icols ! temporary + integer :: ipatches ! temporary + integer :: icohorts ! temporary + integer :: ier ! error code + integer :: npmin,npmax,npint ! do loop values for printing + integer :: clmin,clmax ! do loop values for printing + integer :: ng ! number of global gridcells + integer, pointer :: array_glob(:) ! temporaroy + integer, pointer :: gstart(:), gcount(:) + integer, pointer :: lstart(:), lcount(:) + integer, pointer :: cstart(:), ccount(:) + integer, pointer :: pstart(:), pcount(:) + integer, pointer :: coStart(:), coCount(:) + integer, pointer :: ioff(:) + type(bounds_type) :: bounds + type(mct_gsMap), target :: gsmap_global ! global seg map + integer :: lsize, gsize + integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max + Character(len=32), parameter :: subname = 'decompInit_glcp' !------------------------------------------------------------------------------ ! Get processor bounds @@ -572,11 +569,15 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! scatter the subgrid start indices back out to the gdc gridcells ! set the local gindex array for the subgrid from the subgrid start and count arrays + ! Initialize gsmap_global + lsize = size(gindex_global) + ng = nglob_x * nglob_y + call mct_gsmap_init(gsmap_global, gindex_global, mpicom, comp_id, lsize, ng) + ! --------------------------------------- ! Determine total number of global gridcells (including ocean) ! --------------------------------------- - ng = nglob_x * nglob_y allocate(array_glob(ng)) allocate(ioff(begg:endg)); ioff(:) = 0 @@ -787,12 +788,15 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) end do call shr_sys_flush(iulog) + ! Destroy gsmap + call mct_gsmap_clean(gsmap_global) + end subroutine decompInit_glcp !------------------------------------------------------------------------------ subroutine set_subgrid_start(gsmap, array_glob, count, start) + ! !USES: - ! use mct_mod , only : mct_aVect, mct_gsMap use mct_mod , only : mct_aVect_init, mct_aVect_importIattr, mct_aVect_scatter use mct_mod , only : mct_aVect_gather, mct_aVect_exportIattr, mct_aVect_clean @@ -865,26 +869,4 @@ subroutine set_subgrid_start(gsmap, array_glob, count, start) end subroutine set_subgrid_start - !------------------------------------------------------------------------------ - subroutine set_gsmap_global(gindex_global) - ! - ! !USES: - use spmdMod , only : mpicom, comp_id - use decompMod , only : nglob_x, nglob_y, gsmap_global - use mct_mod , only : mct_gsMap_init - ! - ! !ARGUMENTS: - integer, intent(in) :: gindex_global(:) - ! - ! !LOCAL VARIABLES: - integer :: lsize, gsize - !----------------------------------------------------------------------- - - lsize = size(gindex_global) - gsize = nglob_x * nglob_y - - call mct_gsMap_init(gsmap_global, gindex_global, mpicom, comp_id, lsize, gsize) - - end subroutine set_gsmap_global - end module decompInitMod diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index f16d3b655e..de553cf4d5 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -11,14 +11,10 @@ module decompMod use shr_sys_mod , only : shr_sys_abort use clm_varctl , only : iulog use clm_varcon , only : grlnd, nameg, namel, namec, namep, nameCohort - use mct_mod , only : mct_gsMap ! ! !PUBLIC TYPES: implicit none - ! mct data type still needed for determining subgrid gindex - type(mct_gsMap), target, public :: gsmap_global ! global seg map - ! Define possible bounds subgrid levels integer, parameter, public :: BOUNDS_SUBGRID_GRIDCELL = 1 integer, parameter, public :: BOUNDS_SUBGRID_LANDUNIT = 2 @@ -107,7 +103,6 @@ module decompMod integer, public, pointer :: gindex_patch(:) => null() integer, public, pointer :: gindex_cohort(:) => null() integer, public, pointer :: gindex_lnd2Dsoi(:) => null() - integer, public :: nglob_x, nglob_y ! global sizes !------------------------------------------------------------------------------ contains @@ -386,11 +381,11 @@ end function get_clmlevel_gsize subroutine get_clmlevel_gindex (clmlevel, gindex) ! ! !DESCRIPTION: - ! Compute arguments for gatherv, scatterv for vectors + ! Get subgrid global index space ! ! !ARGUMENTS: character(len=*), intent(in) :: clmlevel ! type of input data - integer, pointer :: gindex(:) + integer , pointer :: gindex(:) !---------------------------------------------------------------------- select case (clmlevel) From aa7ae7c2bc04c3ca6e838372e011f882ebda3f14 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 22 Jun 2021 16:51:42 -0600 Subject: [PATCH 16/63] bug fix for anthro forcing --- bld/CLMBuildNamelist.pm | 37 ++++++++++++++++++++------------ src/cpl/mct/FireDataBaseType.F90 | 5 ++++- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index dc1c6aebed..3591c6a3da 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3373,20 +3373,29 @@ sub setup_logic_popd_streams { } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_popdens', 'phys'=>$nl_flags->{'phys'}, 'cnfireson'=>$nl_flags->{'cnfireson'}, 'hgrid'=>"0.5x0.5", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); - if ($opts->{'driver'} eq "nuopc" ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_popdens', 'hgrid'=>"0.5x0.5"); - my $inputdata_rootdir = $nl_flags->{'inputdata_rootdir'}; - my $default_value = $nl->get_value('stream_meshfile_popdens'); - my $none_filename = $inputdata_rootdir . '/none'; - my $none_filename = "e_string($none_filename); - if ($default_value eq $none_filename) { - my $var = 'stream_meshfile_popdens'; - my $group = $definition->get_group_name($var); - my $val = "none"; - $val = "e_string( $val ); - $nl->set_variable_value($group, $var, $val); - } - } + # + # TODO (mvertens, 2021-06-22) the following is needed for MCT since a use case enforces this - so for now stream_meshfile_popdens will be added to the mct + # stream namelist but simply not used + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_popdens', 'hgrid'=>"0.5x0.5"); + my $inputdata_rootdir = $nl_flags->{'inputdata_rootdir'}; + my $default_value = $nl->get_value('stream_meshfile_popdens'); + my $none_filename = $inputdata_rootdir . '/none'; + my $none_filename = "e_string($none_filename); + if ($default_value eq $none_filename) { + my $var = 'stream_meshfile_popdens'; + my $group = $definition->get_group_name($var); + my $val = "none"; + $val = "e_string( $val ); + $nl->set_variable_value($group, $var, $val); + } + } else { + my $var = 'stream_meshfile_popdens'; + my $group = $definition->get_group_name($var); + my $val = "none"; + $val = "e_string( $val ); + $nl->set_variable_value($group, $var, $val); + } } else { # If bgc is NOT CN/CNDV or fire_method==nofire then make sure none of the popdens settings are set if ( defined($nl->get_value('stream_year_first_popdens')) || diff --git a/src/cpl/mct/FireDataBaseType.F90 b/src/cpl/mct/FireDataBaseType.F90 index ac7d28171f..281073f9cb 100644 --- a/src/cpl/mct/FireDataBaseType.F90 +++ b/src/cpl/mct/FireDataBaseType.F90 @@ -156,7 +156,7 @@ subroutine hdm_init( this, bounds, NLFilename ) ! ! !ARGUMENTS: implicit none - class(fire_base_type) :: this + class(fire_base_type) :: this type(bounds_type), intent(in) :: bounds character(len=*), intent(in) :: NLFilename ! Namelist filename ! @@ -170,6 +170,8 @@ subroutine hdm_init( this, bounds, NLFilename ) character(len=CL) :: stream_fldFileName_popdens ! population density streams filename character(len=CL) :: popdensmapalgo = 'bilinear' ! mapping alogrithm for population density character(len=CL) :: popdens_tintalgo = 'nearest'! time interpolation alogrithm for population density + character(len=CL) :: stream_meshfile_popdens ! not used + character(*), parameter :: subName = "('hdmdyn_init')" character(*), parameter :: F00 = "('(hdmdyn_init) ',4a)" !----------------------------------------------------------------------- @@ -180,6 +182,7 @@ subroutine hdm_init( this, bounds, NLFilename ) model_year_align_popdens, & popdensmapalgo, & stream_fldFileName_popdens, & + stream_meshfile_popdens , & popdens_tintalgo ! Default values for namelist From 985877ba2e6323564a9ac153954c72da010365a7 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 22 Jun 2021 16:52:50 -0600 Subject: [PATCH 17/63] bug fixes --- bld/CLMBuildNamelist.pm | 37 ++++++++++++++++++++------------ src/cpl/mct/FireDataBaseType.F90 | 3 ++- src/main/decompMod.F90 | 28 +++++++++++++----------- 3 files changed, 41 insertions(+), 27 deletions(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index dc1c6aebed..3591c6a3da 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -3373,20 +3373,29 @@ sub setup_logic_popd_streams { } add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_fldfilename_popdens', 'phys'=>$nl_flags->{'phys'}, 'cnfireson'=>$nl_flags->{'cnfireson'}, 'hgrid'=>"0.5x0.5", 'ssp_rcp'=>$nl_flags->{'ssp_rcp'} ); - if ($opts->{'driver'} eq "nuopc" ) { - add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_popdens', 'hgrid'=>"0.5x0.5"); - my $inputdata_rootdir = $nl_flags->{'inputdata_rootdir'}; - my $default_value = $nl->get_value('stream_meshfile_popdens'); - my $none_filename = $inputdata_rootdir . '/none'; - my $none_filename = "e_string($none_filename); - if ($default_value eq $none_filename) { - my $var = 'stream_meshfile_popdens'; - my $group = $definition->get_group_name($var); - my $val = "none"; - $val = "e_string( $val ); - $nl->set_variable_value($group, $var, $val); - } - } + # + # TODO (mvertens, 2021-06-22) the following is needed for MCT since a use case enforces this - so for now stream_meshfile_popdens will be added to the mct + # stream namelist but simply not used + if ($opts->{'driver'} eq "nuopc" ) { + add_default($opts, $nl_flags->{'inputdata_rootdir'}, $definition, $defaults, $nl, 'stream_meshfile_popdens', 'hgrid'=>"0.5x0.5"); + my $inputdata_rootdir = $nl_flags->{'inputdata_rootdir'}; + my $default_value = $nl->get_value('stream_meshfile_popdens'); + my $none_filename = $inputdata_rootdir . '/none'; + my $none_filename = "e_string($none_filename); + if ($default_value eq $none_filename) { + my $var = 'stream_meshfile_popdens'; + my $group = $definition->get_group_name($var); + my $val = "none"; + $val = "e_string( $val ); + $nl->set_variable_value($group, $var, $val); + } + } else { + my $var = 'stream_meshfile_popdens'; + my $group = $definition->get_group_name($var); + my $val = "none"; + $val = "e_string( $val ); + $nl->set_variable_value($group, $var, $val); + } } else { # If bgc is NOT CN/CNDV or fire_method==nofire then make sure none of the popdens settings are set if ( defined($nl->get_value('stream_year_first_popdens')) || diff --git a/src/cpl/mct/FireDataBaseType.F90 b/src/cpl/mct/FireDataBaseType.F90 index a9367e6d28..88fd305c9e 100644 --- a/src/cpl/mct/FireDataBaseType.F90 +++ b/src/cpl/mct/FireDataBaseType.F90 @@ -38,7 +38,6 @@ module FireDataBaseType type(shr_strdata_type) :: sdat_hdm ! Human population density input data stream type(shr_strdata_type) :: sdat_lnfm ! Lightning input data stream - contains ! ! !PUBLIC MEMBER FUNCTIONS: @@ -170,6 +169,7 @@ subroutine hdm_init( this, bounds, NLFilename ) character(len=CL) :: stream_fldFileName_popdens ! population density streams filename character(len=CL) :: popdensmapalgo = 'bilinear' ! mapping alogrithm for population density character(len=CL) :: popdens_tintalgo = 'nearest'! time interpolation alogrithm for population density + character(len=CL) :: stream_meshfile_popdens ! not used character(*), parameter :: subName = "('hdmdyn_init')" character(*), parameter :: F00 = "('(hdmdyn_init) ',4a)" !----------------------------------------------------------------------- @@ -180,6 +180,7 @@ subroutine hdm_init( this, bounds, NLFilename ) model_year_align_popdens, & popdensmapalgo, & stream_fldFileName_popdens, & + stream_meshfile_popdens , & popdens_tintalgo ! Default values for namelist diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index de553cf4d5..35a6c3d3ae 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -7,10 +7,9 @@ module decompMod ! ! !USES: use shr_kind_mod, only : r8 => shr_kind_r8 - ! Must use shr_sys_abort rather than endrun here to avoid circular dependency - use shr_sys_mod , only : shr_sys_abort + + use shr_sys_mod , only : shr_sys_abort ! use shr_sys_abort instead of endrun here to avoid circular dependency use clm_varctl , only : iulog - use clm_varcon , only : grlnd, nameg, namel, namec, namep, nameCohort ! ! !PUBLIC TYPES: implicit none @@ -42,13 +41,6 @@ module decompMod ! !PRIVATE TYPES: private ! (now mostly public for decompinitmod) - integer,public :: nclumps ! total number of clumps across all processors - integer,public :: numg ! total number of gridcells on all procs - integer,public :: numl ! total number of landunits on all procs - integer,public :: numc ! total number of columns on all procs - integer,public :: nump ! total number of patchs on all procs - integer,public :: numCohort ! total number of fates cohorts on all procs - type bounds_type integer :: begg, endg ! beginning and ending gridcell index integer :: begl, endl ! beginning and ending landunit index @@ -84,7 +76,7 @@ module decompMod integer :: ncells ! number of gridcells in clump integer :: nlunits ! number of landunits in clump integer :: ncols ! number of columns in clump - integer :: npatches ! number of patchs in clump + integer :: npatches ! number of patchs in clump integer :: nCohorts ! number of cohorts in proc integer :: begg, endg ! beginning and ending gridcell index integer :: begl, endl ! beginning and ending landunit index @@ -95,7 +87,15 @@ module decompMod public clump_type type(clump_type),public, allocatable :: clumps(:) - ! NOTE: the following are allocated with a lower bound of 1! + ! ---global sizes + integer,public :: nclumps ! total number of clumps across all processors + integer,public :: numg ! total number of gridcells on all procs + integer,public :: numl ! total number of landunits on all procs + integer,public :: numc ! total number of columns on all procs + integer,public :: nump ! total number of patchs on all procs + integer,public :: numCohort ! total number of fates cohorts on all procs + + ! ---NOTE: the following are allocated with a lower bound of 1! integer, public, pointer :: gindex_global(:) => null() ! includes ocean points integer, public, pointer :: gindex_grc(:) => null() ! does not include ocean points integer, public, pointer :: gindex_lun(:) => null() @@ -352,6 +352,7 @@ integer function get_clmlevel_gsize (clmlevel) ! ! !USES: use domainMod , only : ldomain + use clm_varcon, only : grlnd, nameg, namel, namec, namep, nameCohort ! ! !ARGUMENTS: character(len=*), intent(in) :: clmlevel !type of clm 1d array @@ -383,6 +384,9 @@ subroutine get_clmlevel_gindex (clmlevel, gindex) ! !DESCRIPTION: ! Get subgrid global index space ! + ! !USES + use clm_varcon , only : grlnd, nameg, namel, namec, namep, nameCohort + ! ! !ARGUMENTS: character(len=*), intent(in) :: clmlevel ! type of input data integer , pointer :: gindex(:) From 6553325139d156e11aa5ff56920dc5cf6b19cddc Mon Sep 17 00:00:00 2001 From: mvertens Date: Wed, 23 Jun 2021 12:03:40 -0600 Subject: [PATCH 18/63] more bug fixes --- Externals.cfg | 2 +- src/cpl/share_esmf/FireDataBaseType.F90 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index 345c84089d..0d8ae45572 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -51,7 +51,7 @@ required = True local_path = components/cdeps protocol = git repo_url = https://github.com/ESCOMP/CDEPS.git -tag = cdeps0.12.10 +tag = cdeps0.12.11 externals = Externals_CDEPS.cfg required = True diff --git a/src/cpl/share_esmf/FireDataBaseType.F90 b/src/cpl/share_esmf/FireDataBaseType.F90 index 18f5f39acd..652295e0c5 100644 --- a/src/cpl/share_esmf/FireDataBaseType.F90 +++ b/src/cpl/share_esmf/FireDataBaseType.F90 @@ -375,7 +375,7 @@ subroutine lnfm_init( this, bounds, NLFilename ) write(iulog,'(a)' ) 'light_stream settings:' write(iulog,'(a,i8)') ' stream_year_first_lightng = ',stream_year_first_lightng write(iulog,'(a,i8)') ' stream_year_last_lightng = ',stream_year_last_lightng - write(iulog,'(a,a)' ) ' model_year_align_lightng = ',model_year_align_lightng + write(iulog,'(a,i8)') ' model_year_align_lightng = ',model_year_align_lightng write(iulog,'(a,a)' ) ' stream_fldFileName_lightng = ',trim(stream_fldFileName_lightng) write(iulog,'(a,a)' ) ' stream_meshfile = ',trim(stream_meshfile_lightng) write(iulog,'(a,a)' ) ' stream_varnames = ','lnfm' From a2eb98e97ab7703bfbb92617575e5eedc9a39a40 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 23 Jun 2021 15:12:29 -0600 Subject: [PATCH 19/63] Reverse mods in SoilBiogeochemNitrogenFluxType.F90 as per review --- .../SoilBiogeochemNitrogenFluxType.F90 | 120 ++++++++++-------- 1 file changed, 64 insertions(+), 56 deletions(-) diff --git a/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 b/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 index 53e89fcbb5..d852c35496 100644 --- a/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 +++ b/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 @@ -334,25 +334,27 @@ subroutine InitHistory(this, bounds) do l = 1, ndecomp_cascade_transitions ! vertically integrated fluxes - !-- mineralization/immobilization fluxes - this%decomp_cascade_sminn_flux_col(begc:endc,l) = spval - data1dptr => this%decomp_cascade_sminn_flux_col(:,l) - if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then - fieldname = 'SMINN_TO_'//& - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l))) - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& - 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - else - fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'N_TO_SMINN' - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) - endif - call hist_addfld1d (fname=fieldname, units='gN/m^2', & - avgflag='A', long_name=longname, & - ptr_col=data1dptr, default='inactive') + !-- mineralization/immobilization fluxes (none from CWD) + if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then + this%decomp_cascade_sminn_flux_col(begc:endc,l) = spval + data1dptr => this%decomp_cascade_sminn_flux_col(:,l) + if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then + fieldname = 'SMINN_TO_'//& + trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l))) + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& + 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) + else + fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'N_TO_SMINN' + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) + endif + call hist_addfld1d (fname=fieldname, units='gN/m^2', & + avgflag='A', long_name=longname, & + ptr_col=data1dptr, default='inactive') + end if !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then @@ -369,25 +371,27 @@ subroutine InitHistory(this, bounds) ! vertically resolved fluxes if ( nlevdecomp_full > 1 ) then - !-- mineralization/immobilization fluxes - this%decomp_cascade_sminn_flux_vr_col(begc:endc,:,l) = spval - data2dptr => this%decomp_cascade_sminn_flux_vr_col(:,:,l) - if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then - fieldname = 'SMINN_TO_'& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& - trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l)))//trim(vr_suffix) - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& - 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - else - fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& - //'N_TO_SMINN'//trim(vr_suffix) - longname = 'mineral N flux for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) + !-- mineralization/immobilization fluxes (none from CWD) + if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then + this%decomp_cascade_sminn_flux_vr_col(begc:endc,:,l) = spval + data2dptr => this%decomp_cascade_sminn_flux_vr_col(:,:,l) + if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then + fieldname = 'SMINN_TO_'& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l)))//trim(vr_suffix) + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& + 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) + else + fieldname = trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))& + //'N_TO_SMINN'//trim(vr_suffix) + longname = 'mineral N flux for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l))) + endif + call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & + avgflag='A', long_name=longname, & + ptr_col=data2dptr, default='inactive') endif - call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & - avgflag='A', long_name=longname, & - ptr_col=data2dptr, default='inactive') !-- transfer fluxes (none from terminal pool, if present) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then @@ -418,7 +422,7 @@ subroutine InitHistory(this, bounds) ptr_col=this%som_n_leached_col, default='inactive') do k = 1, ndecomp_pools - if ( .not. decomp_cascade_con%is_cwd(k) ) then ! none from CWD + if ( .not. decomp_cascade_con%is_cwd(k) ) then this%decomp_npools_leached_col(begc:endc,k) = spval data1dptr => this%decomp_npools_leached_col(:,k) fieldname = 'M_'//trim(decomp_cascade_con%decomp_pool_name_history(k))//'N_TO_LEACHING' @@ -439,28 +443,32 @@ subroutine InitHistory(this, bounds) if (.not. use_nitrif_denitrif) then do l = 1, ndecomp_cascade_transitions - !-- denitrification fluxes - this%sminn_to_denit_decomp_cascade_col(begc:endc,l) = spval - data1dptr => this%sminn_to_denit_decomp_cascade_col(:,l) - fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l)) - longname = 'denitrification for decomp. of '& - //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l)))//& - 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - call hist_addfld1d (fname=fieldname, units='gN/m^2', & - avgflag='A', long_name=longname, & - ptr_col=data1dptr, default='inactive') - - if ( nlevdecomp_full > 1 ) then - !-- denitrification fluxes - this%sminn_to_denit_decomp_cascade_vr_col(begc:endc,:,l) = spval - data2dptr => this%sminn_to_denit_decomp_cascade_vr_col(:,:,l) - fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l))//trim(vr_suffix) + !-- denitrification fluxes (none from CWD) + if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then + this%sminn_to_denit_decomp_cascade_col(begc:endc,l) = spval + data1dptr => this%sminn_to_denit_decomp_cascade_col(:,l) + fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l)) longname = 'denitrification for decomp. of '& //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l)))//& 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) - call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & + call hist_addfld1d (fname=fieldname, units='gN/m^2', & avgflag='A', long_name=longname, & - ptr_col=data2dptr, default='inactive') + ptr_col=data1dptr, default='inactive') + endif + + if ( nlevdecomp_full > 1 ) then + !-- denitrification fluxes (none from CWD) + if ( .not. decomp_cascade_con%is_cwd(decomp_cascade_con%cascade_donor_pool(l)) ) then + this%sminn_to_denit_decomp_cascade_vr_col(begc:endc,:,l) = spval + data2dptr => this%sminn_to_denit_decomp_cascade_vr_col(:,:,l) + fieldname = 'SMINN_TO_DENIT_'//trim(decomp_cascade_con%cascade_step_name(l))//trim(vr_suffix) + longname = 'denitrification for decomp. of '& + //trim(decomp_cascade_con%decomp_pool_name_long(decomp_cascade_con%cascade_donor_pool(l)))//& + 'to '//trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l))) + call hist_addfld_decomp (fname=fieldname, units='gN/m^3', type2d='levdcmp', & + avgflag='A', long_name=longname, & + ptr_col=data2dptr, default='inactive') + endif endif end do end if From eb696be8d3ee2045b4211afedac14c472c43e486 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Wed, 23 Jun 2021 20:47:37 -0600 Subject: [PATCH 20/63] updated CIME to include a branch for lilac build changes --- Externals.cfg | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Externals.cfg b/Externals.cfg index 0d8ae45572..6e7c370bb0 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -33,11 +33,13 @@ repo_url = https://github.com/nmizukami/mizuRoute hash = 34723c2 required = True +# this is a branch off of cime5.8.47, feature/refactor_lilac_build that refactors the lilac build [cime] local_path = cime protocol = git repo_url = https://github.com/ESMCI/cime -tag = cime5.8.47 +hash = aa5caa96a +#tag = cime5.8.47 required = True [cmeps] From cde6ceed9f5fb58ff38d322aa86d7255fbbfecf8 Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Thu, 24 Jun 2021 15:22:17 -0600 Subject: [PATCH 21/63] Update expected fails --- cime_config/testdefs/ExpectedTestFails.xml | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/cime_config/testdefs/ExpectedTestFails.xml b/cime_config/testdefs/ExpectedTestFails.xml index 39d33e2292..f0e7ac509b 100644 --- a/cime_config/testdefs/ExpectedTestFails.xml +++ b/cime_config/testdefs/ExpectedTestFails.xml @@ -44,20 +44,6 @@ - - - FAIL - ESMCI/cime#3970 - - - - - - FAIL - ESMCI/cime#3970 - - - FAIL @@ -121,6 +107,13 @@ + + + FAIL + #1356 + + + From ae5a562747f2cb57450204eb8126cdbbf5058873 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 24 Jun 2021 15:49:49 -0600 Subject: [PATCH 22/63] Introducing cwdhr_col Using lithr_col as template --- src/biogeochem/CNDriverMod.F90 | 3 ++ src/biogeochem/CNVegCarbonFluxType.F90 | 13 +++----- .../SoilBiogeochemCarbonFluxType.F90 | 33 ++++++++++++++++++- .../SoilBiogeochemDecompCascadeBGCMod.F90 | 2 -- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/biogeochem/CNDriverMod.F90 b/src/biogeochem/CNDriverMod.F90 index b5d5ce97cd..84f9164b16 100644 --- a/src/biogeochem/CNDriverMod.F90 +++ b/src/biogeochem/CNDriverMod.F90 @@ -1036,6 +1036,7 @@ subroutine CNDriverSummarizeFluxes(bounds, & call cnveg_carbonflux_inst%Summary(bounds, num_soilc, filter_soilc, num_soilp, filter_soilp, & isotope='bulk', & soilbiogeochem_hr_col=soilbiogeochem_carbonflux_inst%hr_col(begc:endc), & + soilbiogeochem_cwdhr_col=soilbiogeochem_carbonflux_inst%cwdhr_col(begc:endc), & soilbiogeochem_lithr_col=soilbiogeochem_carbonflux_inst%lithr_col(begc:endc), & soilbiogeochem_decomp_cascade_ctransfer_col=& soilbiogeochem_carbonflux_inst%decomp_cascade_ctransfer_col(begc:endc,1:ndecomp_cascade_transitions), & @@ -1045,6 +1046,7 @@ subroutine CNDriverSummarizeFluxes(bounds, & call c13_cnveg_carbonflux_inst%Summary(bounds, num_soilc, filter_soilc, num_soilp, filter_soilp, & isotope='c13', & soilbiogeochem_hr_col=c13_soilbiogeochem_carbonflux_inst%hr_col(begc:endc), & + soilbiogeochem_cwdhr_col=c13_soilbiogeochem_carbonflux_inst%cwdhr_col(begc:endc), & soilbiogeochem_lithr_col=c13_soilbiogeochem_carbonflux_inst%lithr_col(begc:endc), & soilbiogeochem_decomp_cascade_ctransfer_col=& c13_soilbiogeochem_carbonflux_inst%decomp_cascade_ctransfer_col(begc:endc,1:ndecomp_cascade_transitions), & @@ -1055,6 +1057,7 @@ subroutine CNDriverSummarizeFluxes(bounds, & call c14_cnveg_carbonflux_inst%Summary(bounds, num_soilc, filter_soilc, num_soilp, filter_soilp, & isotope='c14', & soilbiogeochem_hr_col=c14_soilbiogeochem_carbonflux_inst%hr_col(begc:endc), & + soilbiogeochem_cwdhr_col=c14_soilbiogeochem_carbonflux_inst%cwdhr_col(begc:endc), & soilbiogeochem_lithr_col=c14_soilbiogeochem_carbonflux_inst%lithr_col(begc:endc), & soilbiogeochem_decomp_cascade_ctransfer_col=& c14_soilbiogeochem_carbonflux_inst%decomp_cascade_ctransfer_col(begc:endc,1:ndecomp_cascade_transitions), & diff --git a/src/biogeochem/CNVegCarbonFluxType.F90 b/src/biogeochem/CNVegCarbonFluxType.F90 index 061f3d3366..706ef40cb7 100644 --- a/src/biogeochem/CNVegCarbonFluxType.F90 +++ b/src/biogeochem/CNVegCarbonFluxType.F90 @@ -282,7 +282,6 @@ module CNVegCarbonFluxType real(r8), pointer :: xsmrpool_recover_patch (:) ! (gC/m2/s) C flux assigned to recovery of negative cpool real(r8), pointer :: xsmrpool_c13ratio_patch (:) ! C13/C(12+13) ratio for xsmrpool (proportion) - real(r8), pointer :: cwdc_hr_col (:) ! (gC/m2/s) col-level coarse woody debris C heterotrophic respiration real(r8), pointer :: cwdc_loss_col (:) ! (gC/m2/s) col-level coarse woody debris C loss real(r8), pointer :: litterc_loss_col (:) ! (gC/m2/s) col-level litter C loss real(r8), pointer :: frootc_alloc_patch (:) ! (gC/m2/s) patch-level fine root C alloc @@ -643,7 +642,6 @@ subroutine InitAllocate(this, bounds, carbon_type) allocate(this%crop_seedc_to_leaf_patch (begp:endp)) ; this%crop_seedc_to_leaf_patch (:) =nan - allocate(this%cwdc_hr_col (begc:endc)) ; this%cwdc_hr_col (:) =nan allocate(this%cwdc_loss_col (begc:endc)) ; this%cwdc_loss_col (:) =nan allocate(this%litterc_loss_col (begc:endc)) ; this%litterc_loss_col (:) =nan @@ -3890,7 +3888,6 @@ subroutine SetValues ( this, & i = filter_column(fi) this%grainc_to_cropprodc_col(i) = value_column - this%cwdc_hr_col(i) = value_column this%cwdc_loss_col(i) = value_column this%litterc_loss_col(i) = value_column @@ -3997,8 +3994,8 @@ end subroutine ZeroDwt !----------------------------------------------------------------------- subroutine Summary_carbonflux(this, & - bounds, num_soilc, filter_soilc, num_soilp, filter_soilp, & - isotope, soilbiogeochem_hr_col, soilbiogeochem_lithr_col, & + bounds, num_soilc, filter_soilc, num_soilp, filter_soilp, isotope, & + soilbiogeochem_hr_col, soilbiogeochem_cwdhr_col, soilbiogeochem_lithr_col, & soilbiogeochem_decomp_cascade_ctransfer_col, & product_closs_grc) ! @@ -4022,6 +4019,7 @@ subroutine Summary_carbonflux(this, & integer , intent(in) :: filter_soilp(:) ! filter for soil patches character(len=*) , intent(in) :: isotope real(r8) , intent(in) :: soilbiogeochem_hr_col(bounds%begc:) + real(r8) , intent(in) :: soilbiogeochem_cwdhr_col(bounds%begc:) real(r8) , intent(in) :: soilbiogeochem_lithr_col(bounds%begc:) real(r8) , intent(in) :: soilbiogeochem_decomp_cascade_ctransfer_col(bounds%begc:,1:) real(r8) , intent(in) :: product_closs_grc(bounds%begg:) @@ -4512,9 +4510,6 @@ subroutine Summary_carbonflux(this, & this%ar_col(c) + & soilbiogeochem_hr_col(c) - ! coarse woody debris heterotrophic respiration - this%cwdc_hr_col(c) = 0._r8 - ! net ecosystem production, excludes fire flux, landcover change, ! and loss from wood products, positive for sink (NEP) this%nep_col(c) = & @@ -4576,7 +4571,7 @@ subroutine Summary_carbonflux(this, & ! coarse woody debris C loss do fc = 1,num_soilc c = filter_soilc(fc) - this%cwdc_loss_col(c) = 0._r8 + this%cwdc_loss_col(c) = soilbiogeochem_cwdhr_col(c) end do associate(is_cwd => decomp_cascade_con%is_cwd) ! TRUE => pool is a cwd pool do l = 1, ndecomp_pools diff --git a/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 b/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 index 0a1ae06174..e3be778a5c 100644 --- a/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 +++ b/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 @@ -43,6 +43,7 @@ module SoilBiogeochemCarbonFluxType real(r8), pointer :: fphr_col (:,:) ! fraction of potential heterotrophic respiration real(r8), pointer :: hr_col (:) ! (gC/m2/s) total heterotrophic respiration + real(r8), pointer :: cwdhr_col (:) ! (gC/m2/s) coarse woody debris heterotrophic respiration real(r8), pointer :: lithr_col (:) ! (gC/m2/s) litter heterotrophic respiration real(r8), pointer :: somhr_col (:) ! (gC/m2/s) soil organic matter heterotrophic res real(r8), pointer :: soilc_change_col (:) ! (gC/m2/s) FUN used soil C @@ -130,6 +131,7 @@ subroutine InitAllocate(this, bounds) this%decomp_cpools_transport_tendency_col(:,:,:)= nan allocate(this%hr_col (begc:endc)) ; this%hr_col (:) = nan + allocate(this%cwdhr_col (begc:endc)) ; this%cwdhr_col (:) = nan allocate(this%lithr_col (begc:endc)) ; this%lithr_col (:) = nan allocate(this%somhr_col (begc:endc)) ; this%somhr_col (:) = nan allocate(this%soilc_change_col (begc:endc)) ; this%soilc_change_col (:) = nan @@ -204,6 +206,11 @@ subroutine InitHistory(this, bounds, carbon_type) avgflag='A', long_name='total heterotrophic respiration', & ptr_col=this%hr_col) + this%cwdhr_col(begc:endc) = spval + call hist_addfld1d (fname='CWDC_HR', units='gC/m^2/s', & + avgflag='A', long_name='cwd C heterotrophic respiration', & + ptr_col=this%cwdhr_col) + this%lithr_col(begc:endc) = spval call hist_addfld1d (fname='LITTERC_HR', units='gC/m^2/s', & avgflag='A', long_name='litter C heterotrophic respiration', & @@ -383,9 +390,14 @@ subroutine InitHistory(this, bounds, carbon_type) avgflag='A', long_name='C13 total heterotrophic respiration', & ptr_col=this%hr_col) + this%cwdhr_col(begc:endc) = spval + call hist_addfld1d (fname='C13_CWDC_HR', units='gC/m^2/s', & + avgflag='A', long_name='C13 cwd C heterotrophic respiration', & + ptr_col=this%cwdhr_col, default='inactive') + this%lithr_col(begc:endc) = spval call hist_addfld1d (fname='C13_LITTERC_HR', units='gC13/m^2/s', & - avgflag='A', long_name='C13 fine root C litterfall to litter 3 C', & + avgflag='A', long_name='C13 litter C heterotrophic respiration', & ptr_col=this%lithr_col, default='inactive') this%somhr_col(begc:endc) = spval @@ -452,6 +464,11 @@ subroutine InitHistory(this, bounds, carbon_type) avgflag='A', long_name='C14 total heterotrophic respiration', & ptr_col=this%hr_col) + this%cwdhr_col(begc:endc) = spval + call hist_addfld1d (fname='C14_CWDC_HR', units='gC/m^2/s', & + avgflag='A', long_name='C14 cwd C heterotrophic respiration', & + ptr_col=this%cwdhr_col, default='inactive') + this%lithr_col(begc:endc) = spval call hist_addfld1d (fname='C14_LITTERC_HR', units='gC14/m^2/s', & avgflag='A', long_name='C14 litter carbon heterotrophic respiration', & @@ -709,6 +726,7 @@ subroutine SetValues ( this, num_column, filter_column, value_column) this%som_c_leached_col(i) = value_column this%somhr_col(i) = value_column this%lithr_col(i) = value_column + this%cwdhr_col(i) = value_column this%soilc_change_col(i) = value_column end do @@ -816,11 +834,24 @@ subroutine Summary(this, bounds, num_soilc, filter_soilc) end do end associate + ! coarse woody debris heterotrophic respiration (CWDHR) + associate(is_cwd => decomp_cascade_con%is_cwd) ! TRUE => pool is a cwd pool + do k = 1, ndecomp_cascade_transitions + if ( is_cwd(decomp_cascade_con%cascade_donor_pool(k)) ) then + do fc = 1,num_soilc + c = filter_soilc(fc) + this%cwdhr_col(c) = this%cwdhr_col(c) + this%decomp_cascade_hr_col(c,k) + end do + end if + end do + end associate + ! total heterotrophic respiration (HR) do fc = 1,num_soilc c = filter_soilc(fc) this%hr_col(c) = & + this%cwdhr_col(c) + & this%lithr_col(c) + & this%somhr_col(c) diff --git a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 index 318b014c20..75fa3c0089 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 @@ -606,8 +606,6 @@ subroutine decomp_rate_constants_bgc(bounds, num_soilc, filter_soilc, & real(r8):: k_s2 ! decomposition rate constant SOM 2 (1/sec) real(r8):: k_s3 ! decomposition rate constant SOM 3 (1/sec) real(r8):: k_frag ! fragmentation rate constant CWD (1/sec) - real(r8):: cwdc_loss ! fragmentation rate for CWD carbon (gC/m2/s) - real(r8):: cwdn_loss ! fragmentation rate for CWD nitrogen (gN/m2/s) real(r8):: Q10 ! temperature dependence real(r8):: froz_q10 ! separate q10 for frozen soil respiration rates. default to same as above zero rates real(r8):: decomp_depth_efolding ! (meters) e-folding depth for reduction in decomposition [ From 8b2fe3ef4840f1bbfa7414ee968ea3f02afd4348 Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Thu, 24 Jun 2021 15:54:52 -0600 Subject: [PATCH 23/63] Point to cime branch tag Equivalent to the hash that was pointed to before --- Externals.cfg | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index 6e7c370bb0..881b4e6ee7 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -33,13 +33,11 @@ repo_url = https://github.com/nmizukami/mizuRoute hash = 34723c2 required = True -# this is a branch off of cime5.8.47, feature/refactor_lilac_build that refactors the lilac build [cime] local_path = cime protocol = git repo_url = https://github.com/ESMCI/cime -hash = aa5caa96a -#tag = cime5.8.47 +tag = branch_tags/cime5.8.47_a01 required = True [cmeps] From 0dabdf9f5f29d7373653c603fad34121fe9037e1 Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Thu, 24 Jun 2021 16:05:45 -0600 Subject: [PATCH 24/63] Back out changes in CanopyStateType These were just for debugging --- src/biogeophys/CanopyStateType.F90 | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/biogeophys/CanopyStateType.F90 b/src/biogeophys/CanopyStateType.F90 index ddcb32c83a..c5f1bc30f6 100644 --- a/src/biogeophys/CanopyStateType.F90 +++ b/src/biogeophys/CanopyStateType.F90 @@ -200,7 +200,12 @@ subroutine InitHistory(this, bounds) avgflag='A', long_name='Aboveground leaf biomass', & ptr_patch=this%leaf_biomass_patch, default='inactive') - !DEBUG + if (use_cn .or. use_fates) then + this%fsun_patch(begp:endp) = spval + call hist_addfld1d (fname='FSUN', units='proportion', & + avgflag='A', long_name='sunlit fraction of canopy', & + ptr_patch=this%fsun_patch, default='inactive') + this%htop_patch(begp:endp) = spval call hist_addfld1d (fname='HTOP', units='m', & avgflag='A', long_name='canopy top', & @@ -210,13 +215,6 @@ subroutine InitHistory(this, bounds) call hist_addfld1d (fname='HBOT', units='m', & avgflag='A', long_name='canopy bottom', & ptr_patch=this%hbot_patch, default='inactive') - !DEBUG - - if (use_cn .or. use_fates) then - this%fsun_patch(begp:endp) = spval - call hist_addfld1d (fname='FSUN', units='proportion', & - avgflag='A', long_name='sunlit fraction of canopy', & - ptr_patch=this%fsun_patch, default='inactive') this%displa_patch(begp:endp) = spval call hist_addfld1d (fname='DISPLA', units='m', & From 572f4b4c62d2bb7a4ce238a78ea75688bff60995 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 25 Jun 2021 13:06:16 -0600 Subject: [PATCH 25/63] Introducing new test to the cheyenne test-suite ERS_Ld3.f10_f10_mg37.I2000Clm51Bgc.cheyenne_intel.clm-ciso_cwd_hr where the new testmod ciso_cwd_hr adds to the ciso namelist two lines: hist_fincl1 = 'CWDC_HR','C13_CWDC_HR','C14_CWDC_HR','CWD_HR_L2','CWD_HR_L2_vr','CWD_HR_L3','CWD_HR_L3_vr' paramfile = '/glade/p/cesm/cseg/inputdata/lnd/clm2/paramdata/ctsm51_params.c210624.nc' where this params file changes the values of rf_cwdl*_bgc from 0 to 0.5 --- cime_config/testdefs/testlist_clm.xml | 8 ++++++++ cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/README | 8 ++++++++ .../testmods_dirs/clm/ciso_cwd_hr/include_user_mods | 1 + .../testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm | 2 ++ src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 | 2 +- 5 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/README create mode 100644 cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/include_user_mods create mode 100644 cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm diff --git a/cime_config/testdefs/testlist_clm.xml b/cime_config/testdefs/testlist_clm.xml index 27f7e1d4ac..9d37f60c48 100644 --- a/cime_config/testdefs/testlist_clm.xml +++ b/cime_config/testdefs/testlist_clm.xml @@ -271,6 +271,14 @@ + + + + + + + + diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/README b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/README new file mode 100644 index 0000000000..e8eee75e53 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/README @@ -0,0 +1,8 @@ +This points to an alternate params file with +rf_cwdl2_bgc = 0.5 +rf_cwdl3_bgc = 0.5 +while by default these parameters equal zero. + +The test outputs inactive history fields that would contain zeros +when running with the default params file and should be greater than zero +when running with the alternate params file. diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/include_user_mods b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/include_user_mods new file mode 100644 index 0000000000..ce640345c5 --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/include_user_mods @@ -0,0 +1 @@ +../ciso diff --git a/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm new file mode 100644 index 0000000000..7f8887875c --- /dev/null +++ b/cime_config/testdefs/testmods_dirs/clm/ciso_cwd_hr/user_nl_clm @@ -0,0 +1,2 @@ +paramfile = '/glade/p/cesm/cseg/inputdata/lnd/clm2/paramdata/ctsm51_params.c210624.nc' +hist_fincl1 = 'CWDC_HR','C13_CWDC_HR','C14_CWDC_HR','CWD_HR_L2','CWD_HR_L2_vr','CWD_HR_L3','CWD_HR_L3_vr' diff --git a/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 b/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 index e3be778a5c..0e4879fb4a 100644 --- a/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 +++ b/src/soilbiogeochem/SoilBiogeochemCarbonFluxType.F90 @@ -209,7 +209,7 @@ subroutine InitHistory(this, bounds, carbon_type) this%cwdhr_col(begc:endc) = spval call hist_addfld1d (fname='CWDC_HR', units='gC/m^2/s', & avgflag='A', long_name='cwd C heterotrophic respiration', & - ptr_col=this%cwdhr_col) + ptr_col=this%cwdhr_col, default='inactive') this%lithr_col(begc:endc) = spval call hist_addfld1d (fname='LITTERC_HR', units='gC/m^2/s', & From 7b5c41ae4664701d5d7e61c12ab6bec0f5b3dd42 Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Fri, 25 Jun 2021 15:29:12 -0600 Subject: [PATCH 26/63] Update ChangeLog --- doc/ChangeLog | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 88 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index e575e27feb..1d56edd88b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,91 @@ =============================================================== +Tag name: ctsm5.1.dev044 +Originator(s): mvertens (Mariana Vertenstein) +Date: Thu Jun 24 15:59:08 MDT 2021 +One-line Summary: New stream functionality when using NUOPC or LILAC + +Purpose and description of changes +---------------------------------- + +This tag creates new stream functionality when using the NUOPC and LILAC +caps, and maintains backwards compatibility with the older CPL7 stream +functionality when using the MCT cap. + +- New stream code has been placed in src/cpl/share_esmf (so that they + can also be leveraged by LILAC) +- Older stream code for mct is now in src/cpl/mct +- LILAC interface has been changed to leverage the new stream code as well + +Where possible share code was used. In particular, this holds for SatellitePhenologyMod.F90. + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm5_1 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Notes of particular relevance for users +--------------------------------------- + +Changes to CTSM's user interface (e.g., new/renamed XML or namelist variables): +- New mesh stream entries are needed now for NUOPC and LILAC compsets + +Substantial timing or memory changes: None for mct. For +ERS_Ly3_P72x2_Vnuopc.f10_f10_mg37.IHistClm50BgcCropG.cheyenne_intel.clm-cropMonthOutput, +overall run time is slightly less than the baseline - probably within +machine variability. A more careful investigation would be needed to +determine if the CDEPS streams have changed performance significantly +relative to the MCT-based streams, but the overall timing suggests that +there probably aren't *large* differences. + +Testing summary: +---------------- + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + cheyenne ---- ok + izumi ------- ok + + Ran most testing on eb696be8d; from this hash, there were FIELDLIST + diffs for SP cases. Reran the tests with FIELDLIST diffs from the + final version and generated new, fixed baselines. + +Answer changes +-------------- + +Changes answers relative to baseline: YES, just for NUOPC/LILAC configurations + + Summarize any changes to answers, i.e., + - what code configurations: NUOPC/LILAC + - what platforms/compilers: all + - nature of change (roundoff; larger than roundoff/same climate; new climate): + Larger than roundoff / same climate. Diffs arise due to changes in + the interpolation used in cdeps streams vs. the old mct-based + streams. Diffs generally keep 3-4 digits of equivalence or better. + +Other details +------------- + +List any externals directories updated (cime, rtm, mosart, cism, fates, etc.): +- cime: cime5.8.47 -> branch_tags/cime5.8.47_a01 +- cdeps: cdeps0.12.4 -> cdeps0.12.11 + +Pull Requests that document the changes (include PR ids): +https://github.com/escomp/ctsm/issues/1356 + +=============================================================== +=============================================================== Tag name: ctsm5.1.dev043 Originator(s): slevis/ekluzek (Samuel Levis,SLevis Consulting,303-665-1310) Date: Thu Jun 3 17:14:30 MDT 2021 diff --git a/doc/ChangeSum b/doc/ChangeSum index ab3857538d..615c7284bb 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.1.dev044 mvertens 06/24/2021 New stream functionality when using NUOPC or LILAC ctsm5.1.dev043 slevis 06/03/2021 Refactor of CascadeBGC code in preparation for MIMICS ctsm5.1.dev042 erik 05/28/2021 Small answer changes for double precision constants and soil limits ctsm5.1.dev041 rgknox 05/27/2021 bring FATES API up to sci.1.46.0_api.16.0.0 (methane and cn hooks) From 364e1d095c7742e5aeaee28b9deac69d25b8ff35 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 25 Jun 2021 16:23:05 -0600 Subject: [PATCH 27/63] First draft of updated ChangeLog --- doc/ChangeLog | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 3 ++ 2 files changed, 119 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index e575e27feb..be8cb4c72b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,120 @@ =============================================================== +Tag name: ctsm5.1.dev046 +Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) +Date: Fri Jun 25 14:08:24 MDT 2021 +One-line Summary: Include CWD in heterotrophic respiration (HR) + +Purpose and description of changes +---------------------------------- + + Params file sets the respiration fractions for CWD to zero: + rf_cwdl2_bgc = 0 + rf_cwdl3_bgc = 0 + The model has no code to handle rf_cwd* > 0. So... + - I have introduced cwdhr_col to track this HR the same way that we track + lithr_col for litter. + - I have removed if-statements that prevented CWD HR pools and decomposition + from writing to history. + - I have introduced a new test to the cheyenne test-suite that makes active + seven history fields pertaining to CWD HR and points to a params file with + rf_cwd* > 0. I have confirmed that the new test returns the new active + variables as greater than 0 when pointing to the new params file and equal + to 0 when pointing to the default params file. + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm5_1 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed or introduced +------------------------ + +Issues fixed (include CTSM Issue #): #1361 + + +Notes of particular relevance for users +--------------------------------------- +Substantial timing or memory changes: + This warning appears in many tests on both cheyenne and izumi: + Memory usage increase > 10% from baseline + +Notes of particular relevance for developers: +--------------------------------------------- +NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide + +Changes to tests or testing: + New test added to cheyenne test-suite (see details in + Purpose and description of changes) + +Testing summary: +---------------- + +[Remove any lines that don't apply.] + + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + cheyenne - + + tools-tests (test/tools) (if tools have been changed): + + cheyenne - + + PTCLM testing (tools/shared/PTCLM/test): (if cime or cime_config are changed) + (PTCLM is being deprecated, so we only expect this to be done on occasion) + + cheyenne - + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + (any machine) - + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + cheyenne ---- OK + izumi ------- OK + + fates tests: + cheyenne ---- + + any other testing (give details below): + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + + +Answer changes +-------------- + +Changes answers relative to baseline: No + + +Other details +------------- +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/1400 + +=============================================================== +=============================================================== +Tag name: ctsm5.1.dev045 +=============================================================== +=============================================================== +Tag name: ctsm5.1.dev044 +=============================================================== +=============================================================== Tag name: ctsm5.1.dev043 Originator(s): slevis/ekluzek (Samuel Levis,SLevis Consulting,303-665-1310) Date: Thu Jun 3 17:14:30 MDT 2021 diff --git a/doc/ChangeSum b/doc/ChangeSum index ab3857538d..e75484191e 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,8 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.1.dev046 slevis 06/25/2021 Include CWD in heterotrophic respiration + ctsm5.1.dev045 + ctsm5.1.dev044 ctsm5.1.dev043 slevis 06/03/2021 Refactor of CascadeBGC code in preparation for MIMICS ctsm5.1.dev042 erik 05/28/2021 Small answer changes for double precision constants and soil limits ctsm5.1.dev041 rgknox 05/27/2021 bring FATES API up to sci.1.46.0_api.16.0.0 (methane and cn hooks) From 65ab79866b706e13c56c05a3d19c7ea522883024 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 25 Jun 2021 16:28:22 -0600 Subject: [PATCH 28/63] Minor update to ChangeLog --- doc/ChangeLog | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index be8cb4c72b..f70abb6c2f 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -56,8 +56,9 @@ Notes of particular relevance for developers: NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide Changes to tests or testing: - New test added to cheyenne test-suite (see details in - Purpose and description of changes) + New test added to cheyenne test-suite: + ERS_Ld3.f10_f10_mg37.I2000Clm51Bgc.cheyenne_intel.clm-ciso_cwd_hr + Details in "Purpose and description of changes" Testing summary: ---------------- From f179d0a4dfd039a80800376a7aec3a521763d7f6 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Sat, 26 Jun 2021 15:09:45 -0600 Subject: [PATCH 29/63] Make history fields descriptive instead of labeling by number --- src/biogeochem/CNVegCarbonFluxType.F90 | 16 ++++++---------- src/biogeochem/CNVegNitrogenFluxType.F90 | 6 ++---- .../SoilBiogeochemDecompCascadeBGCMod.F90 | 12 ++++++------ 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/src/biogeochem/CNVegCarbonFluxType.F90 b/src/biogeochem/CNVegCarbonFluxType.F90 index 706ef40cb7..212a6be327 100644 --- a/src/biogeochem/CNVegCarbonFluxType.F90 +++ b/src/biogeochem/CNVegCarbonFluxType.F90 @@ -782,7 +782,6 @@ subroutine InitHistory(this, bounds, carbon_type) ! ! !LOCAL VARIABLES: integer :: k,l,ii,jj - character(1) :: k_str character(8) :: vr_suffix character(10) :: active integer :: begp,endp @@ -2894,11 +2893,10 @@ subroutine InitHistory(this, bounds, carbon_type) ptr_patch=this%dwt_slash_cflux_patch, default='inactive') do k = i_litr_min, i_litr_max - write(k_str,'(I1)') k ! convert 1-digit integer to string this%dwt_frootc_to_litr_c_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootc_to_litr_c_col(begc:endc,:,k) - fieldname = 'DWT_FROOTC_TO_LITR_'//k_str//'_C' - longname = 'fine root to litter_'//k_str//' due to landcover change' + fieldname = 'DWT_FROOTC_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_C' + longname = 'fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gC/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') @@ -3073,11 +3071,10 @@ subroutine InitHistory(this, bounds, carbon_type) ptr_patch=this%dwt_slash_cflux_patch, default='inactive') do k = i_litr_min, i_litr_max - write(k_str,'(I1)') k ! convert 1-digit integer to string this%dwt_frootc_to_litr_c_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootc_to_litr_c_col(begc:endc,:,k) - fieldname = 'C13_DWT_FROOTC_TO_LITR_'//k_str//'_C' - longname = 'C13 fine root to litter_'//k_str//' due to landcover change' + fieldname = 'C13_DWT_FROOTC_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_C' + longname = 'C13 fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gC/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') @@ -3234,11 +3231,10 @@ subroutine InitHistory(this, bounds, carbon_type) ptr_patch=this%dwt_slash_cflux_patch, default='inactive') do k = i_litr_min, i_litr_max - write(k_str,'(I1)') k ! convert 1-digit integer to string this%dwt_frootc_to_litr_c_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootc_to_litr_c_col(begc:endc,:,k) - fieldname = 'C14_DWT_FROOTC_TO_LITR_'//k_str//'_C' - longname = 'C14 fine root to litter_'//k_str//' due to landcover change' + fieldname = 'C14_DWT_FROOTC_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_C' + longname = 'C14 fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gC/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') diff --git a/src/biogeochem/CNVegNitrogenFluxType.F90 b/src/biogeochem/CNVegNitrogenFluxType.F90 index 68952b5048..4dd6d9b07d 100644 --- a/src/biogeochem/CNVegNitrogenFluxType.F90 +++ b/src/biogeochem/CNVegNitrogenFluxType.F90 @@ -518,7 +518,6 @@ subroutine InitHistory(this, bounds) integer :: begp, endp integer :: begc, endc integer :: begg, endg - character(1) :: k_str character(10) :: active character(24) :: fieldname character(100) :: longname @@ -1013,11 +1012,10 @@ subroutine InitHistory(this, bounds) ptr_patch=this%dwt_conv_nflux_patch, default='inactive') do k = i_litr_min, i_litr_max - write(k_str,'(I1)') k ! convert 1-digit integer to string this%dwt_frootn_to_litr_n_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootn_to_litr_n_col(begc:endc,:,k) - fieldname = 'DWT_FROOTN_TO_LITR_'//k_str//'_N' - longname = 'fine root N to litter_'//k_str//' due to landcover change' + fieldname = 'DWT_FROOTN_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_N' + longname = 'fine root N to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gN/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') diff --git a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 index 75fa3c0089..a494d59891 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 @@ -354,8 +354,8 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i floating_cn_ratio_decomp_pools(i_met_lit) = .true. decomp_cascade_con%decomp_pool_name_restart(i_met_lit) = 'litr1' decomp_cascade_con%decomp_pool_name_history(i_met_lit) = 'LITR1' - decomp_cascade_con%decomp_pool_name_long(i_met_lit) = 'litter 1' - decomp_cascade_con%decomp_pool_name_short(i_met_lit) = 'L1' + decomp_cascade_con%decomp_pool_name_long(i_met_lit) = 'metabolic' + decomp_cascade_con%decomp_pool_name_short(i_met_lit) = 'MET' is_litter(i_met_lit) = .true. is_soil(i_met_lit) = .false. is_cwd(i_met_lit) = .false. @@ -369,8 +369,8 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i floating_cn_ratio_decomp_pools(i_cel_lit) = .true. decomp_cascade_con%decomp_pool_name_restart(i_cel_lit) = 'litr2' decomp_cascade_con%decomp_pool_name_history(i_cel_lit) = 'LITR2' - decomp_cascade_con%decomp_pool_name_long(i_cel_lit) = 'litter 2' - decomp_cascade_con%decomp_pool_name_short(i_cel_lit) = 'L2' + decomp_cascade_con%decomp_pool_name_long(i_cel_lit) = 'cellulosic' + decomp_cascade_con%decomp_pool_name_short(i_cel_lit) = 'CEL' is_litter(i_cel_lit) = .true. is_soil(i_cel_lit) = .false. is_cwd(i_cel_lit) = .false. @@ -384,8 +384,8 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i floating_cn_ratio_decomp_pools(i_lig_lit) = .true. decomp_cascade_con%decomp_pool_name_restart(i_lig_lit) = 'litr3' decomp_cascade_con%decomp_pool_name_history(i_lig_lit) = 'LITR3' - decomp_cascade_con%decomp_pool_name_long(i_lig_lit) = 'litter 3' - decomp_cascade_con%decomp_pool_name_short(i_lig_lit) = 'L3' + decomp_cascade_con%decomp_pool_name_long(i_lig_lit) = 'lignin' + decomp_cascade_con%decomp_pool_name_short(i_lig_lit) = 'LIG' is_litter(i_lig_lit) = .true. is_soil(i_lig_lit) = .false. is_cwd(i_lig_lit) = .false. From 304f16cffc1d05edd83b9ce81e6988ce384179b1 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Sat, 26 Jun 2021 17:23:53 -0600 Subject: [PATCH 30/63] Make more history fields descriptive instead of labeling by number --- src/biogeochem/CNVegCarbonFluxType.F90 | 12 ++++---- src/biogeochem/CNVegNitrogenFluxType.F90 | 4 +-- .../SoilBiogeochemDecompCascadeBGCMod.F90 | 30 +++++++++---------- .../SoilBiogeochemNitrogenFluxType.F90 | 4 +-- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/src/biogeochem/CNVegCarbonFluxType.F90 b/src/biogeochem/CNVegCarbonFluxType.F90 index 212a6be327..9eb226d67f 100644 --- a/src/biogeochem/CNVegCarbonFluxType.F90 +++ b/src/biogeochem/CNVegCarbonFluxType.F90 @@ -2895,8 +2895,8 @@ subroutine InitHistory(this, bounds, carbon_type) do k = i_litr_min, i_litr_max this%dwt_frootc_to_litr_c_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootc_to_litr_c_col(begc:endc,:,k) - fieldname = 'DWT_FROOTC_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_C' - longname = 'fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' + fieldname = 'DWT_FROOTC_TO_'//trim(decomp_cascade_con%decomp_pool_name_history(k))//'_C' + longname = 'fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gC/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') @@ -3073,8 +3073,8 @@ subroutine InitHistory(this, bounds, carbon_type) do k = i_litr_min, i_litr_max this%dwt_frootc_to_litr_c_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootc_to_litr_c_col(begc:endc,:,k) - fieldname = 'C13_DWT_FROOTC_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_C' - longname = 'C13 fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' + fieldname = 'C13_DWT_FROOTC_TO_'//trim(decomp_cascade_con%decomp_pool_name_history(k))//'_C' + longname = 'C13 fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gC/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') @@ -3233,8 +3233,8 @@ subroutine InitHistory(this, bounds, carbon_type) do k = i_litr_min, i_litr_max this%dwt_frootc_to_litr_c_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootc_to_litr_c_col(begc:endc,:,k) - fieldname = 'C14_DWT_FROOTC_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_C' - longname = 'C14 fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' + fieldname = 'C14_DWT_FROOTC_TO_'//trim(decomp_cascade_con%decomp_pool_name_history(k))//'_C' + longname = 'C14 fine root to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gC/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') diff --git a/src/biogeochem/CNVegNitrogenFluxType.F90 b/src/biogeochem/CNVegNitrogenFluxType.F90 index 4dd6d9b07d..e2ba082084 100644 --- a/src/biogeochem/CNVegNitrogenFluxType.F90 +++ b/src/biogeochem/CNVegNitrogenFluxType.F90 @@ -1014,8 +1014,8 @@ subroutine InitHistory(this, bounds) do k = i_litr_min, i_litr_max this%dwt_frootn_to_litr_n_col(begc:endc,:,k) = spval data2dptr => this%dwt_frootn_to_litr_n_col(begc:endc,:,k) - fieldname = 'DWT_FROOTN_TO_LITR_'//trim(decomp_cascade_con%decomp_pool_name_short(k))//'_N' - longname = 'fine root N to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' litter due to landcover change' + fieldname = 'DWT_FROOTN_TO_'//trim(decomp_cascade_con%decomp_pool_name_history(k))//'_N' + longname = 'fine root N to '//trim(decomp_cascade_con%decomp_pool_name_long(k))//' due to landcover change' call hist_addfld_decomp (fname=fieldname, units='gN/m^2/s', type2d='levdcmp', & avgflag='A', long_name=longname, & ptr_col=data2dptr, default='inactive') diff --git a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 index a494d59891..a1ff839bc8 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 @@ -353,9 +353,9 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i i_met_lit = i_litr_min floating_cn_ratio_decomp_pools(i_met_lit) = .true. decomp_cascade_con%decomp_pool_name_restart(i_met_lit) = 'litr1' - decomp_cascade_con%decomp_pool_name_history(i_met_lit) = 'LITR1' - decomp_cascade_con%decomp_pool_name_long(i_met_lit) = 'metabolic' - decomp_cascade_con%decomp_pool_name_short(i_met_lit) = 'MET' + decomp_cascade_con%decomp_pool_name_history(i_met_lit) = 'MET_LIT' + decomp_cascade_con%decomp_pool_name_long(i_met_lit) = 'metabolic litter' + decomp_cascade_con%decomp_pool_name_short(i_met_lit) = 'L1' is_litter(i_met_lit) = .true. is_soil(i_met_lit) = .false. is_cwd(i_met_lit) = .false. @@ -368,9 +368,9 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i i_cel_lit = i_met_lit + 1 floating_cn_ratio_decomp_pools(i_cel_lit) = .true. decomp_cascade_con%decomp_pool_name_restart(i_cel_lit) = 'litr2' - decomp_cascade_con%decomp_pool_name_history(i_cel_lit) = 'LITR2' - decomp_cascade_con%decomp_pool_name_long(i_cel_lit) = 'cellulosic' - decomp_cascade_con%decomp_pool_name_short(i_cel_lit) = 'CEL' + decomp_cascade_con%decomp_pool_name_history(i_cel_lit) = 'CEL_LIT' + decomp_cascade_con%decomp_pool_name_long(i_cel_lit) = 'cellulosic litter' + decomp_cascade_con%decomp_pool_name_short(i_cel_lit) = 'L2' is_litter(i_cel_lit) = .true. is_soil(i_cel_lit) = .false. is_cwd(i_cel_lit) = .false. @@ -383,9 +383,9 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i i_lig_lit = i_cel_lit + 1 floating_cn_ratio_decomp_pools(i_lig_lit) = .true. decomp_cascade_con%decomp_pool_name_restart(i_lig_lit) = 'litr3' - decomp_cascade_con%decomp_pool_name_history(i_lig_lit) = 'LITR3' - decomp_cascade_con%decomp_pool_name_long(i_lig_lit) = 'lignin' - decomp_cascade_con%decomp_pool_name_short(i_lig_lit) = 'LIG' + decomp_cascade_con%decomp_pool_name_history(i_lig_lit) = 'LIG_LIT' + decomp_cascade_con%decomp_pool_name_long(i_lig_lit) = 'lignin litter' + decomp_cascade_con%decomp_pool_name_short(i_lig_lit) = 'L3' is_litter(i_lig_lit) = .true. is_soil(i_lig_lit) = .false. is_cwd(i_lig_lit) = .false. @@ -408,8 +408,8 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i i_pro_som = i_lig_lit + 1 floating_cn_ratio_decomp_pools(i_pro_som) = .false. decomp_cascade_con%decomp_pool_name_restart(i_pro_som) = 'soil1' - decomp_cascade_con%decomp_pool_name_history(i_pro_som) = 'SOIL1' - decomp_cascade_con%decomp_pool_name_long(i_pro_som) = 'soil 1' + decomp_cascade_con%decomp_pool_name_history(i_pro_som) = 'PAS_SOM' + decomp_cascade_con%decomp_pool_name_long(i_pro_som) = 'passive soil organic matter' decomp_cascade_con%decomp_pool_name_short(i_pro_som) = 'S1' is_litter(i_pro_som) = .false. is_soil(i_pro_som) = .true. @@ -423,8 +423,8 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i i_rec_som = i_pro_som + 1 floating_cn_ratio_decomp_pools(i_rec_som) = .false. decomp_cascade_con%decomp_pool_name_restart(i_rec_som) = 'soil2' - decomp_cascade_con%decomp_pool_name_history(i_rec_som) = 'SOIL2' - decomp_cascade_con%decomp_pool_name_long(i_rec_som) = 'soil 2' + decomp_cascade_con%decomp_pool_name_history(i_rec_som) = 'SLO_SOM' + decomp_cascade_con%decomp_pool_name_long(i_rec_som) = 'slow soil organic matter' decomp_cascade_con%decomp_pool_name_short(i_rec_som) = 'S2' is_litter(i_rec_som) = .false. is_soil(i_rec_som) = .true. @@ -438,8 +438,8 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i i_avl_som = i_rec_som + 1 floating_cn_ratio_decomp_pools(i_avl_som) = .false. decomp_cascade_con%decomp_pool_name_restart(i_avl_som) = 'soil3' - decomp_cascade_con%decomp_pool_name_history(i_avl_som) = 'SOIL3' - decomp_cascade_con%decomp_pool_name_long(i_avl_som) = 'soil 3' + decomp_cascade_con%decomp_pool_name_history(i_avl_som) = 'ACT_SOM' + decomp_cascade_con%decomp_pool_name_long(i_avl_som) = 'active soil organic matter' decomp_cascade_con%decomp_pool_name_short(i_avl_som) = 'S3' is_litter(i_avl_som) = .false. is_soil(i_avl_som) = .true. diff --git a/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 b/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 index d852c35496..5f92b3cfcb 100644 --- a/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 +++ b/src/soilbiogeochem/SoilBiogeochemNitrogenFluxType.F90 @@ -340,7 +340,7 @@ subroutine InitHistory(this, bounds) data1dptr => this%decomp_cascade_sminn_flux_col(:,l) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then fieldname = 'SMINN_TO_'//& - trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& + trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l))) longname = 'mineral N flux for decomp. of '& //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& @@ -377,7 +377,7 @@ subroutine InitHistory(this, bounds) data2dptr => this%decomp_cascade_sminn_flux_vr_col(:,:,l) if ( decomp_cascade_con%cascade_receiver_pool(l) /= 0 ) then fieldname = 'SMINN_TO_'& - //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& + //trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_receiver_pool(l)))//'N_'//& trim(decomp_cascade_con%decomp_pool_name_short(decomp_cascade_con%cascade_donor_pool(l)))//trim(vr_suffix) longname = 'mineral N flux for decomp. of '& //trim(decomp_cascade_con%decomp_pool_name_history(decomp_cascade_con%cascade_donor_pool(l)))//& From 5c0ef4ffa6c0b4d2ba2e7aed960c19de614d3a2a Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 28 Jun 2021 15:03:22 -0600 Subject: [PATCH 31/63] Rename i_[pro,rec,avl]_som --> i_[pas,slo,act]_som --- .../SoilBiogeochemDecompCascadeBGCMod.F90 | 146 +++++++++--------- 1 file changed, 73 insertions(+), 73 deletions(-) diff --git a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 index a1ff839bc8..0d75145b03 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 @@ -42,9 +42,9 @@ module SoilBiogeochemDecompCascadeBGCMod real(r8), public :: normalization_tref = 15._r8 ! reference temperature for normalizaion (degrees C) ! ! !PRIVATE DATA MEMBERS - integer, private :: i_pro_som ! index of protected Soil Organic Matter (SOM) - integer, private :: i_rec_som ! index of recalcitrant SOM - integer, private :: i_avl_som ! index of available SOM + integer, private :: i_pas_som ! index of protected Soil Organic Matter (SOM) + integer, private :: i_slo_som ! index of recalcitrant SOM + integer, private :: i_act_som ! index of available SOM integer, private :: i_cel_lit ! index of cellulose litter pool integer, private :: i_lig_lit ! index of lignin litter pool @@ -405,54 +405,54 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i errMsg(sourcefile, __LINE__)) end if - i_pro_som = i_lig_lit + 1 - floating_cn_ratio_decomp_pools(i_pro_som) = .false. - decomp_cascade_con%decomp_pool_name_restart(i_pro_som) = 'soil1' - decomp_cascade_con%decomp_pool_name_history(i_pro_som) = 'PAS_SOM' - decomp_cascade_con%decomp_pool_name_long(i_pro_som) = 'passive soil organic matter' - decomp_cascade_con%decomp_pool_name_short(i_pro_som) = 'S1' - is_litter(i_pro_som) = .false. - is_soil(i_pro_som) = .true. - is_cwd(i_pro_som) = .false. - initial_cn_ratio(i_pro_som) = cn_s1 - initial_stock(i_pro_som) = params_inst%initial_Cstocks(i_pro_som) - is_metabolic(i_pro_som) = .false. - is_cellulose(i_pro_som) = .false. - is_lignin(i_pro_som) = .false. - - i_rec_som = i_pro_som + 1 - floating_cn_ratio_decomp_pools(i_rec_som) = .false. - decomp_cascade_con%decomp_pool_name_restart(i_rec_som) = 'soil2' - decomp_cascade_con%decomp_pool_name_history(i_rec_som) = 'SLO_SOM' - decomp_cascade_con%decomp_pool_name_long(i_rec_som) = 'slow soil organic matter' - decomp_cascade_con%decomp_pool_name_short(i_rec_som) = 'S2' - is_litter(i_rec_som) = .false. - is_soil(i_rec_som) = .true. - is_cwd(i_rec_som) = .false. - initial_cn_ratio(i_rec_som) = cn_s2 - initial_stock(i_rec_som) = params_inst%initial_Cstocks(i_rec_som) - is_metabolic(i_rec_som) = .false. - is_cellulose(i_rec_som) = .false. - is_lignin(i_rec_som) = .false. - - i_avl_som = i_rec_som + 1 - floating_cn_ratio_decomp_pools(i_avl_som) = .false. - decomp_cascade_con%decomp_pool_name_restart(i_avl_som) = 'soil3' - decomp_cascade_con%decomp_pool_name_history(i_avl_som) = 'ACT_SOM' - decomp_cascade_con%decomp_pool_name_long(i_avl_som) = 'active soil organic matter' - decomp_cascade_con%decomp_pool_name_short(i_avl_som) = 'S3' - is_litter(i_avl_som) = .false. - is_soil(i_avl_som) = .true. - is_cwd(i_avl_som) = .false. - initial_cn_ratio(i_avl_som) = cn_s3 - initial_stock(i_avl_som) = params_inst%initial_Cstocks(i_avl_som) - is_metabolic(i_avl_som) = .false. - is_cellulose(i_avl_som) = .false. - is_lignin(i_avl_som) = .false. + i_pas_som = i_lig_lit + 1 + floating_cn_ratio_decomp_pools(i_pas_som) = .false. + decomp_cascade_con%decomp_pool_name_restart(i_pas_som) = 'soil1' + decomp_cascade_con%decomp_pool_name_history(i_pas_som) = 'PAS_SOM' + decomp_cascade_con%decomp_pool_name_long(i_pas_som) = 'passive soil organic matter' + decomp_cascade_con%decomp_pool_name_short(i_pas_som) = 'S1' + is_litter(i_pas_som) = .false. + is_soil(i_pas_som) = .true. + is_cwd(i_pas_som) = .false. + initial_cn_ratio(i_pas_som) = cn_s1 + initial_stock(i_pas_som) = params_inst%initial_Cstocks(i_pas_som) + is_metabolic(i_pas_som) = .false. + is_cellulose(i_pas_som) = .false. + is_lignin(i_pas_som) = .false. + + i_slo_som = i_pas_som + 1 + floating_cn_ratio_decomp_pools(i_slo_som) = .false. + decomp_cascade_con%decomp_pool_name_restart(i_slo_som) = 'soil2' + decomp_cascade_con%decomp_pool_name_history(i_slo_som) = 'SLO_SOM' + decomp_cascade_con%decomp_pool_name_long(i_slo_som) = 'slow soil organic matter' + decomp_cascade_con%decomp_pool_name_short(i_slo_som) = 'S2' + is_litter(i_slo_som) = .false. + is_soil(i_slo_som) = .true. + is_cwd(i_slo_som) = .false. + initial_cn_ratio(i_slo_som) = cn_s2 + initial_stock(i_slo_som) = params_inst%initial_Cstocks(i_slo_som) + is_metabolic(i_slo_som) = .false. + is_cellulose(i_slo_som) = .false. + is_lignin(i_slo_som) = .false. + + i_act_som = i_slo_som + 1 + floating_cn_ratio_decomp_pools(i_act_som) = .false. + decomp_cascade_con%decomp_pool_name_restart(i_act_som) = 'soil3' + decomp_cascade_con%decomp_pool_name_history(i_act_som) = 'ACT_SOM' + decomp_cascade_con%decomp_pool_name_long(i_act_som) = 'active soil organic matter' + decomp_cascade_con%decomp_pool_name_short(i_act_som) = 'S3' + is_litter(i_act_som) = .false. + is_soil(i_act_som) = .true. + is_cwd(i_act_som) = .false. + initial_cn_ratio(i_act_som) = cn_s3 + initial_stock(i_act_som) = params_inst%initial_Cstocks(i_act_som) + is_metabolic(i_act_som) = .false. + is_cellulose(i_act_som) = .false. + is_lignin(i_act_som) = .false. if (.not. use_fates) then ! CWD - i_cwd = i_avl_som + 1 + i_cwd = i_act_som + 1 floating_cn_ratio_decomp_pools(i_cwd) = .true. decomp_cascade_con%decomp_pool_name_restart(i_cwd) = 'cwd' decomp_cascade_con%decomp_pool_name_history(i_cwd) = 'CWD' @@ -480,10 +480,10 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i spinup_factor(i_cwd) = max(1._r8, (speedup_fac * params_inst%tau_cwd_bgc / 2._r8 )) end if !som1 - spinup_factor(i_pro_som) = 1._r8 + spinup_factor(i_pas_som) = 1._r8 !som2,3 - spinup_factor(i_rec_som) = max(1._r8, (speedup_fac * params_inst%tau_s2_bgc)) - spinup_factor(i_avl_som) = max(1._r8, (speedup_fac * params_inst%tau_s3_bgc)) + spinup_factor(i_slo_som) = max(1._r8, (speedup_fac * params_inst%tau_s2_bgc)) + spinup_factor(i_act_som) = max(1._r8, (speedup_fac * params_inst%tau_s3_bgc)) if ( masterproc ) then write(iulog,*) 'Spinup_state ',spinup_state @@ -495,56 +495,56 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i decomp_cascade_con%cascade_step_name(i_l1s1) = 'L1S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l1s1) = rf_l1s1 cascade_donor_pool(i_l1s1) = i_met_lit - cascade_receiver_pool(i_l1s1) = i_pro_som + cascade_receiver_pool(i_l1s1) = i_pas_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l1s1) = 1.0_r8 i_l2s1 = 2 decomp_cascade_con%cascade_step_name(i_l2s1) = 'L2S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l2s1) = rf_l2s1 cascade_donor_pool(i_l2s1) = i_cel_lit - cascade_receiver_pool(i_l2s1) = i_pro_som + cascade_receiver_pool(i_l2s1) = i_pas_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l2s1)= 1.0_r8 i_l3s2 = 3 decomp_cascade_con%cascade_step_name(i_l3s2) = 'L3S2' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l3s2) = rf_l3s2 cascade_donor_pool(i_l3s2) = i_lig_lit - cascade_receiver_pool(i_l3s2) = i_rec_som + cascade_receiver_pool(i_l3s2) = i_slo_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l3s2) = 1.0_r8 i_s1s2 = 4 decomp_cascade_con%cascade_step_name(i_s1s2) = 'S1S2' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s2) = rf_s1s2(bounds%begc:bounds%endc,1:nlevdecomp) - cascade_donor_pool(i_s1s2) = i_pro_som - cascade_receiver_pool(i_s1s2) = i_rec_som + cascade_donor_pool(i_s1s2) = i_pas_som + cascade_receiver_pool(i_s1s2) = i_slo_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s2) = f_s1s2(bounds%begc:bounds%endc,1:nlevdecomp) i_s1s3 = 5 decomp_cascade_con%cascade_step_name(i_s1s3) = 'S1S3' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s3) = rf_s1s3(bounds%begc:bounds%endc,1:nlevdecomp) - cascade_donor_pool(i_s1s3) = i_pro_som - cascade_receiver_pool(i_s1s3) = i_avl_som + cascade_donor_pool(i_s1s3) = i_pas_som + cascade_receiver_pool(i_s1s3) = i_act_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s3) = f_s1s3(bounds%begc:bounds%endc,1:nlevdecomp) i_s2s1 = 6 decomp_cascade_con%cascade_step_name(i_s2s1) = 'S2S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s1) = rf_s2s1 - cascade_donor_pool(i_s2s1) = i_rec_som - cascade_receiver_pool(i_s2s1) = i_pro_som + cascade_donor_pool(i_s2s1) = i_slo_som + cascade_receiver_pool(i_s2s1) = i_pas_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s1) = f_s2s1 i_s2s3 = 7 decomp_cascade_con%cascade_step_name(i_s2s3) = 'S2S3' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s3) = rf_s2s3 - cascade_donor_pool(i_s2s3) = i_rec_som - cascade_receiver_pool(i_s2s3) = i_avl_som + cascade_donor_pool(i_s2s3) = i_slo_som + cascade_receiver_pool(i_s2s3) = i_act_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s3) = f_s2s3 i_s3s1 = 8 decomp_cascade_con%cascade_step_name(i_s3s1) = 'S3S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s3s1) = rf_s3s1 - cascade_donor_pool(i_s3s1) = i_avl_som - cascade_receiver_pool(i_s3s1) = i_pro_som + cascade_donor_pool(i_s3s1) = i_act_som + cascade_receiver_pool(i_s3s1) = i_pas_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s3s1) = 1.0_r8 if (.not. use_fates) then @@ -700,20 +700,20 @@ subroutine decomp_rate_constants_bgc(bounds, num_soilc, filter_soilc, & endif endif ! - if ( abs(spinup_factor(i_pro_som) - 1._r8) .gt. .000001_r8) then - spinup_geogterm_s1(c) = spinup_factor(i_pro_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) + if ( abs(spinup_factor(i_pas_som) - 1._r8) .gt. .000001_r8) then + spinup_geogterm_s1(c) = spinup_factor(i_pas_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) else spinup_geogterm_s1(c) = 1._r8 endif ! - if ( abs(spinup_factor(i_rec_som) - 1._r8) .gt. .000001_r8) then - spinup_geogterm_s2(c) = spinup_factor(i_rec_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) + if ( abs(spinup_factor(i_slo_som) - 1._r8) .gt. .000001_r8) then + spinup_geogterm_s2(c) = spinup_factor(i_slo_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) else spinup_geogterm_s2(c) = 1._r8 endif ! - if ( abs(spinup_factor(i_avl_som) - 1._r8) .gt. .000001_r8) then - spinup_geogterm_s3(c) = spinup_factor(i_avl_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) + if ( abs(spinup_factor(i_act_som) - 1._r8) .gt. .000001_r8) then + spinup_geogterm_s3(c) = spinup_factor(i_act_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) else spinup_geogterm_s3(c) = 1._r8 endif @@ -945,11 +945,11 @@ subroutine decomp_rate_constants_bgc(bounds, num_soilc, filter_soilc, & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_l23(c) decomp_k(c,j,i_lig_lit) = k_l2_l3 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_l23(c) - decomp_k(c,j,i_pro_som) = k_s1 * t_scalar(c,j) * w_scalar(c,j) * & + decomp_k(c,j,i_pas_som) = k_s1 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_s1(c) - decomp_k(c,j,i_rec_som) = k_s2 * t_scalar(c,j) * w_scalar(c,j) * & + decomp_k(c,j,i_slo_som) = k_s2 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_s2(c) - decomp_k(c,j,i_avl_som) = k_s3 * t_scalar(c,j) * w_scalar(c,j) * & + decomp_k(c,j,i_act_som) = k_s3 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_s3(c) ! same for cwd but only if fates is not enabled; fates handles CWD ! on its own structure From 3b73e57f298fe1f780586db1b6fc333c71510a6d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 28 Jun 2021 15:06:45 -0600 Subject: [PATCH 32/63] Minor update to comments about soil organic matter (SOM) --- src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 index 0d75145b03..a0e05fe584 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 @@ -42,9 +42,9 @@ module SoilBiogeochemDecompCascadeBGCMod real(r8), public :: normalization_tref = 15._r8 ! reference temperature for normalizaion (degrees C) ! ! !PRIVATE DATA MEMBERS - integer, private :: i_pas_som ! index of protected Soil Organic Matter (SOM) - integer, private :: i_slo_som ! index of recalcitrant SOM - integer, private :: i_act_som ! index of available SOM + integer, private :: i_pas_som ! index of passive (aka protected) Soil Organic Matter (SOM) + integer, private :: i_slo_som ! index of slow (aka recalcitrant) SOM + integer, private :: i_act_som ! index of active (aka available) SOM integer, private :: i_cel_lit ! index of cellulose litter pool integer, private :: i_lig_lit ! index of lignin litter pool From a34d2c504a2dd5cfb8d30ccc48aa732cb3b4fc3c Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 28 Jun 2021 15:10:38 -0600 Subject: [PATCH 33/63] Minor comment update --- src/main/clm_varpar.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/clm_varpar.F90 b/src/main/clm_varpar.F90 index 5a18d52d0e..8c1033ca4e 100644 --- a/src/main/clm_varpar.F90 +++ b/src/main/clm_varpar.F90 @@ -237,7 +237,7 @@ subroutine clm_varpar_init(actual_maxsoil_patches, actual_numcft) ! in InitAllocate (in SoilBiogeochemStateType) which is called earlier than ! init_decompcascade_bgc where they might have otherwise been derived on the ! fly. For reference, if they were determined in init_decompcascade_bgc: - ! ndecomp_pools would get the value of i_avl_som or i_cwd and + ! ndecomp_pools would get the value of i_act_som or i_cwd and ! ndecomp_cascade_transitions would get the value of i_s3s1 or i_cwdl3 ! depending on how use_fates is set. if ( use_fates ) then From 85bf70f7ba3b93fa83f6484455df68964f2b81e6 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 28 Jun 2021 15:30:46 -0600 Subject: [PATCH 34/63] Update fincl and fexcl lists to new history field names --- cime_config/usermods_dirs/output_bgc/user_nl_clm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cime_config/usermods_dirs/output_bgc/user_nl_clm b/cime_config/usermods_dirs/output_bgc/user_nl_clm index 0c0bcd52ff..3b2e2d2d92 100644 --- a/cime_config/usermods_dirs/output_bgc/user_nl_clm +++ b/cime_config/usermods_dirs/output_bgc/user_nl_clm @@ -3,8 +3,8 @@ !---------------------------------------------------------------------------------- ! h0 stream (monthly average, gridcell-level) -hist_fexcl1 += 'SOIL1C_vr', 'SOIL1N_vr', 'SOIL2C_vr', 'SOIL2N_vr', 'SOIL3C_vr', 'SOIL3N_vr', 'SOILC_vr','SOILN_vr', 'CWDC_vr', 'LITR1C_vr', 'LITR2C_vr', 'LITR3C_vr', 'LITR1N_vr', 'LITR2N_vr', 'LITR3N_vr', 'CWDN_vr', 'SMIN_NO3_vr', 'CONC_O2_UNSAT', 'CONC_O2_SAT','SMIN_NH4_vr','SMINN_vr' -hist_fincl1 += 'LEAFC_TO_LITTER', 'FROOTC_TO_LITTER','LITR1C_TO_SOIL1C','LITR1N_TO_SOIL1N','LITR2C_TO_SOIL1C', 'LITR2N_TO_SOIL1N','LITR3C_TO_SOIL2C','LITR3N_TO_SOIL2N','DWT_WOOD_PRODUCTC_GAIN_PATCH' +hist_fexcl1 += 'PAS_SOMC_vr', 'PAS_SOMN_vr', 'SLO_SOMC_vr', 'SLO_SOMN_vr', 'ACT_SOMC_vr', 'ACT_SOMN_vr', 'SOILC_vr','SOILN_vr', 'CWDC_vr', 'MET_LITC_vr', 'CEL_LITC_vr', 'LIG_LITC_vr', 'MET_LITN_vr', 'CEL_LITN_vr', 'LIG_LITN_vr', 'CWDN_vr', 'SMIN_NO3_vr', 'CONC_O2_UNSAT', 'CONC_O2_SAT','SMIN_NH4_vr','SMINN_vr' +hist_fincl1 += 'LEAFC_TO_LITTER', 'FROOTC_TO_LITTER','MET_LITC_TO_PAS_SOMC','MET_LITN_TO_PAS_SOMN','CEL_LITC_TO_PAS_SOMC', 'CEL_LITN_TO_PAS_SOMN','LIG_LITC_TO_SLO_SOMC','LIG_LITN_TO_SLO_SOMN','DWT_WOOD_PRODUCTC_GAIN_PATCH' ! h1 stream (monthly average, finest sub-grid) hist_fincl2 += 'GPP', 'NPP', 'AGNPP', 'TOTVEGC', 'NPP_NUPTAKE', 'AR', 'HR', 'HTOP' @@ -14,7 +14,7 @@ hist_fincl2 += 'GPP', 'NPP', 'AGNPP', 'TOTVEGC', 'NPP_NUPTAKE', 'AR', 'HR', 'HTO hist_fincl3 += 'GPP', 'NPP', 'AR', 'HR', 'DWT_CONV_CFLUX_PATCH', 'WOOD_HARVESTC', 'DWT_WOOD_PRODUCTC_GAIN_PATCH', 'SLASH_HARVESTC', 'COL_FIRE_CLOSS', 'FROOTC:I', 'HTOP' ! h3 stream (yearly average, gridcell-level) -hist_fincl4 += 'SOILC_vr', 'SOILN_vr', 'CWDC_vr', 'LITR1C_vr', 'LITR2C_vr', 'LITR3C_vr', 'LITR1N_vr', 'LITR2N_vr', 'LITR3N_vr','CWDN_vr', 'TOTLITC:I', 'TOT_WOODPRODC:I', 'TOTSOMC:I','TOTVEGC:I' +hist_fincl4 += 'SOILC_vr', 'SOILN_vr', 'CWDC_vr', 'MET_LITC_vr', 'CEL_LITC_vr', 'LIG_LITC_vr', 'MET_LITN_vr', 'CEL_LITN_vr', 'LIG_LITN_vr','CWDN_vr', 'TOTLITC:I', 'TOT_WOODPRODC:I', 'TOTSOMC:I','TOTVEGC:I' ! h4 stream (yearly average, landunit-level) hist_fincl5 += 'TOTSOMC:I', 'TOTSOMC_1m:I', 'TOTECOSYSC:I', 'TOTVEGC:I', 'WOODC:I', 'TOTLITC:I', 'LIVECROOTC:I', 'DEADCROOTC:I', 'FROOTC:I' From 34c26e755ea04fcc23beb488cb2e3a9f451c8382 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Mon, 28 Jun 2021 16:15:32 -0600 Subject: [PATCH 35/63] First draft of updated ChangeLog --- doc/ChangeLog | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 118 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index f70abb6c2f..5c906b63c0 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,121 @@ =============================================================== +Tag name: ctsm5.1.dev047 +Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) +Date: Mon Jun 28 15:54:57 MDT 2021 +One-line Summary: Make certain history fields descriptive inst. of labeling by number + +Purpose and description of changes +---------------------------------- + + I used existing infrastructure to add descriptive strings to certain history + fields that I had labeled by number in #1340. While doing this, I applied the + change to a bunch of other history fields that needed it. + + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm5_1 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed or introduced +------------------------ +Issues fixed (include CTSM Issue #): #1392 + + +Notes of particular relevance for users +--------------------------------------- +Caveats for users (e.g., need to interpolate initial conditions): + The names of certain history fields have changed to be more descriptive + in place of using numbers to differentiate them. + +Substantial timing or memory changes: +[For timing changes, you should at least check the PFS test in the test suite] + + +Testing summary: +---------------- +[... Remove before making master tag. + +Nearly all CTSM tags should undergo 'regular' (aux_clm) testing. +However, it occasionally makes sense to do more or less system testing; +here is guidance on different available levels of system testing: + a) no system testing (for use when the only changes are ones that + have absolutely no impact on system runs; this + includes documentation-only tags, tags that + just change the tools or some python code that + does not impact system runs, etc.) + b) minimal (for use in rare cases where only a small change with + known behavior is added ... eg. a minor bug fix. This + might be to just run the "short" test list, or to run + a single test. Whatever makes sense for the particular case.) + c) regular (regular tests on normal machines if CTSM source is modified) + d) release (regular tests plus the fates, ctsm_sci, mosart and rtm test lists + and normally all of the ancillary tests (build-namelist, python, ptclm, etc.) + would be run as well) + +In addition, various other tests of the tools, python and perl +infrastructure should be run when appropriate, as described below. + +...] + +[Remove any lines that don't apply.] + + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + cheyenne - + + tools-tests (test/tools) (if tools have been changed): + + cheyenne - + + PTCLM testing (tools/shared/PTCLM/test): (if cime or cime_config are changed) + (PTCLM is being deprecated, so we only expect this to be done on occasion) + + cheyenne - + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + (any machine) - + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + cheyenne ---- OK + izumi ------- OK + + fates tests: + cheyenne ---- + + any other testing (give details below): + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + + +Answer changes +-------------- +Changes answers relative to baseline: NO + + +Other details +------------- +Pull Requests that document the changes (include PR ids): + https://github.com/ESCOMP/ctsm/pull/1413 + +=============================================================== +=============================================================== Tag name: ctsm5.1.dev046 Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) Date: Fri Jun 25 14:08:24 MDT 2021 diff --git a/doc/ChangeSum b/doc/ChangeSum index e75484191e..a98a813fed 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.1.dev047 slevis 06/28/2021 Make certain history fields descriptive inst. of labeling by number ctsm5.1.dev046 slevis 06/25/2021 Include CWD in heterotrophic respiration ctsm5.1.dev045 ctsm5.1.dev044 From 0ef42ccc3b48a1f8b9acea9217914dbea00bf9de Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Mon, 28 Jun 2021 21:09:40 -0600 Subject: [PATCH 36/63] Setting fates parameter file to api 16.1 --- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 0dcc29680e..499b9dda90 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -491,7 +491,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/paramdata/fates_params_api.15.1.0_12pft_c210505.nc +lnd/clm2/paramdata/fates_params_api.16.1.0_12pft_c210628.nc From c7b3aa9d6b36a32b5efb4c3eec8d26c38e452afd Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Mon, 28 Jun 2021 21:14:18 -0600 Subject: [PATCH 37/63] Updating fates pointer to the head of the new_params branch --- Externals_CLM.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals_CLM.cfg b/Externals_CLM.cfg index bc4e1d22a0..91ba9d7c1c 100644 --- a/Externals_CLM.cfg +++ b/Externals_CLM.cfg @@ -2,7 +2,7 @@ local_path = src/fates protocol = git repo_url = https://github.com/NGEET/fates -tag = sci.1.46.0_api.16.0.0 +hash = a670861cfbd9adeab3bf40ca22058840c5e76863 required = True [PTCLM] From 16a87cc810b3deb3d7a81174613f3f48ccceb3be Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Mon, 28 Jun 2021 21:19:26 -0600 Subject: [PATCH 38/63] Updating to fates test hash that includes parameter file theta_cj usage --- Externals_CLM.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals_CLM.cfg b/Externals_CLM.cfg index 91ba9d7c1c..6bc1942b54 100644 --- a/Externals_CLM.cfg +++ b/Externals_CLM.cfg @@ -2,7 +2,7 @@ local_path = src/fates protocol = git repo_url = https://github.com/NGEET/fates -hash = a670861cfbd9adeab3bf40ca22058840c5e76863 +hash = dca534e1b29c0afd37bd2d1e32911e47f4372835 required = True [PTCLM] From a98cef26981316d4706499ddc931e5da90785697 Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Mon, 28 Jun 2021 21:47:19 -0600 Subject: [PATCH 39/63] Fixed repo designation in fates to temporarily be the rgknox fork --- Externals_CLM.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Externals_CLM.cfg b/Externals_CLM.cfg index 6bc1942b54..8f5d2cf75f 100644 --- a/Externals_CLM.cfg +++ b/Externals_CLM.cfg @@ -1,7 +1,7 @@ [fates] local_path = src/fates protocol = git -repo_url = https://github.com/NGEET/fates +repo_url = https://github.com/rgknox/fates hash = dca534e1b29c0afd37bd2d1e32911e47f4372835 required = True From ae05622a131ea0ece76bf3a334521c01a24f02d5 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 29 Jun 2021 10:29:32 -0600 Subject: [PATCH 40/63] Updated ChangeLog Tests-suites OK. PR ready for merge. --- doc/ChangeLog | 41 +++++++---------------------------------- doc/ChangeSum | 3 +-- 2 files changed, 8 insertions(+), 36 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index e1756bfab5..5d5be5f369 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== -Tag name: ctsm5.1.dev046 +Tag name: ctsm5.1.dev045 Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) -Date: Fri Jun 25 14:08:24 MDT 2021 +Date: Tue Jun 29 10:21:11 MDT 2021 One-line Summary: Include CWD in heterotrophic respiration (HR) Purpose and description of changes @@ -41,16 +41,19 @@ Does this tag change answers significantly for any of the following physics conf Bugs fixed or introduced ------------------------ - Issues fixed (include CTSM Issue #): #1361 Notes of particular relevance for users --------------------------------------- Substantial timing or memory changes: - This warning appears in many tests on both cheyenne and izumi: + Total 17 MEMCOMP non-passes with the same warning as this one: + FAIL PFS_Ld20.f09_g17.I2000Clm50BgcCrop.cheyenne_intel MEMCOMP Error: Memory usage increase > 10% from baseline + Total 5 TPUTCOMP non-passes with this warning: + TPUTCOMP: Computation time increase > 25% from baseline + Notes of particular relevance for developers: --------------------------------------------- NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide @@ -63,43 +66,16 @@ Changes to tests or testing: Testing summary: ---------------- -[Remove any lines that don't apply.] - [PASS means all tests PASS; OK means tests PASS other than expected fails.] - build-namelist tests (if CLMBuildNamelist.pm has changed): - - cheyenne - - - tools-tests (test/tools) (if tools have been changed): - - cheyenne - - - PTCLM testing (tools/shared/PTCLM/test): (if cime or cime_config are changed) - (PTCLM is being deprecated, so we only expect this to be done on occasion) - - cheyenne - - - python testing (if python code has changed; see instructions in python/README.md; document testing done): - - (any machine) - - regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): cheyenne ---- OK izumi ------- OK - fates tests: - cheyenne ---- - - any other testing (give details below): - -If the tag used for baseline comparisons was NOT the previous tag, note that here: - Answer changes -------------- - Changes answers relative to baseline: No @@ -108,9 +84,6 @@ Other details Pull Requests that document the changes (include PR ids): https://github.com/ESCOMP/ctsm/pull/1400 -=============================================================== -=============================================================== -Tag name: ctsm5.1.dev045 =============================================================== =============================================================== Tag name: ctsm5.1.dev044 diff --git a/doc/ChangeSum b/doc/ChangeSum index cec7e5cef2..6a8ef45243 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,7 +1,6 @@ Tag Who Date Summary ============================================================================================================================ - ctsm5.1.dev046 slevis 06/25/2021 Include CWD in heterotrophic respiration - ctsm5.1.dev045 + ctsm5.1.dev045 slevis 06/29/2021 Include CWD in heterotrophic respiration ctsm5.1.dev044 mvertens 06/24/2021 New stream functionality when using NUOPC or LILAC ctsm5.1.dev043 slevis 06/03/2021 Refactor of CascadeBGC code in preparation for MIMICS ctsm5.1.dev042 erik 05/28/2021 Small answer changes for double precision constants and soil limits From 22d41628dacb52bc013ad77ef23a687093ca58ac Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Tue, 29 Jun 2021 18:19:48 -0600 Subject: [PATCH 41/63] Updating master_list_fie.rst (official documentation not rebuilt, yet) --- .../master_list_file.rst | 2537 +++++++++-------- 1 file changed, 1279 insertions(+), 1258 deletions(-) diff --git a/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst b/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst index 610975876b..f09f879453 100644 --- a/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst +++ b/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst @@ -13,1262 +13,1283 @@ CTSM History Fields 4 ACTUAL_IMMOB_NH4 immobilization of NH4 gN/m^3/s F 5 ACTUAL_IMMOB_NO3 immobilization of NO3 gN/m^3/s F 6 ACTUAL_IMMOB_vr actual N immobilization gN/m^3/s F - 7 AGNPP aboveground NPP gC/m^2/s T - 8 ALBD surface albedo (direct) proportion T - 9 ALBDSF diagnostic snow-free surface albedo (direct) proportion T - 10 ALBGRD ground albedo (direct) proportion F - 11 ALBGRI ground albedo (indirect) proportion F - 12 ALBI surface albedo (indirect) proportion T - 13 ALBISF diagnostic snow-free surface albedo (indirect) proportion T - 14 ALPHA alpha coefficient for VOC calc non F - 15 ALT current active layer thickness m T - 16 ALTMAX maximum annual active layer thickness m T - 17 ALTMAX_LASTYEAR maximum prior year active layer thickness m F - 18 ANNAVG_T2M annual average 2m air temperature K F - 19 ANNMAX_RETRANSN annual max of retranslocated N pool gN/m^2 F - 20 ANNSUM_COUNTER seconds since last annual accumulator turnover s F - 21 ANNSUM_NPP annual sum of NPP gC/m^2/yr F - 22 ANNSUM_POTENTIAL_GPP annual sum of potential GPP gN/m^2/yr F - 23 APPAR_TEMP 2 m apparent temperature C T - 24 APPAR_TEMP_R Rural 2 m apparent temperature C T - 25 APPAR_TEMP_U Urban 2 m apparent temperature C T - 26 AR autotrophic respiration (MR + GR) gC/m^2/s T - 27 ATM_TOPO atmospheric surface height m T - 28 AVAILC C flux available for allocation gC/m^2/s F - 29 AVAIL_RETRANSN N flux available from retranslocation pool gN/m^2/s F - 30 AnnET Annual ET mm/s F - 31 BAF_CROP fractional area burned for crop s-1 T - 32 BAF_PEATF fractional area burned in peatland s-1 T - 33 BCDEP total BC deposition (dry+wet) from atmosphere kg/m^2/s T - 34 BETA coefficient of convective velocity none F - 35 BGLFR background litterfall rate 1/s F - 36 BGNPP belowground NPP gC/m^2/s T - 37 BGTR background transfer growth rate 1/s F - 38 BTRANMN daily minimum of transpiration beta factor unitless T - 39 CANNAVG_T2M annual average of 2m air temperature K F - 40 CANNSUM_NPP annual sum of column-level NPP gC/m^2/s F - 41 CGRND deriv. of soil energy flux wrt to soil temp W/m^2/K F - 42 CGRNDL deriv. of soil latent heat flux wrt soil temp W/m^2/K F - 43 CGRNDS deriv. of soil sensible heat flux wrt soil temp W/m^2/K F - 44 CH4PROD Gridcell total production of CH4 gC/m2/s T - 45 CH4_EBUL_TOTAL_SAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F - 46 CH4_EBUL_TOTAL_UNSAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F - 47 CH4_SURF_AERE_SAT aerenchyma surface CH4 flux for inundated area; (+ to atm) mol/m2/s T - 48 CH4_SURF_AERE_UNSAT aerenchyma surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T - 49 CH4_SURF_DIFF_SAT diffusive surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T - 50 CH4_SURF_DIFF_UNSAT diffusive surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T - 51 CH4_SURF_EBUL_SAT ebullition surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T - 52 CH4_SURF_EBUL_UNSAT ebullition surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T - 53 COL_CTRUNC column-level sink for C truncation gC/m^2 F - 54 COL_FIRE_CLOSS total column-level fire C loss for non-peat fires outside land-type converted region gC/m^2/s T - 55 COL_FIRE_NLOSS total column-level fire N loss gN/m^2/s T - 56 COL_NTRUNC column-level sink for N truncation gN/m^2 F - 57 CONC_CH4_SAT CH4 soil Concentration for inundated / lake area mol/m3 F - 58 CONC_CH4_UNSAT CH4 soil Concentration for non-inundated area mol/m3 F - 59 CONC_O2_SAT O2 soil Concentration for inundated / lake area mol/m3 T - 60 CONC_O2_UNSAT O2 soil Concentration for non-inundated area mol/m3 T - 61 COST_NACTIVE Cost of active uptake gN/gC T - 62 COST_NFIX Cost of fixation gN/gC T - 63 COST_NRETRANS Cost of retranslocation gN/gC T - 64 COSZEN cosine of solar zenith angle none F - 65 CPHASE crop phenology phase 0-not planted, 1-planted, 2-leaf emerge, 3-grain fill, 4-harvest T - 66 CPOOL temporary photosynthate C pool gC/m^2 T - 67 CPOOL_DEADCROOT_GR dead coarse root growth respiration gC/m^2/s F - 68 CPOOL_DEADCROOT_STORAGE_GR dead coarse root growth respiration to storage gC/m^2/s F - 69 CPOOL_DEADSTEM_GR dead stem growth respiration gC/m^2/s F - 70 CPOOL_DEADSTEM_STORAGE_GR dead stem growth respiration to storage gC/m^2/s F - 71 CPOOL_FROOT_GR fine root growth respiration gC/m^2/s F - 72 CPOOL_FROOT_STORAGE_GR fine root growth respiration to storage gC/m^2/s F - 73 CPOOL_LEAF_GR leaf growth respiration gC/m^2/s F - 74 CPOOL_LEAF_STORAGE_GR leaf growth respiration to storage gC/m^2/s F - 75 CPOOL_LIVECROOT_GR live coarse root growth respiration gC/m^2/s F - 76 CPOOL_LIVECROOT_STORAGE_GR live coarse root growth respiration to storage gC/m^2/s F - 77 CPOOL_LIVESTEM_GR live stem growth respiration gC/m^2/s F - 78 CPOOL_LIVESTEM_STORAGE_GR live stem growth respiration to storage gC/m^2/s F - 79 CPOOL_TO_DEADCROOTC allocation to dead coarse root C gC/m^2/s F - 80 CPOOL_TO_DEADCROOTC_STORAGE allocation to dead coarse root C storage gC/m^2/s F - 81 CPOOL_TO_DEADSTEMC allocation to dead stem C gC/m^2/s F - 82 CPOOL_TO_DEADSTEMC_STORAGE allocation to dead stem C storage gC/m^2/s F - 83 CPOOL_TO_FROOTC allocation to fine root C gC/m^2/s F - 84 CPOOL_TO_FROOTC_STORAGE allocation to fine root C storage gC/m^2/s F - 85 CPOOL_TO_GRESP_STORAGE allocation to growth respiration storage gC/m^2/s F - 86 CPOOL_TO_LEAFC allocation to leaf C gC/m^2/s F - 87 CPOOL_TO_LEAFC_STORAGE allocation to leaf C storage gC/m^2/s F - 88 CPOOL_TO_LIVECROOTC allocation to live coarse root C gC/m^2/s F - 89 CPOOL_TO_LIVECROOTC_STORAGE allocation to live coarse root C storage gC/m^2/s F - 90 CPOOL_TO_LIVESTEMC allocation to live stem C gC/m^2/s F - 91 CPOOL_TO_LIVESTEMC_STORAGE allocation to live stem C storage gC/m^2/s F - 92 CROOT_PROF profile for litter C and N inputs from coarse roots 1/m F - 93 CROPPROD1C 1-yr crop product (grain+biofuel) C gC/m^2 T - 94 CROPPROD1C_LOSS loss from 1-yr crop product pool gC/m^2/s T - 95 CROPPROD1N 1-yr crop product (grain+biofuel) N gN/m^2 T - 96 CROPPROD1N_LOSS loss from 1-yr crop product pool gN/m^2/s T - 97 CROPSEEDC_DEFICIT C used for crop seed that needs to be repaid gC/m^2 T - 98 CROPSEEDN_DEFICIT N used for crop seed that needs to be repaid gN/m^2 F - 99 CROP_SEEDC_TO_LEAF crop seed source to leaf gC/m^2/s F - 100 CROP_SEEDN_TO_LEAF crop seed source to leaf gN/m^2/s F - 101 CURRENT_GR growth resp for new growth displayed in this timestep gC/m^2/s F - 102 CWDC CWD C gC/m^2 T - 103 CWDC_1m CWD C to 1 meter gC/m^2 F - 104 CWDC_LOSS coarse woody debris C loss gC/m^2/s T - 105 CWDC_TO_LITR2C decomp. of coarse woody debris C to litter 2 C gC/m^2/s F - 106 CWDC_TO_LITR2C_vr decomp. of coarse woody debris C to litter 2 C gC/m^3/s F - 107 CWDC_TO_LITR3C decomp. of coarse woody debris C to litter 3 C gC/m^2/s F - 108 CWDC_TO_LITR3C_vr decomp. of coarse woody debris C to litter 3 C gC/m^3/s F - 109 CWDC_vr CWD C (vertically resolved) gC/m^3 T - 110 CWDN CWD N gN/m^2 T - 111 CWDN_1m CWD N to 1 meter gN/m^2 F - 112 CWDN_TO_LITR2N decomp. of coarse woody debris N to litter 2 N gN/m^2 F - 113 CWDN_TO_LITR2N_vr decomp. of coarse woody debris N to litter 2 N gN/m^3 F - 114 CWDN_TO_LITR3N decomp. of coarse woody debris N to litter 3 N gN/m^2 F - 115 CWDN_TO_LITR3N_vr decomp. of coarse woody debris N to litter 3 N gN/m^3 F - 116 CWDN_vr CWD N (vertically resolved) gN/m^3 T - 117 C_ALLOMETRY C allocation index none F - 118 DAYL daylength s F - 119 DAYS_ACTIVE number of days since last dormancy days F - 120 DEADCROOTC dead coarse root C gC/m^2 T - 121 DEADCROOTC_STORAGE dead coarse root C storage gC/m^2 F - 122 DEADCROOTC_STORAGE_TO_XFER dead coarse root C shift storage to transfer gC/m^2/s F - 123 DEADCROOTC_XFER dead coarse root C transfer gC/m^2 F - 124 DEADCROOTC_XFER_TO_DEADCROOTC dead coarse root C growth from storage gC/m^2/s F - 125 DEADCROOTN dead coarse root N gN/m^2 T - 126 DEADCROOTN_STORAGE dead coarse root N storage gN/m^2 F - 127 DEADCROOTN_STORAGE_TO_XFER dead coarse root N shift storage to transfer gN/m^2/s F - 128 DEADCROOTN_XFER dead coarse root N transfer gN/m^2 F - 129 DEADCROOTN_XFER_TO_DEADCROOTN dead coarse root N growth from storage gN/m^2/s F - 130 DEADSTEMC dead stem C gC/m^2 T - 131 DEADSTEMC_STORAGE dead stem C storage gC/m^2 F - 132 DEADSTEMC_STORAGE_TO_XFER dead stem C shift storage to transfer gC/m^2/s F - 133 DEADSTEMC_XFER dead stem C transfer gC/m^2 F - 134 DEADSTEMC_XFER_TO_DEADSTEMC dead stem C growth from storage gC/m^2/s F - 135 DEADSTEMN dead stem N gN/m^2 T - 136 DEADSTEMN_STORAGE dead stem N storage gN/m^2 F - 137 DEADSTEMN_STORAGE_TO_XFER dead stem N shift storage to transfer gN/m^2/s F - 138 DEADSTEMN_XFER dead stem N transfer gN/m^2 F - 139 DEADSTEMN_XFER_TO_DEADSTEMN dead stem N growth from storage gN/m^2/s F - 140 DENIT total rate of denitrification gN/m^2/s T - 141 DGNETDT derivative of net ground heat flux wrt soil temp W/m^2/K F - 142 DISCOI 2 m Discomfort Index C T - 143 DISCOIS 2 m Stull Discomfort Index C T - 144 DISCOIS_R Rural 2 m Stull Discomfort Index C T - 145 DISCOIS_U Urban 2 m Stull Discomfort Index C T - 146 DISCOI_R Rural 2 m Discomfort Index C T - 147 DISCOI_U Urban 2 m Discomfort Index C T - 148 DISPLA displacement height m F - 149 DISPVEGC displayed veg carbon, excluding storage and cpool gC/m^2 T - 150 DISPVEGN displayed vegetation nitrogen gN/m^2 T - 151 DLRAD downward longwave radiation below the canopy W/m^2 F - 152 DORMANT_FLAG dormancy flag none F - 153 DOWNREG fractional reduction in GPP due to N limitation proportion F - 154 DPVLTRB1 turbulent deposition velocity 1 m/s F - 155 DPVLTRB2 turbulent deposition velocity 2 m/s F - 156 DPVLTRB3 turbulent deposition velocity 3 m/s F - 157 DPVLTRB4 turbulent deposition velocity 4 m/s F - 158 DSL dry surface layer thickness mm T - 159 DSTDEP total dust deposition (dry+wet) from atmosphere kg/m^2/s T - 160 DSTFLXT total surface dust emission kg/m2/s T - 161 DT_VEG change in t_veg, last iteration K F - 162 DWT_CONV_CFLUX conversion C flux (immediate loss to atm) (0 at all times except first timestep of year) gC/m^2/s T - 163 DWT_CONV_CFLUX_DRIBBLED conversion C flux (immediate loss to atm), dribbled throughout the year gC/m^2/s T - 164 DWT_CONV_CFLUX_PATCH patch-level conversion C flux (immediate loss to atm) (0 at all times except first timestep of gC/m^2/s F - 165 DWT_CONV_NFLUX conversion N flux (immediate loss to atm) (0 at all times except first timestep of year) gN/m^2/s T - 166 DWT_CONV_NFLUX_PATCH patch-level conversion N flux (immediate loss to atm) (0 at all times except first timestep of gN/m^2/s F - 167 DWT_CROPPROD1C_GAIN landcover change-driven addition to 1-year crop product pool gC/m^2/s T - 168 DWT_CROPPROD1N_GAIN landcover change-driven addition to 1-year crop product pool gN/m^2/s T - 169 DWT_DEADCROOTC_TO_CWDC dead coarse root to CWD due to landcover change gC/m^2/s F - 170 DWT_DEADCROOTN_TO_CWDN dead coarse root to CWD due to landcover change gN/m^2/s F - 171 DWT_FROOTC_TO_LITR_CEL_C fine root to litter due to landcover change gC/m^2/s F - 172 DWT_FROOTC_TO_LITR_LIG_C fine root to litter due to landcover change gC/m^2/s F - 173 DWT_FROOTC_TO_LITR_MET_C fine root to litter due to landcover change gC/m^2/s F - 174 DWT_FROOTN_TO_LITR_CEL_N fine root to litter due to landcover change gN/m^2/s F - 175 DWT_FROOTN_TO_LITR_LIG_N fine root to litter due to landcover change gN/m^2/s F - 176 DWT_FROOTN_TO_LITR_MET_N fine root to litter due to landcover change gN/m^2/s F - 177 DWT_LIVECROOTC_TO_CWDC live coarse root to CWD due to landcover change gC/m^2/s F - 178 DWT_LIVECROOTN_TO_CWDN live coarse root to CWD due to landcover change gN/m^2/s F - 179 DWT_PROD100C_GAIN landcover change-driven addition to 100-yr wood product pool gC/m^2/s F - 180 DWT_PROD100N_GAIN landcover change-driven addition to 100-yr wood product pool gN/m^2/s F - 181 DWT_PROD10C_GAIN landcover change-driven addition to 10-yr wood product pool gC/m^2/s F - 182 DWT_PROD10N_GAIN landcover change-driven addition to 10-yr wood product pool gN/m^2/s F - 183 DWT_SEEDC_TO_DEADSTEM seed source to patch-level deadstem gC/m^2/s F - 184 DWT_SEEDC_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gC/m^2/s F - 185 DWT_SEEDC_TO_LEAF seed source to patch-level leaf gC/m^2/s F - 186 DWT_SEEDC_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gC/m^2/s F - 187 DWT_SEEDN_TO_DEADSTEM seed source to patch-level deadstem gN/m^2/s T - 188 DWT_SEEDN_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gN/m^2/s F - 189 DWT_SEEDN_TO_LEAF seed source to patch-level leaf gN/m^2/s T - 190 DWT_SEEDN_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gN/m^2/s F - 191 DWT_SLASH_CFLUX slash C flux (to litter diagnostic only) (0 at all times except first timestep of year) gC/m^2/s T - 192 DWT_SLASH_CFLUX_PATCH patch-level slash C flux (to litter diagnostic only) (0 at all times except first timestep of gC/m^2/s F - 193 DWT_WOODPRODC_GAIN landcover change-driven addition to wood product pools gC/m^2/s T - 194 DWT_WOODPRODN_GAIN landcover change-driven addition to wood product pools gN/m^2/s T - 195 DWT_WOOD_PRODUCTC_GAIN_PATCH patch-level landcover change-driven addition to wood product pools(0 at all times except first gC/m^2/s F - 196 DYN_COL_ADJUSTMENTS_CH4 Adjustments in ch4 due to dynamic column areas; only makes sense at the column level: should n gC/m^2 F - 197 DYN_COL_SOIL_ADJUSTMENTS_C Adjustments in soil carbon due to dynamic column areas; only makes sense at the column level: gC/m^2 F - 198 DYN_COL_SOIL_ADJUSTMENTS_N Adjustments in soil nitrogen due to dynamic column areas; only makes sense at the column level gN/m^2 F - 199 DYN_COL_SOIL_ADJUSTMENTS_NH4 Adjustments in soil NH4 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F - 200 DYN_COL_SOIL_ADJUSTMENTS_NO3 Adjustments in soil NO3 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F - 201 EFF_POROSITY effective porosity = porosity - vol_ice proportion F - 202 EFLXBUILD building heat flux from change in interior building air temperature W/m^2 T - 203 EFLX_DYNBAL dynamic land cover change conversion energy flux W/m^2 T - 204 EFLX_GNET net heat flux into ground W/m^2 F - 205 EFLX_GRND_LAKE net heat flux into lake/snow surface, excluding light transmission W/m^2 T - 206 EFLX_LH_TOT total latent heat flux [+ to atm] W/m^2 T - 207 EFLX_LH_TOT_ICE total latent heat flux [+ to atm] (ice landunits only) W/m^2 F - 208 EFLX_LH_TOT_R Rural total evaporation W/m^2 T - 209 EFLX_LH_TOT_U Urban total evaporation W/m^2 F - 210 EFLX_SOIL_GRND soil heat flux [+ into soil] W/m^2 F - 211 ELAI exposed one-sided leaf area index m^2/m^2 T - 212 EMG ground emissivity proportion F - 213 EMV vegetation emissivity proportion F - 214 EOPT Eopt coefficient for VOC calc non F - 215 EPT 2 m Equiv Pot Temp K T - 216 EPT_R Rural 2 m Equiv Pot Temp K T - 217 EPT_U Urban 2 m Equiv Pot Temp K T - 218 ER total ecosystem respiration, autotrophic + heterotrophic gC/m^2/s T - 219 ERRH2O total water conservation error mm T - 220 ERRH2OSNO imbalance in snow depth (liquid water) mm T - 221 ERRSEB surface energy conservation error W/m^2 T - 222 ERRSOI soil/lake energy conservation error W/m^2 T - 223 ERRSOL solar radiation conservation error W/m^2 T - 224 ESAI exposed one-sided stem area index m^2/m^2 T - 225 EXCESSC_MR excess C maintenance respiration gC/m^2/s F - 226 EXCESS_CFLUX C flux not allocated due to downregulation gC/m^2/s F - 227 FAREA_BURNED timestep fractional area burned s-1 T - 228 FCANSNO fraction of canopy that is wet proportion F - 229 FCEV canopy evaporation W/m^2 T - 230 FCH4 Gridcell surface CH4 flux to atmosphere (+ to atm) kgC/m2/s T - 231 FCH4TOCO2 Gridcell oxidation of CH4 to CO2 gC/m2/s T - 232 FCH4_DFSAT CH4 additional flux due to changing fsat, natural vegetated and crop landunits only kgC/m2/s T - 233 FCO2 CO2 flux to atmosphere (+ to atm) kgCO2/m2/s F - 234 FCOV fractional impermeable area unitless T - 235 FCTR canopy transpiration W/m^2 T - 236 FDRY fraction of foliage that is green and dry proportion F - 237 FERTNITRO Nitrogen fertilizer for each crop gN/m2/yr F - 238 FERT_COUNTER time left to fertilize seconds F - 239 FERT_TO_SMINN fertilizer to soil mineral N gN/m^2/s F - 240 FFIX_TO_SMINN free living N fixation to soil mineral N gN/m^2/s T - 241 FGEV ground evaporation W/m^2 T - 242 FGR heat flux into soil/snow including snow melt and lake / snow light transmission W/m^2 T - 243 FGR12 heat flux between soil layers 1 and 2 W/m^2 T - 244 FGR_ICE heat flux into soil/snow including snow melt and lake / snow light transmission (ice landunits W/m^2 F - 245 FGR_R Rural heat flux into soil/snow including snow melt and snow light transmission W/m^2 F - 246 FGR_SOIL_R Rural downward heat flux at interface below each soil layer watt/m^2 F - 247 FGR_U Urban heat flux into soil/snow including snow melt W/m^2 F - 248 FH2OSFC fraction of ground covered by surface water unitless T - 249 FH2OSFC_NOSNOW fraction of ground covered by surface water (if no snow present) unitless F - 250 FINUNDATED fractional inundated area of vegetated columns unitless T - 251 FINUNDATED_LAG time-lagged inundated fraction of vegetated columns unitless F - 252 FIRA net infrared (longwave) radiation W/m^2 T - 253 FIRA_ICE net infrared (longwave) radiation (ice landunits only) W/m^2 F - 254 FIRA_R Rural net infrared (longwave) radiation W/m^2 T - 255 FIRA_U Urban net infrared (longwave) radiation W/m^2 F - 256 FIRE emitted infrared (longwave) radiation W/m^2 T - 257 FIRE_ICE emitted infrared (longwave) radiation (ice landunits only) W/m^2 F - 258 FIRE_R Rural emitted infrared (longwave) radiation W/m^2 T - 259 FIRE_U Urban emitted infrared (longwave) radiation W/m^2 F - 260 FLDS atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 T - 261 FLDS_ICE atmospheric longwave radiation (downscaled to columns in glacier regions) (ice landunits only) W/m^2 F - 262 FMAX_DENIT_CARBONSUBSTRATE FMAX_DENIT_CARBONSUBSTRATE gN/m^3/s F - 263 FMAX_DENIT_NITRATE FMAX_DENIT_NITRATE gN/m^3/s F - 264 FPI fraction of potential immobilization proportion T - 265 FPI_vr fraction of potential immobilization proportion F - 266 FPSN photosynthesis umol m-2 s-1 T - 267 FPSN24 24 hour accumulative patch photosynthesis starting from mid-night umol CO2/m^2 ground/day F - 268 FPSN_WC Rubisco-limited photosynthesis umol m-2 s-1 F - 269 FPSN_WJ RuBP-limited photosynthesis umol m-2 s-1 F - 270 FPSN_WP Product-limited photosynthesis umol m-2 s-1 F - 271 FRAC_ICEOLD fraction of ice relative to the tot water proportion F - 272 FREE_RETRANSN_TO_NPOOL deployment of retranslocated N gN/m^2/s T - 273 FROOTC fine root C gC/m^2 T - 274 FROOTC_ALLOC fine root C allocation gC/m^2/s T - 275 FROOTC_LOSS fine root C loss gC/m^2/s T - 276 FROOTC_STORAGE fine root C storage gC/m^2 F - 277 FROOTC_STORAGE_TO_XFER fine root C shift storage to transfer gC/m^2/s F - 278 FROOTC_TO_LITTER fine root C litterfall gC/m^2/s F - 279 FROOTC_XFER fine root C transfer gC/m^2 F - 280 FROOTC_XFER_TO_FROOTC fine root C growth from storage gC/m^2/s F - 281 FROOTN fine root N gN/m^2 T - 282 FROOTN_STORAGE fine root N storage gN/m^2 F - 283 FROOTN_STORAGE_TO_XFER fine root N shift storage to transfer gN/m^2/s F - 284 FROOTN_TO_LITTER fine root N litterfall gN/m^2/s F - 285 FROOTN_XFER fine root N transfer gN/m^2 F - 286 FROOTN_XFER_TO_FROOTN fine root N growth from storage gN/m^2/s F - 287 FROOT_MR fine root maintenance respiration gC/m^2/s F - 288 FROOT_PROF profile for litter C and N inputs from fine roots 1/m F - 289 FROST_TABLE frost table depth (natural vegetated and crop landunits only) m F - 290 FSA absorbed solar radiation W/m^2 T - 291 FSAT fractional area with water table at surface unitless T - 292 FSA_ICE absorbed solar radiation (ice landunits only) W/m^2 F - 293 FSA_R Rural absorbed solar radiation W/m^2 F - 294 FSA_U Urban absorbed solar radiation W/m^2 F - 295 FSD24 direct radiation (last 24hrs) K F - 296 FSD240 direct radiation (last 240hrs) K F - 297 FSDS atmospheric incident solar radiation W/m^2 T - 298 FSDSND direct nir incident solar radiation W/m^2 T - 299 FSDSNDLN direct nir incident solar radiation at local noon W/m^2 T - 300 FSDSNI diffuse nir incident solar radiation W/m^2 T - 301 FSDSVD direct vis incident solar radiation W/m^2 T - 302 FSDSVDLN direct vis incident solar radiation at local noon W/m^2 T - 303 FSDSVI diffuse vis incident solar radiation W/m^2 T - 304 FSDSVILN diffuse vis incident solar radiation at local noon W/m^2 T - 305 FSH sensible heat not including correction for land use change and rain/snow conversion W/m^2 T - 306 FSH_G sensible heat from ground W/m^2 T - 307 FSH_ICE sensible heat not including correction for land use change and rain/snow conversion (ice landu W/m^2 F - 308 FSH_PRECIP_CONVERSION Sensible heat flux from conversion of rain/snow atm forcing W/m^2 T - 309 FSH_R Rural sensible heat W/m^2 T - 310 FSH_RUNOFF_ICE_TO_LIQ sensible heat flux generated from conversion of ice runoff to liquid W/m^2 T - 311 FSH_TO_COUPLER sensible heat sent to coupler (includes corrections for land use change, rain/snow conversion W/m^2 T - 312 FSH_U Urban sensible heat W/m^2 F - 313 FSH_V sensible heat from veg W/m^2 T - 314 FSI24 indirect radiation (last 24hrs) K F - 315 FSI240 indirect radiation (last 240hrs) K F - 316 FSM snow melt heat flux W/m^2 T - 317 FSM_ICE snow melt heat flux (ice landunits only) W/m^2 F - 318 FSM_R Rural snow melt heat flux W/m^2 F - 319 FSM_U Urban snow melt heat flux W/m^2 F - 320 FSNO fraction of ground covered by snow unitless T - 321 FSNO_EFF effective fraction of ground covered by snow unitless T - 322 FSNO_ICE fraction of ground covered by snow (ice landunits only) unitless F - 323 FSR reflected solar radiation W/m^2 T - 324 FSRND direct nir reflected solar radiation W/m^2 T - 325 FSRNDLN direct nir reflected solar radiation at local noon W/m^2 T - 326 FSRNI diffuse nir reflected solar radiation W/m^2 T - 327 FSRSF reflected solar radiation W/m^2 T - 328 FSRSFND direct nir reflected solar radiation W/m^2 T - 329 FSRSFNDLN direct nir reflected solar radiation at local noon W/m^2 T - 330 FSRSFNI diffuse nir reflected solar radiation W/m^2 T - 331 FSRSFVD direct vis reflected solar radiation W/m^2 T - 332 FSRSFVDLN direct vis reflected solar radiation at local noon W/m^2 T - 333 FSRSFVI diffuse vis reflected solar radiation W/m^2 T - 334 FSRVD direct vis reflected solar radiation W/m^2 T - 335 FSRVDLN direct vis reflected solar radiation at local noon W/m^2 T - 336 FSRVI diffuse vis reflected solar radiation W/m^2 T - 337 FSR_ICE reflected solar radiation (ice landunits only) W/m^2 F - 338 FSUN sunlit fraction of canopy proportion F - 339 FSUN24 fraction sunlit (last 24hrs) K F - 340 FSUN240 fraction sunlit (last 240hrs) K F - 341 FUELC fuel load gC/m^2 T - 342 FV friction velocity for dust model m/s F - 343 FWET fraction of canopy that is wet proportion F - 344 F_DENIT denitrification flux gN/m^2/s T - 345 F_DENIT_BASE F_DENIT_BASE gN/m^3/s F - 346 F_DENIT_vr denitrification flux gN/m^3/s F - 347 F_N2O_DENIT denitrification N2O flux gN/m^2/s T - 348 F_N2O_NIT nitrification N2O flux gN/m^2/s T - 349 F_NIT nitrification flux gN/m^2/s T - 350 F_NIT_vr nitrification flux gN/m^3/s F - 351 FireComp_BC fire emissions flux of BC kg/m2/sec F - 352 FireComp_OC fire emissions flux of OC kg/m2/sec F - 353 FireComp_SO2 fire emissions flux of SO2 kg/m2/sec F - 354 FireEmis_TOT Total fire emissions flux gC/m2/sec F - 355 FireEmis_ZTOP Top of vertical fire emissions distribution m F - 356 FireMech_SO2 fire emissions flux of SO2 kg/m2/sec F - 357 FireMech_bc_a1 fire emissions flux of bc_a1 kg/m2/sec F - 358 FireMech_pom_a1 fire emissions flux of pom_a1 kg/m2/sec F - 359 GAMMA total gamma for VOC calc non F - 360 GAMMAA gamma A for VOC calc non F - 361 GAMMAC gamma C for VOC calc non F - 362 GAMMAL gamma L for VOC calc non F - 363 GAMMAP gamma P for VOC calc non F - 364 GAMMAS gamma S for VOC calc non F - 365 GAMMAT gamma T for VOC calc non F - 366 GDD0 Growing degree days base 0C from planting ddays F - 367 GDD020 Twenty year average of growing degree days base 0C from planting ddays F - 368 GDD10 Growing degree days base 10C from planting ddays F - 369 GDD1020 Twenty year average of growing degree days base 10C from planting ddays F - 370 GDD8 Growing degree days base 8C from planting ddays F - 371 GDD820 Twenty year average of growing degree days base 8C from planting ddays F - 372 GDDHARV Growing degree days (gdd) needed to harvest ddays F - 373 GDDPLANT Accumulated growing degree days past planting date for crop ddays F - 374 GDDTSOI Growing degree-days from planting (top two soil layers) ddays F - 375 GPP gross primary production gC/m^2/s T - 376 GR total growth respiration gC/m^2/s T - 377 GRAINC grain C (does not equal yield) gC/m^2 T - 378 GRAINC_TO_FOOD grain C to food gC/m^2/s T - 379 GRAINC_TO_SEED grain C to seed gC/m^2/s T - 380 GRAINN grain N gN/m^2 T - 381 GRESP_STORAGE growth respiration storage gC/m^2 F - 382 GRESP_STORAGE_TO_XFER growth respiration shift storage to transfer gC/m^2/s F - 383 GRESP_XFER growth respiration transfer gC/m^2 F - 384 GROSS_NMIN gross rate of N mineralization gN/m^2/s T - 385 GROSS_NMIN_vr gross rate of N mineralization gN/m^3/s F - 386 GSSHA shaded leaf stomatal conductance umol H20/m2/s T - 387 GSSHALN shaded leaf stomatal conductance at local noon umol H20/m2/s T - 388 GSSUN sunlit leaf stomatal conductance umol H20/m2/s T - 389 GSSUNLN sunlit leaf stomatal conductance at local noon umol H20/m2/s T - 390 H2OCAN intercepted water mm T - 391 H2OSFC surface water depth mm T - 392 H2OSNO snow depth (liquid water) mm T - 393 H2OSNO_ICE snow depth (liquid water, ice landunits only) mm F - 394 H2OSNO_TOP mass of snow in top snow layer kg/m2 T - 395 H2OSOI volumetric soil water (natural vegetated and crop landunits only) mm3/mm3 T - 396 HBOT canopy bottom m F - 397 HEAT_CONTENT1 initial gridcell total heat content J/m^2 T - 398 HEAT_CONTENT1_VEG initial gridcell total heat content - natural vegetated and crop landunits only J/m^2 F - 399 HEAT_CONTENT2 post land cover change total heat content J/m^2 F - 400 HEAT_FROM_AC sensible heat flux put into canyon due to heat removed from air conditioning W/m^2 T - 401 HIA 2 m NWS Heat Index C T - 402 HIA_R Rural 2 m NWS Heat Index C T - 403 HIA_U Urban 2 m NWS Heat Index C T - 404 HK hydraulic conductivity (natural vegetated and crop landunits only) mm/s F - 405 HR total heterotrophic respiration gC/m^2/s T - 406 HR_vr total vertically resolved heterotrophic respiration gC/m^3/s T - 407 HTOP canopy top m T - 408 HUMIDEX 2 m Humidex C T - 409 HUMIDEX_R Rural 2 m Humidex C T - 410 HUMIDEX_U Urban 2 m Humidex C T - 411 ICE_CONTENT1 initial gridcell total ice content mm T - 412 ICE_CONTENT2 post land cover change total ice content mm F - 413 ICE_MODEL_FRACTION Ice sheet model fractional coverage unitless F - 414 INIT_GPP GPP flux before downregulation gC/m^2/s F - 415 INT_SNOW accumulated swe (natural vegetated and crop landunits only) mm F - 416 INT_SNOW_ICE accumulated swe (ice landunits only) mm F - 417 JMX25T canopy profile of jmax umol/m2/s T - 418 Jmx25Z maximum rate of electron transport at 25 Celcius for canopy layers umol electrons/m2/s T - 419 KROOT root conductance each soil layer 1/s F - 420 KSOIL soil conductance in each soil layer 1/s F - 421 K_CWD coarse woody debris potential loss coefficient 1/s F - 422 K_LITR1 litter 1 potential loss coefficient 1/s F - 423 K_LITR2 litter 2 potential loss coefficient 1/s F - 424 K_LITR3 litter 3 potential loss coefficient 1/s F - 425 K_NITR K_NITR 1/s F - 426 K_NITR_H2O K_NITR_H2O unitless F - 427 K_NITR_PH K_NITR_PH unitless F - 428 K_NITR_T K_NITR_T unitless F - 429 K_SOIL1 soil 1 potential loss coefficient 1/s F - 430 K_SOIL2 soil 2 potential loss coefficient 1/s F - 431 K_SOIL3 soil 3 potential loss coefficient 1/s F - 432 LAI240 240hr average of leaf area index m^2/m^2 F - 433 LAISHA shaded projected leaf area index m^2/m^2 T - 434 LAISUN sunlit projected leaf area index m^2/m^2 T - 435 LAKEICEFRAC lake layer ice mass fraction unitless F - 436 LAKEICEFRAC_SURF surface lake layer ice mass fraction unitless T - 437 LAKEICETHICK thickness of lake ice (including physical expansion on freezing) m T - 438 LAND_USE_FLUX total C emitted from land cover conversion (smoothed over the year) and wood and grain product gC/m^2/s T - 439 LATBASET latitude vary base temperature for gddplant degree C F - 440 LEAFC leaf C gC/m^2 T - 441 LEAFCN Leaf CN ratio used for flexible CN gC/gN T - 442 LEAFCN_OFFSET Leaf C:N used by FUN unitless F - 443 LEAFCN_STORAGE Storage Leaf CN ratio used for flexible CN gC/gN F - 444 LEAFC_ALLOC leaf C allocation gC/m^2/s T - 445 LEAFC_CHANGE C change in leaf gC/m^2/s T - 446 LEAFC_LOSS leaf C loss gC/m^2/s T - 447 LEAFC_STORAGE leaf C storage gC/m^2 F - 448 LEAFC_STORAGE_TO_XFER leaf C shift storage to transfer gC/m^2/s F - 449 LEAFC_STORAGE_XFER_ACC Accumulated leaf C transfer gC/m^2 F - 450 LEAFC_TO_BIOFUELC leaf C to biofuel C gC/m^2/s T - 451 LEAFC_TO_LITTER leaf C litterfall gC/m^2/s F - 452 LEAFC_TO_LITTER_FUN leaf C litterfall used by FUN gC/m^2/s T - 453 LEAFC_XFER leaf C transfer gC/m^2 F - 454 LEAFC_XFER_TO_LEAFC leaf C growth from storage gC/m^2/s F - 455 LEAFN leaf N gN/m^2 T - 456 LEAFN_STORAGE leaf N storage gN/m^2 F - 457 LEAFN_STORAGE_TO_XFER leaf N shift storage to transfer gN/m^2/s F - 458 LEAFN_STORAGE_XFER_ACC Accmulated leaf N transfer gN/m^2 F - 459 LEAFN_TO_LITTER leaf N litterfall gN/m^2/s T - 460 LEAFN_TO_RETRANSN leaf N to retranslocated N pool gN/m^2/s F - 461 LEAFN_XFER leaf N transfer gN/m^2 F - 462 LEAFN_XFER_TO_LEAFN leaf N growth from storage gN/m^2/s F - 463 LEAF_MR leaf maintenance respiration gC/m^2/s T - 464 LEAF_PROF profile for litter C and N inputs from leaves 1/m F - 465 LFC2 conversion area fraction of BET and BDT that burned per sec T - 466 LGSF long growing season factor proportion F - 467 LIQCAN intercepted liquid water mm T - 468 LIQUID_CONTENT1 initial gridcell total liq content mm T - 469 LIQUID_CONTENT2 post landuse change gridcell total liq content mm F - 470 LIQUID_WATER_TEMP1 initial gridcell weighted average liquid water temperature K F - 471 LITFALL litterfall (leaves and fine roots) gC/m^2/s T - 472 LITFIRE litter fire losses gC/m^2/s F - 473 LITR1C LITR1 C gC/m^2 T - 474 LITR1C_1m LITR1 C to 1 meter gC/m^2 F - 475 LITR1C_TNDNCY_VERT_TRANS litter 1 C tendency due to vertical transport gC/m^3/s F - 476 LITR1C_TO_SOIL1C decomp. of litter 1 C to soil 1 C gC/m^2/s F - 477 LITR1C_TO_SOIL1C_vr decomp. of litter 1 C to soil 1 C gC/m^3/s F - 478 LITR1C_vr LITR1 C (vertically resolved) gC/m^3 T - 479 LITR1N LITR1 N gN/m^2 T - 480 LITR1N_1m LITR1 N to 1 meter gN/m^2 F - 481 LITR1N_TNDNCY_VERT_TRANS litter 1 N tendency due to vertical transport gN/m^3/s F - 482 LITR1N_TO_SOIL1N decomp. of litter 1 N to soil 1 N gN/m^2 F - 483 LITR1N_TO_SOIL1N_vr decomp. of litter 1 N to soil 1 N gN/m^3 F - 484 LITR1N_vr LITR1 N (vertically resolved) gN/m^3 T - 485 LITR1_HR Het. Resp. from litter 1 gC/m^2/s F - 486 LITR1_HR_vr Het. Resp. from litter 1 gC/m^3/s F - 487 LITR2C LITR2 C gC/m^2 T - 488 LITR2C_1m LITR2 C to 1 meter gC/m^2 F - 489 LITR2C_TNDNCY_VERT_TRANS litter 2 C tendency due to vertical transport gC/m^3/s F - 490 LITR2C_TO_SOIL1C decomp. of litter 2 C to soil 1 C gC/m^2/s F - 491 LITR2C_TO_SOIL1C_vr decomp. of litter 2 C to soil 1 C gC/m^3/s F - 492 LITR2C_vr LITR2 C (vertically resolved) gC/m^3 T - 493 LITR2N LITR2 N gN/m^2 T - 494 LITR2N_1m LITR2 N to 1 meter gN/m^2 F - 495 LITR2N_TNDNCY_VERT_TRANS litter 2 N tendency due to vertical transport gN/m^3/s F - 496 LITR2N_TO_SOIL1N decomp. of litter 2 N to soil 1 N gN/m^2 F - 497 LITR2N_TO_SOIL1N_vr decomp. of litter 2 N to soil 1 N gN/m^3 F - 498 LITR2N_vr LITR2 N (vertically resolved) gN/m^3 T - 499 LITR2_HR Het. Resp. from litter 2 gC/m^2/s F - 500 LITR2_HR_vr Het. Resp. from litter 2 gC/m^3/s F - 501 LITR3C LITR3 C gC/m^2 T - 502 LITR3C_1m LITR3 C to 1 meter gC/m^2 F - 503 LITR3C_TNDNCY_VERT_TRANS litter 3 C tendency due to vertical transport gC/m^3/s F - 504 LITR3C_TO_SOIL2C decomp. of litter 3 C to soil 2 C gC/m^2/s F - 505 LITR3C_TO_SOIL2C_vr decomp. of litter 3 C to soil 2 C gC/m^3/s F - 506 LITR3C_vr LITR3 C (vertically resolved) gC/m^3 T - 507 LITR3N LITR3 N gN/m^2 T - 508 LITR3N_1m LITR3 N to 1 meter gN/m^2 F - 509 LITR3N_TNDNCY_VERT_TRANS litter 3 N tendency due to vertical transport gN/m^3/s F - 510 LITR3N_TO_SOIL2N decomp. of litter 3 N to soil 2 N gN/m^2 F - 511 LITR3N_TO_SOIL2N_vr decomp. of litter 3 N to soil 2 N gN/m^3 F - 512 LITR3N_vr LITR3 N (vertically resolved) gN/m^3 T - 513 LITR3_HR Het. Resp. from litter 3 gC/m^2/s F - 514 LITR3_HR_vr Het. Resp. from litter 3 gC/m^3/s F - 515 LITTERC_HR litter C heterotrophic respiration gC/m^2/s T - 516 LITTERC_LOSS litter C loss gC/m^2/s T - 517 LIVECROOTC live coarse root C gC/m^2 T - 518 LIVECROOTC_STORAGE live coarse root C storage gC/m^2 F - 519 LIVECROOTC_STORAGE_TO_XFER live coarse root C shift storage to transfer gC/m^2/s F - 520 LIVECROOTC_TO_DEADCROOTC live coarse root C turnover gC/m^2/s F - 521 LIVECROOTC_XFER live coarse root C transfer gC/m^2 F - 522 LIVECROOTC_XFER_TO_LIVECROOTC live coarse root C growth from storage gC/m^2/s F - 523 LIVECROOTN live coarse root N gN/m^2 T - 524 LIVECROOTN_STORAGE live coarse root N storage gN/m^2 F - 525 LIVECROOTN_STORAGE_TO_XFER live coarse root N shift storage to transfer gN/m^2/s F - 526 LIVECROOTN_TO_DEADCROOTN live coarse root N turnover gN/m^2/s F - 527 LIVECROOTN_TO_RETRANSN live coarse root N to retranslocated N pool gN/m^2/s F - 528 LIVECROOTN_XFER live coarse root N transfer gN/m^2 F - 529 LIVECROOTN_XFER_TO_LIVECROOTN live coarse root N growth from storage gN/m^2/s F - 530 LIVECROOT_MR live coarse root maintenance respiration gC/m^2/s F - 531 LIVESTEMC live stem C gC/m^2 T - 532 LIVESTEMC_STORAGE live stem C storage gC/m^2 F - 533 LIVESTEMC_STORAGE_TO_XFER live stem C shift storage to transfer gC/m^2/s F - 534 LIVESTEMC_TO_BIOFUELC livestem C to biofuel C gC/m^2/s T - 535 LIVESTEMC_TO_DEADSTEMC live stem C turnover gC/m^2/s F - 536 LIVESTEMC_XFER live stem C transfer gC/m^2 F - 537 LIVESTEMC_XFER_TO_LIVESTEMC live stem C growth from storage gC/m^2/s F - 538 LIVESTEMN live stem N gN/m^2 T - 539 LIVESTEMN_STORAGE live stem N storage gN/m^2 F - 540 LIVESTEMN_STORAGE_TO_XFER live stem N shift storage to transfer gN/m^2/s F - 541 LIVESTEMN_TO_DEADSTEMN live stem N turnover gN/m^2/s F - 542 LIVESTEMN_TO_RETRANSN live stem N to retranslocated N pool gN/m^2/s F - 543 LIVESTEMN_XFER live stem N transfer gN/m^2 F - 544 LIVESTEMN_XFER_TO_LIVESTEMN live stem N growth from storage gN/m^2/s F - 545 LIVESTEM_MR live stem maintenance respiration gC/m^2/s F - 546 LNC leaf N concentration gN leaf/m^2 T - 547 LWdown atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 F - 548 LWup upwelling longwave radiation W/m^2 F - 549 MEG_acetaldehyde MEGAN flux kg/m2/sec T - 550 MEG_acetic_acid MEGAN flux kg/m2/sec T - 551 MEG_acetone MEGAN flux kg/m2/sec T - 552 MEG_carene_3 MEGAN flux kg/m2/sec T - 553 MEG_ethanol MEGAN flux kg/m2/sec T - 554 MEG_formaldehyde MEGAN flux kg/m2/sec T - 555 MEG_isoprene MEGAN flux kg/m2/sec T - 556 MEG_methanol MEGAN flux kg/m2/sec T - 557 MEG_pinene_a MEGAN flux kg/m2/sec T - 558 MEG_thujene_a MEGAN flux kg/m2/sec T - 559 MR maintenance respiration gC/m^2/s T - 560 M_CWDC_TO_FIRE coarse woody debris C fire loss gC/m^2/s F - 561 M_CWDC_TO_FIRE_vr coarse woody debris C fire loss gC/m^3/s F - 562 M_CWDN_TO_FIRE coarse woody debris N fire loss gN/m^2 F - 563 M_CWDN_TO_FIRE_vr coarse woody debris N fire loss gN/m^3 F - 564 M_DEADCROOTC_STORAGE_TO_LITTER dead coarse root C storage mortality gC/m^2/s F - 565 M_DEADCROOTC_STORAGE_TO_LITTER_FIRE dead coarse root C storage fire mortality to litter gC/m^2/s F - 566 M_DEADCROOTC_TO_LITTER dead coarse root C mortality gC/m^2/s F - 567 M_DEADCROOTC_XFER_TO_LITTER dead coarse root C transfer mortality gC/m^2/s F - 568 M_DEADCROOTN_STORAGE_TO_FIRE dead coarse root N storage fire loss gN/m^2/s F - 569 M_DEADCROOTN_STORAGE_TO_LITTER dead coarse root N storage mortality gN/m^2/s F - 570 M_DEADCROOTN_TO_FIRE dead coarse root N fire loss gN/m^2/s F - 571 M_DEADCROOTN_TO_LITTER dead coarse root N mortality gN/m^2/s F - 572 M_DEADCROOTN_TO_LITTER_FIRE dead coarse root N fire mortality to litter gN/m^2/s F - 573 M_DEADCROOTN_XFER_TO_FIRE dead coarse root N transfer fire loss gN/m^2/s F - 574 M_DEADCROOTN_XFER_TO_LITTER dead coarse root N transfer mortality gN/m^2/s F - 575 M_DEADROOTC_STORAGE_TO_FIRE dead root C storage fire loss gC/m^2/s F - 576 M_DEADROOTC_STORAGE_TO_LITTER_FIRE dead root C storage fire mortality to litter gC/m^2/s F - 577 M_DEADROOTC_TO_FIRE dead root C fire loss gC/m^2/s F - 578 M_DEADROOTC_TO_LITTER_FIRE dead root C fire mortality to litter gC/m^2/s F - 579 M_DEADROOTC_XFER_TO_FIRE dead root C transfer fire loss gC/m^2/s F - 580 M_DEADROOTC_XFER_TO_LITTER_FIRE dead root C transfer fire mortality to litter gC/m^2/s F - 581 M_DEADSTEMC_STORAGE_TO_FIRE dead stem C storage fire loss gC/m^2/s F - 582 M_DEADSTEMC_STORAGE_TO_LITTER dead stem C storage mortality gC/m^2/s F - 583 M_DEADSTEMC_STORAGE_TO_LITTER_FIRE dead stem C storage fire mortality to litter gC/m^2/s F - 584 M_DEADSTEMC_TO_FIRE dead stem C fire loss gC/m^2/s F - 585 M_DEADSTEMC_TO_LITTER dead stem C mortality gC/m^2/s F - 586 M_DEADSTEMC_TO_LITTER_FIRE dead stem C fire mortality to litter gC/m^2/s F - 587 M_DEADSTEMC_XFER_TO_FIRE dead stem C transfer fire loss gC/m^2/s F - 588 M_DEADSTEMC_XFER_TO_LITTER dead stem C transfer mortality gC/m^2/s F - 589 M_DEADSTEMC_XFER_TO_LITTER_FIRE dead stem C transfer fire mortality to litter gC/m^2/s F - 590 M_DEADSTEMN_STORAGE_TO_FIRE dead stem N storage fire loss gN/m^2/s F - 591 M_DEADSTEMN_STORAGE_TO_LITTER dead stem N storage mortality gN/m^2/s F - 592 M_DEADSTEMN_TO_FIRE dead stem N fire loss gN/m^2/s F - 593 M_DEADSTEMN_TO_LITTER dead stem N mortality gN/m^2/s F - 594 M_DEADSTEMN_TO_LITTER_FIRE dead stem N fire mortality to litter gN/m^2/s F - 595 M_DEADSTEMN_XFER_TO_FIRE dead stem N transfer fire loss gN/m^2/s F - 596 M_DEADSTEMN_XFER_TO_LITTER dead stem N transfer mortality gN/m^2/s F - 597 M_FROOTC_STORAGE_TO_FIRE fine root C storage fire loss gC/m^2/s F - 598 M_FROOTC_STORAGE_TO_LITTER fine root C storage mortality gC/m^2/s F - 599 M_FROOTC_STORAGE_TO_LITTER_FIRE fine root C storage fire mortality to litter gC/m^2/s F - 600 M_FROOTC_TO_FIRE fine root C fire loss gC/m^2/s F - 601 M_FROOTC_TO_LITTER fine root C mortality gC/m^2/s F - 602 M_FROOTC_TO_LITTER_FIRE fine root C fire mortality to litter gC/m^2/s F - 603 M_FROOTC_XFER_TO_FIRE fine root C transfer fire loss gC/m^2/s F - 604 M_FROOTC_XFER_TO_LITTER fine root C transfer mortality gC/m^2/s F - 605 M_FROOTC_XFER_TO_LITTER_FIRE fine root C transfer fire mortality to litter gC/m^2/s F - 606 M_FROOTN_STORAGE_TO_FIRE fine root N storage fire loss gN/m^2/s F - 607 M_FROOTN_STORAGE_TO_LITTER fine root N storage mortality gN/m^2/s F - 608 M_FROOTN_TO_FIRE fine root N fire loss gN/m^2/s F - 609 M_FROOTN_TO_LITTER fine root N mortality gN/m^2/s F - 610 M_FROOTN_XFER_TO_FIRE fine root N transfer fire loss gN/m^2/s F - 611 M_FROOTN_XFER_TO_LITTER fine root N transfer mortality gN/m^2/s F - 612 M_GRESP_STORAGE_TO_FIRE growth respiration storage fire loss gC/m^2/s F - 613 M_GRESP_STORAGE_TO_LITTER growth respiration storage mortality gC/m^2/s F - 614 M_GRESP_STORAGE_TO_LITTER_FIRE growth respiration storage fire mortality to litter gC/m^2/s F - 615 M_GRESP_XFER_TO_FIRE growth respiration transfer fire loss gC/m^2/s F - 616 M_GRESP_XFER_TO_LITTER growth respiration transfer mortality gC/m^2/s F - 617 M_GRESP_XFER_TO_LITTER_FIRE growth respiration transfer fire mortality to litter gC/m^2/s F - 618 M_LEAFC_STORAGE_TO_FIRE leaf C storage fire loss gC/m^2/s F - 619 M_LEAFC_STORAGE_TO_LITTER leaf C storage mortality gC/m^2/s F - 620 M_LEAFC_STORAGE_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F - 621 M_LEAFC_TO_FIRE leaf C fire loss gC/m^2/s F - 622 M_LEAFC_TO_LITTER leaf C mortality gC/m^2/s F - 623 M_LEAFC_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F - 624 M_LEAFC_XFER_TO_FIRE leaf C transfer fire loss gC/m^2/s F - 625 M_LEAFC_XFER_TO_LITTER leaf C transfer mortality gC/m^2/s F - 626 M_LEAFC_XFER_TO_LITTER_FIRE leaf C transfer fire mortality to litter gC/m^2/s F - 627 M_LEAFN_STORAGE_TO_FIRE leaf N storage fire loss gN/m^2/s F - 628 M_LEAFN_STORAGE_TO_LITTER leaf N storage mortality gN/m^2/s F - 629 M_LEAFN_TO_FIRE leaf N fire loss gN/m^2/s F - 630 M_LEAFN_TO_LITTER leaf N mortality gN/m^2/s F - 631 M_LEAFN_XFER_TO_FIRE leaf N transfer fire loss gN/m^2/s F - 632 M_LEAFN_XFER_TO_LITTER leaf N transfer mortality gN/m^2/s F - 633 M_LITR1C_TO_FIRE litter 1 C fire loss gC/m^2/s F - 634 M_LITR1C_TO_FIRE_vr litter 1 C fire loss gC/m^3/s F - 635 M_LITR1C_TO_LEACHING litter 1 C leaching loss gC/m^2/s F - 636 M_LITR1N_TO_FIRE litter 1 N fire loss gN/m^2 F - 637 M_LITR1N_TO_FIRE_vr litter 1 N fire loss gN/m^3 F - 638 M_LITR1N_TO_LEACHING litter 1 N leaching loss gN/m^2/s F - 639 M_LITR2C_TO_FIRE litter 2 C fire loss gC/m^2/s F - 640 M_LITR2C_TO_FIRE_vr litter 2 C fire loss gC/m^3/s F - 641 M_LITR2C_TO_LEACHING litter 2 C leaching loss gC/m^2/s F - 642 M_LITR2N_TO_FIRE litter 2 N fire loss gN/m^2 F - 643 M_LITR2N_TO_FIRE_vr litter 2 N fire loss gN/m^3 F - 644 M_LITR2N_TO_LEACHING litter 2 N leaching loss gN/m^2/s F - 645 M_LITR3C_TO_FIRE litter 3 C fire loss gC/m^2/s F - 646 M_LITR3C_TO_FIRE_vr litter 3 C fire loss gC/m^3/s F - 647 M_LITR3C_TO_LEACHING litter 3 C leaching loss gC/m^2/s F - 648 M_LITR3N_TO_FIRE litter 3 N fire loss gN/m^2 F - 649 M_LITR3N_TO_FIRE_vr litter 3 N fire loss gN/m^3 F - 650 M_LITR3N_TO_LEACHING litter 3 N leaching loss gN/m^2/s F - 651 M_LIVECROOTC_STORAGE_TO_LITTER live coarse root C storage mortality gC/m^2/s F - 652 M_LIVECROOTC_STORAGE_TO_LITTER_FIRE live coarse root C fire mortality to litter gC/m^2/s F - 653 M_LIVECROOTC_TO_LITTER live coarse root C mortality gC/m^2/s F - 654 M_LIVECROOTC_XFER_TO_LITTER live coarse root C transfer mortality gC/m^2/s F - 655 M_LIVECROOTN_STORAGE_TO_FIRE live coarse root N storage fire loss gN/m^2/s F - 656 M_LIVECROOTN_STORAGE_TO_LITTER live coarse root N storage mortality gN/m^2/s F - 657 M_LIVECROOTN_TO_FIRE live coarse root N fire loss gN/m^2/s F - 658 M_LIVECROOTN_TO_LITTER live coarse root N mortality gN/m^2/s F - 659 M_LIVECROOTN_XFER_TO_FIRE live coarse root N transfer fire loss gN/m^2/s F - 660 M_LIVECROOTN_XFER_TO_LITTER live coarse root N transfer mortality gN/m^2/s F - 661 M_LIVEROOTC_STORAGE_TO_FIRE live root C storage fire loss gC/m^2/s F - 662 M_LIVEROOTC_STORAGE_TO_LITTER_FIRE live root C storage fire mortality to litter gC/m^2/s F - 663 M_LIVEROOTC_TO_DEADROOTC_FIRE live root C fire mortality to dead root C gC/m^2/s F - 664 M_LIVEROOTC_TO_FIRE live root C fire loss gC/m^2/s F - 665 M_LIVEROOTC_TO_LITTER_FIRE live root C fire mortality to litter gC/m^2/s F - 666 M_LIVEROOTC_XFER_TO_FIRE live root C transfer fire loss gC/m^2/s F - 667 M_LIVEROOTC_XFER_TO_LITTER_FIRE live root C transfer fire mortality to litter gC/m^2/s F - 668 M_LIVESTEMC_STORAGE_TO_FIRE live stem C storage fire loss gC/m^2/s F - 669 M_LIVESTEMC_STORAGE_TO_LITTER live stem C storage mortality gC/m^2/s F - 670 M_LIVESTEMC_STORAGE_TO_LITTER_FIRE live stem C storage fire mortality to litter gC/m^2/s F - 671 M_LIVESTEMC_TO_DEADSTEMC_FIRE live stem C fire mortality to dead stem C gC/m^2/s F - 672 M_LIVESTEMC_TO_FIRE live stem C fire loss gC/m^2/s F - 673 M_LIVESTEMC_TO_LITTER live stem C mortality gC/m^2/s F - 674 M_LIVESTEMC_TO_LITTER_FIRE live stem C fire mortality to litter gC/m^2/s F - 675 M_LIVESTEMC_XFER_TO_FIRE live stem C transfer fire loss gC/m^2/s F - 676 M_LIVESTEMC_XFER_TO_LITTER live stem C transfer mortality gC/m^2/s F - 677 M_LIVESTEMC_XFER_TO_LITTER_FIRE live stem C transfer fire mortality to litter gC/m^2/s F - 678 M_LIVESTEMN_STORAGE_TO_FIRE live stem N storage fire loss gN/m^2/s F - 679 M_LIVESTEMN_STORAGE_TO_LITTER live stem N storage mortality gN/m^2/s F - 680 M_LIVESTEMN_TO_FIRE live stem N fire loss gN/m^2/s F - 681 M_LIVESTEMN_TO_LITTER live stem N mortality gN/m^2/s F - 682 M_LIVESTEMN_XFER_TO_FIRE live stem N transfer fire loss gN/m^2/s F - 683 M_LIVESTEMN_XFER_TO_LITTER live stem N transfer mortality gN/m^2/s F - 684 M_RETRANSN_TO_FIRE retranslocated N pool fire loss gN/m^2/s F - 685 M_RETRANSN_TO_LITTER retranslocated N pool mortality gN/m^2/s F - 686 M_SOIL1C_TO_LEACHING soil 1 C leaching loss gC/m^2/s F - 687 M_SOIL1N_TO_LEACHING soil 1 N leaching loss gN/m^2/s F - 688 M_SOIL2C_TO_LEACHING soil 2 C leaching loss gC/m^2/s F - 689 M_SOIL2N_TO_LEACHING soil 2 N leaching loss gN/m^2/s F - 690 M_SOIL3C_TO_LEACHING soil 3 C leaching loss gC/m^2/s F - 691 M_SOIL3N_TO_LEACHING soil 3 N leaching loss gN/m^2/s F - 692 NACTIVE Mycorrhizal N uptake flux gN/m^2/s T - 693 NACTIVE_NH4 Mycorrhizal N uptake flux gN/m^2/s T - 694 NACTIVE_NO3 Mycorrhizal N uptake flux gN/m^2/s T - 695 NAM AM-associated N uptake flux gN/m^2/s T - 696 NAM_NH4 AM-associated N uptake flux gN/m^2/s T - 697 NAM_NO3 AM-associated N uptake flux gN/m^2/s T - 698 NBP net biome production, includes fire, landuse, harvest and hrv_xsmrpool flux (latter smoothed o gC/m^2/s T - 699 NDEPLOY total N deployed in new growth gN/m^2/s T - 700 NDEP_PROF profile for atmospheric N deposition 1/m F - 701 NDEP_TO_SMINN atmospheric N deposition to soil mineral N gN/m^2/s T - 702 NECM ECM-associated N uptake flux gN/m^2/s T - 703 NECM_NH4 ECM-associated N uptake flux gN/m^2/s T - 704 NECM_NO3 ECM-associated N uptake flux gN/m^2/s T - 705 NEE net ecosystem exchange of carbon, includes fire and hrv_xsmrpool (latter smoothed over the yea gC/m^2/s T - 706 NEM Gridcell net adjustment to net carbon exchange passed to atm. for methane production gC/m2/s T - 707 NEP net ecosystem production, excludes fire, landuse, and harvest flux, positive for sink gC/m^2/s T - 708 NET_NMIN net rate of N mineralization gN/m^2/s T - 709 NET_NMIN_vr net rate of N mineralization gN/m^3/s F - 710 NFERTILIZATION fertilizer added gN/m^2/s T - 711 NFIRE fire counts valid only in Reg.C counts/km2/sec T - 712 NFIX Symbiotic BNF uptake flux gN/m^2/s T - 713 NFIXATION_PROF profile for biological N fixation 1/m F - 714 NFIX_TO_SMINN symbiotic/asymbiotic N fixation to soil mineral N gN/m^2/s F - 715 NNONMYC Non-mycorrhizal N uptake flux gN/m^2/s T - 716 NNONMYC_NH4 Non-mycorrhizal N uptake flux gN/m^2/s T - 717 NNONMYC_NO3 Non-mycorrhizal N uptake flux gN/m^2/s T - 718 NPASSIVE Passive N uptake flux gN/m^2/s T - 719 NPOOL temporary plant N pool gN/m^2 T - 720 NPOOL_TO_DEADCROOTN allocation to dead coarse root N gN/m^2/s F - 721 NPOOL_TO_DEADCROOTN_STORAGE allocation to dead coarse root N storage gN/m^2/s F - 722 NPOOL_TO_DEADSTEMN allocation to dead stem N gN/m^2/s F - 723 NPOOL_TO_DEADSTEMN_STORAGE allocation to dead stem N storage gN/m^2/s F - 724 NPOOL_TO_FROOTN allocation to fine root N gN/m^2/s F - 725 NPOOL_TO_FROOTN_STORAGE allocation to fine root N storage gN/m^2/s F - 726 NPOOL_TO_LEAFN allocation to leaf N gN/m^2/s F - 727 NPOOL_TO_LEAFN_STORAGE allocation to leaf N storage gN/m^2/s F - 728 NPOOL_TO_LIVECROOTN allocation to live coarse root N gN/m^2/s F - 729 NPOOL_TO_LIVECROOTN_STORAGE allocation to live coarse root N storage gN/m^2/s F - 730 NPOOL_TO_LIVESTEMN allocation to live stem N gN/m^2/s F - 731 NPOOL_TO_LIVESTEMN_STORAGE allocation to live stem N storage gN/m^2/s F - 732 NPP net primary production gC/m^2/s T - 733 NPP_BURNEDOFF C that cannot be used for N uptake gC/m^2/s F - 734 NPP_GROWTH Total C used for growth in FUN gC/m^2/s T - 735 NPP_NACTIVE Mycorrhizal N uptake used C gC/m^2/s T - 736 NPP_NACTIVE_NH4 Mycorrhizal N uptake use C gC/m^2/s T - 737 NPP_NACTIVE_NO3 Mycorrhizal N uptake used C gC/m^2/s T - 738 NPP_NAM AM-associated N uptake used C gC/m^2/s T - 739 NPP_NAM_NH4 AM-associated N uptake use C gC/m^2/s T - 740 NPP_NAM_NO3 AM-associated N uptake use C gC/m^2/s T - 741 NPP_NECM ECM-associated N uptake used C gC/m^2/s T - 742 NPP_NECM_NH4 ECM-associated N uptake use C gC/m^2/s T - 743 NPP_NECM_NO3 ECM-associated N uptake used C gC/m^2/s T - 744 NPP_NFIX Symbiotic BNF uptake used C gC/m^2/s T - 745 NPP_NNONMYC Non-mycorrhizal N uptake used C gC/m^2/s T - 746 NPP_NNONMYC_NH4 Non-mycorrhizal N uptake use C gC/m^2/s T - 747 NPP_NNONMYC_NO3 Non-mycorrhizal N uptake use C gC/m^2/s T - 748 NPP_NRETRANS Retranslocated N uptake flux gC/m^2/s T - 749 NPP_NUPTAKE Total C used by N uptake in FUN gC/m^2/s T - 750 NRETRANS Retranslocated N uptake flux gN/m^2/s T - 751 NRETRANS_REG Retranslocated N uptake flux gN/m^2/s T - 752 NRETRANS_SEASON Retranslocated N uptake flux gN/m^2/s T - 753 NRETRANS_STRESS Retranslocated N uptake flux gN/m^2/s T - 754 NSUBSTEPS number of adaptive timesteps in CLM timestep unitless F - 755 NUPTAKE Total N uptake of FUN gN/m^2/s T - 756 NUPTAKE_NPP_FRACTION frac of NPP used in N uptake - T - 757 N_ALLOMETRY N allocation index none F - 758 O2_DECOMP_DEPTH_UNSAT O2 consumption from HR and AR for non-inundated area mol/m3/s F - 759 OCDEP total OC deposition (dry+wet) from atmosphere kg/m^2/s T - 760 OFFSET_COUNTER offset days counter days F - 761 OFFSET_FDD offset freezing degree days counter C degree-days F - 762 OFFSET_FLAG offset flag none F - 763 OFFSET_SWI offset soil water index none F - 764 ONSET_COUNTER onset days counter days F - 765 ONSET_FDD onset freezing degree days counter C degree-days F - 766 ONSET_FLAG onset flag none F - 767 ONSET_GDD onset growing degree days C degree-days F - 768 ONSET_GDDFLAG onset flag for growing degree day sum none F - 769 ONSET_SWI onset soil water index none F - 770 O_SCALAR fraction by which decomposition is reduced due to anoxia unitless T - 771 PAR240DZ 10-day running mean of daytime patch absorbed PAR for leaves for top canopy layer W/m^2 F - 772 PAR240XZ 10-day running mean of maximum patch absorbed PAR for leaves for top canopy layer W/m^2 F - 773 PAR240_shade shade PAR (240 hrs) umol/m2/s F - 774 PAR240_sun sunlit PAR (240 hrs) umol/m2/s F - 775 PAR24_shade shade PAR (24 hrs) umol/m2/s F - 776 PAR24_sun sunlit PAR (24 hrs) umol/m2/s F - 777 PARVEGLN absorbed par by vegetation at local noon W/m^2 T - 778 PAR_shade shade PAR umol/m2/s F - 779 PAR_sun sunlit PAR umol/m2/s F - 780 PBOT atmospheric pressure at surface (downscaled to columns in glacier regions) Pa T - 781 PBOT_240 10 day running mean of air pressure Pa F - 782 PCH4 atmospheric partial pressure of CH4 Pa T - 783 PCO2 atmospheric partial pressure of CO2 Pa T - 784 PCO2_240 10 day running mean of CO2 pressure Pa F - 785 PFT_CTRUNC patch-level sink for C truncation gC/m^2 F - 786 PFT_FIRE_CLOSS total patch-level fire C loss for non-peat fires outside land-type converted region gC/m^2/s T - 787 PFT_FIRE_NLOSS total patch-level fire N loss gN/m^2/s T - 788 PFT_NTRUNC patch-level sink for N truncation gN/m^2 F - 789 PLANTCN Plant C:N used by FUN unitless F - 790 PLANT_CALLOC total allocated C flux gC/m^2/s F - 791 PLANT_NALLOC total allocated N flux gN/m^2/s F - 792 PLANT_NDEMAND N flux required to support initial GPP gN/m^2/s T - 793 PNLCZ Proportion of nitrogen allocated for light capture unitless F - 794 PO2_240 10 day running mean of O2 pressure Pa F - 795 POTENTIAL_IMMOB potential N immobilization gN/m^2/s T - 796 POTENTIAL_IMMOB_vr potential N immobilization gN/m^3/s F - 797 POT_F_DENIT potential denitrification flux gN/m^2/s T - 798 POT_F_DENIT_vr potential denitrification flux gN/m^3/s F - 799 POT_F_NIT potential nitrification flux gN/m^2/s T - 800 POT_F_NIT_vr potential nitrification flux gN/m^3/s F - 801 PREC10 10-day running mean of PREC MM H2O/S F - 802 PREC60 60-day running mean of PREC MM H2O/S F - 803 PREV_DAYL daylength from previous timestep s F - 804 PREV_FROOTC_TO_LITTER previous timestep froot C litterfall flux gC/m^2/s F - 805 PREV_LEAFC_TO_LITTER previous timestep leaf C litterfall flux gC/m^2/s F - 806 PROD100C 100-yr wood product C gC/m^2 F - 807 PROD100C_LOSS loss from 100-yr wood product pool gC/m^2/s F - 808 PROD100N 100-yr wood product N gN/m^2 F - 809 PROD100N_LOSS loss from 100-yr wood product pool gN/m^2/s F - 810 PROD10C 10-yr wood product C gC/m^2 F - 811 PROD10C_LOSS loss from 10-yr wood product pool gC/m^2/s F - 812 PROD10N 10-yr wood product N gN/m^2 F - 813 PROD10N_LOSS loss from 10-yr wood product pool gN/m^2/s F - 814 PSNSHA shaded leaf photosynthesis umolCO2/m^2/s T - 815 PSNSHADE_TO_CPOOL C fixation from shaded canopy gC/m^2/s T - 816 PSNSUN sunlit leaf photosynthesis umolCO2/m^2/s T - 817 PSNSUN_TO_CPOOL C fixation from sunlit canopy gC/m^2/s T - 818 PSurf atmospheric pressure at surface (downscaled to columns in glacier regions) Pa F - 819 Q2M 2m specific humidity kg/kg T - 820 QBOT atmospheric specific humidity (downscaled to columns in glacier regions) kg/kg T - 821 QCHARGE aquifer recharge rate (natural vegetated and crop landunits only) mm/s T - 822 QDIRECT_THROUGHFALL direct throughfall of liquid (rain + above-canopy irrigation) mm/s F - 823 QDIRECT_THROUGHFALL_SNOW direct throughfall of snow mm/s F - 824 QDRAI sub-surface drainage mm/s T - 825 QDRAI_PERCH perched wt drainage mm/s T - 826 QDRAI_XS saturation excess drainage mm/s T - 827 QDRIP rate of excess canopy liquid falling off canopy mm/s F - 828 QDRIP_SNOW rate of excess canopy snow falling off canopy mm/s F - 829 QFLOOD runoff from river flooding mm/s T - 830 QFLX_EVAP_TOT qflx_evap_soi + qflx_evap_can + qflx_tran_veg kg m-2 s-1 T - 831 QFLX_EVAP_VEG vegetation evaporation mm H2O/s F - 832 QFLX_ICE_DYNBAL ice dynamic land cover change conversion runoff flux mm/s T - 833 QFLX_LIQDEW_TO_TOP_LAYER rate of liquid water deposited on top soil or snow layer (dew) mm H2O/s T - 834 QFLX_LIQEVAP_FROM_TOP_LAYER rate of liquid water evaporated from top soil or snow layer mm H2O/s T - 835 QFLX_LIQ_DYNBAL liq dynamic land cover change conversion runoff flux mm/s T - 836 QFLX_LIQ_GRND liquid (rain+irrigation) on ground after interception mm H2O/s F - 837 QFLX_SNOW_DRAIN drainage from snow pack mm/s T - 838 QFLX_SNOW_DRAIN_ICE drainage from snow pack melt (ice landunits only) mm/s T - 839 QFLX_SNOW_GRND snow on ground after interception mm H2O/s F - 840 QFLX_SOLIDDEW_TO_TOP_LAYER rate of solid water deposited on top soil or snow layer (frost) mm H2O/s T - 841 QFLX_SOLIDEVAP_FROM_TOP_LAYER rate of ice evaporated from top soil or snow layer (sublimation) (also includes bare ice subli mm H2O/s T - 842 QFLX_SOLIDEVAP_FROM_TOP_LAYER_ICE rate of ice evaporated from top soil or snow layer (sublimation) (also includes bare ice subli mm H2O/s F - 843 QH2OSFC surface water runoff mm/s T - 844 QH2OSFC_TO_ICE surface water converted to ice mm/s F - 845 QHR hydraulic redistribution mm/s T - 846 QICE ice growth/melt mm/s T - 847 QICE_FORC qice forcing sent to GLC mm/s F - 848 QICE_FRZ ice growth mm/s T - 849 QICE_MELT ice melt mm/s T - 850 QINFL infiltration mm/s T - 851 QINTR interception mm/s T - 852 QIRRIG_DEMAND irrigation demand mm/s F - 853 QIRRIG_DRIP water added via drip irrigation mm/s F - 854 QIRRIG_FROM_GW_CONFINED water added through confined groundwater irrigation mm/s T - 855 QIRRIG_FROM_GW_UNCONFINED water added through unconfined groundwater irrigation mm/s T - 856 QIRRIG_FROM_SURFACE water added through surface water irrigation mm/s T - 857 QIRRIG_SPRINKLER water added via sprinkler irrigation mm/s F - 858 QOVER total surface runoff (includes QH2OSFC) mm/s T - 859 QOVER_LAG time-lagged surface runoff for soil columns mm/s F - 860 QPHSNEG net negative hydraulic redistribution flux mm/s F - 861 QRGWL surface runoff at glaciers (liquid only), wetlands, lakes; also includes melted ice runoff fro mm/s T - 862 QROOTSINK water flux from soil to root in each soil-layer mm/s F - 863 QRUNOFF total liquid runoff not including correction for land use change mm/s T - 864 QRUNOFF_ICE total liquid runoff not incl corret for LULCC (ice landunits only) mm/s T - 865 QRUNOFF_ICE_TO_COUPLER total ice runoff sent to coupler (includes corrections for land use change) mm/s T - 866 QRUNOFF_ICE_TO_LIQ liquid runoff from converted ice runoff mm/s F - 867 QRUNOFF_R Rural total runoff mm/s F - 868 QRUNOFF_TO_COUPLER total liquid runoff sent to coupler (includes corrections for land use change) mm/s T - 869 QRUNOFF_U Urban total runoff mm/s F - 870 QSNOCPLIQ excess liquid h2o due to snow capping not including correction for land use change mm H2O/s T - 871 QSNOEVAP evaporation from snow (only when snl<0, otherwise it is equal to qflx_ev_soil) mm/s T - 872 QSNOFRZ column-integrated snow freezing rate kg/m2/s T - 873 QSNOFRZ_ICE column-integrated snow freezing rate (ice landunits only) mm/s T - 874 QSNOMELT snow melt rate mm/s T - 875 QSNOMELT_ICE snow melt (ice landunits only) mm/s T - 876 QSNOUNLOAD canopy snow unloading mm/s T - 877 QSNO_TEMPUNLOAD canopy snow temp unloading mm/s T - 878 QSNO_WINDUNLOAD canopy snow wind unloading mm/s T - 879 QSNWCPICE excess solid h2o due to snow capping not including correction for land use change mm H2O/s T - 880 QSOIL Ground evaporation (soil/snow evaporation + soil/snow sublimation - dew) mm/s T - 881 QSOIL_ICE Ground evaporation (ice landunits only) mm/s T - 882 QTOPSOIL water input to surface mm/s F - 883 QVEGE canopy evaporation mm/s T - 884 QVEGT canopy transpiration mm/s T - 885 Qair atmospheric specific humidity (downscaled to columns in glacier regions) kg/kg F - 886 Qh sensible heat W/m^2 F - 887 Qle total evaporation W/m^2 F - 888 Qstor storage heat flux (includes snowmelt) W/m^2 F - 889 Qtau momentum flux kg/m/s^2 F - 890 RAIN atmospheric rain, after rain/snow repartitioning based on temperature mm/s T - 891 RAIN_FROM_ATM atmospheric rain received from atmosphere (pre-repartitioning) mm/s T - 892 RAIN_ICE atmospheric rain, after rain/snow repartitioning based on temperature (ice landunits only) mm/s F - 893 RAM1 aerodynamical resistance s/m F - 894 RAM_LAKE aerodynamic resistance for momentum (lakes only) s/m F - 895 RB10 10 day running mean boundary layer resistance s/m F - 896 RETRANSN plant pool of retranslocated N gN/m^2 T - 897 RETRANSN_TO_NPOOL deployment of retranslocated N gN/m^2/s T - 898 RH atmospheric relative humidity % F - 899 RH2M 2m relative humidity % T - 900 RH2M_R Rural 2m specific humidity % F - 901 RH2M_U Urban 2m relative humidity % F - 902 RH30 30-day running mean of relative humidity % F - 903 RHAF fractional humidity of canopy air fraction F - 904 RHAF10 10 day running mean of fractional humidity of canopy air fraction F - 905 RH_LEAF fractional humidity at leaf surface fraction F - 906 ROOTR effective fraction of roots in each soil layer (SMS method) proportion F - 907 RR root respiration (fine root MR + total root GR) gC/m^2/s T - 908 RRESIS root resistance in each soil layer proportion F - 909 RSSHA shaded leaf stomatal resistance s/m T - 910 RSSUN sunlit leaf stomatal resistance s/m T - 911 Rainf atmospheric rain, after rain/snow repartitioning based on temperature mm/s F - 912 Rnet net radiation W/m^2 F - 913 SABG solar rad absorbed by ground W/m^2 T - 914 SABG_PEN Rural solar rad penetrating top soil or snow layer watt/m^2 T - 915 SABV solar rad absorbed by veg W/m^2 T - 916 SEEDC pool for seeding new PFTs via dynamic landcover gC/m^2 T - 917 SEEDN pool for seeding new PFTs via dynamic landcover gN/m^2 T - 918 SLASH_HARVESTC slash harvest carbon (to litter) gC/m^2/s T - 919 SMINN soil mineral N gN/m^2 T - 920 SMINN_TO_NPOOL deployment of soil mineral N uptake gN/m^2/s T - 921 SMINN_TO_PLANT plant uptake of soil mineral N gN/m^2/s T - 922 SMINN_TO_PLANT_FUN Total soil N uptake of FUN gN/m^2/s T - 923 SMINN_TO_PLANT_vr plant uptake of soil mineral N gN/m^3/s F - 924 SMINN_TO_SOIL1N_L1 mineral N flux for decomp. of LITR1to SOIL1 gN/m^2 F - 925 SMINN_TO_SOIL1N_L1_vr mineral N flux for decomp. of LITR1to SOIL1 gN/m^3 F - 926 SMINN_TO_SOIL1N_L2 mineral N flux for decomp. of LITR2to SOIL1 gN/m^2 F - 927 SMINN_TO_SOIL1N_L2_vr mineral N flux for decomp. of LITR2to SOIL1 gN/m^3 F - 928 SMINN_TO_SOIL1N_S2 mineral N flux for decomp. of SOIL2to SOIL1 gN/m^2 F - 929 SMINN_TO_SOIL1N_S2_vr mineral N flux for decomp. of SOIL2to SOIL1 gN/m^3 F - 930 SMINN_TO_SOIL1N_S3 mineral N flux for decomp. of SOIL3to SOIL1 gN/m^2 F - 931 SMINN_TO_SOIL1N_S3_vr mineral N flux for decomp. of SOIL3to SOIL1 gN/m^3 F - 932 SMINN_TO_SOIL2N_L3 mineral N flux for decomp. of LITR3to SOIL2 gN/m^2 F - 933 SMINN_TO_SOIL2N_L3_vr mineral N flux for decomp. of LITR3to SOIL2 gN/m^3 F - 934 SMINN_TO_SOIL2N_S1 mineral N flux for decomp. of SOIL1to SOIL2 gN/m^2 F - 935 SMINN_TO_SOIL2N_S1_vr mineral N flux for decomp. of SOIL1to SOIL2 gN/m^3 F - 936 SMINN_TO_SOIL3N_S1 mineral N flux for decomp. of SOIL1to SOIL3 gN/m^2 F - 937 SMINN_TO_SOIL3N_S1_vr mineral N flux for decomp. of SOIL1to SOIL3 gN/m^3 F - 938 SMINN_TO_SOIL3N_S2 mineral N flux for decomp. of SOIL2to SOIL3 gN/m^2 F - 939 SMINN_TO_SOIL3N_S2_vr mineral N flux for decomp. of SOIL2to SOIL3 gN/m^3 F - 940 SMINN_vr soil mineral N gN/m^3 T - 941 SMIN_NH4 soil mineral NH4 gN/m^2 T - 942 SMIN_NH4_TO_PLANT plant uptake of NH4 gN/m^3/s F - 943 SMIN_NH4_vr soil mineral NH4 (vert. res.) gN/m^3 T - 944 SMIN_NO3 soil mineral NO3 gN/m^2 T - 945 SMIN_NO3_LEACHED soil NO3 pool loss to leaching gN/m^2/s T - 946 SMIN_NO3_LEACHED_vr soil NO3 pool loss to leaching gN/m^3/s F - 947 SMIN_NO3_MASSDENS SMIN_NO3_MASSDENS ugN/cm^3 soil F - 948 SMIN_NO3_RUNOFF soil NO3 pool loss to runoff gN/m^2/s T - 949 SMIN_NO3_RUNOFF_vr soil NO3 pool loss to runoff gN/m^3/s F - 950 SMIN_NO3_TO_PLANT plant uptake of NO3 gN/m^3/s F - 951 SMIN_NO3_vr soil mineral NO3 (vert. res.) gN/m^3 T - 952 SMP soil matric potential (natural vegetated and crop landunits only) mm T - 953 SNOBCMCL mass of BC in snow column kg/m2 T - 954 SNOBCMSL mass of BC in top snow layer kg/m2 T - 955 SNOCAN intercepted snow mm T - 956 SNODSTMCL mass of dust in snow column kg/m2 T - 957 SNODSTMSL mass of dust in top snow layer kg/m2 T - 958 SNOFSDSND direct nir incident solar radiation on snow W/m^2 F - 959 SNOFSDSNI diffuse nir incident solar radiation on snow W/m^2 F - 960 SNOFSDSVD direct vis incident solar radiation on snow W/m^2 F - 961 SNOFSDSVI diffuse vis incident solar radiation on snow W/m^2 F - 962 SNOFSRND direct nir reflected solar radiation from snow W/m^2 T - 963 SNOFSRNI diffuse nir reflected solar radiation from snow W/m^2 T - 964 SNOFSRVD direct vis reflected solar radiation from snow W/m^2 T - 965 SNOFSRVI diffuse vis reflected solar radiation from snow W/m^2 T - 966 SNOINTABS Fraction of incoming solar absorbed by lower snow layers - T - 967 SNOLIQFL top snow layer liquid water fraction (land) fraction F - 968 SNOOCMCL mass of OC in snow column kg/m2 T - 969 SNOOCMSL mass of OC in top snow layer kg/m2 T - 970 SNORDSL top snow layer effective grain radius m^-6 F - 971 SNOTTOPL snow temperature (top layer) K F - 972 SNOTTOPL_ICE snow temperature (top layer, ice landunits only) K F - 973 SNOTXMASS snow temperature times layer mass, layer sum; to get mass-weighted temperature, divide by (SNO K kg/m2 T - 974 SNOTXMASS_ICE snow temperature times layer mass, layer sum (ice landunits only); to get mass-weighted temper K kg/m2 F - 975 SNOW atmospheric snow, after rain/snow repartitioning based on temperature mm/s T - 976 SNOWDP gridcell mean snow height m T - 977 SNOWICE snow ice kg/m2 T - 978 SNOWICE_ICE snow ice (ice landunits only) kg/m2 F - 979 SNOWLIQ snow liquid water kg/m2 T - 980 SNOWLIQ_ICE snow liquid water (ice landunits only) kg/m2 F - 981 SNOW_DEPTH snow height of snow covered area m T - 982 SNOW_DEPTH_ICE snow height of snow covered area (ice landunits only) m F - 983 SNOW_FROM_ATM atmospheric snow received from atmosphere (pre-repartitioning) mm/s T - 984 SNOW_ICE atmospheric snow, after rain/snow repartitioning based on temperature (ice landunits only) mm/s F - 985 SNOW_PERSISTENCE Length of time of continuous snow cover (nat. veg. landunits only) seconds T - 986 SNOW_SINKS snow sinks (liquid water) mm/s T - 987 SNOW_SOURCES snow sources (liquid water) mm/s T - 988 SNO_ABS Absorbed solar radiation in each snow layer W/m^2 F - 989 SNO_ABS_ICE Absorbed solar radiation in each snow layer (ice landunits only) W/m^2 F - 990 SNO_BW Partial density of water in the snow pack (ice + liquid) kg/m3 F - 991 SNO_BW_ICE Partial density of water in the snow pack (ice + liquid, ice landunits only) kg/m3 F - 992 SNO_EXISTENCE Fraction of averaging period for which each snow layer existed unitless F - 993 SNO_FRZ snow freezing rate in each snow layer kg/m2/s F - 994 SNO_FRZ_ICE snow freezing rate in each snow layer (ice landunits only) mm/s F - 995 SNO_GS Mean snow grain size Microns F - 996 SNO_GS_ICE Mean snow grain size (ice landunits only) Microns F - 997 SNO_ICE Snow ice content kg/m2 F - 998 SNO_LIQH2O Snow liquid water content kg/m2 F - 999 SNO_MELT snow melt rate in each snow layer mm/s F -1000 SNO_MELT_ICE snow melt rate in each snow layer (ice landunits only) mm/s F -1001 SNO_T Snow temperatures K F -1002 SNO_TK Thermal conductivity W/m-K F -1003 SNO_TK_ICE Thermal conductivity (ice landunits only) W/m-K F -1004 SNO_T_ICE Snow temperatures (ice landunits only) K F -1005 SNO_Z Snow layer thicknesses m F -1006 SNO_Z_ICE Snow layer thicknesses (ice landunits only) m F -1007 SNOdTdzL top snow layer temperature gradient (land) K/m F -1008 SOIL1C SOIL1 C gC/m^2 T -1009 SOIL1C_1m SOIL1 C to 1 meter gC/m^2 F -1010 SOIL1C_TNDNCY_VERT_TRANS soil 1 C tendency due to vertical transport gC/m^3/s F -1011 SOIL1C_TO_SOIL2C decomp. of soil 1 C to soil 2 C gC/m^2/s F -1012 SOIL1C_TO_SOIL2C_vr decomp. of soil 1 C to soil 2 C gC/m^3/s F -1013 SOIL1C_TO_SOIL3C decomp. of soil 1 C to soil 3 C gC/m^2/s F -1014 SOIL1C_TO_SOIL3C_vr decomp. of soil 1 C to soil 3 C gC/m^3/s F -1015 SOIL1C_vr SOIL1 C (vertically resolved) gC/m^3 T -1016 SOIL1N SOIL1 N gN/m^2 T -1017 SOIL1N_1m SOIL1 N to 1 meter gN/m^2 F -1018 SOIL1N_TNDNCY_VERT_TRANS soil 1 N tendency due to vertical transport gN/m^3/s F -1019 SOIL1N_TO_SOIL2N decomp. of soil 1 N to soil 2 N gN/m^2 F -1020 SOIL1N_TO_SOIL2N_vr decomp. of soil 1 N to soil 2 N gN/m^3 F -1021 SOIL1N_TO_SOIL3N decomp. of soil 1 N to soil 3 N gN/m^2 F -1022 SOIL1N_TO_SOIL3N_vr decomp. of soil 1 N to soil 3 N gN/m^3 F -1023 SOIL1N_vr SOIL1 N (vertically resolved) gN/m^3 T -1024 SOIL1_HR_S2 Het. Resp. from soil 1 gC/m^2/s F -1025 SOIL1_HR_S2_vr Het. Resp. from soil 1 gC/m^3/s F -1026 SOIL1_HR_S3 Het. Resp. from soil 1 gC/m^2/s F -1027 SOIL1_HR_S3_vr Het. Resp. from soil 1 gC/m^3/s F -1028 SOIL2C SOIL2 C gC/m^2 T -1029 SOIL2C_1m SOIL2 C to 1 meter gC/m^2 F -1030 SOIL2C_TNDNCY_VERT_TRANS soil 2 C tendency due to vertical transport gC/m^3/s F -1031 SOIL2C_TO_SOIL1C decomp. of soil 2 C to soil 1 C gC/m^2/s F -1032 SOIL2C_TO_SOIL1C_vr decomp. of soil 2 C to soil 1 C gC/m^3/s F -1033 SOIL2C_TO_SOIL3C decomp. of soil 2 C to soil 3 C gC/m^2/s F -1034 SOIL2C_TO_SOIL3C_vr decomp. of soil 2 C to soil 3 C gC/m^3/s F -1035 SOIL2C_vr SOIL2 C (vertically resolved) gC/m^3 T -1036 SOIL2N SOIL2 N gN/m^2 T -1037 SOIL2N_1m SOIL2 N to 1 meter gN/m^2 F -1038 SOIL2N_TNDNCY_VERT_TRANS soil 2 N tendency due to vertical transport gN/m^3/s F -1039 SOIL2N_TO_SOIL1N decomp. of soil 2 N to soil 1 N gN/m^2 F -1040 SOIL2N_TO_SOIL1N_vr decomp. of soil 2 N to soil 1 N gN/m^3 F -1041 SOIL2N_TO_SOIL3N decomp. of soil 2 N to soil 3 N gN/m^2 F -1042 SOIL2N_TO_SOIL3N_vr decomp. of soil 2 N to soil 3 N gN/m^3 F -1043 SOIL2N_vr SOIL2 N (vertically resolved) gN/m^3 T -1044 SOIL2_HR_S1 Het. Resp. from soil 2 gC/m^2/s F -1045 SOIL2_HR_S1_vr Het. Resp. from soil 2 gC/m^3/s F -1046 SOIL2_HR_S3 Het. Resp. from soil 2 gC/m^2/s F -1047 SOIL2_HR_S3_vr Het. Resp. from soil 2 gC/m^3/s F -1048 SOIL3C SOIL3 C gC/m^2 T -1049 SOIL3C_1m SOIL3 C to 1 meter gC/m^2 F -1050 SOIL3C_TNDNCY_VERT_TRANS soil 3 C tendency due to vertical transport gC/m^3/s F -1051 SOIL3C_TO_SOIL1C decomp. of soil 3 C to soil 1 C gC/m^2/s F -1052 SOIL3C_TO_SOIL1C_vr decomp. of soil 3 C to soil 1 C gC/m^3/s F -1053 SOIL3C_vr SOIL3 C (vertically resolved) gC/m^3 T -1054 SOIL3N SOIL3 N gN/m^2 T -1055 SOIL3N_1m SOIL3 N to 1 meter gN/m^2 F -1056 SOIL3N_TNDNCY_VERT_TRANS soil 3 N tendency due to vertical transport gN/m^3/s F -1057 SOIL3N_TO_SOIL1N decomp. of soil 3 N to soil 1 N gN/m^2 F -1058 SOIL3N_TO_SOIL1N_vr decomp. of soil 3 N to soil 1 N gN/m^3 F -1059 SOIL3N_vr SOIL3 N (vertically resolved) gN/m^3 T -1060 SOIL3_HR Het. Resp. from soil 3 gC/m^2/s F -1061 SOIL3_HR_vr Het. Resp. from soil 3 gC/m^3/s F -1062 SOILC_CHANGE C change in soil gC/m^2/s T -1063 SOILC_HR soil C heterotrophic respiration gC/m^2/s T -1064 SOILC_vr SOIL C (vertically resolved) gC/m^3 T -1065 SOILICE soil ice (natural vegetated and crop landunits only) kg/m2 T -1066 SOILLIQ soil liquid water (natural vegetated and crop landunits only) kg/m2 T -1067 SOILN_vr SOIL N (vertically resolved) gN/m^3 T -1068 SOILPSI soil water potential in each soil layer MPa F -1069 SOILRESIS soil resistance to evaporation s/m T -1070 SOILWATER_10CM soil liquid water + ice in top 10cm of soil (veg landunits only) kg/m2 T -1071 SOMC_FIRE C loss due to peat burning gC/m^2/s T -1072 SOMFIRE soil organic matter fire losses gC/m^2/s F -1073 SOM_ADV_COEF advection term for vertical SOM translocation m/s F -1074 SOM_C_LEACHED total flux of C from SOM pools due to leaching gC/m^2/s T -1075 SOM_DIFFUS_COEF diffusion coefficient for vertical SOM translocation m^2/s F -1076 SOM_N_LEACHED total flux of N from SOM pools due to leaching gN/m^2/s F -1077 SR total soil respiration (HR + root resp) gC/m^2/s T -1078 SSRE_FSR surface snow effect on reflected solar radiation W/m^2 T -1079 SSRE_FSRND surface snow effect on direct nir reflected solar radiation W/m^2 T -1080 SSRE_FSRNDLN surface snow effect on direct nir reflected solar radiation at local noon W/m^2 T -1081 SSRE_FSRNI surface snow effect on diffuse nir reflected solar radiation W/m^2 T -1082 SSRE_FSRVD surface snow radiatve effect on direct vis reflected solar radiation W/m^2 T -1083 SSRE_FSRVDLN surface snow radiatve effect on direct vis reflected solar radiation at local noon W/m^2 T -1084 SSRE_FSRVI surface snow radiatve effect on diffuse vis reflected solar radiation W/m^2 T -1085 STEM_PROF profile for litter C and N inputs from stems 1/m F -1086 STORAGE_CDEMAND C use from the C storage pool gC/m^2 F -1087 STORAGE_GR growth resp for growth sent to storage for later display gC/m^2/s F -1088 STORAGE_NDEMAND N demand during the offset period gN/m^2 F -1089 STORVEGC stored vegetation carbon, excluding cpool gC/m^2 T -1090 STORVEGN stored vegetation nitrogen gN/m^2 T -1091 SUPPLEMENT_TO_SMINN supplemental N supply gN/m^2/s T -1092 SUPPLEMENT_TO_SMINN_vr supplemental N supply gN/m^3/s F -1093 SWBGT 2 m Simplified Wetbulb Globe Temp C T -1094 SWBGT_R Rural 2 m Simplified Wetbulb Globe Temp C T -1095 SWBGT_U Urban 2 m Simplified Wetbulb Globe Temp C T -1096 SWMP65 2 m Swamp Cooler Temp 65% Eff C T -1097 SWMP65_R Rural 2 m Swamp Cooler Temp 65% Eff C T -1098 SWMP65_U Urban 2 m Swamp Cooler Temp 65% Eff C T -1099 SWMP80 2 m Swamp Cooler Temp 80% Eff C T -1100 SWMP80_R Rural 2 m Swamp Cooler Temp 80% Eff C T -1101 SWMP80_U Urban 2 m Swamp Cooler Temp 80% Eff C T -1102 SWdown atmospheric incident solar radiation W/m^2 F -1103 SWup upwelling shortwave radiation W/m^2 F -1104 SoilAlpha factor limiting ground evap unitless F -1105 SoilAlpha_U urban factor limiting ground evap unitless F -1106 T10 10-day running mean of 2-m temperature K F -1107 TAUX zonal surface stress kg/m/s^2 T -1108 TAUY meridional surface stress kg/m/s^2 T -1109 TBOT atmospheric air temperature (downscaled to columns in glacier regions) K T -1110 TBUILD internal urban building air temperature K T -1111 TBUILD_MAX prescribed maximum interior building temperature K F -1112 TEMPAVG_T2M temporary average 2m air temperature K F -1113 TEMPMAX_RETRANSN temporary annual max of retranslocated N pool gN/m^2 F -1114 TEMPSUM_POTENTIAL_GPP temporary annual sum of potential GPP gC/m^2/yr F -1115 TEQ 2 m Equiv Temp K T -1116 TEQ_R Rural 2 m Equiv Temp K T -1117 TEQ_U Urban 2 m Equiv Temp K T -1118 TFLOOR floor temperature K F -1119 TG ground temperature K T -1120 TG_ICE ground temperature (ice landunits only) K F -1121 TG_R Rural ground temperature K F -1122 TG_U Urban ground temperature K F -1123 TH2OSFC surface water temperature K T -1124 THBOT atmospheric air potential temperature (downscaled to columns in glacier regions) K T -1125 THIC 2 m Temp Hum Index Comfort C T -1126 THIC_R Rural 2 m Temp Hum Index Comfort C T -1127 THIC_U Urban 2 m Temp Hum Index Comfort C T -1128 THIP 2 m Temp Hum Index Physiology C T -1129 THIP_R Rural 2 m Temp Hum Index Physiology C T -1130 THIP_U Urban 2 m Temp Hum Index Physiology C T -1131 TKE1 top lake level eddy thermal conductivity W/(mK) T -1132 TLAI total projected leaf area index m^2/m^2 T -1133 TLAKE lake temperature K T -1134 TOPO_COL column-level topographic height m F -1135 TOPO_COL_ICE column-level topographic height (ice landunits only) m F -1136 TOPO_FORC topograephic height sent to GLC m F -1137 TOPT topt coefficient for VOC calc non F -1138 TOTCOLC total column carbon, incl veg and cpool but excl product pools gC/m^2 T -1139 TOTCOLCH4 total belowground CH4 (0 for non-lake special landunits in the absence of dynamic landunits) gC/m2 T -1140 TOTCOLN total column-level N, excluding product pools gN/m^2 T -1141 TOTECOSYSC total ecosystem carbon, incl veg but excl cpool and product pools gC/m^2 T -1142 TOTECOSYSN total ecosystem N, excluding product pools gN/m^2 T -1143 TOTFIRE total ecosystem fire losses gC/m^2/s F -1144 TOTLITC total litter carbon gC/m^2 T -1145 TOTLITC_1m total litter carbon to 1 meter depth gC/m^2 T -1146 TOTLITN total litter N gN/m^2 T -1147 TOTLITN_1m total litter N to 1 meter gN/m^2 T -1148 TOTPFTC total patch-level carbon, including cpool gC/m^2 T -1149 TOTPFTN total patch-level nitrogen gN/m^2 T -1150 TOTSOILICE vertically summed soil cie (veg landunits only) kg/m2 T -1151 TOTSOILLIQ vertically summed soil liquid water (veg landunits only) kg/m2 T -1152 TOTSOMC total soil organic matter carbon gC/m^2 T -1153 TOTSOMC_1m total soil organic matter carbon to 1 meter depth gC/m^2 T -1154 TOTSOMN total soil organic matter N gN/m^2 T -1155 TOTSOMN_1m total soil organic matter N to 1 meter gN/m^2 T -1156 TOTVEGC total vegetation carbon, excluding cpool gC/m^2 T -1157 TOTVEGN total vegetation nitrogen gN/m^2 T -1158 TOT_WOODPRODC total wood product C gC/m^2 T -1159 TOT_WOODPRODC_LOSS total loss from wood product pools gC/m^2/s T -1160 TOT_WOODPRODN total wood product N gN/m^2 T -1161 TOT_WOODPRODN_LOSS total loss from wood product pools gN/m^2/s T -1162 TPU25T canopy profile of tpu umol/m2/s T -1163 TRAFFICFLUX sensible heat flux from urban traffic W/m^2 F -1164 TRANSFER_DEADCROOT_GR dead coarse root growth respiration from storage gC/m^2/s F -1165 TRANSFER_DEADSTEM_GR dead stem growth respiration from storage gC/m^2/s F -1166 TRANSFER_FROOT_GR fine root growth respiration from storage gC/m^2/s F -1167 TRANSFER_GR growth resp for transfer growth displayed in this timestep gC/m^2/s F -1168 TRANSFER_LEAF_GR leaf growth respiration from storage gC/m^2/s F -1169 TRANSFER_LIVECROOT_GR live coarse root growth respiration from storage gC/m^2/s F -1170 TRANSFER_LIVESTEM_GR live stem growth respiration from storage gC/m^2/s F -1171 TREFMNAV daily minimum of average 2-m temperature K T -1172 TREFMNAV_R Rural daily minimum of average 2-m temperature K F -1173 TREFMNAV_U Urban daily minimum of average 2-m temperature K F -1174 TREFMXAV daily maximum of average 2-m temperature K T -1175 TREFMXAV_R Rural daily maximum of average 2-m temperature K F -1176 TREFMXAV_U Urban daily maximum of average 2-m temperature K F -1177 TROOF_INNER roof inside surface temperature K F -1178 TSA 2m air temperature K T -1179 TSAI total projected stem area index m^2/m^2 T -1180 TSA_ICE 2m air temperature (ice landunits only) K F -1181 TSA_R Rural 2m air temperature K F -1182 TSA_U Urban 2m air temperature K F -1183 TSHDW_INNER shadewall inside surface temperature K F -1184 TSKIN skin temperature K T -1185 TSL temperature of near-surface soil layer (natural vegetated and crop landunits only) K T -1186 TSOI soil temperature (natural vegetated and crop landunits only) K T -1187 TSOI_10CM soil temperature in top 10cm of soil K T -1188 TSOI_ICE soil temperature (ice landunits only) K T -1189 TSRF_FORC surface temperature sent to GLC K F -1190 TSUNW_INNER sunwall inside surface temperature K F -1191 TV vegetation temperature K T -1192 TV24 vegetation temperature (last 24hrs) K F -1193 TV240 vegetation temperature (last 240hrs) K F -1194 TVEGD10 10 day running mean of patch daytime vegetation temperature Kelvin F -1195 TVEGN10 10 day running mean of patch night-time vegetation temperature Kelvin F -1196 TWS total water storage mm T -1197 T_SCALAR temperature inhibition of decomposition unitless T -1198 Tair atmospheric air temperature (downscaled to columns in glacier regions) K F -1199 Tair_from_atm atmospheric air temperature received from atmosphere (pre-downscaling) K F -1200 U10 10-m wind m/s T -1201 U10_DUST 10-m wind for dust model m/s T -1202 U10_ICE 10-m wind (ice landunits only) m/s F -1203 ULRAD upward longwave radiation above the canopy W/m^2 F -1204 URBAN_AC urban air conditioning flux W/m^2 T -1205 URBAN_HEAT urban heating flux W/m^2 T -1206 UST_LAKE friction velocity (lakes only) m/s F -1207 VA atmospheric wind speed plus convective velocity m/s F -1208 VCMX25T canopy profile of vcmax25 umol/m2/s T -1209 VEGWP vegetation water matric potential for sun/sha canopy,xyl,root segments mm T -1210 VEGWPLN vegetation water matric potential for sun/sha canopy,xyl,root at local noon mm T -1211 VEGWPPD predawn vegetation water matric potential for sun/sha canopy,xyl,root mm T -1212 VOCFLXT total VOC flux into atmosphere moles/m2/sec F -1213 VOLR river channel total water storage m3 T -1214 VOLRMCH river channel main channel water storage m3 T -1215 VPD_CAN canopy vapor pressure deficit kPa T -1216 Vcmx25Z canopy profile of vcmax25 predicted by LUNA model umol/m2/s T -1217 WA water in the unconfined aquifer (natural vegetated and crop landunits only) mm T -1218 WASTEHEAT sensible heat flux from heating/cooling sources of urban waste heat W/m^2 T -1219 WBA 2 m Wet Bulb C T -1220 WBA_R Rural 2 m Wet Bulb C T -1221 WBA_U Urban 2 m Wet Bulb C T -1222 WBT 2 m Stull Wet Bulb C T -1223 WBT_R Rural 2 m Stull Wet Bulb C T -1224 WBT_U Urban 2 m Stull Wet Bulb C T -1225 WF soil water as frac. of whc for top 0.05 m proportion F -1226 WFPS WFPS percent F -1227 WIND atmospheric wind velocity magnitude m/s T -1228 WOODC wood C gC/m^2 T -1229 WOODC_ALLOC wood C eallocation gC/m^2/s T -1230 WOODC_LOSS wood C loss gC/m^2/s T -1231 WOOD_HARVESTC wood harvest carbon (to product pools) gC/m^2/s T -1232 WOOD_HARVESTN wood harvest N (to product pools) gN/m^2/s T -1233 WTGQ surface tracer conductance m/s T -1234 W_SCALAR Moisture (dryness) inhibition of decomposition unitless T -1235 Wind atmospheric wind velocity magnitude m/s F -1236 XSMRPOOL temporary photosynthate C pool gC/m^2 T -1237 XSMRPOOL_LOSS temporary photosynthate C pool loss gC/m^2 F -1238 XSMRPOOL_RECOVER C flux assigned to recovery of negative xsmrpool gC/m^2/s T -1239 Z0HG roughness length over ground, sensible heat m F -1240 Z0HV roughness length over vegetation, sensible heat m F -1241 Z0M momentum roughness length m F -1242 Z0MG roughness length over ground, momentum m F -1243 Z0MV roughness length over vegetation, momentum m F -1244 Z0M_TO_COUPLER roughness length, momentum: gridcell average sent to coupler m F -1245 Z0QG roughness length over ground, latent heat m F -1246 Z0QV roughness length over vegetation, latent heat m F -1247 ZBOT atmospheric reference height m T -1248 ZII convective boundary height m F -1249 ZWT water table depth (natural vegetated and crop landunits only) m T -1250 ZWT_CH4_UNSAT depth of water table for methane production used in non-inundated area m T -1251 ZWT_PERCH perched water table depth (natural vegetated and crop landunits only) m T -1252 anaerobic_frac anaerobic_frac m3/m3 F -1253 bsw clap and hornberger B unitless F -1254 currentPatch currentPatch coefficient for VOC calc non F -1255 diffus diffusivity m^2/s F -1256 fr_WFPS fr_WFPS fraction F -1257 n2_n2o_ratio_denit n2_n2o_ratio_denit gN/gN F -1258 r_psi r_psi m F -1259 ratio_k1 ratio_k1 none F -1260 ratio_no3_co2 ratio_no3_co2 ratio F -1261 soil_bulkdensity soil_bulkdensity kg/m3 F -1262 soil_co2_prod soil_co2_prod ug C / g soil / day F -1263 watfc water field capacity m^3/m^3 F -1264 watsat water saturated m^3/m^3 F + 7 ACT_SOMC ACT_SOM C gC/m^2 T + 8 ACT_SOMC_1m ACT_SOM C to 1 meter gC/m^2 F + 9 ACT_SOMC_TNDNCY_VERT_TRA active soil organic C tendency due to vertical transport gC/m^3/s F + 10 ACT_SOMC_TO_PAS_SOMC decomp. of active soil organic C to passive soil organic C gC/m^2/s F + 11 ACT_SOMC_TO_PAS_SOMC_vr decomp. of active soil organic C to passive soil organic C gC/m^3/s F + 12 ACT_SOMC_vr ACT_SOM C (vertically resolved) gC/m^3 T + 13 ACT_SOMN ACT_SOM N gN/m^2 T + 14 ACT_SOMN_1m ACT_SOM N to 1 meter gN/m^2 F + 15 ACT_SOMN_TNDNCY_VERT_TRA active soil organic N tendency due to vertical transport gN/m^3/s F + 16 ACT_SOMN_TO_PAS_SOMN decomp. of active soil organic N to passive soil organic N gN/m^2 F + 17 ACT_SOMN_TO_PAS_SOMN_vr decomp. of active soil organic N to passive soil organic N gN/m^3 F + 18 ACT_SOMN_vr ACT_SOM N (vertically resolved) gN/m^3 T + 19 ACT_SOM_HR Het. Resp. from active soil organic gC/m^2/s F + 20 ACT_SOM_HR_vr Het. Resp. from active soil organic gC/m^3/s F + 21 AGLB Aboveground leaf biomass kg/m^2 F + 22 AGNPP aboveground NPP gC/m^2/s T + 23 AGSB Aboveground stem biomass kg/m^2 F + 24 ALBD surface albedo (direct) proportion T + 25 ALBDSF diagnostic snow-free surface albedo (direct) proportion T + 26 ALBGRD ground albedo (direct) proportion F + 27 ALBGRI ground albedo (indirect) proportion F + 28 ALBI surface albedo (indirect) proportion T + 29 ALBISF diagnostic snow-free surface albedo (indirect) proportion T + 30 ALPHA alpha coefficient for VOC calc non F + 31 ALT current active layer thickness m T + 32 ALTMAX maximum annual active layer thickness m T + 33 ALTMAX_LASTYEAR maximum prior year active layer thickness m F + 34 ANNAVG_T2M annual average 2m air temperature K F + 35 ANNMAX_RETRANSN annual max of retranslocated N pool gN/m^2 F + 36 ANNSUM_COUNTER seconds since last annual accumulator turnover s F + 37 ANNSUM_NPP annual sum of NPP gC/m^2/yr F + 38 ANNSUM_POTENTIAL_GPP annual sum of potential GPP gN/m^2/yr F + 39 APPAR_TEMP 2 m apparent temperature C T + 40 APPAR_TEMP_R Rural 2 m apparent temperature C T + 41 APPAR_TEMP_U Urban 2 m apparent temperature C T + 42 AR autotrophic respiration (MR + GR) gC/m^2/s T + 43 ATM_TOPO atmospheric surface height m T + 44 AVAILC C flux available for allocation gC/m^2/s F + 45 AVAIL_RETRANSN N flux available from retranslocation pool gN/m^2/s F + 46 AnnET Annual ET mm/s F + 47 BAF_CROP fractional area burned for crop s-1 T + 48 BAF_PEATF fractional area burned in peatland s-1 T + 49 BCDEP total BC deposition (dry+wet) from atmosphere kg/m^2/s T + 50 BETA coefficient of convective velocity none F + 51 BGLFR background litterfall rate 1/s F + 52 BGNPP belowground NPP gC/m^2/s T + 53 BGTR background transfer growth rate 1/s F + 54 BTRANMN daily minimum of transpiration beta factor unitless T + 55 CANNAVG_T2M annual average of 2m air temperature K F + 56 CANNSUM_NPP annual sum of column-level NPP gC/m^2/s F + 57 CEL_LITC CEL_LIT C gC/m^2 T + 58 CEL_LITC_1m CEL_LIT C to 1 meter gC/m^2 F + 59 CEL_LITC_TNDNCY_VERT_TRA cellulosic litter C tendency due to vertical transport gC/m^3/s F + 60 CEL_LITC_TO_PAS_SOMC decomp. of cellulosic litter C to passive soil organic C gC/m^2/s F + 61 CEL_LITC_TO_PAS_SOMC_vr decomp. of cellulosic litter C to passive soil organic C gC/m^3/s F + 62 CEL_LITC_vr CEL_LIT C (vertically resolved) gC/m^3 T + 63 CEL_LITN CEL_LIT N gN/m^2 T + 64 CEL_LITN_1m CEL_LIT N to 1 meter gN/m^2 F + 65 CEL_LITN_TNDNCY_VERT_TRA cellulosic litter N tendency due to vertical transport gN/m^3/s F + 66 CEL_LITN_TO_PAS_SOMN decomp. of cellulosic litter N to passive soil organic N gN/m^2 F + 67 CEL_LITN_TO_PAS_SOMN_vr decomp. of cellulosic litter N to passive soil organic N gN/m^3 F + 68 CEL_LITN_vr CEL_LIT N (vertically resolved) gN/m^3 T + 69 CEL_LIT_HR Het. Resp. from cellulosic litter gC/m^2/s F + 70 CEL_LIT_HR_vr Het. Resp. from cellulosic litter gC/m^3/s F + 71 CGRND deriv. of soil energy flux wrt to soil temp W/m^2/K F + 72 CGRNDL deriv. of soil latent heat flux wrt soil temp W/m^2/K F + 73 CGRNDS deriv. of soil sensible heat flux wrt soil temp W/m^2/K F + 74 CH4PROD Gridcell total production of CH4 gC/m2/s T + 75 CH4_EBUL_TOTAL_SAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F + 76 CH4_EBUL_TOTAL_UNSAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F + 77 CH4_SURF_AERE_SAT aerenchyma surface CH4 flux for inundated area; (+ to atm) mol/m2/s T + 78 CH4_SURF_AERE_UNSAT aerenchyma surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T + 79 CH4_SURF_DIFF_SAT diffusive surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T + 80 CH4_SURF_DIFF_UNSAT diffusive surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T + 81 CH4_SURF_EBUL_SAT ebullition surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T + 82 CH4_SURF_EBUL_UNSAT ebullition surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T + 83 COL_CTRUNC column-level sink for C truncation gC/m^2 F + 84 COL_FIRE_CLOSS total column-level fire C loss for non-peat fires outside land-type converted region gC/m^2/s T + 85 COL_FIRE_NLOSS total column-level fire N loss gN/m^2/s T + 86 COL_NTRUNC column-level sink for N truncation gN/m^2 F + 87 CONC_CH4_SAT CH4 soil Concentration for inundated / lake area mol/m3 F + 88 CONC_CH4_UNSAT CH4 soil Concentration for non-inundated area mol/m3 F + 89 CONC_O2_SAT O2 soil Concentration for inundated / lake area mol/m3 T + 90 CONC_O2_UNSAT O2 soil Concentration for non-inundated area mol/m3 T + 91 COST_NACTIVE Cost of active uptake gN/gC T + 92 COST_NFIX Cost of fixation gN/gC T + 93 COST_NRETRANS Cost of retranslocation gN/gC T + 94 COSZEN cosine of solar zenith angle none F + 95 CPHASE crop phenology phase 0-not planted, 1-planted, 2-leaf emerge, 3-grain fill, 4-harvest T + 96 CPOOL temporary photosynthate C pool gC/m^2 T + 97 CPOOL_DEADCROOT_GR dead coarse root growth respiration gC/m^2/s F + 98 CPOOL_DEADCROOT_STORAGE_GR dead coarse root growth respiration to storage gC/m^2/s F + 99 CPOOL_DEADSTEM_GR dead stem growth respiration gC/m^2/s F + 100 CPOOL_DEADSTEM_STORAGE_GR dead stem growth respiration to storage gC/m^2/s F + 101 CPOOL_FROOT_GR fine root growth respiration gC/m^2/s F + 102 CPOOL_FROOT_STORAGE_GR fine root growth respiration to storage gC/m^2/s F + 103 CPOOL_LEAF_GR leaf growth respiration gC/m^2/s F + 104 CPOOL_LEAF_STORAGE_GR leaf growth respiration to storage gC/m^2/s F + 105 CPOOL_LIVECROOT_GR live coarse root growth respiration gC/m^2/s F + 106 CPOOL_LIVECROOT_STORAGE_GR live coarse root growth respiration to storage gC/m^2/s F + 107 CPOOL_LIVESTEM_GR live stem growth respiration gC/m^2/s F + 108 CPOOL_LIVESTEM_STORAGE_GR live stem growth respiration to storage gC/m^2/s F + 109 CPOOL_TO_DEADCROOTC allocation to dead coarse root C gC/m^2/s F + 110 CPOOL_TO_DEADCROOTC_STORAGE allocation to dead coarse root C storage gC/m^2/s F + 111 CPOOL_TO_DEADSTEMC allocation to dead stem C gC/m^2/s F + 112 CPOOL_TO_DEADSTEMC_STORAGE allocation to dead stem C storage gC/m^2/s F + 113 CPOOL_TO_FROOTC allocation to fine root C gC/m^2/s F + 114 CPOOL_TO_FROOTC_STORAGE allocation to fine root C storage gC/m^2/s F + 115 CPOOL_TO_GRESP_STORAGE allocation to growth respiration storage gC/m^2/s F + 116 CPOOL_TO_LEAFC allocation to leaf C gC/m^2/s F + 117 CPOOL_TO_LEAFC_STORAGE allocation to leaf C storage gC/m^2/s F + 118 CPOOL_TO_LIVECROOTC allocation to live coarse root C gC/m^2/s F + 119 CPOOL_TO_LIVECROOTC_STORAGE allocation to live coarse root C storage gC/m^2/s F + 120 CPOOL_TO_LIVESTEMC allocation to live stem C gC/m^2/s F + 121 CPOOL_TO_LIVESTEMC_STORAGE allocation to live stem C storage gC/m^2/s F + 122 CROOT_PROF profile for litter C and N inputs from coarse roots 1/m F + 123 CROPPROD1C 1-yr crop product (grain+biofuel) C gC/m^2 T + 124 CROPPROD1C_LOSS loss from 1-yr crop product pool gC/m^2/s T + 125 CROPPROD1N 1-yr crop product (grain+biofuel) N gN/m^2 T + 126 CROPPROD1N_LOSS loss from 1-yr crop product pool gN/m^2/s T + 127 CROPSEEDC_DEFICIT C used for crop seed that needs to be repaid gC/m^2 T + 128 CROPSEEDN_DEFICIT N used for crop seed that needs to be repaid gN/m^2 F + 129 CROP_SEEDC_TO_LEAF crop seed source to leaf gC/m^2/s F + 130 CROP_SEEDN_TO_LEAF crop seed source to leaf gN/m^2/s F + 131 CURRENT_GR growth resp for new growth displayed in this timestep gC/m^2/s F + 132 CWDC CWD C gC/m^2 T + 133 CWDC_1m CWD C to 1 meter gC/m^2 F + 134 CWDC_HR cwd C heterotrophic respiration gC/m^2/s F + 135 CWDC_LOSS coarse woody debris C loss gC/m^2/s T + 136 CWDC_TO_CEL_LITC decomp. of coarse woody debris C to cellulosic litter C gC/m^2/s F + 137 CWDC_TO_CEL_LITC_vr decomp. of coarse woody debris C to cellulosic litter C gC/m^3/s F + 138 CWDC_TO_LIG_LITC decomp. of coarse woody debris C to lignin litter C gC/m^2/s F + 139 CWDC_TO_LIG_LITC_vr decomp. of coarse woody debris C to lignin litter C gC/m^3/s F + 140 CWDC_vr CWD C (vertically resolved) gC/m^3 T + 141 CWDN CWD N gN/m^2 T + 142 CWDN_1m CWD N to 1 meter gN/m^2 F + 143 CWDN_TO_CEL_LITN decomp. of coarse woody debris N to cellulosic litter N gN/m^2 F + 144 CWDN_TO_CEL_LITN_vr decomp. of coarse woody debris N to cellulosic litter N gN/m^3 F + 145 CWDN_TO_LIG_LITN decomp. of coarse woody debris N to lignin litter N gN/m^2 F + 146 CWDN_TO_LIG_LITN_vr decomp. of coarse woody debris N to lignin litter N gN/m^3 F + 147 CWDN_vr CWD N (vertically resolved) gN/m^3 T + 148 CWD_HR_L2 Het. Resp. from coarse woody debris gC/m^2/s F + 149 CWD_HR_L2_vr Het. Resp. from coarse woody debris gC/m^3/s F + 150 CWD_HR_L3 Het. Resp. from coarse woody debris gC/m^2/s F + 151 CWD_HR_L3_vr Het. Resp. from coarse woody debris gC/m^3/s F + 152 C_ALLOMETRY C allocation index none F + 153 DAYL daylength s F + 154 DAYS_ACTIVE number of days since last dormancy days F + 155 DEADCROOTC dead coarse root C gC/m^2 T + 156 DEADCROOTC_STORAGE dead coarse root C storage gC/m^2 F + 157 DEADCROOTC_STORAGE_TO_XFER dead coarse root C shift storage to transfer gC/m^2/s F + 158 DEADCROOTC_XFER dead coarse root C transfer gC/m^2 F + 159 DEADCROOTC_XFER_TO_DEADCROOTC dead coarse root C growth from storage gC/m^2/s F + 160 DEADCROOTN dead coarse root N gN/m^2 T + 161 DEADCROOTN_STORAGE dead coarse root N storage gN/m^2 F + 162 DEADCROOTN_STORAGE_TO_XFER dead coarse root N shift storage to transfer gN/m^2/s F + 163 DEADCROOTN_XFER dead coarse root N transfer gN/m^2 F + 164 DEADCROOTN_XFER_TO_DEADCROOTN dead coarse root N growth from storage gN/m^2/s F + 165 DEADSTEMC dead stem C gC/m^2 T + 166 DEADSTEMC_STORAGE dead stem C storage gC/m^2 F + 167 DEADSTEMC_STORAGE_TO_XFER dead stem C shift storage to transfer gC/m^2/s F + 168 DEADSTEMC_XFER dead stem C transfer gC/m^2 F + 169 DEADSTEMC_XFER_TO_DEADSTEMC dead stem C growth from storage gC/m^2/s F + 170 DEADSTEMN dead stem N gN/m^2 T + 171 DEADSTEMN_STORAGE dead stem N storage gN/m^2 F + 172 DEADSTEMN_STORAGE_TO_XFER dead stem N shift storage to transfer gN/m^2/s F + 173 DEADSTEMN_XFER dead stem N transfer gN/m^2 F + 174 DEADSTEMN_XFER_TO_DEADSTEMN dead stem N growth from storage gN/m^2/s F + 175 DENIT total rate of denitrification gN/m^2/s T + 176 DGNETDT derivative of net ground heat flux wrt soil temp W/m^2/K F + 177 DISCOI 2 m Discomfort Index C T + 178 DISCOIS 2 m Stull Discomfort Index C T + 179 DISCOIS_R Rural 2 m Stull Discomfort Index C T + 180 DISCOIS_U Urban 2 m Stull Discomfort Index C T + 181 DISCOI_R Rural 2 m Discomfort Index C T + 182 DISCOI_U Urban 2 m Discomfort Index C T + 183 DISPLA displacement height m F + 184 DISPVEGC displayed veg carbon, excluding storage and cpool gC/m^2 T + 185 DISPVEGN displayed vegetation nitrogen gN/m^2 T + 186 DLRAD downward longwave radiation below the canopy W/m^2 F + 187 DORMANT_FLAG dormancy flag none F + 188 DOWNREG fractional reduction in GPP due to N limitation proportion F + 189 DPVLTRB1 turbulent deposition velocity 1 m/s F + 190 DPVLTRB2 turbulent deposition velocity 2 m/s F + 191 DPVLTRB3 turbulent deposition velocity 3 m/s F + 192 DPVLTRB4 turbulent deposition velocity 4 m/s F + 193 DSL dry surface layer thickness mm T + 194 DSTDEP total dust deposition (dry+wet) from atmosphere kg/m^2/s T + 195 DSTFLXT total surface dust emission kg/m2/s T + 196 DT_VEG change in t_veg, last iteration K F + 197 DWT_CONV_CFLUX conversion C flux (immediate loss to atm) (0 at all times except first timestep of year) gC/m^2/s T + 198 DWT_CONV_CFLUX_DRIBBLED conversion C flux (immediate loss to atm), dribbled throughout the year gC/m^2/s T + 199 DWT_CONV_CFLUX_PATCH patch-level conversion C flux (immediate loss to atm) (0 at all times except first timestep of gC/m^2/s F + 200 DWT_CONV_NFLUX conversion N flux (immediate loss to atm) (0 at all times except first timestep of year) gN/m^2/s T + 201 DWT_CONV_NFLUX_PATCH patch-level conversion N flux (immediate loss to atm) (0 at all times except first timestep of gN/m^2/s F + 202 DWT_CROPPROD1C_GAIN landcover change-driven addition to 1-year crop product pool gC/m^2/s T + 203 DWT_CROPPROD1N_GAIN landcover change-driven addition to 1-year crop product pool gN/m^2/s T + 204 DWT_DEADCROOTC_TO_CWDC dead coarse root to CWD due to landcover change gC/m^2/s F + 205 DWT_DEADCROOTN_TO_CWDN dead coarse root to CWD due to landcover change gN/m^2/s F + 206 DWT_FROOTC_TO_CEL_LIT_C fine root to cellulosic litter due to landcover change gC/m^2/s F + 207 DWT_FROOTC_TO_LIG_LIT_C fine root to lignin litter due to landcover change gC/m^2/s F + 208 DWT_FROOTC_TO_MET_LIT_C fine root to metabolic litter due to landcover change gC/m^2/s F + 209 DWT_FROOTN_TO_CEL_LIT_N fine root N to cellulosic litter due to landcover change gN/m^2/s F + 210 DWT_FROOTN_TO_LIG_LIT_N fine root N to lignin litter due to landcover change gN/m^2/s F + 211 DWT_FROOTN_TO_MET_LIT_N fine root N to metabolic litter due to landcover change gN/m^2/s F + 212 DWT_LIVECROOTC_TO_CWDC live coarse root to CWD due to landcover change gC/m^2/s F + 213 DWT_LIVECROOTN_TO_CWDN live coarse root to CWD due to landcover change gN/m^2/s F + 214 DWT_PROD100C_GAIN landcover change-driven addition to 100-yr wood product pool gC/m^2/s F + 215 DWT_PROD100N_GAIN landcover change-driven addition to 100-yr wood product pool gN/m^2/s F + 216 DWT_PROD10C_GAIN landcover change-driven addition to 10-yr wood product pool gC/m^2/s F + 217 DWT_PROD10N_GAIN landcover change-driven addition to 10-yr wood product pool gN/m^2/s F + 218 DWT_SEEDC_TO_DEADSTEM seed source to patch-level deadstem gC/m^2/s F + 219 DWT_SEEDC_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gC/m^2/s F + 220 DWT_SEEDC_TO_LEAF seed source to patch-level leaf gC/m^2/s F + 221 DWT_SEEDC_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gC/m^2/s F + 222 DWT_SEEDN_TO_DEADSTEM seed source to patch-level deadstem gN/m^2/s T + 223 DWT_SEEDN_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gN/m^2/s F + 224 DWT_SEEDN_TO_LEAF seed source to patch-level leaf gN/m^2/s T + 225 DWT_SEEDN_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gN/m^2/s F + 226 DWT_SLASH_CFLUX slash C flux (to litter diagnostic only) (0 at all times except first timestep of year) gC/m^2/s T + 227 DWT_SLASH_CFLUX_PATCH patch-level slash C flux (to litter diagnostic only) (0 at all times except first timestep of gC/m^2/s F + 228 DWT_WOODPRODC_GAIN landcover change-driven addition to wood product pools gC/m^2/s T + 229 DWT_WOODPRODN_GAIN landcover change-driven addition to wood product pools gN/m^2/s T + 230 DWT_WOOD_PRODUCTC_GAIN_PATCH patch-level landcover change-driven addition to wood product pools(0 at all times except first gC/m^2/s F + 231 DYN_COL_ADJUSTMENTS_CH4 Adjustments in ch4 due to dynamic column areas; only makes sense at the column level: should n gC/m^2 F + 232 DYN_COL_SOIL_ADJUSTMENTS_C Adjustments in soil carbon due to dynamic column areas; only makes sense at the column level: gC/m^2 F + 233 DYN_COL_SOIL_ADJUSTMENTS_N Adjustments in soil nitrogen due to dynamic column areas; only makes sense at the column level gN/m^2 F + 234 DYN_COL_SOIL_ADJUSTMENTS_NH4 Adjustments in soil NH4 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F + 235 DYN_COL_SOIL_ADJUSTMENTS_NO3 Adjustments in soil NO3 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F + 236 EFF_POROSITY effective porosity = porosity - vol_ice proportion F + 237 EFLXBUILD building heat flux from change in interior building air temperature W/m^2 T + 238 EFLX_DYNBAL dynamic land cover change conversion energy flux W/m^2 T + 239 EFLX_GNET net heat flux into ground W/m^2 F + 240 EFLX_GRND_LAKE net heat flux into lake/snow surface, excluding light transmission W/m^2 T + 241 EFLX_LH_TOT total latent heat flux [+ to atm] W/m^2 T + 242 EFLX_LH_TOT_ICE total latent heat flux [+ to atm] (ice landunits only) W/m^2 F + 243 EFLX_LH_TOT_R Rural total evaporation W/m^2 T + 244 EFLX_LH_TOT_U Urban total evaporation W/m^2 F + 245 EFLX_SOIL_GRND soil heat flux [+ into soil] W/m^2 F + 246 ELAI exposed one-sided leaf area index m^2/m^2 T + 247 EMG ground emissivity proportion F + 248 EMV vegetation emissivity proportion F + 249 EOPT Eopt coefficient for VOC calc non F + 250 EPT 2 m Equiv Pot Temp K T + 251 EPT_R Rural 2 m Equiv Pot Temp K T + 252 EPT_U Urban 2 m Equiv Pot Temp K T + 253 ER total ecosystem respiration, autotrophic + heterotrophic gC/m^2/s T + 254 ERRH2O total water conservation error mm T + 255 ERRH2OSNO imbalance in snow depth (liquid water) mm T + 256 ERRSEB surface energy conservation error W/m^2 T + 257 ERRSOI soil/lake energy conservation error W/m^2 T + 258 ERRSOL solar radiation conservation error W/m^2 T + 259 ESAI exposed one-sided stem area index m^2/m^2 T + 260 EXCESSC_MR excess C maintenance respiration gC/m^2/s F + 261 EXCESS_CFLUX C flux not allocated due to downregulation gC/m^2/s F + 262 FAREA_BURNED timestep fractional area burned s-1 T + 263 FCANSNO fraction of canopy that is wet proportion F + 264 FCEV canopy evaporation W/m^2 T + 265 FCH4 Gridcell surface CH4 flux to atmosphere (+ to atm) kgC/m2/s T + 266 FCH4TOCO2 Gridcell oxidation of CH4 to CO2 gC/m2/s T + 267 FCH4_DFSAT CH4 additional flux due to changing fsat, natural vegetated and crop landunits only kgC/m2/s T + 268 FCO2 CO2 flux to atmosphere (+ to atm) kgCO2/m2/s F + 269 FCOV fractional impermeable area unitless T + 270 FCTR canopy transpiration W/m^2 T + 271 FDRY fraction of foliage that is green and dry proportion F + 272 FERTNITRO Nitrogen fertilizer for each crop gN/m2/yr F + 273 FERT_COUNTER time left to fertilize seconds F + 274 FERT_TO_SMINN fertilizer to soil mineral N gN/m^2/s F + 275 FFIX_TO_SMINN free living N fixation to soil mineral N gN/m^2/s T + 276 FGEV ground evaporation W/m^2 T + 277 FGR heat flux into soil/snow including snow melt and lake / snow light transmission W/m^2 T + 278 FGR12 heat flux between soil layers 1 and 2 W/m^2 T + 279 FGR_ICE heat flux into soil/snow including snow melt and lake / snow light transmission (ice landunits W/m^2 F + 280 FGR_R Rural heat flux into soil/snow including snow melt and snow light transmission W/m^2 F + 281 FGR_SOIL_R Rural downward heat flux at interface below each soil layer watt/m^2 F + 282 FGR_U Urban heat flux into soil/snow including snow melt W/m^2 F + 283 FH2OSFC fraction of ground covered by surface water unitless T + 284 FH2OSFC_NOSNOW fraction of ground covered by surface water (if no snow present) unitless F + 285 FINUNDATED fractional inundated area of vegetated columns unitless T + 286 FINUNDATED_LAG time-lagged inundated fraction of vegetated columns unitless F + 287 FIRA net infrared (longwave) radiation W/m^2 T + 288 FIRA_ICE net infrared (longwave) radiation (ice landunits only) W/m^2 F + 289 FIRA_R Rural net infrared (longwave) radiation W/m^2 T + 290 FIRA_U Urban net infrared (longwave) radiation W/m^2 F + 291 FIRE emitted infrared (longwave) radiation W/m^2 T + 292 FIRE_ICE emitted infrared (longwave) radiation (ice landunits only) W/m^2 F + 293 FIRE_R Rural emitted infrared (longwave) radiation W/m^2 T + 294 FIRE_U Urban emitted infrared (longwave) radiation W/m^2 F + 295 FLDS atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 T + 296 FLDS_ICE atmospheric longwave radiation (downscaled to columns in glacier regions) (ice landunits only) W/m^2 F + 297 FMAX_DENIT_CARBONSUBSTRATE FMAX_DENIT_CARBONSUBSTRATE gN/m^3/s F + 298 FMAX_DENIT_NITRATE FMAX_DENIT_NITRATE gN/m^3/s F + 299 FPI fraction of potential immobilization proportion T + 300 FPI_vr fraction of potential immobilization proportion F + 301 FPSN photosynthesis umol m-2 s-1 T + 302 FPSN24 24 hour accumulative patch photosynthesis starting from mid-night umol CO2/m^2 ground/day F + 303 FPSN_WC Rubisco-limited photosynthesis umol m-2 s-1 F + 304 FPSN_WJ RuBP-limited photosynthesis umol m-2 s-1 F + 305 FPSN_WP Product-limited photosynthesis umol m-2 s-1 F + 306 FRAC_ICEOLD fraction of ice relative to the tot water proportion F + 307 FREE_RETRANSN_TO_NPOOL deployment of retranslocated N gN/m^2/s T + 308 FROOTC fine root C gC/m^2 T + 309 FROOTC_ALLOC fine root C allocation gC/m^2/s T + 310 FROOTC_LOSS fine root C loss gC/m^2/s T + 311 FROOTC_STORAGE fine root C storage gC/m^2 F + 312 FROOTC_STORAGE_TO_XFER fine root C shift storage to transfer gC/m^2/s F + 313 FROOTC_TO_LITTER fine root C litterfall gC/m^2/s F + 314 FROOTC_XFER fine root C transfer gC/m^2 F + 315 FROOTC_XFER_TO_FROOTC fine root C growth from storage gC/m^2/s F + 316 FROOTN fine root N gN/m^2 T + 317 FROOTN_STORAGE fine root N storage gN/m^2 F + 318 FROOTN_STORAGE_TO_XFER fine root N shift storage to transfer gN/m^2/s F + 319 FROOTN_TO_LITTER fine root N litterfall gN/m^2/s F + 320 FROOTN_XFER fine root N transfer gN/m^2 F + 321 FROOTN_XFER_TO_FROOTN fine root N growth from storage gN/m^2/s F + 322 FROOT_MR fine root maintenance respiration gC/m^2/s F + 323 FROOT_PROF profile for litter C and N inputs from fine roots 1/m F + 324 FROST_TABLE frost table depth (natural vegetated and crop landunits only) m F + 325 FSA absorbed solar radiation W/m^2 T + 326 FSAT fractional area with water table at surface unitless T + 327 FSA_ICE absorbed solar radiation (ice landunits only) W/m^2 F + 328 FSA_R Rural absorbed solar radiation W/m^2 F + 329 FSA_U Urban absorbed solar radiation W/m^2 F + 330 FSD24 direct radiation (last 24hrs) K F + 331 FSD240 direct radiation (last 240hrs) K F + 332 FSDS atmospheric incident solar radiation W/m^2 T + 333 FSDSND direct nir incident solar radiation W/m^2 T + 334 FSDSNDLN direct nir incident solar radiation at local noon W/m^2 T + 335 FSDSNI diffuse nir incident solar radiation W/m^2 T + 336 FSDSVD direct vis incident solar radiation W/m^2 T + 337 FSDSVDLN direct vis incident solar radiation at local noon W/m^2 T + 338 FSDSVI diffuse vis incident solar radiation W/m^2 T + 339 FSDSVILN diffuse vis incident solar radiation at local noon W/m^2 T + 340 FSH sensible heat not including correction for land use change and rain/snow conversion W/m^2 T + 341 FSH_G sensible heat from ground W/m^2 T + 342 FSH_ICE sensible heat not including correction for land use change and rain/snow conversion (ice landu W/m^2 F + 343 FSH_PRECIP_CONVERSION Sensible heat flux from conversion of rain/snow atm forcing W/m^2 T + 344 FSH_R Rural sensible heat W/m^2 T + 345 FSH_RUNOFF_ICE_TO_LIQ sensible heat flux generated from conversion of ice runoff to liquid W/m^2 T + 346 FSH_TO_COUPLER sensible heat sent to coupler (includes corrections for land use change, rain/snow conversion W/m^2 T + 347 FSH_U Urban sensible heat W/m^2 F + 348 FSH_V sensible heat from veg W/m^2 T + 349 FSI24 indirect radiation (last 24hrs) K F + 350 FSI240 indirect radiation (last 240hrs) K F + 351 FSM snow melt heat flux W/m^2 T + 352 FSM_ICE snow melt heat flux (ice landunits only) W/m^2 F + 353 FSM_R Rural snow melt heat flux W/m^2 F + 354 FSM_U Urban snow melt heat flux W/m^2 F + 355 FSNO fraction of ground covered by snow unitless T + 356 FSNO_EFF effective fraction of ground covered by snow unitless T + 357 FSNO_ICE fraction of ground covered by snow (ice landunits only) unitless F + 358 FSR reflected solar radiation W/m^2 T + 359 FSRND direct nir reflected solar radiation W/m^2 T + 360 FSRNDLN direct nir reflected solar radiation at local noon W/m^2 T + 361 FSRNI diffuse nir reflected solar radiation W/m^2 T + 362 FSRSF reflected solar radiation W/m^2 T + 363 FSRSFND direct nir reflected solar radiation W/m^2 T + 364 FSRSFNDLN direct nir reflected solar radiation at local noon W/m^2 T + 365 FSRSFNI diffuse nir reflected solar radiation W/m^2 T + 366 FSRSFVD direct vis reflected solar radiation W/m^2 T + 367 FSRSFVDLN direct vis reflected solar radiation at local noon W/m^2 T + 368 FSRSFVI diffuse vis reflected solar radiation W/m^2 T + 369 FSRVD direct vis reflected solar radiation W/m^2 T + 370 FSRVDLN direct vis reflected solar radiation at local noon W/m^2 T + 371 FSRVI diffuse vis reflected solar radiation W/m^2 T + 372 FSR_ICE reflected solar radiation (ice landunits only) W/m^2 F + 373 FSUN sunlit fraction of canopy proportion F + 374 FSUN24 fraction sunlit (last 24hrs) K F + 375 FSUN240 fraction sunlit (last 240hrs) K F + 376 FUELC fuel load gC/m^2 T + 377 FV friction velocity for dust model m/s F + 378 FWET fraction of canopy that is wet proportion F + 379 F_DENIT denitrification flux gN/m^2/s T + 380 F_DENIT_BASE F_DENIT_BASE gN/m^3/s F + 381 F_DENIT_vr denitrification flux gN/m^3/s F + 382 F_N2O_DENIT denitrification N2O flux gN/m^2/s T + 383 F_N2O_NIT nitrification N2O flux gN/m^2/s T + 384 F_NIT nitrification flux gN/m^2/s T + 385 F_NIT_vr nitrification flux gN/m^3/s F + 386 FireComp_BC fire emissions flux of BC kg/m2/sec F + 387 FireComp_OC fire emissions flux of OC kg/m2/sec F + 388 FireComp_SO2 fire emissions flux of SO2 kg/m2/sec F + 389 FireEmis_TOT Total fire emissions flux gC/m2/sec F + 390 FireEmis_ZTOP Top of vertical fire emissions distribution m F + 391 FireMech_SO2 fire emissions flux of SO2 kg/m2/sec F + 392 FireMech_bc_a1 fire emissions flux of bc_a1 kg/m2/sec F + 393 FireMech_pom_a1 fire emissions flux of pom_a1 kg/m2/sec F + 394 GAMMA total gamma for VOC calc non F + 395 GAMMAA gamma A for VOC calc non F + 396 GAMMAC gamma C for VOC calc non F + 397 GAMMAL gamma L for VOC calc non F + 398 GAMMAP gamma P for VOC calc non F + 399 GAMMAS gamma S for VOC calc non F + 400 GAMMAT gamma T for VOC calc non F + 401 GDD0 Growing degree days base 0C from planting ddays F + 402 GDD020 Twenty year average of growing degree days base 0C from planting ddays F + 403 GDD10 Growing degree days base 10C from planting ddays F + 404 GDD1020 Twenty year average of growing degree days base 10C from planting ddays F + 405 GDD8 Growing degree days base 8C from planting ddays F + 406 GDD820 Twenty year average of growing degree days base 8C from planting ddays F + 407 GDDHARV Growing degree days (gdd) needed to harvest ddays F + 408 GDDPLANT Accumulated growing degree days past planting date for crop ddays F + 409 GDDTSOI Growing degree-days from planting (top two soil layers) ddays F + 410 GPP gross primary production gC/m^2/s T + 411 GR total growth respiration gC/m^2/s T + 412 GRAINC grain C (does not equal yield) gC/m^2 T + 413 GRAINC_TO_FOOD grain C to food gC/m^2/s T + 414 GRAINC_TO_SEED grain C to seed gC/m^2/s T + 415 GRAINN grain N gN/m^2 T + 416 GRESP_STORAGE growth respiration storage gC/m^2 F + 417 GRESP_STORAGE_TO_XFER growth respiration shift storage to transfer gC/m^2/s F + 418 GRESP_XFER growth respiration transfer gC/m^2 F + 419 GROSS_NMIN gross rate of N mineralization gN/m^2/s T + 420 GROSS_NMIN_vr gross rate of N mineralization gN/m^3/s F + 421 GSSHA shaded leaf stomatal conductance umol H20/m2/s T + 422 GSSHALN shaded leaf stomatal conductance at local noon umol H20/m2/s T + 423 GSSUN sunlit leaf stomatal conductance umol H20/m2/s T + 424 GSSUNLN sunlit leaf stomatal conductance at local noon umol H20/m2/s T + 425 H2OCAN intercepted water mm T + 426 H2OSFC surface water depth mm T + 427 H2OSNO snow depth (liquid water) mm T + 428 H2OSNO_ICE snow depth (liquid water, ice landunits only) mm F + 429 H2OSNO_TOP mass of snow in top snow layer kg/m2 T + 430 H2OSOI volumetric soil water (natural vegetated and crop landunits only) mm3/mm3 T + 431 HBOT canopy bottom m F + 432 HEAT_CONTENT1 initial gridcell total heat content J/m^2 T + 433 HEAT_CONTENT1_VEG initial gridcell total heat content - natural vegetated and crop landunits only J/m^2 F + 434 HEAT_CONTENT2 post land cover change total heat content J/m^2 F + 435 HEAT_FROM_AC sensible heat flux put into canyon due to heat removed from air conditioning W/m^2 T + 436 HIA 2 m NWS Heat Index C T + 437 HIA_R Rural 2 m NWS Heat Index C T + 438 HIA_U Urban 2 m NWS Heat Index C T + 439 HK hydraulic conductivity (natural vegetated and crop landunits only) mm/s F + 440 HR total heterotrophic respiration gC/m^2/s T + 441 HR_vr total vertically resolved heterotrophic respiration gC/m^3/s T + 442 HTOP canopy top m T + 443 HUMIDEX 2 m Humidex C T + 444 HUMIDEX_R Rural 2 m Humidex C T + 445 HUMIDEX_U Urban 2 m Humidex C T + 446 ICE_CONTENT1 initial gridcell total ice content mm T + 447 ICE_CONTENT2 post land cover change total ice content mm F + 448 ICE_MODEL_FRACTION Ice sheet model fractional coverage unitless F + 449 INIT_GPP GPP flux before downregulation gC/m^2/s F + 450 INT_SNOW accumulated swe (natural vegetated and crop landunits only) mm F + 451 INT_SNOW_ICE accumulated swe (ice landunits only) mm F + 452 JMX25T canopy profile of jmax umol/m2/s T + 453 Jmx25Z maximum rate of electron transport at 25 Celcius for canopy layers umol electrons/m2/s T + 454 KROOT root conductance each soil layer 1/s F + 455 KSOIL soil conductance in each soil layer 1/s F + 456 K_ACT_SOM active soil organic potential loss coefficient 1/s F + 457 K_CEL_LIT cellulosic litter potential loss coefficient 1/s F + 458 K_CWD coarse woody debris potential loss coefficient 1/s F + 459 K_LIG_LIT lignin litter potential loss coefficient 1/s F + 460 K_MET_LIT metabolic litter potential loss coefficient 1/s F + 461 K_NITR K_NITR 1/s F + 462 K_NITR_H2O K_NITR_H2O unitless F + 463 K_NITR_PH K_NITR_PH unitless F + 464 K_NITR_T K_NITR_T unitless F + 465 K_PAS_SOM passive soil organic potential loss coefficient 1/s F + 466 K_SLO_SOM slow soil organic ma potential loss coefficient 1/s F + 467 LAI240 240hr average of leaf area index m^2/m^2 F + 468 LAISHA shaded projected leaf area index m^2/m^2 T + 469 LAISUN sunlit projected leaf area index m^2/m^2 T + 470 LAKEICEFRAC lake layer ice mass fraction unitless F + 471 LAKEICEFRAC_SURF surface lake layer ice mass fraction unitless T + 472 LAKEICETHICK thickness of lake ice (including physical expansion on freezing) m T + 473 LAND_USE_FLUX total C emitted from land cover conversion (smoothed over the year) and wood and grain product gC/m^2/s T + 474 LATBASET latitude vary base temperature for gddplant degree C F + 475 LEAFC leaf C gC/m^2 T + 476 LEAFCN Leaf CN ratio used for flexible CN gC/gN T + 477 LEAFCN_OFFSET Leaf C:N used by FUN unitless F + 478 LEAFCN_STORAGE Storage Leaf CN ratio used for flexible CN gC/gN F + 479 LEAFC_ALLOC leaf C allocation gC/m^2/s T + 480 LEAFC_CHANGE C change in leaf gC/m^2/s T + 481 LEAFC_LOSS leaf C loss gC/m^2/s T + 482 LEAFC_STORAGE leaf C storage gC/m^2 F + 483 LEAFC_STORAGE_TO_XFER leaf C shift storage to transfer gC/m^2/s F + 484 LEAFC_STORAGE_XFER_ACC Accumulated leaf C transfer gC/m^2 F + 485 LEAFC_TO_BIOFUELC leaf C to biofuel C gC/m^2/s T + 486 LEAFC_TO_LITTER leaf C litterfall gC/m^2/s F + 487 LEAFC_TO_LITTER_FUN leaf C litterfall used by FUN gC/m^2/s T + 488 LEAFC_XFER leaf C transfer gC/m^2 F + 489 LEAFC_XFER_TO_LEAFC leaf C growth from storage gC/m^2/s F + 490 LEAFN leaf N gN/m^2 T + 491 LEAFN_STORAGE leaf N storage gN/m^2 F + 492 LEAFN_STORAGE_TO_XFER leaf N shift storage to transfer gN/m^2/s F + 493 LEAFN_STORAGE_XFER_ACC Accmulated leaf N transfer gN/m^2 F + 494 LEAFN_TO_LITTER leaf N litterfall gN/m^2/s T + 495 LEAFN_TO_RETRANSN leaf N to retranslocated N pool gN/m^2/s F + 496 LEAFN_XFER leaf N transfer gN/m^2 F + 497 LEAFN_XFER_TO_LEAFN leaf N growth from storage gN/m^2/s F + 498 LEAF_MR leaf maintenance respiration gC/m^2/s T + 499 LEAF_PROF profile for litter C and N inputs from leaves 1/m F + 500 LFC2 conversion area fraction of BET and BDT that burned per sec T + 501 LGSF long growing season factor proportion F + 502 LIG_LITC LIG_LIT C gC/m^2 T + 503 LIG_LITC_1m LIG_LIT C to 1 meter gC/m^2 F + 504 LIG_LITC_TNDNCY_VERT_TRA lignin litter C tendency due to vertical transport gC/m^3/s F + 505 LIG_LITC_TO_SLO_SOMC decomp. of lignin litter C to slow soil organic ma C gC/m^2/s F + 506 LIG_LITC_TO_SLO_SOMC_vr decomp. of lignin litter C to slow soil organic ma C gC/m^3/s F + 507 LIG_LITC_vr LIG_LIT C (vertically resolved) gC/m^3 T + 508 LIG_LITN LIG_LIT N gN/m^2 T + 509 LIG_LITN_1m LIG_LIT N to 1 meter gN/m^2 F + 510 LIG_LITN_TNDNCY_VERT_TRA lignin litter N tendency due to vertical transport gN/m^3/s F + 511 LIG_LITN_TO_SLO_SOMN decomp. of lignin litter N to slow soil organic ma N gN/m^2 F + 512 LIG_LITN_TO_SLO_SOMN_vr decomp. of lignin litter N to slow soil organic ma N gN/m^3 F + 513 LIG_LITN_vr LIG_LIT N (vertically resolved) gN/m^3 T + 514 LIG_LIT_HR Het. Resp. from lignin litter gC/m^2/s F + 515 LIG_LIT_HR_vr Het. Resp. from lignin litter gC/m^3/s F + 516 LIQCAN intercepted liquid water mm T + 517 LIQUID_CONTENT1 initial gridcell total liq content mm T + 518 LIQUID_CONTENT2 post landuse change gridcell total liq content mm F + 519 LIQUID_WATER_TEMP1 initial gridcell weighted average liquid water temperature K F + 520 LITFALL litterfall (leaves and fine roots) gC/m^2/s T + 521 LITFIRE litter fire losses gC/m^2/s F + 522 LITTERC_HR litter C heterotrophic respiration gC/m^2/s T + 523 LITTERC_LOSS litter C loss gC/m^2/s T + 524 LIVECROOTC live coarse root C gC/m^2 T + 525 LIVECROOTC_STORAGE live coarse root C storage gC/m^2 F + 526 LIVECROOTC_STORAGE_TO_XFER live coarse root C shift storage to transfer gC/m^2/s F + 527 LIVECROOTC_TO_DEADCROOTC live coarse root C turnover gC/m^2/s F + 528 LIVECROOTC_XFER live coarse root C transfer gC/m^2 F + 529 LIVECROOTC_XFER_TO_LIVECROOTC live coarse root C growth from storage gC/m^2/s F + 530 LIVECROOTN live coarse root N gN/m^2 T + 531 LIVECROOTN_STORAGE live coarse root N storage gN/m^2 F + 532 LIVECROOTN_STORAGE_TO_XFER live coarse root N shift storage to transfer gN/m^2/s F + 533 LIVECROOTN_TO_DEADCROOTN live coarse root N turnover gN/m^2/s F + 534 LIVECROOTN_TO_RETRANSN live coarse root N to retranslocated N pool gN/m^2/s F + 535 LIVECROOTN_XFER live coarse root N transfer gN/m^2 F + 536 LIVECROOTN_XFER_TO_LIVECROOTN live coarse root N growth from storage gN/m^2/s F + 537 LIVECROOT_MR live coarse root maintenance respiration gC/m^2/s F + 538 LIVESTEMC live stem C gC/m^2 T + 539 LIVESTEMC_STORAGE live stem C storage gC/m^2 F + 540 LIVESTEMC_STORAGE_TO_XFER live stem C shift storage to transfer gC/m^2/s F + 541 LIVESTEMC_TO_BIOFUELC livestem C to biofuel C gC/m^2/s T + 542 LIVESTEMC_TO_DEADSTEMC live stem C turnover gC/m^2/s F + 543 LIVESTEMC_XFER live stem C transfer gC/m^2 F + 544 LIVESTEMC_XFER_TO_LIVESTEMC live stem C growth from storage gC/m^2/s F + 545 LIVESTEMN live stem N gN/m^2 T + 546 LIVESTEMN_STORAGE live stem N storage gN/m^2 F + 547 LIVESTEMN_STORAGE_TO_XFER live stem N shift storage to transfer gN/m^2/s F + 548 LIVESTEMN_TO_DEADSTEMN live stem N turnover gN/m^2/s F + 549 LIVESTEMN_TO_RETRANSN live stem N to retranslocated N pool gN/m^2/s F + 550 LIVESTEMN_XFER live stem N transfer gN/m^2 F + 551 LIVESTEMN_XFER_TO_LIVESTEMN live stem N growth from storage gN/m^2/s F + 552 LIVESTEM_MR live stem maintenance respiration gC/m^2/s F + 553 LNC leaf N concentration gN leaf/m^2 T + 554 LWdown atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 F + 555 LWup upwelling longwave radiation W/m^2 F + 556 MEG_acetaldehyde MEGAN flux kg/m2/sec T + 557 MEG_acetic_acid MEGAN flux kg/m2/sec T + 558 MEG_acetone MEGAN flux kg/m2/sec T + 559 MEG_carene_3 MEGAN flux kg/m2/sec T + 560 MEG_ethanol MEGAN flux kg/m2/sec T + 561 MEG_formaldehyde MEGAN flux kg/m2/sec T + 562 MEG_isoprene MEGAN flux kg/m2/sec T + 563 MEG_methanol MEGAN flux kg/m2/sec T + 564 MEG_pinene_a MEGAN flux kg/m2/sec T + 565 MEG_thujene_a MEGAN flux kg/m2/sec T + 566 MET_LITC MET_LIT C gC/m^2 T + 567 MET_LITC_1m MET_LIT C to 1 meter gC/m^2 F + 568 MET_LITC_TNDNCY_VERT_TRA metabolic litter C tendency due to vertical transport gC/m^3/s F + 569 MET_LITC_TO_PAS_SOMC decomp. of metabolic litter C to passive soil organic C gC/m^2/s F + 570 MET_LITC_TO_PAS_SOMC_vr decomp. of metabolic litter C to passive soil organic C gC/m^3/s F + 571 MET_LITC_vr MET_LIT C (vertically resolved) gC/m^3 T + 572 MET_LITN MET_LIT N gN/m^2 T + 573 MET_LITN_1m MET_LIT N to 1 meter gN/m^2 F + 574 MET_LITN_TNDNCY_VERT_TRA metabolic litter N tendency due to vertical transport gN/m^3/s F + 575 MET_LITN_TO_PAS_SOMN decomp. of metabolic litter N to passive soil organic N gN/m^2 F + 576 MET_LITN_TO_PAS_SOMN_vr decomp. of metabolic litter N to passive soil organic N gN/m^3 F + 577 MET_LITN_vr MET_LIT N (vertically resolved) gN/m^3 T + 578 MET_LIT_HR Het. Resp. from metabolic litter gC/m^2/s F + 579 MET_LIT_HR_vr Het. Resp. from metabolic litter gC/m^3/s F + 580 MR maintenance respiration gC/m^2/s T + 581 M_ACT_SOMC_TO_LEACHING active soil organic C leaching loss gC/m^2/s F + 582 M_ACT_SOMN_TO_LEACHING active soil organic N leaching loss gN/m^2/s F + 583 M_CEL_LITC_TO_FIRE cellulosic litter C fire loss gC/m^2/s F + 584 M_CEL_LITC_TO_FIRE_vr cellulosic litter C fire loss gC/m^3/s F + 585 M_CEL_LITC_TO_LEACHING cellulosic litter C leaching loss gC/m^2/s F + 586 M_CEL_LITN_TO_FIRE cellulosic litter N fire loss gN/m^2 F + 587 M_CEL_LITN_TO_FIRE_vr cellulosic litter N fire loss gN/m^3 F + 588 M_CEL_LITN_TO_LEACHING cellulosic litter N leaching loss gN/m^2/s F + 589 M_CWDC_TO_FIRE coarse woody debris C fire loss gC/m^2/s F + 590 M_CWDC_TO_FIRE_vr coarse woody debris C fire loss gC/m^3/s F + 591 M_CWDN_TO_FIRE coarse woody debris N fire loss gN/m^2 F + 592 M_CWDN_TO_FIRE_vr coarse woody debris N fire loss gN/m^3 F + 593 M_DEADCROOTC_STORAGE_TO_LITTER dead coarse root C storage mortality gC/m^2/s F + 594 M_DEADCROOTC_STORAGE_TO_LITTER_FIRE dead coarse root C storage fire mortality to litter gC/m^2/s F + 595 M_DEADCROOTC_TO_LITTER dead coarse root C mortality gC/m^2/s F + 596 M_DEADCROOTC_XFER_TO_LITTER dead coarse root C transfer mortality gC/m^2/s F + 597 M_DEADCROOTN_STORAGE_TO_FIRE dead coarse root N storage fire loss gN/m^2/s F + 598 M_DEADCROOTN_STORAGE_TO_LITTER dead coarse root N storage mortality gN/m^2/s F + 599 M_DEADCROOTN_TO_FIRE dead coarse root N fire loss gN/m^2/s F + 600 M_DEADCROOTN_TO_LITTER dead coarse root N mortality gN/m^2/s F + 601 M_DEADCROOTN_TO_LITTER_FIRE dead coarse root N fire mortality to litter gN/m^2/s F + 602 M_DEADCROOTN_XFER_TO_FIRE dead coarse root N transfer fire loss gN/m^2/s F + 603 M_DEADCROOTN_XFER_TO_LITTER dead coarse root N transfer mortality gN/m^2/s F + 604 M_DEADROOTC_STORAGE_TO_FIRE dead root C storage fire loss gC/m^2/s F + 605 M_DEADROOTC_STORAGE_TO_LITTER_FIRE dead root C storage fire mortality to litter gC/m^2/s F + 606 M_DEADROOTC_TO_FIRE dead root C fire loss gC/m^2/s F + 607 M_DEADROOTC_TO_LITTER_FIRE dead root C fire mortality to litter gC/m^2/s F + 608 M_DEADROOTC_XFER_TO_FIRE dead root C transfer fire loss gC/m^2/s F + 609 M_DEADROOTC_XFER_TO_LITTER_FIRE dead root C transfer fire mortality to litter gC/m^2/s F + 610 M_DEADSTEMC_STORAGE_TO_FIRE dead stem C storage fire loss gC/m^2/s F + 611 M_DEADSTEMC_STORAGE_TO_LITTER dead stem C storage mortality gC/m^2/s F + 612 M_DEADSTEMC_STORAGE_TO_LITTER_FIRE dead stem C storage fire mortality to litter gC/m^2/s F + 613 M_DEADSTEMC_TO_FIRE dead stem C fire loss gC/m^2/s F + 614 M_DEADSTEMC_TO_LITTER dead stem C mortality gC/m^2/s F + 615 M_DEADSTEMC_TO_LITTER_FIRE dead stem C fire mortality to litter gC/m^2/s F + 616 M_DEADSTEMC_XFER_TO_FIRE dead stem C transfer fire loss gC/m^2/s F + 617 M_DEADSTEMC_XFER_TO_LITTER dead stem C transfer mortality gC/m^2/s F + 618 M_DEADSTEMC_XFER_TO_LITTER_FIRE dead stem C transfer fire mortality to litter gC/m^2/s F + 619 M_DEADSTEMN_STORAGE_TO_FIRE dead stem N storage fire loss gN/m^2/s F + 620 M_DEADSTEMN_STORAGE_TO_LITTER dead stem N storage mortality gN/m^2/s F + 621 M_DEADSTEMN_TO_FIRE dead stem N fire loss gN/m^2/s F + 622 M_DEADSTEMN_TO_LITTER dead stem N mortality gN/m^2/s F + 623 M_DEADSTEMN_TO_LITTER_FIRE dead stem N fire mortality to litter gN/m^2/s F + 624 M_DEADSTEMN_XFER_TO_FIRE dead stem N transfer fire loss gN/m^2/s F + 625 M_DEADSTEMN_XFER_TO_LITTER dead stem N transfer mortality gN/m^2/s F + 626 M_FROOTC_STORAGE_TO_FIRE fine root C storage fire loss gC/m^2/s F + 627 M_FROOTC_STORAGE_TO_LITTER fine root C storage mortality gC/m^2/s F + 628 M_FROOTC_STORAGE_TO_LITTER_FIRE fine root C storage fire mortality to litter gC/m^2/s F + 629 M_FROOTC_TO_FIRE fine root C fire loss gC/m^2/s F + 630 M_FROOTC_TO_LITTER fine root C mortality gC/m^2/s F + 631 M_FROOTC_TO_LITTER_FIRE fine root C fire mortality to litter gC/m^2/s F + 632 M_FROOTC_XFER_TO_FIRE fine root C transfer fire loss gC/m^2/s F + 633 M_FROOTC_XFER_TO_LITTER fine root C transfer mortality gC/m^2/s F + 634 M_FROOTC_XFER_TO_LITTER_FIRE fine root C transfer fire mortality to litter gC/m^2/s F + 635 M_FROOTN_STORAGE_TO_FIRE fine root N storage fire loss gN/m^2/s F + 636 M_FROOTN_STORAGE_TO_LITTER fine root N storage mortality gN/m^2/s F + 637 M_FROOTN_TO_FIRE fine root N fire loss gN/m^2/s F + 638 M_FROOTN_TO_LITTER fine root N mortality gN/m^2/s F + 639 M_FROOTN_XFER_TO_FIRE fine root N transfer fire loss gN/m^2/s F + 640 M_FROOTN_XFER_TO_LITTER fine root N transfer mortality gN/m^2/s F + 641 M_GRESP_STORAGE_TO_FIRE growth respiration storage fire loss gC/m^2/s F + 642 M_GRESP_STORAGE_TO_LITTER growth respiration storage mortality gC/m^2/s F + 643 M_GRESP_STORAGE_TO_LITTER_FIRE growth respiration storage fire mortality to litter gC/m^2/s F + 644 M_GRESP_XFER_TO_FIRE growth respiration transfer fire loss gC/m^2/s F + 645 M_GRESP_XFER_TO_LITTER growth respiration transfer mortality gC/m^2/s F + 646 M_GRESP_XFER_TO_LITTER_FIRE growth respiration transfer fire mortality to litter gC/m^2/s F + 647 M_LEAFC_STORAGE_TO_FIRE leaf C storage fire loss gC/m^2/s F + 648 M_LEAFC_STORAGE_TO_LITTER leaf C storage mortality gC/m^2/s F + 649 M_LEAFC_STORAGE_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F + 650 M_LEAFC_TO_FIRE leaf C fire loss gC/m^2/s F + 651 M_LEAFC_TO_LITTER leaf C mortality gC/m^2/s F + 652 M_LEAFC_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F + 653 M_LEAFC_XFER_TO_FIRE leaf C transfer fire loss gC/m^2/s F + 654 M_LEAFC_XFER_TO_LITTER leaf C transfer mortality gC/m^2/s F + 655 M_LEAFC_XFER_TO_LITTER_FIRE leaf C transfer fire mortality to litter gC/m^2/s F + 656 M_LEAFN_STORAGE_TO_FIRE leaf N storage fire loss gN/m^2/s F + 657 M_LEAFN_STORAGE_TO_LITTER leaf N storage mortality gN/m^2/s F + 658 M_LEAFN_TO_FIRE leaf N fire loss gN/m^2/s F + 659 M_LEAFN_TO_LITTER leaf N mortality gN/m^2/s F + 660 M_LEAFN_XFER_TO_FIRE leaf N transfer fire loss gN/m^2/s F + 661 M_LEAFN_XFER_TO_LITTER leaf N transfer mortality gN/m^2/s F + 662 M_LIG_LITC_TO_FIRE lignin litter C fire loss gC/m^2/s F + 663 M_LIG_LITC_TO_FIRE_vr lignin litter C fire loss gC/m^3/s F + 664 M_LIG_LITC_TO_LEACHING lignin litter C leaching loss gC/m^2/s F + 665 M_LIG_LITN_TO_FIRE lignin litter N fire loss gN/m^2 F + 666 M_LIG_LITN_TO_FIRE_vr lignin litter N fire loss gN/m^3 F + 667 M_LIG_LITN_TO_LEACHING lignin litter N leaching loss gN/m^2/s F + 668 M_LIVECROOTC_STORAGE_TO_LITTER live coarse root C storage mortality gC/m^2/s F + 669 M_LIVECROOTC_STORAGE_TO_LITTER_FIRE live coarse root C fire mortality to litter gC/m^2/s F + 670 M_LIVECROOTC_TO_LITTER live coarse root C mortality gC/m^2/s F + 671 M_LIVECROOTC_XFER_TO_LITTER live coarse root C transfer mortality gC/m^2/s F + 672 M_LIVECROOTN_STORAGE_TO_FIRE live coarse root N storage fire loss gN/m^2/s F + 673 M_LIVECROOTN_STORAGE_TO_LITTER live coarse root N storage mortality gN/m^2/s F + 674 M_LIVECROOTN_TO_FIRE live coarse root N fire loss gN/m^2/s F + 675 M_LIVECROOTN_TO_LITTER live coarse root N mortality gN/m^2/s F + 676 M_LIVECROOTN_XFER_TO_FIRE live coarse root N transfer fire loss gN/m^2/s F + 677 M_LIVECROOTN_XFER_TO_LITTER live coarse root N transfer mortality gN/m^2/s F + 678 M_LIVEROOTC_STORAGE_TO_FIRE live root C storage fire loss gC/m^2/s F + 679 M_LIVEROOTC_STORAGE_TO_LITTER_FIRE live root C storage fire mortality to litter gC/m^2/s F + 680 M_LIVEROOTC_TO_DEADROOTC_FIRE live root C fire mortality to dead root C gC/m^2/s F + 681 M_LIVEROOTC_TO_FIRE live root C fire loss gC/m^2/s F + 682 M_LIVEROOTC_TO_LITTER_FIRE live root C fire mortality to litter gC/m^2/s F + 683 M_LIVEROOTC_XFER_TO_FIRE live root C transfer fire loss gC/m^2/s F + 684 M_LIVEROOTC_XFER_TO_LITTER_FIRE live root C transfer fire mortality to litter gC/m^2/s F + 685 M_LIVESTEMC_STORAGE_TO_FIRE live stem C storage fire loss gC/m^2/s F + 686 M_LIVESTEMC_STORAGE_TO_LITTER live stem C storage mortality gC/m^2/s F + 687 M_LIVESTEMC_STORAGE_TO_LITTER_FIRE live stem C storage fire mortality to litter gC/m^2/s F + 688 M_LIVESTEMC_TO_DEADSTEMC_FIRE live stem C fire mortality to dead stem C gC/m^2/s F + 689 M_LIVESTEMC_TO_FIRE live stem C fire loss gC/m^2/s F + 690 M_LIVESTEMC_TO_LITTER live stem C mortality gC/m^2/s F + 691 M_LIVESTEMC_TO_LITTER_FIRE live stem C fire mortality to litter gC/m^2/s F + 692 M_LIVESTEMC_XFER_TO_FIRE live stem C transfer fire loss gC/m^2/s F + 693 M_LIVESTEMC_XFER_TO_LITTER live stem C transfer mortality gC/m^2/s F + 694 M_LIVESTEMC_XFER_TO_LITTER_FIRE live stem C transfer fire mortality to litter gC/m^2/s F + 695 M_LIVESTEMN_STORAGE_TO_FIRE live stem N storage fire loss gN/m^2/s F + 696 M_LIVESTEMN_STORAGE_TO_LITTER live stem N storage mortality gN/m^2/s F + 697 M_LIVESTEMN_TO_FIRE live stem N fire loss gN/m^2/s F + 698 M_LIVESTEMN_TO_LITTER live stem N mortality gN/m^2/s F + 699 M_LIVESTEMN_XFER_TO_FIRE live stem N transfer fire loss gN/m^2/s F + 700 M_LIVESTEMN_XFER_TO_LITTER live stem N transfer mortality gN/m^2/s F + 701 M_MET_LITC_TO_FIRE metabolic litter C fire loss gC/m^2/s F + 702 M_MET_LITC_TO_FIRE_vr metabolic litter C fire loss gC/m^3/s F + 703 M_MET_LITC_TO_LEACHING metabolic litter C leaching loss gC/m^2/s F + 704 M_MET_LITN_TO_FIRE metabolic litter N fire loss gN/m^2 F + 705 M_MET_LITN_TO_FIRE_vr metabolic litter N fire loss gN/m^3 F + 706 M_MET_LITN_TO_LEACHING metabolic litter N leaching loss gN/m^2/s F + 707 M_PAS_SOMC_TO_LEACHING passive soil organic C leaching loss gC/m^2/s F + 708 M_PAS_SOMN_TO_LEACHING passive soil organic N leaching loss gN/m^2/s F + 709 M_RETRANSN_TO_FIRE retranslocated N pool fire loss gN/m^2/s F + 710 M_RETRANSN_TO_LITTER retranslocated N pool mortality gN/m^2/s F + 711 M_SLO_SOMC_TO_LEACHING slow soil organic ma C leaching loss gC/m^2/s F + 712 M_SLO_SOMN_TO_LEACHING slow soil organic ma N leaching loss gN/m^2/s F + 713 NACTIVE Mycorrhizal N uptake flux gN/m^2/s T + 714 NACTIVE_NH4 Mycorrhizal N uptake flux gN/m^2/s T + 715 NACTIVE_NO3 Mycorrhizal N uptake flux gN/m^2/s T + 716 NAM AM-associated N uptake flux gN/m^2/s T + 717 NAM_NH4 AM-associated N uptake flux gN/m^2/s T + 718 NAM_NO3 AM-associated N uptake flux gN/m^2/s T + 719 NBP net biome production, includes fire, landuse, harvest and hrv_xsmrpool flux (latter smoothed o gC/m^2/s T + 720 NDEPLOY total N deployed in new growth gN/m^2/s T + 721 NDEP_PROF profile for atmospheric N deposition 1/m F + 722 NDEP_TO_SMINN atmospheric N deposition to soil mineral N gN/m^2/s T + 723 NECM ECM-associated N uptake flux gN/m^2/s T + 724 NECM_NH4 ECM-associated N uptake flux gN/m^2/s T + 725 NECM_NO3 ECM-associated N uptake flux gN/m^2/s T + 726 NEE net ecosystem exchange of carbon, includes fire and hrv_xsmrpool (latter smoothed over the yea gC/m^2/s T + 727 NEM Gridcell net adjustment to net carbon exchange passed to atm. for methane production gC/m2/s T + 728 NEP net ecosystem production, excludes fire, landuse, and harvest flux, positive for sink gC/m^2/s T + 729 NET_NMIN net rate of N mineralization gN/m^2/s T + 730 NET_NMIN_vr net rate of N mineralization gN/m^3/s F + 731 NFERTILIZATION fertilizer added gN/m^2/s T + 732 NFIRE fire counts valid only in Reg.C counts/km2/sec T + 733 NFIX Symbiotic BNF uptake flux gN/m^2/s T + 734 NFIXATION_PROF profile for biological N fixation 1/m F + 735 NFIX_TO_SMINN symbiotic/asymbiotic N fixation to soil mineral N gN/m^2/s F + 736 NNONMYC Non-mycorrhizal N uptake flux gN/m^2/s T + 737 NNONMYC_NH4 Non-mycorrhizal N uptake flux gN/m^2/s T + 738 NNONMYC_NO3 Non-mycorrhizal N uptake flux gN/m^2/s T + 739 NPASSIVE Passive N uptake flux gN/m^2/s T + 740 NPOOL temporary plant N pool gN/m^2 T + 741 NPOOL_TO_DEADCROOTN allocation to dead coarse root N gN/m^2/s F + 742 NPOOL_TO_DEADCROOTN_STORAGE allocation to dead coarse root N storage gN/m^2/s F + 743 NPOOL_TO_DEADSTEMN allocation to dead stem N gN/m^2/s F + 744 NPOOL_TO_DEADSTEMN_STORAGE allocation to dead stem N storage gN/m^2/s F + 745 NPOOL_TO_FROOTN allocation to fine root N gN/m^2/s F + 746 NPOOL_TO_FROOTN_STORAGE allocation to fine root N storage gN/m^2/s F + 747 NPOOL_TO_LEAFN allocation to leaf N gN/m^2/s F + 748 NPOOL_TO_LEAFN_STORAGE allocation to leaf N storage gN/m^2/s F + 749 NPOOL_TO_LIVECROOTN allocation to live coarse root N gN/m^2/s F + 750 NPOOL_TO_LIVECROOTN_STORAGE allocation to live coarse root N storage gN/m^2/s F + 751 NPOOL_TO_LIVESTEMN allocation to live stem N gN/m^2/s F + 752 NPOOL_TO_LIVESTEMN_STORAGE allocation to live stem N storage gN/m^2/s F + 753 NPP net primary production gC/m^2/s T + 754 NPP_BURNEDOFF C that cannot be used for N uptake gC/m^2/s F + 755 NPP_GROWTH Total C used for growth in FUN gC/m^2/s T + 756 NPP_NACTIVE Mycorrhizal N uptake used C gC/m^2/s T + 757 NPP_NACTIVE_NH4 Mycorrhizal N uptake use C gC/m^2/s T + 758 NPP_NACTIVE_NO3 Mycorrhizal N uptake used C gC/m^2/s T + 759 NPP_NAM AM-associated N uptake used C gC/m^2/s T + 760 NPP_NAM_NH4 AM-associated N uptake use C gC/m^2/s T + 761 NPP_NAM_NO3 AM-associated N uptake use C gC/m^2/s T + 762 NPP_NECM ECM-associated N uptake used C gC/m^2/s T + 763 NPP_NECM_NH4 ECM-associated N uptake use C gC/m^2/s T + 764 NPP_NECM_NO3 ECM-associated N uptake used C gC/m^2/s T + 765 NPP_NFIX Symbiotic BNF uptake used C gC/m^2/s T + 766 NPP_NNONMYC Non-mycorrhizal N uptake used C gC/m^2/s T + 767 NPP_NNONMYC_NH4 Non-mycorrhizal N uptake use C gC/m^2/s T + 768 NPP_NNONMYC_NO3 Non-mycorrhizal N uptake use C gC/m^2/s T + 769 NPP_NRETRANS Retranslocated N uptake flux gC/m^2/s T + 770 NPP_NUPTAKE Total C used by N uptake in FUN gC/m^2/s T + 771 NRETRANS Retranslocated N uptake flux gN/m^2/s T + 772 NRETRANS_REG Retranslocated N uptake flux gN/m^2/s T + 773 NRETRANS_SEASON Retranslocated N uptake flux gN/m^2/s T + 774 NRETRANS_STRESS Retranslocated N uptake flux gN/m^2/s T + 775 NSUBSTEPS number of adaptive timesteps in CLM timestep unitless F + 776 NUPTAKE Total N uptake of FUN gN/m^2/s T + 777 NUPTAKE_NPP_FRACTION frac of NPP used in N uptake - T + 778 N_ALLOMETRY N allocation index none F + 779 O2_DECOMP_DEPTH_UNSAT O2 consumption from HR and AR for non-inundated area mol/m3/s F + 780 OBU Monin-Obukhov length m F + 781 OCDEP total OC deposition (dry+wet) from atmosphere kg/m^2/s T + 782 OFFSET_COUNTER offset days counter days F + 783 OFFSET_FDD offset freezing degree days counter C degree-days F + 784 OFFSET_FLAG offset flag none F + 785 OFFSET_SWI offset soil water index none F + 786 ONSET_COUNTER onset days counter days F + 787 ONSET_FDD onset freezing degree days counter C degree-days F + 788 ONSET_FLAG onset flag none F + 789 ONSET_GDD onset growing degree days C degree-days F + 790 ONSET_GDDFLAG onset flag for growing degree day sum none F + 791 ONSET_SWI onset soil water index none F + 792 O_SCALAR fraction by which decomposition is reduced due to anoxia unitless T + 793 PAR240DZ 10-day running mean of daytime patch absorbed PAR for leaves for top canopy layer W/m^2 F + 794 PAR240XZ 10-day running mean of maximum patch absorbed PAR for leaves for top canopy layer W/m^2 F + 795 PAR240_shade shade PAR (240 hrs) umol/m2/s F + 796 PAR240_sun sunlit PAR (240 hrs) umol/m2/s F + 797 PAR24_shade shade PAR (24 hrs) umol/m2/s F + 798 PAR24_sun sunlit PAR (24 hrs) umol/m2/s F + 799 PARVEGLN absorbed par by vegetation at local noon W/m^2 T + 800 PAR_shade shade PAR umol/m2/s F + 801 PAR_sun sunlit PAR umol/m2/s F + 802 PAS_SOMC PAS_SOM C gC/m^2 T + 803 PAS_SOMC_1m PAS_SOM C to 1 meter gC/m^2 F + 804 PAS_SOMC_TNDNCY_VERT_TRA passive soil organic C tendency due to vertical transport gC/m^3/s F + 805 PAS_SOMC_TO_ACT_SOMC decomp. of passive soil organic C to active soil organic C gC/m^2/s F + 806 PAS_SOMC_TO_ACT_SOMC_vr decomp. of passive soil organic C to active soil organic C gC/m^3/s F + 807 PAS_SOMC_TO_SLO_SOMC decomp. of passive soil organic C to slow soil organic ma C gC/m^2/s F + 808 PAS_SOMC_TO_SLO_SOMC_vr decomp. of passive soil organic C to slow soil organic ma C gC/m^3/s F + 809 PAS_SOMC_vr PAS_SOM C (vertically resolved) gC/m^3 T + 810 PAS_SOMN PAS_SOM N gN/m^2 T + 811 PAS_SOMN_1m PAS_SOM N to 1 meter gN/m^2 F + 812 PAS_SOMN_TNDNCY_VERT_TRA passive soil organic N tendency due to vertical transport gN/m^3/s F + 813 PAS_SOMN_TO_ACT_SOMN decomp. of passive soil organic N to active soil organic N gN/m^2 F + 814 PAS_SOMN_TO_ACT_SOMN_vr decomp. of passive soil organic N to active soil organic N gN/m^3 F + 815 PAS_SOMN_TO_SLO_SOMN decomp. of passive soil organic N to slow soil organic ma N gN/m^2 F + 816 PAS_SOMN_TO_SLO_SOMN_vr decomp. of passive soil organic N to slow soil organic ma N gN/m^3 F + 817 PAS_SOMN_vr PAS_SOM N (vertically resolved) gN/m^3 T + 818 PAS_SOM_HR_S2 Het. Resp. from passive soil organic gC/m^2/s F + 819 PAS_SOM_HR_S2_vr Het. Resp. from passive soil organic gC/m^3/s F + 820 PAS_SOM_HR_S3 Het. Resp. from passive soil organic gC/m^2/s F + 821 PAS_SOM_HR_S3_vr Het. Resp. from passive soil organic gC/m^3/s F + 822 PBOT atmospheric pressure at surface (downscaled to columns in glacier regions) Pa T + 823 PBOT_240 10 day running mean of air pressure Pa F + 824 PCH4 atmospheric partial pressure of CH4 Pa T + 825 PCO2 atmospheric partial pressure of CO2 Pa T + 826 PCO2_240 10 day running mean of CO2 pressure Pa F + 827 PFT_CTRUNC patch-level sink for C truncation gC/m^2 F + 828 PFT_FIRE_CLOSS total patch-level fire C loss for non-peat fires outside land-type converted region gC/m^2/s T + 829 PFT_FIRE_NLOSS total patch-level fire N loss gN/m^2/s T + 830 PFT_NTRUNC patch-level sink for N truncation gN/m^2 F + 831 PLANTCN Plant C:N used by FUN unitless F + 832 PLANT_CALLOC total allocated C flux gC/m^2/s F + 833 PLANT_NALLOC total allocated N flux gN/m^2/s F + 834 PLANT_NDEMAND N flux required to support initial GPP gN/m^2/s T + 835 PNLCZ Proportion of nitrogen allocated for light capture unitless F + 836 PO2_240 10 day running mean of O2 pressure Pa F + 837 POTENTIAL_IMMOB potential N immobilization gN/m^2/s T + 838 POTENTIAL_IMMOB_vr potential N immobilization gN/m^3/s F + 839 POT_F_DENIT potential denitrification flux gN/m^2/s T + 840 POT_F_DENIT_vr potential denitrification flux gN/m^3/s F + 841 POT_F_NIT potential nitrification flux gN/m^2/s T + 842 POT_F_NIT_vr potential nitrification flux gN/m^3/s F + 843 PREC10 10-day running mean of PREC MM H2O/S F + 844 PREC60 60-day running mean of PREC MM H2O/S F + 845 PREV_DAYL daylength from previous timestep s F + 846 PREV_FROOTC_TO_LITTER previous timestep froot C litterfall flux gC/m^2/s F + 847 PREV_LEAFC_TO_LITTER previous timestep leaf C litterfall flux gC/m^2/s F + 848 PROD100C 100-yr wood product C gC/m^2 F + 849 PROD100C_LOSS loss from 100-yr wood product pool gC/m^2/s F + 850 PROD100N 100-yr wood product N gN/m^2 F + 851 PROD100N_LOSS loss from 100-yr wood product pool gN/m^2/s F + 852 PROD10C 10-yr wood product C gC/m^2 F + 853 PROD10C_LOSS loss from 10-yr wood product pool gC/m^2/s F + 854 PROD10N 10-yr wood product N gN/m^2 F + 855 PROD10N_LOSS loss from 10-yr wood product pool gN/m^2/s F + 856 PSNSHA shaded leaf photosynthesis umolCO2/m^2/s T + 857 PSNSHADE_TO_CPOOL C fixation from shaded canopy gC/m^2/s T + 858 PSNSUN sunlit leaf photosynthesis umolCO2/m^2/s T + 859 PSNSUN_TO_CPOOL C fixation from sunlit canopy gC/m^2/s T + 860 PSurf atmospheric pressure at surface (downscaled to columns in glacier regions) Pa F + 861 Q2M 2m specific humidity kg/kg T + 862 QAF canopy air humidity kg/kg F + 863 QBOT atmospheric specific humidity (downscaled to columns in glacier regions) kg/kg T + 864 QDIRECT_THROUGHFALL direct throughfall of liquid (rain + above-canopy irrigation) mm/s F + 865 QDIRECT_THROUGHFALL_SNOW direct throughfall of snow mm/s F + 866 QDRAI sub-surface drainage mm/s T + 867 QDRAI_PERCH perched wt drainage mm/s T + 868 QDRAI_XS saturation excess drainage mm/s T + 869 QDRIP rate of excess canopy liquid falling off canopy mm/s F + 870 QDRIP_SNOW rate of excess canopy snow falling off canopy mm/s F + 871 QFLOOD runoff from river flooding mm/s T + 872 QFLX_EVAP_TOT qflx_evap_soi + qflx_evap_can + qflx_tran_veg kg m-2 s-1 T + 873 QFLX_EVAP_VEG vegetation evaporation mm H2O/s F + 874 QFLX_ICE_DYNBAL ice dynamic land cover change conversion runoff flux mm/s T + 875 QFLX_LIQDEW_TO_TOP_LAYER rate of liquid water deposited on top soil or snow layer (dew) mm H2O/s T + 876 QFLX_LIQEVAP_FROM_TOP_LAYER rate of liquid water evaporated from top soil or snow layer mm H2O/s T + 877 QFLX_LIQ_DYNBAL liq dynamic land cover change conversion runoff flux mm/s T + 878 QFLX_LIQ_GRND liquid (rain+irrigation) on ground after interception mm H2O/s F + 879 QFLX_SNOW_DRAIN drainage from snow pack mm/s T + 880 QFLX_SNOW_DRAIN_ICE drainage from snow pack melt (ice landunits only) mm/s T + 881 QFLX_SNOW_GRND snow on ground after interception mm H2O/s F + 882 QFLX_SOLIDDEW_TO_TOP_LAYER rate of solid water deposited on top soil or snow layer (frost) mm H2O/s T + 883 QFLX_SOLIDEVAP_FROM_TOP_LAYER rate of ice evaporated from top soil or snow layer (sublimation) (also includes bare ice subli mm H2O/s T + 884 QFLX_SOLIDEVAP_FROM_TOP_LAYER_ICE rate of ice evaporated from top soil or snow layer (sublimation) (also includes bare ice subli mm H2O/s F + 885 QH2OSFC surface water runoff mm/s T + 886 QH2OSFC_TO_ICE surface water converted to ice mm/s F + 887 QHR hydraulic redistribution mm/s T + 888 QICE ice growth/melt mm/s T + 889 QICE_FORC qice forcing sent to GLC mm/s F + 890 QICE_FRZ ice growth mm/s T + 891 QICE_MELT ice melt mm/s T + 892 QINFL infiltration mm/s T + 893 QINTR interception mm/s T + 894 QIRRIG_DEMAND irrigation demand mm/s F + 895 QIRRIG_DRIP water added via drip irrigation mm/s F + 896 QIRRIG_FROM_GW_CONFINED water added through confined groundwater irrigation mm/s T + 897 QIRRIG_FROM_GW_UNCONFINED water added through unconfined groundwater irrigation mm/s T + 898 QIRRIG_FROM_SURFACE water added through surface water irrigation mm/s T + 899 QIRRIG_SPRINKLER water added via sprinkler irrigation mm/s F + 900 QOVER total surface runoff (includes QH2OSFC) mm/s T + 901 QOVER_LAG time-lagged surface runoff for soil columns mm/s F + 902 QPHSNEG net negative hydraulic redistribution flux mm/s F + 903 QRGWL surface runoff at glaciers (liquid only), wetlands, lakes; also includes melted ice runoff fro mm/s T + 904 QROOTSINK water flux from soil to root in each soil-layer mm/s F + 905 QRUNOFF total liquid runoff not including correction for land use change mm/s T + 906 QRUNOFF_ICE total liquid runoff not incl corret for LULCC (ice landunits only) mm/s T + 907 QRUNOFF_ICE_TO_COUPLER total ice runoff sent to coupler (includes corrections for land use change) mm/s T + 908 QRUNOFF_ICE_TO_LIQ liquid runoff from converted ice runoff mm/s F + 909 QRUNOFF_R Rural total runoff mm/s F + 910 QRUNOFF_TO_COUPLER total liquid runoff sent to coupler (includes corrections for land use change) mm/s T + 911 QRUNOFF_U Urban total runoff mm/s F + 912 QSNOCPLIQ excess liquid h2o due to snow capping not including correction for land use change mm H2O/s T + 913 QSNOEVAP evaporation from snow (only when snl<0, otherwise it is equal to qflx_ev_soil) mm/s T + 914 QSNOFRZ column-integrated snow freezing rate kg/m2/s T + 915 QSNOFRZ_ICE column-integrated snow freezing rate (ice landunits only) mm/s T + 916 QSNOMELT snow melt rate mm/s T + 917 QSNOMELT_ICE snow melt (ice landunits only) mm/s T + 918 QSNOUNLOAD canopy snow unloading mm/s T + 919 QSNO_TEMPUNLOAD canopy snow temp unloading mm/s T + 920 QSNO_WINDUNLOAD canopy snow wind unloading mm/s T + 921 QSNWCPICE excess solid h2o due to snow capping not including correction for land use change mm H2O/s T + 922 QSOIL Ground evaporation (soil/snow evaporation + soil/snow sublimation - dew) mm/s T + 923 QSOIL_ICE Ground evaporation (ice landunits only) mm/s T + 924 QTOPSOIL water input to surface mm/s F + 925 QVEGE canopy evaporation mm/s T + 926 QVEGT canopy transpiration mm/s T + 927 Qair atmospheric specific humidity (downscaled to columns in glacier regions) kg/kg F + 928 Qh sensible heat W/m^2 F + 929 Qle total evaporation W/m^2 F + 930 Qstor storage heat flux (includes snowmelt) W/m^2 F + 931 Qtau momentum flux kg/m/s^2 F + 932 RAH1 aerodynamical resistance s/m F + 933 RAH2 aerodynamical resistance s/m F + 934 RAIN atmospheric rain, after rain/snow repartitioning based on temperature mm/s T + 935 RAIN_FROM_ATM atmospheric rain received from atmosphere (pre-repartitioning) mm/s T + 936 RAIN_ICE atmospheric rain, after rain/snow repartitioning based on temperature (ice landunits only) mm/s F + 937 RAM1 aerodynamical resistance s/m F + 938 RAM_LAKE aerodynamic resistance for momentum (lakes only) s/m F + 939 RAW1 aerodynamical resistance s/m F + 940 RAW2 aerodynamical resistance s/m F + 941 RB leaf boundary resistance s/m F + 942 RB10 10 day running mean boundary layer resistance s/m F + 943 RETRANSN plant pool of retranslocated N gN/m^2 T + 944 RETRANSN_TO_NPOOL deployment of retranslocated N gN/m^2/s T + 945 RH atmospheric relative humidity % F + 946 RH2M 2m relative humidity % T + 947 RH2M_R Rural 2m specific humidity % F + 948 RH2M_U Urban 2m relative humidity % F + 949 RH30 30-day running mean of relative humidity % F + 950 RHAF fractional humidity of canopy air fraction F + 951 RHAF10 10 day running mean of fractional humidity of canopy air fraction F + 952 RH_LEAF fractional humidity at leaf surface fraction F + 953 ROOTR effective fraction of roots in each soil layer (SMS method) proportion F + 954 RR root respiration (fine root MR + total root GR) gC/m^2/s T + 955 RRESIS root resistance in each soil layer proportion F + 956 RSSHA shaded leaf stomatal resistance s/m T + 957 RSSUN sunlit leaf stomatal resistance s/m T + 958 Rainf atmospheric rain, after rain/snow repartitioning based on temperature mm/s F + 959 Rnet net radiation W/m^2 F + 960 SABG solar rad absorbed by ground W/m^2 T + 961 SABG_PEN Rural solar rad penetrating top soil or snow layer watt/m^2 T + 962 SABV solar rad absorbed by veg W/m^2 T + 963 SEEDC pool for seeding new PFTs via dynamic landcover gC/m^2 T + 964 SEEDN pool for seeding new PFTs via dynamic landcover gN/m^2 T + 965 SLASH_HARVESTC slash harvest carbon (to litter) gC/m^2/s T + 966 SLO_SOMC SLO_SOM C gC/m^2 T + 967 SLO_SOMC_1m SLO_SOM C to 1 meter gC/m^2 F + 968 SLO_SOMC_TNDNCY_VERT_TRA slow soil organic ma C tendency due to vertical transport gC/m^3/s F + 969 SLO_SOMC_TO_ACT_SOMC decomp. of slow soil organic ma C to active soil organic C gC/m^2/s F + 970 SLO_SOMC_TO_ACT_SOMC_vr decomp. of slow soil organic ma C to active soil organic C gC/m^3/s F + 971 SLO_SOMC_TO_PAS_SOMC decomp. of slow soil organic ma C to passive soil organic C gC/m^2/s F + 972 SLO_SOMC_TO_PAS_SOMC_vr decomp. of slow soil organic ma C to passive soil organic C gC/m^3/s F + 973 SLO_SOMC_vr SLO_SOM C (vertically resolved) gC/m^3 T + 974 SLO_SOMN SLO_SOM N gN/m^2 T + 975 SLO_SOMN_1m SLO_SOM N to 1 meter gN/m^2 F + 976 SLO_SOMN_TNDNCY_VERT_TRA slow soil organic ma N tendency due to vertical transport gN/m^3/s F + 977 SLO_SOMN_TO_ACT_SOMN decomp. of slow soil organic ma N to active soil organic N gN/m^2 F + 978 SLO_SOMN_TO_ACT_SOMN_vr decomp. of slow soil organic ma N to active soil organic N gN/m^3 F + 979 SLO_SOMN_TO_PAS_SOMN decomp. of slow soil organic ma N to passive soil organic N gN/m^2 F + 980 SLO_SOMN_TO_PAS_SOMN_vr decomp. of slow soil organic ma N to passive soil organic N gN/m^3 F + 981 SLO_SOMN_vr SLO_SOM N (vertically resolved) gN/m^3 T + 982 SLO_SOM_HR_S1 Het. Resp. from slow soil organic ma gC/m^2/s F + 983 SLO_SOM_HR_S1_vr Het. Resp. from slow soil organic ma gC/m^3/s F + 984 SLO_SOM_HR_S3 Het. Resp. from slow soil organic ma gC/m^2/s F + 985 SLO_SOM_HR_S3_vr Het. Resp. from slow soil organic ma gC/m^3/s F + 986 SMINN soil mineral N gN/m^2 T + 987 SMINN_TO_NPOOL deployment of soil mineral N uptake gN/m^2/s T + 988 SMINN_TO_PLANT plant uptake of soil mineral N gN/m^2/s T + 989 SMINN_TO_PLANT_FUN Total soil N uptake of FUN gN/m^2/s T + 990 SMINN_TO_PLANT_vr plant uptake of soil mineral N gN/m^3/s F + 991 SMINN_TO_S1N_L1 mineral N flux for decomp. of MET_LITto PAS_SOM gN/m^2 F + 992 SMINN_TO_S1N_L1_vr mineral N flux for decomp. of MET_LITto PAS_SOM gN/m^3 F + 993 SMINN_TO_S1N_L2 mineral N flux for decomp. of CEL_LITto PAS_SOM gN/m^2 F + 994 SMINN_TO_S1N_L2_vr mineral N flux for decomp. of CEL_LITto PAS_SOM gN/m^3 F + 995 SMINN_TO_S1N_S2 mineral N flux for decomp. of SLO_SOMto PAS_SOM gN/m^2 F + 996 SMINN_TO_S1N_S2_vr mineral N flux for decomp. of SLO_SOMto PAS_SOM gN/m^3 F + 997 SMINN_TO_S1N_S3 mineral N flux for decomp. of ACT_SOMto PAS_SOM gN/m^2 F + 998 SMINN_TO_S1N_S3_vr mineral N flux for decomp. of ACT_SOMto PAS_SOM gN/m^3 F + 999 SMINN_TO_S2N_L3 mineral N flux for decomp. of LIG_LITto SLO_SOM gN/m^2 F +1000 SMINN_TO_S2N_L3_vr mineral N flux for decomp. of LIG_LITto SLO_SOM gN/m^3 F +1001 SMINN_TO_S2N_S1 mineral N flux for decomp. of PAS_SOMto SLO_SOM gN/m^2 F +1002 SMINN_TO_S2N_S1_vr mineral N flux for decomp. of PAS_SOMto SLO_SOM gN/m^3 F +1003 SMINN_TO_S3N_S1 mineral N flux for decomp. of PAS_SOMto ACT_SOM gN/m^2 F +1004 SMINN_TO_S3N_S1_vr mineral N flux for decomp. of PAS_SOMto ACT_SOM gN/m^3 F +1005 SMINN_TO_S3N_S2 mineral N flux for decomp. of SLO_SOMto ACT_SOM gN/m^2 F +1006 SMINN_TO_S3N_S2_vr mineral N flux for decomp. of SLO_SOMto ACT_SOM gN/m^3 F +1007 SMINN_vr soil mineral N gN/m^3 T +1008 SMIN_NH4 soil mineral NH4 gN/m^2 T +1009 SMIN_NH4_TO_PLANT plant uptake of NH4 gN/m^3/s F +1010 SMIN_NH4_vr soil mineral NH4 (vert. res.) gN/m^3 T +1011 SMIN_NO3 soil mineral NO3 gN/m^2 T +1012 SMIN_NO3_LEACHED soil NO3 pool loss to leaching gN/m^2/s T +1013 SMIN_NO3_LEACHED_vr soil NO3 pool loss to leaching gN/m^3/s F +1014 SMIN_NO3_MASSDENS SMIN_NO3_MASSDENS ugN/cm^3 soil F +1015 SMIN_NO3_RUNOFF soil NO3 pool loss to runoff gN/m^2/s T +1016 SMIN_NO3_RUNOFF_vr soil NO3 pool loss to runoff gN/m^3/s F +1017 SMIN_NO3_TO_PLANT plant uptake of NO3 gN/m^3/s F +1018 SMIN_NO3_vr soil mineral NO3 (vert. res.) gN/m^3 T +1019 SMP soil matric potential (natural vegetated and crop landunits only) mm T +1020 SNOBCMCL mass of BC in snow column kg/m2 T +1021 SNOBCMSL mass of BC in top snow layer kg/m2 T +1022 SNOCAN intercepted snow mm T +1023 SNODSTMCL mass of dust in snow column kg/m2 T +1024 SNODSTMSL mass of dust in top snow layer kg/m2 T +1025 SNOFSDSND direct nir incident solar radiation on snow W/m^2 F +1026 SNOFSDSNI diffuse nir incident solar radiation on snow W/m^2 F +1027 SNOFSDSVD direct vis incident solar radiation on snow W/m^2 F +1028 SNOFSDSVI diffuse vis incident solar radiation on snow W/m^2 F +1029 SNOFSRND direct nir reflected solar radiation from snow W/m^2 T +1030 SNOFSRNI diffuse nir reflected solar radiation from snow W/m^2 T +1031 SNOFSRVD direct vis reflected solar radiation from snow W/m^2 T +1032 SNOFSRVI diffuse vis reflected solar radiation from snow W/m^2 T +1033 SNOINTABS Fraction of incoming solar absorbed by lower snow layers - T +1034 SNOLIQFL top snow layer liquid water fraction (land) fraction F +1035 SNOOCMCL mass of OC in snow column kg/m2 T +1036 SNOOCMSL mass of OC in top snow layer kg/m2 T +1037 SNORDSL top snow layer effective grain radius m^-6 F +1038 SNOTTOPL snow temperature (top layer) K F +1039 SNOTTOPL_ICE snow temperature (top layer, ice landunits only) K F +1040 SNOTXMASS snow temperature times layer mass, layer sum; to get mass-weighted temperature, divide by (SNO K kg/m2 T +1041 SNOTXMASS_ICE snow temperature times layer mass, layer sum (ice landunits only); to get mass-weighted temper K kg/m2 F +1042 SNOW atmospheric snow, after rain/snow repartitioning based on temperature mm/s T +1043 SNOWDP gridcell mean snow height m T +1044 SNOWICE snow ice kg/m2 T +1045 SNOWICE_ICE snow ice (ice landunits only) kg/m2 F +1046 SNOWLIQ snow liquid water kg/m2 T +1047 SNOWLIQ_ICE snow liquid water (ice landunits only) kg/m2 F +1048 SNOW_5D 5day snow avg m F +1049 SNOW_DEPTH snow height of snow covered area m T +1050 SNOW_DEPTH_ICE snow height of snow covered area (ice landunits only) m F +1051 SNOW_FROM_ATM atmospheric snow received from atmosphere (pre-repartitioning) mm/s T +1052 SNOW_ICE atmospheric snow, after rain/snow repartitioning based on temperature (ice landunits only) mm/s F +1053 SNOW_PERSISTENCE Length of time of continuous snow cover (nat. veg. landunits only) seconds T +1054 SNOW_SINKS snow sinks (liquid water) mm/s T +1055 SNOW_SOURCES snow sources (liquid water) mm/s T +1056 SNO_ABS Absorbed solar radiation in each snow layer W/m^2 F +1057 SNO_ABS_ICE Absorbed solar radiation in each snow layer (ice landunits only) W/m^2 F +1058 SNO_BW Partial density of water in the snow pack (ice + liquid) kg/m3 F +1059 SNO_BW_ICE Partial density of water in the snow pack (ice + liquid, ice landunits only) kg/m3 F +1060 SNO_EXISTENCE Fraction of averaging period for which each snow layer existed unitless F +1061 SNO_FRZ snow freezing rate in each snow layer kg/m2/s F +1062 SNO_FRZ_ICE snow freezing rate in each snow layer (ice landunits only) mm/s F +1063 SNO_GS Mean snow grain size Microns F +1064 SNO_GS_ICE Mean snow grain size (ice landunits only) Microns F +1065 SNO_ICE Snow ice content kg/m2 F +1066 SNO_LIQH2O Snow liquid water content kg/m2 F +1067 SNO_MELT snow melt rate in each snow layer mm/s F +1068 SNO_MELT_ICE snow melt rate in each snow layer (ice landunits only) mm/s F +1069 SNO_T Snow temperatures K F +1070 SNO_TK Thermal conductivity W/m-K F +1071 SNO_TK_ICE Thermal conductivity (ice landunits only) W/m-K F +1072 SNO_T_ICE Snow temperatures (ice landunits only) K F +1073 SNO_Z Snow layer thicknesses m F +1074 SNO_Z_ICE Snow layer thicknesses (ice landunits only) m F +1075 SNOdTdzL top snow layer temperature gradient (land) K/m F +1076 SOIL10 10-day running mean of 12cm layer soil K F +1077 SOILC_CHANGE C change in soil gC/m^2/s T +1078 SOILC_HR soil C heterotrophic respiration gC/m^2/s T +1079 SOILC_vr SOIL C (vertically resolved) gC/m^3 T +1080 SOILICE soil ice (natural vegetated and crop landunits only) kg/m2 T +1081 SOILLIQ soil liquid water (natural vegetated and crop landunits only) kg/m2 T +1082 SOILN_vr SOIL N (vertically resolved) gN/m^3 T +1083 SOILPSI soil water potential in each soil layer MPa F +1084 SOILRESIS soil resistance to evaporation s/m T +1085 SOILWATER_10CM soil liquid water + ice in top 10cm of soil (veg landunits only) kg/m2 T +1086 SOMC_FIRE C loss due to peat burning gC/m^2/s T +1087 SOMFIRE soil organic matter fire losses gC/m^2/s F +1088 SOM_ADV_COEF advection term for vertical SOM translocation m/s F +1089 SOM_C_LEACHED total flux of C from SOM pools due to leaching gC/m^2/s T +1090 SOM_DIFFUS_COEF diffusion coefficient for vertical SOM translocation m^2/s F +1091 SOM_N_LEACHED total flux of N from SOM pools due to leaching gN/m^2/s F +1092 SR total soil respiration (HR + root resp) gC/m^2/s T +1093 SSRE_FSR surface snow effect on reflected solar radiation W/m^2 T +1094 SSRE_FSRND surface snow effect on direct nir reflected solar radiation W/m^2 T +1095 SSRE_FSRNDLN surface snow effect on direct nir reflected solar radiation at local noon W/m^2 T +1096 SSRE_FSRNI surface snow effect on diffuse nir reflected solar radiation W/m^2 T +1097 SSRE_FSRVD surface snow radiatve effect on direct vis reflected solar radiation W/m^2 T +1098 SSRE_FSRVDLN surface snow radiatve effect on direct vis reflected solar radiation at local noon W/m^2 T +1099 SSRE_FSRVI surface snow radiatve effect on diffuse vis reflected solar radiation W/m^2 T +1100 STEM_PROF profile for litter C and N inputs from stems 1/m F +1101 STORAGE_CDEMAND C use from the C storage pool gC/m^2 F +1102 STORAGE_GR growth resp for growth sent to storage for later display gC/m^2/s F +1103 STORAGE_NDEMAND N demand during the offset period gN/m^2 F +1104 STORVEGC stored vegetation carbon, excluding cpool gC/m^2 T +1105 STORVEGN stored vegetation nitrogen gN/m^2 T +1106 SUPPLEMENT_TO_SMINN supplemental N supply gN/m^2/s T +1107 SUPPLEMENT_TO_SMINN_vr supplemental N supply gN/m^3/s F +1108 SWBGT 2 m Simplified Wetbulb Globe Temp C T +1109 SWBGT_R Rural 2 m Simplified Wetbulb Globe Temp C T +1110 SWBGT_U Urban 2 m Simplified Wetbulb Globe Temp C T +1111 SWMP65 2 m Swamp Cooler Temp 65% Eff C T +1112 SWMP65_R Rural 2 m Swamp Cooler Temp 65% Eff C T +1113 SWMP65_U Urban 2 m Swamp Cooler Temp 65% Eff C T +1114 SWMP80 2 m Swamp Cooler Temp 80% Eff C T +1115 SWMP80_R Rural 2 m Swamp Cooler Temp 80% Eff C T +1116 SWMP80_U Urban 2 m Swamp Cooler Temp 80% Eff C T +1117 SWdown atmospheric incident solar radiation W/m^2 F +1118 SWup upwelling shortwave radiation W/m^2 F +1119 SoilAlpha factor limiting ground evap unitless F +1120 SoilAlpha_U urban factor limiting ground evap unitless F +1121 T10 10-day running mean of 2-m temperature K F +1122 TAF canopy air temperature K F +1123 TAUX zonal surface stress kg/m/s^2 T +1124 TAUY meridional surface stress kg/m/s^2 T +1125 TBOT atmospheric air temperature (downscaled to columns in glacier regions) K T +1126 TBUILD internal urban building air temperature K T +1127 TBUILD_MAX prescribed maximum interior building temperature K F +1128 TEMPAVG_T2M temporary average 2m air temperature K F +1129 TEMPMAX_RETRANSN temporary annual max of retranslocated N pool gN/m^2 F +1130 TEMPSUM_POTENTIAL_GPP temporary annual sum of potential GPP gC/m^2/yr F +1131 TEQ 2 m Equiv Temp K T +1132 TEQ_R Rural 2 m Equiv Temp K T +1133 TEQ_U Urban 2 m Equiv Temp K T +1134 TFLOOR floor temperature K F +1135 TG ground temperature K T +1136 TG_ICE ground temperature (ice landunits only) K F +1137 TG_R Rural ground temperature K F +1138 TG_U Urban ground temperature K F +1139 TH2OSFC surface water temperature K T +1140 THBOT atmospheric air potential temperature (downscaled to columns in glacier regions) K T +1141 THIC 2 m Temp Hum Index Comfort C T +1142 THIC_R Rural 2 m Temp Hum Index Comfort C T +1143 THIC_U Urban 2 m Temp Hum Index Comfort C T +1144 THIP 2 m Temp Hum Index Physiology C T +1145 THIP_R Rural 2 m Temp Hum Index Physiology C T +1146 THIP_U Urban 2 m Temp Hum Index Physiology C T +1147 TKE1 top lake level eddy thermal conductivity W/(mK) T +1148 TLAI total projected leaf area index m^2/m^2 T +1149 TLAKE lake temperature K T +1150 TOPO_COL column-level topographic height m F +1151 TOPO_COL_ICE column-level topographic height (ice landunits only) m F +1152 TOPO_FORC topograephic height sent to GLC m F +1153 TOPT topt coefficient for VOC calc non F +1154 TOTCOLC total column carbon, incl veg and cpool but excl product pools gC/m^2 T +1155 TOTCOLCH4 total belowground CH4 (0 for non-lake special landunits in the absence of dynamic landunits) gC/m2 T +1156 TOTCOLN total column-level N, excluding product pools gN/m^2 T +1157 TOTECOSYSC total ecosystem carbon, incl veg but excl cpool and product pools gC/m^2 T +1158 TOTECOSYSN total ecosystem N, excluding product pools gN/m^2 T +1159 TOTFIRE total ecosystem fire losses gC/m^2/s F +1160 TOTLITC total litter carbon gC/m^2 T +1161 TOTLITC_1m total litter carbon to 1 meter depth gC/m^2 T +1162 TOTLITN total litter N gN/m^2 T +1163 TOTLITN_1m total litter N to 1 meter gN/m^2 T +1164 TOTPFTC total patch-level carbon, including cpool gC/m^2 T +1165 TOTPFTN total patch-level nitrogen gN/m^2 T +1166 TOTSOILICE vertically summed soil cie (veg landunits only) kg/m2 T +1167 TOTSOILLIQ vertically summed soil liquid water (veg landunits only) kg/m2 T +1168 TOTSOMC total soil organic matter carbon gC/m^2 T +1169 TOTSOMC_1m total soil organic matter carbon to 1 meter depth gC/m^2 T +1170 TOTSOMN total soil organic matter N gN/m^2 T +1171 TOTSOMN_1m total soil organic matter N to 1 meter gN/m^2 T +1172 TOTVEGC total vegetation carbon, excluding cpool gC/m^2 T +1173 TOTVEGN total vegetation nitrogen gN/m^2 T +1174 TOT_WOODPRODC total wood product C gC/m^2 T +1175 TOT_WOODPRODC_LOSS total loss from wood product pools gC/m^2/s T +1176 TOT_WOODPRODN total wood product N gN/m^2 T +1177 TOT_WOODPRODN_LOSS total loss from wood product pools gN/m^2/s T +1178 TPU25T canopy profile of tpu umol/m2/s T +1179 TRAFFICFLUX sensible heat flux from urban traffic W/m^2 F +1180 TRANSFER_DEADCROOT_GR dead coarse root growth respiration from storage gC/m^2/s F +1181 TRANSFER_DEADSTEM_GR dead stem growth respiration from storage gC/m^2/s F +1182 TRANSFER_FROOT_GR fine root growth respiration from storage gC/m^2/s F +1183 TRANSFER_GR growth resp for transfer growth displayed in this timestep gC/m^2/s F +1184 TRANSFER_LEAF_GR leaf growth respiration from storage gC/m^2/s F +1185 TRANSFER_LIVECROOT_GR live coarse root growth respiration from storage gC/m^2/s F +1186 TRANSFER_LIVESTEM_GR live stem growth respiration from storage gC/m^2/s F +1187 TREFMNAV daily minimum of average 2-m temperature K T +1188 TREFMNAV_R Rural daily minimum of average 2-m temperature K F +1189 TREFMNAV_U Urban daily minimum of average 2-m temperature K F +1190 TREFMXAV daily maximum of average 2-m temperature K T +1191 TREFMXAV_R Rural daily maximum of average 2-m temperature K F +1192 TREFMXAV_U Urban daily maximum of average 2-m temperature K F +1193 TROOF_INNER roof inside surface temperature K F +1194 TSA 2m air temperature K T +1195 TSAI total projected stem area index m^2/m^2 T +1196 TSA_ICE 2m air temperature (ice landunits only) K F +1197 TSA_R Rural 2m air temperature K F +1198 TSA_U Urban 2m air temperature K F +1199 TSHDW_INNER shadewall inside surface temperature K F +1200 TSKIN skin temperature K T +1201 TSL temperature of near-surface soil layer (natural vegetated and crop landunits only) K T +1202 TSOI soil temperature (natural vegetated and crop landunits only) K T +1203 TSOI_10CM soil temperature in top 10cm of soil K T +1204 TSOI_ICE soil temperature (ice landunits only) K T +1205 TSRF_FORC surface temperature sent to GLC K F +1206 TSUNW_INNER sunwall inside surface temperature K F +1207 TV vegetation temperature K T +1208 TV24 vegetation temperature (last 24hrs) K F +1209 TV240 vegetation temperature (last 240hrs) K F +1210 TVEGD10 10 day running mean of patch daytime vegetation temperature Kelvin F +1211 TVEGN10 10 day running mean of patch night-time vegetation temperature Kelvin F +1212 TWS total water storage mm T +1213 T_SCALAR temperature inhibition of decomposition unitless T +1214 Tair atmospheric air temperature (downscaled to columns in glacier regions) K F +1215 Tair_from_atm atmospheric air temperature received from atmosphere (pre-downscaling) K F +1216 U10 10-m wind m/s T +1217 U10_DUST 10-m wind for dust model m/s T +1218 U10_ICE 10-m wind (ice landunits only) m/s F +1219 UAF canopy air speed m/s F +1220 ULRAD upward longwave radiation above the canopy W/m^2 F +1221 UM wind speed plus stability effect m/s F +1222 URBAN_AC urban air conditioning flux W/m^2 T +1223 URBAN_HEAT urban heating flux W/m^2 T +1224 USTAR aerodynamical resistance s/m F +1225 UST_LAKE friction velocity (lakes only) m/s F +1226 VA atmospheric wind speed plus convective velocity m/s F +1227 VCMX25T canopy profile of vcmax25 umol/m2/s T +1228 VEGWP vegetation water matric potential for sun/sha canopy,xyl,root segments mm T +1229 VEGWPLN vegetation water matric potential for sun/sha canopy,xyl,root at local noon mm T +1230 VEGWPPD predawn vegetation water matric potential for sun/sha canopy,xyl,root mm T +1231 VOCFLXT total VOC flux into atmosphere moles/m2/sec F +1232 VOLR river channel total water storage m3 T +1233 VOLRMCH river channel main channel water storage m3 T +1234 VPD vpd Pa F +1235 VPD_CAN canopy vapor pressure deficit kPa T +1236 Vcmx25Z canopy profile of vcmax25 predicted by LUNA model umol/m2/s T +1237 WASTEHEAT sensible heat flux from heating/cooling sources of urban waste heat W/m^2 T +1238 WBA 2 m Wet Bulb C T +1239 WBA_R Rural 2 m Wet Bulb C T +1240 WBA_U Urban 2 m Wet Bulb C T +1241 WBT 2 m Stull Wet Bulb C T +1242 WBT_R Rural 2 m Stull Wet Bulb C T +1243 WBT_U Urban 2 m Stull Wet Bulb C T +1244 WF soil water as frac. of whc for top 0.05 m proportion F +1245 WFPS WFPS percent F +1246 WIND atmospheric wind velocity magnitude m/s T +1247 WOODC wood C gC/m^2 T +1248 WOODC_ALLOC wood C eallocation gC/m^2/s T +1249 WOODC_LOSS wood C loss gC/m^2/s T +1250 WOOD_HARVESTC wood harvest carbon (to product pools) gC/m^2/s T +1251 WOOD_HARVESTN wood harvest N (to product pools) gN/m^2/s T +1252 WTGQ surface tracer conductance m/s T +1253 W_SCALAR Moisture (dryness) inhibition of decomposition unitless T +1254 Wind atmospheric wind velocity magnitude m/s F +1255 XSMRPOOL temporary photosynthate C pool gC/m^2 T +1256 XSMRPOOL_LOSS temporary photosynthate C pool loss gC/m^2 F +1257 XSMRPOOL_RECOVER C flux assigned to recovery of negative xsmrpool gC/m^2/s T +1258 Z0HG roughness length over ground, sensible heat m F +1259 Z0HV roughness length over vegetation, sensible heat m F +1260 Z0M momentum roughness length m F +1261 Z0MG roughness length over ground, momentum m F +1262 Z0MV roughness length over vegetation, momentum m F +1263 Z0M_TO_COUPLER roughness length, momentum: gridcell average sent to coupler m F +1264 Z0QG roughness length over ground, latent heat m F +1265 Z0QV roughness length over vegetation, latent heat m F +1266 ZBOT atmospheric reference height m T +1267 ZETA dimensionless stability parameter unitless F +1268 ZII convective boundary height m F +1269 ZWT water table depth (natural vegetated and crop landunits only) m T +1270 ZWT_CH4_UNSAT depth of water table for methane production used in non-inundated area m T +1271 ZWT_PERCH perched water table depth (natural vegetated and crop landunits only) m T +1272 anaerobic_frac anaerobic_frac m3/m3 F +1273 bsw clap and hornberger B unitless F +1274 currentPatch currentPatch coefficient for VOC calc non F +1275 diffus diffusivity m^2/s F +1276 fr_WFPS fr_WFPS fraction F +1277 n2_n2o_ratio_denit n2_n2o_ratio_denit gN/gN F +1278 num_iter number of iterations unitless F +1279 r_psi r_psi m F +1280 ratio_k1 ratio_k1 none F +1281 ratio_no3_co2 ratio_no3_co2 ratio F +1282 soil_bulkdensity soil_bulkdensity kg/m3 F +1283 soil_co2_prod soil_co2_prod ug C / g soil / day F +1284 watfc water field capacity m^3/m^3 F +1285 watsat water saturated m^3/m^3 F ==== =================================== ============================================================================================== ================================================================= ======= From d675faef72bcfb7bdc64667fbb579fb4170fde52 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 29 Jun 2021 20:01:19 -0600 Subject: [PATCH 42/63] Fix #1417 by disregarding check for file for both files that are null or none --- bld/CLMBuildNamelist.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bld/CLMBuildNamelist.pm b/bld/CLMBuildNamelist.pm index 3591c6a3da..d4575c4462 100755 --- a/bld/CLMBuildNamelist.pm +++ b/bld/CLMBuildNamelist.pm @@ -4159,7 +4159,7 @@ sub add_default { } else { if ($is_input_pathname eq 'abs') { $val = set_abs_filepath($val, $inputdata_rootdir); - if ( $test_files and ($val !~ /null/) and (! -f "$val") ) { + if ( $test_files and ($val !~ /null|none/) and (! -f "$val") ) { $log->fatal_error("file not found: $var = $val"); } } From 78f66d7a38fbf795e3aa820eb48a0dff9a129f03 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Tue, 29 Jun 2021 20:11:59 -0600 Subject: [PATCH 43/63] Update changelog --- doc/ChangeLog | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 5d5be5f369..4739f9ec3b 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: ctsm5.1.dev045 Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) -Date: Tue Jun 29 10:21:11 MDT 2021 +Date: Tue Jun 29 20:05:21 MDT 2021 One-line Summary: Include CWD in heterotrophic respiration (HR) Purpose and description of changes @@ -41,12 +41,13 @@ Does this tag change answers significantly for any of the following physics conf Bugs fixed or introduced ------------------------ -Issues fixed (include CTSM Issue #): #1361 - +Issues fixed (include CTSM Issue #): #1361 #1417 + Fixes #1361 -- HR fluxes don't include CWD + Fixes #1417 -- NoAnthro build-namelist test fails Notes of particular relevance for users --------------------------------------- -Substantial timing or memory changes: +Substantial timing or memory changes: None Total 17 MEMCOMP non-passes with the same warning as this one: FAIL PFS_Ld20.f09_g17.I2000Clm50BgcCrop.cheyenne_intel MEMCOMP Error: Memory usage increase > 10% from baseline @@ -68,6 +69,14 @@ Testing summary: [PASS means all tests PASS; OK means tests PASS other than expected fails.] + build-namelist tests (if CLMBuildNamelist.pm has changed): + + cheyenne - OK (2 tests fail compare because of fix in #1417) + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + cheyenne - PASS + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): cheyenne ---- OK From 0b84f8bb316c501714c87bead673271795d7f99a Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Wed, 30 Jun 2021 13:29:27 -0600 Subject: [PATCH 44/63] Small correction to ChangeLog --- doc/ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index bc88aa51eb..560f0607e0 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -212,6 +212,7 @@ Pull Requests that document the changes (include PR ids): =============================================================== =============================================================== +Tag name: ctsm5.1.dev044 Originator(s): mvertens (Mariana Vertenstein) Date: Thu Jun 24 15:59:08 MDT 2021 One-line Summary: New stream functionality when using NUOPC or LILAC From 6447aed13702f1c574ea9215c111857a99856cab Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Thu, 1 Jul 2021 05:57:54 -0600 Subject: [PATCH 45/63] Updating fates temporary test hash, updated default fates parameter file --- Externals_CLM.cfg | 2 +- bld/namelist_files/namelist_defaults_ctsm.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Externals_CLM.cfg b/Externals_CLM.cfg index 8f5d2cf75f..c63135d16e 100644 --- a/Externals_CLM.cfg +++ b/Externals_CLM.cfg @@ -2,7 +2,7 @@ local_path = src/fates protocol = git repo_url = https://github.com/rgknox/fates -hash = dca534e1b29c0afd37bd2d1e32911e47f4372835 +hash = 6ee0d72ddfa1063091b8e8ac60ed1e736465afdb required = True [PTCLM] diff --git a/bld/namelist_files/namelist_defaults_ctsm.xml b/bld/namelist_files/namelist_defaults_ctsm.xml index 873f041c1b..f97121ec56 100644 --- a/bld/namelist_files/namelist_defaults_ctsm.xml +++ b/bld/namelist_files/namelist_defaults_ctsm.xml @@ -491,7 +491,7 @@ attributes from the config_cache.xml file (with keys converted to upper-case). -lnd/clm2/paramdata/fates_params_api.16.1.0_12pft_c210628.nc +lnd/clm2/paramdata/fates_params_api.16.1.0_12pft_c210630.nc From 65a85c97d47c8aa187c8fc5b39da3a2f3848e62d Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 1 Jul 2021 15:03:16 -0600 Subject: [PATCH 46/63] Correction in respose to code review I had assigned passive SOM to soil1 and active SOM to soil3 and should have assigned them the other way around. The correction results in a modified master_list_file.rst. I have rebuilt the official documentation and will push when this PR gets merged. --- .../master_list_file.rst | 1648 ++++++++--------- src/main/clm_varpar.F90 | 2 +- .../SoilBiogeochemDecompCascadeBGCMod.F90 | 94 +- 3 files changed, 872 insertions(+), 872 deletions(-) diff --git a/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst b/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst index f09f879453..0d3eb7e61c 100644 --- a/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst +++ b/doc/source/users_guide/setting-up-and-running-a-case/master_list_file.rst @@ -18,816 +18,816 @@ CTSM History Fields 9 ACT_SOMC_TNDNCY_VERT_TRA active soil organic C tendency due to vertical transport gC/m^3/s F 10 ACT_SOMC_TO_PAS_SOMC decomp. of active soil organic C to passive soil organic C gC/m^2/s F 11 ACT_SOMC_TO_PAS_SOMC_vr decomp. of active soil organic C to passive soil organic C gC/m^3/s F - 12 ACT_SOMC_vr ACT_SOM C (vertically resolved) gC/m^3 T - 13 ACT_SOMN ACT_SOM N gN/m^2 T - 14 ACT_SOMN_1m ACT_SOM N to 1 meter gN/m^2 F - 15 ACT_SOMN_TNDNCY_VERT_TRA active soil organic N tendency due to vertical transport gN/m^3/s F - 16 ACT_SOMN_TO_PAS_SOMN decomp. of active soil organic N to passive soil organic N gN/m^2 F - 17 ACT_SOMN_TO_PAS_SOMN_vr decomp. of active soil organic N to passive soil organic N gN/m^3 F - 18 ACT_SOMN_vr ACT_SOM N (vertically resolved) gN/m^3 T - 19 ACT_SOM_HR Het. Resp. from active soil organic gC/m^2/s F - 20 ACT_SOM_HR_vr Het. Resp. from active soil organic gC/m^3/s F - 21 AGLB Aboveground leaf biomass kg/m^2 F - 22 AGNPP aboveground NPP gC/m^2/s T - 23 AGSB Aboveground stem biomass kg/m^2 F - 24 ALBD surface albedo (direct) proportion T - 25 ALBDSF diagnostic snow-free surface albedo (direct) proportion T - 26 ALBGRD ground albedo (direct) proportion F - 27 ALBGRI ground albedo (indirect) proportion F - 28 ALBI surface albedo (indirect) proportion T - 29 ALBISF diagnostic snow-free surface albedo (indirect) proportion T - 30 ALPHA alpha coefficient for VOC calc non F - 31 ALT current active layer thickness m T - 32 ALTMAX maximum annual active layer thickness m T - 33 ALTMAX_LASTYEAR maximum prior year active layer thickness m F - 34 ANNAVG_T2M annual average 2m air temperature K F - 35 ANNMAX_RETRANSN annual max of retranslocated N pool gN/m^2 F - 36 ANNSUM_COUNTER seconds since last annual accumulator turnover s F - 37 ANNSUM_NPP annual sum of NPP gC/m^2/yr F - 38 ANNSUM_POTENTIAL_GPP annual sum of potential GPP gN/m^2/yr F - 39 APPAR_TEMP 2 m apparent temperature C T - 40 APPAR_TEMP_R Rural 2 m apparent temperature C T - 41 APPAR_TEMP_U Urban 2 m apparent temperature C T - 42 AR autotrophic respiration (MR + GR) gC/m^2/s T - 43 ATM_TOPO atmospheric surface height m T - 44 AVAILC C flux available for allocation gC/m^2/s F - 45 AVAIL_RETRANSN N flux available from retranslocation pool gN/m^2/s F - 46 AnnET Annual ET mm/s F - 47 BAF_CROP fractional area burned for crop s-1 T - 48 BAF_PEATF fractional area burned in peatland s-1 T - 49 BCDEP total BC deposition (dry+wet) from atmosphere kg/m^2/s T - 50 BETA coefficient of convective velocity none F - 51 BGLFR background litterfall rate 1/s F - 52 BGNPP belowground NPP gC/m^2/s T - 53 BGTR background transfer growth rate 1/s F - 54 BTRANMN daily minimum of transpiration beta factor unitless T - 55 CANNAVG_T2M annual average of 2m air temperature K F - 56 CANNSUM_NPP annual sum of column-level NPP gC/m^2/s F - 57 CEL_LITC CEL_LIT C gC/m^2 T - 58 CEL_LITC_1m CEL_LIT C to 1 meter gC/m^2 F - 59 CEL_LITC_TNDNCY_VERT_TRA cellulosic litter C tendency due to vertical transport gC/m^3/s F - 60 CEL_LITC_TO_PAS_SOMC decomp. of cellulosic litter C to passive soil organic C gC/m^2/s F - 61 CEL_LITC_TO_PAS_SOMC_vr decomp. of cellulosic litter C to passive soil organic C gC/m^3/s F - 62 CEL_LITC_vr CEL_LIT C (vertically resolved) gC/m^3 T - 63 CEL_LITN CEL_LIT N gN/m^2 T - 64 CEL_LITN_1m CEL_LIT N to 1 meter gN/m^2 F - 65 CEL_LITN_TNDNCY_VERT_TRA cellulosic litter N tendency due to vertical transport gN/m^3/s F - 66 CEL_LITN_TO_PAS_SOMN decomp. of cellulosic litter N to passive soil organic N gN/m^2 F - 67 CEL_LITN_TO_PAS_SOMN_vr decomp. of cellulosic litter N to passive soil organic N gN/m^3 F - 68 CEL_LITN_vr CEL_LIT N (vertically resolved) gN/m^3 T - 69 CEL_LIT_HR Het. Resp. from cellulosic litter gC/m^2/s F - 70 CEL_LIT_HR_vr Het. Resp. from cellulosic litter gC/m^3/s F - 71 CGRND deriv. of soil energy flux wrt to soil temp W/m^2/K F - 72 CGRNDL deriv. of soil latent heat flux wrt soil temp W/m^2/K F - 73 CGRNDS deriv. of soil sensible heat flux wrt soil temp W/m^2/K F - 74 CH4PROD Gridcell total production of CH4 gC/m2/s T - 75 CH4_EBUL_TOTAL_SAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F - 76 CH4_EBUL_TOTAL_UNSAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F - 77 CH4_SURF_AERE_SAT aerenchyma surface CH4 flux for inundated area; (+ to atm) mol/m2/s T - 78 CH4_SURF_AERE_UNSAT aerenchyma surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T - 79 CH4_SURF_DIFF_SAT diffusive surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T - 80 CH4_SURF_DIFF_UNSAT diffusive surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T - 81 CH4_SURF_EBUL_SAT ebullition surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T - 82 CH4_SURF_EBUL_UNSAT ebullition surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T - 83 COL_CTRUNC column-level sink for C truncation gC/m^2 F - 84 COL_FIRE_CLOSS total column-level fire C loss for non-peat fires outside land-type converted region gC/m^2/s T - 85 COL_FIRE_NLOSS total column-level fire N loss gN/m^2/s T - 86 COL_NTRUNC column-level sink for N truncation gN/m^2 F - 87 CONC_CH4_SAT CH4 soil Concentration for inundated / lake area mol/m3 F - 88 CONC_CH4_UNSAT CH4 soil Concentration for non-inundated area mol/m3 F - 89 CONC_O2_SAT O2 soil Concentration for inundated / lake area mol/m3 T - 90 CONC_O2_UNSAT O2 soil Concentration for non-inundated area mol/m3 T - 91 COST_NACTIVE Cost of active uptake gN/gC T - 92 COST_NFIX Cost of fixation gN/gC T - 93 COST_NRETRANS Cost of retranslocation gN/gC T - 94 COSZEN cosine of solar zenith angle none F - 95 CPHASE crop phenology phase 0-not planted, 1-planted, 2-leaf emerge, 3-grain fill, 4-harvest T - 96 CPOOL temporary photosynthate C pool gC/m^2 T - 97 CPOOL_DEADCROOT_GR dead coarse root growth respiration gC/m^2/s F - 98 CPOOL_DEADCROOT_STORAGE_GR dead coarse root growth respiration to storage gC/m^2/s F - 99 CPOOL_DEADSTEM_GR dead stem growth respiration gC/m^2/s F - 100 CPOOL_DEADSTEM_STORAGE_GR dead stem growth respiration to storage gC/m^2/s F - 101 CPOOL_FROOT_GR fine root growth respiration gC/m^2/s F - 102 CPOOL_FROOT_STORAGE_GR fine root growth respiration to storage gC/m^2/s F - 103 CPOOL_LEAF_GR leaf growth respiration gC/m^2/s F - 104 CPOOL_LEAF_STORAGE_GR leaf growth respiration to storage gC/m^2/s F - 105 CPOOL_LIVECROOT_GR live coarse root growth respiration gC/m^2/s F - 106 CPOOL_LIVECROOT_STORAGE_GR live coarse root growth respiration to storage gC/m^2/s F - 107 CPOOL_LIVESTEM_GR live stem growth respiration gC/m^2/s F - 108 CPOOL_LIVESTEM_STORAGE_GR live stem growth respiration to storage gC/m^2/s F - 109 CPOOL_TO_DEADCROOTC allocation to dead coarse root C gC/m^2/s F - 110 CPOOL_TO_DEADCROOTC_STORAGE allocation to dead coarse root C storage gC/m^2/s F - 111 CPOOL_TO_DEADSTEMC allocation to dead stem C gC/m^2/s F - 112 CPOOL_TO_DEADSTEMC_STORAGE allocation to dead stem C storage gC/m^2/s F - 113 CPOOL_TO_FROOTC allocation to fine root C gC/m^2/s F - 114 CPOOL_TO_FROOTC_STORAGE allocation to fine root C storage gC/m^2/s F - 115 CPOOL_TO_GRESP_STORAGE allocation to growth respiration storage gC/m^2/s F - 116 CPOOL_TO_LEAFC allocation to leaf C gC/m^2/s F - 117 CPOOL_TO_LEAFC_STORAGE allocation to leaf C storage gC/m^2/s F - 118 CPOOL_TO_LIVECROOTC allocation to live coarse root C gC/m^2/s F - 119 CPOOL_TO_LIVECROOTC_STORAGE allocation to live coarse root C storage gC/m^2/s F - 120 CPOOL_TO_LIVESTEMC allocation to live stem C gC/m^2/s F - 121 CPOOL_TO_LIVESTEMC_STORAGE allocation to live stem C storage gC/m^2/s F - 122 CROOT_PROF profile for litter C and N inputs from coarse roots 1/m F - 123 CROPPROD1C 1-yr crop product (grain+biofuel) C gC/m^2 T - 124 CROPPROD1C_LOSS loss from 1-yr crop product pool gC/m^2/s T - 125 CROPPROD1N 1-yr crop product (grain+biofuel) N gN/m^2 T - 126 CROPPROD1N_LOSS loss from 1-yr crop product pool gN/m^2/s T - 127 CROPSEEDC_DEFICIT C used for crop seed that needs to be repaid gC/m^2 T - 128 CROPSEEDN_DEFICIT N used for crop seed that needs to be repaid gN/m^2 F - 129 CROP_SEEDC_TO_LEAF crop seed source to leaf gC/m^2/s F - 130 CROP_SEEDN_TO_LEAF crop seed source to leaf gN/m^2/s F - 131 CURRENT_GR growth resp for new growth displayed in this timestep gC/m^2/s F - 132 CWDC CWD C gC/m^2 T - 133 CWDC_1m CWD C to 1 meter gC/m^2 F - 134 CWDC_HR cwd C heterotrophic respiration gC/m^2/s F - 135 CWDC_LOSS coarse woody debris C loss gC/m^2/s T - 136 CWDC_TO_CEL_LITC decomp. of coarse woody debris C to cellulosic litter C gC/m^2/s F - 137 CWDC_TO_CEL_LITC_vr decomp. of coarse woody debris C to cellulosic litter C gC/m^3/s F - 138 CWDC_TO_LIG_LITC decomp. of coarse woody debris C to lignin litter C gC/m^2/s F - 139 CWDC_TO_LIG_LITC_vr decomp. of coarse woody debris C to lignin litter C gC/m^3/s F - 140 CWDC_vr CWD C (vertically resolved) gC/m^3 T - 141 CWDN CWD N gN/m^2 T - 142 CWDN_1m CWD N to 1 meter gN/m^2 F - 143 CWDN_TO_CEL_LITN decomp. of coarse woody debris N to cellulosic litter N gN/m^2 F - 144 CWDN_TO_CEL_LITN_vr decomp. of coarse woody debris N to cellulosic litter N gN/m^3 F - 145 CWDN_TO_LIG_LITN decomp. of coarse woody debris N to lignin litter N gN/m^2 F - 146 CWDN_TO_LIG_LITN_vr decomp. of coarse woody debris N to lignin litter N gN/m^3 F - 147 CWDN_vr CWD N (vertically resolved) gN/m^3 T - 148 CWD_HR_L2 Het. Resp. from coarse woody debris gC/m^2/s F - 149 CWD_HR_L2_vr Het. Resp. from coarse woody debris gC/m^3/s F - 150 CWD_HR_L3 Het. Resp. from coarse woody debris gC/m^2/s F - 151 CWD_HR_L3_vr Het. Resp. from coarse woody debris gC/m^3/s F - 152 C_ALLOMETRY C allocation index none F - 153 DAYL daylength s F - 154 DAYS_ACTIVE number of days since last dormancy days F - 155 DEADCROOTC dead coarse root C gC/m^2 T - 156 DEADCROOTC_STORAGE dead coarse root C storage gC/m^2 F - 157 DEADCROOTC_STORAGE_TO_XFER dead coarse root C shift storage to transfer gC/m^2/s F - 158 DEADCROOTC_XFER dead coarse root C transfer gC/m^2 F - 159 DEADCROOTC_XFER_TO_DEADCROOTC dead coarse root C growth from storage gC/m^2/s F - 160 DEADCROOTN dead coarse root N gN/m^2 T - 161 DEADCROOTN_STORAGE dead coarse root N storage gN/m^2 F - 162 DEADCROOTN_STORAGE_TO_XFER dead coarse root N shift storage to transfer gN/m^2/s F - 163 DEADCROOTN_XFER dead coarse root N transfer gN/m^2 F - 164 DEADCROOTN_XFER_TO_DEADCROOTN dead coarse root N growth from storage gN/m^2/s F - 165 DEADSTEMC dead stem C gC/m^2 T - 166 DEADSTEMC_STORAGE dead stem C storage gC/m^2 F - 167 DEADSTEMC_STORAGE_TO_XFER dead stem C shift storage to transfer gC/m^2/s F - 168 DEADSTEMC_XFER dead stem C transfer gC/m^2 F - 169 DEADSTEMC_XFER_TO_DEADSTEMC dead stem C growth from storage gC/m^2/s F - 170 DEADSTEMN dead stem N gN/m^2 T - 171 DEADSTEMN_STORAGE dead stem N storage gN/m^2 F - 172 DEADSTEMN_STORAGE_TO_XFER dead stem N shift storage to transfer gN/m^2/s F - 173 DEADSTEMN_XFER dead stem N transfer gN/m^2 F - 174 DEADSTEMN_XFER_TO_DEADSTEMN dead stem N growth from storage gN/m^2/s F - 175 DENIT total rate of denitrification gN/m^2/s T - 176 DGNETDT derivative of net ground heat flux wrt soil temp W/m^2/K F - 177 DISCOI 2 m Discomfort Index C T - 178 DISCOIS 2 m Stull Discomfort Index C T - 179 DISCOIS_R Rural 2 m Stull Discomfort Index C T - 180 DISCOIS_U Urban 2 m Stull Discomfort Index C T - 181 DISCOI_R Rural 2 m Discomfort Index C T - 182 DISCOI_U Urban 2 m Discomfort Index C T - 183 DISPLA displacement height m F - 184 DISPVEGC displayed veg carbon, excluding storage and cpool gC/m^2 T - 185 DISPVEGN displayed vegetation nitrogen gN/m^2 T - 186 DLRAD downward longwave radiation below the canopy W/m^2 F - 187 DORMANT_FLAG dormancy flag none F - 188 DOWNREG fractional reduction in GPP due to N limitation proportion F - 189 DPVLTRB1 turbulent deposition velocity 1 m/s F - 190 DPVLTRB2 turbulent deposition velocity 2 m/s F - 191 DPVLTRB3 turbulent deposition velocity 3 m/s F - 192 DPVLTRB4 turbulent deposition velocity 4 m/s F - 193 DSL dry surface layer thickness mm T - 194 DSTDEP total dust deposition (dry+wet) from atmosphere kg/m^2/s T - 195 DSTFLXT total surface dust emission kg/m2/s T - 196 DT_VEG change in t_veg, last iteration K F - 197 DWT_CONV_CFLUX conversion C flux (immediate loss to atm) (0 at all times except first timestep of year) gC/m^2/s T - 198 DWT_CONV_CFLUX_DRIBBLED conversion C flux (immediate loss to atm), dribbled throughout the year gC/m^2/s T - 199 DWT_CONV_CFLUX_PATCH patch-level conversion C flux (immediate loss to atm) (0 at all times except first timestep of gC/m^2/s F - 200 DWT_CONV_NFLUX conversion N flux (immediate loss to atm) (0 at all times except first timestep of year) gN/m^2/s T - 201 DWT_CONV_NFLUX_PATCH patch-level conversion N flux (immediate loss to atm) (0 at all times except first timestep of gN/m^2/s F - 202 DWT_CROPPROD1C_GAIN landcover change-driven addition to 1-year crop product pool gC/m^2/s T - 203 DWT_CROPPROD1N_GAIN landcover change-driven addition to 1-year crop product pool gN/m^2/s T - 204 DWT_DEADCROOTC_TO_CWDC dead coarse root to CWD due to landcover change gC/m^2/s F - 205 DWT_DEADCROOTN_TO_CWDN dead coarse root to CWD due to landcover change gN/m^2/s F - 206 DWT_FROOTC_TO_CEL_LIT_C fine root to cellulosic litter due to landcover change gC/m^2/s F - 207 DWT_FROOTC_TO_LIG_LIT_C fine root to lignin litter due to landcover change gC/m^2/s F - 208 DWT_FROOTC_TO_MET_LIT_C fine root to metabolic litter due to landcover change gC/m^2/s F - 209 DWT_FROOTN_TO_CEL_LIT_N fine root N to cellulosic litter due to landcover change gN/m^2/s F - 210 DWT_FROOTN_TO_LIG_LIT_N fine root N to lignin litter due to landcover change gN/m^2/s F - 211 DWT_FROOTN_TO_MET_LIT_N fine root N to metabolic litter due to landcover change gN/m^2/s F - 212 DWT_LIVECROOTC_TO_CWDC live coarse root to CWD due to landcover change gC/m^2/s F - 213 DWT_LIVECROOTN_TO_CWDN live coarse root to CWD due to landcover change gN/m^2/s F - 214 DWT_PROD100C_GAIN landcover change-driven addition to 100-yr wood product pool gC/m^2/s F - 215 DWT_PROD100N_GAIN landcover change-driven addition to 100-yr wood product pool gN/m^2/s F - 216 DWT_PROD10C_GAIN landcover change-driven addition to 10-yr wood product pool gC/m^2/s F - 217 DWT_PROD10N_GAIN landcover change-driven addition to 10-yr wood product pool gN/m^2/s F - 218 DWT_SEEDC_TO_DEADSTEM seed source to patch-level deadstem gC/m^2/s F - 219 DWT_SEEDC_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gC/m^2/s F - 220 DWT_SEEDC_TO_LEAF seed source to patch-level leaf gC/m^2/s F - 221 DWT_SEEDC_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gC/m^2/s F - 222 DWT_SEEDN_TO_DEADSTEM seed source to patch-level deadstem gN/m^2/s T - 223 DWT_SEEDN_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gN/m^2/s F - 224 DWT_SEEDN_TO_LEAF seed source to patch-level leaf gN/m^2/s T - 225 DWT_SEEDN_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gN/m^2/s F - 226 DWT_SLASH_CFLUX slash C flux (to litter diagnostic only) (0 at all times except first timestep of year) gC/m^2/s T - 227 DWT_SLASH_CFLUX_PATCH patch-level slash C flux (to litter diagnostic only) (0 at all times except first timestep of gC/m^2/s F - 228 DWT_WOODPRODC_GAIN landcover change-driven addition to wood product pools gC/m^2/s T - 229 DWT_WOODPRODN_GAIN landcover change-driven addition to wood product pools gN/m^2/s T - 230 DWT_WOOD_PRODUCTC_GAIN_PATCH patch-level landcover change-driven addition to wood product pools(0 at all times except first gC/m^2/s F - 231 DYN_COL_ADJUSTMENTS_CH4 Adjustments in ch4 due to dynamic column areas; only makes sense at the column level: should n gC/m^2 F - 232 DYN_COL_SOIL_ADJUSTMENTS_C Adjustments in soil carbon due to dynamic column areas; only makes sense at the column level: gC/m^2 F - 233 DYN_COL_SOIL_ADJUSTMENTS_N Adjustments in soil nitrogen due to dynamic column areas; only makes sense at the column level gN/m^2 F - 234 DYN_COL_SOIL_ADJUSTMENTS_NH4 Adjustments in soil NH4 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F - 235 DYN_COL_SOIL_ADJUSTMENTS_NO3 Adjustments in soil NO3 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F - 236 EFF_POROSITY effective porosity = porosity - vol_ice proportion F - 237 EFLXBUILD building heat flux from change in interior building air temperature W/m^2 T - 238 EFLX_DYNBAL dynamic land cover change conversion energy flux W/m^2 T - 239 EFLX_GNET net heat flux into ground W/m^2 F - 240 EFLX_GRND_LAKE net heat flux into lake/snow surface, excluding light transmission W/m^2 T - 241 EFLX_LH_TOT total latent heat flux [+ to atm] W/m^2 T - 242 EFLX_LH_TOT_ICE total latent heat flux [+ to atm] (ice landunits only) W/m^2 F - 243 EFLX_LH_TOT_R Rural total evaporation W/m^2 T - 244 EFLX_LH_TOT_U Urban total evaporation W/m^2 F - 245 EFLX_SOIL_GRND soil heat flux [+ into soil] W/m^2 F - 246 ELAI exposed one-sided leaf area index m^2/m^2 T - 247 EMG ground emissivity proportion F - 248 EMV vegetation emissivity proportion F - 249 EOPT Eopt coefficient for VOC calc non F - 250 EPT 2 m Equiv Pot Temp K T - 251 EPT_R Rural 2 m Equiv Pot Temp K T - 252 EPT_U Urban 2 m Equiv Pot Temp K T - 253 ER total ecosystem respiration, autotrophic + heterotrophic gC/m^2/s T - 254 ERRH2O total water conservation error mm T - 255 ERRH2OSNO imbalance in snow depth (liquid water) mm T - 256 ERRSEB surface energy conservation error W/m^2 T - 257 ERRSOI soil/lake energy conservation error W/m^2 T - 258 ERRSOL solar radiation conservation error W/m^2 T - 259 ESAI exposed one-sided stem area index m^2/m^2 T - 260 EXCESSC_MR excess C maintenance respiration gC/m^2/s F - 261 EXCESS_CFLUX C flux not allocated due to downregulation gC/m^2/s F - 262 FAREA_BURNED timestep fractional area burned s-1 T - 263 FCANSNO fraction of canopy that is wet proportion F - 264 FCEV canopy evaporation W/m^2 T - 265 FCH4 Gridcell surface CH4 flux to atmosphere (+ to atm) kgC/m2/s T - 266 FCH4TOCO2 Gridcell oxidation of CH4 to CO2 gC/m2/s T - 267 FCH4_DFSAT CH4 additional flux due to changing fsat, natural vegetated and crop landunits only kgC/m2/s T - 268 FCO2 CO2 flux to atmosphere (+ to atm) kgCO2/m2/s F - 269 FCOV fractional impermeable area unitless T - 270 FCTR canopy transpiration W/m^2 T - 271 FDRY fraction of foliage that is green and dry proportion F - 272 FERTNITRO Nitrogen fertilizer for each crop gN/m2/yr F - 273 FERT_COUNTER time left to fertilize seconds F - 274 FERT_TO_SMINN fertilizer to soil mineral N gN/m^2/s F - 275 FFIX_TO_SMINN free living N fixation to soil mineral N gN/m^2/s T - 276 FGEV ground evaporation W/m^2 T - 277 FGR heat flux into soil/snow including snow melt and lake / snow light transmission W/m^2 T - 278 FGR12 heat flux between soil layers 1 and 2 W/m^2 T - 279 FGR_ICE heat flux into soil/snow including snow melt and lake / snow light transmission (ice landunits W/m^2 F - 280 FGR_R Rural heat flux into soil/snow including snow melt and snow light transmission W/m^2 F - 281 FGR_SOIL_R Rural downward heat flux at interface below each soil layer watt/m^2 F - 282 FGR_U Urban heat flux into soil/snow including snow melt W/m^2 F - 283 FH2OSFC fraction of ground covered by surface water unitless T - 284 FH2OSFC_NOSNOW fraction of ground covered by surface water (if no snow present) unitless F - 285 FINUNDATED fractional inundated area of vegetated columns unitless T - 286 FINUNDATED_LAG time-lagged inundated fraction of vegetated columns unitless F - 287 FIRA net infrared (longwave) radiation W/m^2 T - 288 FIRA_ICE net infrared (longwave) radiation (ice landunits only) W/m^2 F - 289 FIRA_R Rural net infrared (longwave) radiation W/m^2 T - 290 FIRA_U Urban net infrared (longwave) radiation W/m^2 F - 291 FIRE emitted infrared (longwave) radiation W/m^2 T - 292 FIRE_ICE emitted infrared (longwave) radiation (ice landunits only) W/m^2 F - 293 FIRE_R Rural emitted infrared (longwave) radiation W/m^2 T - 294 FIRE_U Urban emitted infrared (longwave) radiation W/m^2 F - 295 FLDS atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 T - 296 FLDS_ICE atmospheric longwave radiation (downscaled to columns in glacier regions) (ice landunits only) W/m^2 F - 297 FMAX_DENIT_CARBONSUBSTRATE FMAX_DENIT_CARBONSUBSTRATE gN/m^3/s F - 298 FMAX_DENIT_NITRATE FMAX_DENIT_NITRATE gN/m^3/s F - 299 FPI fraction of potential immobilization proportion T - 300 FPI_vr fraction of potential immobilization proportion F - 301 FPSN photosynthesis umol m-2 s-1 T - 302 FPSN24 24 hour accumulative patch photosynthesis starting from mid-night umol CO2/m^2 ground/day F - 303 FPSN_WC Rubisco-limited photosynthesis umol m-2 s-1 F - 304 FPSN_WJ RuBP-limited photosynthesis umol m-2 s-1 F - 305 FPSN_WP Product-limited photosynthesis umol m-2 s-1 F - 306 FRAC_ICEOLD fraction of ice relative to the tot water proportion F - 307 FREE_RETRANSN_TO_NPOOL deployment of retranslocated N gN/m^2/s T - 308 FROOTC fine root C gC/m^2 T - 309 FROOTC_ALLOC fine root C allocation gC/m^2/s T - 310 FROOTC_LOSS fine root C loss gC/m^2/s T - 311 FROOTC_STORAGE fine root C storage gC/m^2 F - 312 FROOTC_STORAGE_TO_XFER fine root C shift storage to transfer gC/m^2/s F - 313 FROOTC_TO_LITTER fine root C litterfall gC/m^2/s F - 314 FROOTC_XFER fine root C transfer gC/m^2 F - 315 FROOTC_XFER_TO_FROOTC fine root C growth from storage gC/m^2/s F - 316 FROOTN fine root N gN/m^2 T - 317 FROOTN_STORAGE fine root N storage gN/m^2 F - 318 FROOTN_STORAGE_TO_XFER fine root N shift storage to transfer gN/m^2/s F - 319 FROOTN_TO_LITTER fine root N litterfall gN/m^2/s F - 320 FROOTN_XFER fine root N transfer gN/m^2 F - 321 FROOTN_XFER_TO_FROOTN fine root N growth from storage gN/m^2/s F - 322 FROOT_MR fine root maintenance respiration gC/m^2/s F - 323 FROOT_PROF profile for litter C and N inputs from fine roots 1/m F - 324 FROST_TABLE frost table depth (natural vegetated and crop landunits only) m F - 325 FSA absorbed solar radiation W/m^2 T - 326 FSAT fractional area with water table at surface unitless T - 327 FSA_ICE absorbed solar radiation (ice landunits only) W/m^2 F - 328 FSA_R Rural absorbed solar radiation W/m^2 F - 329 FSA_U Urban absorbed solar radiation W/m^2 F - 330 FSD24 direct radiation (last 24hrs) K F - 331 FSD240 direct radiation (last 240hrs) K F - 332 FSDS atmospheric incident solar radiation W/m^2 T - 333 FSDSND direct nir incident solar radiation W/m^2 T - 334 FSDSNDLN direct nir incident solar radiation at local noon W/m^2 T - 335 FSDSNI diffuse nir incident solar radiation W/m^2 T - 336 FSDSVD direct vis incident solar radiation W/m^2 T - 337 FSDSVDLN direct vis incident solar radiation at local noon W/m^2 T - 338 FSDSVI diffuse vis incident solar radiation W/m^2 T - 339 FSDSVILN diffuse vis incident solar radiation at local noon W/m^2 T - 340 FSH sensible heat not including correction for land use change and rain/snow conversion W/m^2 T - 341 FSH_G sensible heat from ground W/m^2 T - 342 FSH_ICE sensible heat not including correction for land use change and rain/snow conversion (ice landu W/m^2 F - 343 FSH_PRECIP_CONVERSION Sensible heat flux from conversion of rain/snow atm forcing W/m^2 T - 344 FSH_R Rural sensible heat W/m^2 T - 345 FSH_RUNOFF_ICE_TO_LIQ sensible heat flux generated from conversion of ice runoff to liquid W/m^2 T - 346 FSH_TO_COUPLER sensible heat sent to coupler (includes corrections for land use change, rain/snow conversion W/m^2 T - 347 FSH_U Urban sensible heat W/m^2 F - 348 FSH_V sensible heat from veg W/m^2 T - 349 FSI24 indirect radiation (last 24hrs) K F - 350 FSI240 indirect radiation (last 240hrs) K F - 351 FSM snow melt heat flux W/m^2 T - 352 FSM_ICE snow melt heat flux (ice landunits only) W/m^2 F - 353 FSM_R Rural snow melt heat flux W/m^2 F - 354 FSM_U Urban snow melt heat flux W/m^2 F - 355 FSNO fraction of ground covered by snow unitless T - 356 FSNO_EFF effective fraction of ground covered by snow unitless T - 357 FSNO_ICE fraction of ground covered by snow (ice landunits only) unitless F - 358 FSR reflected solar radiation W/m^2 T - 359 FSRND direct nir reflected solar radiation W/m^2 T - 360 FSRNDLN direct nir reflected solar radiation at local noon W/m^2 T - 361 FSRNI diffuse nir reflected solar radiation W/m^2 T - 362 FSRSF reflected solar radiation W/m^2 T - 363 FSRSFND direct nir reflected solar radiation W/m^2 T - 364 FSRSFNDLN direct nir reflected solar radiation at local noon W/m^2 T - 365 FSRSFNI diffuse nir reflected solar radiation W/m^2 T - 366 FSRSFVD direct vis reflected solar radiation W/m^2 T - 367 FSRSFVDLN direct vis reflected solar radiation at local noon W/m^2 T - 368 FSRSFVI diffuse vis reflected solar radiation W/m^2 T - 369 FSRVD direct vis reflected solar radiation W/m^2 T - 370 FSRVDLN direct vis reflected solar radiation at local noon W/m^2 T - 371 FSRVI diffuse vis reflected solar radiation W/m^2 T - 372 FSR_ICE reflected solar radiation (ice landunits only) W/m^2 F - 373 FSUN sunlit fraction of canopy proportion F - 374 FSUN24 fraction sunlit (last 24hrs) K F - 375 FSUN240 fraction sunlit (last 240hrs) K F - 376 FUELC fuel load gC/m^2 T - 377 FV friction velocity for dust model m/s F - 378 FWET fraction of canopy that is wet proportion F - 379 F_DENIT denitrification flux gN/m^2/s T - 380 F_DENIT_BASE F_DENIT_BASE gN/m^3/s F - 381 F_DENIT_vr denitrification flux gN/m^3/s F - 382 F_N2O_DENIT denitrification N2O flux gN/m^2/s T - 383 F_N2O_NIT nitrification N2O flux gN/m^2/s T - 384 F_NIT nitrification flux gN/m^2/s T - 385 F_NIT_vr nitrification flux gN/m^3/s F - 386 FireComp_BC fire emissions flux of BC kg/m2/sec F - 387 FireComp_OC fire emissions flux of OC kg/m2/sec F - 388 FireComp_SO2 fire emissions flux of SO2 kg/m2/sec F - 389 FireEmis_TOT Total fire emissions flux gC/m2/sec F - 390 FireEmis_ZTOP Top of vertical fire emissions distribution m F - 391 FireMech_SO2 fire emissions flux of SO2 kg/m2/sec F - 392 FireMech_bc_a1 fire emissions flux of bc_a1 kg/m2/sec F - 393 FireMech_pom_a1 fire emissions flux of pom_a1 kg/m2/sec F - 394 GAMMA total gamma for VOC calc non F - 395 GAMMAA gamma A for VOC calc non F - 396 GAMMAC gamma C for VOC calc non F - 397 GAMMAL gamma L for VOC calc non F - 398 GAMMAP gamma P for VOC calc non F - 399 GAMMAS gamma S for VOC calc non F - 400 GAMMAT gamma T for VOC calc non F - 401 GDD0 Growing degree days base 0C from planting ddays F - 402 GDD020 Twenty year average of growing degree days base 0C from planting ddays F - 403 GDD10 Growing degree days base 10C from planting ddays F - 404 GDD1020 Twenty year average of growing degree days base 10C from planting ddays F - 405 GDD8 Growing degree days base 8C from planting ddays F - 406 GDD820 Twenty year average of growing degree days base 8C from planting ddays F - 407 GDDHARV Growing degree days (gdd) needed to harvest ddays F - 408 GDDPLANT Accumulated growing degree days past planting date for crop ddays F - 409 GDDTSOI Growing degree-days from planting (top two soil layers) ddays F - 410 GPP gross primary production gC/m^2/s T - 411 GR total growth respiration gC/m^2/s T - 412 GRAINC grain C (does not equal yield) gC/m^2 T - 413 GRAINC_TO_FOOD grain C to food gC/m^2/s T - 414 GRAINC_TO_SEED grain C to seed gC/m^2/s T - 415 GRAINN grain N gN/m^2 T - 416 GRESP_STORAGE growth respiration storage gC/m^2 F - 417 GRESP_STORAGE_TO_XFER growth respiration shift storage to transfer gC/m^2/s F - 418 GRESP_XFER growth respiration transfer gC/m^2 F - 419 GROSS_NMIN gross rate of N mineralization gN/m^2/s T - 420 GROSS_NMIN_vr gross rate of N mineralization gN/m^3/s F - 421 GSSHA shaded leaf stomatal conductance umol H20/m2/s T - 422 GSSHALN shaded leaf stomatal conductance at local noon umol H20/m2/s T - 423 GSSUN sunlit leaf stomatal conductance umol H20/m2/s T - 424 GSSUNLN sunlit leaf stomatal conductance at local noon umol H20/m2/s T - 425 H2OCAN intercepted water mm T - 426 H2OSFC surface water depth mm T - 427 H2OSNO snow depth (liquid water) mm T - 428 H2OSNO_ICE snow depth (liquid water, ice landunits only) mm F - 429 H2OSNO_TOP mass of snow in top snow layer kg/m2 T - 430 H2OSOI volumetric soil water (natural vegetated and crop landunits only) mm3/mm3 T - 431 HBOT canopy bottom m F - 432 HEAT_CONTENT1 initial gridcell total heat content J/m^2 T - 433 HEAT_CONTENT1_VEG initial gridcell total heat content - natural vegetated and crop landunits only J/m^2 F - 434 HEAT_CONTENT2 post land cover change total heat content J/m^2 F - 435 HEAT_FROM_AC sensible heat flux put into canyon due to heat removed from air conditioning W/m^2 T - 436 HIA 2 m NWS Heat Index C T - 437 HIA_R Rural 2 m NWS Heat Index C T - 438 HIA_U Urban 2 m NWS Heat Index C T - 439 HK hydraulic conductivity (natural vegetated and crop landunits only) mm/s F - 440 HR total heterotrophic respiration gC/m^2/s T - 441 HR_vr total vertically resolved heterotrophic respiration gC/m^3/s T - 442 HTOP canopy top m T - 443 HUMIDEX 2 m Humidex C T - 444 HUMIDEX_R Rural 2 m Humidex C T - 445 HUMIDEX_U Urban 2 m Humidex C T - 446 ICE_CONTENT1 initial gridcell total ice content mm T - 447 ICE_CONTENT2 post land cover change total ice content mm F - 448 ICE_MODEL_FRACTION Ice sheet model fractional coverage unitless F - 449 INIT_GPP GPP flux before downregulation gC/m^2/s F - 450 INT_SNOW accumulated swe (natural vegetated and crop landunits only) mm F - 451 INT_SNOW_ICE accumulated swe (ice landunits only) mm F - 452 JMX25T canopy profile of jmax umol/m2/s T - 453 Jmx25Z maximum rate of electron transport at 25 Celcius for canopy layers umol electrons/m2/s T - 454 KROOT root conductance each soil layer 1/s F - 455 KSOIL soil conductance in each soil layer 1/s F - 456 K_ACT_SOM active soil organic potential loss coefficient 1/s F - 457 K_CEL_LIT cellulosic litter potential loss coefficient 1/s F - 458 K_CWD coarse woody debris potential loss coefficient 1/s F - 459 K_LIG_LIT lignin litter potential loss coefficient 1/s F - 460 K_MET_LIT metabolic litter potential loss coefficient 1/s F - 461 K_NITR K_NITR 1/s F - 462 K_NITR_H2O K_NITR_H2O unitless F - 463 K_NITR_PH K_NITR_PH unitless F - 464 K_NITR_T K_NITR_T unitless F - 465 K_PAS_SOM passive soil organic potential loss coefficient 1/s F - 466 K_SLO_SOM slow soil organic ma potential loss coefficient 1/s F - 467 LAI240 240hr average of leaf area index m^2/m^2 F - 468 LAISHA shaded projected leaf area index m^2/m^2 T - 469 LAISUN sunlit projected leaf area index m^2/m^2 T - 470 LAKEICEFRAC lake layer ice mass fraction unitless F - 471 LAKEICEFRAC_SURF surface lake layer ice mass fraction unitless T - 472 LAKEICETHICK thickness of lake ice (including physical expansion on freezing) m T - 473 LAND_USE_FLUX total C emitted from land cover conversion (smoothed over the year) and wood and grain product gC/m^2/s T - 474 LATBASET latitude vary base temperature for gddplant degree C F - 475 LEAFC leaf C gC/m^2 T - 476 LEAFCN Leaf CN ratio used for flexible CN gC/gN T - 477 LEAFCN_OFFSET Leaf C:N used by FUN unitless F - 478 LEAFCN_STORAGE Storage Leaf CN ratio used for flexible CN gC/gN F - 479 LEAFC_ALLOC leaf C allocation gC/m^2/s T - 480 LEAFC_CHANGE C change in leaf gC/m^2/s T - 481 LEAFC_LOSS leaf C loss gC/m^2/s T - 482 LEAFC_STORAGE leaf C storage gC/m^2 F - 483 LEAFC_STORAGE_TO_XFER leaf C shift storage to transfer gC/m^2/s F - 484 LEAFC_STORAGE_XFER_ACC Accumulated leaf C transfer gC/m^2 F - 485 LEAFC_TO_BIOFUELC leaf C to biofuel C gC/m^2/s T - 486 LEAFC_TO_LITTER leaf C litterfall gC/m^2/s F - 487 LEAFC_TO_LITTER_FUN leaf C litterfall used by FUN gC/m^2/s T - 488 LEAFC_XFER leaf C transfer gC/m^2 F - 489 LEAFC_XFER_TO_LEAFC leaf C growth from storage gC/m^2/s F - 490 LEAFN leaf N gN/m^2 T - 491 LEAFN_STORAGE leaf N storage gN/m^2 F - 492 LEAFN_STORAGE_TO_XFER leaf N shift storage to transfer gN/m^2/s F - 493 LEAFN_STORAGE_XFER_ACC Accmulated leaf N transfer gN/m^2 F - 494 LEAFN_TO_LITTER leaf N litterfall gN/m^2/s T - 495 LEAFN_TO_RETRANSN leaf N to retranslocated N pool gN/m^2/s F - 496 LEAFN_XFER leaf N transfer gN/m^2 F - 497 LEAFN_XFER_TO_LEAFN leaf N growth from storage gN/m^2/s F - 498 LEAF_MR leaf maintenance respiration gC/m^2/s T - 499 LEAF_PROF profile for litter C and N inputs from leaves 1/m F - 500 LFC2 conversion area fraction of BET and BDT that burned per sec T - 501 LGSF long growing season factor proportion F - 502 LIG_LITC LIG_LIT C gC/m^2 T - 503 LIG_LITC_1m LIG_LIT C to 1 meter gC/m^2 F - 504 LIG_LITC_TNDNCY_VERT_TRA lignin litter C tendency due to vertical transport gC/m^3/s F - 505 LIG_LITC_TO_SLO_SOMC decomp. of lignin litter C to slow soil organic ma C gC/m^2/s F - 506 LIG_LITC_TO_SLO_SOMC_vr decomp. of lignin litter C to slow soil organic ma C gC/m^3/s F - 507 LIG_LITC_vr LIG_LIT C (vertically resolved) gC/m^3 T - 508 LIG_LITN LIG_LIT N gN/m^2 T - 509 LIG_LITN_1m LIG_LIT N to 1 meter gN/m^2 F - 510 LIG_LITN_TNDNCY_VERT_TRA lignin litter N tendency due to vertical transport gN/m^3/s F - 511 LIG_LITN_TO_SLO_SOMN decomp. of lignin litter N to slow soil organic ma N gN/m^2 F - 512 LIG_LITN_TO_SLO_SOMN_vr decomp. of lignin litter N to slow soil organic ma N gN/m^3 F - 513 LIG_LITN_vr LIG_LIT N (vertically resolved) gN/m^3 T - 514 LIG_LIT_HR Het. Resp. from lignin litter gC/m^2/s F - 515 LIG_LIT_HR_vr Het. Resp. from lignin litter gC/m^3/s F - 516 LIQCAN intercepted liquid water mm T - 517 LIQUID_CONTENT1 initial gridcell total liq content mm T - 518 LIQUID_CONTENT2 post landuse change gridcell total liq content mm F - 519 LIQUID_WATER_TEMP1 initial gridcell weighted average liquid water temperature K F - 520 LITFALL litterfall (leaves and fine roots) gC/m^2/s T - 521 LITFIRE litter fire losses gC/m^2/s F - 522 LITTERC_HR litter C heterotrophic respiration gC/m^2/s T - 523 LITTERC_LOSS litter C loss gC/m^2/s T - 524 LIVECROOTC live coarse root C gC/m^2 T - 525 LIVECROOTC_STORAGE live coarse root C storage gC/m^2 F - 526 LIVECROOTC_STORAGE_TO_XFER live coarse root C shift storage to transfer gC/m^2/s F - 527 LIVECROOTC_TO_DEADCROOTC live coarse root C turnover gC/m^2/s F - 528 LIVECROOTC_XFER live coarse root C transfer gC/m^2 F - 529 LIVECROOTC_XFER_TO_LIVECROOTC live coarse root C growth from storage gC/m^2/s F - 530 LIVECROOTN live coarse root N gN/m^2 T - 531 LIVECROOTN_STORAGE live coarse root N storage gN/m^2 F - 532 LIVECROOTN_STORAGE_TO_XFER live coarse root N shift storage to transfer gN/m^2/s F - 533 LIVECROOTN_TO_DEADCROOTN live coarse root N turnover gN/m^2/s F - 534 LIVECROOTN_TO_RETRANSN live coarse root N to retranslocated N pool gN/m^2/s F - 535 LIVECROOTN_XFER live coarse root N transfer gN/m^2 F - 536 LIVECROOTN_XFER_TO_LIVECROOTN live coarse root N growth from storage gN/m^2/s F - 537 LIVECROOT_MR live coarse root maintenance respiration gC/m^2/s F - 538 LIVESTEMC live stem C gC/m^2 T - 539 LIVESTEMC_STORAGE live stem C storage gC/m^2 F - 540 LIVESTEMC_STORAGE_TO_XFER live stem C shift storage to transfer gC/m^2/s F - 541 LIVESTEMC_TO_BIOFUELC livestem C to biofuel C gC/m^2/s T - 542 LIVESTEMC_TO_DEADSTEMC live stem C turnover gC/m^2/s F - 543 LIVESTEMC_XFER live stem C transfer gC/m^2 F - 544 LIVESTEMC_XFER_TO_LIVESTEMC live stem C growth from storage gC/m^2/s F - 545 LIVESTEMN live stem N gN/m^2 T - 546 LIVESTEMN_STORAGE live stem N storage gN/m^2 F - 547 LIVESTEMN_STORAGE_TO_XFER live stem N shift storage to transfer gN/m^2/s F - 548 LIVESTEMN_TO_DEADSTEMN live stem N turnover gN/m^2/s F - 549 LIVESTEMN_TO_RETRANSN live stem N to retranslocated N pool gN/m^2/s F - 550 LIVESTEMN_XFER live stem N transfer gN/m^2 F - 551 LIVESTEMN_XFER_TO_LIVESTEMN live stem N growth from storage gN/m^2/s F - 552 LIVESTEM_MR live stem maintenance respiration gC/m^2/s F - 553 LNC leaf N concentration gN leaf/m^2 T - 554 LWdown atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 F - 555 LWup upwelling longwave radiation W/m^2 F - 556 MEG_acetaldehyde MEGAN flux kg/m2/sec T - 557 MEG_acetic_acid MEGAN flux kg/m2/sec T - 558 MEG_acetone MEGAN flux kg/m2/sec T - 559 MEG_carene_3 MEGAN flux kg/m2/sec T - 560 MEG_ethanol MEGAN flux kg/m2/sec T - 561 MEG_formaldehyde MEGAN flux kg/m2/sec T - 562 MEG_isoprene MEGAN flux kg/m2/sec T - 563 MEG_methanol MEGAN flux kg/m2/sec T - 564 MEG_pinene_a MEGAN flux kg/m2/sec T - 565 MEG_thujene_a MEGAN flux kg/m2/sec T - 566 MET_LITC MET_LIT C gC/m^2 T - 567 MET_LITC_1m MET_LIT C to 1 meter gC/m^2 F - 568 MET_LITC_TNDNCY_VERT_TRA metabolic litter C tendency due to vertical transport gC/m^3/s F - 569 MET_LITC_TO_PAS_SOMC decomp. of metabolic litter C to passive soil organic C gC/m^2/s F - 570 MET_LITC_TO_PAS_SOMC_vr decomp. of metabolic litter C to passive soil organic C gC/m^3/s F - 571 MET_LITC_vr MET_LIT C (vertically resolved) gC/m^3 T - 572 MET_LITN MET_LIT N gN/m^2 T - 573 MET_LITN_1m MET_LIT N to 1 meter gN/m^2 F - 574 MET_LITN_TNDNCY_VERT_TRA metabolic litter N tendency due to vertical transport gN/m^3/s F - 575 MET_LITN_TO_PAS_SOMN decomp. of metabolic litter N to passive soil organic N gN/m^2 F - 576 MET_LITN_TO_PAS_SOMN_vr decomp. of metabolic litter N to passive soil organic N gN/m^3 F - 577 MET_LITN_vr MET_LIT N (vertically resolved) gN/m^3 T - 578 MET_LIT_HR Het. Resp. from metabolic litter gC/m^2/s F - 579 MET_LIT_HR_vr Het. Resp. from metabolic litter gC/m^3/s F - 580 MR maintenance respiration gC/m^2/s T - 581 M_ACT_SOMC_TO_LEACHING active soil organic C leaching loss gC/m^2/s F - 582 M_ACT_SOMN_TO_LEACHING active soil organic N leaching loss gN/m^2/s F - 583 M_CEL_LITC_TO_FIRE cellulosic litter C fire loss gC/m^2/s F - 584 M_CEL_LITC_TO_FIRE_vr cellulosic litter C fire loss gC/m^3/s F - 585 M_CEL_LITC_TO_LEACHING cellulosic litter C leaching loss gC/m^2/s F - 586 M_CEL_LITN_TO_FIRE cellulosic litter N fire loss gN/m^2 F - 587 M_CEL_LITN_TO_FIRE_vr cellulosic litter N fire loss gN/m^3 F - 588 M_CEL_LITN_TO_LEACHING cellulosic litter N leaching loss gN/m^2/s F - 589 M_CWDC_TO_FIRE coarse woody debris C fire loss gC/m^2/s F - 590 M_CWDC_TO_FIRE_vr coarse woody debris C fire loss gC/m^3/s F - 591 M_CWDN_TO_FIRE coarse woody debris N fire loss gN/m^2 F - 592 M_CWDN_TO_FIRE_vr coarse woody debris N fire loss gN/m^3 F - 593 M_DEADCROOTC_STORAGE_TO_LITTER dead coarse root C storage mortality gC/m^2/s F - 594 M_DEADCROOTC_STORAGE_TO_LITTER_FIRE dead coarse root C storage fire mortality to litter gC/m^2/s F - 595 M_DEADCROOTC_TO_LITTER dead coarse root C mortality gC/m^2/s F - 596 M_DEADCROOTC_XFER_TO_LITTER dead coarse root C transfer mortality gC/m^2/s F - 597 M_DEADCROOTN_STORAGE_TO_FIRE dead coarse root N storage fire loss gN/m^2/s F - 598 M_DEADCROOTN_STORAGE_TO_LITTER dead coarse root N storage mortality gN/m^2/s F - 599 M_DEADCROOTN_TO_FIRE dead coarse root N fire loss gN/m^2/s F - 600 M_DEADCROOTN_TO_LITTER dead coarse root N mortality gN/m^2/s F - 601 M_DEADCROOTN_TO_LITTER_FIRE dead coarse root N fire mortality to litter gN/m^2/s F - 602 M_DEADCROOTN_XFER_TO_FIRE dead coarse root N transfer fire loss gN/m^2/s F - 603 M_DEADCROOTN_XFER_TO_LITTER dead coarse root N transfer mortality gN/m^2/s F - 604 M_DEADROOTC_STORAGE_TO_FIRE dead root C storage fire loss gC/m^2/s F - 605 M_DEADROOTC_STORAGE_TO_LITTER_FIRE dead root C storage fire mortality to litter gC/m^2/s F - 606 M_DEADROOTC_TO_FIRE dead root C fire loss gC/m^2/s F - 607 M_DEADROOTC_TO_LITTER_FIRE dead root C fire mortality to litter gC/m^2/s F - 608 M_DEADROOTC_XFER_TO_FIRE dead root C transfer fire loss gC/m^2/s F - 609 M_DEADROOTC_XFER_TO_LITTER_FIRE dead root C transfer fire mortality to litter gC/m^2/s F - 610 M_DEADSTEMC_STORAGE_TO_FIRE dead stem C storage fire loss gC/m^2/s F - 611 M_DEADSTEMC_STORAGE_TO_LITTER dead stem C storage mortality gC/m^2/s F - 612 M_DEADSTEMC_STORAGE_TO_LITTER_FIRE dead stem C storage fire mortality to litter gC/m^2/s F - 613 M_DEADSTEMC_TO_FIRE dead stem C fire loss gC/m^2/s F - 614 M_DEADSTEMC_TO_LITTER dead stem C mortality gC/m^2/s F - 615 M_DEADSTEMC_TO_LITTER_FIRE dead stem C fire mortality to litter gC/m^2/s F - 616 M_DEADSTEMC_XFER_TO_FIRE dead stem C transfer fire loss gC/m^2/s F - 617 M_DEADSTEMC_XFER_TO_LITTER dead stem C transfer mortality gC/m^2/s F - 618 M_DEADSTEMC_XFER_TO_LITTER_FIRE dead stem C transfer fire mortality to litter gC/m^2/s F - 619 M_DEADSTEMN_STORAGE_TO_FIRE dead stem N storage fire loss gN/m^2/s F - 620 M_DEADSTEMN_STORAGE_TO_LITTER dead stem N storage mortality gN/m^2/s F - 621 M_DEADSTEMN_TO_FIRE dead stem N fire loss gN/m^2/s F - 622 M_DEADSTEMN_TO_LITTER dead stem N mortality gN/m^2/s F - 623 M_DEADSTEMN_TO_LITTER_FIRE dead stem N fire mortality to litter gN/m^2/s F - 624 M_DEADSTEMN_XFER_TO_FIRE dead stem N transfer fire loss gN/m^2/s F - 625 M_DEADSTEMN_XFER_TO_LITTER dead stem N transfer mortality gN/m^2/s F - 626 M_FROOTC_STORAGE_TO_FIRE fine root C storage fire loss gC/m^2/s F - 627 M_FROOTC_STORAGE_TO_LITTER fine root C storage mortality gC/m^2/s F - 628 M_FROOTC_STORAGE_TO_LITTER_FIRE fine root C storage fire mortality to litter gC/m^2/s F - 629 M_FROOTC_TO_FIRE fine root C fire loss gC/m^2/s F - 630 M_FROOTC_TO_LITTER fine root C mortality gC/m^2/s F - 631 M_FROOTC_TO_LITTER_FIRE fine root C fire mortality to litter gC/m^2/s F - 632 M_FROOTC_XFER_TO_FIRE fine root C transfer fire loss gC/m^2/s F - 633 M_FROOTC_XFER_TO_LITTER fine root C transfer mortality gC/m^2/s F - 634 M_FROOTC_XFER_TO_LITTER_FIRE fine root C transfer fire mortality to litter gC/m^2/s F - 635 M_FROOTN_STORAGE_TO_FIRE fine root N storage fire loss gN/m^2/s F - 636 M_FROOTN_STORAGE_TO_LITTER fine root N storage mortality gN/m^2/s F - 637 M_FROOTN_TO_FIRE fine root N fire loss gN/m^2/s F - 638 M_FROOTN_TO_LITTER fine root N mortality gN/m^2/s F - 639 M_FROOTN_XFER_TO_FIRE fine root N transfer fire loss gN/m^2/s F - 640 M_FROOTN_XFER_TO_LITTER fine root N transfer mortality gN/m^2/s F - 641 M_GRESP_STORAGE_TO_FIRE growth respiration storage fire loss gC/m^2/s F - 642 M_GRESP_STORAGE_TO_LITTER growth respiration storage mortality gC/m^2/s F - 643 M_GRESP_STORAGE_TO_LITTER_FIRE growth respiration storage fire mortality to litter gC/m^2/s F - 644 M_GRESP_XFER_TO_FIRE growth respiration transfer fire loss gC/m^2/s F - 645 M_GRESP_XFER_TO_LITTER growth respiration transfer mortality gC/m^2/s F - 646 M_GRESP_XFER_TO_LITTER_FIRE growth respiration transfer fire mortality to litter gC/m^2/s F - 647 M_LEAFC_STORAGE_TO_FIRE leaf C storage fire loss gC/m^2/s F - 648 M_LEAFC_STORAGE_TO_LITTER leaf C storage mortality gC/m^2/s F - 649 M_LEAFC_STORAGE_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F - 650 M_LEAFC_TO_FIRE leaf C fire loss gC/m^2/s F - 651 M_LEAFC_TO_LITTER leaf C mortality gC/m^2/s F - 652 M_LEAFC_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F - 653 M_LEAFC_XFER_TO_FIRE leaf C transfer fire loss gC/m^2/s F - 654 M_LEAFC_XFER_TO_LITTER leaf C transfer mortality gC/m^2/s F - 655 M_LEAFC_XFER_TO_LITTER_FIRE leaf C transfer fire mortality to litter gC/m^2/s F - 656 M_LEAFN_STORAGE_TO_FIRE leaf N storage fire loss gN/m^2/s F - 657 M_LEAFN_STORAGE_TO_LITTER leaf N storage mortality gN/m^2/s F - 658 M_LEAFN_TO_FIRE leaf N fire loss gN/m^2/s F - 659 M_LEAFN_TO_LITTER leaf N mortality gN/m^2/s F - 660 M_LEAFN_XFER_TO_FIRE leaf N transfer fire loss gN/m^2/s F - 661 M_LEAFN_XFER_TO_LITTER leaf N transfer mortality gN/m^2/s F - 662 M_LIG_LITC_TO_FIRE lignin litter C fire loss gC/m^2/s F - 663 M_LIG_LITC_TO_FIRE_vr lignin litter C fire loss gC/m^3/s F - 664 M_LIG_LITC_TO_LEACHING lignin litter C leaching loss gC/m^2/s F - 665 M_LIG_LITN_TO_FIRE lignin litter N fire loss gN/m^2 F - 666 M_LIG_LITN_TO_FIRE_vr lignin litter N fire loss gN/m^3 F - 667 M_LIG_LITN_TO_LEACHING lignin litter N leaching loss gN/m^2/s F - 668 M_LIVECROOTC_STORAGE_TO_LITTER live coarse root C storage mortality gC/m^2/s F - 669 M_LIVECROOTC_STORAGE_TO_LITTER_FIRE live coarse root C fire mortality to litter gC/m^2/s F - 670 M_LIVECROOTC_TO_LITTER live coarse root C mortality gC/m^2/s F - 671 M_LIVECROOTC_XFER_TO_LITTER live coarse root C transfer mortality gC/m^2/s F - 672 M_LIVECROOTN_STORAGE_TO_FIRE live coarse root N storage fire loss gN/m^2/s F - 673 M_LIVECROOTN_STORAGE_TO_LITTER live coarse root N storage mortality gN/m^2/s F - 674 M_LIVECROOTN_TO_FIRE live coarse root N fire loss gN/m^2/s F - 675 M_LIVECROOTN_TO_LITTER live coarse root N mortality gN/m^2/s F - 676 M_LIVECROOTN_XFER_TO_FIRE live coarse root N transfer fire loss gN/m^2/s F - 677 M_LIVECROOTN_XFER_TO_LITTER live coarse root N transfer mortality gN/m^2/s F - 678 M_LIVEROOTC_STORAGE_TO_FIRE live root C storage fire loss gC/m^2/s F - 679 M_LIVEROOTC_STORAGE_TO_LITTER_FIRE live root C storage fire mortality to litter gC/m^2/s F - 680 M_LIVEROOTC_TO_DEADROOTC_FIRE live root C fire mortality to dead root C gC/m^2/s F - 681 M_LIVEROOTC_TO_FIRE live root C fire loss gC/m^2/s F - 682 M_LIVEROOTC_TO_LITTER_FIRE live root C fire mortality to litter gC/m^2/s F - 683 M_LIVEROOTC_XFER_TO_FIRE live root C transfer fire loss gC/m^2/s F - 684 M_LIVEROOTC_XFER_TO_LITTER_FIRE live root C transfer fire mortality to litter gC/m^2/s F - 685 M_LIVESTEMC_STORAGE_TO_FIRE live stem C storage fire loss gC/m^2/s F - 686 M_LIVESTEMC_STORAGE_TO_LITTER live stem C storage mortality gC/m^2/s F - 687 M_LIVESTEMC_STORAGE_TO_LITTER_FIRE live stem C storage fire mortality to litter gC/m^2/s F - 688 M_LIVESTEMC_TO_DEADSTEMC_FIRE live stem C fire mortality to dead stem C gC/m^2/s F - 689 M_LIVESTEMC_TO_FIRE live stem C fire loss gC/m^2/s F - 690 M_LIVESTEMC_TO_LITTER live stem C mortality gC/m^2/s F - 691 M_LIVESTEMC_TO_LITTER_FIRE live stem C fire mortality to litter gC/m^2/s F - 692 M_LIVESTEMC_XFER_TO_FIRE live stem C transfer fire loss gC/m^2/s F - 693 M_LIVESTEMC_XFER_TO_LITTER live stem C transfer mortality gC/m^2/s F - 694 M_LIVESTEMC_XFER_TO_LITTER_FIRE live stem C transfer fire mortality to litter gC/m^2/s F - 695 M_LIVESTEMN_STORAGE_TO_FIRE live stem N storage fire loss gN/m^2/s F - 696 M_LIVESTEMN_STORAGE_TO_LITTER live stem N storage mortality gN/m^2/s F - 697 M_LIVESTEMN_TO_FIRE live stem N fire loss gN/m^2/s F - 698 M_LIVESTEMN_TO_LITTER live stem N mortality gN/m^2/s F - 699 M_LIVESTEMN_XFER_TO_FIRE live stem N transfer fire loss gN/m^2/s F - 700 M_LIVESTEMN_XFER_TO_LITTER live stem N transfer mortality gN/m^2/s F - 701 M_MET_LITC_TO_FIRE metabolic litter C fire loss gC/m^2/s F - 702 M_MET_LITC_TO_FIRE_vr metabolic litter C fire loss gC/m^3/s F - 703 M_MET_LITC_TO_LEACHING metabolic litter C leaching loss gC/m^2/s F - 704 M_MET_LITN_TO_FIRE metabolic litter N fire loss gN/m^2 F - 705 M_MET_LITN_TO_FIRE_vr metabolic litter N fire loss gN/m^3 F - 706 M_MET_LITN_TO_LEACHING metabolic litter N leaching loss gN/m^2/s F - 707 M_PAS_SOMC_TO_LEACHING passive soil organic C leaching loss gC/m^2/s F - 708 M_PAS_SOMN_TO_LEACHING passive soil organic N leaching loss gN/m^2/s F - 709 M_RETRANSN_TO_FIRE retranslocated N pool fire loss gN/m^2/s F - 710 M_RETRANSN_TO_LITTER retranslocated N pool mortality gN/m^2/s F - 711 M_SLO_SOMC_TO_LEACHING slow soil organic ma C leaching loss gC/m^2/s F - 712 M_SLO_SOMN_TO_LEACHING slow soil organic ma N leaching loss gN/m^2/s F - 713 NACTIVE Mycorrhizal N uptake flux gN/m^2/s T - 714 NACTIVE_NH4 Mycorrhizal N uptake flux gN/m^2/s T - 715 NACTIVE_NO3 Mycorrhizal N uptake flux gN/m^2/s T - 716 NAM AM-associated N uptake flux gN/m^2/s T - 717 NAM_NH4 AM-associated N uptake flux gN/m^2/s T - 718 NAM_NO3 AM-associated N uptake flux gN/m^2/s T - 719 NBP net biome production, includes fire, landuse, harvest and hrv_xsmrpool flux (latter smoothed o gC/m^2/s T - 720 NDEPLOY total N deployed in new growth gN/m^2/s T - 721 NDEP_PROF profile for atmospheric N deposition 1/m F - 722 NDEP_TO_SMINN atmospheric N deposition to soil mineral N gN/m^2/s T - 723 NECM ECM-associated N uptake flux gN/m^2/s T - 724 NECM_NH4 ECM-associated N uptake flux gN/m^2/s T - 725 NECM_NO3 ECM-associated N uptake flux gN/m^2/s T - 726 NEE net ecosystem exchange of carbon, includes fire and hrv_xsmrpool (latter smoothed over the yea gC/m^2/s T - 727 NEM Gridcell net adjustment to net carbon exchange passed to atm. for methane production gC/m2/s T - 728 NEP net ecosystem production, excludes fire, landuse, and harvest flux, positive for sink gC/m^2/s T - 729 NET_NMIN net rate of N mineralization gN/m^2/s T - 730 NET_NMIN_vr net rate of N mineralization gN/m^3/s F - 731 NFERTILIZATION fertilizer added gN/m^2/s T - 732 NFIRE fire counts valid only in Reg.C counts/km2/sec T - 733 NFIX Symbiotic BNF uptake flux gN/m^2/s T - 734 NFIXATION_PROF profile for biological N fixation 1/m F - 735 NFIX_TO_SMINN symbiotic/asymbiotic N fixation to soil mineral N gN/m^2/s F - 736 NNONMYC Non-mycorrhizal N uptake flux gN/m^2/s T - 737 NNONMYC_NH4 Non-mycorrhizal N uptake flux gN/m^2/s T - 738 NNONMYC_NO3 Non-mycorrhizal N uptake flux gN/m^2/s T - 739 NPASSIVE Passive N uptake flux gN/m^2/s T - 740 NPOOL temporary plant N pool gN/m^2 T - 741 NPOOL_TO_DEADCROOTN allocation to dead coarse root N gN/m^2/s F - 742 NPOOL_TO_DEADCROOTN_STORAGE allocation to dead coarse root N storage gN/m^2/s F - 743 NPOOL_TO_DEADSTEMN allocation to dead stem N gN/m^2/s F - 744 NPOOL_TO_DEADSTEMN_STORAGE allocation to dead stem N storage gN/m^2/s F - 745 NPOOL_TO_FROOTN allocation to fine root N gN/m^2/s F - 746 NPOOL_TO_FROOTN_STORAGE allocation to fine root N storage gN/m^2/s F - 747 NPOOL_TO_LEAFN allocation to leaf N gN/m^2/s F - 748 NPOOL_TO_LEAFN_STORAGE allocation to leaf N storage gN/m^2/s F - 749 NPOOL_TO_LIVECROOTN allocation to live coarse root N gN/m^2/s F - 750 NPOOL_TO_LIVECROOTN_STORAGE allocation to live coarse root N storage gN/m^2/s F - 751 NPOOL_TO_LIVESTEMN allocation to live stem N gN/m^2/s F - 752 NPOOL_TO_LIVESTEMN_STORAGE allocation to live stem N storage gN/m^2/s F - 753 NPP net primary production gC/m^2/s T - 754 NPP_BURNEDOFF C that cannot be used for N uptake gC/m^2/s F - 755 NPP_GROWTH Total C used for growth in FUN gC/m^2/s T - 756 NPP_NACTIVE Mycorrhizal N uptake used C gC/m^2/s T - 757 NPP_NACTIVE_NH4 Mycorrhizal N uptake use C gC/m^2/s T - 758 NPP_NACTIVE_NO3 Mycorrhizal N uptake used C gC/m^2/s T - 759 NPP_NAM AM-associated N uptake used C gC/m^2/s T - 760 NPP_NAM_NH4 AM-associated N uptake use C gC/m^2/s T - 761 NPP_NAM_NO3 AM-associated N uptake use C gC/m^2/s T - 762 NPP_NECM ECM-associated N uptake used C gC/m^2/s T - 763 NPP_NECM_NH4 ECM-associated N uptake use C gC/m^2/s T - 764 NPP_NECM_NO3 ECM-associated N uptake used C gC/m^2/s T - 765 NPP_NFIX Symbiotic BNF uptake used C gC/m^2/s T - 766 NPP_NNONMYC Non-mycorrhizal N uptake used C gC/m^2/s T - 767 NPP_NNONMYC_NH4 Non-mycorrhizal N uptake use C gC/m^2/s T - 768 NPP_NNONMYC_NO3 Non-mycorrhizal N uptake use C gC/m^2/s T - 769 NPP_NRETRANS Retranslocated N uptake flux gC/m^2/s T - 770 NPP_NUPTAKE Total C used by N uptake in FUN gC/m^2/s T - 771 NRETRANS Retranslocated N uptake flux gN/m^2/s T - 772 NRETRANS_REG Retranslocated N uptake flux gN/m^2/s T - 773 NRETRANS_SEASON Retranslocated N uptake flux gN/m^2/s T - 774 NRETRANS_STRESS Retranslocated N uptake flux gN/m^2/s T - 775 NSUBSTEPS number of adaptive timesteps in CLM timestep unitless F - 776 NUPTAKE Total N uptake of FUN gN/m^2/s T - 777 NUPTAKE_NPP_FRACTION frac of NPP used in N uptake - T - 778 N_ALLOMETRY N allocation index none F - 779 O2_DECOMP_DEPTH_UNSAT O2 consumption from HR and AR for non-inundated area mol/m3/s F - 780 OBU Monin-Obukhov length m F - 781 OCDEP total OC deposition (dry+wet) from atmosphere kg/m^2/s T - 782 OFFSET_COUNTER offset days counter days F - 783 OFFSET_FDD offset freezing degree days counter C degree-days F - 784 OFFSET_FLAG offset flag none F - 785 OFFSET_SWI offset soil water index none F - 786 ONSET_COUNTER onset days counter days F - 787 ONSET_FDD onset freezing degree days counter C degree-days F - 788 ONSET_FLAG onset flag none F - 789 ONSET_GDD onset growing degree days C degree-days F - 790 ONSET_GDDFLAG onset flag for growing degree day sum none F - 791 ONSET_SWI onset soil water index none F - 792 O_SCALAR fraction by which decomposition is reduced due to anoxia unitless T - 793 PAR240DZ 10-day running mean of daytime patch absorbed PAR for leaves for top canopy layer W/m^2 F - 794 PAR240XZ 10-day running mean of maximum patch absorbed PAR for leaves for top canopy layer W/m^2 F - 795 PAR240_shade shade PAR (240 hrs) umol/m2/s F - 796 PAR240_sun sunlit PAR (240 hrs) umol/m2/s F - 797 PAR24_shade shade PAR (24 hrs) umol/m2/s F - 798 PAR24_sun sunlit PAR (24 hrs) umol/m2/s F - 799 PARVEGLN absorbed par by vegetation at local noon W/m^2 T - 800 PAR_shade shade PAR umol/m2/s F - 801 PAR_sun sunlit PAR umol/m2/s F - 802 PAS_SOMC PAS_SOM C gC/m^2 T - 803 PAS_SOMC_1m PAS_SOM C to 1 meter gC/m^2 F - 804 PAS_SOMC_TNDNCY_VERT_TRA passive soil organic C tendency due to vertical transport gC/m^3/s F - 805 PAS_SOMC_TO_ACT_SOMC decomp. of passive soil organic C to active soil organic C gC/m^2/s F - 806 PAS_SOMC_TO_ACT_SOMC_vr decomp. of passive soil organic C to active soil organic C gC/m^3/s F - 807 PAS_SOMC_TO_SLO_SOMC decomp. of passive soil organic C to slow soil organic ma C gC/m^2/s F - 808 PAS_SOMC_TO_SLO_SOMC_vr decomp. of passive soil organic C to slow soil organic ma C gC/m^3/s F - 809 PAS_SOMC_vr PAS_SOM C (vertically resolved) gC/m^3 T - 810 PAS_SOMN PAS_SOM N gN/m^2 T - 811 PAS_SOMN_1m PAS_SOM N to 1 meter gN/m^2 F - 812 PAS_SOMN_TNDNCY_VERT_TRA passive soil organic N tendency due to vertical transport gN/m^3/s F - 813 PAS_SOMN_TO_ACT_SOMN decomp. of passive soil organic N to active soil organic N gN/m^2 F - 814 PAS_SOMN_TO_ACT_SOMN_vr decomp. of passive soil organic N to active soil organic N gN/m^3 F - 815 PAS_SOMN_TO_SLO_SOMN decomp. of passive soil organic N to slow soil organic ma N gN/m^2 F - 816 PAS_SOMN_TO_SLO_SOMN_vr decomp. of passive soil organic N to slow soil organic ma N gN/m^3 F - 817 PAS_SOMN_vr PAS_SOM N (vertically resolved) gN/m^3 T - 818 PAS_SOM_HR_S2 Het. Resp. from passive soil organic gC/m^2/s F - 819 PAS_SOM_HR_S2_vr Het. Resp. from passive soil organic gC/m^3/s F - 820 PAS_SOM_HR_S3 Het. Resp. from passive soil organic gC/m^2/s F - 821 PAS_SOM_HR_S3_vr Het. Resp. from passive soil organic gC/m^3/s F + 12 ACT_SOMC_TO_SLO_SOMC decomp. of active soil organic C to slow soil organic ma C gC/m^2/s F + 13 ACT_SOMC_TO_SLO_SOMC_vr decomp. of active soil organic C to slow soil organic ma C gC/m^3/s F + 14 ACT_SOMC_vr ACT_SOM C (vertically resolved) gC/m^3 T + 15 ACT_SOMN ACT_SOM N gN/m^2 T + 16 ACT_SOMN_1m ACT_SOM N to 1 meter gN/m^2 F + 17 ACT_SOMN_TNDNCY_VERT_TRA active soil organic N tendency due to vertical transport gN/m^3/s F + 18 ACT_SOMN_TO_PAS_SOMN decomp. of active soil organic N to passive soil organic N gN/m^2 F + 19 ACT_SOMN_TO_PAS_SOMN_vr decomp. of active soil organic N to passive soil organic N gN/m^3 F + 20 ACT_SOMN_TO_SLO_SOMN decomp. of active soil organic N to slow soil organic ma N gN/m^2 F + 21 ACT_SOMN_TO_SLO_SOMN_vr decomp. of active soil organic N to slow soil organic ma N gN/m^3 F + 22 ACT_SOMN_vr ACT_SOM N (vertically resolved) gN/m^3 T + 23 ACT_SOM_HR_S2 Het. Resp. from active soil organic gC/m^2/s F + 24 ACT_SOM_HR_S2_vr Het. Resp. from active soil organic gC/m^3/s F + 25 ACT_SOM_HR_S3 Het. Resp. from active soil organic gC/m^2/s F + 26 ACT_SOM_HR_S3_vr Het. Resp. from active soil organic gC/m^3/s F + 27 AGLB Aboveground leaf biomass kg/m^2 F + 28 AGNPP aboveground NPP gC/m^2/s T + 29 AGSB Aboveground stem biomass kg/m^2 F + 30 ALBD surface albedo (direct) proportion T + 31 ALBDSF diagnostic snow-free surface albedo (direct) proportion T + 32 ALBGRD ground albedo (direct) proportion F + 33 ALBGRI ground albedo (indirect) proportion F + 34 ALBI surface albedo (indirect) proportion T + 35 ALBISF diagnostic snow-free surface albedo (indirect) proportion T + 36 ALPHA alpha coefficient for VOC calc non F + 37 ALT current active layer thickness m T + 38 ALTMAX maximum annual active layer thickness m T + 39 ALTMAX_LASTYEAR maximum prior year active layer thickness m F + 40 ANNAVG_T2M annual average 2m air temperature K F + 41 ANNMAX_RETRANSN annual max of retranslocated N pool gN/m^2 F + 42 ANNSUM_COUNTER seconds since last annual accumulator turnover s F + 43 ANNSUM_NPP annual sum of NPP gC/m^2/yr F + 44 ANNSUM_POTENTIAL_GPP annual sum of potential GPP gN/m^2/yr F + 45 APPAR_TEMP 2 m apparent temperature C T + 46 APPAR_TEMP_R Rural 2 m apparent temperature C T + 47 APPAR_TEMP_U Urban 2 m apparent temperature C T + 48 AR autotrophic respiration (MR + GR) gC/m^2/s T + 49 ATM_TOPO atmospheric surface height m T + 50 AVAILC C flux available for allocation gC/m^2/s F + 51 AVAIL_RETRANSN N flux available from retranslocation pool gN/m^2/s F + 52 AnnET Annual ET mm/s F + 53 BAF_CROP fractional area burned for crop s-1 T + 54 BAF_PEATF fractional area burned in peatland s-1 T + 55 BCDEP total BC deposition (dry+wet) from atmosphere kg/m^2/s T + 56 BETA coefficient of convective velocity none F + 57 BGLFR background litterfall rate 1/s F + 58 BGNPP belowground NPP gC/m^2/s T + 59 BGTR background transfer growth rate 1/s F + 60 BTRANMN daily minimum of transpiration beta factor unitless T + 61 CANNAVG_T2M annual average of 2m air temperature K F + 62 CANNSUM_NPP annual sum of column-level NPP gC/m^2/s F + 63 CEL_LITC CEL_LIT C gC/m^2 T + 64 CEL_LITC_1m CEL_LIT C to 1 meter gC/m^2 F + 65 CEL_LITC_TNDNCY_VERT_TRA cellulosic litter C tendency due to vertical transport gC/m^3/s F + 66 CEL_LITC_TO_ACT_SOMC decomp. of cellulosic litter C to active soil organic C gC/m^2/s F + 67 CEL_LITC_TO_ACT_SOMC_vr decomp. of cellulosic litter C to active soil organic C gC/m^3/s F + 68 CEL_LITC_vr CEL_LIT C (vertically resolved) gC/m^3 T + 69 CEL_LITN CEL_LIT N gN/m^2 T + 70 CEL_LITN_1m CEL_LIT N to 1 meter gN/m^2 F + 71 CEL_LITN_TNDNCY_VERT_TRA cellulosic litter N tendency due to vertical transport gN/m^3/s F + 72 CEL_LITN_TO_ACT_SOMN decomp. of cellulosic litter N to active soil organic N gN/m^2 F + 73 CEL_LITN_TO_ACT_SOMN_vr decomp. of cellulosic litter N to active soil organic N gN/m^3 F + 74 CEL_LITN_vr CEL_LIT N (vertically resolved) gN/m^3 T + 75 CEL_LIT_HR Het. Resp. from cellulosic litter gC/m^2/s F + 76 CEL_LIT_HR_vr Het. Resp. from cellulosic litter gC/m^3/s F + 77 CGRND deriv. of soil energy flux wrt to soil temp W/m^2/K F + 78 CGRNDL deriv. of soil latent heat flux wrt soil temp W/m^2/K F + 79 CGRNDS deriv. of soil sensible heat flux wrt soil temp W/m^2/K F + 80 CH4PROD Gridcell total production of CH4 gC/m2/s T + 81 CH4_EBUL_TOTAL_SAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F + 82 CH4_EBUL_TOTAL_UNSAT ebullition surface CH4 flux; (+ to atm) mol/m2/s F + 83 CH4_SURF_AERE_SAT aerenchyma surface CH4 flux for inundated area; (+ to atm) mol/m2/s T + 84 CH4_SURF_AERE_UNSAT aerenchyma surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T + 85 CH4_SURF_DIFF_SAT diffusive surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T + 86 CH4_SURF_DIFF_UNSAT diffusive surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T + 87 CH4_SURF_EBUL_SAT ebullition surface CH4 flux for inundated / lake area; (+ to atm) mol/m2/s T + 88 CH4_SURF_EBUL_UNSAT ebullition surface CH4 flux for non-inundated area; (+ to atm) mol/m2/s T + 89 COL_CTRUNC column-level sink for C truncation gC/m^2 F + 90 COL_FIRE_CLOSS total column-level fire C loss for non-peat fires outside land-type converted region gC/m^2/s T + 91 COL_FIRE_NLOSS total column-level fire N loss gN/m^2/s T + 92 COL_NTRUNC column-level sink for N truncation gN/m^2 F + 93 CONC_CH4_SAT CH4 soil Concentration for inundated / lake area mol/m3 F + 94 CONC_CH4_UNSAT CH4 soil Concentration for non-inundated area mol/m3 F + 95 CONC_O2_SAT O2 soil Concentration for inundated / lake area mol/m3 T + 96 CONC_O2_UNSAT O2 soil Concentration for non-inundated area mol/m3 T + 97 COST_NACTIVE Cost of active uptake gN/gC T + 98 COST_NFIX Cost of fixation gN/gC T + 99 COST_NRETRANS Cost of retranslocation gN/gC T + 100 COSZEN cosine of solar zenith angle none F + 101 CPHASE crop phenology phase 0-not planted, 1-planted, 2-leaf emerge, 3-grain fill, 4-harvest T + 102 CPOOL temporary photosynthate C pool gC/m^2 T + 103 CPOOL_DEADCROOT_GR dead coarse root growth respiration gC/m^2/s F + 104 CPOOL_DEADCROOT_STORAGE_GR dead coarse root growth respiration to storage gC/m^2/s F + 105 CPOOL_DEADSTEM_GR dead stem growth respiration gC/m^2/s F + 106 CPOOL_DEADSTEM_STORAGE_GR dead stem growth respiration to storage gC/m^2/s F + 107 CPOOL_FROOT_GR fine root growth respiration gC/m^2/s F + 108 CPOOL_FROOT_STORAGE_GR fine root growth respiration to storage gC/m^2/s F + 109 CPOOL_LEAF_GR leaf growth respiration gC/m^2/s F + 110 CPOOL_LEAF_STORAGE_GR leaf growth respiration to storage gC/m^2/s F + 111 CPOOL_LIVECROOT_GR live coarse root growth respiration gC/m^2/s F + 112 CPOOL_LIVECROOT_STORAGE_GR live coarse root growth respiration to storage gC/m^2/s F + 113 CPOOL_LIVESTEM_GR live stem growth respiration gC/m^2/s F + 114 CPOOL_LIVESTEM_STORAGE_GR live stem growth respiration to storage gC/m^2/s F + 115 CPOOL_TO_DEADCROOTC allocation to dead coarse root C gC/m^2/s F + 116 CPOOL_TO_DEADCROOTC_STORAGE allocation to dead coarse root C storage gC/m^2/s F + 117 CPOOL_TO_DEADSTEMC allocation to dead stem C gC/m^2/s F + 118 CPOOL_TO_DEADSTEMC_STORAGE allocation to dead stem C storage gC/m^2/s F + 119 CPOOL_TO_FROOTC allocation to fine root C gC/m^2/s F + 120 CPOOL_TO_FROOTC_STORAGE allocation to fine root C storage gC/m^2/s F + 121 CPOOL_TO_GRESP_STORAGE allocation to growth respiration storage gC/m^2/s F + 122 CPOOL_TO_LEAFC allocation to leaf C gC/m^2/s F + 123 CPOOL_TO_LEAFC_STORAGE allocation to leaf C storage gC/m^2/s F + 124 CPOOL_TO_LIVECROOTC allocation to live coarse root C gC/m^2/s F + 125 CPOOL_TO_LIVECROOTC_STORAGE allocation to live coarse root C storage gC/m^2/s F + 126 CPOOL_TO_LIVESTEMC allocation to live stem C gC/m^2/s F + 127 CPOOL_TO_LIVESTEMC_STORAGE allocation to live stem C storage gC/m^2/s F + 128 CROOT_PROF profile for litter C and N inputs from coarse roots 1/m F + 129 CROPPROD1C 1-yr crop product (grain+biofuel) C gC/m^2 T + 130 CROPPROD1C_LOSS loss from 1-yr crop product pool gC/m^2/s T + 131 CROPPROD1N 1-yr crop product (grain+biofuel) N gN/m^2 T + 132 CROPPROD1N_LOSS loss from 1-yr crop product pool gN/m^2/s T + 133 CROPSEEDC_DEFICIT C used for crop seed that needs to be repaid gC/m^2 T + 134 CROPSEEDN_DEFICIT N used for crop seed that needs to be repaid gN/m^2 F + 135 CROP_SEEDC_TO_LEAF crop seed source to leaf gC/m^2/s F + 136 CROP_SEEDN_TO_LEAF crop seed source to leaf gN/m^2/s F + 137 CURRENT_GR growth resp for new growth displayed in this timestep gC/m^2/s F + 138 CWDC CWD C gC/m^2 T + 139 CWDC_1m CWD C to 1 meter gC/m^2 F + 140 CWDC_HR cwd C heterotrophic respiration gC/m^2/s F + 141 CWDC_LOSS coarse woody debris C loss gC/m^2/s T + 142 CWDC_TO_CEL_LITC decomp. of coarse woody debris C to cellulosic litter C gC/m^2/s F + 143 CWDC_TO_CEL_LITC_vr decomp. of coarse woody debris C to cellulosic litter C gC/m^3/s F + 144 CWDC_TO_LIG_LITC decomp. of coarse woody debris C to lignin litter C gC/m^2/s F + 145 CWDC_TO_LIG_LITC_vr decomp. of coarse woody debris C to lignin litter C gC/m^3/s F + 146 CWDC_vr CWD C (vertically resolved) gC/m^3 T + 147 CWDN CWD N gN/m^2 T + 148 CWDN_1m CWD N to 1 meter gN/m^2 F + 149 CWDN_TO_CEL_LITN decomp. of coarse woody debris N to cellulosic litter N gN/m^2 F + 150 CWDN_TO_CEL_LITN_vr decomp. of coarse woody debris N to cellulosic litter N gN/m^3 F + 151 CWDN_TO_LIG_LITN decomp. of coarse woody debris N to lignin litter N gN/m^2 F + 152 CWDN_TO_LIG_LITN_vr decomp. of coarse woody debris N to lignin litter N gN/m^3 F + 153 CWDN_vr CWD N (vertically resolved) gN/m^3 T + 154 CWD_HR_L2 Het. Resp. from coarse woody debris gC/m^2/s F + 155 CWD_HR_L2_vr Het. Resp. from coarse woody debris gC/m^3/s F + 156 CWD_HR_L3 Het. Resp. from coarse woody debris gC/m^2/s F + 157 CWD_HR_L3_vr Het. Resp. from coarse woody debris gC/m^3/s F + 158 C_ALLOMETRY C allocation index none F + 159 DAYL daylength s F + 160 DAYS_ACTIVE number of days since last dormancy days F + 161 DEADCROOTC dead coarse root C gC/m^2 T + 162 DEADCROOTC_STORAGE dead coarse root C storage gC/m^2 F + 163 DEADCROOTC_STORAGE_TO_XFER dead coarse root C shift storage to transfer gC/m^2/s F + 164 DEADCROOTC_XFER dead coarse root C transfer gC/m^2 F + 165 DEADCROOTC_XFER_TO_DEADCROOTC dead coarse root C growth from storage gC/m^2/s F + 166 DEADCROOTN dead coarse root N gN/m^2 T + 167 DEADCROOTN_STORAGE dead coarse root N storage gN/m^2 F + 168 DEADCROOTN_STORAGE_TO_XFER dead coarse root N shift storage to transfer gN/m^2/s F + 169 DEADCROOTN_XFER dead coarse root N transfer gN/m^2 F + 170 DEADCROOTN_XFER_TO_DEADCROOTN dead coarse root N growth from storage gN/m^2/s F + 171 DEADSTEMC dead stem C gC/m^2 T + 172 DEADSTEMC_STORAGE dead stem C storage gC/m^2 F + 173 DEADSTEMC_STORAGE_TO_XFER dead stem C shift storage to transfer gC/m^2/s F + 174 DEADSTEMC_XFER dead stem C transfer gC/m^2 F + 175 DEADSTEMC_XFER_TO_DEADSTEMC dead stem C growth from storage gC/m^2/s F + 176 DEADSTEMN dead stem N gN/m^2 T + 177 DEADSTEMN_STORAGE dead stem N storage gN/m^2 F + 178 DEADSTEMN_STORAGE_TO_XFER dead stem N shift storage to transfer gN/m^2/s F + 179 DEADSTEMN_XFER dead stem N transfer gN/m^2 F + 180 DEADSTEMN_XFER_TO_DEADSTEMN dead stem N growth from storage gN/m^2/s F + 181 DENIT total rate of denitrification gN/m^2/s T + 182 DGNETDT derivative of net ground heat flux wrt soil temp W/m^2/K F + 183 DISCOI 2 m Discomfort Index C T + 184 DISCOIS 2 m Stull Discomfort Index C T + 185 DISCOIS_R Rural 2 m Stull Discomfort Index C T + 186 DISCOIS_U Urban 2 m Stull Discomfort Index C T + 187 DISCOI_R Rural 2 m Discomfort Index C T + 188 DISCOI_U Urban 2 m Discomfort Index C T + 189 DISPLA displacement height m F + 190 DISPVEGC displayed veg carbon, excluding storage and cpool gC/m^2 T + 191 DISPVEGN displayed vegetation nitrogen gN/m^2 T + 192 DLRAD downward longwave radiation below the canopy W/m^2 F + 193 DORMANT_FLAG dormancy flag none F + 194 DOWNREG fractional reduction in GPP due to N limitation proportion F + 195 DPVLTRB1 turbulent deposition velocity 1 m/s F + 196 DPVLTRB2 turbulent deposition velocity 2 m/s F + 197 DPVLTRB3 turbulent deposition velocity 3 m/s F + 198 DPVLTRB4 turbulent deposition velocity 4 m/s F + 199 DSL dry surface layer thickness mm T + 200 DSTDEP total dust deposition (dry+wet) from atmosphere kg/m^2/s T + 201 DSTFLXT total surface dust emission kg/m2/s T + 202 DT_VEG change in t_veg, last iteration K F + 203 DWT_CONV_CFLUX conversion C flux (immediate loss to atm) (0 at all times except first timestep of year) gC/m^2/s T + 204 DWT_CONV_CFLUX_DRIBBLED conversion C flux (immediate loss to atm), dribbled throughout the year gC/m^2/s T + 205 DWT_CONV_CFLUX_PATCH patch-level conversion C flux (immediate loss to atm) (0 at all times except first timestep of gC/m^2/s F + 206 DWT_CONV_NFLUX conversion N flux (immediate loss to atm) (0 at all times except first timestep of year) gN/m^2/s T + 207 DWT_CONV_NFLUX_PATCH patch-level conversion N flux (immediate loss to atm) (0 at all times except first timestep of gN/m^2/s F + 208 DWT_CROPPROD1C_GAIN landcover change-driven addition to 1-year crop product pool gC/m^2/s T + 209 DWT_CROPPROD1N_GAIN landcover change-driven addition to 1-year crop product pool gN/m^2/s T + 210 DWT_DEADCROOTC_TO_CWDC dead coarse root to CWD due to landcover change gC/m^2/s F + 211 DWT_DEADCROOTN_TO_CWDN dead coarse root to CWD due to landcover change gN/m^2/s F + 212 DWT_FROOTC_TO_CEL_LIT_C fine root to cellulosic litter due to landcover change gC/m^2/s F + 213 DWT_FROOTC_TO_LIG_LIT_C fine root to lignin litter due to landcover change gC/m^2/s F + 214 DWT_FROOTC_TO_MET_LIT_C fine root to metabolic litter due to landcover change gC/m^2/s F + 215 DWT_FROOTN_TO_CEL_LIT_N fine root N to cellulosic litter due to landcover change gN/m^2/s F + 216 DWT_FROOTN_TO_LIG_LIT_N fine root N to lignin litter due to landcover change gN/m^2/s F + 217 DWT_FROOTN_TO_MET_LIT_N fine root N to metabolic litter due to landcover change gN/m^2/s F + 218 DWT_LIVECROOTC_TO_CWDC live coarse root to CWD due to landcover change gC/m^2/s F + 219 DWT_LIVECROOTN_TO_CWDN live coarse root to CWD due to landcover change gN/m^2/s F + 220 DWT_PROD100C_GAIN landcover change-driven addition to 100-yr wood product pool gC/m^2/s F + 221 DWT_PROD100N_GAIN landcover change-driven addition to 100-yr wood product pool gN/m^2/s F + 222 DWT_PROD10C_GAIN landcover change-driven addition to 10-yr wood product pool gC/m^2/s F + 223 DWT_PROD10N_GAIN landcover change-driven addition to 10-yr wood product pool gN/m^2/s F + 224 DWT_SEEDC_TO_DEADSTEM seed source to patch-level deadstem gC/m^2/s F + 225 DWT_SEEDC_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gC/m^2/s F + 226 DWT_SEEDC_TO_LEAF seed source to patch-level leaf gC/m^2/s F + 227 DWT_SEEDC_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gC/m^2/s F + 228 DWT_SEEDN_TO_DEADSTEM seed source to patch-level deadstem gN/m^2/s T + 229 DWT_SEEDN_TO_DEADSTEM_PATCH patch-level seed source to patch-level deadstem (per-area-gridcell; only makes sense with dov2 gN/m^2/s F + 230 DWT_SEEDN_TO_LEAF seed source to patch-level leaf gN/m^2/s T + 231 DWT_SEEDN_TO_LEAF_PATCH patch-level seed source to patch-level leaf (per-area-gridcell; only makes sense with dov2xy=. gN/m^2/s F + 232 DWT_SLASH_CFLUX slash C flux (to litter diagnostic only) (0 at all times except first timestep of year) gC/m^2/s T + 233 DWT_SLASH_CFLUX_PATCH patch-level slash C flux (to litter diagnostic only) (0 at all times except first timestep of gC/m^2/s F + 234 DWT_WOODPRODC_GAIN landcover change-driven addition to wood product pools gC/m^2/s T + 235 DWT_WOODPRODN_GAIN landcover change-driven addition to wood product pools gN/m^2/s T + 236 DWT_WOOD_PRODUCTC_GAIN_PATCH patch-level landcover change-driven addition to wood product pools(0 at all times except first gC/m^2/s F + 237 DYN_COL_ADJUSTMENTS_CH4 Adjustments in ch4 due to dynamic column areas; only makes sense at the column level: should n gC/m^2 F + 238 DYN_COL_SOIL_ADJUSTMENTS_C Adjustments in soil carbon due to dynamic column areas; only makes sense at the column level: gC/m^2 F + 239 DYN_COL_SOIL_ADJUSTMENTS_N Adjustments in soil nitrogen due to dynamic column areas; only makes sense at the column level gN/m^2 F + 240 DYN_COL_SOIL_ADJUSTMENTS_NH4 Adjustments in soil NH4 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F + 241 DYN_COL_SOIL_ADJUSTMENTS_NO3 Adjustments in soil NO3 due to dynamic column areas; only makes sense at the column level: sho gN/m^2 F + 242 EFF_POROSITY effective porosity = porosity - vol_ice proportion F + 243 EFLXBUILD building heat flux from change in interior building air temperature W/m^2 T + 244 EFLX_DYNBAL dynamic land cover change conversion energy flux W/m^2 T + 245 EFLX_GNET net heat flux into ground W/m^2 F + 246 EFLX_GRND_LAKE net heat flux into lake/snow surface, excluding light transmission W/m^2 T + 247 EFLX_LH_TOT total latent heat flux [+ to atm] W/m^2 T + 248 EFLX_LH_TOT_ICE total latent heat flux [+ to atm] (ice landunits only) W/m^2 F + 249 EFLX_LH_TOT_R Rural total evaporation W/m^2 T + 250 EFLX_LH_TOT_U Urban total evaporation W/m^2 F + 251 EFLX_SOIL_GRND soil heat flux [+ into soil] W/m^2 F + 252 ELAI exposed one-sided leaf area index m^2/m^2 T + 253 EMG ground emissivity proportion F + 254 EMV vegetation emissivity proportion F + 255 EOPT Eopt coefficient for VOC calc non F + 256 EPT 2 m Equiv Pot Temp K T + 257 EPT_R Rural 2 m Equiv Pot Temp K T + 258 EPT_U Urban 2 m Equiv Pot Temp K T + 259 ER total ecosystem respiration, autotrophic + heterotrophic gC/m^2/s T + 260 ERRH2O total water conservation error mm T + 261 ERRH2OSNO imbalance in snow depth (liquid water) mm T + 262 ERRSEB surface energy conservation error W/m^2 T + 263 ERRSOI soil/lake energy conservation error W/m^2 T + 264 ERRSOL solar radiation conservation error W/m^2 T + 265 ESAI exposed one-sided stem area index m^2/m^2 T + 266 EXCESSC_MR excess C maintenance respiration gC/m^2/s F + 267 EXCESS_CFLUX C flux not allocated due to downregulation gC/m^2/s F + 268 FAREA_BURNED timestep fractional area burned s-1 T + 269 FCANSNO fraction of canopy that is wet proportion F + 270 FCEV canopy evaporation W/m^2 T + 271 FCH4 Gridcell surface CH4 flux to atmosphere (+ to atm) kgC/m2/s T + 272 FCH4TOCO2 Gridcell oxidation of CH4 to CO2 gC/m2/s T + 273 FCH4_DFSAT CH4 additional flux due to changing fsat, natural vegetated and crop landunits only kgC/m2/s T + 274 FCO2 CO2 flux to atmosphere (+ to atm) kgCO2/m2/s F + 275 FCOV fractional impermeable area unitless T + 276 FCTR canopy transpiration W/m^2 T + 277 FDRY fraction of foliage that is green and dry proportion F + 278 FERTNITRO Nitrogen fertilizer for each crop gN/m2/yr F + 279 FERT_COUNTER time left to fertilize seconds F + 280 FERT_TO_SMINN fertilizer to soil mineral N gN/m^2/s F + 281 FFIX_TO_SMINN free living N fixation to soil mineral N gN/m^2/s T + 282 FGEV ground evaporation W/m^2 T + 283 FGR heat flux into soil/snow including snow melt and lake / snow light transmission W/m^2 T + 284 FGR12 heat flux between soil layers 1 and 2 W/m^2 T + 285 FGR_ICE heat flux into soil/snow including snow melt and lake / snow light transmission (ice landunits W/m^2 F + 286 FGR_R Rural heat flux into soil/snow including snow melt and snow light transmission W/m^2 F + 287 FGR_SOIL_R Rural downward heat flux at interface below each soil layer watt/m^2 F + 288 FGR_U Urban heat flux into soil/snow including snow melt W/m^2 F + 289 FH2OSFC fraction of ground covered by surface water unitless T + 290 FH2OSFC_NOSNOW fraction of ground covered by surface water (if no snow present) unitless F + 291 FINUNDATED fractional inundated area of vegetated columns unitless T + 292 FINUNDATED_LAG time-lagged inundated fraction of vegetated columns unitless F + 293 FIRA net infrared (longwave) radiation W/m^2 T + 294 FIRA_ICE net infrared (longwave) radiation (ice landunits only) W/m^2 F + 295 FIRA_R Rural net infrared (longwave) radiation W/m^2 T + 296 FIRA_U Urban net infrared (longwave) radiation W/m^2 F + 297 FIRE emitted infrared (longwave) radiation W/m^2 T + 298 FIRE_ICE emitted infrared (longwave) radiation (ice landunits only) W/m^2 F + 299 FIRE_R Rural emitted infrared (longwave) radiation W/m^2 T + 300 FIRE_U Urban emitted infrared (longwave) radiation W/m^2 F + 301 FLDS atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 T + 302 FLDS_ICE atmospheric longwave radiation (downscaled to columns in glacier regions) (ice landunits only) W/m^2 F + 303 FMAX_DENIT_CARBONSUBSTRATE FMAX_DENIT_CARBONSUBSTRATE gN/m^3/s F + 304 FMAX_DENIT_NITRATE FMAX_DENIT_NITRATE gN/m^3/s F + 305 FPI fraction of potential immobilization proportion T + 306 FPI_vr fraction of potential immobilization proportion F + 307 FPSN photosynthesis umol m-2 s-1 T + 308 FPSN24 24 hour accumulative patch photosynthesis starting from mid-night umol CO2/m^2 ground/day F + 309 FPSN_WC Rubisco-limited photosynthesis umol m-2 s-1 F + 310 FPSN_WJ RuBP-limited photosynthesis umol m-2 s-1 F + 311 FPSN_WP Product-limited photosynthesis umol m-2 s-1 F + 312 FRAC_ICEOLD fraction of ice relative to the tot water proportion F + 313 FREE_RETRANSN_TO_NPOOL deployment of retranslocated N gN/m^2/s T + 314 FROOTC fine root C gC/m^2 T + 315 FROOTC_ALLOC fine root C allocation gC/m^2/s T + 316 FROOTC_LOSS fine root C loss gC/m^2/s T + 317 FROOTC_STORAGE fine root C storage gC/m^2 F + 318 FROOTC_STORAGE_TO_XFER fine root C shift storage to transfer gC/m^2/s F + 319 FROOTC_TO_LITTER fine root C litterfall gC/m^2/s F + 320 FROOTC_XFER fine root C transfer gC/m^2 F + 321 FROOTC_XFER_TO_FROOTC fine root C growth from storage gC/m^2/s F + 322 FROOTN fine root N gN/m^2 T + 323 FROOTN_STORAGE fine root N storage gN/m^2 F + 324 FROOTN_STORAGE_TO_XFER fine root N shift storage to transfer gN/m^2/s F + 325 FROOTN_TO_LITTER fine root N litterfall gN/m^2/s F + 326 FROOTN_XFER fine root N transfer gN/m^2 F + 327 FROOTN_XFER_TO_FROOTN fine root N growth from storage gN/m^2/s F + 328 FROOT_MR fine root maintenance respiration gC/m^2/s F + 329 FROOT_PROF profile for litter C and N inputs from fine roots 1/m F + 330 FROST_TABLE frost table depth (natural vegetated and crop landunits only) m F + 331 FSA absorbed solar radiation W/m^2 T + 332 FSAT fractional area with water table at surface unitless T + 333 FSA_ICE absorbed solar radiation (ice landunits only) W/m^2 F + 334 FSA_R Rural absorbed solar radiation W/m^2 F + 335 FSA_U Urban absorbed solar radiation W/m^2 F + 336 FSD24 direct radiation (last 24hrs) K F + 337 FSD240 direct radiation (last 240hrs) K F + 338 FSDS atmospheric incident solar radiation W/m^2 T + 339 FSDSND direct nir incident solar radiation W/m^2 T + 340 FSDSNDLN direct nir incident solar radiation at local noon W/m^2 T + 341 FSDSNI diffuse nir incident solar radiation W/m^2 T + 342 FSDSVD direct vis incident solar radiation W/m^2 T + 343 FSDSVDLN direct vis incident solar radiation at local noon W/m^2 T + 344 FSDSVI diffuse vis incident solar radiation W/m^2 T + 345 FSDSVILN diffuse vis incident solar radiation at local noon W/m^2 T + 346 FSH sensible heat not including correction for land use change and rain/snow conversion W/m^2 T + 347 FSH_G sensible heat from ground W/m^2 T + 348 FSH_ICE sensible heat not including correction for land use change and rain/snow conversion (ice landu W/m^2 F + 349 FSH_PRECIP_CONVERSION Sensible heat flux from conversion of rain/snow atm forcing W/m^2 T + 350 FSH_R Rural sensible heat W/m^2 T + 351 FSH_RUNOFF_ICE_TO_LIQ sensible heat flux generated from conversion of ice runoff to liquid W/m^2 T + 352 FSH_TO_COUPLER sensible heat sent to coupler (includes corrections for land use change, rain/snow conversion W/m^2 T + 353 FSH_U Urban sensible heat W/m^2 F + 354 FSH_V sensible heat from veg W/m^2 T + 355 FSI24 indirect radiation (last 24hrs) K F + 356 FSI240 indirect radiation (last 240hrs) K F + 357 FSM snow melt heat flux W/m^2 T + 358 FSM_ICE snow melt heat flux (ice landunits only) W/m^2 F + 359 FSM_R Rural snow melt heat flux W/m^2 F + 360 FSM_U Urban snow melt heat flux W/m^2 F + 361 FSNO fraction of ground covered by snow unitless T + 362 FSNO_EFF effective fraction of ground covered by snow unitless T + 363 FSNO_ICE fraction of ground covered by snow (ice landunits only) unitless F + 364 FSR reflected solar radiation W/m^2 T + 365 FSRND direct nir reflected solar radiation W/m^2 T + 366 FSRNDLN direct nir reflected solar radiation at local noon W/m^2 T + 367 FSRNI diffuse nir reflected solar radiation W/m^2 T + 368 FSRSF reflected solar radiation W/m^2 T + 369 FSRSFND direct nir reflected solar radiation W/m^2 T + 370 FSRSFNDLN direct nir reflected solar radiation at local noon W/m^2 T + 371 FSRSFNI diffuse nir reflected solar radiation W/m^2 T + 372 FSRSFVD direct vis reflected solar radiation W/m^2 T + 373 FSRSFVDLN direct vis reflected solar radiation at local noon W/m^2 T + 374 FSRSFVI diffuse vis reflected solar radiation W/m^2 T + 375 FSRVD direct vis reflected solar radiation W/m^2 T + 376 FSRVDLN direct vis reflected solar radiation at local noon W/m^2 T + 377 FSRVI diffuse vis reflected solar radiation W/m^2 T + 378 FSR_ICE reflected solar radiation (ice landunits only) W/m^2 F + 379 FSUN sunlit fraction of canopy proportion F + 380 FSUN24 fraction sunlit (last 24hrs) K F + 381 FSUN240 fraction sunlit (last 240hrs) K F + 382 FUELC fuel load gC/m^2 T + 383 FV friction velocity for dust model m/s F + 384 FWET fraction of canopy that is wet proportion F + 385 F_DENIT denitrification flux gN/m^2/s T + 386 F_DENIT_BASE F_DENIT_BASE gN/m^3/s F + 387 F_DENIT_vr denitrification flux gN/m^3/s F + 388 F_N2O_DENIT denitrification N2O flux gN/m^2/s T + 389 F_N2O_NIT nitrification N2O flux gN/m^2/s T + 390 F_NIT nitrification flux gN/m^2/s T + 391 F_NIT_vr nitrification flux gN/m^3/s F + 392 FireComp_BC fire emissions flux of BC kg/m2/sec F + 393 FireComp_OC fire emissions flux of OC kg/m2/sec F + 394 FireComp_SO2 fire emissions flux of SO2 kg/m2/sec F + 395 FireEmis_TOT Total fire emissions flux gC/m2/sec F + 396 FireEmis_ZTOP Top of vertical fire emissions distribution m F + 397 FireMech_SO2 fire emissions flux of SO2 kg/m2/sec F + 398 FireMech_bc_a1 fire emissions flux of bc_a1 kg/m2/sec F + 399 FireMech_pom_a1 fire emissions flux of pom_a1 kg/m2/sec F + 400 GAMMA total gamma for VOC calc non F + 401 GAMMAA gamma A for VOC calc non F + 402 GAMMAC gamma C for VOC calc non F + 403 GAMMAL gamma L for VOC calc non F + 404 GAMMAP gamma P for VOC calc non F + 405 GAMMAS gamma S for VOC calc non F + 406 GAMMAT gamma T for VOC calc non F + 407 GDD0 Growing degree days base 0C from planting ddays F + 408 GDD020 Twenty year average of growing degree days base 0C from planting ddays F + 409 GDD10 Growing degree days base 10C from planting ddays F + 410 GDD1020 Twenty year average of growing degree days base 10C from planting ddays F + 411 GDD8 Growing degree days base 8C from planting ddays F + 412 GDD820 Twenty year average of growing degree days base 8C from planting ddays F + 413 GDDHARV Growing degree days (gdd) needed to harvest ddays F + 414 GDDPLANT Accumulated growing degree days past planting date for crop ddays F + 415 GDDTSOI Growing degree-days from planting (top two soil layers) ddays F + 416 GPP gross primary production gC/m^2/s T + 417 GR total growth respiration gC/m^2/s T + 418 GRAINC grain C (does not equal yield) gC/m^2 T + 419 GRAINC_TO_FOOD grain C to food gC/m^2/s T + 420 GRAINC_TO_SEED grain C to seed gC/m^2/s T + 421 GRAINN grain N gN/m^2 T + 422 GRESP_STORAGE growth respiration storage gC/m^2 F + 423 GRESP_STORAGE_TO_XFER growth respiration shift storage to transfer gC/m^2/s F + 424 GRESP_XFER growth respiration transfer gC/m^2 F + 425 GROSS_NMIN gross rate of N mineralization gN/m^2/s T + 426 GROSS_NMIN_vr gross rate of N mineralization gN/m^3/s F + 427 GSSHA shaded leaf stomatal conductance umol H20/m2/s T + 428 GSSHALN shaded leaf stomatal conductance at local noon umol H20/m2/s T + 429 GSSUN sunlit leaf stomatal conductance umol H20/m2/s T + 430 GSSUNLN sunlit leaf stomatal conductance at local noon umol H20/m2/s T + 431 H2OCAN intercepted water mm T + 432 H2OSFC surface water depth mm T + 433 H2OSNO snow depth (liquid water) mm T + 434 H2OSNO_ICE snow depth (liquid water, ice landunits only) mm F + 435 H2OSNO_TOP mass of snow in top snow layer kg/m2 T + 436 H2OSOI volumetric soil water (natural vegetated and crop landunits only) mm3/mm3 T + 437 HBOT canopy bottom m F + 438 HEAT_CONTENT1 initial gridcell total heat content J/m^2 T + 439 HEAT_CONTENT1_VEG initial gridcell total heat content - natural vegetated and crop landunits only J/m^2 F + 440 HEAT_CONTENT2 post land cover change total heat content J/m^2 F + 441 HEAT_FROM_AC sensible heat flux put into canyon due to heat removed from air conditioning W/m^2 T + 442 HIA 2 m NWS Heat Index C T + 443 HIA_R Rural 2 m NWS Heat Index C T + 444 HIA_U Urban 2 m NWS Heat Index C T + 445 HK hydraulic conductivity (natural vegetated and crop landunits only) mm/s F + 446 HR total heterotrophic respiration gC/m^2/s T + 447 HR_vr total vertically resolved heterotrophic respiration gC/m^3/s T + 448 HTOP canopy top m T + 449 HUMIDEX 2 m Humidex C T + 450 HUMIDEX_R Rural 2 m Humidex C T + 451 HUMIDEX_U Urban 2 m Humidex C T + 452 ICE_CONTENT1 initial gridcell total ice content mm T + 453 ICE_CONTENT2 post land cover change total ice content mm F + 454 ICE_MODEL_FRACTION Ice sheet model fractional coverage unitless F + 455 INIT_GPP GPP flux before downregulation gC/m^2/s F + 456 INT_SNOW accumulated swe (natural vegetated and crop landunits only) mm F + 457 INT_SNOW_ICE accumulated swe (ice landunits only) mm F + 458 JMX25T canopy profile of jmax umol/m2/s T + 459 Jmx25Z maximum rate of electron transport at 25 Celcius for canopy layers umol electrons/m2/s T + 460 KROOT root conductance each soil layer 1/s F + 461 KSOIL soil conductance in each soil layer 1/s F + 462 K_ACT_SOM active soil organic potential loss coefficient 1/s F + 463 K_CEL_LIT cellulosic litter potential loss coefficient 1/s F + 464 K_CWD coarse woody debris potential loss coefficient 1/s F + 465 K_LIG_LIT lignin litter potential loss coefficient 1/s F + 466 K_MET_LIT metabolic litter potential loss coefficient 1/s F + 467 K_NITR K_NITR 1/s F + 468 K_NITR_H2O K_NITR_H2O unitless F + 469 K_NITR_PH K_NITR_PH unitless F + 470 K_NITR_T K_NITR_T unitless F + 471 K_PAS_SOM passive soil organic potential loss coefficient 1/s F + 472 K_SLO_SOM slow soil organic ma potential loss coefficient 1/s F + 473 LAI240 240hr average of leaf area index m^2/m^2 F + 474 LAISHA shaded projected leaf area index m^2/m^2 T + 475 LAISUN sunlit projected leaf area index m^2/m^2 T + 476 LAKEICEFRAC lake layer ice mass fraction unitless F + 477 LAKEICEFRAC_SURF surface lake layer ice mass fraction unitless T + 478 LAKEICETHICK thickness of lake ice (including physical expansion on freezing) m T + 479 LAND_USE_FLUX total C emitted from land cover conversion (smoothed over the year) and wood and grain product gC/m^2/s T + 480 LATBASET latitude vary base temperature for gddplant degree C F + 481 LEAFC leaf C gC/m^2 T + 482 LEAFCN Leaf CN ratio used for flexible CN gC/gN T + 483 LEAFCN_OFFSET Leaf C:N used by FUN unitless F + 484 LEAFCN_STORAGE Storage Leaf CN ratio used for flexible CN gC/gN F + 485 LEAFC_ALLOC leaf C allocation gC/m^2/s T + 486 LEAFC_CHANGE C change in leaf gC/m^2/s T + 487 LEAFC_LOSS leaf C loss gC/m^2/s T + 488 LEAFC_STORAGE leaf C storage gC/m^2 F + 489 LEAFC_STORAGE_TO_XFER leaf C shift storage to transfer gC/m^2/s F + 490 LEAFC_STORAGE_XFER_ACC Accumulated leaf C transfer gC/m^2 F + 491 LEAFC_TO_BIOFUELC leaf C to biofuel C gC/m^2/s T + 492 LEAFC_TO_LITTER leaf C litterfall gC/m^2/s F + 493 LEAFC_TO_LITTER_FUN leaf C litterfall used by FUN gC/m^2/s T + 494 LEAFC_XFER leaf C transfer gC/m^2 F + 495 LEAFC_XFER_TO_LEAFC leaf C growth from storage gC/m^2/s F + 496 LEAFN leaf N gN/m^2 T + 497 LEAFN_STORAGE leaf N storage gN/m^2 F + 498 LEAFN_STORAGE_TO_XFER leaf N shift storage to transfer gN/m^2/s F + 499 LEAFN_STORAGE_XFER_ACC Accmulated leaf N transfer gN/m^2 F + 500 LEAFN_TO_LITTER leaf N litterfall gN/m^2/s T + 501 LEAFN_TO_RETRANSN leaf N to retranslocated N pool gN/m^2/s F + 502 LEAFN_XFER leaf N transfer gN/m^2 F + 503 LEAFN_XFER_TO_LEAFN leaf N growth from storage gN/m^2/s F + 504 LEAF_MR leaf maintenance respiration gC/m^2/s T + 505 LEAF_PROF profile for litter C and N inputs from leaves 1/m F + 506 LFC2 conversion area fraction of BET and BDT that burned per sec T + 507 LGSF long growing season factor proportion F + 508 LIG_LITC LIG_LIT C gC/m^2 T + 509 LIG_LITC_1m LIG_LIT C to 1 meter gC/m^2 F + 510 LIG_LITC_TNDNCY_VERT_TRA lignin litter C tendency due to vertical transport gC/m^3/s F + 511 LIG_LITC_TO_SLO_SOMC decomp. of lignin litter C to slow soil organic ma C gC/m^2/s F + 512 LIG_LITC_TO_SLO_SOMC_vr decomp. of lignin litter C to slow soil organic ma C gC/m^3/s F + 513 LIG_LITC_vr LIG_LIT C (vertically resolved) gC/m^3 T + 514 LIG_LITN LIG_LIT N gN/m^2 T + 515 LIG_LITN_1m LIG_LIT N to 1 meter gN/m^2 F + 516 LIG_LITN_TNDNCY_VERT_TRA lignin litter N tendency due to vertical transport gN/m^3/s F + 517 LIG_LITN_TO_SLO_SOMN decomp. of lignin litter N to slow soil organic ma N gN/m^2 F + 518 LIG_LITN_TO_SLO_SOMN_vr decomp. of lignin litter N to slow soil organic ma N gN/m^3 F + 519 LIG_LITN_vr LIG_LIT N (vertically resolved) gN/m^3 T + 520 LIG_LIT_HR Het. Resp. from lignin litter gC/m^2/s F + 521 LIG_LIT_HR_vr Het. Resp. from lignin litter gC/m^3/s F + 522 LIQCAN intercepted liquid water mm T + 523 LIQUID_CONTENT1 initial gridcell total liq content mm T + 524 LIQUID_CONTENT2 post landuse change gridcell total liq content mm F + 525 LIQUID_WATER_TEMP1 initial gridcell weighted average liquid water temperature K F + 526 LITFALL litterfall (leaves and fine roots) gC/m^2/s T + 527 LITFIRE litter fire losses gC/m^2/s F + 528 LITTERC_HR litter C heterotrophic respiration gC/m^2/s T + 529 LITTERC_LOSS litter C loss gC/m^2/s T + 530 LIVECROOTC live coarse root C gC/m^2 T + 531 LIVECROOTC_STORAGE live coarse root C storage gC/m^2 F + 532 LIVECROOTC_STORAGE_TO_XFER live coarse root C shift storage to transfer gC/m^2/s F + 533 LIVECROOTC_TO_DEADCROOTC live coarse root C turnover gC/m^2/s F + 534 LIVECROOTC_XFER live coarse root C transfer gC/m^2 F + 535 LIVECROOTC_XFER_TO_LIVECROOTC live coarse root C growth from storage gC/m^2/s F + 536 LIVECROOTN live coarse root N gN/m^2 T + 537 LIVECROOTN_STORAGE live coarse root N storage gN/m^2 F + 538 LIVECROOTN_STORAGE_TO_XFER live coarse root N shift storage to transfer gN/m^2/s F + 539 LIVECROOTN_TO_DEADCROOTN live coarse root N turnover gN/m^2/s F + 540 LIVECROOTN_TO_RETRANSN live coarse root N to retranslocated N pool gN/m^2/s F + 541 LIVECROOTN_XFER live coarse root N transfer gN/m^2 F + 542 LIVECROOTN_XFER_TO_LIVECROOTN live coarse root N growth from storage gN/m^2/s F + 543 LIVECROOT_MR live coarse root maintenance respiration gC/m^2/s F + 544 LIVESTEMC live stem C gC/m^2 T + 545 LIVESTEMC_STORAGE live stem C storage gC/m^2 F + 546 LIVESTEMC_STORAGE_TO_XFER live stem C shift storage to transfer gC/m^2/s F + 547 LIVESTEMC_TO_BIOFUELC livestem C to biofuel C gC/m^2/s T + 548 LIVESTEMC_TO_DEADSTEMC live stem C turnover gC/m^2/s F + 549 LIVESTEMC_XFER live stem C transfer gC/m^2 F + 550 LIVESTEMC_XFER_TO_LIVESTEMC live stem C growth from storage gC/m^2/s F + 551 LIVESTEMN live stem N gN/m^2 T + 552 LIVESTEMN_STORAGE live stem N storage gN/m^2 F + 553 LIVESTEMN_STORAGE_TO_XFER live stem N shift storage to transfer gN/m^2/s F + 554 LIVESTEMN_TO_DEADSTEMN live stem N turnover gN/m^2/s F + 555 LIVESTEMN_TO_RETRANSN live stem N to retranslocated N pool gN/m^2/s F + 556 LIVESTEMN_XFER live stem N transfer gN/m^2 F + 557 LIVESTEMN_XFER_TO_LIVESTEMN live stem N growth from storage gN/m^2/s F + 558 LIVESTEM_MR live stem maintenance respiration gC/m^2/s F + 559 LNC leaf N concentration gN leaf/m^2 T + 560 LWdown atmospheric longwave radiation (downscaled to columns in glacier regions) W/m^2 F + 561 LWup upwelling longwave radiation W/m^2 F + 562 MEG_acetaldehyde MEGAN flux kg/m2/sec T + 563 MEG_acetic_acid MEGAN flux kg/m2/sec T + 564 MEG_acetone MEGAN flux kg/m2/sec T + 565 MEG_carene_3 MEGAN flux kg/m2/sec T + 566 MEG_ethanol MEGAN flux kg/m2/sec T + 567 MEG_formaldehyde MEGAN flux kg/m2/sec T + 568 MEG_isoprene MEGAN flux kg/m2/sec T + 569 MEG_methanol MEGAN flux kg/m2/sec T + 570 MEG_pinene_a MEGAN flux kg/m2/sec T + 571 MEG_thujene_a MEGAN flux kg/m2/sec T + 572 MET_LITC MET_LIT C gC/m^2 T + 573 MET_LITC_1m MET_LIT C to 1 meter gC/m^2 F + 574 MET_LITC_TNDNCY_VERT_TRA metabolic litter C tendency due to vertical transport gC/m^3/s F + 575 MET_LITC_TO_ACT_SOMC decomp. of metabolic litter C to active soil organic C gC/m^2/s F + 576 MET_LITC_TO_ACT_SOMC_vr decomp. of metabolic litter C to active soil organic C gC/m^3/s F + 577 MET_LITC_vr MET_LIT C (vertically resolved) gC/m^3 T + 578 MET_LITN MET_LIT N gN/m^2 T + 579 MET_LITN_1m MET_LIT N to 1 meter gN/m^2 F + 580 MET_LITN_TNDNCY_VERT_TRA metabolic litter N tendency due to vertical transport gN/m^3/s F + 581 MET_LITN_TO_ACT_SOMN decomp. of metabolic litter N to active soil organic N gN/m^2 F + 582 MET_LITN_TO_ACT_SOMN_vr decomp. of metabolic litter N to active soil organic N gN/m^3 F + 583 MET_LITN_vr MET_LIT N (vertically resolved) gN/m^3 T + 584 MET_LIT_HR Het. Resp. from metabolic litter gC/m^2/s F + 585 MET_LIT_HR_vr Het. Resp. from metabolic litter gC/m^3/s F + 586 MR maintenance respiration gC/m^2/s T + 587 M_ACT_SOMC_TO_LEACHING active soil organic C leaching loss gC/m^2/s F + 588 M_ACT_SOMN_TO_LEACHING active soil organic N leaching loss gN/m^2/s F + 589 M_CEL_LITC_TO_FIRE cellulosic litter C fire loss gC/m^2/s F + 590 M_CEL_LITC_TO_FIRE_vr cellulosic litter C fire loss gC/m^3/s F + 591 M_CEL_LITC_TO_LEACHING cellulosic litter C leaching loss gC/m^2/s F + 592 M_CEL_LITN_TO_FIRE cellulosic litter N fire loss gN/m^2 F + 593 M_CEL_LITN_TO_FIRE_vr cellulosic litter N fire loss gN/m^3 F + 594 M_CEL_LITN_TO_LEACHING cellulosic litter N leaching loss gN/m^2/s F + 595 M_CWDC_TO_FIRE coarse woody debris C fire loss gC/m^2/s F + 596 M_CWDC_TO_FIRE_vr coarse woody debris C fire loss gC/m^3/s F + 597 M_CWDN_TO_FIRE coarse woody debris N fire loss gN/m^2 F + 598 M_CWDN_TO_FIRE_vr coarse woody debris N fire loss gN/m^3 F + 599 M_DEADCROOTC_STORAGE_TO_LITTER dead coarse root C storage mortality gC/m^2/s F + 600 M_DEADCROOTC_STORAGE_TO_LITTER_FIRE dead coarse root C storage fire mortality to litter gC/m^2/s F + 601 M_DEADCROOTC_TO_LITTER dead coarse root C mortality gC/m^2/s F + 602 M_DEADCROOTC_XFER_TO_LITTER dead coarse root C transfer mortality gC/m^2/s F + 603 M_DEADCROOTN_STORAGE_TO_FIRE dead coarse root N storage fire loss gN/m^2/s F + 604 M_DEADCROOTN_STORAGE_TO_LITTER dead coarse root N storage mortality gN/m^2/s F + 605 M_DEADCROOTN_TO_FIRE dead coarse root N fire loss gN/m^2/s F + 606 M_DEADCROOTN_TO_LITTER dead coarse root N mortality gN/m^2/s F + 607 M_DEADCROOTN_TO_LITTER_FIRE dead coarse root N fire mortality to litter gN/m^2/s F + 608 M_DEADCROOTN_XFER_TO_FIRE dead coarse root N transfer fire loss gN/m^2/s F + 609 M_DEADCROOTN_XFER_TO_LITTER dead coarse root N transfer mortality gN/m^2/s F + 610 M_DEADROOTC_STORAGE_TO_FIRE dead root C storage fire loss gC/m^2/s F + 611 M_DEADROOTC_STORAGE_TO_LITTER_FIRE dead root C storage fire mortality to litter gC/m^2/s F + 612 M_DEADROOTC_TO_FIRE dead root C fire loss gC/m^2/s F + 613 M_DEADROOTC_TO_LITTER_FIRE dead root C fire mortality to litter gC/m^2/s F + 614 M_DEADROOTC_XFER_TO_FIRE dead root C transfer fire loss gC/m^2/s F + 615 M_DEADROOTC_XFER_TO_LITTER_FIRE dead root C transfer fire mortality to litter gC/m^2/s F + 616 M_DEADSTEMC_STORAGE_TO_FIRE dead stem C storage fire loss gC/m^2/s F + 617 M_DEADSTEMC_STORAGE_TO_LITTER dead stem C storage mortality gC/m^2/s F + 618 M_DEADSTEMC_STORAGE_TO_LITTER_FIRE dead stem C storage fire mortality to litter gC/m^2/s F + 619 M_DEADSTEMC_TO_FIRE dead stem C fire loss gC/m^2/s F + 620 M_DEADSTEMC_TO_LITTER dead stem C mortality gC/m^2/s F + 621 M_DEADSTEMC_TO_LITTER_FIRE dead stem C fire mortality to litter gC/m^2/s F + 622 M_DEADSTEMC_XFER_TO_FIRE dead stem C transfer fire loss gC/m^2/s F + 623 M_DEADSTEMC_XFER_TO_LITTER dead stem C transfer mortality gC/m^2/s F + 624 M_DEADSTEMC_XFER_TO_LITTER_FIRE dead stem C transfer fire mortality to litter gC/m^2/s F + 625 M_DEADSTEMN_STORAGE_TO_FIRE dead stem N storage fire loss gN/m^2/s F + 626 M_DEADSTEMN_STORAGE_TO_LITTER dead stem N storage mortality gN/m^2/s F + 627 M_DEADSTEMN_TO_FIRE dead stem N fire loss gN/m^2/s F + 628 M_DEADSTEMN_TO_LITTER dead stem N mortality gN/m^2/s F + 629 M_DEADSTEMN_TO_LITTER_FIRE dead stem N fire mortality to litter gN/m^2/s F + 630 M_DEADSTEMN_XFER_TO_FIRE dead stem N transfer fire loss gN/m^2/s F + 631 M_DEADSTEMN_XFER_TO_LITTER dead stem N transfer mortality gN/m^2/s F + 632 M_FROOTC_STORAGE_TO_FIRE fine root C storage fire loss gC/m^2/s F + 633 M_FROOTC_STORAGE_TO_LITTER fine root C storage mortality gC/m^2/s F + 634 M_FROOTC_STORAGE_TO_LITTER_FIRE fine root C storage fire mortality to litter gC/m^2/s F + 635 M_FROOTC_TO_FIRE fine root C fire loss gC/m^2/s F + 636 M_FROOTC_TO_LITTER fine root C mortality gC/m^2/s F + 637 M_FROOTC_TO_LITTER_FIRE fine root C fire mortality to litter gC/m^2/s F + 638 M_FROOTC_XFER_TO_FIRE fine root C transfer fire loss gC/m^2/s F + 639 M_FROOTC_XFER_TO_LITTER fine root C transfer mortality gC/m^2/s F + 640 M_FROOTC_XFER_TO_LITTER_FIRE fine root C transfer fire mortality to litter gC/m^2/s F + 641 M_FROOTN_STORAGE_TO_FIRE fine root N storage fire loss gN/m^2/s F + 642 M_FROOTN_STORAGE_TO_LITTER fine root N storage mortality gN/m^2/s F + 643 M_FROOTN_TO_FIRE fine root N fire loss gN/m^2/s F + 644 M_FROOTN_TO_LITTER fine root N mortality gN/m^2/s F + 645 M_FROOTN_XFER_TO_FIRE fine root N transfer fire loss gN/m^2/s F + 646 M_FROOTN_XFER_TO_LITTER fine root N transfer mortality gN/m^2/s F + 647 M_GRESP_STORAGE_TO_FIRE growth respiration storage fire loss gC/m^2/s F + 648 M_GRESP_STORAGE_TO_LITTER growth respiration storage mortality gC/m^2/s F + 649 M_GRESP_STORAGE_TO_LITTER_FIRE growth respiration storage fire mortality to litter gC/m^2/s F + 650 M_GRESP_XFER_TO_FIRE growth respiration transfer fire loss gC/m^2/s F + 651 M_GRESP_XFER_TO_LITTER growth respiration transfer mortality gC/m^2/s F + 652 M_GRESP_XFER_TO_LITTER_FIRE growth respiration transfer fire mortality to litter gC/m^2/s F + 653 M_LEAFC_STORAGE_TO_FIRE leaf C storage fire loss gC/m^2/s F + 654 M_LEAFC_STORAGE_TO_LITTER leaf C storage mortality gC/m^2/s F + 655 M_LEAFC_STORAGE_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F + 656 M_LEAFC_TO_FIRE leaf C fire loss gC/m^2/s F + 657 M_LEAFC_TO_LITTER leaf C mortality gC/m^2/s F + 658 M_LEAFC_TO_LITTER_FIRE leaf C fire mortality to litter gC/m^2/s F + 659 M_LEAFC_XFER_TO_FIRE leaf C transfer fire loss gC/m^2/s F + 660 M_LEAFC_XFER_TO_LITTER leaf C transfer mortality gC/m^2/s F + 661 M_LEAFC_XFER_TO_LITTER_FIRE leaf C transfer fire mortality to litter gC/m^2/s F + 662 M_LEAFN_STORAGE_TO_FIRE leaf N storage fire loss gN/m^2/s F + 663 M_LEAFN_STORAGE_TO_LITTER leaf N storage mortality gN/m^2/s F + 664 M_LEAFN_TO_FIRE leaf N fire loss gN/m^2/s F + 665 M_LEAFN_TO_LITTER leaf N mortality gN/m^2/s F + 666 M_LEAFN_XFER_TO_FIRE leaf N transfer fire loss gN/m^2/s F + 667 M_LEAFN_XFER_TO_LITTER leaf N transfer mortality gN/m^2/s F + 668 M_LIG_LITC_TO_FIRE lignin litter C fire loss gC/m^2/s F + 669 M_LIG_LITC_TO_FIRE_vr lignin litter C fire loss gC/m^3/s F + 670 M_LIG_LITC_TO_LEACHING lignin litter C leaching loss gC/m^2/s F + 671 M_LIG_LITN_TO_FIRE lignin litter N fire loss gN/m^2 F + 672 M_LIG_LITN_TO_FIRE_vr lignin litter N fire loss gN/m^3 F + 673 M_LIG_LITN_TO_LEACHING lignin litter N leaching loss gN/m^2/s F + 674 M_LIVECROOTC_STORAGE_TO_LITTER live coarse root C storage mortality gC/m^2/s F + 675 M_LIVECROOTC_STORAGE_TO_LITTER_FIRE live coarse root C fire mortality to litter gC/m^2/s F + 676 M_LIVECROOTC_TO_LITTER live coarse root C mortality gC/m^2/s F + 677 M_LIVECROOTC_XFER_TO_LITTER live coarse root C transfer mortality gC/m^2/s F + 678 M_LIVECROOTN_STORAGE_TO_FIRE live coarse root N storage fire loss gN/m^2/s F + 679 M_LIVECROOTN_STORAGE_TO_LITTER live coarse root N storage mortality gN/m^2/s F + 680 M_LIVECROOTN_TO_FIRE live coarse root N fire loss gN/m^2/s F + 681 M_LIVECROOTN_TO_LITTER live coarse root N mortality gN/m^2/s F + 682 M_LIVECROOTN_XFER_TO_FIRE live coarse root N transfer fire loss gN/m^2/s F + 683 M_LIVECROOTN_XFER_TO_LITTER live coarse root N transfer mortality gN/m^2/s F + 684 M_LIVEROOTC_STORAGE_TO_FIRE live root C storage fire loss gC/m^2/s F + 685 M_LIVEROOTC_STORAGE_TO_LITTER_FIRE live root C storage fire mortality to litter gC/m^2/s F + 686 M_LIVEROOTC_TO_DEADROOTC_FIRE live root C fire mortality to dead root C gC/m^2/s F + 687 M_LIVEROOTC_TO_FIRE live root C fire loss gC/m^2/s F + 688 M_LIVEROOTC_TO_LITTER_FIRE live root C fire mortality to litter gC/m^2/s F + 689 M_LIVEROOTC_XFER_TO_FIRE live root C transfer fire loss gC/m^2/s F + 690 M_LIVEROOTC_XFER_TO_LITTER_FIRE live root C transfer fire mortality to litter gC/m^2/s F + 691 M_LIVESTEMC_STORAGE_TO_FIRE live stem C storage fire loss gC/m^2/s F + 692 M_LIVESTEMC_STORAGE_TO_LITTER live stem C storage mortality gC/m^2/s F + 693 M_LIVESTEMC_STORAGE_TO_LITTER_FIRE live stem C storage fire mortality to litter gC/m^2/s F + 694 M_LIVESTEMC_TO_DEADSTEMC_FIRE live stem C fire mortality to dead stem C gC/m^2/s F + 695 M_LIVESTEMC_TO_FIRE live stem C fire loss gC/m^2/s F + 696 M_LIVESTEMC_TO_LITTER live stem C mortality gC/m^2/s F + 697 M_LIVESTEMC_TO_LITTER_FIRE live stem C fire mortality to litter gC/m^2/s F + 698 M_LIVESTEMC_XFER_TO_FIRE live stem C transfer fire loss gC/m^2/s F + 699 M_LIVESTEMC_XFER_TO_LITTER live stem C transfer mortality gC/m^2/s F + 700 M_LIVESTEMC_XFER_TO_LITTER_FIRE live stem C transfer fire mortality to litter gC/m^2/s F + 701 M_LIVESTEMN_STORAGE_TO_FIRE live stem N storage fire loss gN/m^2/s F + 702 M_LIVESTEMN_STORAGE_TO_LITTER live stem N storage mortality gN/m^2/s F + 703 M_LIVESTEMN_TO_FIRE live stem N fire loss gN/m^2/s F + 704 M_LIVESTEMN_TO_LITTER live stem N mortality gN/m^2/s F + 705 M_LIVESTEMN_XFER_TO_FIRE live stem N transfer fire loss gN/m^2/s F + 706 M_LIVESTEMN_XFER_TO_LITTER live stem N transfer mortality gN/m^2/s F + 707 M_MET_LITC_TO_FIRE metabolic litter C fire loss gC/m^2/s F + 708 M_MET_LITC_TO_FIRE_vr metabolic litter C fire loss gC/m^3/s F + 709 M_MET_LITC_TO_LEACHING metabolic litter C leaching loss gC/m^2/s F + 710 M_MET_LITN_TO_FIRE metabolic litter N fire loss gN/m^2 F + 711 M_MET_LITN_TO_FIRE_vr metabolic litter N fire loss gN/m^3 F + 712 M_MET_LITN_TO_LEACHING metabolic litter N leaching loss gN/m^2/s F + 713 M_PAS_SOMC_TO_LEACHING passive soil organic C leaching loss gC/m^2/s F + 714 M_PAS_SOMN_TO_LEACHING passive soil organic N leaching loss gN/m^2/s F + 715 M_RETRANSN_TO_FIRE retranslocated N pool fire loss gN/m^2/s F + 716 M_RETRANSN_TO_LITTER retranslocated N pool mortality gN/m^2/s F + 717 M_SLO_SOMC_TO_LEACHING slow soil organic ma C leaching loss gC/m^2/s F + 718 M_SLO_SOMN_TO_LEACHING slow soil organic ma N leaching loss gN/m^2/s F + 719 NACTIVE Mycorrhizal N uptake flux gN/m^2/s T + 720 NACTIVE_NH4 Mycorrhizal N uptake flux gN/m^2/s T + 721 NACTIVE_NO3 Mycorrhizal N uptake flux gN/m^2/s T + 722 NAM AM-associated N uptake flux gN/m^2/s T + 723 NAM_NH4 AM-associated N uptake flux gN/m^2/s T + 724 NAM_NO3 AM-associated N uptake flux gN/m^2/s T + 725 NBP net biome production, includes fire, landuse, harvest and hrv_xsmrpool flux (latter smoothed o gC/m^2/s T + 726 NDEPLOY total N deployed in new growth gN/m^2/s T + 727 NDEP_PROF profile for atmospheric N deposition 1/m F + 728 NDEP_TO_SMINN atmospheric N deposition to soil mineral N gN/m^2/s T + 729 NECM ECM-associated N uptake flux gN/m^2/s T + 730 NECM_NH4 ECM-associated N uptake flux gN/m^2/s T + 731 NECM_NO3 ECM-associated N uptake flux gN/m^2/s T + 732 NEE net ecosystem exchange of carbon, includes fire and hrv_xsmrpool (latter smoothed over the yea gC/m^2/s T + 733 NEM Gridcell net adjustment to net carbon exchange passed to atm. for methane production gC/m2/s T + 734 NEP net ecosystem production, excludes fire, landuse, and harvest flux, positive for sink gC/m^2/s T + 735 NET_NMIN net rate of N mineralization gN/m^2/s T + 736 NET_NMIN_vr net rate of N mineralization gN/m^3/s F + 737 NFERTILIZATION fertilizer added gN/m^2/s T + 738 NFIRE fire counts valid only in Reg.C counts/km2/sec T + 739 NFIX Symbiotic BNF uptake flux gN/m^2/s T + 740 NFIXATION_PROF profile for biological N fixation 1/m F + 741 NFIX_TO_SMINN symbiotic/asymbiotic N fixation to soil mineral N gN/m^2/s F + 742 NNONMYC Non-mycorrhizal N uptake flux gN/m^2/s T + 743 NNONMYC_NH4 Non-mycorrhizal N uptake flux gN/m^2/s T + 744 NNONMYC_NO3 Non-mycorrhizal N uptake flux gN/m^2/s T + 745 NPASSIVE Passive N uptake flux gN/m^2/s T + 746 NPOOL temporary plant N pool gN/m^2 T + 747 NPOOL_TO_DEADCROOTN allocation to dead coarse root N gN/m^2/s F + 748 NPOOL_TO_DEADCROOTN_STORAGE allocation to dead coarse root N storage gN/m^2/s F + 749 NPOOL_TO_DEADSTEMN allocation to dead stem N gN/m^2/s F + 750 NPOOL_TO_DEADSTEMN_STORAGE allocation to dead stem N storage gN/m^2/s F + 751 NPOOL_TO_FROOTN allocation to fine root N gN/m^2/s F + 752 NPOOL_TO_FROOTN_STORAGE allocation to fine root N storage gN/m^2/s F + 753 NPOOL_TO_LEAFN allocation to leaf N gN/m^2/s F + 754 NPOOL_TO_LEAFN_STORAGE allocation to leaf N storage gN/m^2/s F + 755 NPOOL_TO_LIVECROOTN allocation to live coarse root N gN/m^2/s F + 756 NPOOL_TO_LIVECROOTN_STORAGE allocation to live coarse root N storage gN/m^2/s F + 757 NPOOL_TO_LIVESTEMN allocation to live stem N gN/m^2/s F + 758 NPOOL_TO_LIVESTEMN_STORAGE allocation to live stem N storage gN/m^2/s F + 759 NPP net primary production gC/m^2/s T + 760 NPP_BURNEDOFF C that cannot be used for N uptake gC/m^2/s F + 761 NPP_GROWTH Total C used for growth in FUN gC/m^2/s T + 762 NPP_NACTIVE Mycorrhizal N uptake used C gC/m^2/s T + 763 NPP_NACTIVE_NH4 Mycorrhizal N uptake use C gC/m^2/s T + 764 NPP_NACTIVE_NO3 Mycorrhizal N uptake used C gC/m^2/s T + 765 NPP_NAM AM-associated N uptake used C gC/m^2/s T + 766 NPP_NAM_NH4 AM-associated N uptake use C gC/m^2/s T + 767 NPP_NAM_NO3 AM-associated N uptake use C gC/m^2/s T + 768 NPP_NECM ECM-associated N uptake used C gC/m^2/s T + 769 NPP_NECM_NH4 ECM-associated N uptake use C gC/m^2/s T + 770 NPP_NECM_NO3 ECM-associated N uptake used C gC/m^2/s T + 771 NPP_NFIX Symbiotic BNF uptake used C gC/m^2/s T + 772 NPP_NNONMYC Non-mycorrhizal N uptake used C gC/m^2/s T + 773 NPP_NNONMYC_NH4 Non-mycorrhizal N uptake use C gC/m^2/s T + 774 NPP_NNONMYC_NO3 Non-mycorrhizal N uptake use C gC/m^2/s T + 775 NPP_NRETRANS Retranslocated N uptake flux gC/m^2/s T + 776 NPP_NUPTAKE Total C used by N uptake in FUN gC/m^2/s T + 777 NRETRANS Retranslocated N uptake flux gN/m^2/s T + 778 NRETRANS_REG Retranslocated N uptake flux gN/m^2/s T + 779 NRETRANS_SEASON Retranslocated N uptake flux gN/m^2/s T + 780 NRETRANS_STRESS Retranslocated N uptake flux gN/m^2/s T + 781 NSUBSTEPS number of adaptive timesteps in CLM timestep unitless F + 782 NUPTAKE Total N uptake of FUN gN/m^2/s T + 783 NUPTAKE_NPP_FRACTION frac of NPP used in N uptake - T + 784 N_ALLOMETRY N allocation index none F + 785 O2_DECOMP_DEPTH_UNSAT O2 consumption from HR and AR for non-inundated area mol/m3/s F + 786 OBU Monin-Obukhov length m F + 787 OCDEP total OC deposition (dry+wet) from atmosphere kg/m^2/s T + 788 OFFSET_COUNTER offset days counter days F + 789 OFFSET_FDD offset freezing degree days counter C degree-days F + 790 OFFSET_FLAG offset flag none F + 791 OFFSET_SWI offset soil water index none F + 792 ONSET_COUNTER onset days counter days F + 793 ONSET_FDD onset freezing degree days counter C degree-days F + 794 ONSET_FLAG onset flag none F + 795 ONSET_GDD onset growing degree days C degree-days F + 796 ONSET_GDDFLAG onset flag for growing degree day sum none F + 797 ONSET_SWI onset soil water index none F + 798 O_SCALAR fraction by which decomposition is reduced due to anoxia unitless T + 799 PAR240DZ 10-day running mean of daytime patch absorbed PAR for leaves for top canopy layer W/m^2 F + 800 PAR240XZ 10-day running mean of maximum patch absorbed PAR for leaves for top canopy layer W/m^2 F + 801 PAR240_shade shade PAR (240 hrs) umol/m2/s F + 802 PAR240_sun sunlit PAR (240 hrs) umol/m2/s F + 803 PAR24_shade shade PAR (24 hrs) umol/m2/s F + 804 PAR24_sun sunlit PAR (24 hrs) umol/m2/s F + 805 PARVEGLN absorbed par by vegetation at local noon W/m^2 T + 806 PAR_shade shade PAR umol/m2/s F + 807 PAR_sun sunlit PAR umol/m2/s F + 808 PAS_SOMC PAS_SOM C gC/m^2 T + 809 PAS_SOMC_1m PAS_SOM C to 1 meter gC/m^2 F + 810 PAS_SOMC_TNDNCY_VERT_TRA passive soil organic C tendency due to vertical transport gC/m^3/s F + 811 PAS_SOMC_TO_ACT_SOMC decomp. of passive soil organic C to active soil organic C gC/m^2/s F + 812 PAS_SOMC_TO_ACT_SOMC_vr decomp. of passive soil organic C to active soil organic C gC/m^3/s F + 813 PAS_SOMC_vr PAS_SOM C (vertically resolved) gC/m^3 T + 814 PAS_SOMN PAS_SOM N gN/m^2 T + 815 PAS_SOMN_1m PAS_SOM N to 1 meter gN/m^2 F + 816 PAS_SOMN_TNDNCY_VERT_TRA passive soil organic N tendency due to vertical transport gN/m^3/s F + 817 PAS_SOMN_TO_ACT_SOMN decomp. of passive soil organic N to active soil organic N gN/m^2 F + 818 PAS_SOMN_TO_ACT_SOMN_vr decomp. of passive soil organic N to active soil organic N gN/m^3 F + 819 PAS_SOMN_vr PAS_SOM N (vertically resolved) gN/m^3 T + 820 PAS_SOM_HR Het. Resp. from passive soil organic gC/m^2/s F + 821 PAS_SOM_HR_vr Het. Resp. from passive soil organic gC/m^3/s F 822 PBOT atmospheric pressure at surface (downscaled to columns in glacier regions) Pa T 823 PBOT_240 10 day running mean of air pressure Pa F 824 PCH4 atmospheric partial pressure of CH4 Pa T @@ -997,22 +997,22 @@ CTSM History Fields 988 SMINN_TO_PLANT plant uptake of soil mineral N gN/m^2/s T 989 SMINN_TO_PLANT_FUN Total soil N uptake of FUN gN/m^2/s T 990 SMINN_TO_PLANT_vr plant uptake of soil mineral N gN/m^3/s F - 991 SMINN_TO_S1N_L1 mineral N flux for decomp. of MET_LITto PAS_SOM gN/m^2 F - 992 SMINN_TO_S1N_L1_vr mineral N flux for decomp. of MET_LITto PAS_SOM gN/m^3 F - 993 SMINN_TO_S1N_L2 mineral N flux for decomp. of CEL_LITto PAS_SOM gN/m^2 F - 994 SMINN_TO_S1N_L2_vr mineral N flux for decomp. of CEL_LITto PAS_SOM gN/m^3 F - 995 SMINN_TO_S1N_S2 mineral N flux for decomp. of SLO_SOMto PAS_SOM gN/m^2 F - 996 SMINN_TO_S1N_S2_vr mineral N flux for decomp. of SLO_SOMto PAS_SOM gN/m^3 F - 997 SMINN_TO_S1N_S3 mineral N flux for decomp. of ACT_SOMto PAS_SOM gN/m^2 F - 998 SMINN_TO_S1N_S3_vr mineral N flux for decomp. of ACT_SOMto PAS_SOM gN/m^3 F + 991 SMINN_TO_S1N_L1 mineral N flux for decomp. of MET_LITto ACT_SOM gN/m^2 F + 992 SMINN_TO_S1N_L1_vr mineral N flux for decomp. of MET_LITto ACT_SOM gN/m^3 F + 993 SMINN_TO_S1N_L2 mineral N flux for decomp. of CEL_LITto ACT_SOM gN/m^2 F + 994 SMINN_TO_S1N_L2_vr mineral N flux for decomp. of CEL_LITto ACT_SOM gN/m^3 F + 995 SMINN_TO_S1N_S2 mineral N flux for decomp. of SLO_SOMto ACT_SOM gN/m^2 F + 996 SMINN_TO_S1N_S2_vr mineral N flux for decomp. of SLO_SOMto ACT_SOM gN/m^3 F + 997 SMINN_TO_S1N_S3 mineral N flux for decomp. of PAS_SOMto ACT_SOM gN/m^2 F + 998 SMINN_TO_S1N_S3_vr mineral N flux for decomp. of PAS_SOMto ACT_SOM gN/m^3 F 999 SMINN_TO_S2N_L3 mineral N flux for decomp. of LIG_LITto SLO_SOM gN/m^2 F 1000 SMINN_TO_S2N_L3_vr mineral N flux for decomp. of LIG_LITto SLO_SOM gN/m^3 F -1001 SMINN_TO_S2N_S1 mineral N flux for decomp. of PAS_SOMto SLO_SOM gN/m^2 F -1002 SMINN_TO_S2N_S1_vr mineral N flux for decomp. of PAS_SOMto SLO_SOM gN/m^3 F -1003 SMINN_TO_S3N_S1 mineral N flux for decomp. of PAS_SOMto ACT_SOM gN/m^2 F -1004 SMINN_TO_S3N_S1_vr mineral N flux for decomp. of PAS_SOMto ACT_SOM gN/m^3 F -1005 SMINN_TO_S3N_S2 mineral N flux for decomp. of SLO_SOMto ACT_SOM gN/m^2 F -1006 SMINN_TO_S3N_S2_vr mineral N flux for decomp. of SLO_SOMto ACT_SOM gN/m^3 F +1001 SMINN_TO_S2N_S1 mineral N flux for decomp. of ACT_SOMto SLO_SOM gN/m^2 F +1002 SMINN_TO_S2N_S1_vr mineral N flux for decomp. of ACT_SOMto SLO_SOM gN/m^3 F +1003 SMINN_TO_S3N_S1 mineral N flux for decomp. of ACT_SOMto PAS_SOM gN/m^2 F +1004 SMINN_TO_S3N_S1_vr mineral N flux for decomp. of ACT_SOMto PAS_SOM gN/m^3 F +1005 SMINN_TO_S3N_S2 mineral N flux for decomp. of SLO_SOMto PAS_SOM gN/m^2 F +1006 SMINN_TO_S3N_S2_vr mineral N flux for decomp. of SLO_SOMto PAS_SOM gN/m^3 F 1007 SMINN_vr soil mineral N gN/m^3 T 1008 SMIN_NH4 soil mineral NH4 gN/m^2 T 1009 SMIN_NH4_TO_PLANT plant uptake of NH4 gN/m^3/s F diff --git a/src/main/clm_varpar.F90 b/src/main/clm_varpar.F90 index 8c1033ca4e..cd4d4efac4 100644 --- a/src/main/clm_varpar.F90 +++ b/src/main/clm_varpar.F90 @@ -237,7 +237,7 @@ subroutine clm_varpar_init(actual_maxsoil_patches, actual_numcft) ! in InitAllocate (in SoilBiogeochemStateType) which is called earlier than ! init_decompcascade_bgc where they might have otherwise been derived on the ! fly. For reference, if they were determined in init_decompcascade_bgc: - ! ndecomp_pools would get the value of i_act_som or i_cwd and + ! ndecomp_pools would get the value of i_pas_som or i_cwd and ! ndecomp_cascade_transitions would get the value of i_s3s1 or i_cwdl3 ! depending on how use_fates is set. if ( use_fates ) then diff --git a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 index a0e05fe584..f6a2b50bfd 100644 --- a/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 +++ b/src/soilbiogeochem/SoilBiogeochemDecompCascadeBGCMod.F90 @@ -405,22 +405,22 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i errMsg(sourcefile, __LINE__)) end if - i_pas_som = i_lig_lit + 1 - floating_cn_ratio_decomp_pools(i_pas_som) = .false. - decomp_cascade_con%decomp_pool_name_restart(i_pas_som) = 'soil1' - decomp_cascade_con%decomp_pool_name_history(i_pas_som) = 'PAS_SOM' - decomp_cascade_con%decomp_pool_name_long(i_pas_som) = 'passive soil organic matter' - decomp_cascade_con%decomp_pool_name_short(i_pas_som) = 'S1' - is_litter(i_pas_som) = .false. - is_soil(i_pas_som) = .true. - is_cwd(i_pas_som) = .false. - initial_cn_ratio(i_pas_som) = cn_s1 - initial_stock(i_pas_som) = params_inst%initial_Cstocks(i_pas_som) - is_metabolic(i_pas_som) = .false. - is_cellulose(i_pas_som) = .false. - is_lignin(i_pas_som) = .false. + i_act_som = i_lig_lit + 1 + floating_cn_ratio_decomp_pools(i_act_som) = .false. + decomp_cascade_con%decomp_pool_name_restart(i_act_som) = 'soil1' + decomp_cascade_con%decomp_pool_name_history(i_act_som) = 'ACT_SOM' + decomp_cascade_con%decomp_pool_name_long(i_act_som) = 'active soil organic matter' + decomp_cascade_con%decomp_pool_name_short(i_act_som) = 'S1' + is_litter(i_act_som) = .false. + is_soil(i_act_som) = .true. + is_cwd(i_act_som) = .false. + initial_cn_ratio(i_act_som) = cn_s1 + initial_stock(i_act_som) = params_inst%initial_Cstocks(i_act_som) + is_metabolic(i_act_som) = .false. + is_cellulose(i_act_som) = .false. + is_lignin(i_act_som) = .false. - i_slo_som = i_pas_som + 1 + i_slo_som = i_act_som + 1 floating_cn_ratio_decomp_pools(i_slo_som) = .false. decomp_cascade_con%decomp_pool_name_restart(i_slo_som) = 'soil2' decomp_cascade_con%decomp_pool_name_history(i_slo_som) = 'SLO_SOM' @@ -435,24 +435,24 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i is_cellulose(i_slo_som) = .false. is_lignin(i_slo_som) = .false. - i_act_som = i_slo_som + 1 - floating_cn_ratio_decomp_pools(i_act_som) = .false. - decomp_cascade_con%decomp_pool_name_restart(i_act_som) = 'soil3' - decomp_cascade_con%decomp_pool_name_history(i_act_som) = 'ACT_SOM' - decomp_cascade_con%decomp_pool_name_long(i_act_som) = 'active soil organic matter' - decomp_cascade_con%decomp_pool_name_short(i_act_som) = 'S3' - is_litter(i_act_som) = .false. - is_soil(i_act_som) = .true. - is_cwd(i_act_som) = .false. - initial_cn_ratio(i_act_som) = cn_s3 - initial_stock(i_act_som) = params_inst%initial_Cstocks(i_act_som) - is_metabolic(i_act_som) = .false. - is_cellulose(i_act_som) = .false. - is_lignin(i_act_som) = .false. + i_pas_som = i_slo_som + 1 + floating_cn_ratio_decomp_pools(i_pas_som) = .false. + decomp_cascade_con%decomp_pool_name_restart(i_pas_som) = 'soil3' + decomp_cascade_con%decomp_pool_name_history(i_pas_som) = 'PAS_SOM' + decomp_cascade_con%decomp_pool_name_long(i_pas_som) = 'passive soil organic matter' + decomp_cascade_con%decomp_pool_name_short(i_pas_som) = 'S3' + is_litter(i_pas_som) = .false. + is_soil(i_pas_som) = .true. + is_cwd(i_pas_som) = .false. + initial_cn_ratio(i_pas_som) = cn_s3 + initial_stock(i_pas_som) = params_inst%initial_Cstocks(i_pas_som) + is_metabolic(i_pas_som) = .false. + is_cellulose(i_pas_som) = .false. + is_lignin(i_pas_som) = .false. if (.not. use_fates) then ! CWD - i_cwd = i_act_som + 1 + i_cwd = i_pas_som + 1 floating_cn_ratio_decomp_pools(i_cwd) = .true. decomp_cascade_con%decomp_pool_name_restart(i_cwd) = 'cwd' decomp_cascade_con%decomp_pool_name_history(i_cwd) = 'CWD' @@ -480,10 +480,10 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i spinup_factor(i_cwd) = max(1._r8, (speedup_fac * params_inst%tau_cwd_bgc / 2._r8 )) end if !som1 - spinup_factor(i_pas_som) = 1._r8 + spinup_factor(i_act_som) = 1._r8 !som2,3 spinup_factor(i_slo_som) = max(1._r8, (speedup_fac * params_inst%tau_s2_bgc)) - spinup_factor(i_act_som) = max(1._r8, (speedup_fac * params_inst%tau_s3_bgc)) + spinup_factor(i_pas_som) = max(1._r8, (speedup_fac * params_inst%tau_s3_bgc)) if ( masterproc ) then write(iulog,*) 'Spinup_state ',spinup_state @@ -495,14 +495,14 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i decomp_cascade_con%cascade_step_name(i_l1s1) = 'L1S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l1s1) = rf_l1s1 cascade_donor_pool(i_l1s1) = i_met_lit - cascade_receiver_pool(i_l1s1) = i_pas_som + cascade_receiver_pool(i_l1s1) = i_act_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l1s1) = 1.0_r8 i_l2s1 = 2 decomp_cascade_con%cascade_step_name(i_l2s1) = 'L2S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l2s1) = rf_l2s1 cascade_donor_pool(i_l2s1) = i_cel_lit - cascade_receiver_pool(i_l2s1) = i_pas_som + cascade_receiver_pool(i_l2s1) = i_act_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_l2s1)= 1.0_r8 i_l3s2 = 3 @@ -515,36 +515,36 @@ subroutine init_decompcascade_bgc(bounds, soilbiogeochem_state_inst, soilstate_i i_s1s2 = 4 decomp_cascade_con%cascade_step_name(i_s1s2) = 'S1S2' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s2) = rf_s1s2(bounds%begc:bounds%endc,1:nlevdecomp) - cascade_donor_pool(i_s1s2) = i_pas_som + cascade_donor_pool(i_s1s2) = i_act_som cascade_receiver_pool(i_s1s2) = i_slo_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s2) = f_s1s2(bounds%begc:bounds%endc,1:nlevdecomp) i_s1s3 = 5 decomp_cascade_con%cascade_step_name(i_s1s3) = 'S1S3' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s3) = rf_s1s3(bounds%begc:bounds%endc,1:nlevdecomp) - cascade_donor_pool(i_s1s3) = i_pas_som - cascade_receiver_pool(i_s1s3) = i_act_som + cascade_donor_pool(i_s1s3) = i_act_som + cascade_receiver_pool(i_s1s3) = i_pas_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s1s3) = f_s1s3(bounds%begc:bounds%endc,1:nlevdecomp) i_s2s1 = 6 decomp_cascade_con%cascade_step_name(i_s2s1) = 'S2S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s1) = rf_s2s1 cascade_donor_pool(i_s2s1) = i_slo_som - cascade_receiver_pool(i_s2s1) = i_pas_som + cascade_receiver_pool(i_s2s1) = i_act_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s1) = f_s2s1 i_s2s3 = 7 decomp_cascade_con%cascade_step_name(i_s2s3) = 'S2S3' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s3) = rf_s2s3 cascade_donor_pool(i_s2s3) = i_slo_som - cascade_receiver_pool(i_s2s3) = i_act_som + cascade_receiver_pool(i_s2s3) = i_pas_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s2s3) = f_s2s3 i_s3s1 = 8 decomp_cascade_con%cascade_step_name(i_s3s1) = 'S3S1' rf_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s3s1) = rf_s3s1 - cascade_donor_pool(i_s3s1) = i_act_som - cascade_receiver_pool(i_s3s1) = i_pas_som + cascade_donor_pool(i_s3s1) = i_pas_som + cascade_receiver_pool(i_s3s1) = i_act_som pathfrac_decomp_cascade(bounds%begc:bounds%endc,1:nlevdecomp,i_s3s1) = 1.0_r8 if (.not. use_fates) then @@ -700,8 +700,8 @@ subroutine decomp_rate_constants_bgc(bounds, num_soilc, filter_soilc, & endif endif ! - if ( abs(spinup_factor(i_pas_som) - 1._r8) .gt. .000001_r8) then - spinup_geogterm_s1(c) = spinup_factor(i_pas_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) + if ( abs(spinup_factor(i_act_som) - 1._r8) .gt. .000001_r8) then + spinup_geogterm_s1(c) = spinup_factor(i_act_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) else spinup_geogterm_s1(c) = 1._r8 endif @@ -712,8 +712,8 @@ subroutine decomp_rate_constants_bgc(bounds, num_soilc, filter_soilc, & spinup_geogterm_s2(c) = 1._r8 endif ! - if ( abs(spinup_factor(i_act_som) - 1._r8) .gt. .000001_r8) then - spinup_geogterm_s3(c) = spinup_factor(i_act_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) + if ( abs(spinup_factor(i_pas_som) - 1._r8) .gt. .000001_r8) then + spinup_geogterm_s3(c) = spinup_factor(i_pas_som) * get_spinup_latitude_term(grc%latdeg(col%gridcell(c))) else spinup_geogterm_s3(c) = 1._r8 endif @@ -945,11 +945,11 @@ subroutine decomp_rate_constants_bgc(bounds, num_soilc, filter_soilc, & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_l23(c) decomp_k(c,j,i_lig_lit) = k_l2_l3 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_l23(c) - decomp_k(c,j,i_pas_som) = k_s1 * t_scalar(c,j) * w_scalar(c,j) * & + decomp_k(c,j,i_act_som) = k_s1 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_s1(c) decomp_k(c,j,i_slo_som) = k_s2 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_s2(c) - decomp_k(c,j,i_act_som) = k_s3 * t_scalar(c,j) * w_scalar(c,j) * & + decomp_k(c,j,i_pas_som) = k_s3 * t_scalar(c,j) * w_scalar(c,j) * & depth_scalar(c,j) * o_scalar(c,j) * spinup_geogterm_s3(c) ! same for cwd but only if fates is not enabled; fates handles CWD ! on its own structure From 5bf6ae3690fcdf236211f50a810436c072ce51de Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Thu, 1 Jul 2021 15:19:11 -0600 Subject: [PATCH 47/63] Additional correction in response to review --- cime_config/usermods_dirs/output_bgc/user_nl_clm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cime_config/usermods_dirs/output_bgc/user_nl_clm b/cime_config/usermods_dirs/output_bgc/user_nl_clm index 3b2e2d2d92..f7aaa09911 100644 --- a/cime_config/usermods_dirs/output_bgc/user_nl_clm +++ b/cime_config/usermods_dirs/output_bgc/user_nl_clm @@ -3,8 +3,8 @@ !---------------------------------------------------------------------------------- ! h0 stream (monthly average, gridcell-level) -hist_fexcl1 += 'PAS_SOMC_vr', 'PAS_SOMN_vr', 'SLO_SOMC_vr', 'SLO_SOMN_vr', 'ACT_SOMC_vr', 'ACT_SOMN_vr', 'SOILC_vr','SOILN_vr', 'CWDC_vr', 'MET_LITC_vr', 'CEL_LITC_vr', 'LIG_LITC_vr', 'MET_LITN_vr', 'CEL_LITN_vr', 'LIG_LITN_vr', 'CWDN_vr', 'SMIN_NO3_vr', 'CONC_O2_UNSAT', 'CONC_O2_SAT','SMIN_NH4_vr','SMINN_vr' -hist_fincl1 += 'LEAFC_TO_LITTER', 'FROOTC_TO_LITTER','MET_LITC_TO_PAS_SOMC','MET_LITN_TO_PAS_SOMN','CEL_LITC_TO_PAS_SOMC', 'CEL_LITN_TO_PAS_SOMN','LIG_LITC_TO_SLO_SOMC','LIG_LITN_TO_SLO_SOMN','DWT_WOOD_PRODUCTC_GAIN_PATCH' +hist_fexcl1 += 'ACT_SOMC_vr', 'ACT_SOMN_vr', 'SLO_SOMC_vr', 'SLO_SOMN_vr', 'PAS_SOMC_vr', 'PAS_SOMN_vr', 'SOILC_vr','SOILN_vr', 'CWDC_vr', 'MET_LITC_vr', 'CEL_LITC_vr', 'LIG_LITC_vr', 'MET_LITN_vr', 'CEL_LITN_vr', 'LIG_LITN_vr', 'CWDN_vr', 'SMIN_NO3_vr', 'CONC_O2_UNSAT', 'CONC_O2_SAT','SMIN_NH4_vr','SMINN_vr' +hist_fincl1 += 'LEAFC_TO_LITTER', 'FROOTC_TO_LITTER','MET_LITC_TO_ACT_SOMC','MET_LITN_TO_ACT_SOMN','CEL_LITC_TO_ACT_SOMC', 'CEL_LITN_TO_ACT_SOMN','LIG_LITC_TO_SLO_SOMC','LIG_LITN_TO_SLO_SOMN','DWT_WOOD_PRODUCTC_GAIN_PATCH' ! h1 stream (monthly average, finest sub-grid) hist_fincl2 += 'GPP', 'NPP', 'AGNPP', 'TOTVEGC', 'NPP_NUPTAKE', 'AR', 'HR', 'HTOP' From 4b587b43ed7d28451ff711f0fedbcece95a4a993 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Fri, 2 Jul 2021 10:28:24 -0600 Subject: [PATCH 48/63] Change shebang lines to python3 fixing #1383 --- bld/namelist_files/createMkSrfEntry.py | 8 ++++---- cime_config/buildlib | 2 +- cime_config/buildnml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bld/namelist_files/createMkSrfEntry.py b/bld/namelist_files/createMkSrfEntry.py index b76e83af4d..3f12df1509 100755 --- a/bld/namelist_files/createMkSrfEntry.py +++ b/bld/namelist_files/createMkSrfEntry.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 import os, sys @@ -41,9 +41,9 @@ def parse_cmdline_args( self ): def printentry( self, year ): "Print a single entry" - print 'lnd/clm2/rawdata/%s/mksrf_landuse_%s_%s.c%s.nc' % (self.subdir, self.desc, year, self.cdate) - print '\n' + print( 'lnd/clm2/rawdata/%s/mksrf_landuse_%s_%s.c%s.nc' % (self.subdir, self.desc, year, self.cdate) ) + print( '\n' ) entry = mksrfDataEntry_prog() entry.parse_cmdline_args() diff --git a/cime_config/buildlib b/cime_config/buildlib index 55c47be4e9..9b9b7da78f 100755 --- a/cime_config/buildlib +++ b/cime_config/buildlib @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ build ctsm library diff --git a/cime_config/buildnml b/cime_config/buildnml index 44064b40b8..e3f6a5b933 100755 --- a/cime_config/buildnml +++ b/cime_config/buildnml @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ CTSM namelist creator From ee5c8194e4c5a8a788fbb3a23311b2acb3c5a06a Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Fri, 2 Jul 2021 14:07:57 -0600 Subject: [PATCH 49/63] Updated fates external to sci.1.46.2_api.16.1.0 --- Externals_CLM.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Externals_CLM.cfg b/Externals_CLM.cfg index c63135d16e..e24b102da1 100644 --- a/Externals_CLM.cfg +++ b/Externals_CLM.cfg @@ -1,8 +1,8 @@ [fates] local_path = src/fates protocol = git -repo_url = https://github.com/rgknox/fates -hash = 6ee0d72ddfa1063091b8e8ac60ed1e736465afdb +repo_url = https://github.com/NGEET/fates +tag = sci.1.46.2_api.16.1.0 required = True [PTCLM] From d33f3dbc925370df1cc883e0198d5cf3a706d1af Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Fri, 2 Jul 2021 16:27:30 -0400 Subject: [PATCH 50/63] Added first pass of changelog --- doc/ChangeLog | 205 +++++++++++++++++++++++++++++++++++++++++++++----- doc/ChangeSum | 1 + 2 files changed, 189 insertions(+), 17 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 4739f9ec3b..4df3a89f22 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,189 @@ =============================================================== +Tag name: ctsm5.1.dev046 +Originator(s): rgknox (Ryan Knox,,,) +Date: Fri Jul 2 16:14:43 EDT 2021 +One-line Summary: Updating external fates has to tag sci.1.46.2_api.16.1.0. FATES side changes expand the FATES parameter file to include new fields (unused at present). + +Purpose and description of changes +---------------------------------- + +This change brings the fates external up to sci.1.46.2_api.16.1.0. FATES side changes expand the FATES parameter file to include new fields. + +New and UNUSED parameters include: + fates_hydr_htftype_node + fates_prt_organ_id + fates_hydr_organname_node + fates_litterclass_name + fates_allom_zroot_k + fates_allom_zroot_max_dbh + fates_allom_zroot_max_z + fates_allom_zroot_min_dbh + fates_allom_zroot_min_z + fates_hydr_k_lwp + fates_hydr_vg_alpha_node + fates_hydr_vg_m_node + fates_hydr_vg_n_node + fates_hlm_pft_map + fates_maintresp_model + fates_photo_temp_acclim_timescale + fates_photo_tempsens_model + fates_vai_top_bin_width + fates_vai_width_increase_factor + +New parameters that now over-ride previously hard-coded parameters: + fates_theta_cj_c3 + fates_theta_cj_c4 + + +New parameters that are unset for developer convenience: + fates_dev_arbitrary_pft + fates_dev_arbitrary + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm5_1 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed or introduced +------------------------ + +Issues fixed (include CTSM Issue #): + +fates issue: https://github.com/NGEET/fates/issues/753 + +CIME Issues fixed (include issue #): + +Known bugs introduced in this tag (include issue #): + +Known bugs found since the previous tag (include issue #): + + +Notes of particular relevance for users +--------------------------------------- + +The FATES parameter file now contains new fields. Users must update their personal parameter files to contain these new fields. See src/fates/parameter_files/fates_params_default.cdl + +Substantial timing or memory changes: + +Notes of particular relevance for developers: +--------------------------------------------- + +Caveats for developers (e.g., code that is duplicated that requires double maintenance): + +Developers should also be aware of the new fates parameter file format. + +Changes to tests or testing: + + None + + +Testing summary: +---------------- +[... Remove before making master tag. + +Nearly all CTSM tags should undergo 'regular' (aux_clm) testing. +However, it occasionally makes sense to do more or less system testing; +here is guidance on different available levels of system testing: + a) no system testing (for use when the only changes are ones that + have absolutely no impact on system runs; this + includes documentation-only tags, tags that + just change the tools or some python code that + does not impact system runs, etc.) + b) minimal (for use in rare cases where only a small change with + known behavior is added ... eg. a minor bug fix. This + might be to just run the "short" test list, or to run + a single test. Whatever makes sense for the particular case.) + c) regular (regular tests on normal machines if CTSM source is modified) + d) release (regular tests plus the fates, ctsm_sci, mosart and rtm test lists + and normally all of the ancillary tests (build-namelist, python, ptclm, etc.) + would be run as well) + +In addition, various other tests of the tools, python and perl +infrastructure should be run when appropriate, as described below. + +...] + +[Remove any lines that don't apply.] + + [PASS means all tests PASS; OK means tests PASS other than expected fails.] + + build-namelist tests (if CLMBuildNamelist.pm has changed): + + cheyenne - + + tools-tests (test/tools) (if tools have been changed): + + cheyenne - + + PTCLM testing (tools/shared/PTCLM/test): (if cime or cime_config are changed) + (PTCLM is being deprecated, so we only expect this to be done on occasion) + + cheyenne - + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + (any machine) - + + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + cheyenne ---- + izumi ------- + + fates tests: + cheyenne ---- + + any other testing (give details below): + +If the tag used for baseline comparisons was NOT the previous tag, note that here: + + +Answer changes +-------------- + +Changes answers relative to baseline: + + [ If a tag changes answers relative to baseline comparison the + following should be filled in (otherwise remove this section). + And always remove these three lines and parts that don't apply. ] + + Summarize any changes to answers, i.e., + - what code configurations: + - what platforms/compilers: + - nature of change (roundoff; larger than roundoff/same climate; new climate): + + If bitwise differences were observed, how did you show they were no worse + than roundoff? + + If this tag changes climate describe the run(s) done to evaluate the new + climate (put details of the simulations in the experiment database) + - casename: + + URL for LMWG diagnostics output used to validate new climate: + + +Other details +------------- +[Remove any lines that don't apply. Remove entire section if nothing applies.] + +List any externals directories updated (cime, rtm, mosart, cism, fates, etc.): + +Pull Requests that document the changes (include PR ids): +(https://github.com/ESCOMP/ctsm/pull) + +=============================================================== +=============================================================== Tag name: ctsm5.1.dev045 Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) Date: Tue Jun 29 20:05:21 MDT 2021 @@ -41,29 +226,15 @@ Does this tag change answers significantly for any of the following physics conf Bugs fixed or introduced ------------------------ -Issues fixed (include CTSM Issue #): #1361 #1417 - Fixes #1361 -- HR fluxes don't include CWD - Fixes #1417 -- NoAnthro build-namelist test fails + Notes of particular relevance for users --------------------------------------- -Substantial timing or memory changes: None - Total 17 MEMCOMP non-passes with the same warning as this one: - FAIL PFS_Ld20.f09_g17.I2000Clm50BgcCrop.cheyenne_intel MEMCOMP Error: - Memory usage increase > 10% from baseline - - Total 5 TPUTCOMP non-passes with this warning: - TPUTCOMP: Computation time increase > 25% from baseline Notes of particular relevance for developers: --------------------------------------------- -NOTE: Be sure to review the steps in README.CHECKLIST.master_tags as well as the coding style in the Developers Guide - -Changes to tests or testing: - New test added to cheyenne test-suite: - ERS_Ld3.f10_f10_mg37.I2000Clm51Bgc.cheyenne_intel.clm-ciso_cwd_hr - Details in "Purpose and description of changes" + Testing summary: ---------------- @@ -91,7 +262,7 @@ Changes answers relative to baseline: No Other details ------------- Pull Requests that document the changes (include PR ids): - https://github.com/ESCOMP/ctsm/pull/1400 + https://github.com/ESCOMP/CTSM/pull/1414 =============================================================== =============================================================== diff --git a/doc/ChangeSum b/doc/ChangeSum index 6a8ef45243..f37a03661d 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.1.dev046 rgknox 07/02/2021 Updating external fates has to tag sci.1.46.2_api.16.1.0 ctsm5.1.dev045 slevis 06/29/2021 Include CWD in heterotrophic respiration ctsm5.1.dev044 mvertens 06/24/2021 New stream functionality when using NUOPC or LILAC ctsm5.1.dev043 slevis 06/03/2021 Refactor of CascadeBGC code in preparation for MIMICS From 2e86fbb1ace45c0309395ae9d957c85d1a4051cd Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Fri, 2 Jul 2021 14:36:56 -0600 Subject: [PATCH 51/63] Some updates to the change files --- doc/ChangeLog | 111 +++++++++++++------------------------------------- 1 file changed, 28 insertions(+), 83 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 4df3a89f22..0b3be038af 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,15 +1,16 @@ =============================================================== Tag name: ctsm5.1.dev046 Originator(s): rgknox (Ryan Knox,,,) -Date: Fri Jul 2 16:14:43 EDT 2021 +Date: Fri Jul 2 14:36:44 MDT 2021 One-line Summary: Updating external fates has to tag sci.1.46.2_api.16.1.0. FATES side changes expand the FATES parameter file to include new fields (unused at present). Purpose and description of changes ---------------------------------- -This change brings the fates external up to sci.1.46.2_api.16.1.0. FATES side changes expand the FATES parameter file to include new fields. + This change brings the fates external up to sci.1.46.2_api.16.1.0. FATES side changes expand + the FATES parameter file to include new fields. -New and UNUSED parameters include: + New and UNUSED parameters include: fates_hydr_htftype_node fates_prt_organ_id fates_hydr_organname_node @@ -30,19 +31,19 @@ New and UNUSED parameters include: fates_vai_top_bin_width fates_vai_width_increase_factor -New parameters that now over-ride previously hard-coded parameters: + New parameters that now over-ride previously hard-coded parameters: fates_theta_cj_c3 fates_theta_cj_c4 -New parameters that are unset for developer convenience: + New parameters that are unset for developer convenience: fates_dev_arbitrary_pft fates_dev_arbitrary Significant changes to scientifically-supported configurations -------------------------------------------------------------- -Does this tag change answers significantly for any of the following physics configurations? +Does this tag change answers significantly for any of the following physics configurations? No (Details of any changes will be given in the "Answer changes" section below.) [Put an [X] in the box for any configuration with significant answer changes.] @@ -60,128 +61,72 @@ Bugs fixed or introduced ------------------------ Issues fixed (include CTSM Issue #): + Fixes #1383 -- changes shebang lines to python3 -fates issue: https://github.com/NGEET/fates/issues/753 - -CIME Issues fixed (include issue #): - -Known bugs introduced in this tag (include issue #): - -Known bugs found since the previous tag (include issue #): - + fates issue: https://github.com/NGEET/fates/issues/753 Notes of particular relevance for users --------------------------------------- -The FATES parameter file now contains new fields. Users must update their personal parameter files to contain these new fields. See src/fates/parameter_files/fates_params_default.cdl - -Substantial timing or memory changes: + The FATES parameter file now contains new fields. Users must update their personal parameter + files to contain these new fields. See src/fates/parameter_files/fates_params_default.cdl Notes of particular relevance for developers: --------------------------------------------- Caveats for developers (e.g., code that is duplicated that requires double maintenance): -Developers should also be aware of the new fates parameter file format. - -Changes to tests or testing: - - None + Developers should also be aware of the new fates parameter file format. +Changes to tests or testing: None -Testing summary: +Testing summary: regular ---------------- -[... Remove before making master tag. - -Nearly all CTSM tags should undergo 'regular' (aux_clm) testing. -However, it occasionally makes sense to do more or less system testing; -here is guidance on different available levels of system testing: - a) no system testing (for use when the only changes are ones that - have absolutely no impact on system runs; this - includes documentation-only tags, tags that - just change the tools or some python code that - does not impact system runs, etc.) - b) minimal (for use in rare cases where only a small change with - known behavior is added ... eg. a minor bug fix. This - might be to just run the "short" test list, or to run - a single test. Whatever makes sense for the particular case.) - c) regular (regular tests on normal machines if CTSM source is modified) - d) release (regular tests plus the fates, ctsm_sci, mosart and rtm test lists - and normally all of the ancillary tests (build-namelist, python, ptclm, etc.) - would be run as well) - -In addition, various other tests of the tools, python and perl -infrastructure should be run when appropriate, as described below. - -...] - -[Remove any lines that don't apply.] - [PASS means all tests PASS; OK means tests PASS other than expected fails.] build-namelist tests (if CLMBuildNamelist.pm has changed): - cheyenne - - - tools-tests (test/tools) (if tools have been changed): - - cheyenne - - - PTCLM testing (tools/shared/PTCLM/test): (if cime or cime_config are changed) - (PTCLM is being deprecated, so we only expect this to be done on occasion) - - cheyenne - + cheyenne - PASS (60 compare tests differ to previous tag) python testing (if python code has changed; see instructions in python/README.md; document testing done): - (any machine) - + cheyenne - PASS regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): - cheyenne ---- - izumi ------- + cheyenne ---- OK + izumi ------- OK fates tests: - cheyenne ---- + cheyenne ---- OK any other testing (give details below): If the tag used for baseline comparisons was NOT the previous tag, note that here: + Original testing was done compared to ctsm5.1.dev044, but testing is being rerun now Answer changes -------------- -Changes answers relative to baseline: - - [ If a tag changes answers relative to baseline comparison the - following should be filled in (otherwise remove this section). - And always remove these three lines and parts that don't apply. ] +Changes answers relative to baseline: Just for FATES Summarize any changes to answers, i.e., - - what code configurations: - - what platforms/compilers: - - nature of change (roundoff; larger than roundoff/same climate; new climate): - - If bitwise differences were observed, how did you show they were no worse - than roundoff? - - If this tag changes climate describe the run(s) done to evaluate the new - climate (put details of the simulations in the experiment database) - - casename: - - URL for LMWG diagnostics output used to validate new climate: - + - what code configurations: Just when running FATES + - what platforms/compilers: All + - nature of change: minor changes related to a bug-fix Other details ------------- -[Remove any lines that don't apply. Remove entire section if nothing applies.] -List any externals directories updated (cime, rtm, mosart, cism, fates, etc.): +List any externals directories updated (cime, rtm, mosart, cism, fates, etc.): FATES + fates to sci.1.46.2_api.16.1.0 Pull Requests that document the changes (include PR ids): (https://github.com/ESCOMP/ctsm/pull) + #1414 -- Fates api16.1 (parameter file updates) + =============================================================== =============================================================== Tag name: ctsm5.1.dev045 From f58d402e97ec9c9d55b19f3a168ac80eeb1efeaa Mon Sep 17 00:00:00 2001 From: Ryan Knox Date: Fri, 2 Jul 2021 16:40:15 -0400 Subject: [PATCH 52/63] updated changelog --- doc/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index 0b3be038af..661f91fb0e 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -2,7 +2,7 @@ Tag name: ctsm5.1.dev046 Originator(s): rgknox (Ryan Knox,,,) Date: Fri Jul 2 14:36:44 MDT 2021 -One-line Summary: Updating external fates has to tag sci.1.46.2_api.16.1.0. FATES side changes expand the FATES parameter file to include new fields (unused at present). +One-line Summary: Updating external fates has to tag sci.1.46.2_api.16.1.0. FATES side changes expand the FATES parameter file to include new fields (unused at present). This also includes sci.1.46.1_api.16.0.0 which contained a sublte bug-fix on how FATES passes fragmentation fluxes (correcting seed decay fragmentation). Purpose and description of changes ---------------------------------- From cfa222be33e162abd0cad1e8cf7ac14c94ff96cb Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Sat, 3 Jul 2021 15:12:33 -0600 Subject: [PATCH 53/63] removed all mct references from decompInitMod.F90 --- Externals.cfg | 2 +- src/main/decompInitMod.F90 | 398 ++++++++++++++++++------------------- 2 files changed, 199 insertions(+), 201 deletions(-) diff --git a/Externals.cfg b/Externals.cfg index 345c84089d..0d8ae45572 100644 --- a/Externals.cfg +++ b/Externals.cfg @@ -51,7 +51,7 @@ required = True local_path = components/cdeps protocol = git repo_url = https://github.com/ESCOMP/CDEPS.git -tag = cdeps0.12.10 +tag = cdeps0.12.11 externals = Externals_CDEPS.cfg required = True diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index 7703b664c2..b27148c449 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -24,7 +24,6 @@ module decompInitMod public :: decompInit_glcp ! initializes g,l,c,p decomp info ! ! !PRIVATE MEMBER FUNCTIONS: - private :: set_subgrid_start ! ! PUBLIC TYPES: integer, public :: clump_pproc ! number of clumps per MPI process @@ -32,8 +31,10 @@ module decompInitMod ! !PRIVATE TYPES: integer, pointer :: lcid(:) ! temporary for setting decomposition integer :: nglob_x, nglob_y ! global sizes - character(len=*), parameter, private :: sourcefile = & + character(len=*), parameter :: sourcefile = & __FILE__ + +#include ! mpi library include file !------------------------------------------------------------------------------ contains @@ -52,7 +53,6 @@ subroutine decompInit_lnd(lni, lnj, amask) use decompMod , only : bounds_type, get_proc_bounds, procinfo ! ! !ARGUMENTS: - implicit none integer , intent(in) :: amask(:) integer , intent(in) :: lni,lnj ! domain global size ! @@ -281,7 +281,7 @@ subroutine decompInit_lnd(lni, lnj, amask) end do ! Initialize global gindex (non-compressed, includes ocean points) - ! Note that gindex_global goes from (1:endg-begg_1) + ! Note that gindex_global goes from (1:endg) nglob_x = lni ! decompMod module variables nglob_y = lnj ! decompMod module variables call get_proc_bounds(bounds) @@ -321,7 +321,6 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) use decompMod , only : numg, numl, numc, nump, numCohort use decompMod , only : gindex_global use glcBehaviorMod , only : glc_behavior_type - use spmdMod , only : MPI_INTEGER, MPI_SUM ! ! !ARGUMENTS: integer , intent(in) :: lni,lnj ! land domain global size @@ -482,78 +481,84 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) ! !USES: use clm_varctl , only : use_fates use subgridMod , only : subgrid_get_gcellinfo - use decompMod , only : bounds_type, nclumps, get_proc_global, get_proc_bounds + use decompMod , only : bounds_type, get_proc_global, get_proc_bounds use decompMod , only : gindex_global use decompMod , only : gindex_grc, gindex_lun, gindex_col, gindex_patch, gindex_Cohort - use decompMod , only : procinfo, nclumps, clump_type, clumps, get_proc_global + use decompMod , only : procinfo, clump_type, clumps, get_proc_global use LandunitType , only : lun use ColumnType , only : col use PatchType , only : patch use FatesInterfaceTypesMod , only : fates_maxElementsPerSite use glcBehaviorMod , only : glc_behavior_type - use mct_mod , only : mct_gsmap, mct_gsMap_init, mct_gsmap_clean - use spmdMod , only : comp_id ! ! !ARGUMENTS: integer , intent(in) :: lni,lnj ! land domain global size type(glc_behavior_type) , intent(in) :: glc_behavior ! ! !LOCAL VARIABLES: - integer :: gi,li,ci,pi,coi ! indices - integer :: i,l,n,np ! indices - integer :: cid,pid ! indices - integer :: begg,endg ! beg,end gridcells - integer :: begl,endl ! beg,end landunits - integer :: begc,endc ! beg,end columns - integer :: begp,endp ! beg,end patches - integer :: begCohort,endCohort ! beg,end cohorts - integer :: numg ! total number of land gridcells across all processors - integer :: numl ! total number of landunits across all processors - integer :: numc ! total number of columns across all processors - integer :: nump ! total number of patches across all processors - integer :: numCohort ! fates cohorts - integer :: ilunits ! temporary - integer :: icols ! temporary - integer :: ipatches ! temporary - integer :: icohorts ! temporary - integer :: ier ! error code - integer :: npmin,npmax,npint ! do loop values for printing - integer :: clmin,clmax ! do loop values for printing - integer :: ng ! number of global gridcells - integer, pointer :: array_glob(:) ! temporaroy - integer, pointer :: gstart(:), gcount(:) - integer, pointer :: lstart(:), lcount(:) - integer, pointer :: cstart(:), ccount(:) - integer, pointer :: pstart(:), pcount(:) - integer, pointer :: coStart(:), coCount(:) - integer, pointer :: ioff(:) - type(bounds_type) :: bounds - type(mct_gsMap), target :: gsmap_global ! global seg map - integer :: lsize, gsize - integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max + integer :: gi,li,ci,pi,coi ! indices + integer :: i,l,n,np ! indices + integer :: cid,pid ! indices + integer :: numg ! total number of land gridcells across all processors + integer :: numl ! total number of landunits across all processors + integer :: numc ! total number of columns across all processors + integer :: nump ! total number of patches across all processors + integer :: numCohort ! fates cohorts + integer :: ilunits ! temporary + integer :: icols ! temporary + integer :: ipatches ! temporary + integer :: icohorts ! temporary + integer :: ier ! error code + integer :: npmin,npmax,npint ! do loop values for printing + integer :: clmin,clmax ! do loop values for printing + integer, pointer :: array_glob(:) ! temporaroy + integer, pointer :: gcount(:) + integer, pointer :: lcount(:) + integer, pointer :: ccount(:) + integer, pointer :: pcount(:) + integer, pointer :: coCount(:) + type(bounds_type) :: bounds + integer, allocatable :: ioff(:) + integer, allocatable :: gridcells_per_pe(:) ! needed for all calcs + integer, allocatable :: gridcell_offsets(:) ! needed for all calcs + integer, allocatable :: index_gridcells(:) ! needed for all calcs + integer, allocatable :: start_global(:) + integer, allocatable :: start(:) + integer, allocatable :: index_lndgridcells(:) + integer :: count + integer :: temp + integer :: lsize_g, lsize_l, lsize_c, lsize_p, lsize_cohort + integer :: gsize + integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max Character(len=32), parameter :: subname = 'decompInit_glcp' !------------------------------------------------------------------------------ ! Get processor bounds call get_proc_bounds(bounds) - begg = bounds%begg; endg = bounds%endg - begl = bounds%begl; endl = bounds%endl - begc = bounds%begc; endc = bounds%endc - begp = bounds%begp; endp = bounds%endp - begCohort = bounds%begCoHort; endCohort = bounds%endCoHort - call get_proc_global(ng=numg, nl=numl, nc=numc, np=nump, nCohorts=numCohort) - ! Allocate start and count for determining subgrid level global index space - allocate(gcount(begg:endg)) ; gcount(:) = 0 - allocate(lcount(begg:endg)) ; lcount(:) = 0 - allocate(ccount(begg:endg)) ; ccount(:) = 0 - allocate(pcount(begg:endg)) ; pcount(:) = 0 - allocate(coCount(begg:endg)); coCount(:) = 0 - - ! Determine gcount, lcount, ccount and pcount - do gi = begg,endg + lsize_g = bounds%endg + lsize_l = bounds%endl + lsize_c = bounds%endc + lsize_p = bounds%endp + lsize_cohort = bounds%endCohort + gsize = nglob_x * nglob_y + + ! allocate module variables in decompMod.F90 + allocate(gindex_grc(lsize_g)) + allocate(gindex_lun(lsize_l)) + allocate(gindex_col(lsize_c)) + allocate(gindex_patch(lsize_p)) + allocate(gindex_cohort(lsize_cohort)) + + ! Determine counts + allocate(gcount(lsize_g)) ; gcount(:) = 0 + allocate(lcount(lsize_g)) ; lcount(:) = 0 + allocate(ccount(lsize_g)) ; ccount(:) = 0 + allocate(pcount(lsize_g)) ; pcount(:) = 0 + allocate(coCount(lsize_g)) ; coCount(:) = 0 + do gi = 1,lsize_g call subgrid_get_gcellinfo (gi, nlunits=ilunits, ncols=icols, npatches=ipatches, & ncohorts=icohorts, glc_behavior=glc_behavior) gcount(gi) = 1 ! number of gridcells for local gridcell index gi @@ -563,128 +568,200 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) coCount(gi) = icohorts ! number of fates cohorts for local gricell index gi enddo - ! Determine gstart, lstart, cstart, pstart, coStart for the OUTPUT 1d data structures - ! gather the gdc subgrid counts to masterproc in glo order - ! compute glo ordered start indices from the counts - ! scatter the subgrid start indices back out to the gdc gridcells - ! set the local gindex array for the subgrid from the subgrid start and count arrays - - ! Initialize gsmap_global - lsize = size(gindex_global) - ng = nglob_x * nglob_y - call mct_gsmap_init(gsmap_global, gindex_global, mpicom, comp_id, lsize, ng) - ! --------------------------------------- - ! Determine total number of global gridcells (including ocean) + ! Arrays needed to determine gindex_xxx(:) ! --------------------------------------- - allocate(array_glob(ng)) - allocate(ioff(begg:endg)); ioff(:) = 0 + allocate(ioff(lsize_g)) + + if (masterproc) then + allocate (gridcells_per_pe(0:npes-1)) + else + allocate(gridcells_per_pe(0)) + endif + call mpi_gather(lsize_g, 1, MPI_INTEGER, gridcells_per_pe, 1, MPI_INTEGER, 0, mpicom, ier) + + if (masterproc) then + allocate(gridcell_offsets(0:npes-1)) + gridcell_offsets(0) = 0 + do n = 1 ,npes-1 + gridcell_offsets(n) = gridcell_offsets(n-1) + gridcells_per_pe(n-1) + end do + else + allocate(gridcell_offsets(0)) + end if + + if (masterproc) then + allocate(start_global(numg)) ! number of landunits in a gridcell + else + allocate(start_global(0)) + end if + + allocate(start(lsize_g)) ! --------------------------------------- ! Gridcell gindex (compressed, no ocean points) ! --------------------------------------- - allocate(gstart(begg:endg)) ; gstart(:) = 0 - call set_subgrid_start(gsmap_global, array_glob, gcount, gstart) - allocate(gindex_grc(endg-begg+1)) - i = 0 - do gi = begg,endg - if (gcount(gi) < 1) then - write(iulog,*) 'decompInit_glcp warning count g ',iam,gi,gcount(gi) - endif - do l = 1,gcount(gi) - i = i + 1 - gindex_grc(i) = gstart(gi) + l - 1 - enddo - enddo - deallocate(gstart) + ! gstart_global the global index of all of the land points in task order + call mpi_gatherv(gindex_global, lsize_g, MPI_INTEGER, start_global, & + gridcells_per_pe, gridcell_offsets, MPI_INTEGER, 0, mpicom, ier) + + if (masterproc) then + ! Create a global size index_gridcells that will have 0 for all ocean points + ! Fill the location of each land point with the gatherv location of that land point + allocate(index_gridcells(gsize)) + index_gridcells(:) = 0 + do n = 1,numg + ! if n = 3, start_global(3)=100, index_gridcells(100)=3 + ! n is the task order location - so for global index 100 - the task order location is 3 + index_gridcells(start_global(n)) = n + end do + + ! Create a land-only global index based on the original global index ordering + ! Count is the running global land index + allocate(index_lndgridcells(numg)) + count = 0 + do n = 1,gsize + if (index_gridcells(n) > 0) then + count = count + 1 + ! e.g. n=20, count=4 and index_gridcells(20)=100, then start_global(100)=4 + start_global(index_gridcells(n)) = count + index_lndgridcells(count) = index_gridcells(n) + end if + end do + deallocate(index_gridcells) + end if + + ! Determine gindex_grc + call mpi_scatterv(start_global, gridcells_per_pe, gridcell_offsets, MPI_INTEGER, gindex_grc, & + lsize_g, MPI_INTEGER, 0, mpicom, ier) deallocate(gcount) ! --------------------------------------- ! Landunit gindex ! --------------------------------------- - ! lstart for gridcell (n) is the total number of the landunits over gridcells 1->n-1 - allocate(lstart(begg:endg)) ; lstart(:) = 0 - call set_subgrid_start(gsmap_global, array_glob, lcount, lstart) - allocate(gindex_lun(endl-begl+1)) + start(:) = 0 + call mpi_gatherv(lcount, lsize_g, MPI_INTEGER, start_global, & + gridcells_per_pe, gridcell_offsets, MPI_INTEGER, 0, mpicom, ier) + if (masterproc) then + count = 1 + do n = 1,numg + temp = start_global(index_lndgridcells(n)) + start_global(index_lndgridcells(n)) = count + count = count + temp + end do + endif + call mpi_scatterv(start_global, gridcells_per_pe, gridcell_offsets, MPI_INTEGER, start, & + lsize_g, MPI_INTEGER, 0, mpicom, ier) + ioff(:) = 0 - do li = begl,endl - !this is determined internally from how landunits are spread - !out in memory + do li = 1,lsize_l gi = lun%gridcell(li) - ! the output gindex is ALWAYS the same regardless of how - ! landuntis are spread out in memory - gindex_lun(li-begl+1) = lstart(gi) + ioff(gi) + gindex_lun(li) = start(gi) + ioff(gi) ioff(gi) = ioff(gi) + 1 - ! check that this is less than [lstart(gi) + lcount(gi)] enddo - deallocate(lstart) deallocate(lcount) ! --------------------------------------- ! Column gindex ! --------------------------------------- - allocate(cstart(begg:endg)) ; cstart(:) = 0 - call set_subgrid_start(gsmap_global, array_glob, ccount, cstart) - allocate(gindex_col(endc-begc+1)) + start(:) = 0 + call mpi_gatherv(ccount, lsize_g, MPI_INTEGER, start_global, & + gridcells_per_pe, gridcell_offsets, MPI_INTEGER, 0, mpicom, ier) + if (masterproc) then + count = 1 + do n = 1,numg + temp = start_global(index_lndgridcells(n)) + start_global(index_lndgridcells(n)) = count + count = count + temp + end do + endif + call mpi_scatterv(start_global, gridcells_per_pe, gridcell_offsets, MPI_INTEGER, start, & + lsize_g, MPI_INTEGER, 0, mpicom, ier) + ioff(:) = 0 - do ci = begc,endc + do ci = 1,lsize_c gi = col%gridcell(ci) - gindex_col(ci-begc+1) = cstart(gi) + ioff(gi) + gindex_col(ci) = start(gi) + ioff(gi) ioff(gi) = ioff(gi) + 1 - ! check that this is less than [cstart(gi) + ccount(gi)] enddo - deallocate(cstart) deallocate(ccount) ! --------------------------------------- ! PATCH gindex ! --------------------------------------- - allocate(pstart(begg:endg)) ; pstart(:) = 0 - call set_subgrid_start(gsmap_global, array_glob, pcount, pstart) - allocate(gindex_patch(endp-begp+1)) + start(:) = 0 + call mpi_gatherv(pcount, lsize_g, MPI_INTEGER, start_global, & + gridcells_per_pe, gridcell_offsets, MPI_INTEGER, 0, mpicom, ier) + if (masterproc) then + count = 1 + do n = 1,numg + temp = start_global(index_lndgridcells(n)) + start_global(index_lndgridcells(n)) = count + count = count + temp + end do + endif + call mpi_scatterv(start_global, gridcells_per_pe, gridcell_offsets, MPI_INTEGER, start, & + lsize_g, MPI_INTEGER, 0, mpicom, ier) + ioff(:) = 0 - do pi = begp,endp + do pi = 1,lsize_p gi = patch%gridcell(pi) - gindex_patch(pi-begp+1) = pstart(gi) + ioff(gi) + gindex_patch(pi) = start(gi) + ioff(gi) ioff(gi) = ioff(gi) + 1 - ! check that this is less than [pstart(gi) + pcount(gi)] enddo deallocate(pcount) - deallocate(pstart) ! --------------------------------------- ! FATES gindex for the cohort/element vector ! --------------------------------------- if ( use_fates ) then - allocate(coStart(begg:endg)); coStart(:) = 0 - call set_subgrid_start(gsmap_global, array_glob, coCount, coStart) - allocate(gindex_cohort(endCohort-begCohort+1)) + start(:) = 0 + call mpi_gatherv(coCount, lsize_g, MPI_INTEGER, start_global, & + gridcells_per_pe, gridcell_offsets, MPI_INTEGER, 0, mpicom, ier) + if (masterproc) then + count = 1 + do n = 1,numg + temp = start_global(index_lndgridcells(n)) + start_global(index_lndgridcells(n)) = count + count = count + temp + end do + endif + call mpi_scatterv(start_global, gridcells_per_pe, gridcell_offsets, MPI_INTEGER, start, & + lsize_g, MPI_INTEGER, 0, mpicom, ier) + ioff(:) = 0 - gi = begg - do coi = begCohort,endCohort - gindex_cohort(coi-begCohort+1) = coStart(gi) + ioff(gi) + gi = 1 + do coi = 1, lsize_cohort + gindex_cohort(coi) = start(gi) + ioff(gi) ioff(gi) = ioff(gi) + 1 - if ( mod(coi, fates_maxElementsPerSite ) == 0 ) gi = gi + 1 + if ( mod(coi, fates_maxElementsPerSite ) == 0 ) then + gi = gi + 1 + end if enddo - deallocate(coStart) deallocate(coCount) endif ! --------------------------------------- - ! Deallocate memory and diagnostic output + ! Deallocate memory ! --------------------------------------- - ! Deallocate start/count arrays - deallocate(array_glob) deallocate(ioff) + deallocate(gridcells_per_pe) + deallocate(gridcell_offsets) + deallocate(start) + deallocate(start_global) + if (allocated(index_lndgridcells)) deallocate(index_lndgridcells) + ! --------------------------------------- ! Diagnostic output + ! --------------------------------------- + if (masterproc) then write(iulog,*)' Surface Grid Characteristics' write(iulog,*)' longitude points = ',lni @@ -788,85 +865,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) end do call shr_sys_flush(iulog) - ! Destroy gsmap - call mct_gsmap_clean(gsmap_global) - end subroutine decompInit_glcp - !------------------------------------------------------------------------------ - subroutine set_subgrid_start(gsmap, array_glob, count, start) - - ! !USES: - use mct_mod , only : mct_aVect, mct_gsMap - use mct_mod , only : mct_aVect_init, mct_aVect_importIattr, mct_aVect_scatter - use mct_mod , only : mct_aVect_gather, mct_aVect_exportIattr, mct_aVect_clean - use mct_mod , only : mct_aVect_exportRattr, mct_aVect_importRattr - - ! !ARGUMENTS: - type(mct_gsmap) :: gsmap ! global gsmap - integer, pointer :: array_glob(:) ! input - integer, pointer :: count(:) ! input - integer, pointer :: start(:) ! output - - ! !LOCAL VARIABLES: - integer :: n,lb,ub ! indices - integer :: lsize ! size of local array - type(mct_aVect) :: AVi, AVo ! attribute vectors - integer ,pointer :: adata(:) ! temporary data array - integer :: val1, val2 ! temporaries - !----------------------------------------------------------------------- - - ! Initialize array_glob - array_glob(:) = 0 - - ! Gather count to master and place the data in arrray_global - lsize = size(count, dim=1) - lb = lbound(count, dim=1); ub = ubound(count, dim=1) - call mct_aVect_init(AVi, rList="", iList='f1', lsize=lsize) - allocate(adata(lsize)) - do n = lb,ub - adata(n-lb+1) = count(n) - enddo - call mct_aVect_importIattr(AVi, 'f1', adata, lsize) - deallocate(adata) - call mct_aVect_gather(AVi, AVo, gsmap, 0, mpicom) - if (masterproc) then - lsize = size(array_glob,dim=1) - call mct_aVect_exportIattr(AVo, 'f1', array_glob, lsize) - call mct_aVect_clean(AVo) - endif - call mct_aVect_clean(AVi) - - ! Create global start array in array_glob - if (masterproc) then - val1 = array_glob(1) - array_glob(1) = 1 - do n = 2,size(array_glob, dim=1) - val2 = array_glob(n) - array_glob(n) = array_glob(n-1) + val1 - val1 = val2 - enddo - endif - - ! Now scatter start array (i.e. array_glob from master) - if (masterproc) then - call mct_aVect_init(AVi, rList="", iList="f1", lsize=lsize) - call mct_aVect_importIattr(AVi, 'f1', array_glob, size(array_glob,dim=1)) - endif - call mct_aVect_scatter(AVi, AVo, gsmap, 0, mpicom) - lsize = size(start, dim=1) - allocate(adata(lsize)) - call mct_aVect_exportIattr(AVo, 'f1', adata, lsize) - lb = lbound(start, dim=1); ub = ubound(start, dim=1) - do n = lb,ub - start(n) = adata(n-lb+1) - enddo - deallocate(adata) - if (masterproc) then - call mct_aVect_clean(AVi) - endif - call mct_aVect_clean(AVo) - - end subroutine set_subgrid_start - end module decompInitMod From cd70fc590f328b962308843d5a3328d7c72d428a Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 5 Jul 2021 13:12:57 -0600 Subject: [PATCH 54/63] cleanup of diagnostic output --- src/main/decompInitMod.F90 | 244 ++++++++++++++++++------------------- 1 file changed, 116 insertions(+), 128 deletions(-) diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index b27148c449..f601b838ba 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -29,8 +29,9 @@ module decompInitMod integer, public :: clump_pproc ! number of clumps per MPI process ! ! !PRIVATE TYPES: - integer, pointer :: lcid(:) ! temporary for setting decomposition - integer :: nglob_x, nglob_y ! global sizes + integer, pointer :: lcid(:) ! temporary for setting decomposition + integer :: nglob_x, nglob_y ! global sizes + integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max character(len=*), parameter :: sourcefile = & __FILE__ @@ -317,7 +318,8 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) ! ! !USES: use subgridMod , only : subgrid_get_gcellinfo - use decompMod , only : bounds_type, get_proc_bounds, clumps, nclumps, procinfo + use decompMod , only : bounds_type, clumps, nclumps, procinfo + use decompMod , only : get_proc_global, get_proc_bounds use decompMod , only : numg, numl, numc, nump, numCohort use decompMod , only : gindex_global use glcBehaviorMod , only : glc_behavior_type @@ -327,20 +329,22 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) type(glc_behavior_type) , intent(in) :: glc_behavior ! ! !LOCAL VARIABLES: - integer :: ln,an ! indices - integer :: i,g,l,k ! indices - integer :: cid ! indices - integer :: n,m,np ! indices - integer :: anumg ! lnd num gridcells - integer :: icells ! temporary - integer :: begg, endg ! temporary - integer :: ilunits ! temporary - integer :: icols ! temporary - integer :: ipatches ! temporary - integer :: icohorts ! temporary - integer :: ier ! error code - type(bounds_type) :: bounds ! bounds - integer, allocatable :: allvecg(:,:) ! temporary vector "global" + integer :: ln,an ! indices + integer :: i,g,l,k ! indices + integer :: cid,pid ! indices + integer :: n,m,np ! indices + integer :: anumg ! lnd num gridcells + integer :: icells ! temporary + integer :: begg, endg ! temporary + integer :: ilunits ! temporary + integer :: icols ! temporary + integer :: ipatches ! temporary + integer :: icohorts ! temporary + integer :: ier ! error code + integer :: npmin,npmax,npint ! do loop values for printing + integer :: clmin,clmax ! do loop values for printing + type(bounds_type) :: bounds ! bounds + integer, allocatable :: allvecg(:,:) ! temporary vector "global" integer, allocatable :: allvecl(:,:) ! temporary vector "local" character(len=32), parameter :: subname = 'decompInit_clumps' !------------------------------------------------------------------------------ @@ -470,6 +474,101 @@ subroutine decompInit_clumps(lni,lnj,glc_behavior) deallocate(allvecg,allvecl) deallocate(lcid) + ! Diagnostic output + + call get_proc_global(ng=numg, nl=numl, nc=numc, np=nump, nCohorts=numCohort) + if (masterproc) then + write(iulog,*)' Surface Grid Characteristics' + write(iulog,*)' longitude points = ',lni + write(iulog,*)' latitude points = ',lnj + write(iulog,*)' total number of gridcells = ',numg + write(iulog,*)' total number of landunits = ',numl + write(iulog,*)' total number of columns = ',numc + write(iulog,*)' total number of patches = ',nump + write(iulog,*)' total number of cohorts = ',numCohort + write(iulog,*)' Decomposition Characteristics' + write(iulog,*)' clumps per process = ',clump_pproc + write(iulog,*) + end if + + ! Write out clump and proc info, one pe at a time, + ! barrier to control pes overwriting each other on stdout + call shr_sys_flush(iulog) + call mpi_barrier(mpicom,ier) + npmin = 0 + npmax = npes-1 + npint = 1 + if (dbug == 0) then + npmax = 0 + elseif (dbug == 1) then + npmax = min(npes-1,4) + elseif (dbug == 2) then + npint = npes/8 + endif + do np = npmin,npmax,npint + pid = np + if (dbug == 1) then + if (np == 2) pid=npes/2-1 + if (np == 3) pid=npes-2 + if (np == 4) pid=npes-1 + endif + pid = max(pid,0) + pid = min(pid,npes-1) + + if (iam == pid) then + write(iulog,*) + write(iulog,'(4(a,2x,i10))')'proc = ',pid, & + ' beg gridcell= ',procinfo%begg,' end gridcell= ',procinfo%endg, & + ' gridcells per proc = ',procinfo%ncells + write(iulog,'(4(a,2x,i10))')'proc = ',pid, & + ' beg landunit= ',procinfo%begl,' end landunit= ',procinfo%endl, & + ' landunits per proc = ',procinfo%nlunits + write(iulog,'(4(a,2x,i10))')'proc = ',pid, & + ' beg column = ',procinfo%begc,' end column = ',procinfo%endc, & + ' columns per proc = ',procinfo%ncols + write(iulog,'(4(a,2x,i10))')'proc = ',pid, & + ' beg patch = ',procinfo%begp,' end patch = ',procinfo%endp, & + ' patches per proc = ',procinfo%npatches + write(iulog,'(4(a,2x,i10))')'proc = ',pid, & + ' beg cohort = ',procinfo%begCohort,' end cohort = ',procinfo%endCohort, & + ' coh per proc = ',procinfo%nCohorts + write(iulog,'(2(a,2x,i10))')'proc = ',pid,' nclumps = ',procinfo%nclumps + if (dbug == 0) then + clmax = -1 + else + clmax = procinfo%nclumps + endif + do n = 1,clmax + cid = procinfo%cid(n) + write(iulog,'(6(a,2x,i10))')'proc = ',pid,' clump no = ',n, & + ' clump id= ',procinfo%cid(n), & + ' beg gridcell= ',clumps(cid)%begg,' end gridcell= ',clumps(cid)%endg, & + ' gridcells per clump= ',clumps(cid)%ncells + write(iulog,'(6(a,2x,i10))')'proc = ',pid,' clump no = ',n, & + ' clump id= ',procinfo%cid(n), & + ' beg landunit= ',clumps(cid)%begl,' end landunit= ',clumps(cid)%endl, & + ' landunits per clump = ',clumps(cid)%nlunits + write(iulog,'(6(a,2x,i10))')'proc = ',pid,' clump no = ',n, & + ' clump id= ',procinfo%cid(n), & + ' beg column = ',clumps(cid)%begc,' end column = ',clumps(cid)%endc, & + ' columns per clump = ',clumps(cid)%ncols + write(iulog,'(6(a,2x,i10))')'proc = ',pid,' clump no = ',n, & + ' clump id= ',procinfo%cid(n), & + ' beg patch = ',clumps(cid)%begp,' end patch = ',clumps(cid)%endp, & + ' patches per clump = ',clumps(cid)%npatches + write(iulog,'(6(a,2x,i10))')'proc = ',pid,' clump no = ',n, & + ' clump id= ',procinfo%cid(n), & + ' beg cohort = ',clumps(cid)%begCohort,' end cohort = ',clumps(cid)%endCohort, & + ' cohorts per clump = ',clumps(cid)%nCohorts + + end do + end if + call shr_sys_flush(iulog) + call mpi_barrier(mpicom,ier) + end do + write(iulog,*) + call shr_sys_flush(iulog) + end subroutine decompInit_clumps !------------------------------------------------------------------------------ @@ -509,9 +608,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) integer :: ipatches ! temporary integer :: icohorts ! temporary integer :: ier ! error code - integer :: npmin,npmax,npint ! do loop values for printing - integer :: clmin,clmax ! do loop values for printing - integer, pointer :: array_glob(:) ! temporaroy integer, pointer :: gcount(:) integer, pointer :: lcount(:) integer, pointer :: ccount(:) @@ -529,7 +625,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) integer :: temp integer :: lsize_g, lsize_l, lsize_c, lsize_p, lsize_cohort integer :: gsize - integer, parameter :: dbug=1 ! 0 = min, 1=normal, 2=much, 3=max Character(len=32), parameter :: subname = 'decompInit_glcp' !------------------------------------------------------------------------------ @@ -758,113 +853,6 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) deallocate(start_global) if (allocated(index_lndgridcells)) deallocate(index_lndgridcells) - ! --------------------------------------- - ! Diagnostic output - ! --------------------------------------- - - if (masterproc) then - write(iulog,*)' Surface Grid Characteristics' - write(iulog,*)' longitude points = ',lni - write(iulog,*)' latitude points = ',lnj - write(iulog,*)' total number of gridcells = ',numg - write(iulog,*)' total number of landunits = ',numl - write(iulog,*)' total number of columns = ',numc - write(iulog,*)' total number of patches = ',nump - write(iulog,*)' total number of cohorts = ',numCohort - write(iulog,*)' Decomposition Characteristics' - write(iulog,*)' clumps per process = ',clump_pproc - write(iulog,*) - end if - - ! Write out clump and proc info, one pe at a time, - ! barrier to control pes overwriting each other on stdout - call shr_sys_flush(iulog) - call mpi_barrier(mpicom,ier) - npmin = 0 - npmax = npes-1 - npint = 1 - if (dbug == 0) then - npmax = 0 - elseif (dbug == 1) then - npmax = min(npes-1,4) - elseif (dbug == 2) then - npint = npes/8 - endif - do np = npmin,npmax,npint - pid = np - if (dbug == 1) then - if (np == 2) pid=npes/2-1 - if (np == 3) pid=npes-2 - if (np == 4) pid=npes-1 - endif - pid = max(pid,0) - pid = min(pid,npes-1) - - if (iam == pid) then - write(iulog,*) - write(iulog,*)'proc= ',pid,& - ' beg gridcell= ',procinfo%begg, & - ' end gridcell= ',procinfo%endg, & - ' total gridcells per proc= ',procinfo%ncells - write(iulog,*)'proc= ',pid,& - ' beg landunit= ',procinfo%begl, & - ' end landunit= ',procinfo%endl, & - ' total landunits per proc= ',procinfo%nlunits - write(iulog,*)'proc= ',pid,& - ' beg column = ',procinfo%begc, & - ' end column = ',procinfo%endc, & - ' total columns per proc = ',procinfo%ncols - write(iulog,*)'proc= ',pid,& - ' beg patch = ',procinfo%begp, & - ' end patch = ',procinfo%endp, & - ' total patches per proc = ',procinfo%npatches - write(iulog,*)'proc= ',pid,& - ' beg coh = ',procinfo%begCohort, & - ' end coh = ',procinfo%endCohort, & - ' total coh per proc = ',procinfo%nCohorts - write(iulog,*)'proc= ',pid,' nclumps = ',procinfo%nclumps - - clmin = 1 - clmax = procinfo%nclumps - if (dbug == 1) then - clmax = 1 - elseif (dbug == 0) then - clmax = -1 - endif - do n = clmin,clmax - cid = procinfo%cid(n) - write(iulog,*)'proc= ',pid,' clump no = ',n, & - ' clump id= ',procinfo%cid(n), & - ' beg gridcell= ',clumps(cid)%begg, & - ' end gridcell= ',clumps(cid)%endg, & - ' total gridcells per clump= ',clumps(cid)%ncells - write(iulog,*)'proc= ',pid,' clump no = ',n, & - ' clump id= ',procinfo%cid(n), & - ' beg landunit= ',clumps(cid)%begl, & - ' end landunit= ',clumps(cid)%endl, & - ' total landunits per clump = ',clumps(cid)%nlunits - write(iulog,*)'proc= ',pid,' clump no = ',n, & - ' clump id= ',procinfo%cid(n), & - ' beg column = ',clumps(cid)%begc, & - ' end column = ',clumps(cid)%endc, & - ' total columns per clump = ',clumps(cid)%ncols - write(iulog,*)'proc= ',pid,' clump no = ',n, & - ' clump id= ',procinfo%cid(n), & - ' beg patch = ',clumps(cid)%begp, & - ' end patch = ',clumps(cid)%endp, & - ' total patches per clump = ',clumps(cid)%npatches - write(iulog,*)'proc= ',pid,' clump no = ',n, & - ' clump id= ',procinfo%cid(n), & - ' beg cohort = ',clumps(cid)%begCohort, & - ' end cohort = ',clumps(cid)%endCohort, & - ' total cohorts per clump = ',clumps(cid)%nCohorts - end do - end if - call shr_sys_flush(iulog) - call mpi_barrier(mpicom,ier) - end do - call shr_sys_flush(iulog) - end subroutine decompInit_glcp end module decompInitMod From 1980d24d8c827e4bed3215f2488b1caf8acc7b30 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 5 Jul 2021 15:18:27 -0600 Subject: [PATCH 55/63] updates to have bring loop over clumps into clm_initialize --- src/main/clm_initializeMod.F90 | 9 +- src/main/initGridCellsMod.F90 | 146 +++++++++++++++------------------ 2 files changed, 73 insertions(+), 82 deletions(-) diff --git a/src/main/clm_initializeMod.F90 b/src/main/clm_initializeMod.F90 index 536f10a548..17b52bb49e 100644 --- a/src/main/clm_initializeMod.F90 +++ b/src/main/clm_initializeMod.F90 @@ -252,7 +252,13 @@ subroutine initialize2(ni,nj) ! Build hierarchy and topological info for derived types ! This is needed here for the following call to decompInit_glcp - call initGridCells(glc_behavior) + nclumps = get_proc_clumps() + !$OMP PARALLEL DO PRIVATE (nc, bounds_clump) + do nc = 1, nclumps + call get_clump_bounds(nc, bounds_clump) + call initGridCells(bounds_clump, glc_behavior) + end do + !$OMP END PARALLEL DO ! Set global seg maps for gridcells, landlunits, columns and patches call decompInit_glcp(ni, nj, glc_behavior) @@ -260,7 +266,6 @@ subroutine initialize2(ni,nj) ! Set filters call allocFilters() - nclumps = get_proc_clumps() !$OMP PARALLEL DO PRIVATE (nc, bounds_clump) do nc = 1, nclumps call get_clump_bounds(nc, bounds_clump) diff --git a/src/main/initGridCellsMod.F90 b/src/main/initGridCellsMod.F90 index 4bb15a8768..7a8a9404c0 100644 --- a/src/main/initGridCellsMod.F90 +++ b/src/main/initGridCellsMod.F90 @@ -48,7 +48,7 @@ module initGridCellsMod contains !------------------------------------------------------------------------ - subroutine initGridcells(glc_behavior) + subroutine initGridcells(bounds_clump, glc_behavior) ! ! !DESCRIPTION: ! Initialize sub-grid mapping and allocates space for derived type hierarchy. @@ -56,7 +56,6 @@ subroutine initGridcells(glc_behavior) ! ! !USES use domainMod , only : ldomain - use decompMod , only : get_proc_bounds, get_clump_bounds, get_proc_clumps use subgridWeightsMod , only : compute_higher_order_weights use landunit_varcon , only : istsoil, istwet, istdlak, istice use landunit_varcon , only : isturb_tbd, isturb_hd, isturb_md, istcrop @@ -64,13 +63,11 @@ subroutine initGridcells(glc_behavior) use shr_const_mod , only : SHR_CONST_PI ! ! !ARGUMENTS: + type(bounds_type) , intent(in) :: bounds_clump type(glc_behavior_type), intent(in) :: glc_behavior ! ! !LOCAL VARIABLES: integer :: nc,li,ci,pi,gdc ! indices - integer :: nclumps ! number of clumps on this processor - type(bounds_type) :: bounds_proc - type(bounds_type) :: bounds_clump !------------------------------------------------------------------------ ! Notes about how this routine is arranged, and its implications for the arrangement @@ -117,97 +114,86 @@ subroutine initGridcells(glc_behavior) ! Column: 1 1 2 2 3 3 4 4 5 5 6 6 ! Cohort: 1 2 1 2 1 2 1 2 1 2 1 2 - nclumps = get_proc_clumps() + ! For each land gridcell on global grid determine landunit, column and patch properties + + li = bounds_clump%begl-1 + ci = bounds_clump%begc-1 + pi = bounds_clump%begp-1 - ! FIX(SPM,032414) add private vars for cohort and perhaps patch dimension - !$OMP PARALLEL DO PRIVATE (nc, bounds_clump, li, ci, pi, gdc) - do nc = 1, nclumps - - call get_clump_bounds(nc, bounds_clump) - - ! For each land gridcell on global grid determine landunit, column and patch properties - - li = bounds_clump%begl-1 - ci = bounds_clump%begc-1 - pi = bounds_clump%begp-1 - - ! Determine naturally vegetated landunit - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_veg_compete( & - ltype=istsoil, gi=gdc, li=li, ci=ci, pi=pi) - end do - - ! Determine crop landunit - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_crop_noncompete( & - ltype=istcrop, gi=gdc, li=li, ci=ci, pi=pi) - end do + ! Determine naturally vegetated landunit + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_veg_compete( & + ltype=istsoil, gi=gdc, li=li, ci=ci, pi=pi) + end do - ! Determine urban tall building district landunit - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_urban( & - ltype=isturb_tbd, gi=gdc, li=li, ci=ci, pi=pi) + ! Determine crop landunit + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_crop_noncompete( & + ltype=istcrop, gi=gdc, li=li, ci=ci, pi=pi) + end do - end do + ! Determine urban tall building district landunit + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_urban( & + ltype=isturb_tbd, gi=gdc, li=li, ci=ci, pi=pi) - ! Determine urban high density landunit - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_urban( & - ltype=isturb_hd, gi=gdc, li=li, ci=ci, pi=pi) - end do + end do - ! Determine urban medium density landunit - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_urban( & - ltype=isturb_md, gi=gdc, li=li, ci=ci, pi=pi) - end do + ! Determine urban high density landunit + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_urban( & + ltype=isturb_hd, gi=gdc, li=li, ci=ci, pi=pi) + end do - ! Determine lake, wetland and glacier landunits - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_wet_lake( & - ltype=istdlak, gi=gdc, li=li, ci=ci, pi=pi) - end do + ! Determine urban medium density landunit + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_urban( & + ltype=isturb_md, gi=gdc, li=li, ci=ci, pi=pi) + end do - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_wet_lake( & - ltype=istwet, gi=gdc, li=li, ci=ci, pi=pi) - end do + ! Determine lake, wetland and glacier landunits + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_wet_lake( & + ltype=istdlak, gi=gdc, li=li, ci=ci, pi=pi) + end do - do gdc = bounds_clump%begg,bounds_clump%endg - call set_landunit_ice( & - glc_behavior = glc_behavior, & - ltype=istice, gi=gdc, li=li, ci=ci, pi=pi) - end do + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_wet_lake( & + ltype=istwet, gi=gdc, li=li, ci=ci, pi=pi) + end do - ! Ensure that we have set the expected number of patchs, cols and landunits for this clump - SHR_ASSERT_FL(li == bounds_clump%endl, sourcefile, __LINE__) - SHR_ASSERT_FL(ci == bounds_clump%endc, sourcefile, __LINE__) - SHR_ASSERT_FL(pi == bounds_clump%endp, sourcefile, __LINE__) + do gdc = bounds_clump%begg,bounds_clump%endg + call set_landunit_ice( & + glc_behavior = glc_behavior, & + ltype=istice, gi=gdc, li=li, ci=ci, pi=pi) + end do - ! Set some other gridcell-level variables + ! Ensure that we have set the expected number of patchs, cols and landunits for this clump + SHR_ASSERT_FL(li == bounds_clump%endl, sourcefile, __LINE__) + SHR_ASSERT_FL(ci == bounds_clump%endc, sourcefile, __LINE__) + SHR_ASSERT_FL(pi == bounds_clump%endp, sourcefile, __LINE__) - do gdc = bounds_clump%begg,bounds_clump%endg - grc%area(gdc) = ldomain%area(gdc) - grc%latdeg(gdc) = ldomain%latc(gdc) - grc%londeg(gdc) = ldomain%lonc(gdc) - grc%lat(gdc) = grc%latdeg(gdc) * SHR_CONST_PI/180._r8 - grc%lon(gdc) = grc%londeg(gdc) * SHR_CONST_PI/180._r8 - enddo + ! Set some other gridcell-level variables - ! Fill in subgrid datatypes + do gdc = bounds_clump%begg,bounds_clump%endg + grc%area(gdc) = ldomain%area(gdc) + grc%latdeg(gdc) = ldomain%latc(gdc) + grc%londeg(gdc) = ldomain%lonc(gdc) + grc%lat(gdc) = grc%latdeg(gdc) * SHR_CONST_PI/180._r8 + grc%lon(gdc) = grc%londeg(gdc) * SHR_CONST_PI/180._r8 + enddo - call clm_ptrs_compdown(bounds_clump) + ! Fill in subgrid datatypes - ! By putting this check within the loop over clumps, we ensure that (for example) - ! if a clump is responsible for landunit L, then that same clump is also - ! responsible for all columns and patchs in L. - call clm_ptrs_check(bounds_clump) + call clm_ptrs_compdown(bounds_clump) - ! Set patch%wtlunit, patch%wtgcell and col%wtgcell - call compute_higher_order_weights(bounds_clump) + ! By putting this check within the loop over clumps, we ensure that (for example) + ! if a clump is responsible for landunit L, then that same clump is also + ! responsible for all columns and patchs in L. + call clm_ptrs_check(bounds_clump) - end do - !$OMP END PARALLEL DO + ! Set patch%wtlunit, patch%wtgcell and col%wtgcell + call compute_higher_order_weights(bounds_clump) end subroutine initGridcells From 71621e4960cd28d9928d8367f61bc77c98c22048 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 5 Jul 2021 15:46:27 -0600 Subject: [PATCH 56/63] fixed build problem --- src/cpl/mct/lnd_set_decomp_and_domain.F90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/cpl/mct/lnd_set_decomp_and_domain.F90 b/src/cpl/mct/lnd_set_decomp_and_domain.F90 index 079b7b14d7..4045b7a7f3 100644 --- a/src/cpl/mct/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/mct/lnd_set_decomp_and_domain.F90 @@ -296,8 +296,7 @@ subroutine decompInit_lnd3D(lni,lnj,lnk) ! as the 3rd dimesnion. ! ! !USES: - use decompMod, only : gindex_global, bounds_type - use decompMod, only : gsmap_lnd2dsoi_gdc2glo, get_proc_bounds + use decompMod, only : gindex_global, bounds_type, get_proc_bounds use spmdMod , only : comp_id, mpicom use mct_mod , only : mct_gsmap_init ! From ad012a9d07a6196fb0e9fef3114ae8e4ffc17250 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 5 Jul 2021 20:40:46 -0600 Subject: [PATCH 57/63] fixed bug for cohort beg/end --- src/main/decompMod.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index 35a6c3d3ae..3e3e89c542 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -226,7 +226,7 @@ subroutine get_clump_bounds (n, bounds) bounds%endl = clumps(cid)%endl - procinfo%begl + 1 bounds%begg = clumps(cid)%begg - procinfo%begg + 1 bounds%endg = clumps(cid)%endg - procinfo%begg + 1 - bounds%endCohort = clumps(cid)%endCohort - procinfo%begCohort + 1 + bounds%begCohort = clumps(cid)%begCohort - procinfo%begCohort + 1 bounds%endCohort = clumps(cid)%endCohort - procinfo%begCohort + 1 bounds%level = BOUNDS_LEVEL_CLUMP From f02ba4adeca0d3c3c622f12b8fc484abdd371a0c Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Mon, 5 Jul 2021 21:05:20 -0600 Subject: [PATCH 58/63] modified unit tests so that beg indices now start at 1 --- src/unit_test_shr/unittestSubgridMod.F90 | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/unit_test_shr/unittestSubgridMod.F90 b/src/unit_test_shr/unittestSubgridMod.F90 index 2a02815614..3b42976e79 100644 --- a/src/unit_test_shr/unittestSubgridMod.F90 +++ b/src/unit_test_shr/unittestSubgridMod.F90 @@ -83,12 +83,11 @@ module unittestSubgridMod ! Indices of initial grid cell / landunit / column / patch ! - ! Note that we do NOT start at 1, in order to catch any code that assumes indices start - ! at 1. - integer, parameter, public :: begg = 11 - integer, parameter, public :: begl = 21 - integer, parameter, public :: begc = 31 - integer, parameter, public :: begp = 41 + ! Now we do start at 1. + integer, parameter, public :: begg = 1 + integer, parameter, public :: begl = 1 + integer, parameter, public :: begc = 1 + integer, parameter, public :: begp = 1 ! Indices of final grid cell / landunit / column / patch ! Note that these are the final indices of the allocated arrays, which may be greater From d7df85d437b92d7f6c503bde5f4db258fcc81964 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Tue, 6 Jul 2021 16:45:52 -0600 Subject: [PATCH 59/63] updates for Erik comments --- src/cpl/mct/lnd_set_decomp_and_domain.F90 | 8 ++++++-- src/main/decompInitMod.F90 | 6 +++--- src/main/decompMod.F90 | 1 - 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/cpl/mct/lnd_set_decomp_and_domain.F90 b/src/cpl/mct/lnd_set_decomp_and_domain.F90 index 4045b7a7f3..0a37554313 100644 --- a/src/cpl/mct/lnd_set_decomp_and_domain.F90 +++ b/src/cpl/mct/lnd_set_decomp_and_domain.F90 @@ -15,8 +15,12 @@ module lnd_set_decomp_and_domain private :: surfrd_get_globmask ! Reads global land mask (needed for setting domain decomp) private :: surfrd_get_grid ! Read grid/ladnfrac data into domain (after domain decomp) - type(mct_gsmap), pointer, public :: gsmap_global - type(mct_gsmap), target , public :: gsMap_lnd2Dsoi_gdc2glo + ! translation between local and global indices at gridcell level + type(mct_gsmap), pointer, public :: gsmap_global + + ! translation between local and global indices at gridcell level for multiple levels + ! needed for 3d soil moisture stream + type(mct_gsmap), target , public :: gsMap_lnd2Dsoi_gdc2glo character(len=*), parameter, private :: sourcefile = & __FILE__ diff --git a/src/main/decompInitMod.F90 b/src/main/decompInitMod.F90 index f601b838ba..3514979533 100644 --- a/src/main/decompInitMod.F90 +++ b/src/main/decompInitMod.F90 @@ -615,9 +615,9 @@ subroutine decompInit_glcp(lni,lnj,glc_behavior) integer, pointer :: coCount(:) type(bounds_type) :: bounds integer, allocatable :: ioff(:) - integer, allocatable :: gridcells_per_pe(:) ! needed for all calcs - integer, allocatable :: gridcell_offsets(:) ! needed for all calcs - integer, allocatable :: index_gridcells(:) ! needed for all calcs + integer, allocatable :: gridcells_per_pe(:) ! needed for gindex at all levels + integer, allocatable :: gridcell_offsets(:) ! needed for gindex at all levels + integer, allocatable :: index_gridcells(:) ! needed for gindex at all levels integer, allocatable :: start_global(:) integer, allocatable :: start(:) integer, allocatable :: index_lndgridcells(:) diff --git a/src/main/decompMod.F90 b/src/main/decompMod.F90 index 3e3e89c542..0b4142dc9e 100644 --- a/src/main/decompMod.F90 +++ b/src/main/decompMod.F90 @@ -102,7 +102,6 @@ module decompMod integer, public, pointer :: gindex_col(:) => null() integer, public, pointer :: gindex_patch(:) => null() integer, public, pointer :: gindex_cohort(:) => null() - integer, public, pointer :: gindex_lnd2Dsoi(:) => null() !------------------------------------------------------------------------------ contains From 39103417edb53e5030a250665dff60622fd48934 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Wed, 7 Jul 2021 11:18:06 -0600 Subject: [PATCH 60/63] write pid from GetGlobalWrite --- src/main/GetGlobalValuesMod.F90 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/GetGlobalValuesMod.F90 b/src/main/GetGlobalValuesMod.F90 index 7ea1fc5538..aec1406c0c 100644 --- a/src/main/GetGlobalValuesMod.F90 +++ b/src/main/GetGlobalValuesMod.F90 @@ -137,6 +137,7 @@ subroutine GetGlobalWrite(decomp_index, clmlevel) use LandunitType , only : lun use ColumnType , only : col use PatchType , only : patch + use spmdMod , only : iam ! ! Arguments: integer , intent(in) :: decomp_index @@ -146,6 +147,8 @@ subroutine GetGlobalWrite(decomp_index, clmlevel) integer :: igrc, ilun, icol, ipft !----------------------------------------------------------------------- + write(iulog,*)'proc_id = ',iam + if (trim(clmlevel) == nameg) then igrc = decomp_index From 9ea37c3bd09287077ad9c4c0ddfdaf4c78e3ba72 Mon Sep 17 00:00:00 2001 From: Bill Sacks Date: Thu, 8 Jul 2021 13:02:16 -0600 Subject: [PATCH 61/63] Update ChangeLog --- doc/ChangeLog | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++ doc/ChangeSum | 1 + 2 files changed, 98 insertions(+) diff --git a/doc/ChangeLog b/doc/ChangeLog index 661f91fb0e..3e92f5b388 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,4 +1,101 @@ =============================================================== +Tag name: ctsm5.1.dev047 +Originator(s): mvertens (Mariana Vertenstein) +Date: Thu Jul 8 12:03:31 MDT 2021 +One-line Summary: Start bounds at 1; remove references to MCT + +Purpose and description of changes +---------------------------------- + +Users: take note of (1), and in particular the caveat for users noted +below (in the "Notes of particular relevance for users"). + +(1) All global index arrays on a given processor now have a starting index of 1 + - bounds_proc for each subgrid level has a starting index of 1 for each level + - bounds_clump for each subgrid level has a starting index of 1 for just + the first clump on the processor - but all the other clumps on the + processor do not start at 1 - but rather are offset with the number of + gridcells, columns, ...etc on the preceeding clumps + +(2) There are no longer any references to any mct data structures other than in the mct cap + - All references to gsmap have been removed from decompMod.F90 and + replaced with new global index arrays for the various subgrid levels + - decompInitMod has been refactored to calculated these global index + arrays using pure MPI rather than mct + - ncdio_pio_F90.in has been refactored to use the new global index + arrays rather than the gsmap data structures + - the data struture ldecomp is no longer needed + - the module spmdGathScatMod.F90 is no longer needed and has been removed + +Significant changes to scientifically-supported configurations +-------------------------------------------------------------- + +Does this tag change answers significantly for any of the following physics configurations? +(Details of any changes will be given in the "Answer changes" section below.) + + [Put an [X] in the box for any configuration with significant answer changes.] + +[ ] clm5_1 + +[ ] clm5_0 + +[ ] ctsm5_0-nwp + +[ ] clm4_5 + + +Bugs fixed or introduced +------------------------ +Issues fixed (include CTSM Issue #): +- Addresses the first part of ESCOMP/CTSM#293 (Rework threading to be + done at a higher level, simplifying array argument passing) + +Notes of particular relevance for users +--------------------------------------- +Caveats for users (e.g., need to interpolate initial conditions): +- Until now, if the model produced an error message with a gridcell or + subgrid index (e.g., "Error at p = 1234"), you could rerun the model + with write statements in conditionals like "if (p == 1234) then". With + the changes in this tag, this simple conditional is no longer + possible. Instead, you will need to also reference the processor + number that produces the error. + + If the error message is produced in the lnd log file, then you can + have a conditional like: + if (masterproc .and. p == 1234) then + + If the error message is produced in the cesm log file, then you can + have a conditional like: + if (iam == X .and. p == 1234) then + + where X is the processor number that produced the message. On some + machines (including cheyenne), this processor number is printed at the + start of each line in the cesm log file. In addition, some aborts will + now print "proc_id = X", and that value can be used. + + Soon we will update + https://escomp.github.io/ctsm-docs/versions/master/html/users_guide/trouble-shooting/trouble-shooting.html + to document the new recommended procedure. + +Testing summary: +---------------- + regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): + + cheyenne ---- ok + izumi ------- ok + +Answer changes +-------------- + +Changes answers relative to baseline: NO + +Other details +------------- +Pull Requests that document the changes (include PR ids): +https://github.com/ESCOMP/CTSM/pull/1420 + +=============================================================== +=============================================================== Tag name: ctsm5.1.dev046 Originator(s): rgknox (Ryan Knox,,,) Date: Fri Jul 2 14:36:44 MDT 2021 diff --git a/doc/ChangeSum b/doc/ChangeSum index f37a03661d..63b3d132e4 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,5 +1,6 @@ Tag Who Date Summary ============================================================================================================================ + ctsm5.1.dev047 mvertens 07/08/2021 Start bounds at 1; remove references to MCT ctsm5.1.dev046 rgknox 07/02/2021 Updating external fates has to tag sci.1.46.2_api.16.1.0 ctsm5.1.dev045 slevis 06/29/2021 Include CWD in heterotrophic respiration ctsm5.1.dev044 mvertens 06/24/2021 New stream functionality when using NUOPC or LILAC From 8c3570a5cf854359afb3ac00fb0381507ef7e138 Mon Sep 17 00:00:00 2001 From: Samuel Levis Date: Fri, 9 Jul 2021 17:55:04 -0600 Subject: [PATCH 62/63] Updated ChangeLog --- doc/ChangeLog | 56 +++++---------------------------------------------- 1 file changed, 5 insertions(+), 51 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index f5d58eba93..d46d11d991 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: ctsm5.1.dev048 Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) -Date: Fri Jul 09 11:32:57 MDT 2021 +Date: Fri Jul 09 17:51:57 MDT 2021 One-line Summary: Make certain history fields descriptive inst. of labeling by number Purpose and description of changes @@ -41,67 +41,21 @@ Caveats for users (e.g., need to interpolate initial conditions): in place of using numbers to differentiate them. Substantial timing or memory changes: -[For timing changes, you should at least check the PFS test in the test suite] + The PFS test PASSes but + TPUTCOMP non-passes: 4 + MEMCOMP non-passes: 25 + on Cheyenne Testing summary: ---------------- -[... Remove before making master tag. - -Nearly all CTSM tags should undergo 'regular' (aux_clm) testing. -However, it occasionally makes sense to do more or less system testing; -here is guidance on different available levels of system testing: - a) no system testing (for use when the only changes are ones that - have absolutely no impact on system runs; this - includes documentation-only tags, tags that - just change the tools or some python code that - does not impact system runs, etc.) - b) minimal (for use in rare cases where only a small change with - known behavior is added ... eg. a minor bug fix. This - might be to just run the "short" test list, or to run - a single test. Whatever makes sense for the particular case.) - c) regular (regular tests on normal machines if CTSM source is modified) - d) release (regular tests plus the fates, ctsm_sci, mosart and rtm test lists - and normally all of the ancillary tests (build-namelist, python, ptclm, etc.) - would be run as well) - -In addition, various other tests of the tools, python and perl -infrastructure should be run when appropriate, as described below. - -...] - -[Remove any lines that don't apply.] [PASS means all tests PASS; OK means tests PASS other than expected fails.] - build-namelist tests (if CLMBuildNamelist.pm has changed): - - cheyenne - - - tools-tests (test/tools) (if tools have been changed): - - cheyenne - - - PTCLM testing (tools/shared/PTCLM/test): (if cime or cime_config are changed) - (PTCLM is being deprecated, so we only expect this to be done on occasion) - - cheyenne - - - python testing (if python code has changed; see instructions in python/README.md; document testing done): - - (any machine) - - regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): cheyenne ---- OK izumi ------- OK - - fates tests: - cheyenne ---- - - any other testing (give details below): - -If the tag used for baseline comparisons was NOT the previous tag, note that here: Answer changes From 5176e76006fc53d81055e8c067a1c13526cd3fd1 Mon Sep 17 00:00:00 2001 From: Erik Kluzek Date: Sat, 10 Jul 2021 11:40:12 -0600 Subject: [PATCH 63/63] Update change files --- doc/ChangeLog | 29 +++++++++++++++++++++-------- doc/ChangeSum | 2 +- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/doc/ChangeLog b/doc/ChangeLog index d46d11d991..f8747837c6 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,7 +1,7 @@ =============================================================== Tag name: ctsm5.1.dev048 Originator(s): slevis (Samuel Levis,SLevis Consulting,303-665-1310) -Date: Fri Jul 09 17:51:57 MDT 2021 +Date: Sat Jul 10 11:39:55 MDT 2021 One-line Summary: Make certain history fields descriptive inst. of labeling by number Purpose and description of changes @@ -11,6 +11,9 @@ Purpose and description of changes fields that I had labeled by number in #1340. While doing this, I applied the change to a bunch of other history fields that needed it. + Some variable names for pools was also changed to use terms consistent with the new + names as well. + Significant changes to scientifically-supported configurations -------------------------------------------------------------- @@ -32,6 +35,7 @@ Does this tag change answers significantly for any of the following physics conf Bugs fixed or introduced ------------------------ Issues fixed (include CTSM Issue #): #1392 + #1392 -- Some soil decomposition history fields have the pool number rather than a description in their name Notes of particular relevance for users @@ -40,16 +44,25 @@ Caveats for users (e.g., need to interpolate initial conditions): The names of certain history fields have changed to be more descriptive in place of using numbers to differentiate them. -Substantial timing or memory changes: - The PFS test PASSes but - TPUTCOMP non-passes: 4 - MEMCOMP non-passes: 25 - on Cheyenne - + history field name change as follows... + LITR1 becomes MET_LIT (metabolic) + LITR2 becomes CEL_LIT (cellulosic) + LITR3 becomes LIG_LIT (lignin) + SOIL1 becomes ACT_SOM (active) + SOIL2 becomes SLO_SOM (slow) + SOIL3 becomes PAS_SOM (passive) Testing summary: ---------------- + build-namelist tests (if CLMBuildNamelist.pm has changed): + + cheyenne - PASS + + python testing (if python code has changed; see instructions in python/README.md; document testing done): + + cheyenne - PASS + [PASS means all tests PASS; OK means tests PASS other than expected fails.] regular tests (aux_clm: https://github.com/ESCOMP/CTSM/wiki/System-Testing-Guide#pre-merge-system-testing): @@ -60,7 +73,7 @@ Testing summary: Answer changes -------------- -Changes answers relative to baseline: NO +Changes answers relative to baseline: NO bit-for-bit Other details diff --git a/doc/ChangeSum b/doc/ChangeSum index e6438f77fb..7b2b7cce94 100644 --- a/doc/ChangeSum +++ b/doc/ChangeSum @@ -1,6 +1,6 @@ Tag Who Date Summary ============================================================================================================================ - ctsm5.1.dev048 slevis 07/09/2021 Make certain history fields descriptive inst. of labeling by number + ctsm5.1.dev048 slevis 07/10/2021 Make certain history fields descriptive inst. of labeling by number ctsm5.1.dev047 mvertens 07/08/2021 Start bounds at 1; remove references to MCT ctsm5.1.dev046 rgknox 07/02/2021 Updating external fates has to tag sci.1.46.2_api.16.1.0 ctsm5.1.dev045 slevis 06/29/2021 Include CWD in heterotrophic respiration