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

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

nemo_v1_update_027 : CE + RB + CT : update of SMS routines

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.8 KB
Line 
1CDIR$ LIST
2      SUBROUTINE p4zopt
3#if defined key_passivetrc && defined key_trc_pisces
4CCC---------------------------------------------------------------------
5CCC
6CCC             ROUTINE p4zopt : PISCES MODEL
7CCC             *****************************
8CCC
9CCC  PURPOSE :
10CCC  ---------
11CCC         Compute the light availability in the water column
12CCC         depending on the depth and the chlorophyll concentration
13CCC
14CC   INPUT :
15CC   -----
16CC      argument
17CC              None
18CC      common
19CC              all the common defined in opa
20CC
21CC
22CC   OUTPUT :                   : no
23CC   ------
24CC
25CC   MODIFICATIONS:
26CC   --------------
27CC      original  : O. Aumont (2004)
28CC----------------------------------------------------------------------
29CC parameters and commons
30CC ======================
31CDIR$ NOLIST
32      USE oce_trc
33      USE trp_trc
34      USE sms
35      IMPLICIT NONE
36#include "domzgr_substitute.h90"
37CDIR$ LIST
38CC----------------------------------------------------------------------
39CC local declarations
40CC ==================
41      INTEGER ji, jj, jk, mrgb
42      REAL xchl,ekg(jpi,jpj,jpk),ekr(jpi,jpj,jpk)
43      REAL ekb(jpi,jpj,jpk)
44      REAL parlux,e1(jpi,jpj,jpk),e2(jpi,jpj,jpk),e3(jpi,jpj,jpk)
45      REAL zdepmoy(jpi,jpj)
46      REAL etmp(jpi,jpj)
47      REAL zrlight,zblight,zglight
48C
49C     Initialisation of variables used to compute PAR
50C     -----------------------------------------------
51C
52        e1     = 0.
53        e2     = 0.
54        e3     = 0.
55        etot   = 0.
56        parlux = 0.43/3.
57
58        DO jk=1,jpkm1
59          DO jj=1,jpj
60            DO ji=1,jpi
61C
62C     Separation in three light bands: red, green, blue
63C     -------------------------------------------------
64C
65        xchl=(trn(ji,jj,jk,jpnch)+trn(ji,jj,jk,jpdch)+rtrn)*1.E6
66        xchl=max(0.03,xchl)
67        xchl=min(10.,xchl)
68                                                                               
69        mrgb = int(41+20.*log10(xchl)+rtrn)
70                                                                               
71        ekb(ji,jj,jk)=xkrgb(1,mrgb)
72        ekg(ji,jj,jk)=xkrgb(2,mrgb)
73        ekr(ji,jj,jk)=xkrgb(3,mrgb)
74C
75            END DO
76          END DO
77        END DO
78C
79          DO jj = 1,jpj
80            DO ji = 1,jpi
81C
82C     Separation in three light bands: red, green, blue
83C     -------------------------------------------------
84C
85        zblight=0.5*ekb(ji,jj,1)*fse3t(ji,jj,1)
86        zglight=0.5*ekg(ji,jj,1)*fse3t(ji,jj,1)
87        zrlight=0.5*ekr(ji,jj,1)*fse3t(ji,jj,1)
88C
89        e1(ji,jj,1) = parlux*qsr(ji,jj)*exp(-zblight)
90        e2(ji,jj,1) = parlux*qsr(ji,jj)*exp(-zglight)
91        e3(ji,jj,1) = parlux*qsr(ji,jj)*exp(-zrlight)
92C
93            END DO
94          END DO
95                                                                               
96                                                                               
97        DO jk = 2,jpkm1
98          DO jj = 1,jpj
99            DO ji = 1,jpi
100C
101C     Separation in three light bands: red, green, blue
102C     -------------------------------------------------
103C
104        zblight=0.5*(ekb(ji,jj,jk-1)*fse3t(ji,jj,jk-1)
105     &    +ekb(ji,jj,jk)*fse3t(ji,jj,jk))
106        zglight=0.5*(ekg(ji,jj,jk-1)*fse3t(ji,jj,jk-1)
107     &    +ekg(ji,jj,jk)*fse3t(ji,jj,jk))
108        zrlight=0.5*(ekr(ji,jj,jk-1)*fse3t(ji,jj,jk-1)
109     &    +ekr(ji,jj,jk)*fse3t(ji,jj,jk))
110C
111        e1(ji,jj,jk) = e1(ji,jj,jk-1)*exp(-zblight)
112        e2(ji,jj,jk) = e2(ji,jj,jk-1)*exp(-zglight)
113        e3(ji,jj,jk) = e3(ji,jj,jk-1)*exp(-zrlight)
114C
115            END DO
116          END DO
117        END DO
118C
119        etot(:,:,:) = e1(:,:,:)+e2(:,:,:)+e3(:,:,:)
120C   
121C     Computation of the euphotic depth
122C     ---------------------------------
123C   
124        zmeu(:,:) = 300.
125
126        DO jk = 2,jpkm1
127          DO jj = 1,jpj
128            DO ji = 1,jpi
129        IF (etot(ji,jj,jk).GE.0.0043*qsr(ji,jj)) THEN
130           zmeu(ji,jj) = fsdepw(ji,jj,jk+1)
131        ENDIF
132            END DO
133          END DO
134        END DO
135C
136        zmeu(:,:)=min(300.,zmeu(:,:))
137C
138C    Computation of the mean light over the mixed layer depth
139C    --------------------------------------------------------
140C
141        zdepmoy  = 0
142        etmp  = 0.
143        emoy  = 0.
144
145        DO jk = 1,jpkm1
146          DO jj = 1,jpj
147            DO ji = 1,jpi
148         if (fsdepw(ji,jj,jk+1).le.hmld(ji,jj)) then
149       etmp(ji,jj) = etmp(ji,jj)+etot(ji,jj,jk)*fse3t(ji,jj,jk)
150       zdepmoy(ji,jj)=zdepmoy(ji,jj)+fse3t(ji,jj,jk)
151         endif
152            END DO
153          END DO
154        END DO
155
156        emoy(:,:,:) = etot(:,:,:)
157
158        DO jk = 1,jpkm1
159          DO jj = 1,jpj
160            DO ji = 1,jpi
161        IF (fsdepw(ji,jj,jk+1).LE.hmld(ji,jj)) THEN
162          emoy(ji,jj,jk) = etmp(ji,jj)/(zdepmoy(ji,jj)+rtrn)
163        ENDIF
164            END DO
165          END DO
166        END DO
167
168#   if defined key_trc_diaadd
169        trc2d(:,:,11) = zmeu(:,:)
170#    endif
171C
172#endif
173      RETURN
174      END
Note: See TracBrowser for help on using the repository browser.