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

Last change on this file since 339 was 339, checked in by opalod, 18 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: 4.6 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,zdenom2
46      REAL zfact,zstep,zinano,zidiat,zipoc
47C
48C    Time step duration for biology
49C    ------------------------------
50C
51        zstep=rfact2/rjjss
52C
53
54        DO jk = 1,jpkm1
55          DO jj = 1,jpj
56            DO ji = 1,jpi
57C
58        compaz = max((trn(ji,jj,jk,jpzoo)-1.E-9),0.)
59        zfact=zstep*tgfunc(ji,jj,jk)*compaz
60#    if defined key_off_degrad
61     &    *facvol(ji,jj,jk)
62#    endif
63C
64C     Respiration rates of both zooplankton
65C     -------------------------------------
66C
67        respz(ji,jj,jk) = resrat*zfact
68     &    *(1.+3.*nitrfac(ji,jj,jk))
69     &    *trn(ji,jj,jk,jpzoo)/(xkmort+trn(ji,jj,jk,jpzoo))
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          tortz(ji,jj,jk) = mzrat*1E6*zfact*trn(ji,jj,jk,jpzoo)
77C
78            END DO
79          END DO
80        END DO
81C
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        compadi2=min(compadi,5.E-7)
88        compaph = max((trn(ji,jj,jk,jpphy)-2E-7),0.)
89        compapoc=max((trn(ji,jj,jk,jppoc)-1E-8),0.)
90C
91C     Microzooplankton grazing
92C     ------------------------
93C
94          zdenom2 = 1./(zprefp*compaph
95     &      +zprefc*compapoc+zprefd*compadi2+rtrn)
96
97          graze = grazrat*zstep*tgfunc(ji,jj,jk)
98     &      *trn(ji,jj,jk,jpzoo)
99#    if defined key_off_degrad
100     &      *facvol(ji,jj,jk)
101#    endif
102
103          zinano=zprefp*compaph*zdenom2
104          zipoc=zprefc*compapoc*zdenom2
105          zidiat=zprefd*compadi2*zdenom2
106
107          zdenom = 1./(xkgraz+zinano*compaph
108     &      +zipoc*compapoc+zidiat*compadi2)
109
110          grazp(ji,jj,jk) = graze*zinano*compaph*zdenom
111          grazm(ji,jj,jk) = graze*zipoc*compapoc*zdenom
112          grazsd(ji,jj,jk) = graze*zidiat*compadi2*zdenom
113
114          grazpf(ji,jj,jk) = grazp(ji,jj,jk)*
115     &      trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn)
116
117          grazpch(ji,jj,jk) = grazp(ji,jj,jk)*
118     &      trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn)
119
120          grazmf(ji,jj,jk) = grazm(ji,jj,jk)
121     &      *trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn)
122
123          grazsf(ji,jj,jk) = grazsd(ji,jj,jk)
124     &      *trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn)
125
126          grazss(ji,jj,jk) = grazsd(ji,jj,jk)
127     &      *trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn)
128
129          grazsch(ji,jj,jk) = grazsd(ji,jj,jk)
130     &      *trn(ji,jj,jk,jpdch)/(trn(ji,jj,jk,jpdia)+rtrn)
131C
132            END DO
133          END DO
134        END DO
135C
136        DO jk = 1,jpkm1
137          DO jj = 1,jpj
138            DO ji = 1,jpi
139C
140C    Various remineralization and excretion terms
141C    --------------------------------------------
142C
143          grarem(ji,jj,jk)=(grazp(ji,jj,jk)+grazm(ji,jj,jk)
144     &      +grazsd(ji,jj,jk))*(1.-epsher-unass)
145
146          grafer(ji,jj,jk)=(grazpf(ji,jj,jk)+grazsf(ji,jj,jk)
147     &      +grazmf(ji,jj,jk))*(1.-epsher-unass)
148     &      +(grazm(ji,jj,jk)*max((trn(ji,jj,jk,jpsfe)/
149     &      (trn(ji,jj,jk,jppoc)+rtrn)-ferat3),0.)
150     &      +grazp(ji,jj,jk)*max((trn(ji,jj,jk,jpnfe)/
151     &      (trn(ji,jj,jk,jpphy)+rtrn)-ferat3),0.)
152     &      +grazsd(ji,jj,jk)*max((trn(ji,jj,jk,jpdfe)/
153     &      (trn(ji,jj,jk,jpdia)+rtrn)-ferat3),0.))*epsher
154
155          grapoc(ji,jj,jk)=(grazp(ji,jj,jk)+grazm(ji,jj,jk)
156     &      +grazsd(ji,jj,jk))*unass
157C
158              END DO
159            END DO
160          END DO
161C
162#endif
163      RETURN
164      END
Note: See TracBrowser for help on using the repository browser.