Tropical Reservoir Water Quality Workbook (GLM-AED)

ENVT3362 · GLM 3.3.0 with AED

Overview

In this workbook, we build up the water quality model (AED) for the Tropical Reservoir step-by-step. We start with a model with dissolved oxygen, then we add nutrients, one algal group, and three competing algal groups. We then explore how phytoplankton dynamics respond to different nutrient loads, and finally (optional) add zooplankton grazing. You will set up each case in its own folder, starting from a copy of the Tropical Reservoir model.

Learning objectives

By the end of this workbook, you should be able to:

  1. Build your own AED model configuration by switching modules on and off.
  2. Explain the feedbacks between dissolved oxygen, nutrients, phytoplankton and zooplankton.

Study site

The reservoir is in the tropics of northern Australia (12.85° S, 131.1° E). It is about 14 m deep at the start of the run, with a crest at 38.17 m AHD. The simulation runs from 15 Nov 2011 to 1 Jan 2014 at an hourly time step. Inflow arrives mostly as wet-season pulses, about 86 million m³ per year.

Cases

Each case has its own folder in glm_casestudies, next to the GLM folder. You make each folder by copying the folder of an earlier case and renaming it, so you never overwrite a case you have already run.

Folder nameCaseModules ONCopied from
TropicalReservoir_0_BaseCase 0 — Base: Dissolved oxygenoxygenTropicalReservoir
TropicalReservoir_1_NutrientsCase 1 — Add nutrients, organic matter and silica+ nitrogen, phosphorus, organic matter, silicaTropicalReservoir_0_Base
TropicalReservoir_2_DiatomCase 2 — Add diatoms+ phytoplankton (diatoms only)TropicalReservoir_1_Nutrients
TropicalReservoir_3_ThreePhytoCase 3 — Three phyto groups+ green algae and cyanobacteriaTropicalReservoir_2_Diatom
TropicalReservoir_4_HighNutrientLoadCase 4 — Nutrient load scenariosSame as Case 3; inflow nitrogen and phosphorus × 5TropicalReservoir_3_ThreePhyto
TropicalReservoir_5_ZooplanktonCase 5 — Add zooplankton (optional)Case 3 + zooplanktonTropicalReservoir_3_ThreePhyto

Units. AED reports concentrations in mmol/m³. Phytoplankton biomass is in mmol C/m³. As a rough guide, chlorophyll-a (µg/L) ≈ mmol C/m³ × 12 / 50, assuming a C:Chl ratio of 50.

Setting up

These steps create the first case folder, TropicalReservoir_0_Base. Every later case is a copy of an earlier one, so the changes you make here carry through to all cases.

Step 1 — Create the TropicalReservoir_0_Base folder

Open the glm_casestudies folder that you downloaded last week. Copy the TropicalReservoir folder, paste it into glm_casestudies, and rename the copy TropicalReservoir_0_Base. Open the new folder and delete the output folder inside it; GLM creates a new one the first time you run the case. Your folders should now look like this:

glm_casestudies/
│── GLM/
│── TropicalReservoir/            (original — do not change)
└── TropicalReservoir_0_Base/
    │── aed/          aed.nml, aed_phyto_pars.nml, aed_zoop_pars.nml
    │── bcs/          met.csv, inflow_WQ.csv, outflow.csv
    │── glm3.nml
    │── plots_aed.nml
    │── run_glm.bat
    └── run_glm.sh

Every case folder sits next to the GLM folder, in the same place as TropicalReservoir, so run_glm.bat and run_glm.sh work without any changes.

Step 2 — Set the surface and bottom outputs

Open glm3.nml and find the &output block. Replace the depth-specific output lines so that GLM writes two files: WQ_0.csv at the surface (0.5 m below the water surface, following the water level as it rises and falls) and WQ_1.csv at the bottom (1 m above the sediment):

   ! Depth specific outputs
   csv_point_nlevs   = 2
   csv_point_fname   = 'WQ_'
   csv_point_at      = 1, 0.5
   csv_point_frombot = .true., .false.   ! 1 m from the bottom, 0.5 m from the surface
   csv_point_nvars   = 2
   csv_point_vars    = 'temp','OXY_oxy'

