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

source: trunk/NEMO/TOP_SRC/SMS/p4zopt.F @ 262

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

nemo_v1_update_005:RB+OA: Update and rewritting of (part of) 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: 6.8 KB
Line 
1CDIR$ LIST
2      SUBROUTINE p4zopt
3#if defined key_passivetrc && defined key_trc_pisces
4CCC---------------------------------------------------------------------
5CCC
6CCC                       ROUTINE p4zopt
7CCC                     *****************
8CCC
9CCC  PURPOSE :
10CCC  ---------
11CCC         Compute the light availability in the water column
12CCC         depending on the depth and the chlorophyll concentration
13CCC
14CC   METHOD :
15CC   -------
16CC     
17CC
18CC   INPUT :
19CC   -----
20CC      argument
21CC              None
22CC      common
23CC              all the common defined in opa
24CC
25CC
26CC   OUTPUT :                   : no
27CC   ------
28CC
29CC   WORKSPACE :
30CC   ---------
31CC
32CC   EXTERNAL :
33CC   --------
34CC
35CC   MODIFICATIONS:
36CC   --------------
37CC      original  : O. Aumont (2002)
38CC----------------------------------------------------------------------
39CC parameters and commons
40CC ======================
41      USE oce_trc
42      USE trp_trc
43      USE sms
44#include "domzgr_substitute.h90"
45CC----------------------------------------------------------------------
46CC local declarations
47CC ==================
48      INTEGER ji, jj, jk, mrgb
49      REAL xchl,ekg,ekr,ekb,xlim1,xlim2,xlim3,xlim4
50      REAL parlux,e1(jpi,jpj,jpk),e2(jpi,jpj,jpk),e3(jpi,jpj,jpk)
51      REAL zdepmoy(jpi,jpj)
52      REAL e3lum(jpi,jpj,jpk),e4lum(jpi,jpj,jpk)
53      REAL e5lum(jpi,jpj,jpk),etmp(jpi,jpj)
54      REAL e6lum(jpi,jpj,jpk)
55
56C     Initialisation of variables used to compute PAR
57C     -----------------------------------------------
58C
59        e1     = 0.
60        e2     = 0.
61        e3     = 0.
62        e3lum  = 0.
63        e4lum  = 0.
64        e5lum  = 0.
65        e6lum  = 0.
66        etot   = 0.
67        etot3  = 0.
68        parlux = 0.43/3.
69C
70        DO jj = 1,jpj
71          DO ji = 1,jpi
72C
73C  Computation of a variable par fraction
74C
75        e1(ji,jj,1)=parlux*qsr(ji,jj)
76        e2(ji,jj,1)=parlux*qsr(ji,jj)
77        e3(ji,jj,1)=parlux*qsr(ji,jj)
78        e3lum(ji,jj,1)=parlux*qsr(ji,jj)
79        e4lum(ji,jj,1)=parlux*qsr(ji,jj)
80        e5lum(ji,jj,1)=parlux*qsr(ji,jj)
81        e6lum(ji,jj,1)=1.-3.*parlux*qsr(ji,jj)
82C
83          END DO
84        END DO
85
86C
87C  Tuning of the iron concentration to a minimum
88C  level that is set to the detection limit
89C  -------------------------------------
90C
91        trn(:,:,:,jpfer)=max(trn(:,:,:,jpfer),1.E-11)
92C
93        DO jk = 1,jpkm1
94          DO jj = 1,jpj
95            DO ji = 1,jpi
96C
97C     Separation in two light bands: red and green
98C     --------------------------------------------
99C   
100        xchl=(trn(ji,jj,jk,jpnch)+trn(ji,jj,jk,jpdch)+rtrn)*1.E6
101        xchl=max(0.01,xchl)
102        xchl=min(10.,xchl)
103
104        mrgb = int(41+20.*log10(xchl)+rtrn)
105
106        ekb=xkrgb(1,mrgb)
107        ekg=xkrgb(2,mrgb)
108        ekr=xkrgb(3,mrgb)
109
110        e1(ji,jj,jk+1) = e1(ji,jj,jk)*exp(-ekb*fse3t(ji,jj,jk)/2.)
111        e2(ji,jj,jk+1) = e2(ji,jj,jk)*exp(-ekg*fse3t(ji,jj,jk)/2.)
112        e3(ji,jj,jk+1) = e3(ji,jj,jk)*exp(-ekr*fse3t(ji,jj,jk)/2.)
113
114
115        etot(ji,jj,jk) = e1(ji,jj,jk+1)+e2(ji,jj,jk+1)+e3(ji,jj,jk+1)
116C   
117C     Computation of irradiance below level T
118C     ---------------------------------------
119C   
120        e1(ji,jj,jk+1) = e1(ji,jj,jk+1)*exp(-ekb*fse3t(ji,jj,jk)/2.)
121        e2(ji,jj,jk+1) = e2(ji,jj,jk+1)*exp(-ekg*fse3t(ji,jj,jk)/2.)
122        e3(ji,jj,jk+1) = e3(ji,jj,jk+1)*exp(-ekr*fse3t(ji,jj,jk)/2.)
123
124        e3lum(ji,jj,jk+1) = e3lum(ji,jj,jk)*exp(-ekb*fse3t(ji,jj,jk))
125        e4lum(ji,jj,jk+1) = e4lum(ji,jj,jk)*exp(-ekg*fse3t(ji,jj,jk))
126        e5lum(ji,jj,jk+1) = e5lum(ji,jj,jk)*exp(-ekr*fse3t(ji,jj,jk))
127        e6lum(ji,jj,jk+1) = e6lum(ji,jj,jk)*exp(-fse3t(ji,jj,jk)/xsi1)
128C
129            END DO
130          END DO
131        END DO
132
133C
134C  modif pour le couplage avec la physique
135C
136        etot3=e3lum+e4lum+e5lum+e6lum
137C
138        DO jk = 1,jpkm1
139          DO jj = 1,jpj
140            DO ji = 1,jpi
141C   
142C      Michaelis-Menten Limitation term for nutrients
143C      Small flagellates
144C      -----------------------------------------------
145C
146        xnanono3(ji,jj,jk)=trn(ji,jj,jk,jpno3)*concnnh4
147     &      /(conc0*concnnh4+concnnh4*trn(ji,jj,jk,jpno3)+
148     &        conc0*trn(ji,jj,jk,jpnh4))
149        xnanonh4(ji,jj,jk)=trn(ji,jj,jk,jpnh4)*conc0
150     &      /(conc0*concnnh4+concnnh4*trn(ji,jj,jk,jpno3)+
151     &        conc0*trn(ji,jj,jk,jpnh4))
152        xlim1=xnanono3(ji,jj,jk)+xnanonh4(ji,jj,jk)
153        xlim2=trn(ji,jj,jk,jppo4)/(trn(ji,jj,jk,jppo4)+conc0)
154        xlim3=trn(ji,jj,jk,jpfer)/(trn(ji,jj,jk,jpfer)+conc2)
155        xlimphy(ji,jj,jk)=min(xlim1,xlim2,xlim3)
156        xlim4=trn(ji,jj,jk,jpdoc)/(trn(ji,jj,jk,jpdoc)+xkdoc2)
157        xlimbac(ji,jj,jk)=min(xlim1,xlim2,xlim3,xlim4)
158C
159            END DO
160          END DO
161        END DO
162C
163        DO jk = 1,jpkm1
164          DO jj = 1,jpj
165            DO ji = 1,jpi
166C     Diatoms
167C     -------
168        xdiatno3(ji,jj,jk)=trn(ji,jj,jk,jpno3)*concdnh4
169     &      /(conc1*concdnh4+concdnh4*trn(ji,jj,jk,jpno3)+
170     &        conc1*trn(ji,jj,jk,jpnh4))
171        xdiatnh4(ji,jj,jk)=trn(ji,jj,jk,jpnh4)*conc1
172     &      /(conc1*concdnh4+concdnh4*trn(ji,jj,jk,jpno3)+
173     &        conc1*trn(ji,jj,jk,jpnh4))
174
175        xlim1=xdiatno3(ji,jj,jk)+xdiatnh4(ji,jj,jk)
176        xlim2=trn(ji,jj,jk,jppo4)/(trn(ji,jj,jk,jppo4)+conc1)
177        xlim3=trn(ji,jj,jk,jpsil)/(trn(ji,jj,jk,jpsil)+xksi(ji,jj))
178        xlim4=trn(ji,jj,jk,jpfer)/(trn(ji,jj,jk,jpfer)+conc3)
179        xlimdia(ji,jj,jk)=min(xlim1,xlim2,xlim3,xlim4)
180C
181            END DO
182          END DO
183        END DO
184C   
185C     Initialisation of the euphotic depth
186C     ------------------------------------
187C   
188        zmeu(:,:)=fsdept(:,:,jkopt+1)
189C   
190C     Computation of the euphotic depth
191C     ---------------------------------
192C   
193        DO jk = 2,jkopt
194          DO jj = 1,jpj
195            DO ji = 1,jpi
196        IF (etot(ji,jj,jk).GE.0.0043*qsr(ji,jj)) THEN
197           zmeu(ji,jj) = fsdepw(ji,jj,jk+1)
198        ENDIF
199            END DO
200          END DO
201        END DO
202C
203C    Computation of the mean light over the mixed layer depth
204C    --------------------------------------------------------
205C
206        zdepmoy  = 0
207        etmp  = 0.
208        emoy  = 0.
209
210        DO jk = 1,jpkm1
211          DO jj = 1,jpj
212            DO ji = 1,jpi
213          etmp(ji,jj) = etmp(ji,jj)+etot(ji,jj,jk)
214     $            *fse3t(ji,jj,jk)*
215     $            (0.5+sign(0.5,(hmld(ji,jj)
216     $            -fsdept(ji,jj,jk))))
217          zdepmoy(ji,jj)=zdepmoy(ji,jj)+
218     $        fse3t(ji,jj,jk)*
219     $        (0.5+sign(0.5,(hmld(ji,jj)
220     $        -fsdept(ji,jj,jk))))
221            END DO
222          END DO
223        END DO
224
225        emoy=etot
226
227        DO jk=1,jpkm1
228          DO jj = 1,jpj
229            DO ji = 1,jpi
230        IF (fsdept(ji,jj,jk).LE.hmld(ji,jj)) THEN
231          emoy(ji,jj,jk) = etmp(ji,jj)/(zdepmoy(ji,jj)+rtrn)
232        ENDIF
233            END DO
234          END DO
235        END DO
236
237#   if defined key_trc_diaadd
238        trc2d(:,:,11) = zmeu(:,:)
239#    endif
240C
241#endif
242      RETURN
243      END
Note: See TracBrowser for help on using the repository browser.