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

Last change on this file since 336 was 274, checked in by opalod, 19 years ago

nemo_v1_update_005:RB: update headers for the TOP component.

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