New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
p4zmeso.F in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/p4zmeso.F @ 726

Last change on this file since 726 was 726, checked in by cetlod, 16 years ago

correction of flux feeding formulation, see ticket:15

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 6.6 KB
Line 
1
2CCC $Header: /home/opalod/NEMOCVSROOT/NEMO/TOP_SRC/SMS/p4zmeso.F,v 1.8 2007/10/12 09:32:52 opalod Exp $ 
3CCC  TOP 1.0 , LOCEAN-IPSL (2005) 
4C This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
5C ---------------------------------------------------------------------------
6CDIR$ LIST
7      SUBROUTINE p4zmeso
8#if defined key_passivetrc && defined key_trc_pisces
9CCC---------------------------------------------------------------------
10CCC
11CCC            ROUTINE p4zmeso : PISCES MODEL
12CCC            ******************************
13CCC
14CCC  PURPOSE :
15CCC  ---------
16CCC         Compute the sources/sinks for mesozooplankton
17CCC
18CC   METHOD :
19CC   -------
20CC     
21CC
22CC   INPUT :
23CC   -----
24CC      argument
25CC              None
26CC      common
27CC              all the common defined in opa
28CC
29CC
30CC   OUTPUT :                   : no
31CC   ------
32CC
33CC   EXTERNAL :
34CC   --------
35CC          None
36CC
37CC   MODIFICATIONS:
38CC   --------------
39CC      original  : O. Aumont (2002)
40CC----------------------------------------------------------------------
41CC parameters and commons
42CC ======================
43CDIR$ NOLIST
44      USE oce_trc
45      USE trp_trc
46      USE sms
47      IMPLICIT NONE
48CDIR$ LIST
49CC----------------------------------------------------------------------
50CC local declarations
51CC ==================
52      INTEGER ji, jj, jk
53      REAL compadi,compaph,compapoc,compaz
54      REAL zfact,zstep,compam,zdenom,graze2
55C
56C
57C
58C     Time step duration for biology
59C     ------------------------------
60C
61        zstep=rfact2/rjjss
62C
63        DO jk = 1,jpkm1
64          DO jj = 1,jpj
65            DO ji = 1,jpi
66C
67        compam=max((trn(ji,jj,jk,jpmes)-1.E-9),0.)
68        zfact=zstep*tgfunc(ji,jj,jk)*compam
69#    if defined key_off_degrad
70     &    *facvol(ji,jj,jk)
71#    endif
72C
73C     Respiration rates of both zooplankton
74C     -------------------------------------
75C
76        respz2(ji,jj,jk) = resrat2*zfact
77     &    *(1.+3.*nitrfac(ji,jj,jk))
78     &    *trn(ji,jj,jk,jpmes)/(xkmort+trn(ji,jj,jk,jpmes))
79C
80C     Zooplankton mortality. A square function has been selected with
81C     no real reason except that it seems to be more stable and may
82C     mimic predation.
83C     ---------------------------------------------------------------
84C
85        tortz2(ji,jj,jk) = mzrat2*1E6*zfact*trn(ji,jj,jk,jpmes)
86C
87            END DO
88          END DO
89        END DO
90
91        DO jk = 1,jpkm1
92          DO jj = 1,jpj
93            DO ji = 1,jpi
94C
95        compadi = max((trn(ji,jj,jk,jpdia)-1E-8),0.)
96        compaz = max((trn(ji,jj,jk,jpzoo)-1.E-8),0.)
97        compaph = max((trn(ji,jj,jk,jpphy)-2E-7),0.)
98        compapoc=max((trn(ji,jj,jk,jppoc)-1E-8),0.)
99C
100C     Microzooplankton grazing
101C     ------------------------
102C
103        zdenom=1./(xkgraz2+xprefc*trn(ji,jj,jk,jpdia)
104     &    +xprefz*trn(ji,jj,jk,jpzoo)
105     &    +xprefp*trn(ji,jj,jk,jpphy)
106     &    +xprefpoc*trn(ji,jj,jk,jppoc))
107
108        graze2 = grazrat2*zstep*Tgfunc2(ji,jj,jk)*zdenom
109     &    *trn(ji,jj,jk,jpmes)
110#    if defined key_off_degrad
111     &    *facvol(ji,jj,jk)
112#    endif
113
114        grazd(ji,jj,jk) = graze2*xprefc*compadi
115        grazz(ji,jj,jk) = graze2*xprefz*compaz
116        grazn(ji,jj,jk) = graze2*xprefp*compaph
117        grazpoc(ji,jj,jk) = graze2*xprefpoc*compapoc
118
119        graznf(ji,jj,jk) = grazn(ji,jj,jk)
120     &    *trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
121
122        graznch(ji,jj,jk) = grazn(ji,jj,jk)
123     &    *trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn)
124
125        grazs(ji,jj,jk) = grazd(ji,jj,jk)
126     &    *trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn)
127
128        grazf(ji,jj,jk) = grazd(ji,jj,jk)
129     &    *trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
130
131        grazdch(ji,jj,jk) = grazd(ji,jj,jk)
132     &    *trn(ji,jj,jk,jpdch)/(trn(ji,jj,jk,jpdia)+rtrn)
133
134        grazpof(ji,jj,jk) = grazpoc(ji,jj,jk)
135     &    *trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
136C
137            END DO
138          END DO
139        END DO
140
141        DO jk = 1,jpkm1
142          DO jj = 1,jpj
143            DO ji = 1,jpi
144C
145C    Mesozooplankton flux feeding on GOC
146C    ----------------------------------
147C
148#if ! defined key_trc_kriest
149        grazffe(ji,jj,jk) = 5E3*zstep*wsbio4(ji,jj,jk)
150     &    *tgfunc2(ji,jj,jk)*trn(ji,jj,jk,jpgoc)*trn(ji,jj,jk,jpmes)
151#    if defined key_off_degrad
152     &    *facvol(ji,jj,jk)
153#    endif
154
155        grazfff(ji,jj,jk) = grazffe(ji,jj,jk)
156     &    *trn(ji,jj,jk,jpbfe)/(trn(ji,jj,jk,jpgoc)+rtrn)
157#else
158C KRIEST3
159        grazffe(ji,jj,jk) = 0.5*1.3E-2/5.5E-7*0.3*zstep*wsbio3(ji,jj,jk)
160     &    *tgfunc(ji,jj,jk)*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpmes)
161     &    /(trn(ji,jj,jk,jppoc)*1E7+0.1)
162#    if defined key_off_degrad
163     &    *facvol(ji,jj,jk)
164#    endif
165
166
167C        grazffe(ji,jj,jk) = 5E3*zstep*wsbio3(ji,jj,jk)
168C     &    *tgfunc2(ji,jj,jk)*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpmes)
169C#    if defined key_off_degrad
170C     &    *facvol(ji,jj,jk)
171C#    endif
172        grazfff(ji,jj,jk) = grazffe(ji,jj,jk)
173     &    *trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
174#endif
175
176
177C
178            END DO
179          END DO
180        END DO
181
182        DO jk = 1,jpkm1
183          DO jj = 1,jpj
184            DO ji = 1,jpi
185C
186C    Mesozooplankton efficiency
187C    --------------------------
188C
189        grarem2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk)
190     &    +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))
191     &    *(1.-epsher2-unass2)
192#if ! defined key_trc_kriest
193        grafer2(ji,jj,jk)=(grazf(ji,jj,jk)+graznf(ji,jj,jk)
194     &    +grazz(ji,jj,jk)*ferat3+grazpof(ji,jj,jk)
195     &    +grazfff(ji,jj,jk))*(1.-epsher2-unass2)
196     &    +epsher2*(grazd(ji,jj,jk)*max(
197     &    (trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
198     &    -ferat3),0.)+grazn(ji,jj,jk)*max(
199     &    (trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
200     &    -ferat3),0.)+grazpoc(ji,jj,jk)*max(
201     &    (trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
202     &    -ferat3),0.)+grazffe(ji,jj,jk)*max(
203     &    (trn(ji,jj,jk,jpbfe)/(trn(ji,jj,jk,jpgoc)+rtrn)
204     &    -ferat3),0.))
205#else
206        grafer2(ji,jj,jk)=(grazf(ji,jj,jk)+graznf(ji,jj,jk)
207     &    +grazz(ji,jj,jk)*ferat3+grazpof(ji,jj,jk)
208     &    +grazfff(ji,jj,jk))*(1.-epsher2-unass2)
209     &    +epsher2*(grazd(ji,jj,jk)*max(
210     &    (trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
211     &    -ferat3),0.)+grazn(ji,jj,jk)*max(
212     &    (trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
213     &    -ferat3),0.)+grazpoc(ji,jj,jk)*max(
214     &    (trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
215     &    -ferat3),0.)+grazffe(ji,jj,jk)*max(
216     &    (trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
217     &    -ferat3),0.))
218#endif
219        grapoc2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk)
220     &    +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))*unass2
221
222            END DO
223          END DO
224        END DO
225C
226#endif
227      RETURN
228      END
Note: See TracBrowser for help on using the repository browser.