Skip to content

c13ratio/c14ratio is used in places where rc13_atm.rc14_atm should be used from the timeseries file #3567

@ekluzek

Description

@ekluzek

The only place where the timeseries values of atmospheric c13ratio and c14ratio is used is within the Photosynthesis code. However, there are other places in the code where the preindustrial values of c13ratio/c14ratio is used, that should use the rc13_atm/rc14_atm values from the timeseries datasets. Otherwise these places are using the fixed preindustrial values which isn't something that we should be doing.

Here are those other places:

C13:

biogeochem/CNPhenologyMod.F90:            c13_cnveg_carbonstate_inst%leafc_xfer_patch(p) = leafc_xfer(p) * c13ratio
biogeochem/CNVegCarbonStateType.F90:       ratio = c13ratio
biogeochem/CNVegCarbonStateType.F90:                this%totvegc_col(i) = c12_cnveg_carbonstate_inst%totvegc_col(i) * c13ratio
biogeochem/CNVegetationFacade.F90:          call this%c13_cnveg_carbonstate_inst%Init(bounds, carbon_type='c13', ratio=c13ratio, &
biogeochem/dynConsBiogeochemMod.F90:                c13_cnveg_carbonflux_inst%xsmrpool_c13ratio_patch(p) = c13ratio
cpl/nuopc/lnd_import_export.F90:          atm2lnd_inst%forc_pc13o2_grc(g) = co2_ppmv_input(g) * c13ratio * 1.e-6_r8 * forc_pbot
main/clm_instMod.F90:          call c13_soilbiogeochem_carbonstate_inst%Init(bounds, carbon_type='c13', ratio=c13ratio, &

C14:

biogeochem/CNPhenologyMod.F90:            c14_cnveg_carbonstate_inst%leafc_xfer_patch(p) = leafc_xfer(p) * c14ratio
biogeochem/CNVegCarbonStateType.F90:       ratio = c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%totvegc_col(i) = c12_cnveg_carbonstate_inst%totvegc_col(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%leafc_patch(i) = c12_cnveg_carbonstate_inst%leafc_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%leafc_storage_patch(i) = c12_cnveg_carbonstate_inst%leafc_storage_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%leafc_xfer_patch(i) = c12_cnveg_carbonstate_inst%leafc_xfer_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%frootc_patch(i) = c12_cnveg_carbonstate_inst%frootc_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%frootc_storage_patch(i) = c12_cnveg_carbonstate_inst%frootc_storage_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%frootc_xfer_patch(i) = c12_cnveg_carbonstate_inst%frootc_xfer_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%livestemc_patch(i) = c12_cnveg_carbonstate_inst%livestemc_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%livestemc_storage_patch(i) = c12_cnveg_carbonstate_inst%livestemc_storage_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%livestemc_xfer_patch(i) = c12_cnveg_carbonstate_inst%livestemc_xfer_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%deadstemc_patch(i) = c12_cnveg_carbonstate_inst%deadstemc_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%deadstemc_storage_patch(i) = c12_cnveg_carbonstate_inst%deadstemc_storage_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%deadstemc_xfer_patch(i) = c12_cnveg_carbonstate_inst%deadstemc_xfer_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%livecrootc_patch(i) = c12_cnveg_carbonstate_inst%livecrootc_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%livecrootc_storage_patch(i) = c12_cnveg_carbonstate_inst%livecrootc_storage_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%livecrootc_xfer_patch(i) = c12_cnveg_carbonstate_inst%livecrootc_xfer_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%deadcrootc_patch(i) = c12_cnveg_carbonstate_inst%deadcrootc_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%deadcrootc_storage_patch(i) = c12_cnveg_carbonstate_inst%deadcrootc_storage_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%deadcrootc_xfer_patch(i) = c12_cnveg_carbonstate_inst%deadcrootc_xfer_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%gresp_storage_patch(i) = c12_cnveg_carbonstate_inst%gresp_storage_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%gresp_xfer_patch(i) = c12_cnveg_carbonstate_inst%gresp_xfer_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%cpool_patch(i) = c12_cnveg_carbonstate_inst%cpool_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%xsmrpool_patch(i) = c12_cnveg_carbonstate_inst%xsmrpool_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%xsmrpool_loss_patch(i) = c12_cnveg_carbonstate_inst%xsmrpool_loss_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                this%ctrunc_patch(i) = c12_cnveg_carbonstate_inst%ctrunc_patch(i) * c14ratio
biogeochem/CNVegCarbonStateType.F90:                  multiplier = c14ratio)
biogeochem/CNVegCarbonStateType.F90:               multiplier = c14ratio)
biogeochem/CNVegetationFacade.F90:          call this%c14_cnveg_carbonstate_inst%Init(bounds, carbon_type='c14', ratio=c14ratio, &
biogeochem/CNVegetationFacade.F90:               template_multiplier = c14ratio)
biogeochem/test/CNVegComputeSeed_test/test_ComputeSeedAmounts.pf:    expected = DEADSTEMC_SEED * c14ratio
main/clm_instMod.F90:          call c14_soilbiogeochem_carbonstate_inst%Init(bounds, carbon_type='c14', ratio=c14ratio, &
soilbiogeochem/CNSoilMatrixMod.F90:               where(cs14_soil%decomp0_cpools_vr_col .lt. epsi*c14ratio) 
soilbiogeochem/CNSoilMatrixMod.F90:                  cs14_soil%decomp0_cpools_vr_col = epsi*c14ratio

This originated in this reference...

I'm not sure I understand the other comment you made related to the use of the isotope data in photosynthesis. I think this is the only place in the code that we should be reading in the atmospheric 13CO2 and 14CO2 data. After photosynthesis occur CLM tracks the C13 and C14 ratios as C moves around the ecosystem and (radioactively decays), but we don't have to track down the 13 or 14CO2 back to the atmosphere after it's respired. That is I don't think we want to do this

"We undoubtably want it to use the same ratios throughout the code and not just for Photosynthesis."

But will defer to @ckoven here to confirm

I'll start another issue for this to go into more depth. But, the code sets c13ratio and c14ratio which are hardcoded and described as the pre-industrial atmospheric c13ratio. This is used in places in the model that look like it should use rc13_canair_patch and rc14_canair_patch. For example see this description of c13ration in clm_varcon.F90:

 !!! C13
  real(r8), public, parameter :: preind_atm_del13c = -6.0_r8   ! preindustrial value for atmospheric del13C
  real(r8), public, parameter :: preind_atm_ratio = SHR_CONST_PDB + (preind_atm_del13c * SHR_CONST_PDB)/1000.0_r8  ! 13C/12C
  real(r8), public :: c13ratio = preind_atm_ratio/(1.0_r8+preind_atm_ratio) ! 13C/(12+13)C preind atmosphere

Once, the Carbon isotopes are in the plants -- I'm assuming it's handled correctly. It's these use of c13ratio and c14ratio that clearly define themselves as isotope ratio in air that I question. Especially, when above it seems to describe it as fixed to preindustrial.

Originally posted by @ekluzek in #182

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementnew capability or improved behavior of existing capabilitynon-bfbChanges answers (incl. adding tests)scienceEnhancement to or bug impacting science

    Projects

    Status

    Todo

    Status

    Ready to start (or start again)

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions