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 branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER – NEMO

source: branches/dev_001_GM/NEMO/TOP_SRC/LOBSTER/trcopt.F @ 764

Last change on this file since 764 was 764, checked in by gm, 16 years ago

dev_001_GM - create new directory and move files only

  • 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 && defined key_trc_lobster1
86C
87      INTEGER ji,jj,jk,jn,in
88
89      REAL zpig,zkr,zkg
90
91      REAL zparr(jpi,jpk),zparg(jpi,jpk)
92      REAL zpar0m(jpi),zpar100(jpi)
93      INTEGER itabe(jpi),imaske(jpi,jpk)
94CC----------------------------------------------------------------------
95CC statement functions
96CC ===================
97CDIR$ NOLIST
98#include "domzgr_substitute.h90"
99CDIR$ LIST
100CCC---------------------------------------------------------------------
101CCC  OPA8, LODYC (15/11/96)
102CCC---------------------------------------------------------------------
103C
104C
105C find Phytoplancton index - test CTRCNM
106C
107      in=0
108      DO jn = 1,jptra
109        IF ((ctrcnm(jn) .EQ. 'PHY') .OR.
110     $      (ctrcnm(jn) .EQ. 'PHYTO') ) THEN
111           
112            in = jn
113        END IF
114      END DO
115      IF (in.eq.0) THEN
116          IF (lwp) THEN
117              WRITE (numout,*)
118     $            ' Problem trcopt : PHY or PHYTO not found '
119              CALL FLUSH(numout)
120          ENDIF
121      ENDIF
122C
123C vertical slab
124C ===============
125C
126      DO 1000 jj = 1,jpj
127C
128C
129C 1. determination of surface irradiance
130C --------------------------------------
131C
132C
133        DO ji = 1,jpi
134          zpar0m(ji) = qsr(ji,jj)*0.43
135          zpar100(ji) = zpar0m(ji)*0.01
136          xpar(ji,jj,1) = zpar0m(ji)
137          zparr(ji,1) = 0.5* zpar0m(ji)
138          zparg(ji,1) = 0.5* zpar0m(ji)
139        END DO
140
141C
142C 2. determination of xpar
143C ------------------------
144C
145C determination of local par in w levels
146        DO jk = 2,jpk
147          DO ji = 1,jpi
148            zpig = max(tiny(0.),trn(ji,jj,jk - 1,in))*12*redf/rcchl/rpig
149            zkr = xkr0 + xkrp*exp(xlr*log(zpig))
150            zkg = xkg0 + xkgp*exp(xlg*log(zpig))
151            zparr(ji,jk) = zparr(ji,jk - 1)
152     $          *exp( -zkr*fse3t(ji,jj,jk - 1) )
153            zparg(ji,jk) = zparg(ji,jk - 1)
154     $          *exp( -zkg*fse3t(ji,jj,jk - 1) )
155          END DO
156        END DO
157
158C
159C mean par in t levels
160        DO jk = 1,jpkm1
161          DO ji = 1,jpi
162            zpig = max(tiny(0.),trn(ji,jj,jk  ,in))*12*redf/rcchl/rpig
163            zkr = xkr0 + xkrp*exp(xlr*log(zpig))
164            zkg = xkg0 + xkgp*exp(xlg*log(zpig))
165            zparr(ji,jk) = zparr(ji,jk) / zkr / fse3t(ji,jj,jk)
166     $          * ( 1 - exp( -zkr*fse3t(ji,jj,jk) ) )
167            zparg(ji,jk) = zparg(ji,jk) / zkg / fse3t(ji,jj,jk)
168     $          * ( 1 - exp( -zkg*fse3t(ji,jj,jk) ) )
169            xpar(ji,jj,jk) = max(zparr(ji,jk)
170     $          + zparg(ji,jk),1.e-15)
171          END DO
172        END DO
173C
174C
175C 4. determination of euphotic layer depth 
176C ----------------------------------------
177C
178C imaske equal 1 in the euphotic layer, and 0 without
179C
180        DO jk = 1,jpk
181          DO ji = 1,jpi
182            imaske(ji,jk) = 0
183            IF (xpar(ji,jj,jk) .GE. zpar100(ji)) imaske(ji,jk) = 1
184          END DO
185        END DO
186C
187        DO ji = 1,jpi
188          itabe(ji) = 0
189        END DO
190C
191        DO jk = 1,jpk
192          DO ji = 1,jpi
193            itabe(ji) = itabe(ji) + imaske(ji,jk)
194          END DO
195        END DO
196C
197        DO ji = 1,jpi
198          itabe(ji) = max(1,itabe(ji))
199          xze(ji,jj) = fsdepw(ji,jj,itabe(ji) + 1)
200        END DO
201C
202C
203C END of slab
204C ===========
205C
206 1000 CONTINUE
207C
208#else
209C
210C no passive tracers
211C
212#endif
213C
214      RETURN
215      END
Note: See TracBrowser for help on using the repository browser.