In each later case you only change csv_point_nvars and csv_point_vars, to add the new variables.

Step 3 — Switch off the retention-time tracer

Open aed/aed.nml, find the &aed_tracer block and set retention_time to .false.:

&aed_tracer
    retention_time = .false.
    num_tracers = 1
    ...
/

Why? In GLM 3.3, the inflow columns listed in inflow_vars are passed to the AED variables in order, starting from the second AED variable. Keeping one tracer (aed_tracer) as the first module fills that first place, so oxygen and the nutrients receive their correct inflow concentrations. The tracer is a passive dye and does not affect the results.

Running the model

Run each case from its own folder, in the same way as in the previous lab.

Each run writes to the output/ folder of that case: output.nc, lake.csv, WQ_0.csv (surface) and WQ_1.csv (bottom). Open the two WQ files in Excel or R to make your plots. Every run overwrites these files.

The plot window shows the variables listed in plots_aed.nml. In each case you replace the &plots block of this file so that it lists only the variables that exist in that case.

Case 0 — Base: Dissolved oxygen (TropicalReservoir_0_Base)

Set up the case folder

Work in the TropicalReservoir_0_Base folder you created in Setting up (Steps 1–3). Make these changes, then run the model:

  1. Open aed/aed.nml and find the &aed_models block. This section specifies which modules are enabled during the simulation. Any line beginning with ! is treated as a comment, meaning that module is disabled. Modules must be listed in the correct order, as later modules may depend on variables generated by earlier ones. Also, ensure that the final active module in the list does not end with a comma. Edit the block so that only the tracer and oxygen are on:
    &aed_models
       models = 'aed_tracer',
               !'aed_noncohesive',
                'aed_oxygen'
               !'aed_carbon',
               !'aed_silica',
               !'aed_nitrogen',
               !'aed_phosphorus',
               !'aed_organic_matter',
               !'aed_phytoplankton',
               !'aed_zooplankton',
               !'aed_totals',
    /
  2. In glm3.nml, in the &inflow block, set the inflow variables to:
       inflow_varnum = 4
       inflow_vars = 'FLOW','SAL','TEMP','OXY'
  3. In plots_aed.nml, replace the &plots block with:
    &plots
      nplots = 2
      plot_width = 300
      plot_height = 135
      title = 'Temperature (C)', 'Oxygen (mmol/m3)'
      vars  = 'temp', 'OXY_oxy'
      min_z = 15, 0
      max_z = 35, 400
    /

The base case simulates dissolved oxygen only. Surface oxygen rises and falls with the seasons, while the bottom water has almost no oxygen (below 10 mmol/m³) on 638 of the 778 simulated days.

Oxygen enters the reservoir at the surface, from the air and with the inflow. At the bottom, the sediment continuously uses oxygen (the sediment oxygen demand, Fsed_oxy). When the reservoir is stratified, the warm surface layer sits on top of the cooler bottom layer and the two do not mix. The bottom water is then cut off from its oxygen supply, so the sediment draws it down to near zero.

First, let's check that AED is switched on. In glm3.nml, the &wq_setup block must be uncommented and point to the AED namelist:

&wq_setup
   wq_lib            = 'aed'
   wq_nml_file       = 'aed/aed.nml'
   ode_method        = 1
   split_factor      = 1
   bioshade_feedback = .true.
   repair_state      = .true.
/

The oxygen module is set up in the &aed_oxygen block:

&aed_oxygen
   oxy_initial   = 225.0     ! starting concentration (mmol/m3)
   Fsed_oxy      = -20.0     ! sediment oxygen demand (mmol/m2/day)
   Ksed_oxy      =  50.0     ! half-saturation for the sediment demand (mmol/m3)
   theta_sed_oxy =   1.08    ! temperature multiplier
