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

source: trunk/NEMO/TOP_SRC/SMS/trcopt.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:keywords set to Author Date Id Revision
File size: 6.1 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 ---------------------------------------------------------------------------
6CC $Header$
7CDIR$ LIST
8      SUBROUTINE trcopt(kt)
9CCC---------------------------------------------------------------------
10CCC
11CCC                       ROUTINE trcopt
12CCC                     *******************
13CCC
14CCC  PURPOSE :
15CCC  ---------
16CCC     computes the light propagation in the water column
17CCC     and the euphotic layer depth
18CCC
19CCC
20CC   METHOD :
21CC   -------
22CC
23CC      multitasked on vertical slab (jj-loop)
24CC      local par is computed in w layers using light propagation
25CC      mean par in t layers are computed by integration
26CC
27CC
28CC   INPUT :
29CC   -----
30CC      argument
31CC              ktask           : task identificator
32CC              kt              : time step
33CC      COMMON
34CC            /comcoo/          : orthogonal curvilinear coordinates
35CC                                and scale factors
36CC                                depths
37CC            /comzdf/          : avt vertical eddy diffusivity
38CC            /comqsr/          : solar radiation
39CC            /comtsk/          : multitasking
40CC            /cotopt/          : optical parameters
41CC            /cotbio/          : biological parameters
42CC
43CC   OUTPUT :
44CC   ------
45CC      COMMON
46CC            /cotopt/          : optical parameters
47CC
48CC   WORKSPACE :
49CC   ---------
50CC      local     zparr         : red compound of par
51CC                zparg         : green compound of par
52CC                zpar0m        : irradiance just below the surface
53CC                zpar100       : irradiance at euphotic layer depth
54CC                zkr           : total absorption coefficient in red
55CC                zkg           : total absorption coefficient in green
56CC                zpig          : total pigment
57CC                imaske        : euphotic layer mask
58CC                itabe         : euphotic layer last k index
59CC
60CC      COMMON
61CC
62CC   EXTERNAL :                   no
63CC   --------
64CC
65CC   REFERENCES :                 no
66CC   ----------
67CC
68CC   MODIFICATIONS:
69CC   --------------
70CC       original : 95-05 (M. Levy)
71CC                  99-09 (J-M Andre & M. Levy)
72CC       modifications : 99-11 (C. Menkes M.A. Foujols) itabe initial. 
73CC       modifications : 00-02 (M.A. Foujols) change x**y par exp(y*log(x))
74CC----------------------------------------------------------------------
75CDIR$ NOLIST
76
77      USE oce_trc
78      USE trp_trc
79      USE sms
80      IMPLICIT NONE
81CDIR$ LIST
82CCC---------------------------------------------------------------------
83CCC  OPA8, LODYC (11/96)
84CCC---------------------------------------------------------------------
85CC----------------------------------------------------------------------
86CC local declarations
87CC ==================
88      INTEGER kt
89
90#if defined key_passivetrc
91#    if defined key_trc_lobster1 || defined key_trc_npzd
92C
93      INTEGER ji,jj,jk,jn,in
94
95      REAL zpig,zkr,zkg
96
97      REAL zparr(jpi,jpk),zparg(jpi,jpk)
98      REAL zpar0m(jpi),zpar100(jpi)
99      INTEGER itabe(jpi),imaske(jpi,jpk)
100CC----------------------------------------------------------------------
101CC statement functions
102CC ===================
103CDIR$ NOLIST
104#include "domzgr_substitute.h90"
105CDIR$ LIST
106CCC---------------------------------------------------------------------
107CCC  OPA8, LODYC (15/11/96)
108CCC---------------------------------------------------------------------
109C
110C
111C find Phytoplancton index - test CTRCNM
112C
113      in=0
114      DO jn = 1,jptra
115        IF ((ctrcnm(jn) .EQ. 'PHY') .OR.
116     $      (ctrcnm(jn) .EQ. 'PHYTO') ) THEN
117           
118            in = jn
119        END IF
120      END DO
121      IF (in.eq.0) THEN
122          IF (lwp) THEN
123              WRITE (numout,*)
124     $            ' Problem trcopt : PHY or PHYTO not found '
125              CALL FLUSH(numout)
126          ENDIF
127      ENDIF
128C
129C vertical slab
130C ===============
131C
132      DO 1000 jj = 1,jpj
133C
134C
135C 1. determination of surface irradiance
136C --------------------------------------
137C
138C
139        DO ji = 1,jpi
140          zpar0m(ji) = qsr(ji,jj)*0.43
141          zpar100(ji) = zpar0m(ji)*0.01
142          xpar(ji,jj,1) = zpar0m(ji)
143          zparr(ji,1) = 0.5* zpar0m(ji)
144          zparg(ji,1) = 0.5* zpar0m(ji)
145        END DO
146
147C
148C 2. determination of xpar
149C ------------------------
150C
151C determination of local par in w levels
152        DO jk = 2,jpk
153          DO ji = 1,jpi
154            zpig = max(tiny(0.),trn(ji,jj,jk - 1,in))*12*redf/rcchl/rpig
155            zkr = xkr0 + xkrp*exp(xlr*log(zpig))
156            zkg = xkg0 + xkgp*exp(xlg*log(zpig))
157            zparr(ji,jk) = zparr(ji,jk - 1)
158     $          *exp( -zkr*fse3t(ji,jj,jk - 1) )
159            zparg(ji,jk) = zparg(ji,jk - 1)
160     $          *exp( -zkg*fse3t(ji,jj,jk - 1) )
161          END DO
162        END DO
163
164C
165C mean par in t levels
166        DO jk = 1,jpkm1
167          DO ji = 1,jpi
168            zpig = max(tiny(0.),trn(ji,jj,jk  ,in))*12*redf/rcchl/rpig
169            zkr = xkr0 + xkrp*exp(xlr*log(zpig))
170            zkg = xkg0 + xkgp*exp(xlg*log(zpig))
171            zparr(ji,jk) = zparr(ji,jk) / zkr / fse3t(ji,jj,jk)
172     $          * ( 1 - exp( -zkr*fse3t(ji,jj,jk) ) )
173            zparg(ji,jk) = zparg(ji,jk) / zkg / fse3t(ji,jj,jk)
174     $          * ( 1 - exp( -zkg*fse3t(ji,jj,jk) ) )
175            xpar(ji,jj,jk) = max(zparr(ji,jk)
176     $          + zparg(ji,jk),1.e-15)
177          END DO
178        END DO
179C
180C
181C 4. determination of euphotic layer depth 
182C ----------------------------------------
183C
184C imaske equal 1 in the euphotic layer, and 0 without
185C
186        DO jk = 1,jpk
187          DO ji = 1,jpi
188            imaske(ji,jk) = 0
189            IF (xpar(ji,jj,jk) .GE. zpar100(ji)) imaske(ji,jk) = 1
190          END DO
191        END DO
192C
193        DO ji = 1,jpi
194          itabe(ji) = 0
195        END DO
196C
197        DO jk = 1,jpk
198          DO ji = 1,jpi
199            itabe(ji) = itabe(ji) + imaske(ji,jk)
200          END DO
201        END DO
202C
203        DO ji = 1,jpi
204          itabe(ji) = max(1,itabe(ji))
205          xze(ji,jj) = fsdepw(ji,jj,itabe(ji) + 1)
206        END DO
207C
208C
209C END of slab
210C ===========
211C
212 1000 CONTINUE
213C
214#    else
215C
216C    No optical model
217C
218#    endif
219#else
220C
221C no passive tracers
222C
223#endif
224C
225      RETURN
226      END
Note: See TracBrowser for help on using the repository browser.