c13ratio/c14ratio is used in places where rc13_atm.rc14_atm should be used from the timeseries file
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 atmosphereOnce, 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
A lot of the above has to do with using c13ratio/c14ratio for restarts that don't have C13/C14 variables on them, which because of #1358 we need to have good spunup IC files, so trying to use c13ratio/c14ratio to for restarts without them isn't something we should do anyway. forc_pc13o2_grc turns out to not be used for anything useful.
I'ts also used for InitCold, which is more important, but as it's just for cold starts which would mainly be used for 1850 so would probably be OK.
So removing those that leaves these:
C13:
biogeochem/CNPhenologyMod.F90: c13_cnveg_carbonstate_inst%leafc_xfer_patch(p) = leafc_xfer(p) * c13ratio biogeochem/dynConsBiogeochemMod.F90: c13_cnveg_carbonflux_inst%xsmrpool_c13ratio_patch(p) = c13ratio C14:
biogeochem/CNPhenologyMod.F90: c14_cnveg_carbonstate_inst%leafc_xfer_patch(p) = leafc_xfer(p) * c14ratio soilbiogeochem/CNSoilMatrixMod.F90: where(cs14_soil%decomp0_cpools_vr_col .lt. epsic14ratio) soilbiogeochem/CNSoilMatrixMod.F90: cs14_soil%decomp0_cpools_vr_col = epsic14ratio
@wwieder @slevis-lmwg and I discussed this a bit. Will thought the code might be right, as c13ratio/c14ratio should be what the ratio is inside the plant. But, as documented above it appears to be the preindustrial atmospheric value. So either the comments need to change or the code does.