/
Case 0 surface and bottom oxygen
Figure 1. Surface and bottom dissolved oxygen in the base case.

Tasks

Questions

  1. Why does the bottom water have almost no oxygen for most of the simulation? Use the words stratification and sediment oxygen demand in your answer. (Think back to Week 9.)
  2. What happened to bottom oxygen when you reduced Fsed_oxy to -5? What does this tell you about the role of the sediment? (Think back to Week 2.)

Case 1 — Add nutrients, organic matter and silica (TropicalReservoir_1_Nutrients)

Set up the case folder

  1. In glm_casestudies, copy the TropicalReservoir_0_Base folder, paste it into glm_casestudies, and rename the copy TropicalReservoir_1_Nutrients. Delete the output folder inside the new folder.
  2. In aed/aed.nml, switch on the four nutrient modules in the &aed_models block by removing the ! at the beginning of each corresponding line. Note the comma after 'aed_oxygen' and no comma after 'aed_organic_matter':
    &aed_models
       models = 'aed_tracer',
               !'aed_noncohesive',
                'aed_oxygen',
               !'aed_carbon',
                'aed_silica',
                'aed_nitrogen',
                'aed_phosphorus',
                'aed_organic_matter'
               !'aed_phytoplankton',
               !'aed_zooplankton',
               !'aed_totals',
    /
  3. In aed/aed.nml, in the &aed_phosphorus block, set simPO4Adsorption = .false. (phosphate adsorption needs the suspended solids module, which is off).
  4. In glm3.nml, in the &inflow block:
       inflow_varnum = 14
       inflow_vars = 'FLOW','SAL','TEMP','OXY','SIL','AMM','NIT','FRP','DOC','POC','DON','PON','DOP','POP'
  5. In glm3.nml, in the &output block:
       csv_point_nvars   = 12
       csv_point_vars    = 'temp','OXY_oxy','SIL_rsi','NIT_amm','NIT_nit','PHS_frp','OGM_doc','OGM_poc','OGM_don','OGM_pon','OGM_dop','OGM_pop'
  6. In plots_aed.nml, replace the &plots block with:
    &plots
      nplots = 6
      plot_width = 300
      plot_height = 135
      title = 'Temperature (C)', 'Oxygen (mmol/m3)', 'Silica (mmol/m3)', 'NH4 (mmol/m3)', 'NO3 (mmol/m3)', 'FRP (mmol/m3)'
      vars  = 'temp', 'OXY_oxy', 'SIL_rsi', 'NIT_amm', 'NIT_nit', 'PHS_frp'
      min_z = 15, 0, 0, 0, 0, 0
      max_z = 35, 350, 5, 8, 8, 0.25
    /

With nutrients and organic matter on, but no algae to use them, surface phosphate (FRP) keeps rising from 0.02 to about 0.15 mmol/m³ by the end of the run. Ammonium and nitrate average about 4.4 mmol/m³ each. Mean surface oxygen falls from 110 to 81 mmol/m³, because the breakdown of organic matter uses oxygen.

The new modules add:

ModuleMain variablesKey processes and parameters
aed_silicaSIL_rsiDissolved silica, used later by diatoms
aed_nitrogenNIT_amm, NIT_nitNitrification (Rnitrif = 0.1/day), denitrification (Rdenit = 0.26/day), sediment release of NH₄ (Fsed_amm = 1.3 mmol/m²/day)
aed_phosphorusPHS_frpPhosphate and atmospheric deposition. Adsorption is off (simPO4Adsorption = .false.) because there is no suspended solids module.
aed_organic_matterOGM_doc, OGM_poc, OGM_don, OGM_pon, OGM_dop, OGM_popParticulate organic matter breaks down to dissolved organic matter, then is mineralised to NH₄ and FRP. This uses oxygen.

