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

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

CL + CE : NEMO TRC_SRC start

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