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.
p4zsink.kriest.h in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/p4zsink.kriest.h @ 700

Last change on this file since 700 was 699, checked in by smasson, 17 years ago

insert revision Id

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 7.7 KB
Line 
1CC----------------------------------------------------------------------
2CC  TOP 1.0 , LOCEAN-IPSL (2005) 
3CC $Id$
4CC This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt
5CC----------------------------------------------------------------------
6
7CCCCCC PISCES MODEL: Kriest parameterization
8CDIR$ LIST
9CC----------------------------------------------------------------------
10CC local declarations
11CC ==================
12      INTEGER jksed, ji, jj, jk
13      REAL xagg1,xagg2,xagg3,xagg4,xagg5,xaggsi,xaggsh
14      REAL znum(jpi,jpj,jpk)
15      REAL xnum,xeps,xfm,xgm,xsm
16      REAL xdiv,xdiv1,xdiv2,xdiv3,xdiv4,xdiv5
17      REAL zval1, zval2, zval3, zval4
18      REAL zstep
19#if defined key_trc_dia3d
20      REAL zrfact2
21#endif
22      REAL sinking(jpi,jpj,jpk),sinking2(jpi,jpj,jpk)
23      REAL sinkfer(jpi,jpj,jpk)
24      REAL sinkcal(jpi,jpj,jpk),sinksil(jpi,jpj,jpk)
25C
26C
27C    Time step duration for biology
28C    ------------------------------
29C
30       zstep=rfact2/rjjss
31       
32C
33C
34C     Initialisation of variables used to compute Sinking Speed
35C     ---------------------------------------------------------
36C
37       znum(:,:,:) = 0.
38       jksed = 10
39       zval1 = 1. + xkr_zeta
40       zval2 = 1. + xkr_zeta + xkr_eta
41       zval3 = 1. + xkr_eta
42C
43C     Computation of the vertical sinking speed : Kriest et Evans, 2000
44C     -----------------------------------------------------------------
45C   
46       do jk=1,jpk-1
47         do jj=1,jpj
48           do ji=1,jpi
49             IF (tmask(ji,jj,jk).NE.0) THEN
50                 xnum = trn(ji,jj,jk,jppoc) / (trn(ji,jj,jk,jpnum)+rtrn)
51     &                     / xkr_massp
52C -------------- To avoid sinking speed over 50 m/day -------
53                 xnum = min( xnumm(jk), xnum )
54                 xnum = max( 1.1, xnum )
55                 znum(ji,jj,jk) = xnum
56C------------------------------------------------------------
57                 xeps = ( zval1 * xnum - 1. )/ ( xnum - 1. )
58                 xfm  = xkr_frac**( 1. - xeps )
59                 xgm  = xkr_frac**( zval1 - xeps )
60                 xdiv = max(1E-4,abs(xeps-zval2))*sign(1.,(xeps-zval2))
61                 xdiv1=(xeps-zval3)
62                 wsbio3(ji,jj,jk)= xkr_wsbio_min * ( xeps-zval1 ) / xdiv
63     &                           - xkr_wsbio_max * xgm * xkr_eta / xdiv
64                 wsbio4(ji,jj,jk)= xkr_wsbio_min * ( xeps-1. ) / xdiv1
65     &                           - xkr_wsbio_max * xfm * xkr_eta / xdiv1
66                 IF( xnum == 1.1) THEN
67                     wsbio3(ji,jj,jk) = wsbio4(ji,jj,jk)
68                 ENDIF
69             ENDIF
70           end do
71         end do
72       end do
73C
74       wscal(:,:,:)=max(wsbio3(:,:,:),50.)
75C
76C
77C   INITIALIZE TO ZERO ALL THE SINKING ARRAYS
78C   -----------------------------------------
79C
80         sinking=0.
81         sinking2=0.
82         sinkcal=0.
83         sinkfer=0.
84         sinksil=0.
85C
86C   Compute the sedimentation term using p4zsink2 for all
87C   the sinking particles
88C   -----------------------------------------------------
89C
90         CALL p4zsink2(wsbio3,sinking,jppoc)
91         CALL p4zsink2(wsbio4,sinking2,jpnum)
92         CALL p4zsink2(wsbio3,sinkfer,jpsfe)
93         CALL p4zsink2(wscal,sinksil,jpdsi)
94         CALL p4zsink2(wscal,sinkcal,jpcal)
95
96C
97C  Exchange between organic matter compartments due to
98C  coagulation/disaggregation
99---------------------------------------------------
100C
101         zval1 = 1. + xkr_zeta
102         zval2 = 1. + xkr_eta
103         zval3 = 3. + xkr_eta
104         zval4 = 4. + xkr_eta
105
106         DO jk = 1,jpkm1
107           DO jj = 1,jpj
108             DO ji = 1,jpi
109               IF (tmask(ji,jj,jk).NE.0.) THEN
110C
111                   xnum=trn(ji,jj,jk,jppoc)/(trn(ji,jj,jk,jpnum)+rtrn)
112     &                         /xkr_massp
113C -------------- To avoid sinking speed over 50 m/day -------
114                   xnum=min(xnumm(jk),xnum)
115                   xnum=max(1.1,xnum)
116C------------------------------------------------------------
117                   xeps =(zval1*xnum-1.)/(xnum-1.)
118                   xdiv =max(1E-4,abs(xeps-zval3))*sign(1.,(xeps-zval3))
119                   xdiv1=max(1E-4,abs(xeps-4.))*sign(1.,(xeps-4.))
120                   xdiv2=(xeps-2.)
121                   xdiv3=(xeps-3.)
122                   xdiv4=(xeps-zval2)
123                   xdiv5=(2*xeps-zval4)
124                   xfm=xkr_frac**(1.-xeps)
125                   xsm=xkr_frac**xkr_eta
126C
127C    Part I : Coagulation dependant on turbulence
128C    ----------------------------------------------
129C
130                   xagg1=(0.163*trn(ji,jj,jk,jpnum)**2
131     &           *2.*( (xfm-1.)*(xfm*xkr_mass_max**3-xkr_mass_min**3)
132     &           *(xeps-1)/xdiv1 + 3.*(xfm*xkr_mass_max-xkr_mass_min)
133     &           *(xfm*xkr_mass_max**2-xkr_mass_min**2)
134     &           *(xeps-1.)**2/(xdiv2*xdiv3)))
135#    if defined key_off_degrad
136     &                 *facvol(ji,jj,jk)
137#    endif
138
139C
140                   xagg2=(2*0.163*trn(ji,jj,jk,jpnum)**2*xfm*
141     &                   ((xkr_mass_max**3+3.*(xkr_mass_max**2
142     &                    *xkr_mass_min*(xeps-1.)/xdiv2
143     &                    +xkr_mass_max*xkr_mass_min**2*(xeps-1.)/xdiv3)
144     &                    +xkr_mass_min**3*(xeps-1)/xdiv1)
145     &                    -xfm*xkr_mass_max**3*(1.+3.*((xeps-1.)/
146     &                    (xeps-2.)+(xeps-1.)/xdiv3)+(xeps-1.)/xdiv1)))
147#    if defined key_off_degrad
148     &                 *facvol(ji,jj,jk)
149#    endif
150C
151                   xagg3=(0.163*trn(ji,jj,jk,jpnum)**2*xfm**2*8.
152     &                 *xkr_mass_max**3)
153#    if defined key_off_degrad
154     &                 *facvol(ji,jj,jk)
155#    endif
156C
157                   xaggsh=(xagg1+xagg2+xagg3)*rfact2*zdiss(ji,jj,jk)
158     &                 /1000.
159C
160C    Aggregation of small into large particles
161C    Part II : Differential settling
162C    ----------------------------------------------
163C
164                   xagg4=(2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2*
165     &                 xkr_wsbio_min*(xeps-1.)**2
166     &                 *(xkr_mass_min**2*((1.-xsm*xfm)/(xdiv3*xdiv4)
167     &                 -(1.-xfm)/(xdiv*(xeps-1.)))-
168     &                 ((xfm*xfm*xkr_mass_max**2*xsm-xkr_mass_min**2)
169     &                 *xkr_eta)/(xdiv*xdiv3*xdiv5)))
170#    if defined key_off_degrad
171     &                 *facvol(ji,jj,jk)
172#    endif
173C
174                   xagg5=(2.*3.141*0.125*trn(ji,jj,jk,jpnum)**2
175     &                 *(xeps-1.)*xfm*xkr_wsbio_min
176     &                 *(xsm*(xkr_mass_min**2-xfm*xkr_mass_max**2)
177     &                 /xdiv3-(xkr_mass_min**2-xfm*xsm*xkr_mass_max**2)
178     &                 /xdiv))
179#    if defined key_off_degrad
180     &                 *facvol(ji,jj,jk)
181#    endif
182C
183                   xaggsi=(xagg4+xagg5)*zstep/10.
184C
185                   xagg(ji,jj,jk)=0.5 * xkr_stick*(xaggsh+xaggsi)
186C
187C     Aggregation of DOC to small particles
188C     --------------------------------------
189C
190                   xaggdoc(ji,jj,jk)=(0.4*trn(ji,jj,jk,jpdoc)
191     &                 +1018.*trn(ji,jj,jk,jppoc))*zstep
192     &                 *zdiss(ji,jj,jk)*trn(ji,jj,jk,jpdoc)
193#    if defined key_off_degrad
194     &                 *facvol(ji,jj,jk)
195#    endif
196C
197
198               ENDIF
199             END DO
200           END DO
201         END DO
202C
203#    if defined key_trc_dia3d
204         zrfact2 = 1.e3*rfact2r
205         trc2d(:,:,5) = sinking(:,:,jksed+1)*zrfact2
206         trc2d(:,:,6) = sinking2(:,:,jksed+1)*zrfact2
207         trc2d(:,:,7) = sinkfer(:,:,jksed+1)*zrfact2
208         trc2d(:,:,9) = sinksil(:,:,jksed+1)*zrfact2
209         trc2d(:,:,10) = sinkcal(:,:,jksed+1)*zrfact2
210         trc3d(:,:,:,12) = sinking(:,:,:)*zrfact2
211         trc3d(:,:,:,13) = sinking2(:,:,:)*zrfact2
212         trc3d(:,:,:,14) = sinksil(:,:,:)*zrfact2
213         trc3d(:,:,:,15) = sinkcal(:,:,:)*zrfact2
214         trc3d(:,:,:,16) = znum(:,:,:)
215         trc3d(:,:,:,17) = wsbio3(:,:,:)
216         trc3d(:,:,:,18) = wsbio4(:,:,:)
217#    endif
Note: See TracBrowser for help on using the repository browser.