From fd4feb15e3a6c658f392e5361e8812b42654f788 Mon Sep 17 00:00:00 2001 From: kewalak Date: Fri, 16 Feb 2024 14:43:34 -0800 Subject: [PATCH] Constants and Headers --- .../nsm1/CBOD/dynamic_variables.py | 8 +- src/clearwater_modules/nsm1/CBOD/processes.py | 11 +- .../nsm1/CBOD/static_variables.py | 10 +- .../nsm1/DOX/dynamic_variables.py | 5 +- src/clearwater_modules/nsm1/DOX/processes.py | 10 +- .../nsm1/DOX/static_variables.py | 10 +- .../nsm1/POM/dynamic_variables.py | 8 +- src/clearwater_modules/nsm1/POM/processes.py | 14 +- .../nsm1/POM/static_variables.py | 9 +- .../nsm1/algae/dynamic_variables.py | 2 +- .../nsm1/algae/processes.py | 6 +- .../nsm1/algae/static_variables.py | 6 +- .../nsm1/alkalinity/dynamic_variables.py | 27 +-- .../nsm1/alkalinity/processes.py | 45 +---- .../nsm1/alkalinity/static_variables.py | 31 +-- .../nsm1/balgae/dynamic_variables.py | 2 +- .../nsm1/balgae/processes.py | 5 +- .../nsm1/balgae/static_variables.py | 8 +- .../nsm1/carbon/dynamic_variables.py | 26 +-- .../nsm1/carbon/processes.py | 17 +- .../nsm1/carbon/static_variables.py | 37 +--- src/clearwater_modules/nsm1/constants.py | 191 +++++++++++++----- src/clearwater_modules/nsm1/n2/processes.py | 9 +- .../nsm1/n2/static_variables.py | 4 +- .../nsm1/nitrogen/dynamic_variables.py | 2 +- .../nsm1/nitrogen/processes.py | 5 +- .../nsm1/nitrogen/static_variables.py | 5 +- .../nsm1/pathogens/dynamic_variables.py | 2 +- .../nsm1/pathogens/processes.py | 6 +- .../nsm1/pathogens/static_variables.py | 6 +- .../nsm1/phosphorus/dynamic_variables.py | 2 +- .../nsm1/phosphorus/processes.py | 48 +---- .../nsm1/phosphorus/static_variables.py | 5 +- .../nsm1/sedflux/dynamic_variables.py | 3 +- .../nsm1/sedflux/processes.py | 16 +- .../nsm1/sedflux/static_variable.py | 10 +- 36 files changed, 272 insertions(+), 339 deletions(-) diff --git a/src/clearwater_modules/nsm1/CBOD/dynamic_variables.py b/src/clearwater_modules/nsm1/CBOD/dynamic_variables.py index 86267ba..c92b16f 100644 --- a/src/clearwater_modules/nsm1/CBOD/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/CBOD/dynamic_variables.py @@ -1,12 +1,14 @@ -# TODO: figure out imports... +""" +File contains dynamic variables related to the CBOD module +""" import clearwater_modules.shared.processes as shared_processes from clearwater_modules import base -from clearwater_modules.tsm.model import EnergyBudget +from clearwater_modules.nsm1.model import NutrientBudget from clearwater_modules.nsm1.CBOD import processes -@base.register_variable(models=EnergyBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... diff --git a/src/clearwater_modules/nsm1/CBOD/processes.py b/src/clearwater_modules/nsm1/CBOD/processes.py index 5ca549e..0ea2729 100644 --- a/src/clearwater_modules/nsm1/CBOD/processes.py +++ b/src/clearwater_modules/nsm1/CBOD/processes.py @@ -1,10 +1,11 @@ -import numpy as np +""" +File contains process to calculate new CBOD concentration and associated dependent variables +""" + import numba import xarray as xr -from clearwater_modules.shared.processes import ( - arrhenius_correction, -) - +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit def kbod_tc( diff --git a/src/clearwater_modules/nsm1/CBOD/static_variables.py b/src/clearwater_modules/nsm1/CBOD/static_variables.py index f98704b..dfeebd5 100644 --- a/src/clearwater_modules/nsm1/CBOD/static_variables.py +++ b/src/clearwater_modules/nsm1/CBOD/static_variables.py @@ -1,14 +1,16 @@ -# TODO: figure out what 'model' to import +""" +File contains static variables related to the CBOD module +""" + import clearwater_modules.base as base -from clearwater_modules.tsm.model import EnergyBudget +from clearwater_modules.nsm1.model import NutrientBudget -@base.register_variable(models=EnergyBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# CBOD variables for each CBOD group - array Variable( name='kbod_20', long_name='CBOD oxidation rate at 20C', diff --git a/src/clearwater_modules/nsm1/DOX/dynamic_variables.py b/src/clearwater_modules/nsm1/DOX/dynamic_variables.py index 2b5b8a9..5c82c40 100644 --- a/src/clearwater_modules/nsm1/DOX/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/DOX/dynamic_variables.py @@ -2,11 +2,10 @@ import clearwater_modules.shared.processes as shared_processes from clearwater_modules import base -from clearwater_modules.tsm.model import EnergyBudget +from clearwater_modules.nsm1.model import NutrientBudget from clearwater_modules.nsm1.DOX import processes - -@base.register_variable(models=EnergyBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... diff --git a/src/clearwater_modules/nsm1/DOX/processes.py b/src/clearwater_modules/nsm1/DOX/processes.py index 1a6300c..c798874 100644 --- a/src/clearwater_modules/nsm1/DOX/processes.py +++ b/src/clearwater_modules/nsm1/DOX/processes.py @@ -1,9 +1,11 @@ -import numpy as np +""" +File contains dynamic variables related to the DOX module +""" + import numba import xarray as xr -from clearwater_modules.shared.processes import ( - arrhenius_correction, -) +from clearwater_modules.shared.processes import arrhenius_correction +import math #TODO: make sure np.exp will work here... diff --git a/src/clearwater_modules/nsm1/DOX/static_variables.py b/src/clearwater_modules/nsm1/DOX/static_variables.py index 9732936..4cfe567 100644 --- a/src/clearwater_modules/nsm1/DOX/static_variables.py +++ b/src/clearwater_modules/nsm1/DOX/static_variables.py @@ -1,12 +1,16 @@ -# TODO: figure out what 'model' to import +""" +File contains static variables related to the DOX module +""" + import clearwater_modules.base as base -from clearwater_modules.tsm.model import EnergyBudget +from clearwater_modules.nsm1.model import NutrientBudget -@base.register_variable(models=EnergyBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... + Variable( name='ron', long_name='O2:N ratio for nitrification', diff --git a/src/clearwater_modules/nsm1/POM/dynamic_variables.py b/src/clearwater_modules/nsm1/POM/dynamic_variables.py index 32e56d1..980ba83 100644 --- a/src/clearwater_modules/nsm1/POM/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/POM/dynamic_variables.py @@ -1,10 +1,14 @@ +""" +File contains dynamic variables related to the POM module +""" + import clearwater_modules.shared.processes as shared_processes from clearwater_modules import base -from clearwater_modules.nsm1.carbon.model import CarbonBudget +from clearwater_modules.nsm1.model import NutrientBudget from clearwater_modules.nsm1.POM import processes -@base.register_variable(models=CarbonBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... diff --git a/src/clearwater_modules/nsm1/POM/processes.py b/src/clearwater_modules/nsm1/POM/processes.py index 7bfdc12..5317b66 100644 --- a/src/clearwater_modules/nsm1/POM/processes.py +++ b/src/clearwater_modules/nsm1/POM/processes.py @@ -1,14 +1,10 @@ +""" +File contains process to calculate new POM concentration and associated dependent variables +""" import numba -import math -from clearwater_modules.shared.processes import ( - arrhenius_correction -) import xarray as xr -from clearwater_modules.nsm1.POM import dynamic_variables -from clearwater_modules.nsm1.POM import static_variables -from clearwater_modules.nsm1 import static_variables_global -from clearwater_modules.nsm1 import dynamic_variables_global -from clearwater_modules.nsm1 import state_variables +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit def kpom_tc( diff --git a/src/clearwater_modules/nsm1/POM/static_variables.py b/src/clearwater_modules/nsm1/POM/static_variables.py index 36733a0..48e91d8 100644 --- a/src/clearwater_modules/nsm1/POM/static_variables.py +++ b/src/clearwater_modules/nsm1/POM/static_variables.py @@ -1,12 +1,17 @@ +""" +File contains static variables related to the POM module +""" + import clearwater_modules.base as base -from clearwater_modules.tsm.model import EnergyBudget +from clearwater_modules.nsm1.model import NutrientBudget -@base.register_variable(models=EnergyBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... + Variable( name='kpom_20', long_name='POM dissolution rate at 20C', diff --git a/src/clearwater_modules/nsm1/algae/dynamic_variables.py b/src/clearwater_modules/nsm1/algae/dynamic_variables.py index abe3db3..01bc736 100644 --- a/src/clearwater_modules/nsm1/algae/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/algae/dynamic_variables.py @@ -1,5 +1,5 @@ """ -File includes dynamic variables computed in Algae module. Dynamic variables may be accessed by other modules. +File contains dynamic variables related to the Algae module """ import clearwater_modules.shared.processes as shared_processes diff --git a/src/clearwater_modules/nsm1/algae/processes.py b/src/clearwater_modules/nsm1/algae/processes.py index 6ee1101..5ec8e77 100644 --- a/src/clearwater_modules/nsm1/algae/processes.py +++ b/src/clearwater_modules/nsm1/algae/processes.py @@ -1,12 +1,10 @@ """ File contains process to calculate new algae biomass concentration and associated dependent variables """ - -# TODO calculate lambda? -import math -from clearwater_modules.shared.processes import arrhenius_correction import numba import xarray as xr +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit diff --git a/src/clearwater_modules/nsm1/algae/static_variables.py b/src/clearwater_modules/nsm1/algae/static_variables.py index df6771f..7b0c027 100644 --- a/src/clearwater_modules/nsm1/algae/static_variables.py +++ b/src/clearwater_modules/nsm1/algae/static_variables.py @@ -1,18 +1,14 @@ """ -File includes static variables only used in Algae module +File contains static variables related to the Algae module """ import clearwater_modules.base as base from clearwater_modules.nsm1.model import NutrientBudget -import clearwater_modules.nsm1.algae.processes as processes @base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# TODO: verify all these values - -# Only Algae Variables Variable( diff --git a/src/clearwater_modules/nsm1/alkalinity/dynamic_variables.py b/src/clearwater_modules/nsm1/alkalinity/dynamic_variables.py index 2e91498..875c0b7 100644 --- a/src/clearwater_modules/nsm1/alkalinity/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/alkalinity/dynamic_variables.py @@ -1,33 +1,16 @@ -# TODO: figure out imports +""" +File contains dynamic variables related to the alkalinity module +""" import clearwater_modules.shared.processes as shared_processes from clearwater_modules import base -from clearwater_modules.nsm1.carbon.model import CarbonBudget +from clearwater_modules.nsm1.model import NutrientBudget from clearwater_modules.nsm1.alkalinity import processes - -@base.register_variable(models=CarbonBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -Variable( - name='knit_tc', - long_name='Nitrification rate corrected for temperature', - units='1/d', - description='Nitrification rate corrected for temperature', - use='dynamic', - process=processes.knit_tc -) - -Variable( - name='kdnit_tc', - long_name='Denitrification rate corrected for temperature', - units='1/d', - description='Denitrification rate corrected for temperature', - use='dynamic', - process=processes.kdnit_tc -) - Variable( name='Alk_denitrification', long_name='Alkalinity change due to denitrification', diff --git a/src/clearwater_modules/nsm1/alkalinity/processes.py b/src/clearwater_modules/nsm1/alkalinity/processes.py index 563b0c2..2da53bd 100644 --- a/src/clearwater_modules/nsm1/alkalinity/processes.py +++ b/src/clearwater_modules/nsm1/alkalinity/processes.py @@ -1,44 +1,11 @@ +""" +File contains process to calculate new alkalinity concentration and associated dependent variables +""" + import numba -import math -from clearwater_modules.shared.processes import ( - arrhenius_correction -) import xarray as xr -from clearwater_modules.nsm1.alkalinity import dynamic_variables -from clearwater_modules.nsm1.alkalinity import static_variables -from clearwater_modules.nsm1 import static_variables_global -from clearwater_modules.nsm1 import dynamic_variables_global -from clearwater_modules.nsm1 import state_variables - -@numba.njit -def kdnit_tc( - TwaterC: float, - kdnit_20: float -) -> float: - """Calculate kdnit_tc: Denitrification rate temperature correction (1/d). #TODO only if use_NO3 = true - - Args: - TwaterC: Water temperature (C) - kdnit_20: Denitrification rate (1/d) - """ - - return arrhenius_correction(TwaterC, kdnit_20, 1.045) - - -@numba.njit -def knit_tc( ##Theta variable?? - TwaterC: float, - knit_20: float -) -> float: - """Calculate knit_tc: Denitrification rate temperature correction (1/d). #TODO only if use_NO3 = true - - Args: - TwaterC: Water temperature (C) - knit_20: Nitrification rate (1/d) - """ - - return arrhenius_correction(TwaterC, knit_20, 1.045) - +from clearwater_modules.shared.processes import arrhenius_correction +import math def Alk_denitrification( DOX: xr.DataArray, diff --git a/src/clearwater_modules/nsm1/alkalinity/static_variables.py b/src/clearwater_modules/nsm1/alkalinity/static_variables.py index d224971..2cce845 100644 --- a/src/clearwater_modules/nsm1/alkalinity/static_variables.py +++ b/src/clearwater_modules/nsm1/alkalinity/static_variables.py @@ -1,35 +1,16 @@ +""" +File contains static variables related to the Alkalinity module +""" + import clearwater_modules.base as base -from clearwater_modules.tsm.model import EnergyBudget +from clearwater_modules.nsm1.model import NutrientBudget -@base.register_variable(models=EnergyBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -Variable( - name='kdnit_20', - long_name='Denitrification rate at 20C', - units='1/d', - description='Denitrification rate at 20C', - use='static', -) - -Variable( - name='knit_20', - long_name='Nitrification Rate Ammonia decay at 20C', - units='1/d', - description='Nitrification Rate Ammonia NH4 -> NO3 decay at 20C', - use='static', -) - -Variable( - name='KNR', - long_name='Oxygen inhabitation factor for nitrification', - units='mg-O2/L', - description='Oxygen inhabitation factor for nitrification', - use='static', -) Variable( name='r_alkaa', diff --git a/src/clearwater_modules/nsm1/balgae/dynamic_variables.py b/src/clearwater_modules/nsm1/balgae/dynamic_variables.py index a9d18df..67b00db 100644 --- a/src/clearwater_modules/nsm1/balgae/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/balgae/dynamic_variables.py @@ -1,5 +1,5 @@ """ -File includes dynamic variables computed in Balgae module. Dynamic variables may be accessed by other modules. +File contains dynamic variables related to the benthic algae module """ import clearwater_modules.shared.processes as shared_processes diff --git a/src/clearwater_modules/nsm1/balgae/processes.py b/src/clearwater_modules/nsm1/balgae/processes.py index 96d5094..6f586c7 100644 --- a/src/clearwater_modules/nsm1/balgae/processes.py +++ b/src/clearwater_modules/nsm1/balgae/processes.py @@ -2,11 +2,10 @@ File contains process to calculate new benthic algae biomass concentration and associated dependent variables """ -import math -from clearwater_modules.shared.processes import arrhenius_correction import numba import xarray as xr - +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit def mub_max_tc( diff --git a/src/clearwater_modules/nsm1/balgae/static_variables.py b/src/clearwater_modules/nsm1/balgae/static_variables.py index 2cf9489..142907f 100644 --- a/src/clearwater_modules/nsm1/balgae/static_variables.py +++ b/src/clearwater_modules/nsm1/balgae/static_variables.py @@ -1,18 +1,14 @@ """ -File includes static variables only used in Algae module +File contains static variables related to the Benthic Algae module """ import clearwater_modules.base as base from clearwater_modules.nsm1.model import NutrientBudget -import clearwater_modules.nsm1.algae.processes as processes @base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# TODO: verify all these values - -#Only Balgae Variables Variable( name='Fw', @@ -138,7 +134,7 @@ class Variable(base.Variable): name='b_light_limitation_option', long_name='Benthic Algal light limitation rate options', units='unitless', - description='Benthic Algal light limitation rate with three options: 1) Half-saturation formulation, 2) Smiths Model, 3) Steeles Model' + description='Benthic Algal light limitation rate with three options: 1) Half-saturation formulation, 2) Smiths Model, 3) Steeles Model', use='static', ) diff --git a/src/clearwater_modules/nsm1/carbon/dynamic_variables.py b/src/clearwater_modules/nsm1/carbon/dynamic_variables.py index deb9a82..013eb42 100644 --- a/src/clearwater_modules/nsm1/carbon/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/carbon/dynamic_variables.py @@ -1,12 +1,13 @@ -# TODO: figure out imports +""" +File contains dynamic variables related to the Carbon module +""" import clearwater_modules.shared.processes as shared_processes from clearwater_modules import base -from clearwater_modules.nsm1.carbon.model import CarbonBudget +from clearwater_modules.nsm1.model import NutrientBudget from clearwater_modules.nsm1.carbon import processes - -@base.register_variable(models=CarbonBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... @@ -198,20 +199,3 @@ class Variable(base.Variable): use='dynamic', process=processes.dDICdt ) - -Variable( - name='kah_tc', - long_name='re-aeration rate temperature corrected (diffusion from atomsphere)', - units='1/d', - description='re-aeration rate temperature corrected(diffusion from atomsphere)', - use='dynamic', - process=processes.kah_tc -) -Variable( - name='kaw_tc', - long_name='wind derived re-aeration transfer velocity temperature corrected', - units='m/d', - description='wind derived re-aeration transfer velocity temperature corrected', - use='dynamic', - process=processes.kaw_tc -) \ No newline at end of file diff --git a/src/clearwater_modules/nsm1/carbon/processes.py b/src/clearwater_modules/nsm1/carbon/processes.py index 1784a8b..4a29e52 100644 --- a/src/clearwater_modules/nsm1/carbon/processes.py +++ b/src/clearwater_modules/nsm1/carbon/processes.py @@ -1,14 +1,11 @@ -import numpy as np +""" +File contains process to calculate new carbon concentration and associated dependent variables +""" + import numba import xarray as xr -from clearwater_modules.shared.processes import ( - arrhenius_correction -) -from clearwater_modules.nsm1.carbon import dynamic_variables -from clearwater_modules.nsm1.carbon import static_variables -from clearwater_modules.nsm1 import static_variables_global -# from clearwater_modules.nsm1 import dynamic_variables_global -from clearwater_modules.nsm1 import state_variables +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit @@ -240,7 +237,7 @@ def dDOCdt( @numba.njit -def DOC_new( +def DOC( DOC: xr.DataArray, dDOCdt: xr.DataArray, timestep: xr.DataArray diff --git a/src/clearwater_modules/nsm1/carbon/static_variables.py b/src/clearwater_modules/nsm1/carbon/static_variables.py index cd626cf..0ea80ba 100644 --- a/src/clearwater_modules/nsm1/carbon/static_variables.py +++ b/src/clearwater_modules/nsm1/carbon/static_variables.py @@ -1,15 +1,14 @@ -# TODO: figure out what 'model' to import +""" +File contains static variables related to the Carbon module +""" + import clearwater_modules.base as base -from clearwater_modules.nsm1.carbon.model import EnergyBudget +from clearwater_modules.nsm1.model import NutrientBudget -@base.register_variable(models=EnergyBudget) +@base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# TODO: verify all these values - -### -# To get from algae/benthic: rca?, rcb?, kdp_20 (static), kdp_tc (dyn), Ap (state), depth (state), Ab (state), Fw, Fb Variable( @@ -61,15 +60,6 @@ class Variable(base.Variable): use='static' ) - -Variable( - name='kac_20', - long_name='CO2 reaeration rate', - units='1/d', - description='CO2 reaeration rate', - use='static' -) - Variable( name='pCO2', long_name='partial atmospheric CO2 pressure', @@ -86,21 +76,6 @@ class Variable(base.Variable): use='static' ) -Variable( - name='kah_20', - long_name='re-aeration rate (diffusion from atomsphere)', - units='1/d', - description='re-aeration rate (diffusion from atomsphere)', - use='static' -) -Variable( - name='kaw_tc', - long_name='wind derived re-aeration transfer velocity', - units='m/d', - description='wind derived re-aeration transfer velocity', - use='static' -) - #TODO define roc long name and description Variable( name='roc', diff --git a/src/clearwater_modules/nsm1/constants.py b/src/clearwater_modules/nsm1/constants.py index 0f742c8..3734e9a 100644 --- a/src/clearwater_modules/nsm1/constants.py +++ b/src/clearwater_modules/nsm1/constants.py @@ -38,36 +38,22 @@ class AlgaeStaticVariables(TypedDict): light_limitation_option = 1 ) -class NitrogenStaticVariables(TypedDict): - KNR: float - knit_20: float - kon_20: float - kdnit_20: float - rnh4_20: float - vno3_20: float - KsOxdn: float - PN: float - PNb: float - -DEFAULT_NITROGEN = NitrogenStaticVariables( - KNR= 0.6 , - knit_20= 0.1, - kon_20=0.1, - kdnit_20=0.002, - rnh4_20=0, - vno3_20=0, - KsOxdn=0.1, - PN=0.5, - PNb=0.5 -) - -class PhosphorusStaticVariables(TypedDict): - kop_20: float - rpo4_20: float - -DEFAULT_PHOSPHORUS = PhosphorusStaticVariables( - kop_20 = 0.1, - rpo4_20 =0 +class AlkalinityStaticVariables(TypedDict): + r_alkaa: float + r_alkan: float + r_alkn: float + r_alkden: float + r_alkba: float + r_alkbn: float + +DEFAULT_Alkalinity = AlkalinityStaticVariables( + r_alkaa = 14.0 / 106.0 / 12.0 / 1000.0, + r_alkan= 18.0 / 106.0 / 12.0 / 1000.0, + r_alkn = 2.0 / 14.0 / 1000.0, + r_alkden = 4.0 / 14.0 / 1000.0, + r_alkba = 14.0 / 106.0 / 12.0 / 1000.0, + r_alkbn =18.0 / 106.0 / 12.0 / 1000.0 + ) class BalgaeStaticVariables(TypedDict): @@ -109,56 +95,161 @@ class BalgaeStaticVariables(TypedDict): Fb=0.9, ) +class CarbonStaticVariables(TypedDict): + f_pocp: float + kdoc_20: float + vsoc: float + f_pocb: float + kpoc_20: float + KsOxmc: float + kac_20: float + pCO2: float + FCO2: float + roc: float + +DEFAULT_Carbon = CarbonStaticVariables( + f_pocp = 0.9, + kdoc_20= 0.01, + vsoc=0.01, + f_pocb=0.9, + kpoc_20= 0.005, + KsOxmc=1.0, + pCO2 = 383.0, + FCO2 = 0.2, + roc = 32.0/12.0 +) + +class CBODStaticVariables(TypedDict): + kbod_20: float + ksbod_20: float + KsOxbod: float + +DEFAULT_CBOD = CBODStaticVariables( + kbod_20 = 0.12, + ksbod_20 = 0.0, + KsOxbod = 0.5 +) + +class DOXStaticVariables(TypedDict): + kaw_20_user : float + kah_20_user : float + hydraulic_reaeration_option : float + wind_reaeration_option : float + ron : float + KsSOD : float + SOD_20 : float + +DEFAULT_DOX = DOXStaticVariables( + kah_20_user=1.0, + kaw_20_user=0.0, + hydraulic_reaeration_option = 1, + wind_reaeration_option = 1, + ron = 2.0 * 32.0 / 14.0, + KsSOD =1, + SOD_20 = 0.2 +) + class N2StaticVariables(TypedDict): - pass + pass DEFAULT_N2 = N2StaticVariables( + +) + +class NitrogenStaticVariables(TypedDict): + KNR: float + knit_20: float + kon_20: float + kdnit_20: float + rnh4_20: float + vno3_20: float + KsOxdn: float + PN: float + PNb: float + vson: float + +DEFAULT_NITROGEN = NitrogenStaticVariables( + KNR= 0.6 , + knit_20= 0.1, + kon_20=0.1, + kdnit_20=0.002, + rnh4_20=0, + vno3_20=0, + KsOxdn=0.1, + PN=0.5, + PNb=0.5, + vson = 0.01 ) class PathogenStaticVariables(TypedDict): - kdx: float + kdx_20: float apx: float vx: float DEFAULT_PATHOGEN = PathogenStaticVariables( - kdx=0.8, + kdx_20=0.8, apx=1, vx=1, ) +class PhosphorusStaticVariables(TypedDict): + kop_20: float + rpo4_20: float + vsop: float + vs: float + kdop4: float + +DEFAULT_PHOSPHORUS = PhosphorusStaticVariables( + kop_20 = 0.1, + rpo4_20 =0, + vsop = 0.01, + vs = 0.1, + kdop4 = 0.0, +) + +class POMStaticVariables(TypedDict): + kpom_20: float + vb: float + focm: float + +DEFAULT_POM = POMStaticVariables( + kpom_20 = 0.01, + vb = 0.0025, + focm = 0.4 +) + class GlobalParameters(TypedDict): use_NH4 : bool use_NO3 : bool - use_OrgN: bool + use_OrgN: bool + use_OrgP: bool use_TIP : bool use_SedFlux: bool + use_POC: bool + use_DOC: bool use_DOX: bool + use_DIC: bool use_Algae: bool use_Balgae: bool - use_TIP: bool + use_Pathogen: bool + use_Alk: bool + use_POM2: bool DEFAULT_GLOBALPARAMETERS = GlobalParameters( use_NH4= True, use_NO3= True, use_OrgN= True, + use_OrgP = True, use_TIP= True, - use_SedFlux= True, + use_SedFlux= False, + use_POC = True, + use_DOC = True, use_DOX= True, + use_DIC= True, use_Algae= True, - use_Balgae= True, - use_TIP= True, -) + use_Pathogen = True, + use_Alk = True, + use_POM2 = True -class GlobalVars(TypedDict): - L : float #lambda - fdp: float - PAR: float - vson: float - -DEFAULT_GLOBALVARS = GlobalVars( - L = 1, #lambda - fdp= 0.5, - PAR= 1, - vson = 0.01, ) diff --git a/src/clearwater_modules/nsm1/n2/processes.py b/src/clearwater_modules/nsm1/n2/processes.py index 2c2e007..b3ca01d 100644 --- a/src/clearwater_modules/nsm1/n2/processes.py +++ b/src/clearwater_modules/nsm1/n2/processes.py @@ -1,8 +1,11 @@ -import math -from clearwater_modules.shared.processes import arrhenius_correction, celsius_to_kelvin +""" +File contains dynamic variables related to the N2 module +""" + import numba import xarray as xr - +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit def KHN2_tc( diff --git a/src/clearwater_modules/nsm1/n2/static_variables.py b/src/clearwater_modules/nsm1/n2/static_variables.py index f05a4af..2a0da2e 100644 --- a/src/clearwater_modules/nsm1/n2/static_variables.py +++ b/src/clearwater_modules/nsm1/n2/static_variables.py @@ -1,12 +1,12 @@ """ -File includes static variables only used in N2 module +File contains static variables related to the N2 module """ import clearwater_modules.base as base from clearwater_modules.nsm1.model import NutrientBudget -import clearwater_modules.nsm1.n2.processes as processes @base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... + diff --git a/src/clearwater_modules/nsm1/nitrogen/dynamic_variables.py b/src/clearwater_modules/nsm1/nitrogen/dynamic_variables.py index 13f4a48..1135f2d 100644 --- a/src/clearwater_modules/nsm1/nitrogen/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/nitrogen/dynamic_variables.py @@ -1,5 +1,5 @@ """ -File includes dynamic variables computed in Algae module. Dynamic variables may be accessed by other modules. +File contains dynamic variables related to the Nitrogen module """ import clearwater_modules.shared.processes as shared_processes diff --git a/src/clearwater_modules/nsm1/nitrogen/processes.py b/src/clearwater_modules/nsm1/nitrogen/processes.py index b0320be..e32e66f 100644 --- a/src/clearwater_modules/nsm1/nitrogen/processes.py +++ b/src/clearwater_modules/nsm1/nitrogen/processes.py @@ -1,10 +1,11 @@ """ File contains process to calculate nitrogen species concentration and associated dependent variables """ -import math -from clearwater_modules.shared.processes import arrhenius_correction + import numba import xarray as xr +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit def knit_tc( diff --git a/src/clearwater_modules/nsm1/nitrogen/static_variables.py b/src/clearwater_modules/nsm1/nitrogen/static_variables.py index b3e27c4..1de77cc 100644 --- a/src/clearwater_modules/nsm1/nitrogen/static_variables.py +++ b/src/clearwater_modules/nsm1/nitrogen/static_variables.py @@ -1,18 +1,15 @@ """ -File includes static variables only used in Nitrogen module +File contains static variables related to the Nitrogen module """ import clearwater_modules.base as base from clearwater_modules.nsm1.model import NutrientBudget -import clearwater_modules.nsm1.nitrogen.processes as processes @base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# TODO: verify all these values -# Only Nitrogen Variables Variable( diff --git a/src/clearwater_modules/nsm1/pathogens/dynamic_variables.py b/src/clearwater_modules/nsm1/pathogens/dynamic_variables.py index 30d5ced..5b82ec8 100644 --- a/src/clearwater_modules/nsm1/pathogens/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/pathogens/dynamic_variables.py @@ -1,5 +1,5 @@ """ -File includes dynamic variables computed in pathogen module. Dynamic variables may be accessed by other modules. +File contains dynamic variables related to the Pathogens module """ import clearwater_modules.shared.processes as shared_processes diff --git a/src/clearwater_modules/nsm1/pathogens/processes.py b/src/clearwater_modules/nsm1/pathogens/processes.py index 8b6d02b..274818f 100644 --- a/src/clearwater_modules/nsm1/pathogens/processes.py +++ b/src/clearwater_modules/nsm1/pathogens/processes.py @@ -1,11 +1,11 @@ """ -File contains process to calculate new algae biomass concentration and associated dependent variables +File contains process to calculate new pathogen concentration and associated dependent variables """ -import math -from clearwater_modules.shared.processes import arrhenius_correction import numba import xarray as xr +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit def kdx_tc( diff --git a/src/clearwater_modules/nsm1/pathogens/static_variables.py b/src/clearwater_modules/nsm1/pathogens/static_variables.py index 498b807..7281d45 100644 --- a/src/clearwater_modules/nsm1/pathogens/static_variables.py +++ b/src/clearwater_modules/nsm1/pathogens/static_variables.py @@ -1,16 +1,16 @@ """ -File includes static variables only used in Pathogen module +File contains static variables related to the Pathogens module """ import clearwater_modules.base as base from clearwater_modules.nsm1.model import NutrientBudget -import clearwater_modules.nsm1.pathogens.processes as processes @base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# TODO: verify all these values + + Variable( name='kdx_20', diff --git a/src/clearwater_modules/nsm1/phosphorus/dynamic_variables.py b/src/clearwater_modules/nsm1/phosphorus/dynamic_variables.py index 14ec38b..1db354e 100644 --- a/src/clearwater_modules/nsm1/phosphorus/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/phosphorus/dynamic_variables.py @@ -1,5 +1,5 @@ """ -File includes dynamic variables computed in phosphorus module. Dynamic variables may be accessed by other modules. +File contains dynamic variables related to the Phosphorus module """ import clearwater_modules.shared.processes as shared_processes diff --git a/src/clearwater_modules/nsm1/phosphorus/processes.py b/src/clearwater_modules/nsm1/phosphorus/processes.py index eb6cc2c..ae5e23d 100644 --- a/src/clearwater_modules/nsm1/phosphorus/processes.py +++ b/src/clearwater_modules/nsm1/phosphorus/processes.py @@ -1,54 +1,10 @@ """ File contains process to calculate new phosphorus concentration and associated dependent variables """ -""" -(Global) module_choices T/F -'use_Algae' -'use_BAlgae' -'use_OrgP' -'use_TIP' -'use_SedFlux' - -(Global) global_vars -'Ap' Algae concentration [ug/Chla/L] -'TwaterC' Water temperature [C] -'depth' Depth from water surface [m] -'OrgP' Organic phosphorus [mg-P/L] -'TIP' Total inorganic phosphorus [mg-P/L] -'vs' Sediment settling velocity [m/d] -'fdp' fraction P dissolved [unitless] - -phosphorus_constant_changes -'kop' Decay rate or orgnaic P to DIP [1/d] -'rpo4' Benthic sediment release rate of DIP [g-P/m2*d] - -from Algae -'rPa' AlgalP : Chla ratio [mg-P/ugChla] -'ApGrowth' Algal growth rate [ug-chla/L/d] -'ApDeath' Algal death rate [ug-chla/L/d] -'ApRespiration' AlgalRespiration rate [ug-chla/L/d] - -from Benthic Algae -'rpb' Benthic Algal P: Benthic Algal Dry Weight [mg-P/mg-D] -'AbGrowth' Benthic Algal growth rate [g/m^2*d] -'AbDeath' Benthic Algal death rate [g/m^2*d] -'AbRespiration' Benthic Algal respiration rate [g/m^2*d] - -from SedFlux -'JDIP' Sediment water flux of phosphate [g-P/m^2*d] - - Organic Phosphorus (mgP/day) - - dOrgP/dt = Algae_OrgP (Algae -> OrgP) - - OrgP Decay (OrgP -> DIP) - - OrgP Settling (OrgP -> bed) - + BenthicAlgalDeath (Benthic Algae -> OrgP) - -""" -import math -from clearwater_modules.shared.processes import arrhenius_correction import numba import xarray as xr +from clearwater_modules.shared.processes import arrhenius_correction +import math @numba.njit diff --git a/src/clearwater_modules/nsm1/phosphorus/static_variables.py b/src/clearwater_modules/nsm1/phosphorus/static_variables.py index 85c3e9c..544ee77 100644 --- a/src/clearwater_modules/nsm1/phosphorus/static_variables.py +++ b/src/clearwater_modules/nsm1/phosphorus/static_variables.py @@ -1,18 +1,15 @@ """ -File includes static variables only used in Algae module +File contains static variables related to the Phosphorus module """ import clearwater_modules.base as base from clearwater_modules.nsm1.model import NutrientBudget -import clearwater_modules.nsm1.phosphorus.processes as processes @base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# TODO: verify all these values -#Only phosphorus variables Variable( name='kop_20', diff --git a/src/clearwater_modules/nsm1/sedflux/dynamic_variables.py b/src/clearwater_modules/nsm1/sedflux/dynamic_variables.py index 2f351e9..8bc80f1 100644 --- a/src/clearwater_modules/nsm1/sedflux/dynamic_variables.py +++ b/src/clearwater_modules/nsm1/sedflux/dynamic_variables.py @@ -1,10 +1,11 @@ """ -File includes dynamic variables computed in Algae module. Dynamic variables may be accessed by other modules. +File contains dynamic variables related to the SedFlux module """ import clearwater_modules.shared.processes as shared_processes from clearwater_modules import base from clearwater_modules.nsm1.model import NutrientBudget +from clearwater_modules.nsm1.sedflux import processes @base.register_variable(models=NutrientBudget) diff --git a/src/clearwater_modules/nsm1/sedflux/processes.py b/src/clearwater_modules/nsm1/sedflux/processes.py index a77a7b3..9faec09 100644 --- a/src/clearwater_modules/nsm1/sedflux/processes.py +++ b/src/clearwater_modules/nsm1/sedflux/processes.py @@ -2,12 +2,10 @@ File contains process to calculate sediment flux and associated dependent variables """ -import math -from clearwater_modules.shared.processes import arrhenius_correction -import numba -import numpy as np +import numba import xarray as xr - +from clearwater_modules.shared.processes import arrhenius_correction +import math # Note: OrgN, NH4, NO3, OrgP, TIP, POC and DOX must be on for SedFlux. @@ -3270,7 +3268,7 @@ def ra2( return xr.where(POCdiagenesis_part_option==2, xr.where(SO4>0.1, - xr.where(SedFlux_solution_option == 1, 2.0 * KL01 * JCc / h2, 2.0 * KL01 * JCc / h2 + (KL01 * SO4 + con_sox / KL01 * TH2S1) / dt), "NaN") "NaN") + xr.where(SedFlux_solution_option == 1, 2.0 * KL01 * JCc / h2, 2.0 * KL01 * JCc / h2 + (KL01 * SO4 + con_sox / KL01 * TH2S1) / dt), "NaN"), "NaN") @numba.njit @@ -3304,7 +3302,7 @@ def ra1( return xr.where(POCdiagenesis_part_option==2, xr.where(SO4>0.1, - xr.where(SedFlux_solution_option == 1, 2.0 * Dd_tc * JCc / h2, 2.0 * Dd_tc * JCc / h2 - 2.0 * KL01 * HSO4 * SO42 / dt), "NaN") "NaN") + xr.where(SedFlux_solution_option == 1, 2.0 * Dd_tc * JCc / h2, 2.0 * Dd_tc * JCc / h2 - 2.0 * KL01 * HSO4 * SO42 / dt), "NaN"), "NaN") @numba.njit @@ -3330,9 +3328,7 @@ def ra0( TH2S1: TH2S sediment layer 1 (mg-O/L) """ - return xr.where(POCdiagenesis_part_option==2, - xr.where(SO4>0.1, - xr.where(SedFlux_solution_option == 1, - 2.0 * Dd_tc * (KL01 * SO4 + con_sox / KL01 * TH2S1), - 2.0 * Dd_tc * (KL01 * SO4 + con_sox / KL01 * TH2S1)), "NaN") "NaN") + return xr.where(POCdiagenesis_part_option==2, xr.where(SO4>0.1, xr.where(SedFlux_solution_option == 1, - 2.0 * Dd_tc * (KL01 * SO4 + con_sox / KL01 * TH2S1), - 2.0 * Dd_tc * (KL01 * SO4 + con_sox / KL01 * TH2S1)), "NaN"), "NaN") @numba.njit diff --git a/src/clearwater_modules/nsm1/sedflux/static_variable.py b/src/clearwater_modules/nsm1/sedflux/static_variable.py index 8aeafbf..5dc4dd4 100644 --- a/src/clearwater_modules/nsm1/sedflux/static_variable.py +++ b/src/clearwater_modules/nsm1/sedflux/static_variable.py @@ -1,18 +1,16 @@ """ -File includes static variables only used in sedflux module +File contains static variables related to the SedFlux module """ import clearwater_modules.base as base from clearwater_modules.nsm1.model import NutrientBudget -import clearwater_modules.nsm1.sedflux.processes as processes @base.register_variable(models=NutrientBudget) class Variable(base.Variable): ... -# TODO: verify all these values -# Only Algae Variables + Variable( @@ -23,6 +21,7 @@ class Variable(base.Variable): use='static', ) +""" self.sedFlux_constants = OrderedDict() self.sedFlux_constants = { 'Dd': 0.0025, @@ -256,4 +255,5 @@ class Variable(base.Variable): H2S = 0.0 CH4 = 0.0 ron = 2.0 * 32.0 / 14.0 - rcdn = 5.0 * 12.0 / (4.0 * 14.0) \ No newline at end of file + rcdn = 5.0 * 12.0 / (4.0 * 14.0) +""" \ No newline at end of file