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

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

CL + CE : NEMO TRC_SRC start

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