Hi,
I have a question about the calculation of ExternalVar%Mass in the benthos module.
I learned that ExternalVar%Mass is concentration of the respective property in the waterphase within ModuleWaterquality, but it is total Mass in kg for the ModuleBenthos.
or soluble properties this is the total mass, I suppose, but does it either refer to the total mass or to the total settled (bottom_) mass for particulates?
Units of ExternalVar%Mass in Modules WaterQuality & Benthos
-
- MOHID Insider
- Posts: 75
- Joined: Thu Jan 01, 1970 00:00
-
- MOHID Developer
- Posts: 553
- Joined: Thu Jan 01, 1970 00:00
- Location: Instituto Superior Técnico - Technical University of Lisbon
- Contact:
Hi Mathias,
The \"%Mass\" array is called like this for historical reasons but it's really not a very good name.
In module WaterQuality the array is relative to the water column concentrations (mass per unit of volume).
In module Benthos, where the processes regarding deposited properties are computed the array is given kg. Properties involved in Benthos are the deposited ones (expressed in kg/m2). There's a underlying principle that when deposited properties mineralise (for example) they became nutrients are directly \"injected\" in the water column. In the case of Mohid Water (3D model) this occurs in the bottom layer. In Mohid River this occurs directly to the all water column. Thus, as in Module Benthos the deposited properties distribuition (kg/m2) and the bottom layer water concentrations are needed, they are converted into kg so that the biogeochemical reactions can be applied all in the same units (kg).
I hope this helped. Please tell me if you have any questions. Best regards,
Luis
The \"%Mass\" array is called like this for historical reasons but it's really not a very good name.
In module WaterQuality the array is relative to the water column concentrations (mass per unit of volume).
In module Benthos, where the processes regarding deposited properties are computed the array is given kg. Properties involved in Benthos are the deposited ones (expressed in kg/m2). There's a underlying principle that when deposited properties mineralise (for example) they became nutrients are directly \"injected\" in the water column. In the case of Mohid Water (3D model) this occurs in the bottom layer. In Mohid River this occurs directly to the all water column. Thus, as in Module Benthos the deposited properties distribuition (kg/m2) and the bottom layer water concentrations are needed, they are converted into kg so that the biogeochemical reactions can be applied all in the same units (kg).
I hope this helped. Please tell me if you have any questions. Best regards,
Luis
-
- MOHID Insider
- Posts: 75
- Joined: Thu Jan 01, 1970 00:00
Dear Luis,
thanks for your answer.
I have another question:
I try to include bacteria growth in benthos and I wanted them (the bacteria) to consume both DONnr and PON. I implemeted a subroutine in benthos and oriented on the processes in waterquality. My problem is that, if I only take PON as substrate, everything is fine. If I also want to take DONnr, the concentration will get negative under certain cirumstances (I could not reproduce it in my test example, I only got this in the application of my whole rivernetwork).
I added if-statements in the module, so that if the bottom_concentration is below the defined minimum substrate concentration, there will be no uptake (like in waterquality).
thanks for your answer.
I have another question:
I try to include bacteria growth in benthos and I wanted them (the bacteria) to consume both DONnr and PON. I implemeted a subroutine in benthos and oriented on the processes in waterquality. My problem is that, if I only take PON as substrate, everything is fine. If I also want to take DONnr, the concentration will get negative under certain cirumstances (I could not reproduce it in my test example, I only got this in the application of my whole rivernetwork).
I added if-statements in the module, so that if the bottom_concentration is below the defined minimum substrate concentration, there will be no uptake (like in waterquality).
Code: Select all
subroutine ComputeBenthicBact(Index)
!Arguments-------------------------------------------------------------
integer, intent(IN) :: Index
!Local-----------------------------------------------------------------
integer :: PON
integer :: BAC
integer :: DONnr
integer :: PONr
! integer :: O
real :: s1, s2, xa, xb, ya, yb
real :: Mortality = null_real
real :: BacteriaPONUptake = null_real
real :: BacteriaDONUptake = null_real
real :: BacteriatotalUptake = null_real
real :: BacteriatotalUptakeM = null_real
real :: BacteriaPONUptakeM = null_real
real :: BacteriaDONUptakeM = null_real
!Temporary-------------------------------------------------------------
real :: TBacteriaLimitationFactor = null_real
real :: BottomPONConc = null_real
real :: BottomDONConc = null_real
!Begin-----------------------------------------------------------------
PON = Me%PropIndex%PON
PONr = Me%PropIndex%PONr
BAC = Me%PropIndex%Bact
DONnr = Me%PropIndex%DONnr
!Concentration of bottom_PON in terms of the bottom reactor
! 1000*3*0.05 is here for the moment for length, width and depth of the bottom reactor
! *1000 is the conversion from kg/m3=g/l to mg/l
BottomPONConc = Me%ExternalVar%Mass(PON, index) &
/(1000.*3.*Me%Bact%BotReactorDepth)*1000.
BottomDONConc = Me%ExternalVar%Mass(DONnr, index) &
/(1000.*3.*Me%Bact%BotReactorDepth)*1000.
!TBacteriaLimitationFactor : limitation by temperature
s1 = (1. / (Me%Bact%TOptBacteriaMin - Me%Bact%TBacteriaMin)) &
* log((Me%Bact%BK2 * (1.0 - Me%Bact%BK1)) &
/ (Me%Bact%BK1 * (1.0 - Me%Bact%BK2)))
s2 = (1. / (Me%Bact%TBacteriaMax - Me%Bact%TOptBacteriaMax)) &
* log((Me%Bact%BK3 * (1.0 - Me%Bact%BK4)) &
/ (Me%Bact%BK4 * (1.0 - Me%Bact%BK3)))
ya = exp(s1 * (Me%ExternalVar%Temperature(index) - Me%Bact%TBacteriaMin))
yb = exp(s2 * (Me%Bact%TBacteriaMax - Me%ExternalVar%Temperature(index)))
xa = (Me%Bact%BK1 * ya) / (1.0 + Me%Bact%BK1 * (ya - 1.0))
xb = (Me%Bact%BK4 * yb) / (1.0 + Me%Bact%BK4 * (yb - 1.0))
TBacteriaLimitationFactor = xa * xb
if ((BottomPONConc > Me%Bact%BacMinSub) .OR. &
(BottomDONConc > Me%Bact%BacminSub)) then
if (BottomPONConc > Me%Bact%BacMinSub) then
! Bacteria PON uptake (1/d)
BacteriaPONUptake = TBacteriaLimitationFactor &
* Me%Bact%BacMaxUptake &
* BottomPONConc &
/ (Me%Bact%NSatConstBac &
+ BottomPONConc)
! Bacteria PON uptake (kgN/d)
BacteriaPONUptakeM = BacteriaPONUptake &
* Me%ExternalVar%Mass(BAC, Index) &
* Me%Bact%NC_Ratio
else
BacteriaPONUptake = 0.0
BacteriaPONUptakeM = 0.0
endif
if (BottomDONConc > Me%Bact%BacMinSub) then
! Bacteria DON uptake (1/d)
BacteriaDONUptake = TBacteriaLimitationFactor &
* Me%Bact%BacMaxUptake &
* BottomDONConc &
/ (Me%Bact%NSatConstBac &
+ BottomDONConc)
! Bacteria DON uptake (kgN/d)
BacteriaDONUptakeM = BacteriaDONUptake &
* Me%ExternalVar%Mass(BAC, Index) &
* Me%Bact%NC_Ratio
else
BacteriaDONUptake = 0.0
BacteriaDONUptakeM = 0.0
endif
else
BacteriaPONUptake = 0.0
BacteriaPONUptakeM = 0.0
BacteriaDONUptake = 0.0
BacteriaDONUptakeM = 0.0
endif
!BacteriaTotalUptake, uptake in 1/d
BacteriaTotalUptake = (BacteriaDONUptake &
+ BacteriaPONUptake)
! Bacteria total uptake in kgC/d
BacteriatotalUptakeM= BacteriatotalUptake &
* Me%ExternalVar%Mass(BAC, Index)
!Organic nitrogen from dead bacteria in kgC/d
Mortality = Me%ExternalVar%Mass(BAC, Index) &
* Me%Bact%MortalityRate
Me%ExternalVar%Mass(BAC, Index) = Me%ExternalVar%Mass(BAC, Index) &
+(BacteriatotalUptakeM &
-Mortality) &
* Me%DTDay
Me%ExternalVar%Mass(PONr, Index) = Me%ExternalVar%Mass(PONr, Index) &
+ Mortality * Me%Bact%NC_Ratio &
* Me%DTDay
Me%ExternalVar%Mass(PON, Index) = Me%ExternalVar%Mass(PON, Index) &
- BacteriaPONUptakeM &
* Me%DTDay
Me%ExternalVar%Mass(DONnr, Index) = Me%ExternalVar%Mass(DONnr, Index) &
- BacteriaDONUptakeM &
* Me%DTDay
end subroutine ComputeBenthicBact
-
- MOHID Developer
- Posts: 553
- Joined: Thu Jan 01, 1970 00:00
- Location: Instituto Superior Técnico - Technical University of Lisbon
- Contact:
-
- MOHID Insider
- Posts: 75
- Joined: Thu Jan 01, 1970 00:00
-
- MOHID Developer
- Posts: 553
- Joined: Thu Jan 01, 1970 00:00
- Location: Instituto Superior Técnico - Technical University of Lisbon
- Contact:
Who is online
Users browsing this forum: No registered users and 1 guest