The organic matter module links to the nutrient modules through its target variables. For example, don_miner_product_variable = 'NIT_amm' tells AED that mineralised organic nitrogen becomes ammonium. This is why aed_organic_matter is listed after nitrogen and phosphorus.

Case 1 surface nutrients
Figure 2. Surface ammonium and nitrate (top) and phosphate (bottom) in Case 1.

Tasks

Questions

  1. How does the mean oxygen concentration at the surface and at the bottom change after organic matter was introduced? Explain the processes responsible for these changes.

Case 2 — Add diatoms (TropicalReservoir_2_Diatom)

Set up the case folder

  1. In glm_casestudies, copy the TropicalReservoir_1_Nutrients folder, paste it into glm_casestudies, and rename the copy TropicalReservoir_2_Diatom. Delete the output folder inside the new folder.
  2. In aed/aed.nml, switch on 'aed_phytoplankton' in the &aed_models block. Add a comma after 'aed_organic_matter':
    &aed_models
       models = 'aed_tracer',
               !'aed_noncohesive',
                'aed_oxygen',
               !'aed_carbon',
                'aed_silica',
                'aed_nitrogen',
                'aed_phosphorus',
                'aed_organic_matter',
                'aed_phytoplankton'
               !'aed_zooplankton',
               !'aed_totals',
    /
  3. In aed/aed.nml, go to the &aed_phytoplankton block and choose only one group. The numbers in the_phytos are column positions in the parameter database aed/aed_phyto_pars.nml; column 7 is the diatom. Change these four lines and leave the rest of the block as it is:
    &aed_phytoplankton
      num_phytos   =   1
      the_phytos   =   7
      settling     =   1
      ...
      c_uptake_target_variable    =''          ! the carbon module is off
      ...
    /
  4. In glm3.nml, in the &inflow block:
       inflow_varnum = 17
       inflow_vars = 'FLOW','SAL','TEMP','OXY','SIL','AMM','NIT','FRP','DOC','POC','DON','PON','DOP','POP','DIA','DIA_IN','DIA_IP'
  5. In glm3.nml, in the &output block:
       csv_point_nvars   = 13
       csv_point_vars    = 'temp','OXY_oxy','SIL_rsi','NIT_amm','NIT_nit','PHS_frp','OGM_doc','OGM_poc','OGM_don','OGM_pon','OGM_dop','OGM_pop','PHY_diatom'
  6. In plots_aed.nml, replace the &plots block with:
    &plots
      nplots = 7
      plot_width = 300
      plot_height = 135
      title = 'Temperature (C)', 'Oxygen (mmol/m3)', 'Silica (mmol/m3)', 'NH4 (mmol/m3)', 'NO3 (mmol/m3)', 'FRP (mmol/m3)', 'Diatoms (mmol C/m3)'
      vars  = 'temp', 'OXY_oxy', 'SIL_rsi', 'NIT_amm', 'NIT_nit', 'PHS_frp', 'PHY_diatom'
      min_z = 15, 0, 0, 0, 0, 0, 0
      max_z = 35, 350, 5, 8, 8, 0.25, 5
    /

On their own, diatoms barely grow in this reservoir. Their biomass stays near 0.04 mmol C/m³ and peaks at only 0.8 mmol C/m³ in March 2012. The water is warmer than the diatom optimum on 88% of days, and there is very little phosphate.

The other lines of the &aed_phytoplankton block connect the phytoplankton to the other modules:

  p1_uptake_target_variable   ='PHS_frp'
  n1_uptake_target_variable   ='NIT_nit'
  n2_uptake_target_variable   ='NIT_amm'
  si_uptake_target_variable   ='SIL_rsi'

The *_target_variable lines link phytoplankton dynamics to variables from other modules. Algae use FRP, nitrate, and ammonium as nutrients for growth. When they release organic material or die, the carbon, nitrogen, and phosphorus they contain enter the organic matter pools (OGM_doc, OGM_pon, and others).

