This is the ################## # UVic_Kiel_2016 # ################## configuration of Michael Eby's (eby@uvic.ca) University of Victoria Earth System Climate Model (http://wikyonos.seos.uvic.ca/model/). As of 2016 UVic_Kiel_2016 is "the" reference configuration for the Biogeochemical Modelling group of Prof. Dr. rer. nat. Andreas Oschlies in Kiel, Germany. The UVic_Kiel_2016 package has been supplied by David Keller (dkeller@geomar.de). H. Dietze (hdietze@geomar.de) removed (some) redundant files and performed some checks (c.f. end of document). UVic_Kiel_2016 is identical to (1) what referred to as the "new model" in Keller, Oschlies, and Eby (2012), A new marine ecosystem model for the University of Victoria Earth System Climate Model. Geosci. Model Dev., doi:10.5194/gmd-5-1195-2012 and e.g., (2) what is referred to as the "reference simulation" in Getzlaff and Dietze (2013), Effects of increased isopycnal diffusivity mimicking the unresolved equatorial intermediate current system in an earth system climate model, GRL, doi:10.1002/grl.50419,2013. EXCEPT FOR THE FOLLOWING CHANGES: 0) The original code parameterizes the effect of sea ice on ocean surface pressure based on data comprising sea ice thicknesses up to one 1 meter only. As a consequence, the original parameterization is, according to T. Kemena (tkemena@geomar.de), not suited to handle sea ice thicknesses much larger than 1 meter in a physically plausible way. A more plausible parameterisation (preprocessor option O_correct_ice_to_ocean_stress) has been added by T. Kemena (c.f. explanation on http://www.baltic-ocean.org/?page_id=360) and is used in UVic_Kiel_2016. 1) A bug in the ocean pCO2 calculation was identified and patched by D. Keller. The offical 02 update incorporates this fix, but M. Eby has re-written the patch and changed significant portions of the "co2calc.F" file while doing so. Therefore, in this merged version no mention or option is available to turn on or off the pCO2 bug fix. 2) A bug in “setmom.F” that effected the amount of light in the upper ocean has been corrected (see code line 967 for notes on the correction). Since correcting this bug which affected phytoplankton growth some NPZD parameters had to be changed (see “control.in”) to achieve similar results to those reported in the Keller et al. 2012 GMD article. 3) In “setmom.F” the equation that determines the sinking speed of detritus has been changed (see code line 962). We made these changes so that the sinking speed of detritus better fits the observations made in: Berelson, 2002. Particle settling rates increase with depth in the ocean. Deep-Sea Research II. 49. pgs. 237-251. The previous equation had been based on the lowest estimates of sinking speed in Berelson (2002) and the new one now reflects the mean values of this study. 4) The iron mask, O_fe_dissolved.nc, that is used to limit phytoplankton growth has had a few very high outlying values removed. These high values were artifacts of the original regridding of the BLING iron data and occurred mostly around Indonesia where there are no observations of extremely high Fe. In addition, the dissolved Fe concentration at a few grid points in the North Western Arabian sea has been increased to better reproduce observed Fe concentrations. 5) Oxygen stoichiometry during N2 fixation has been corrected in tracer.F (lines 572-583). Previously, N2 fixation had not been properly accounted for and 1.5 moles of O2 were consumed for each mole of N fixed by diazotrophs. With this correction now only 1.25 moles of O2 are consumed during N2 fixation according to the following stoichiometry: On the O2 production side of N2 fixation within the nitrogenase complex: N2 + (8 H+) + (8 e-) + 16ATP --> 2 NH3 + (H2) + 16ADP + 16PO4 (1) assuming that the protons and electrons come form the splitting of water (1) becomes the bulk formula: N2 + 3H2O --> 2 NH3 + 1.5 O2 (2) Then to oxidise NH3 to NO3 via nitirification: NH3 + 3/2O2 --> NO2- + H2O +H+     (3) NO2- + 1/2O2 --> NO3- (4) Summing up (3) and (4) in the bulk formula : NH3  +  2O2   --> NO3 + H2O (5) Combining (2) and (5) for every mole of NO3 produced 1.25 of O2 are needed. 6) The model now correctly accounts for sources and sinks of alkalinity during N2 fixation in tracer.F (lines 584-595). The modified equations are based on stoichiometric equations and parameters from Paulmier et al. 2009. Stoichiometries of remineralization and denitrification in global biogeochemical ocean models. Biogeosciences 6, pgs. 923-935. 7) The high Southern Ocean mixing scheme code that was described in Keller et al., 2012 GMD is an option in our code, but not the official 02 update. 8) Following Getzlaff and Dietze, 2013, GRL Vol. 40. an option to increase the tropical zonal isopycnal diffusivity has been added to isopyc.F and isopyc.h. The option is called O_increase_isopyc_diff and can be applied in two ways. The first option O_increase_isopyc_diff_everywhere applies the scheme as in Julia's paper. The second option O_increase_isopyc_diff_smooth is a modified version of this code that was added by C. Somes and it smooths the transition between the area where the scheme is applied and other areas. Note that the use of these options will improves ocean oxygen distributions, but lowers N-fixation and denitrification to much lower levels. I have not had time to tune the parameters to get N-fixation and denitrification back to the levels they were at in Keller et al. 2012 GMD. 9) In tracer.F on lines 340 and 342 the term "phin" has been removed from the equations to correct another light bug. This bug caused too much light attenuation due to phytoplankton biomass to occur in the third layer and below. 10) Tracer minimum functions have been added to the code at the very end of the npzd_src.F file to prevent tracers from going negative. While these functions are probably redundant, given similar functions in other places, this is an ideal place to have a tracer minimum function. 11) A max statement has been added to tracer.F, line 583, to prevent "deni", the denitrification term, from going negative. 12) Note also that in setmom.F there is a bug that we fixed a long time ago that has never been fixed by M. Eby. This bug is on line 161 where the incorrect code is "call getvar ('O_tidenrg', ...". The correct code is "call getvar ('tidenrg',...". If you don't use the tidal mixing scheme this bug is not a problem, which is why it has not been fixed at UVic. ######### #Content# ######### CompileExe: contains all that is needed to compile & execute UVic_Kiel_2016 from a 10,000 year spun-up state mk: homebrew make run/mk.ver: defines compile options, libraries source: source code check: Efficient compilers are all about optimizing the order of execution on a specific piece of hardware. Round-off errors can - unfortunatley - violate commutative laws. Consequently bit-for-bit reproducibility is tough to ensure. In order to provide an idea concerning the order of magnitude of the "computational uncertainty" two restarts from two (supposedly identical) 100 year-long integrations performed on differing hardware (both starting from the 10,000 year spun-up state prepared in directory CompileExe) are provided in the directories AMD_CentOS6.5 and OSX10.8.5.