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

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

nemo_v1_update_027 : CE + RB + CT : update of SMS routines

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.1 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 zfact,zstep,compam,zdenom,graze2
50C
51C
52C
53C     Time step duration for biology
54C     ------------------------------
55C
56        zstep=rfact2/rjjss
57C
58        DO jk = 1,jpkm1
59          DO jj = 1,jpj
60            DO ji = 1,jpi
61C
62        compam=max((trn(ji,jj,jk,jpmes)-1.E-9),0.)
63        zfact=zstep*tgfunc(ji,jj,jk)*compam
64#    if defined key_off_degrad
65     &    *facvol(ji,jj,jk)
66#    endif
67C
68C     Respiration rates of both zooplankton
69C     -------------------------------------
70C
71        respz2(ji,jj,jk) = resrat2*zfact
72     &    *(1.+3.*nitrfac(ji,jj,jk))
73     &    *trn(ji,jj,jk,jpmes)/(xkmort+trn(ji,jj,jk,jpmes))
74C
75C     Zooplankton mortality. A square function has been selected with
76C     no real reason except that it seems to be more stable and may
77C     mimic predation.
78C     ---------------------------------------------------------------
79C
80        tortz2(ji,jj,jk) = mzrat2*1E6*zfact*trn(ji,jj,jk,jpmes)
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-8),0.)
92        compaph = max((trn(ji,jj,jk,jpphy)-2E-7),0.)
93        compapoc=max((trn(ji,jj,jk,jppoc)-1E-8),0.)
94C
95C     Microzooplankton grazing
96C     ------------------------
97C
98        zdenom=1./(xkgraz2+xprefc*trn(ji,jj,jk,jpdia)
99     &    +xprefz*trn(ji,jj,jk,jpzoo)
100     &    +xprefp*trn(ji,jj,jk,jpphy)
101     &    +xprefpoc*trn(ji,jj,jk,jppoc))
102
103        graze2 = grazrat2*zstep*Tgfunc2(ji,jj,jk)*zdenom
104     &    *trn(ji,jj,jk,jpmes)
105#    if defined key_off_degrad
106     &    *facvol(ji,jj,jk)
107#    endif
108
109        grazd(ji,jj,jk) = graze2*xprefc*compadi
110        grazz(ji,jj,jk) = graze2*xprefz*compaz
111        grazn(ji,jj,jk) = graze2*xprefp*compaph
112        grazpoc(ji,jj,jk) = graze2*xprefpoc*compapoc
113
114        graznf(ji,jj,jk) = grazn(ji,jj,jk)
115     &    *trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
116
117        graznch(ji,jj,jk) = grazn(ji,jj,jk)
118     &    *trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn)
119
120        grazs(ji,jj,jk) = grazd(ji,jj,jk)
121     &    *trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn)
122
123        grazf(ji,jj,jk) = grazd(ji,jj,jk)
124     &    *trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
125
126        grazdch(ji,jj,jk) = grazd(ji,jj,jk)
127     &    *trn(ji,jj,jk,jpdch)/(trn(ji,jj,jk,jpdia)+rtrn)
128
129        grazpof(ji,jj,jk) = grazpoc(ji,jj,jk)
130     &    *trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
131C
132            END DO
133          END DO
134        END DO
135
136        DO jk = 1,jpkm1
137          DO jj = 1,jpj
138            DO ji = 1,jpi
139C
140C    Mesozooplankton flux feeding on GOC
141C    ----------------------------------
142C
143        grazffe(ji,jj,jk) = 5E3*zstep*wsbio4(ji,jj,jk)
144     &    *tgfunc2(ji,jj,jk)*trn(ji,jj,jk,jpgoc)*trn(ji,jj,jk,jpmes)
145#    if defined key_off_degrad
146     &    *facvol(ji,jj,jk)
147#    endif
148
149        grazfff(ji,jj,jk) = grazffe(ji,jj,jk)
150     &    *trn(ji,jj,jk,jpbfe)/(trn(ji,jj,jk,jpgoc)+rtrn)
151C
152            END DO
153          END DO
154        END DO
155
156        DO jk = 1,jpkm1
157          DO jj = 1,jpj
158            DO ji = 1,jpi
159C
160C    Mesozooplankton efficiency
161C    --------------------------
162C
163        grarem2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk)
164     &    +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))
165     &    *(1.-epsher2-unass2)
166
167        grafer2(ji,jj,jk)=(grazf(ji,jj,jk)+graznf(ji,jj,jk)
168     &    +grazz(ji,jj,jk)*ferat3+grazpof(ji,jj,jk)
169     &    +grazfff(ji,jj,jk))*(1.-epsher2-unass2)
170     &    +epsher2*(grazd(ji,jj,jk)*max(
171     &    (trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
172     &    -ferat3),0.)+grazn(ji,jj,jk)*max(
173     &    (trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
174     &    -ferat3),0.)+grazpoc(ji,jj,jk)*max(
175     &    (trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
176     &    -ferat3),0.)+grazffe(ji,jj,jk)*max(
177     &    (trn(ji,jj,jk,jpbfe)/(trn(ji,jj,jk,jpgoc)+rtrn)
178     &    -ferat3),0.))
179
180        grapoc2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk)
181     &    +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))*unass2
182
183            END DO
184          END DO
185        END DO
186C
187#endif
188      RETURN
189      END
Note: See TracBrowser for help on using the repository browser.