Open aed_phyto_pars.nml and look at column 7 ('diatom'). The most important parameters are:

ParameterDiatom valueMeaning
R_growth1.8 /dayMaximum growth rate at 20 °C
T_opt / T_max24 / 32 °COptimum and maximum temperature for growth
I_K10 µE/m²/sLight half-saturation (low = good in dim light)
K_P / K_N0.3 / 0.156 mmol/m³Half-saturation for phosphorus and nitrogen uptake
R_resp0.19 /dayRespiration and loss rate
simSiUptake0Silica limitation is switched off
Case 2 diatoms and surface temperature
Figure 3. Surface diatom biomass (top) and surface temperature compared with the diatom optimum and maximum temperatures (bottom).

Tasks

Questions

  1. How does diatom biomass change when you increase the growth rate (R_growth), and when you reduce K_N and K_P? How do the nutrient concentrations change at the surface and the bottom? Make plots of biomass and nutrients for the three runs to support your answer.

Case 3 — Three phyto groups (TropicalReservoir_3_ThreePhyto)

Set up the case folder

  1. In glm_casestudies, copy the TropicalReservoir_2_Diatom folder, paste it into glm_casestudies, and rename the copy TropicalReservoir_3_ThreePhyto. Delete the output folder inside the new folder.
  2. The module list is the same as Case 2. In aed/aed.nml, change only the first three lines of the &aed_phytoplankton block to use three columns of the database:
    &aed_phytoplankton
      num_phytos   =   3
      the_phytos   =   3,7,8      ! green, diatom, cyano
      settling     =   1,1,4      ! cyano uses buoyancy control
      ...
    /
  3. In glm3.nml, in the &inflow block:
       inflow_varnum = 23
       inflow_vars = 'FLOW','SAL','TEMP','OXY','SIL','AMM','NIT','FRP','DOC','POC','DON','PON','DOP','POP','GRN','GRN_IN','GRN_IP','DIA','DIA_IN','DIA_IP','CRY','CRY_IN','CRY_IP'
  4. In glm3.nml, in the &output block:
       csv_point_nvars   = 15
       csv_point_vars    = 'temp','OXY_oxy','SIL_rsi','NIT_amm','NIT_nit','PHS_frp','OGM_doc','OGM_poc','OGM_don','OGM_pon','OGM_dop','OGM_pop','PHY_green','PHY_diatom','PHY_cyano'
  5. In plots_aed.nml, replace the &plots block with:
    &plots
      nplots = 8
      plot_width = 300
      plot_height = 135
      title = 'Temperature (C)', 'Oxygen (mmol/m3)', 'NH4 (mmol/m3)', 'NO3 (mmol/m3)', 'FRP (mmol/m3)', 'Diatoms (mmol C/m3)', 'Green Algae (mmol C/m3)', 'Cyanobacteria (mmol C/m3)'
      vars  = 'temp', 'OXY_oxy', 'NIT_amm', 'NIT_nit', 'PHS_frp', 'PHY_diatom', 'PHY_green', 'PHY_cyano'
      min_z = 15, 0, 0, 0, 0, 0, 0, 0
      max_z = 35, 350, 8, 8, 0.25, 5, 60, 60
    /

Under competition, diatoms are largely outcompeted by green algae and cyanobacteria. The overall phytoplankton population increases, which in turn draws down surface phosphate concentrations. As phosphate becomes scarce, phosphorus limitation begins to constrain phytoplankton growth.

settling = 4 lets cyanobacteria change their density between min_rho and max_rho (900 and 1200 kg/m³, set at the end of the &aed_phytoplankton block). This means they can float up to the light, like real Microcystis or Dolichospermum.

Compare the three groups in aed_phyto_pars.nml (columns 3, 7 and 8):

