README.md 2.76 KB
Newer Older
Markus Pahlow's avatar
Markus Pahlow committed
1
# UVic-updates-opem: Optimality-based Plankton Ecosystem Model (OPEM) for the UVic-ESCM
2

Markus Pahlow's avatar
Markus Pahlow committed
3 4
Markus Pahlow (mpahlow@geomar.de)

Markus Pahlow's avatar
Markus Pahlow committed
5
UVic-updates-opem introduces optimality-based phytoplankton and zooplankton into the UVic-ESCM (version 2.9) with variable C:N:P(:Chl) stoichiometry for phytoplankton, diazotrophs, and detritus.  Code development started with and has incorporated updates provided by David Keller, Karin Kvale, and Levin Nickelsen.
6

Markus Pahlow's avatar
Markus Pahlow committed
7
## Setup
8

Markus Pahlow's avatar
Markus Pahlow committed
9
1. Clone the [UVic_ESCM-2.9](https://git.geomar.de/markus-pahlow/UVic_ESCM-2.9.git) to obtain the base code and data files
10
2. Enter the `updates/opem` folder and issue the commands `git submodule init` and `git submodule update`
11

12
OPEM is activated via the compile-option `O_opem` and `Updates_Level = opem` in mk.in.  The first `Source_Directory` in mk.in must be set as `Source_Directory(1) = updates/opem/f90`.  A template [mk.in](mk.in) is provided in this project for compilation with ifort.  You must set the Version\_Directory to the root folder of your UVic\_ESCM-2.9 installation, i.e., where the mk executable and the run folder are.  Note that I also set Libraries, Compiler_F, etc. in mk.in.  Option `O_npzzd` switches on a second zooplankton compartment, but we have not used this yet.  Option `O_opem_chl` switches on dynamic chlorophyll tracers.  See also this [description of preprocessor options](options.md).  Here is a (still incomplete) commented [control.in](control.in).
13 14 15 16 17 18 19 20

## Comments

* Comment on O<sub>2</sub> and N<sub>2</sub> fixation: assimilatory nitrate reduction to ammonium releases 2 mol O<sub>2</sub> / mol N,
HNO<sub>3</sub> + 1.5 H<sub>2</sub>O -> NH<sub>3</sub> + 0.5 H<sub>2</sub>O + 2 O<sub>2</sub>, whereas N<sub>2</sub> fixation releases only 0.75 mol O<sub>2</sub> / mol N,
0.5 N<sub>2</sub> + 1.5 H<sub>2</sub>O -> NH<sub>3</sub> + 0.75 O<sub>2</sub>.  Thus, growth on N<sub>2</sub> fixation releases 1.25 mol O<sub>2</sub> less than growth on nitrate.
* Fixed bug sometimes inflating negative concentrations: do not limit `tnpzd` to positive values in subroutine `tracer`, as this interferes with the flag mechanism in `npzd_src`.
* If `timavgint=30`, i.e., not a divisor of a year (365 days), the first month will be skipped if starting at the beginning of the year and the year is not a multiple of 30.  -> set `init_time_in = .true.` in namelist `ictime`.
21
* Positive particulate tracers can be enforced by activating `O_fct_3d` and `O_opem_pos` in mk.in.
Markus Pahlow's avatar
Markus Pahlow committed
22 23 24 25

## License

This work is published under the [GNU General Public License 3 (GPL-3.0)](http://opensource.org/licenses/GPL-3.0).  You may copy, distribute and modify the software as long as you track changes/dates of in source files and keep modifications under GPL. You can distribute your application using a GPL library commercially, but you must also provide the source code."