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 @ 433

Last change on this file since 433 was 341, checked in by opalod, 19 years ago

nemo_v1_update_028 : CT : add missing headers

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.3 KB
Line 
1
2CCC $Header$ 
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        grazffe(ji,jj,jk) = 5E3*zstep*wsbio4(ji,jj,jk)
149     &    *tgfunc2(ji,jj,jk)*trn(ji,jj,jk,jpgoc)*trn(ji,jj,jk,jpmes)
150#    if defined key_off_degrad
151     &    *facvol(ji,jj,jk)
152#    endif
153
154        grazfff(ji,jj,jk) = grazffe(ji,jj,jk)
155     &    *trn(ji,jj,jk,jpbfe)/(trn(ji,jj,jk,jpgoc)+rtrn)
156C
157            END DO
158          END DO
159        END DO
160
161        DO jk = 1,jpkm1
162          DO jj = 1,jpj
163            DO ji = 1,jpi
164C
165C    Mesozooplankton efficiency
166C    --------------------------
167C
168        grarem2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk)
169     &    +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))
170     &    *(1.-epsher2-unass2)
171
172        grafer2(ji,jj,jk)=(grazf(ji,jj,jk)+graznf(ji,jj,jk)
173     &    +grazz(ji,jj,jk)*ferat3+grazpof(ji,jj,jk)
174     &    +grazfff(ji,jj,jk))*(1.-epsher2-unass2)
175     &    +epsher2*(grazd(ji,jj,jk)*max(
176     &    (trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
177     &    -ferat3),0.)+grazn(ji,jj,jk)*max(
178     &    (trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
179     &    -ferat3),0.)+grazpoc(ji,jj,jk)*max(
180     &    (trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
181     &    -ferat3),0.)+grazffe(ji,jj,jk)*max(
182     &    (trn(ji,jj,jk,jpbfe)/(trn(ji,jj,jk,jpgoc)+rtrn)
183     &    -ferat3),0.))
184
185        grapoc2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk)
186     &    +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))*unass2
187
188            END DO
189          END DO
190        END DO
191C
192#endif
193      RETURN
194      END
Note: See TracBrowser for help on using the repository browser.