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.
p4zmicro.F in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/p4zmicro.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: 4.9 KB
Line 
1CDIR$ LIST
2      SUBROUTINE p4zmicro
3#if defined key_passivetrc && defined key_trc_pisces
4CCC---------------------------------------------------------------------
5CCC
6CCC           ROUTINE p4zmicro : PISCES MODEL
7CCC           *******************************
8CCC
9CCC  PURPOSE :
10CCC  ---------
11CCC         Compute the sources/sinks for microzooplankton
12CCC
13CC   INPUT :
14CC   -----
15CC      argument
16CC              None
17CC      common
18CC              all the common defined in opa
19CC
20CC
21CC   OUTPUT :                   : no
22CC   ------
23CC
24CC   EXTERNAL :
25CC   --------
26CC              None
27CC
28CC   MODIFICATIONS:
29CC   --------------
30CC      original  : O. Aumont (2004)
31CC----------------------------------------------------------------------
32CC parameters and commons
33CC ======================
34CDIR$ NOLIST
35      USE oce_trc
36      USE trp_trc
37      USE sms
38      IMPLICIT NONE
39CDIR$ LIST
40CC----------------------------------------------------------------------
41CC local declarations
42CC ==================
43      INTEGER ji, jj, jk
44      REAL compadi,compadi2,compaz,compaph,compapoc
45      REAL graze,zdenom
46      REAL zinano,zidiat,zipoc
47
48C
49
50        DO jk = 1,jpkm1
51          DO jj = 1,jpj
52            DO ji = 1,jpi
53C
54        compaz = max((trn(ji,jj,jk,jpzoo)-1.E-9),0.)
55C
56C     Respiration rates of both zooplankton
57C     -------------------------------------
58C
59        respz(ji,jj,jk) = resrat*rfact2/rjjss
60     &    *trn(ji,jj,jk,jpzoo)/(xkmort+trn(ji,jj,jk,jpzoo))
61     &    *compaz*tmask(ji,jj,jk)
62#    if defined key_off_degrad
63     &    *facvol(ji,jj,jk)
64#    endif
65C
66C     Zooplankton mortality. A square function has been selected with
67C     no real reason except that it seems to be more stable and may
68C     mimic predation.
69C     ---------------------------------------------------------------
70C
71          tortz(ji,jj,jk) = mzrat*rfact2*1E6/rjjss*tgfunc(ji,jj,jk)
72     &      *compaz*trn(ji,jj,jk,jpzoo)*tmask(ji,jj,jk)
73#    if defined key_off_degrad
74     &      *facvol(ji,jj,jk)
75#    endif
76            END DO
77          END DO
78        END DO
79C
80        DO jk = 1,jpkm1
81          DO jj = 1,jpj
82            DO ji = 1,jpi
83C
84        compadi = max((trn(ji,jj,jk,jpdia)-1E-8),0.)
85        compadi2=min(compadi,2.E-6)
86        compaph = max((trn(ji,jj,jk,jpphy)-1E-8),0.)
87        compapoc=max((trn(ji,jj,jk,jppoc)-1E-9),0.)
88C
89C     Microzooplankton grazing
90C     ------------------------
91C
92          graze = grazrat*rfact2/rjjss*tmask(ji,jj,jk)
93     &      *tgfunc(ji,jj,jk)
94#    if defined key_off_degrad
95     &      *facvol(ji,jj,jk)
96#    endif
97          zdenom = 1./(xkgraz+zprefp*compaph
98     &      +zprefc*trn(ji,jj,jk,jppoc)+zprefd*compadi2)
99
100          zinano=zprefp*trn(ji,jj,jk,jpphy)/
101     &      (zprefp*trn(ji,jj,jk,jpphy)
102     &      +zprefc*trn(ji,jj,jk,jppoc)
103     &      +zprefd*trn(ji,jj,jk,jpdia)+rtrn)
104
105          zipoc=zprefc*trn(ji,jj,jk,jppoc)/
106     &      (zprefp*trn(ji,jj,jk,jpphy)
107     &      +zprefc*trn(ji,jj,jk,jppoc)
108     &      +zprefd*trn(ji,jj,jk,jpdia)+rtrn)
109
110          zidiat=zprefd*trn(ji,jj,jk,jpdia)/
111     &      (zprefp*trn(ji,jj,jk,jpphy)
112     &      +zprefc*trn(ji,jj,jk,jppoc)
113     &      +zprefd*trn(ji,jj,jk,jpdia)+rtrn)
114
115          grazp(ji,jj,jk) = graze*zinano*compaph*zdenom
116     &      *trn(ji,jj,jk,jpzoo)
117
118          grazpf(ji,jj,jk) = grazp(ji,jj,jk)*
119     &      trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
120
121          grazpch(ji,jj,jk) = grazp(ji,jj,jk)*
122     &      trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn)
123
124          grazm(ji,jj,jk) = graze*zipoc*compapoc
125     &      *zdenom*trn(ji,jj,jk,jpzoo)
126
127          grazmf(ji,jj,jk) = grazm(ji,jj,jk)
128     &      *trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
129
130          grazsd(ji,jj,jk) = graze*zidiat*compadi2*zdenom
131     &      *trn(ji,jj,jk,jpzoo)
132
133          grazsf(ji,jj,jk) = grazsd(ji,jj,jk)
134     &      *trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
135
136          grazss(ji,jj,jk) = grazsd(ji,jj,jk)
137     &      *trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn)
138
139          grazsch(ji,jj,jk) = grazsd(ji,jj,jk)
140     &      *trn(ji,jj,jk,jpdch)/(trn(ji,jj,jk,jpdia)+rtrn)
141C
142            END DO
143          END DO
144        END DO
145C
146        DO jk = 1,jpkm1
147          DO jj = 1,jpj
148            DO ji = 1,jpi
149C
150C    Various remineralization and excretion terms
151C    --------------------------------------------
152C
153          grarem(ji,jj,jk)=(grazp(ji,jj,jk)+grazm(ji,jj,jk)
154     &      +grazsd(ji,jj,jk))*(1.-epsher-unass)
155
156          grafer(ji,jj,jk)=(grazpf(ji,jj,jk)+grazsf(ji,jj,jk)
157     &      +grazmf(ji,jj,jk))*(1.-epsher-unass)
158     &      +(grazm(ji,jj,jk)*max((trn(ji,jj,jk,jpsfe)/
159     &      (trn(ji,jj,jk,jppoc)+rtrn)-ferat3),0.)
160     &      +grazp(ji,jj,jk)*max((trn(ji,jj,jk,jpnfe)/
161     &      (trn(ji,jj,jk,jpphy)+rtrn)-ferat3),0.)
162     &      +grazsd(ji,jj,jk)*max((trn(ji,jj,jk,jpdfe)/
163     &      (trn(ji,jj,jk,jpdia)+rtrn)-ferat3),0.))*epsher
164
165          grapoc(ji,jj,jk)=(grazp(ji,jj,jk)+grazm(ji,jj,jk)
166     &      +grazsd(ji,jj,jk))*unass
167C
168              END DO
169            END DO
170          END DO
171C
172#endif
173      RETURN
174      END
175
Note: See TracBrowser for help on using the repository browser.