Tropical Reservoir Water Quality Workbook (GLM-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:
- Build your own AED model configuration by switching modules on and off.
- 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 name | Case | Modules ON | Copied from |
|---|---|---|---|
TropicalReservoir_0_Base | Case 0 — Base: Dissolved oxygen | oxygen | TropicalReservoir |
TropicalReservoir_1_Nutrients | Case 1 — Add nutrients, organic matter and silica | + nitrogen, phosphorus, organic matter, silica | TropicalReservoir_0_Base |
TropicalReservoir_2_Diatom | Case 2 — Add diatoms | + phytoplankton (diatoms only) | TropicalReservoir_1_Nutrients |
TropicalReservoir_3_ThreePhyto | Case 3 — Three phyto groups | + green algae and cyanobacteria | TropicalReservoir_2_Diatom |
TropicalReservoir_4_HighNutrientLoad | Case 4 — Nutrient load scenarios | Same as Case 3; inflow nitrogen and phosphorus × 5 | TropicalReservoir_3_ThreePhyto |
TropicalReservoir_5_Zooplankton | Case 5 — Add zooplankton (optional) | Case 3 + zooplankton | TropicalReservoir_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.
- Windows: double-click
run_glm.bat. - Mac: open Terminal in the case folder (right-click the folder in Finder → New Terminal at Folder), run
bash run_glm.shand choose option 2 (Run with plots_aed.nml). If macOS blocks the GLM app the first time, allow it in System Settings → Privacy & Security and run again. - Linux: with GLM installed so that the
glmcommand works, runglm --xdisp plots_aed.nmlin the case folder.
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:
- Open
aed/aed.nmland find the&aed_modelsblock. 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', / - In
glm3.nml, in the&inflowblock, set the inflow variables to:inflow_varnum = 4 inflow_vars = 'FLOW','SAL','TEMP','OXY' - In
plots_aed.nml, replace the&plotsblock 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
/
Tasks
- Run the
TropicalReservoir_0_Basemodel and watch the temperature and oxygen plots develop. - Open
output/WQ_0.csv(surface) andoutput/WQ_1.csv(bottom) and plotOXY_oxyfrom both on one graph. - Change
Fsed_oxyin&aed_oxygenfrom -20 to -5, re-run the model and compare the bottom oxygen with your first run. Copy theoutputfolder before re-running, and setFsed_oxyback to -20 when you have finished.
Questions
- 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.)
- What happened to bottom oxygen when you reduced
Fsed_oxyto -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
- In
glm_casestudies, copy theTropicalReservoir_0_Basefolder, paste it intoglm_casestudies, and rename the copyTropicalReservoir_1_Nutrients. Delete theoutputfolder inside the new folder. - In
aed/aed.nml, switch on the four nutrient modules in the&aed_modelsblock 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', / - In
aed/aed.nml, in the&aed_phosphorusblock, setsimPO4Adsorption = .false.(phosphate adsorption needs the suspended solids module, which is off). - In
glm3.nml, in the&inflowblock:inflow_varnum = 14 inflow_vars = 'FLOW','SAL','TEMP','OXY','SIL','AMM','NIT','FRP','DOC','POC','DON','PON','DOP','POP' - In
glm3.nml, in the&outputblock: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' - In
plots_aed.nml, replace the&plotsblock 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:
| Module | Main variables | Key processes and parameters |
|---|---|---|
aed_silica | SIL_rsi | Dissolved silica, used later by diatoms |
aed_nitrogen | NIT_amm, NIT_nit | Nitrification (Rnitrif = 0.1/day), denitrification (Rdenit = 0.26/day), sediment release of NH₄ (Fsed_amm = 1.3 mmol/m²/day) |
aed_phosphorus | PHS_frp | Phosphate and atmospheric deposition. Adsorption is off (simPO4Adsorption = .false.) because there is no suspended solids module. |
aed_organic_matter | OGM_doc, OGM_poc, OGM_don, OGM_pon, OGM_dop, OGM_pop | Particulate 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.
Tasks
- Run the
TropicalReservoir_1_Nutrientsmodel. The plot window now also shows silica, NH₄, NO₃ and FRP. - Open
output/WQ_0.csvandoutput/WQ_1.csvand plotNIT_amm,NIT_nitandPHS_frpat the surface and the bottom. - Compare the surface and bottom oxygen with Case 0 (
TropicalReservoir_0_Base/output/WQ_0.csvandWQ_1.csv).
Questions
- 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
- In
glm_casestudies, copy theTropicalReservoir_1_Nutrientsfolder, paste it intoglm_casestudies, and rename the copyTropicalReservoir_2_Diatom. Delete theoutputfolder inside the new folder. - In
aed/aed.nml, switch on'aed_phytoplankton'in the&aed_modelsblock. 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', / - In
aed/aed.nml, go to the&aed_phytoplanktonblock and choose only one group. The numbers inthe_phytosare column positions in the parameter databaseaed/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 ... / - In
glm3.nml, in the&inflowblock:inflow_varnum = 17 inflow_vars = 'FLOW','SAL','TEMP','OXY','SIL','AMM','NIT','FRP','DOC','POC','DON','PON','DOP','POP','DIA','DIA_IN','DIA_IP' - In
glm3.nml, in the&outputblock: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' - In
plots_aed.nml, replace the&plotsblock 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:
| Parameter | Diatom value | Meaning |
|---|---|---|
R_growth | 1.8 /day | Maximum growth rate at 20 °C |
T_opt / T_max | 24 / 32 °C | Optimum and maximum temperature for growth |
I_K | 10 µE/m²/s | Light half-saturation (low = good in dim light) |
K_P / K_N | 0.3 / 0.156 mmol/m³ | Half-saturation for phosphorus and nitrogen uptake |
R_resp | 0.19 /day | Respiration and loss rate |
simSiUptake | 0 | Silica limitation is switched off |
Tasks
- Run the
TropicalReservoir_2_Diatommodel and watch where in the water column the diatoms grow. - Before each new run, copy the
outputfolder (for example tooutput_baseline), because every run overwritesWQ_0.csvandWQ_1.csv. - Increase the growth rate. Open
aed/aed_phyto_pars.nmland find thepd%R_growthline. Change the value in column 7 (diatom) from 1.8 to 3.6, then re-run. Compare diatom biomass (PHY_diatom) and nutrients (NIT_amm,NIT_nit,PHS_frp) at the surface (WQ_0.csv) and the bottom (WQ_1.csv) with your baseline run. - Reduce the half-saturation constants. Set
R_growthback to 1.8. In column 7, changeK_Nfrom 0.156 to 0.0156 andK_Pfrom 0.3 to 0.03, then re-run. Compare biomass and nutrients at the surface and the bottom again. - Set
K_NandK_Pback to their original values when you have finished.
Questions
- How does diatom biomass change when you increase the growth rate (
R_growth), and when you reduceK_NandK_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
- In
glm_casestudies, copy theTropicalReservoir_2_Diatomfolder, paste it intoglm_casestudies, and rename the copyTropicalReservoir_3_ThreePhyto. Delete theoutputfolder inside the new folder. - The module list is the same as Case 2. In
aed/aed.nml, change only the first three lines of the&aed_phytoplanktonblock 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 ... / - In
glm3.nml, in the&inflowblock: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' - In
glm3.nml, in the&outputblock: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' - In
plots_aed.nml, replace the&plotsblock 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):
| Parameter | Green | Diatom | Cyano | What it favours |
|---|---|---|---|---|
R_growth (/day) | 1.5 | 1.8 | 1.25 | Fast growth when conditions are good |
T_opt (°C) | 26 | 24 | 34 | Hot tropical surface water favours cyano |
T_max (°C) | 36 | 32 | 40 | Diatoms are stressed above 30 °C |
I_K (µE/m²/s) | 25 | 10 | 50 | Diatoms cope best with low light |
K_P (mmol/m³) | 0.12 | 0.30 | 0.35 | Greens win when phosphate is scarce |
R_resp (/day) | 0.09 | 0.19 | 0.11 | Diatoms lose the most biomass each day |
p0 (mmol C/m³) | 2 | 0.03 | 1 | Minimum biomass kept in the water |
Tasks
- Run the
TropicalReservoir_3_ThreePhytomodel. The plot window shows all three groups side by side. - Make a stacked area plot of
PHY_green,PHY_diatomandPHY_cyanofromoutput/WQ_0.csvto show how each contributes to total biomass.
Questions
- 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
- In
glm_casestudies, copy theTropicalReservoir_3_ThreePhytofolder, paste it intoglm_casestudies, and rename the copyTropicalReservoir_4_HighNutrientLoad. Delete theoutputfolder inside the new folder. - Open
bcs/inflow_WQ.csvin Excel and multiply the values in the following columns by 5:AMM,NIT,FRP,FRP_ADS,DON,PON,DOPandPOP. Before you close the file, make sure thetimecolumn is in the right format (yyyy-mm-dd hh:mm:ss). - No changes are needed in
aed.nml,glm3.nmlorplots_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 column | Baseline (mmol/m³) | Load × 5 (mmol/m³) |
|---|---|---|
AMM (ammonium) | 1.44 | 7.19 |
NIT (nitrate) | 0.32 | 1.59 |
FRP (phosphate) | 0.23 | 1.13 |
DON (dissolved organic N) | 19.6 | 97.8 |
DOP (dissolved organic P) | 0.17 | 0.84 |
Tasks
- Run the
TropicalReservoir_4_HighNutrientLoadmodel and compare its plot window with Case 3. - Make your own scenario: copy the
TropicalReservoir_3_ThreePhytofolder, rename the copy (for exampleTropicalReservoir_4_Load10), delete itsoutputfolder, scale the nutrients by 2 or 10 instead of 5, and run it. - Try scaling only phosphorus (
FRP,DOP,POP) or only nitrogen (AMM,NIT,DON,PON).
Questions
- 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. - How does the phytoplankton respond to the increase in nutrient load?
- (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
- In
glm_casestudies, copy theTropicalReservoir_3_ThreePhytofolder, paste it intoglm_casestudies, and rename the copyTropicalReservoir_5_Zooplankton. Delete theoutputfolder inside the new folder. Copy from Case 3, not Case 4, so the inflow nutrients are not multiplied. - In
aed/aed.nml, switch on'aed_zooplankton'in the&aed_modelsblock. 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', / - In
glm3.nml, in the&inflowblock: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' - In
glm3.nml, in the&outputblock: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' - In
plots_aed.nml, replace the&plotsblock 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.
Final submission
Submit one document that contains:
- Answers to all questions in Cases 0–4, numbered by case and question (for example, Case 2 – Q1).
- The plots listed below. Each plot needs a figure number, a caption, axis labels with units, and a legend when it shows more than one line.
Plots to submit
| Plot | Case | What to plot |
|---|---|---|
| 1 | Case 0 | Bottom oxygen with Fsed_oxy = -20 and -5 |
| 2 | Case 1 | Oxygen at the surface and the bottom, Case 0 compared with Case 1 |
| 3 | Case 2 | Diatom biomass (PHY_diatom) at the surface and the bottom for the baseline and R_growth = 3.6 runs |
| 4 | Case 2 | Nutrients (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 |
| 5 | Case 3 | Stacked area plot of green algae, diatoms and cyanobacteria at the surface |
| 6 | Case 4 | Phosphate (PHS_frp) and nitrate (NIT_nit) at the surface and the bottom, Case 3 compared with Case 4 |
| 7 | Case 4 | Green 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.