1 | |
---|
2 | CCC $Header$ |
---|
3 | CCC TOP 1.0 , LOCEAN-IPSL (2005) |
---|
4 | C This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt |
---|
5 | C --------------------------------------------------------------------------- |
---|
6 | CCC $Header$ |
---|
7 | CDIR$ LIST |
---|
8 | SUBROUTINE h3cflx |
---|
9 | #if defined key_passivetrc && defined key_trc_hamocc3 |
---|
10 | CCC--------------------------------------------------------------------- |
---|
11 | CCC |
---|
12 | CCC ROUTINE h3cflx |
---|
13 | CCC ****************** |
---|
14 | CCC |
---|
15 | CCC |
---|
16 | CC PURPOSE. |
---|
17 | CC -------- |
---|
18 | CC *H3CFLX* CALCULATES GAS EXCHANGE AND CHEMISTRY AT SEA SURFACE |
---|
19 | CC |
---|
20 | CC METHOD. |
---|
21 | CC ------- |
---|
22 | CC SOLVING SYSTEM OF TWO NON-LINEAR SIMULTANEOUS EQUATIONS |
---|
23 | CC FOR [H2CO3] AND [H+] |
---|
24 | CC |
---|
25 | CC EXTERNALS. |
---|
26 | CC ---------- |
---|
27 | CC NONE. |
---|
28 | CC |
---|
29 | CC REFERENCE. |
---|
30 | CC ---------- |
---|
31 | CC |
---|
32 | CC BROECKER, W.S., AND T.-H. PENG (1982) |
---|
33 | CC TRACERS IN THE SEA. |
---|
34 | CC ELDIGIO PRESS, LAMONT-DOHERTY GEOLOGICAL OBSERVATORY, |
---|
35 | CC PALISADES, N.Y., 690 PP.. |
---|
36 | CC |
---|
37 | CC MOOK, W.G. (1986) |
---|
38 | CC 13C IN ATMOSPHERIC CO2. |
---|
39 | CC NETHERLANDS JOURNAL OF SEA RESEARCH, 20(2/3): 211-223. |
---|
40 | CC |
---|
41 | CC SCARBOROUGH, J. (1958) NUMERICAL MATHEMATICAL ANALYSIS. |
---|
42 | CC OXFORD UNIVERSITY PRESS, LONDON, 4TH ED., 576 PP.. |
---|
43 | CC |
---|
44 | CC* VARIABLE TYPE PURPOSE. |
---|
45 | CC -------- ---- -------- |
---|
46 | CC |
---|
47 | CC *ZEROAB* REAL 273.15 (0 DEG C IN DEG K), HALF PREC. |
---|
48 | CC *ONR* REAL 1., HALF PRECISION |
---|
49 | CC *TWR* REAL 2., HALF PRECISION |
---|
50 | CC *FOURR* REAL 4., HALF PRECISION |
---|
51 | CC *EVFR00* REAL COEFFICIENT OF TEMPERATURE DEPENDENT |
---|
52 | CC ISOTOPIC CARBON FRACTIONATION FACTOR |
---|
53 | CC FOR EVAPORATION (MOOK, 1986) |
---|
54 | CC *EVFR01* REAL COEFFICIENT OF TEMPERATURE DEPENDENT |
---|
55 | CC ISOTOPIC CARBON FRACTIONATION FACTOR |
---|
56 | CC FOR EVAPORATION (MOOK, 1986) |
---|
57 | CC *XN* REAL SURFACE [H+] (EXPRESSED AS |
---|
58 | CC SQRT(AK1*AK2)/[H+]) |
---|
59 | CC AT END OF ONE ITERATION STEP |
---|
60 | CC *CTO* REAL ACTUAL [SUM(C-12)O2], DUMMY VARIABLE |
---|
61 | CC *CT1* REAL ACTUAL [SUM(C-12)O2], DUMMY VARIABLE |
---|
62 | CC *ALKA* REAL ACTUAL [ALK] [EQV/L], DUMMY VARIABLE |
---|
63 | CC *AKB* REAL 1. DISSOC. CONSTANT OF BORIC ACID |
---|
64 | CC *H2CO3(jpi,jpj)* REAL SURFACE [H2CO3] [MOLE/L] |
---|
65 | CC *TWR* REAL 2., HALF PRECISIONION |
---|
66 | CC *FOURR* REAL 4., HALF PRECISIONION |
---|
67 | CC *YEAR* REAL NUMBER OF SECONDS IN 1 YEAR |
---|
68 | CC *KRORR* INTEGER COUNTS ITERATIONS IN NEWTON-RAPHSON ALGO- |
---|
69 | CC RITHM |
---|
70 | CC *alpco2* REAL AK0, SOLUBILITY OF CO2 IN SEAWATER, DUMMY |
---|
71 | CC VARIABLE |
---|
72 | CC *BT* REAL TOTAL BORATE [MOLES/L] |
---|
73 | CC ([B(OH)3]+[B(OH)4-]), DUMMY VARIABLE |
---|
74 | CC *CT1* REAL ACTUAL VALUE OF INORG. C, DUMMY VARIABLE |
---|
75 | CC *X1* REAL [H+] EXPRESSED AS SQRT(AK1*AK2)/[H+], |
---|
76 | CC DUMMY VARIABLE |
---|
77 | CC *PCO2* REAL PCO2 OF SURFACE WATER [PPM], DUMMY VARIABLE |
---|
78 | CC *PA* REAL ATMOSPHERIC PCO2 [PPM], DUMMY VARIABLE |
---|
79 | CC *FUGAC* REAL ENHANCEMENT FACTOR FOR GAS EXCHANGE FLUXES |
---|
80 | CC *FLD* REAL [CO2] FLUX ATMOSPHERE -> OCEAN |
---|
81 | CC IN [PPM/TIME STEP] |
---|
82 | CC *FLU* REAL [CO2] FLUX OCEAN -> ATMOSPHER |
---|
83 | CC IN [PPM/TIME STEP] |
---|
84 | CC *RELW13* REAL RATIO [SUM((13C)O2)]/[SUM((12C)O2)] |
---|
85 | CC IN SURFACE LAYER |
---|
86 | CC *RELA13* REAL RATIO [SUM((13C)O2)]/[SUM((12C)O2)] |
---|
87 | CC IN THE ATMOSPHERE |
---|
88 | CC *RELW14* REAL RATIO [SUM((14C)O2)]/[SUM((12C)O2)] |
---|
89 | CC IN SURFACE LAYER |
---|
90 | CC *RELA14* REAL RATIO [SUM((14C)O2)]/[SUM((12C)O2)] |
---|
91 | CC IN THE ATMOSPHERE |
---|
92 | CC |
---|
93 | CC MODIFICATIONS: |
---|
94 | CC -------------- |
---|
95 | CC original : 1988-07 E. MAIER-REIMER MPI HAMBURG |
---|
96 | CC additions : 1998 O. Aumont |
---|
97 | CC modifications : 1999 C. Le Quere |
---|
98 | CC ----------------------------------------------------------------- |
---|
99 | CC parameters and commons |
---|
100 | CC ====================== |
---|
101 | CDIR$ NOLIST |
---|
102 | USE oce_trc |
---|
103 | USE trp_trc |
---|
104 | USE sms |
---|
105 | IMPLICIT NONE |
---|
106 | CDIR$ LIST |
---|
107 | CC---------------------------------------------------------------------- |
---|
108 | CC local declarations |
---|
109 | CC ================== |
---|
110 | C |
---|
111 | INTEGER ji, jj, it |
---|
112 | REAL zexp1, zexp2 |
---|
113 | REAL a1, a2, a3, b2, b3, ttc, ws, krorr, alpco2 |
---|
114 | REAL pa, fld, flu, conveg |
---|
115 | REAL oxy16, voro16, flu16 |
---|
116 | REAL relw13, rela13, fra13, frw13 |
---|
117 | REAL h,ah2,bot |
---|
118 | REAL ct1,a, alka |
---|
119 | REAL schmitt, caralk, bicarb |
---|
120 | C |
---|
121 | C 1. ASSIGNATION TO EXPONENTS IN THE LISS AND MERLIVAT |
---|
122 | C FORMULATION OF THE GAS EXCHANGE RATE |
---|
123 | c ----------------------------------------------------- |
---|
124 | C |
---|
125 | zexp1 = -2./3. |
---|
126 | zexp2 = -1./2. |
---|
127 | a1 = 0.17 |
---|
128 | a2 = 2.85 |
---|
129 | a3 = 5.90 |
---|
130 | b2 = 9.65 |
---|
131 | b3 = 49.3 |
---|
132 | C |
---|
133 | C 2.1 INITIALISATION OF [H+] |
---|
134 | C -------------------------- |
---|
135 | C |
---|
136 | DO jj=1,jpj |
---|
137 | DO ji=1,jpi |
---|
138 | caralk = trn(ji,jj,1,jptal)- |
---|
139 | & borat(ji,jj,1)/(1.+1E-8/akb3(ji,jj,1)) |
---|
140 | co3(ji,jj,1) = caralk-trn(ji,jj,1,jpdic) |
---|
141 | & +(1.-tmask(ji,jj,1))*.5e-3 |
---|
142 | bicarb = (2.*trn(ji,jj,1,jpdic)-caralk) |
---|
143 | hi(ji,jj,1) = ak23(ji,jj,1)*bicarb/co3(ji,jj,1) |
---|
144 | END DO |
---|
145 | END DO |
---|
146 | |
---|
147 | C |
---|
148 | C* 2.2 SURFACE CHEMISTRY (PCO2 AND [H+] IN |
---|
149 | C SURFACE LAYER); THE RESULT OF THIS CALCULATION |
---|
150 | C IS USED TO COMPUTE AIR-SEA FLUX OF CO2 |
---|
151 | C --------------------------------------------------- |
---|
152 | C |
---|
153 | DO krorr = 1,15 |
---|
154 | C |
---|
155 | DO jj = 1,jpj |
---|
156 | DO ji = 1,jpi |
---|
157 | C |
---|
158 | C* 2.3 TOTAL BORATE |
---|
159 | C ----------------- |
---|
160 | C |
---|
161 | bot = chemc(ji,jj,2) |
---|
162 | ct1 = trn(ji,jj,1,jpdic) |
---|
163 | alka = trn(ji,jj,1,jptal) |
---|
164 | h = hi(ji,jj,1)+(1.-tmask(ji,jj,1))*1.e-9 |
---|
165 | h = amax1(hi(ji,jj,1),1.E-10) |
---|
166 | |
---|
167 | C |
---|
168 | C* 2.4 CALCULATE [ALK]([CO3--], [HCO3-]) |
---|
169 | C ------------------------------------ |
---|
170 | C |
---|
171 | a=alka- |
---|
172 | & (akw3(ji,jj,1)/h-h+bot/(1.+h/akb3(ji,jj,1))) |
---|
173 | C |
---|
174 | C* 2.5 CALCULATE [H+] AND [H2CO3] |
---|
175 | C ----------------------------------------- |
---|
176 | C |
---|
177 | ah2=sqrt((ct1-a)**2+4*(a*ak23(ji,jj,1)/ak13(ji,jj,1)) |
---|
178 | & *(2*ct1-a)) |
---|
179 | ah2=0.5*ak13(ji,jj,1)/a*((ct1-a)+ah2) |
---|
180 | hi(ji,jj,1) = ah2 |
---|
181 | h2co3(ji,jj) = (2*ct1-a)/(2.+ak13(ji,jj,1)/ah2) |
---|
182 | conveg=((ah2-hi(ji,jj,1))/hi(ji,jj,1))**2 |
---|
183 | $ *tmask(ji,jj,1) |
---|
184 | rconvs = rconvs+conveg |
---|
185 | END DO |
---|
186 | END DO |
---|
187 | C |
---|
188 | C 2.6 TEST CONVERGENCE |
---|
189 | C --------------------- |
---|
190 | C |
---|
191 | IF (rconvs.LE.1.E-4) EXIT |
---|
192 | C |
---|
193 | END DO |
---|
194 | C |
---|
195 | C |
---|
196 | C 2.7 CHECK ITERATION |
---|
197 | C -------------------- |
---|
198 | C |
---|
199 | C IF (krorr.GE.30) THEN |
---|
200 | C WRITE(numout,*) 'in h3cflx h2co3 have not converged ' |
---|
201 | C CALL FLUSH (numout) |
---|
202 | C STOP 'h3cflx' |
---|
203 | C END IF |
---|
204 | C |
---|
205 | C |
---|
206 | C 3. COMPUTE FLUXES |
---|
207 | C -------------- |
---|
208 | |
---|
209 | C |
---|
210 | C 3.1 FIRST COMPUTE GAS EXCHANGE COEFFICIENTS |
---|
211 | C ------------------------------------------- |
---|
212 | C |
---|
213 | |
---|
214 | DO jj = 1,jpj |
---|
215 | DO ji = 1,jpi |
---|
216 | C |
---|
217 | ttc = min(39.,tn(ji,jj,1)) |
---|
218 | schmitt= 2073.1-125.62*ttc+3.6276*ttc**2-0.043126*ttc**3 |
---|
219 | C |
---|
220 | C 3.2 COMPUTE GAS EXCHANGE FOR CO2 |
---|
221 | C -------------------------------- |
---|
222 | C |
---|
223 | if (igaswind.eq.1) then |
---|
224 | ws = vatm(ji,jj) |
---|
225 | C |
---|
226 | C 3.3 this is Wanninkopf(1992) equation 8 (with chemical enhancement), |
---|
227 | C in cm/h |
---|
228 | C -------------------------------------------------------------------- |
---|
229 | C |
---|
230 | kgwanin(ji,jj) = (0.3*ws*ws + 2.5*(0.5246+ttc*(0.016256+ |
---|
231 | & ttc*0.00049946)))*sqrt(660./schmitt) |
---|
232 | C |
---|
233 | C 3.4 CONVERT TO M/S |
---|
234 | C ------------------ |
---|
235 | C |
---|
236 | kgwanin(ji,jj) = kgwanin(ji,jj)/100./3600. |
---|
237 | C |
---|
238 | C 3.5 convert to mol/m2/s/uatm, alpco2(chemc(ji,jj,1)) is in |
---|
239 | C mol/L/uatm and apply ice cover |
---|
240 | C ----------------------------------------------------------- |
---|
241 | C |
---|
242 | kgwanin(ji,jj) = kgwanin(ji,jj)*chemc(ji,jj,1)*1.e3 * |
---|
243 | & (1-freeze(ji,jj)) |
---|
244 | C |
---|
245 | C 3.6 CLIMATOLOGICAL CASE: GAS EXCHANGE IS NOT COMPUTED BUT |
---|
246 | C READ IN A FILE |
---|
247 | C --------------------------------------------------------- |
---|
248 | C |
---|
249 | ELSE IF (igaswind.EQ.2) THEN |
---|
250 | C |
---|
251 | C 3.7 CONVERT TO M/S |
---|
252 | C ------------------ |
---|
253 | C |
---|
254 | kgwanin(ji,jj) = kgwanin(ji,jj)/raass |
---|
255 | & *(1-freeze(ji,jj)) |
---|
256 | C |
---|
257 | C |
---|
258 | C 3.8 COUPLED RUN CASE. WIND FIELD IS COMPUTED FROM WIND STRESS |
---|
259 | C -------------------------------------------------------------- |
---|
260 | C |
---|
261 | ELSE IF (igaswind.EQ.3) THEN |
---|
262 | |
---|
263 | C 3.9 LB zonal stress = 0 on east side of bassins |
---|
264 | C LB uses stress from coupled runs to compute kgwanin |
---|
265 | C -------------------------------------------------------- |
---|
266 | C |
---|
267 | ws=sqrt((sqrt((taux(ji,jj)**2)+(tauy(ji,jj))**2)) |
---|
268 | $ /(1.25e-3)) |
---|
269 | kgwanin(ji,jj)=(0.3*(sqrt((taux(ji,jj)**2)+ |
---|
270 | $ (tauy(ji,jj)) **2))/(1.25e-3) + 2.5*(0.5246 + |
---|
271 | $ ttc*(0.016256 +ttc*0.00049946)))*sqrt(660./schmitt) |
---|
272 | C |
---|
273 | C 3.10 CONVERT TO M/S |
---|
274 | C -------------------- |
---|
275 | C |
---|
276 | kgwanin(ji,jj) = kgwanin(ji,jj)/360000. |
---|
277 | C |
---|
278 | C 3.11 convert to mol/m2/s/uatm, alpco2(chemc(ji,jj,1)) is in mol/L/uatm |
---|
279 | C and apply ice cover |
---|
280 | C ---------------------------------------------------------------------- |
---|
281 | C |
---|
282 | kgwanin(ji,jj)=kgwanin(ji,jj)*chemc(ji,jj,1)*1.e3 |
---|
283 | & *(1-freeze(ji,jj)) |
---|
284 | ENDIF |
---|
285 | END DO |
---|
286 | END DO |
---|
287 | C |
---|
288 | C |
---|
289 | C 3.12 COMPUTE GAS EXCHANGE COEFFICIENT FO O2 FROM LISS AND |
---|
290 | C MERLIVAT EQUATIONS |
---|
291 | C --------------------------------------------------------- |
---|
292 | C |
---|
293 | DO jj = 1,jpj |
---|
294 | DO ji=1,jpi |
---|
295 | C |
---|
296 | IF (igaswind.EQ.3) then |
---|
297 | ws=sqrt((sqrt((taux(ji,jj)**2)+(tauy(ji,jj))**2)) |
---|
298 | $ /(1.25e-3)) |
---|
299 | ELSE |
---|
300 | ws = vatm(ji,jj) |
---|
301 | ENDIF |
---|
302 | |
---|
303 | ttc = min(39.,tn(ji,jj,1)) |
---|
304 | SChmitt = 1953.4-128.0*ttc+3.9918*ttc**2-0.050091*ttc**3 |
---|
305 | C |
---|
306 | C |
---|
307 | C |
---|
308 | IF (ws.LE.3.6) THEN |
---|
309 | fugaci(ji,jj) = (a1*ws)*(schmitt/660.)**zexp1 |
---|
310 | ENDIF |
---|
311 | IF ((ws.GT.3.6).AND.(ws.LE.13.)) THEN |
---|
312 | fugaci(ji,jj) = (a2*ws-b2)*(schmitt/660.)**zexp2 |
---|
313 | ENDIF |
---|
314 | IF (ws.GT.13.) THEN |
---|
315 | fugaci(ji,jj) = (a3*ws-b3)*(schmitt/660.)**zexp2 |
---|
316 | ENDIF |
---|
317 | C |
---|
318 | C convert to cm and apply ice cover |
---|
319 | C |
---|
320 | fugaci(ji,jj) = fugaci(ji,jj)/100./(3600.)* |
---|
321 | $ (1-freeze(ji,jj))*tmask(ji,jj,1) |
---|
322 | C |
---|
323 | # if defined key_off_degrad |
---|
324 | fugaci(ji,jj) = exp(-rfact*fugaci(ji,jj) |
---|
325 | $ *facvol(ji,jj,1)/e3t(1)) |
---|
326 | # else |
---|
327 | fugaci(ji,jj) = exp(-rfact*fugaci(ji,jj) |
---|
328 | $ /e3t(1)) |
---|
329 | # endif |
---|
330 | |
---|
331 | ENDDO |
---|
332 | ENDDO |
---|
333 | C |
---|
334 | DO jj = 1,jpj |
---|
335 | DO ji = 1,jpi |
---|
336 | C |
---|
337 | C Fix atmospheric CO2 |
---|
338 | C ------------------- |
---|
339 | C |
---|
340 | C for climate runs |
---|
341 | pa = atcco2 |
---|
342 | C |
---|
343 | C Compute CO2 flux for the sea and air |
---|
344 | C ------------------------------------ |
---|
345 | C |
---|
346 | alpco2 = chemc(ji,jj,1) |
---|
347 | fld = pa*tmask(ji,jj,1)*kgwanin(ji,jj) |
---|
348 | flu = h2co3(ji,jj)/alpco2*tmask(ji,jj,1)*kgwanin(ji,jj) |
---|
349 | tra(ji,jj,1,jpdic)= tra(ji,jj,1,jpdic)+(fld-flu)/1000./e3t(1) |
---|
350 | CMAFOA faire qcumul sur domaine exact |
---|
351 | qcumul(1)=qcumul(1)+(fld-flu)*rfact*e1t(ji,jj) |
---|
352 | $ *e2t(ji,jj)*tmask(ji,jj,1) |
---|
353 | C |
---|
354 | # if defined key_trc_biohamocc13 |
---|
355 | C |
---|
356 | C Compute C13 flux |
---|
357 | C ---------------- |
---|
358 | C |
---|
359 | relw13 = trn(ji,jj,1,jp13c)/ |
---|
360 | & (trn(ji,jj,1,jpdic)+(1.-tmask(ji,jj,1))*1.e-20) |
---|
361 | rela13 = pdb*(1.-6.4/1000.) |
---|
362 | fra13 = 1.+(-10.66+0.1196*tn(ji,jj,1)-0.0003095* |
---|
363 | & tn(ji,jj,1)**2)/1000. |
---|
364 | frw13 = 1. |
---|
365 | tra(ji,jj,1,jp13c) = tra(ji,jj,1,jp13c)+ |
---|
366 | & (fld*frw13*rela13-flu*relw13*fra13)/1000./e3t(1) |
---|
367 | # endif |
---|
368 | C |
---|
369 | C Compute O2 flux |
---|
370 | C --------------- |
---|
371 | C |
---|
372 | oxy16 = trn(ji,jj,1,jpoxy) |
---|
373 | voro16 = atcox |
---|
374 | flu16 = (-fugaci(ji,jj)+1)*e3t(1) |
---|
375 | & *(voro16*chemc(ji,jj,3)-oxy16)* |
---|
376 | & tmask(ji,jj,1)/rfact |
---|
377 | tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy)+flu16/e3t(1) |
---|
378 | C |
---|
379 | C |
---|
380 | C |
---|
381 | C Save diagnostics |
---|
382 | C ---------------- |
---|
383 | C |
---|
384 | # if defined key_trc_diaadd |
---|
385 | trc2d(ji,jj,1) = (fld-flu) |
---|
386 | trc2d(ji,jj,2) = flu16*1000. |
---|
387 | trc2d(ji,jj,3) = kgwanin(ji,jj) |
---|
388 | trc2d(ji,jj,4) = (fld-flu)/(kgwanin(ji,jj)+1.E-15) |
---|
389 | C |
---|
390 | # if defined key_trc_biohamocc13 |
---|
391 | trc2d(ji,jj,10) = (fld*frw13*rela13-flu*relw13*fra13) |
---|
392 | # endif |
---|
393 | C |
---|
394 | # endif |
---|
395 | C |
---|
396 | END DO |
---|
397 | END DO |
---|
398 | C |
---|
399 | #endif |
---|
400 | RETURN |
---|
401 | END |
---|
402 | |
---|