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