ESCOMP / CTSM

Community Terrestrial Systems Model (includes the Community Land Model of CESM)
http://www.cesm.ucar.edu/models/cesm2.0/land/
Other
306 stars 308 forks source link

MIMICS todo list #2361

Open wwieder opened 7 months ago

wwieder commented 7 months ago

Working with @piersond and @katierocci on our MSBio project we've realized a few things should be altered in MIMICS. This is a running list of issues to address. Checked boxes have been evaluated in single point testing

mvdebolskiy commented 7 months ago

Tagging @elisacw, so she is up-to-date.

wwieder commented 7 months ago

Thanks @mvdebolskiy

wwieder commented 7 months ago

@slevis-lmwg I'm trying to understand why CHEM pools are so much smaller than AVAIL in the plot above.

One thing I can't track down is the fraction of litter inputs that bypasses the microbial "filter" and goes direct to SOM pools. This parameter was called FI in previous MIMICS work and was larger for structural litter (passed to chemically protected SOM) than it was for metabolic letter (passed to protected SOM). I can't find where litter inputs enter the litter pools at all in the code, nor can I find a parameter like FI on the parameter file. If you have some time, can we dig into this together? Thanks in advance.

slevis-lmwg commented 7 months ago

I'm adding @wwieder's notes from an email here:

in CNCStateUpdate1Mod.F90, line 214

                  ! phenology and dynamic land cover fluxes
                  do i = i_litr_min, i_litr_max
                     cf_soil%decomp_cpools_sourcesink_col(c,j,i) = &
                          cf_veg%phenology_c_to_litr_c_col(c,j,i) * dt
                  end do

cf_soil%decomp_cpools_sourcesink_col(c,j,som3) = mimics_fi_1 cf_veg%phenology_c_to_litr_c_col(c,j,lit1) dt cf_soil%decomp_cpools_sourcesink_col(c,j,som2) = mimics_fi_2 cf_veg%phenology_c_to_litr_c_col(c,j,lit2) dt


- [ ] We'll have to repeat this code for N fluxes too.
- [ ] In the testbed I'm using values of 0.005 and 0.3 for mimics_fi_1 and mimics_fi_2, respectively.  This should be a single 2d parameter on the parameter file, similar to how we have other mimics parameters.

As a separate issue, it seems like allocation to litter pools is actually being determined in CNPhenologyMod.F90 by the parameters lf_f & lf_r.  This is different to how MIMICS handles the allocation to LIT1 and LIT2 pools, but may not be worth addressing at this point.
slevis-lmwg commented 7 months ago

@wwieder and I agreed on the following steps:

slevis-lmwg commented 7 months ago

Here is my first draft of the code change in CNCStateUpdate1Mod.F90:

                  ! phenology and dynamic land cover fluxes
                  if (decomp_method == mimics_decomp) then
                     do i = i_litr_min, i_litr_max  ! in MIMICS these are 1 and 2
                        cf_soil%decomp_cpools_sourcesink_col(c,j,i) = (1 - mimics_fi(i)) * &
                           cf_veg%phenology_c_to_litr_c_col(c,j,i) * dt
                     end do
                     cf_soil%decomp_cpools_sourcesink_col(c,j,i_phys_som) = mimics_fi(1) * &
                        cf_veg%phenology_c_to_litr_c_col(c,j,i_met_lit) * dt
                     cf_soil%decomp_cpools_sourcesink_col(c,j,i_chem_som) = mimics_fi(2) * &
                        cf_veg%phenology_c_to_litr_c_col(c,j,i_str_lit) * dt
                  else
                     do i = i_litr_min, i_litr_max
                        cf_soil%decomp_cpools_sourcesink_col(c,j,i) = &
                             cf_veg%phenology_c_to_litr_c_col(c,j,i) * dt
                     end do
                  end if

...and equivalent in CNNStateUpdate1Mod.F90:

               ! phenology and dynamic land cover fluxes
               if (decomp_method == mimics_decomp) then
                  do i = i_litr_min, i_litr_max  ! in MIMICS these are 1 and 2
                     nf_soil%decomp_npools_sourcesink_col(c,j,i) = (1 - mimics_fi(i)) * &
                        nf_veg%phenology_n_to_litr_n_col(c,j,i) * dt
                  end do
                  nf_soil%decomp_npools_sourcesink_col(c,j,i_phys_som) = mimics_fi(1) * &
                     nf_veg%phenology_n_to_litr_n_col(c,j,i_met_lit) * dt
                  nf_soil%decomp_npools_sourcesink_col(c,j,i_chem_som) = mimics_fi(2) * &
                     nf_veg%phenology_n_to_litr_n_col(c,j,i_str_lit) * dt
               else
                  do i = i_litr_min, i_litr_max
                     nf_soil%decomp_npools_sourcesink_col(c,j,i) = &
                          nf_veg%phenology_n_to_litr_n_col(c,j,i) * dt
                  end do
               end if
wwieder commented 7 months ago

looks good to me Sam. Once you have this ready to go I'll test it out on my branch.

Easiest may be for me to use use source mods, so if you can point me to your branch / directory I'll grab the StateUpdate1Mod files to test things out. Alternatively, I guess you can push to my PR branch and I can pull the changes onto my local branch?

wwieder commented 6 months ago

@slevis-lmwg is this something that can be accomplished in Sprint 3, even if it's just implementing the code mods on a branch tag that I can merge into simulations I'm running with MIMICS? It will remove a blocker for me, but isn't super urgent as I'm on PTO next week :)

slevis-lmwg commented 6 months ago

@wwieder I will add to my Sprint 3 TODOs.