ParameterGreenDiatomCyanoWhat it favours
R_growth (/day)1.51.81.25Fast growth when conditions are good
T_opt (°C)262434Hot tropical surface water favours cyano
T_max (°C)363240Diatoms are stressed above 30 °C
I_K (µE/m²/s)251050Diatoms cope best with low light
K_P (mmol/m³)0.120.300.35Greens win when phosphate is scarce
R_resp (/day)0.090.190.11Diatoms lose the most biomass each day
p0 (mmol C/m³)20.031Minimum biomass kept in the water
Case 3 three phytoplankton groups
Figure 4. Surface biomass of the three phytoplankton groups in Case 3.

Tasks

Questions

  1. What is the dominant phytoplankton group, and why is it dominant? Use the parameter table to support your answer.

Case 4 — Nutrient load scenarios (TropicalReservoir_4_HighNutrientLoad)

Set up the case folder

  1. In glm_casestudies, copy the TropicalReservoir_3_ThreePhyto folder, paste it into glm_casestudies, and rename the copy TropicalReservoir_4_HighNutrientLoad. Delete the output folder inside the new folder.
  2. Open bcs/inflow_WQ.csv in Excel and multiply the values in the following columns by 5: AMM, NIT, FRP, FRP_ADS, DON, PON, DOP and POP. Before you close the file, make sure the time column is in the right format (yyyy-mm-dd hh:mm:ss).
  3. No changes are needed in aed.nml, glm3.nml or plots_aed.nml.

In this case we increase the nutrient load coming from the catchment and look at how the nutrient concentrations in the reservoir and the phytoplankton respond. The baseline for comparison is Case 3.

The mean inflow concentrations become:

Inflow columnBaseline (mmol/m³)Load × 5 (mmol/m³)
AMM (ammonium)1.447.19
NIT (nitrate)0.321.59
FRP (phosphate)0.231.13
DON (dissolved organic N)19.697.8
DOP (dissolved organic P)0.170.84

Tasks

Questions

  1. How do the nutrient concentrations in the water change when the nutrient load increases? Make plots of the nutrient variables (NIT_amm, NIT_nit, PHS_frp, OGM_don, OGM_dop) at the surface (WQ_0.csv) and the bottom (WQ_1.csv) for Case 3 and Case 4.
  2. How does the phytoplankton respond to the increase in nutrient load?
  3. (Optional) What level of nutrient loading triggers an algal bloom? You may need to test additional scaling factors to answer this question. A scatter plot of nutrient loading against peak chlorophyll-a concentration can help you visualise this relationship and identify a possible threshold.

Case 5 — Add zooplankton optional (TropicalReservoir_5_Zooplankton)

