Commit 84ed20a5 authored by Dany Dumont's avatar Dany Dumont

Construction d'un nouveau modele biogeochimique bio_gsj, base sur bio_ismer,...

Construction d'un nouveau modele biogeochimique bio_gsj, base sur bio_ismer, comprenant une classe hydrocarbure et une deuxieme classe de bacteries pouvant degrader les hydrocarbures. Le traceur hydrocarbon (hcb) est calque sur le traceur nitrate auquel on a ajoute la possibilite de specifier, via la namelist bio_gsj, une vitesse vertical (settling or rising). Trois fichers namelist sont affectes par ce changement (bio, obs et bio_gsj).
parent 8d24f9ca
......@@ -10,6 +10,7 @@
! 4: Fasham et al. 1990 (7 variables)
! 5: IOW-ERGOM MaBenE version (9 variables)
! 6: ISMER model (9 variables)
! 7: GSJ model (11 variables)
!
! bio_eulerian -> state variables are Eulerian (.true./.false.)
!
......
#$Id$
!-------------------------------------------------------------------------------
! Fasham et al. biological model with modifications by Kuehn and Radach
!
! numc= number of compartments for geobiochemical model
!
! p1_init = initial flagellate concentration [mmol n/m3]
! p2_init = initial diatom concentration [mmol n/m3]
! z1_init = initial micro-zooplakton concentration [mmol n/m3]
! z2_init = initial meso-zooplakton concentration [mmol n/m3]
! b_init = initial bacteria concentration [mmol n/m3]
! d_init = initial detritus concentration [mmol n/m3]
! l_init = initial LDON concentration [mmol n/m3]
! p0 = minimum phytoplankton concentration [mmol n/m3]
! z0 = minimum zooplakton concentration [mmol n/m3]
! b0 = minimum bacteria concentration [mmol n/m3]
! mte = if .true. use temperature-dependent metabolic rates
! ca1 = temp-dependence coeff for p1
! ca2 = temp-dependence coeff for p2
! ch1 = temp-dependence coeff for z1
! ch2 = temp-dependence coeff for z2
! amratio = Mass ratio between p2 and p1
! hmratio = Mass ratio between z2 and z1
! vp1 = maximum flagellate uptake rate by flagellates [1/day]
! vp2 = maximum diatom uptake rate by diatoms [1/day]
! alpha1 = slope of the flagellate PI-curve [m2/(W day)]
! alpha2 = slope of the diatom PI-curve [m2/(W day)]
! inib1 = inhibition slope of the flagellate PI-curve (pos.) [m2/(W day)]
! inib2 = inhibition slope of the PI-curve (pos.) [m2/(W day)]
! kn1 = half sat. constant nitrate uptake by p1 [mmol n/m3]
! ka1 = half sat. constant ammonium uptake by p1 [mmol n/m3]
! kn2 = half sat. constant nitrate uptake by p2 [mmol n/m3]
! ka2 = half sat. constant ammonium uptake by p2 [mmol n/m3]
! mu11 = mortality rate for p1 [1/day]
! mu12 = mortality rate for p2 [1/day]
! k5 = half sat. constant phy. mortality [mmol n/m3]
! gamma = exudation fraction [-]
! w_p1 = settling velocity for p1 [m/day]
! w_p2 = settling velocity for p2 [m/day]
! theta = phytoplancton buoyancy parameter [m3 day/(mmol N)]
! g1max = maximum ingestion rate for z1 [1/day]
! g2max = maximum ingestion rate for z2 [1/day]
! k3 = half saturation constant ingestion [mmol n/m3]
! beta = grazing efficiency [-]
! k6 = half saturation zooplankton loss (z1 & z2) [mmol n/m3]
! mu21 = maximum loss rate for z1 [1/day]
! mu22 = maximum loss rate for z2 [1/day]
! delta = fractional zooplankton loss to LDON (z1 & z2) [-]
! epsi = fractional zooplankton loss to ammonium (z1 & z2) [-]
! r11 = z1 grazing preference on p1 [-]
! r12 = z1 grazing preference on p2 [-]
! r13 = z1 grazing preference on bacteria [-]
! r14 = z1 grazing preference on detritus [-]
! r21 = z2 grazing preference on p1 [-]
! r22 = z2 grazing preference on p2 [-]
! r23 = z2 grazing preference on detritus [-]
! r24 = z2 grazing preference on z1 [-]
! vb = maximum bacterial uptake rate [1/day]
! k4 = half saturation bacterial uptake [mmol n/m3]
! mu3 = bacteria excretion rate [1/day]
! eta = uptake ratio ammonium:LDON [-]
! mu4 = detritus breakdown rate [1/day]
! mu5 = nitrification rate [1/day]
! w_d = detritus settling velocity [m/day]
! kc = attenuation constant for the self shading effect [m**2/mmol N]
!-------------------------------------------------------------------------------
&bio_gsj_nml
numc = 11
p1_init = 0.012
p2_init = 0.012
z1_init = 0.012
z2_init = 0.012
b_init = 0.001
d_init = 0.01
l_init = 0.1
p0 = 0.0001
z0 = 0.0001
b0 = 0.0001
mte = .true.
ca1 = 3.61
ca2 = 14.58
ch1 = 3.265
ch2 = 24.923
amratio = 200
hmratio = 1000
vp1 = 0.02
vp2 = 0.8
alpha1 = 0.02
alpha2 = 0.04
inib1 = 0.0
inib2 = 0.006
kn1 = 1.0
ka1 = 0.8
kn2 = 1.0
ka2 = 0.8
mu11 = 0.05
mu12 = 0.05
k5 = 0.2
gamma = 0.05
w_p1 =-0.38
w_p2 =-0.00
theta = 0.0
w_p1min =-0.01
w_p1max =-0.10
w_p2min =-0.05
w_p2max =-0.38
g1max = 1.0
g2max = 1.0
k3 = 1.0
beta = 0.625
mu21 = 0.3
mu22 = 0.3
k6 = 0.2
delta = 0.1
epsi = 0.70
r11 = 0.55
r12 = 0.30
r13 = 0.05
r14 = 0.10
r21 = 0.50
r22 = 0.30
r23 = 0.05
r24 = 0.15
vb = 0.24
k4 = 0.5
k10 = 0.5
w_h = 100.0
mu3 = 0.03
eta = 0.0
mu4 = 0.02
mu5 = 0.00
w_d = -5.0
kc = 0.03
/
......@@ -63,6 +63,68 @@
SRelaxSurf= 0.
/
!-------------------------------------------------------------------------------
! observed or prescribed potential temperature profiles
!
! t_prof_method -> method to create initial or observed temperature profiles
! 0: no initial values, T-equation is not solved
! 1: use analytically prescribed initial profile
! 2: read profiles at different dates from "t_prof_file"
! and interpolate to GOTM timestep
!
! t_analyt_method -> method to create analytically precribed inital profile
! 1: set profile to constant value s_1
! 2: set "two layer" stratification (see user's guide)
! 3: set profile with constant N^2 (see user's guide)
! This option can only be used toghether with
! s_analyt_method=1 (constant salinity).
!
! z_t1 -> upper layer thickness if t_analyt_method=2
!
! t_1 -> constant temperature if t_analyt_method=1
! upper layer temperature if t_analyt_method=2
! surface temperature if t_analyt_method=3
!
! z_t2 -> depth of top of lower layer if t_analyt_method=2
!
! t_2 -> lower layer temperature if t_analyt_method=2
!
! t_obs_NN -> constant value N^2 corresponding to temperature profile
! if t_analyt_method=3
! t_prof_file -> filename of file with temperature profiles
! if t_prof_method=2
!
! The computed profiles can be relaxed towards observed or prescribed
! profiles with a certain relaxation time. If you do not want relaxation,
! set the relaxation times to 1.e15 (something large). It is possible to choose
! different relaxation times in a surface and bottom layer.
!
! TRelaxTauM -> relaxation time for bulk of the flow
! TRelaxTauB -> relaxation time for bottom layer
! TRelaxTauS -> relaxation time for surface layer
! TRelaxBott -> height of bottom relaxation layer
! (set to 0. if not used)
! TRelaxSurf -> height of surface relaxation layer
! (set to 0. if not used)
!
!-------------------------------------------------------------------------------
&tprofile
t_prof_method= 2
t_analyt_method= 2
z_t1= 25.
t_1= -1.0
z_t2= 35.
t_2= 0.0
t_obs_NN= 2.56e-4
t_prof_file= 'franklin_tprof_ctd.dat'
TRelaxTauM= 1209600.
TRelaxTauB= 1209600.
TRelaxTauS= 1209600.
TRelaxBott= 0.
TRelaxSurf= 0.
/
!-------------------------------------------------------------------------------
! observed or prescribed nitrate profiles
!
......@@ -85,7 +147,6 @@
!
! n_2 -> lower layer nitrate if n_analyt_method=2
!
! n_prof_file -> filename of file with nitrate profiles
! if n_prof_method=2
!
......@@ -172,65 +233,57 @@
/
!-------------------------------------------------------------------------------
! observed or prescribed potential temperature profiles
! observed or prescribed hydrocarbon profiles
!
! t_prof_method -> method to create initial or observed temperature profiles
! 0: no initial values, T-equation is not solved
! hc_prof_method -> method to create initial or observed hydroarbon profiles
! 0: no initial values, N-equation is not solved
! 1: use analytically prescribed initial profile
! 2: read profiles at different dates from "t_prof_file"
! 2: read profiles at different dates from "hc_prof_file"
! and interpolate to GOTM timestep
!
! t_analyt_method -> method to create analytically precribed inital profile
! 1: set profile to constant value s_1
! hc_analyt_method -> method to create analytically precribed inital profile
! 1: set profile to constant value hc_1
! 2: set "two layer" stratification (see user's guide)
! 3: set profile with constant N^2 (see user's guide)
! This option can only be used toghether with
! s_analyt_method=1 (constant salinity).
!
! z_t1 -> upper layer thickness if t_analyt_method=2
! z_hc1 -> upper layer thickness if hc_analyt_method=2
!
! t_1 -> constant temperature if t_analyt_method=1
! upper layer temperature if t_analyt_method=2
! surface temperature if t_analyt_method=3
! hc_1 -> constant nitrate if hc_analyt_method=1
! upper layer nitrate if hc_analyt_method=2
!
! z_t2 -> depth of top of lower layer if t_analyt_method=2
! z_hc2 -> depth of top of lower layer if hc_analyt_method=2
!
! t_2 -> lower layer temperature if t_analyt_method=2
! hc_2 -> lower layer nitrate if hc_analyt_method=2
!
! t_obs_NN -> constant value N^2 corresponding to temperature profile
! if t_analyt_method=3
! t_prof_file -> filename of file with temperature profiles
! if t_prof_method=2
! hc_prof_file -> filename of file with hydrocarbon profiles
! if hc_prof_method=2
!
! The computed profiles can be relaxed towards observed or prescribed
! profiles with a certain relaxation time. If you do not want relaxation,
! set the relaxation times to 1.e15 (something large). It is possible to choose
! different relaxation times in a surface and bottom layer.
!
! TRelaxTauM -> relaxation time for bulk of the flow
! TRelaxTauB -> relaxation time for bottom layer
! TRelaxTauS -> relaxation time for surface layer
! TRelaxBott -> height of bottom relaxation layer
! HCRelaxTauM -> relaxation time for bulk of the flow
! HCRelaxTauB -> relaxation time for bottom layer
! HCRelaxTauS -> relaxation time for surface layer
! HCRelaxBott -> height of bottom relaxation layer
! (set to 0. if not used)
! TRelaxSurf -> height of surface relaxation layer
! HCRelaxSurf -> height of surface relaxation layer
! (set to 0. if not used)
!
!-------------------------------------------------------------------------------
&tprofile
t_prof_method= 2
t_analyt_method= 2
z_t1= 25.
t_1= -1.0
z_t2= 35.
t_2= 0.0
t_obs_NN= 2.56e-4
t_prof_file= 'franklin_tprof_ctd.dat'
TRelaxTauM= 1209600.
TRelaxTauB= 1209600.
TRelaxTauS= 1209600.
TRelaxBott= 0.
TRelaxSurf= 0.
&hcprofile
hc_prof_method= 1
hc_analyt_method= 2
z_hc1= 35.
hc_1= 3.0
z_hc2= 70.
hc_2= 15.0
hc_prof_file= 'hcprof.dat'
HCRelaxTauM= 1.e15
HCRelaxTauB= 1.e15
HCRelaxTauS= 1.e15
HCRelaxBott= 0.
HCRelaxSurf= 0.
/
!-------------------------------------------------------------------------------
......
#$Id: Makefile,v 1.9 2005-08-16 14:38:37 kbk Exp $
#Id: Makefile,v 1.9 2005-08-16 14:38:37 kbk Exp $
#
# Master Makefile for making the GOTM executable.
#
......
......@@ -15,9 +15,11 @@ bio_iow.F90 \
bio_sed.F90 \
bio_fasham.F90 \
bio_ismer.F90 \
bio_gsj.F90 \
bio_save.F90 \
nitrate.F90 \
ammonium.F90
ammonium.F90 \
hydrocarbon.F90
OBJ = \
${LIB}(bio_var.o) \
......@@ -27,11 +29,13 @@ ${LIB}(bio_npzd.o) \
${LIB}(bio_iow.o) \
${LIB}(bio_mab.o) \
${LIB}(bio_ismer.o) \
${LIB}(bio_gsj.o) \
${LIB}(bio_fasham.o) \
${LIB}(bio_sed.o) \
${LIB}(bio_save.o) \
${LIB}(nitrate.o) \
${LIB}(ammonium.o) \
${LIB}(hydrocarbon.o) \
${LIB}(bio.o)
all: ${OBJ}
......
......@@ -172,6 +172,10 @@
do i=1,nlev
amm(i) = cc(9,i)
end do
else if (bio_model.eq.7) then
do i=1,nlev
amm(i) = cc(9,i)
end do
end if
#endif
......
......@@ -30,16 +30,19 @@
use bio_fasham, only : init_bio_fasham,init_var_fasham,var_info_fasham
use bio_fasham, only : light_fasham,do_bio_fasham
!DD
use bio_ismer, only : init_bio_ismer,init_var_ismer,var_info_ismer
use bio_ismer, only : light_ismer,do_bio_ismer
use bio_sed, only : init_bio_sed,init_var_sed,var_info_sed
use bio_gsj, only : init_bio_gsj,init_var_gsj,var_info_gsj
use bio_gsj, only : light_gsj,do_bio_gsj
use bio_sed, only : init_bio_sed,init_var_sed,var_info_sed
use bio_mab, only : init_bio_mab,init_var_mab,var_info_mab
use bio_mab, only : light_mab,surface_fluxes_mab,do_bio_mab
use bio_mab, only : init_bio_mab,init_var_mab,var_info_mab
use bio_mab, only : light_mab,surface_fluxes_mab,do_bio_mab
use output, only: out_fmt,write_results,ts
use output, only: out_fmt,write_results,ts
use util
!
......@@ -314,6 +317,16 @@
call var_info_ismer()
case (7) ! The GSJ model, modified from ISMER
call init_bio_gsj(namlst,'bio_gsj.nml',unit)
call allocate_memory(nlev)
call init_var_gsj(nlev)
call var_info_gsj()
case default
stop "bio: no valid biomodel specified in bio.nml !"
end select
......@@ -409,8 +422,8 @@
! modules
!
! !INTERFACE:
subroutine set_env_bio(nlev,h_,t_,s_,nit_,amm_,rho_,nuh_,rad_,wind_,I_0_, & !CHG3-5
w_,w_adv_ctr_)
subroutine set_env_bio(nlev,h_,t_,s_,nit_,amm_,hcb_,rho_,nuh_,rad_,wind_, &
I_0_,w_,w_adv_ctr_)
!
! !DESCRIPTION:
!
......@@ -423,8 +436,9 @@
REALTYPE, intent(in) :: nuh_(0:nlev)
REALTYPE, intent(in) :: t_(0:nlev)
REALTYPE, intent(in) :: s_(0:nlev)
REALTYPE, intent(in) :: nit_(0:nlev) !CHG3
REALTYPE, intent(in) :: amm_(0:nlev) !CHG5
REALTYPE, intent(in) :: nit_(0:nlev)
REALTYPE, intent(in) :: amm_(0:nlev)
REALTYPE, intent(in) :: hcb_(0:nlev)
REALTYPE, intent(in) :: rho_(0:nlev)
REALTYPE, intent(in) :: rad_(0:nlev)
REALTYPE, intent(in) :: wind_
......@@ -443,9 +457,10 @@
h = h_
t = t_
s = s_
nit = nit_ !CHG3
amm = amm_ !CHG5
nit = nit_
amm = amm_
rho = rho_
hcb = hcb_
nuh = nuh_
rad = rad_
wind = wind_
......@@ -565,7 +580,19 @@
if (bio_eulerian) then
do j=1,numcc
if (j==1 .and. bio_model==6) then
if (j==1 .and. bio_model==7) then
do i=1,nlev
cc(j,i) = nit(i)
end do
else if (j==9 .and. bio_model==7) then
do i=1,nlev
cc(j,i) = amm(i)
end do
else if (j==10 .and. bio_model==7) then
do i=1,nlev
cc(j,i) = hcb(i)
end do
else if (j==1 .and. bio_model==6) then
do i=1,nlev
cc(j,i) = nit(i)
end do
......@@ -679,6 +706,9 @@
case (6)
call light_ismer(nlev,bioshade_feedback)
call ode_solver(ode_method,numc,nlev,dt_eff,cc,do_bio_ismer)
case (7)
call light_gsj(nlev,bioshade_feedback)
call ode_solver(ode_method,numc,nlev,dt_eff,cc,do_bio_gsj)
end select
end do
......@@ -772,6 +802,7 @@
if (allocated(s)) deallocate(s)
if (allocated(nit)) deallocate(nit) !CHG3
if (allocated(amm)) deallocate(amm) !CHG5
if (allocated(hcb)) deallocate(hcb)
if (allocated(rho)) deallocate(rho)
if (allocated(rad)) deallocate(rad)
if (allocated(w)) deallocate(w)
......@@ -892,6 +923,12 @@
allocate(aprof(0:nlev),stat=rc) !CHG5
if (rc /= 0) stop 'init_bio(): Error allocating (aprof)'
allocate(hcb(0:nlev),stat=rc)
if (rc /= 0) stop 'init_bio(): Error allocating (hcb)'
allocate(hcprof(0:nlev),stat=rc)
if (rc /= 0) stop 'init_bio(): Error allocating (hcprof)'
allocate(rho(0:nlev),stat=rc)
if (rc /= 0) stop 'init_bio(): Error allocating (rho)'
......
This diff is collapsed.
......@@ -53,6 +53,8 @@
REALTYPE, dimension(:), allocatable :: nprof !CHG3
REALTYPE, dimension(:), allocatable :: amm !CHG5
REALTYPE, dimension(:), allocatable :: aprof !CHG5
REALTYPE, dimension(:), allocatable :: hcb
REALTYPE, dimension(:), allocatable :: hcprof
REALTYPE, dimension(:), allocatable :: rho
REALTYPE, dimension(:), allocatable :: nuh
REALTYPE, dimension(:), allocatable :: w
......
!$Id: nitrate.F90,v 1.11 2007-01-06 11:49:15 kbk Exp $
#include"cppdefs.h"
!-----------------------------------------------------------------------
!BOP
!
! !ROUTINE: The hydrocarbon equation \label{sec:hydrocarbon}
!
! !INTERFACE:
subroutine hydrocarbon(nlev,dt,cnpar,nus,gams,cc)
!
! !DESCRIPTION:
! This subroutine computes the balance of nitrate in the form
! \begin{equation}
! \label{SEq}
! \dot{S}
! = {\cal D}_S
! - \frac{1}{\tau^S_R}(S-S_{obs})
! \comma
! \end{equation}
! where $\dot{S}$ denotes the material derivative of the nitrate $N$, and
! ${\cal D}_N$ is the sum of the turbulent and viscous transport
! terms modelled according to
! \begin{equation}
! \label{DN}
! {\cal D}_N
! = \frstder{z}
! \left(
! \left( \nu^N_t + \nu^N \right) \partder{N}{z} - \tilde{\Gamma}_N
! \right)
! \point
! \end{equation}
! In this equation, $\nu^N_t$ and $\nu^N$ are the turbulent and
! molecular diffusivities of nitrate, respectively,
! and $\tilde{\Gamma}_N$
! denotes the non-local flux of nitrate, see
! \sect{sec:turbulenceIntro}. In the current version of GOTM,
! we set $\nu^N_t = \nu^\N$ for simplicity.
!
! Horizontal advection is optionally
! included (see {\tt obs.nml}) by means of prescribed
! horizontal gradients $\partial_xN$ and $\partial_yN$ and
! calculated horizontal mean velocities $U$ and $V$.
! Relaxation with the time scale $\tau^N_R$
! towards a precribed (changing in time)
! profile $N_{obs}$ is possible.
! Inner sources or sinks are not considered.
! The surface freshwater flux is given by means of the precipitation
! - evaporation data read in as $P-E$ through the {\tt airsea.nml} namelist:
! \begin{equation}
! \label{S_sbc}
! {\cal D}_S = S (P-E),
! \qquad \mbox{at } z=\zeta,
! \end{equation}
! with $P-E$ given as a velocity (note that ${\cal D}_S$ is the flux in the
! direction of $z$, and thus positive for a \emph{loss} of nitrate) .
! Diffusion is numerically treated implicitly,
! see equations (\ref{sigmafirst})-(\ref{sigmalast}).
! The tri-diagonal matrix is solved then by a simplified Gauss elimination.
! Vertical advection is included, and it must be non-conservative,
! which is ensured by setting the local variable {\tt adv\_mode=0},
! see section \ref{sec:advectionMean} on page \pageref{sec:advectionMean}.
!
! !USES:
use meanflow, only: avmolhc !CHG3
use meanflow, only: h,u,v,w,hcb,avh
! use observations, only: dndx,dndy,n_adv !CHG3
use observations, only: w_adv_discr,w_adv_method
use observations, only: hcprof,HCRelaxTau !CHG3
use airsea, only: p_e
use util, only: Dirichlet,Neumann
use util, only: oneSided,zeroDivergence
use bio_var, only: bio_model,numc,ws
IMPLICIT NONE
!
! !INPUT PARAMETERS:
! number of vertical layers
integer, intent(in) :: nlev
! time step (s)
REALTYPE, intent(in) :: dt
! numerical "implicitness" parameter
REALTYPE, intent(in) :: cnpar
! diffusivity of nitrate (m^2/s) (!CHG3 same as salinity)
REALTYPE, intent(in) :: nus(0:nlev)
! non-local salinity flux (psu m/s)
REALTYPE, intent(in) :: gams(0:nlev)
! nitrate concentration after bio loop
!DD Not independent of the bio model, only works with 7 compartments model (Fasham)
! REALTYPE, intent(in), optional :: cc(1:10,0:nlev) !CHG3
REALTYPE, intent(in), optional :: cc(1:numc,0:nlev) !CHG3
!
! !REVISION HISTORY:
! Original author(s): Dany Dumont (dany_dumont@ete.inrs.ca)
!
! $Log: nitrate.F90,v $
! Creation 1.0 2008-06-11 14:27:00 dd
! based on salinity.F90
!
!EOP
!
! !LOCAL VARIABLES:
integer :: adv_mode=0
integer :: posconc=1
integer :: i
integer :: DiffBcup,DiffBcdw
integer :: AdvBcup,AdvBcdw
REALTYPE :: DiffSup,DiffSdw
REALTYPE :: AdvSup,AdvSdw
REALTYPE :: Lsour(0:nlev)
REALTYPE :: Qsour(0:nlev)
!
!-----------------------------------------------------------------------
!BOC
!
! set boundary conditions
DiffBcup = Neumann
DiffBcdw = Neumann
DiffSup = -1.*hcb(nlev)*p_e
DiffSdw = _ZERO_
AdvBcup = zeroDivergence
AdvBcdw = oneSided
AdvSup = _ZERO_
AdvSdw = _ZERO_
! compute total diffusivity
do i=0,nlev
avh(i)=nus(i)+avmolhc
end do
! add contributions to source term
Lsour=_ZERO_
Qsour=_ZERO_
do i=1,nlev
! from non-local turbulence
#ifdef NONLOCAL
Qsour(i) = Qsour(i) - ( gams(i) - gams(i-1) )/h(i)
#endif
end do
! ... and from lateral advection
! if (n_adv) then
! do i=1,nlev
! Qsour(i) = Qsour(i) - u(i)*dndx(i) - v(i)*dndy(i) !CHG3
! end do
! end if
! redefinir nit apres un cyle bio
#ifdef BIO
if (bio_model.eq.7) then
do i=1,nlev
hcb(i) = cc(10,i)
end do
end if
#endif
! do advection due to settling or rising
call adv_center(nlev,dt,h,h,ws(10,:),AdvBcup,AdvBcdw, &
_ZERO_,_ZERO_,w_adv_discr,adv_mode,hcb)
! do advection step
if (w_adv_method .ne. 0) then
call adv_center(nlev,dt,h,h,w,AdvBcup,AdvBcdw, &
AdvSup,AdvSdw,w_adv_discr,adv_mode,hcb)
end if
! do diffusion step
call diff_center(nlev,dt,cnpar,posconc,h,DiffBcup,DiffBcdw, &
DiffSup,DiffSdw,avh,LSour,Qsour,HCRelaxTau,hcprof,hcb)
return
end subroutine hydrocarbon
!EOC
!-----------------------------------------------------------------------
! Copyright by the GOTM-team under the GNU Public License - www.gnu.org
!-----------------------------------------------------------------------
......@@ -174,7 +174,11 @@
do i=1,nlev
nit(i) = cc(5,i)
end do
else if (bio_model.eq.6) then
else if (bio_model.eq.6) then