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

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

CL : Add CVS Header and CeCILL licence information

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