Set up the case folder

  1. In glm_casestudies, copy the TropicalReservoir_3_ThreePhyto folder, paste it into glm_casestudies, and rename the copy TropicalReservoir_5_Zooplankton. Delete the output folder inside the new folder. Copy from Case 3, not Case 4, so the inflow nutrients are not multiplied.
  2. In aed/aed.nml, switch on 'aed_zooplankton' in the &aed_models block. Add a comma after 'aed_phytoplankton':
    &aed_models
       models = 'aed_tracer',
               !'aed_noncohesive',
                'aed_oxygen',
               !'aed_carbon',
                'aed_silica',
                'aed_nitrogen',
                'aed_phosphorus',
                'aed_organic_matter',
                'aed_phytoplankton',
                'aed_zooplankton'
               !'aed_totals',
    /
  3. In glm3.nml, in the &inflow block:
       inflow_varnum = 24
       inflow_vars = 'FLOW','SAL','TEMP','OXY','SIL','AMM','NIT','FRP','DOC','POC','DON','PON','DOP','POP','GRN','GRN_IN','GRN_IP','DIA','DIA_IN','DIA_IP','CRY','CRY_IN','CRY_IP','ZOO'
  4. In glm3.nml, in the &output block:
       csv_point_nvars   = 16
       csv_point_vars    = 'temp','OXY_oxy','SIL_rsi','NIT_amm','NIT_nit','PHS_frp','OGM_doc','OGM_poc','OGM_don','OGM_pon','OGM_dop','OGM_pop','PHY_green','PHY_diatom','PHY_cyano','ZOO_zoo01'
  5. In plots_aed.nml, replace the &plots block with:
    &plots
      nplots = 9
      plot_width = 300
      plot_height = 135
      title = 'Temperature (C)', 'Oxygen (mmol/m3)', 'NH4 (mmol/m3)', 'NO3 (mmol/m3)', 'FRP (mmol/m3)', 'Diatoms (mmol C/m3)', 'Green Algae (mmol C/m3)', 'Cyanobacteria (mmol C/m3)', 'Zooplankton (mmol C/m3)'
      vars  = 'temp', 'OXY_oxy', 'NIT_amm', 'NIT_nit', 'PHS_frp', 'PHY_diatom', 'PHY_green', 'PHY_cyano', 'ZOO_zoo01'
      min_z = 15, 0, 0, 0, 0, 0, 0, 0, 0
      max_z = 35, 350, 8, 8, 0.25, 5, 60, 60, 1
    /

This case is optional. It adds one zooplankton group to Case 3, grazing on the three phytoplankton groups. With the supplied parameters, the zooplankton cannot sustain itself: it falls from 0.5 to its minimum of 0.01 mmol C/m³ within the first weeks.

The &aed_zooplankton block chooses group 1 from the zooplankton database and sends its waste to the organic matter pools:

&aed_zooplankton
   num_zoops = 1
   the_zoops = 1
   dn_target_variable = 'OGM_don'
   pn_target_variable = 'OGM_pon'
   dp_target_variable = 'OGM_dop'
   pp_target_variable = 'OGM_pop'
   dc_target_variable = 'OGM_doc'
   pc_target_variable = 'OGM_poc'
   dbase='aed/aed_zoop_pars.nml'
/

In aed_zoop_pars.nml, column 1 (zoo01) grazes on three prey, with a preference for each:

  zoop_param%num_prey          = 3
  zoop_param%prey(1)%zoop_prey = 'PHY_green',   Pzoo_prey = 0.4
  zoop_param%prey(2)%zoop_prey = 'PHY_diatom',  Pzoo_prey = 0.1
  zoop_param%prey(3)%zoop_prey = 'PHY_cyano',   Pzoo_prey = 0.5

Its maximum grazing rate (Rgrz_zoo = 0.1/day) is too low to cover its respiration (0.08/day) and mortality (0.01/day). Group 2 (zoo02, Rgrz_zoo = 1.67/day, which does not eat cyanobacteria) can be tried by setting the_zoops = 2.

Case 5 zooplankton
Figure 5. Total phytoplankton with and without zooplankton (top), and zooplankton biomass (bottom).

Final submission

Submit one document that contains:

Plots to submit

PlotCaseWhat to plot
1Case 0Bottom oxygen with Fsed_oxy = -20 and -5
2Case 1Oxygen at the surface and the bottom, Case 0 compared with Case 1
3Case 2Diatom biomass (PHY_diatom) at the surface and the bottom for the baseline and R_growth = 3.6 runs
4Case 2Nutrients (NIT_amm, NIT_nit, PHS_frp) at the surface and the bottom for the baseline, R_growth = 3.6, and reduced K_N/K_P runs
5Case 3Stacked area plot of green algae, diatoms and cyanobacteria at the surface
6Case 4Phosphate (PHS_frp) and nitrate (NIT_nit) at the surface and the bottom, Case 3 compared with Case 4
7Case 4Green algae, diatoms and cyanobacteria at the surface and the bottom, Case 3 compared with Case 4

Case 5 (zooplankton) is optional and does not need to be submitted.