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

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

nemo_v1_update_005:RB: update headers for the TOP component.

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