-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
initial commit for 4p2z settings #423
initial commit for 4p2z settings #423
Conversation
1. auto_graze_zoo_zint and auto_graze_zoo_zint_100m were defined as per-autotroph but not per-zooplankton, so they were effectively auto_graze_zootot_zint and auto_graze_zootot_zint_100m. This commit adds the per-zooplankton portion of the defintion. 2. Similarly, zoo_graze_zoo_zint and zoo_graze_zoo_zint_100m were actually computing zoo_graze_zootot_zint and zoo_graze_zootot_zint_100m. This commit adds the second per-zooplankton portion of the definition. This will NOT change the short names of the diagnostics in typical CESM usage because the 1-zoo configurations all name the single zooplankton "zoo". It _will_ allow more flexibility in the output when running with multiple zooplankton functional types.
Previously, pocToFloor wasn't included in output by default
1. want pocToFloor in daily and monthly streams, not just monthly 2. added new ((zoo))_los_zint_150m (integrating to 150m, rather than 100m that is default for other shallow integrals) 3. Capped picpoc at 1.0 to prevent "ballast exceeds POC" errors
A few files that were generated by MARBL scripts got added in the previous commit
1. MARBL_settings_file_class.py needs to recognize CESM2+4p2z as valid PFT_defaults setting; also, need to allow case where the number of grazing relationships is less than max_grazer_prey_cnt * zooplankton_cnt (e.g. only 7 of the potential 8 relationships with 4 prey and 2 zooplankton are defined) 2. settings_latest+4p2z.{yaml,json} also need to handle fewer than max grazing relationships; done by adding "null" as valid grazer_sname 3. marbl_settings_mod.F90 also needs to recognize CESM2+4p2z as valid PFT_defaults setting
There were some default values from the CESM 2.1 version, which hadn't yet been tuned. I think this yaml file matches the marbl_in values found in the 1 degree companion run to the high-res BGC run done on frontera
* auto_ind_cnt should default to 1, not zero * zoo_ind_cnt should default to 0, not 1 * mesozoo short name should be mesozoo, not repeating microzoo * f_zoo_detr should be .4 for diaz_mesozoo, not 1.2 * need microzoo_mesozoo to be grazing_relationship(4,2) not (4,1) -- the second index must match the zooplankton index of the predator!
Progress so far
The next step will be to merge Discussion Topics
diff --git a/src/marbl_interior_tendency_mod.F90 b/src/marbl_interior_tendency_mod.F90
index e6017ef..398b42c 100644
--- a/src/marbl_interior_tendency_mod.F90
+++ b/src/marbl_interior_tendency_mod.F90
@@ -1452,7 +1452,8 @@ subroutine compute_autotroph_calcification(km, autotroph_local, temperature, car
picpoc = max(0.0_r8, -0.0136_r8 * CO2(:) + picpoc(:) + 0.21_r8)
!P-limitation effect (CaCO2/organicC ratio increases when P limitation term is low)
- picpoc = max(0.0_r8, -0.48_r8 * Plim(auto_ind,:) + picpoc(:) + 0.48_r8)
+ ! max out picpoc at one to prevent crashing due to "ballast exceeds POC" error
+ picpoc = min(1., max(0.0_r8, -0.48_r8 * Plim(auto_ind,:) + picpoc(:) + 0.48_r8))
!multiply cocco growth rate by picpoc to get CaCO3 formation
CaCO3_form(auto_ind,:) = picpoc(:) * photoC(auto_ind,:) I'd like to know if we would expect to see answer changes in the current 3p1z setup, or if
I am happy waiting until we fix #320 and letting this take care of itself, but an alternative approach would be to add Next Steps Next up, I'll merge development into this branch; it looks like there are conflicts in a couple of files to resolve, and I'll also need to add the following new variables to the 4p2z settings file: diff --git a/defaults/settings_latest.yaml b/defaults/settings_latest.yaml
index 87e50c0..2f105ce 100644
--- a/defaults/settings_latest.yaml
+++ b/defaults/settings_latest.yaml
@@ -232,6 +232,12 @@ general_parms :
units : unitless
datatype : logical
default_value : .true.
+ lcheck_forcing :
+ longname : Control whether consistency checks are performed on forcing input (useful for debugging)
+ subcategory : 2. config flags
+ units : unitless
+ datatype : logical
+ default_value : .false.
lecovars_full_depth_tavg :
longname : If .false., MARBL will recommend truncating the column for some diagnostics
subcategory : 2. config flags
@@ -283,6 +289,12 @@ general_parms :
units : unitless
datatype : logical
default_value : .false.
+ bftt_dz_sum_thres:
+ longname : MARBL will abort if abs(1 - sum(bot_flux_to_tend)) exceeds this threshold
+ subcategory : 4. general parameters
+ units : unitless
+ datatype : real
+ default_value : 1.0e-14
Jint_Ctot_thres_molpm2pyr :
longname : MARBL will abort if abs(Jint_Ctot) exceeds this threshold
subcategory : 4. general parameters
@@ -1008,6 +1020,14 @@ PFT_derived_types :
default_value :
default : 1e34
((zooplankton_sname)) == "zoo" : 0.4
+ basal_respiration_rate_per_day :
+ longname : Basal respiration rate
+ subcategory : 11. zooplankton
+ units : 1/day
+ datatype : real
+ default_value :
+ default : 1e34
+ ((zooplankton_sname)) == "zoo" : 0.0
loss_thres :
longname : Zoo concentration where losses go to zero
subcategory : 11. zooplankton |
After merging in development, there were three new variables to add to settings_latest+4p2z (a basal loss term in zooplankton_settings and two configuration flags)
This branch adds the zoo_loss_zint_150m diagnostic, so we need a baseline that contains this field
The original way I wrote this was causing problems in the CESM-SPECTRA test
This isn't really a CESM2 configuration; at some point we may want to update it to be CESM3+4p2z, though.
This is my first attempt at creating the yaml file for the 4p2z settings.