AquaticEcoDynamics / GLM

Code for the General Lake Model
http://aquatic.science.uwa.edu.au/research/models/GLM/
GNU General Public License v3.0
35 stars 29 forks source link

Changes in phytoplankton dynamics from v3.1.0a1 to v3.1.1? #34

Open robertladwig opened 3 years ago

robertladwig commented 3 years ago

I updated my lake models of Lake Mendota to the most recent GLM-AED GitHub versions, but I am getting now different results for water quality variables while running it on the exact same model setup.

I did compile all models using gfortran and Homebrew under macOS Catalna/Big Sur. For the recent versions, GLM was coupled with libaed-water.git instead of libaed2.git.

I extracted all results directly from the NCDF and averaged them over the first 10 m from the water surface (using the z variable and finding the closest value to 10 m).

I expected results to differ a bit (like for temperature), but especially cyanobacteria biomass is completely off between the versions. Were there some significant source code changes for aed_phytoplankton.F90, or changes in parameterizations?

cyanobiomass_differences oxygen_differences wtr_differences

matthipsey commented 3 years ago

Hi Robert The changes listed are here:

https://github.com/AquaticEcoDynamics/libaed2/commits/master/src/aed2_phytoplankton.F90

There is no change to the equations. Perhaps an issue may be vvel, which was changed to m/day to be consistent across the modules. But that wouldn't explain why it came back in 3.2

We always test against our Lake Kinneret reference case and never see changes of this magnitude. When I see this it makes me worry that something is not being read in properly. Also, are zoop configured?

As there are many feedbacks, (eg biomass impact clarity and mixing), I think the only way to get to the bottom of this is to cut it back step by step with three versions and see where the main divergence creeps in. ie GLM only. Then GLM+OXY. Then GLM+OXY+PHY ...

robertladwig commented 3 years ago

Thanks! For these tests now, I did disable zooplankton.

(1) First, running only GLM w/o AED:

(2) Now running GLM + aed_oxygen:

(3) GLM + aed_oxygen + aed_carbon + aed_silica' + aed_nitrogen + aed_phosphorus:

(4) GLM + aed_oxygen + aed_carbon + aed_silica' + aed_nitrogen + aed_phosphorus + aed_organic_matter:

(5) GLM + aed_oxygen + aed_carbon + aed_silica' + aed_nitrogen + aed_phosphorus + aed_organic_matter + aed_tracer + aed_noncohesive + aed_phytoplankton (2 functional groups):

matthipsey commented 3 years ago

Hi Robert There is a lot going on here, and keen to try to pin this down. There is no change to the mixing or heating that I can recall or see in the commits between the 3 versions, so lets look at the GLM only issue. I think the comparison needs to be done first just at a specific reference depth, rather than integrating over layers. Also when you integrate to 10m, do you truncate the layer that sits at the 10m mark in the averaging? I'm wondering what the temperature of the surface (top and say 5m) is like, and the number of layers (NS) of the three sims? Cheers Matt

robertladwig commented 3 years ago

Thanks for the feedback, Matt. I ran GLM-only again and the differences in water temp. over all versions are very, very small. 3.1.1 and 3.1.0a1 have the same amounts of layers, where's 3.2.0a4 has slightly more layers over that summer period. Regarding the 10 m averaging before, I took the average from the surface to the depth which was closest to 10 m -- so it could have included 10 m or not (close to the metalimnion, which I see now is a problem).

onlyGLM_wtr5m onlyGLM_wtr0m onlyGLM_ns_differences