marbl-ecosys / MARBL

Marine Biogeochemistry Library
https://marbl-ecosys.github.io
Other
14 stars 25 forks source link

Question on carbon isotope model and equation within marbl_ciso_interior_tendency_mod.F90 #428

Open jlinmod opened 1 year ago

jlinmod commented 1 year ago

Has anyone verified/validated the output for the dissolved organic carbon isotope/radiocarbon model (marbl_ciso)?

In my 20-yr average, mapping of DO13C (CISO_DOCtot_d13C) at 5 m and 3000 m depth (z_t=1 and 51) , the range should be between -20 to -30 per mil, but I am getting 0 to -10 per mil mostly.

While DO14C (CISO_DOCtot_d14C) is simulating younger in the deep ocean than the top surface ocean. DO14C in the deep ocean should also be simulating depleted -400 to -500 per mil. Is the model simulation output correct for the model parameters? DO13C 5 meter DO13C 5 meter DO13C 3000 meter DO13C 3000 meters DO14C 5 meter DO14C 5 meters DO14C 3000 meter DO14C 3000 meters

Equation within marbl_ciso_interior_tendency_mod.F90 question:

Starting on line 532 of marbl_ciso_interior_tendency_mod.F90 for "Calculate oceanic D14C and D13C of carbon pools" is the tracer values to calculate per mille notation for DI13C, DI14C, DO13C, and DO14C. Are the parenthesis for the equation using the correct PEMDAS for calculating per mille? Should there be sub-brackets around the ratios of 13C/std before subtracting 1?

Code on line 532: DIC_d13C(k) = ( R13C_DIC(k) / R13C_std - c1 ) c1000 DIC_d14C(k) = ( R14C_DIC(k) / R14C_std - c1 ) c1000

   DOCtot_d13C(k) =  ( R13C_DOCtot(k) / R13C_std - c1 ) * c1000
   DOCtot_d14C(k) =  ( R14C_DOCtot(k) / R14C_std - c1 ) * c1000

   zoototC_d13C(k)=  ( R13C_zoototC(k) / R13C_std - c1 ) * c1000
   zoototC_d14C(k)=  ( R14C_zoototC(k) / R14C_std - c1 ) * c1000

Proposed code: DIC_d13C(k) = ( (R13C_DIC(k) / R13C_std) - c1 ) c1000 DIC_d14C(k) = ( (R14C_DIC(k) / R14C_std) - c1 ) c1000

   DOCtot_d13C(k) =  ( (R13C_DOCtot(k) / R13C_std) - c1 ) * c1000
   DOCtot_d14C(k) =  ( (R14C_DOCtot(k) / R14C_std) - c1 ) * c1000

   zoototC_d13C(k)=  ( (R13C_zoototC(k) / R13C_std) - c1 ) * c1000
   zoototC_d14C(k)=  ( (R14C_zoototC(k) / R14C_std) - c1 ) * c1000

It should be noted that my model is unable to build the case with the updated parentheses.