1 | MODULE sedini |
---|
2 | !!====================================================================== |
---|
3 | !! *** MODULE sedini *** |
---|
4 | !! Sediment : define sediment variables |
---|
5 | !!===================================================================== |
---|
6 | #if defined key_sed |
---|
7 | |
---|
8 | !!---------------------------------------------------------------------- |
---|
9 | !! sed_init : initialization, namelist read, and parameters control |
---|
10 | !!---------------------------------------------------------------------- |
---|
11 | !! * Modules used |
---|
12 | USE sed ! sediment global variable |
---|
13 | USE seddta |
---|
14 | USE sedrst |
---|
15 | USE sedco3 |
---|
16 | USE sedchem |
---|
17 | USE sedarr |
---|
18 | USE iom |
---|
19 | USE in_out_manager ! I/O manager |
---|
20 | |
---|
21 | |
---|
22 | IMPLICIT NONE |
---|
23 | PRIVATE |
---|
24 | |
---|
25 | !! Module variables |
---|
26 | REAL(wp) :: & |
---|
27 | sisat = 800. , & !: saturation for si [ mol.l-1] |
---|
28 | claysat = 0. , & !: saturation for clay [ mol.l-1] |
---|
29 | rcopal = 40. , & !: reactivity for si [l.mol-1.an-1] |
---|
30 | rcclay = 0. , & !: reactivity for clay [l.mol-1.an-1] |
---|
31 | dcoef = 8.e-6 !: diffusion coefficient (*por) [cm**2/s] |
---|
32 | |
---|
33 | REAL(wp) :: & |
---|
34 | redO2 = 172. , & !: Redfield coef for Oxygene |
---|
35 | redNo3 = 16. , & !: Redfield coef for Nitrates |
---|
36 | redPo4 = 1. , & !: Redfield coef for Phosphates |
---|
37 | redC = 122. , & !: Redfield coef for Carbone |
---|
38 | redDnit = 97.6 , & !: Redfield coef for denitrification |
---|
39 | rcorg = 50. , & !: reactivity for POC/O2 [l.mol-1.an-1] |
---|
40 | o2seuil = 1. , & !: threshold O2 concentration for [mol.l-1] |
---|
41 | rcorgN = 50. !: reactivity for POC/No3 [l.mol-1.an-1] |
---|
42 | |
---|
43 | REAL(wp) :: & |
---|
44 | rccal = 1000. !: reactivity for calcite [l.mol-1.an-1] |
---|
45 | |
---|
46 | REAL(wp) :: & |
---|
47 | dbiot = 15. !: coefficient for bioturbation [cm**2.(1000an-1)] |
---|
48 | |
---|
49 | LOGICAL :: & |
---|
50 | ln_rst_sed = .TRUE. !: initialisation from a restart file or not |
---|
51 | |
---|
52 | REAL(wp) :: & |
---|
53 | ryear = 365. * 24. * 3600. !: 1 year converted in second |
---|
54 | |
---|
55 | !! * Routine accessibility |
---|
56 | PUBLIC sed_init ! routine called by opa.F90 |
---|
57 | |
---|
58 | CONTAINS |
---|
59 | |
---|
60 | |
---|
61 | SUBROUTINE sed_init |
---|
62 | !!---------------------------------------------------------------------- |
---|
63 | !! *** ROUTINE sed_init *** |
---|
64 | !! |
---|
65 | !! ** Purpose : Initialization of sediment module |
---|
66 | !! - Reading namelist |
---|
67 | !! - Read the deepest water layer thickness |
---|
68 | !! ( using as mask ) in Netcdf file |
---|
69 | !! - Convert unity if necessary |
---|
70 | !! - sets initial sediment composition |
---|
71 | !! ( only clay or reading restart file ) |
---|
72 | !! - sets sediment grid, porosity and others constants |
---|
73 | !! |
---|
74 | !! History : |
---|
75 | !! ! 04-10 (N. Emprin, M. Gehlen ) Original code |
---|
76 | !! ! 06-07 (C. Ethe) Re-organization |
---|
77 | !!---------------------------------------------------------------------- |
---|
78 | INTEGER :: ji, jj, ikt |
---|
79 | #if defined key_sed_off |
---|
80 | INTEGER :: numblt |
---|
81 | INTEGER :: nummsh |
---|
82 | REAL(wp) , DIMENSION(jpi,jpj) :: zdta |
---|
83 | #endif |
---|
84 | !!---------------------------------------------------------------------- |
---|
85 | |
---|
86 | |
---|
87 | ! Reading namelist.sed variables |
---|
88 | !--------------------------------------- |
---|
89 | |
---|
90 | CALL ctl_opn( numsed, 'sediment.output', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) |
---|
91 | |
---|
92 | WRITE(numsed,*) |
---|
93 | WRITE(numsed,*) ' L S C E - C E A' |
---|
94 | WRITE(numsed,*) ' SEDIMENT model' |
---|
95 | WRITE(numsed,*) ' version 2.0 (2007) ' |
---|
96 | WRITE(numsed,*) |
---|
97 | WRITE(numsed,*) |
---|
98 | |
---|
99 | |
---|
100 | WRITE(numsed,*) ' sed_init : Initialization of sediment module ' |
---|
101 | WRITE(numsed,*) ' ' |
---|
102 | |
---|
103 | ! Determination of sediments number of points and allocate global variables |
---|
104 | #if defined key_sed_off |
---|
105 | ! Reading Netcdf Pisces file for deepest water layer thickness [m] |
---|
106 | ! This data will be used as mask to merdge space in 1D vector |
---|
107 | !---------------------------------------------------------------- |
---|
108 | |
---|
109 | CALL iom_open ( 'mesh_mask' , nummsh ) |
---|
110 | CALL iom_open ( 'e3tbot' , numblt ) |
---|
111 | |
---|
112 | ! mask sediment points for outputs |
---|
113 | CALL iom_get( nummsh, jpdom_data, 'tmask' , tmask ) |
---|
114 | CALL iom_get( nummsh, jpdom_data, 'mbathy', sbathy ) |
---|
115 | |
---|
116 | ! longitude/latitude values |
---|
117 | CALL iom_get ( nummsh, jpdom_data,'nav_lon', glamt(:,:) ) |
---|
118 | CALL iom_get ( nummsh, jpdom_data,'nav_lat', gphit(:,:) ) |
---|
119 | |
---|
120 | ! bottom layer thickness |
---|
121 | CALL iom_get ( numblt, jpdom_data, 'E3TBOT', zdta(:,:) ) |
---|
122 | epkbot(:,:) = 0. |
---|
123 | DO jj = 1, jpj |
---|
124 | DO ji = 1, jpi |
---|
125 | ikt = MAX( INT( sbathy(ji,jj) ) - 1, 1 ) |
---|
126 | IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = zdta(ji,jj) |
---|
127 | ENDDO |
---|
128 | ENDDO |
---|
129 | |
---|
130 | CALL iom_close( nummsh ) |
---|
131 | CALL iom_close( numblt ) |
---|
132 | #else |
---|
133 | |
---|
134 | epkbot(:,:) = 0. |
---|
135 | DO jj = 1, jpj |
---|
136 | DO ji = 1, jpi |
---|
137 | ikt = MAX( mbathy(ji,jj) - 1, 1 ) |
---|
138 | IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = e3t_0(ikt) |
---|
139 | ENDDO |
---|
140 | ENDDO |
---|
141 | #endif |
---|
142 | |
---|
143 | |
---|
144 | ! computation of total number of ocean points |
---|
145 | !-------------------------------------------- |
---|
146 | jpoce = COUNT( epkbot(:,:) > 0. ) |
---|
147 | |
---|
148 | |
---|
149 | ! Allocate memory size of global variables |
---|
150 | ALLOCATE( pwcp (jpoce,jpksed,jpwat) ) ; ALLOCATE( pwcp0 (jpoce,jpksed,jpwat) ) ; ALLOCATE( pwcp_dta (jpoce,jpwat) ) |
---|
151 | ALLOCATE( solcp(jpoce,jpksed,jpsol) ) ; ALLOCATE( solcp0(jpoce,jpksed,jpsol) ) ; ALLOCATE( rainrm_dta(jpoce,jpsol) ) |
---|
152 | ALLOCATE( rainrm(jpoce,jpsol) ) ; ALLOCATE( rainrg(jpoce,jpsol) ) ; ALLOCATE( raintg(jpoce) ) |
---|
153 | ALLOCATE( dzdep(jpoce) ) ; ALLOCATE( iarroce(jpoce) ) ; ALLOCATE( dzkbot(jpoce) ) |
---|
154 | ALLOCATE( temp(jpoce) ) ; ALLOCATE( salt(jpoce) ) |
---|
155 | ALLOCATE( press(jpoce) ) ; ALLOCATE( densSW(jpoce) ) |
---|
156 | ALLOCATE( hipor(jpoce,jpksed) ) ; ALLOCATE( co3por(jpoce,jpksed) ) |
---|
157 | ALLOCATE( dz3d(jpoce,jpksed) ) ; ALLOCATE( volw3d(jpoce,jpksed) ) ; ALLOCATE( vols3d(jpoce,jpksed) ) |
---|
158 | |
---|
159 | ! Initialization of global variables |
---|
160 | pwcp (:,:,:) = 0. ; pwcp0 (:,:,:) = 0. ; pwcp_dta (:,:) = 0. |
---|
161 | solcp (:,:,:) = 0. ; solcp0(:,:,:) = 0. ; rainrm_dta(:,:) = 0. |
---|
162 | rainrm(:,: ) = 0. ; rainrg(:,: ) = 0. ; raintg (: ) = 0. |
---|
163 | dzdep (: ) = 0. ; iarroce(: ) = 0 ; dzkbot (: ) = 0. |
---|
164 | temp (: ) = 0. ; salt (: ) = 0. |
---|
165 | press (: ) = 0. ; densSW (: ) = 0. |
---|
166 | hipor (:,: ) = 0. ; co3por (:,: ) = 0. |
---|
167 | dz3d (:,: ) = 0. ; volw3d (:,: ) = 0. ; vols3d (:,:) = 0. |
---|
168 | |
---|
169 | ! Chemical variables |
---|
170 | ALLOCATE( akbs (jpoce) ) ; ALLOCATE( ak1s (jpoce) ) ; ALLOCATE( ak2s (jpoce) ) ; ALLOCATE( akws (jpoce) ) |
---|
171 | ALLOCATE( ak1ps (jpoce) ) ; ALLOCATE( ak2ps (jpoce) ) ; ALLOCATE( ak3ps (jpoce) ) ; ALLOCATE( aksis (jpoce) ) |
---|
172 | ALLOCATE( aksps (jpoce) ) ; ALLOCATE( ak12s (jpoce) ) ; ALLOCATE( ak12ps(jpoce) ) ; ALLOCATE( ak123ps(jpoce) ) |
---|
173 | ALLOCATE( borats(jpoce) ) ; ALLOCATE( calcon2(jpoce) ) |
---|
174 | |
---|
175 | akbs (:) = 0. ; ak1s (:) = 0. ; ak2s (:) = 0. ; akws (:) = 0. |
---|
176 | ak1ps (:) = 0. ; ak2ps (:) = 0. ; ak3ps (:) = 0. ; aksis (:) = 0. |
---|
177 | aksps (:) = 0. ; ak12s (:) = 0. ; ak12ps(:) = 0. ; ak123ps(:) = 0. |
---|
178 | borats(:) = 0. ; calcon2(:) = 0. |
---|
179 | |
---|
180 | ! Mass balance calculation |
---|
181 | ALLOCATE( fromsed(jpoce, jpsol) ) ; ALLOCATE( tosed(jpoce, jpsol) ) ; ALLOCATE( rloss(jpoce, jpsol) ) |
---|
182 | ALLOCATE( tokbot (jpoce, jpwat) ) |
---|
183 | |
---|
184 | fromsed(:,:) = 0. ; tosed(:,:) = 0. ; rloss(:,:) = 0. ; tokbot(:,:) = 0. |
---|
185 | |
---|
186 | ! Read sediment Namelist |
---|
187 | !------------------------- |
---|
188 | CALL sed_init_nam |
---|
189 | |
---|
190 | ! Initialization of sediment geometry |
---|
191 | !------------------------------------ |
---|
192 | CALL sed_init_geom |
---|
193 | |
---|
194 | |
---|
195 | ! sets initial sediment composition |
---|
196 | ! ( only clay or reading restart file ) |
---|
197 | !--------------------------------------- |
---|
198 | CALL sed_init_data |
---|
199 | |
---|
200 | |
---|
201 | CALL sed_init_wri |
---|
202 | |
---|
203 | |
---|
204 | END SUBROUTINE sed_init |
---|
205 | |
---|
206 | |
---|
207 | SUBROUTINE sed_init_geom |
---|
208 | !!---------------------------------------------------------------------- |
---|
209 | !! *** ROUTINE sed_init_geom *** |
---|
210 | !! |
---|
211 | !! ** Purpose : Initialization of sediment geometry |
---|
212 | !! - Read the deepest water layer thickness |
---|
213 | !! ( using as mask ) in Netcdf file |
---|
214 | !! - sets sediment grid, porosity and molecular weight |
---|
215 | !! and others constants |
---|
216 | !! |
---|
217 | !! History : |
---|
218 | !! ! 06-07 (C. Ethe) Original |
---|
219 | !!---------------------------------------------------------------------- |
---|
220 | !! * Modules used |
---|
221 | !! * local declarations |
---|
222 | INTEGER :: & |
---|
223 | ji, jj, jk |
---|
224 | |
---|
225 | #if defined key_sed_off |
---|
226 | REAL(wp) , DIMENSION (jpi,jpj) :: zdta |
---|
227 | INTEGER :: numpres |
---|
228 | #endif |
---|
229 | !---------------------------------------------------------- |
---|
230 | |
---|
231 | WRITE(numsed,*) ' sed_init_geom : Initialization of sediment geometry ' |
---|
232 | WRITE(numsed,*) ' ' |
---|
233 | |
---|
234 | ! Computation of 1D array of sediments points |
---|
235 | indoce = 0 |
---|
236 | DO jj = 1, jpj |
---|
237 | DO ji = 1, jpi |
---|
238 | IF ( epkbot(ji,jj) > 0. ) THEN |
---|
239 | indoce = indoce + 1 |
---|
240 | iarroce(indoce) = (jj - 1) * jpi + ji |
---|
241 | ENDIF |
---|
242 | END DO |
---|
243 | END DO |
---|
244 | |
---|
245 | IF( indoce .NE. jpoce ) THEN |
---|
246 | WRITE(numsed,*) ' ' |
---|
247 | WRITE(numsed,*) 'Warning : number of ocean points indoce = ', indoce, & |
---|
248 | & ' doesn''t match number of point where epkbot>0 jpoce = ', jpoce |
---|
249 | WRITE(numsed,*) ' ' |
---|
250 | WRITE(numsed,*) ' ' |
---|
251 | STOP |
---|
252 | ELSE |
---|
253 | WRITE(numsed,*) ' ' |
---|
254 | WRITE(numsed,*) ' total number of ocean points jpoce = ',jpoce |
---|
255 | WRITE(numsed,*) ' ' |
---|
256 | ENDIF |
---|
257 | |
---|
258 | #if defined key_sed_off |
---|
259 | |
---|
260 | ! Reading Netcdf Pisces file for deepest water layer thickness [m] |
---|
261 | ! This data will be used as mask to merdge space in 1D vector |
---|
262 | !---------------------------------------------------------------- |
---|
263 | CALL iom_open ( 'pressbot' , numpres ) |
---|
264 | |
---|
265 | ! pressure in bars |
---|
266 | CALL iom_get ( numpres, jpdom_data,'BATH', zdta(:,:) ) |
---|
267 | CALL pack_arr ( jpoce, press(1:jpoce), zdta(1:jpi,1:jpj), iarroce(1:jpoce) ) |
---|
268 | press(1:jpoce) = press(1:jpoce) * 1.025e-1 |
---|
269 | |
---|
270 | CALL iom_close ( numpres ) |
---|
271 | #endif |
---|
272 | |
---|
273 | |
---|
274 | ! mask sediment points for outputs |
---|
275 | DO jk = 1, jpksed |
---|
276 | tmasksed(:,:,jk) = tmask(:,:,1) |
---|
277 | ENDDO |
---|
278 | |
---|
279 | ! initialization of dzkbot in [cm] |
---|
280 | !------------------------------------------------ |
---|
281 | CALL pack_arr ( jpoce, dzkbot(1:jpoce), epkbot(1:jpi,1:jpj), iarroce(1:jpoce) ) |
---|
282 | dzkbot(1:jpoce) = dzkbot(1:jpoce) * 1.e+2 |
---|
283 | |
---|
284 | ! Geometry and constants |
---|
285 | ! sediment layer thickness [cm] |
---|
286 | ! (1st layer= diffusive layer = pur water) |
---|
287 | !------------------------------------------ |
---|
288 | dz(1) = 0.1 |
---|
289 | dz(2) = 0.3 |
---|
290 | dz(3) = 0.3 |
---|
291 | dz(4) = 0.5 |
---|
292 | dz(5) = 0.5 |
---|
293 | dz(6) = 0.5 |
---|
294 | dz(7) = 1. |
---|
295 | dz(8) = 1. |
---|
296 | dz(9) = 1. |
---|
297 | dz(10) = 2.45 |
---|
298 | dz(11) = 2.45 |
---|
299 | |
---|
300 | DO jk = 1, jpksed |
---|
301 | DO ji = 1, jpoce |
---|
302 | dz3d(ji,jk) = dz(jk) |
---|
303 | END DO |
---|
304 | ENDDO |
---|
305 | |
---|
306 | ! Depth(jk)= depth of middle of each layer |
---|
307 | !---------------------------------------- |
---|
308 | profsed(1) = -dz(1)/ 2. |
---|
309 | DO jk = 2, jpksed |
---|
310 | profsed(jk) = profsed(jk-1) + dz(jk-1) / 2. + dz(jk) / 2. |
---|
311 | ENDDO |
---|
312 | |
---|
313 | ! Porosity profile [0] |
---|
314 | !--------------------- |
---|
315 | por(1) = 1. |
---|
316 | por(2) = 0.95 |
---|
317 | por(3) = 0.9 |
---|
318 | por(4) = 0.85 |
---|
319 | por(5) = 0.81 |
---|
320 | por(6) = 0.75 |
---|
321 | por(7) = 0.75 |
---|
322 | por(8) = 0.75 |
---|
323 | por(9) = 0.75 |
---|
324 | por(10) = 0.75 |
---|
325 | por(11) = 0.75 |
---|
326 | |
---|
327 | ! inverse of Porosity profile |
---|
328 | !----------------------------- |
---|
329 | por1(:) = 1. - por(:) |
---|
330 | |
---|
331 | ! Volumes of pore water and solid fractions (vector and array) |
---|
332 | ! WARNING : volw(1) and vols(1) are sublayer volums |
---|
333 | volw(:) = dz(:) * por(:) |
---|
334 | vols(:) = dz(:) * por1(:) |
---|
335 | |
---|
336 | ! temporary new value for dz3d(:,1) |
---|
337 | dz3d(1:jpoce,1) = dzkbot(1:jpoce) |
---|
338 | |
---|
339 | ! WARNING : volw3d(:,1) and vols3d(:,1) are deepest water column volums |
---|
340 | DO jk = 1, jpksed |
---|
341 | volw3d(1:jpoce,jk) = dz3d(1:jpoce,jk) * por (jk) |
---|
342 | vols3d(1:jpoce,jk) = dz3d(1:jpoce,jk) * por1(jk) |
---|
343 | ENDDO |
---|
344 | |
---|
345 | ! Back to the old sublayer vlaue for dz3d(:,1) |
---|
346 | dz3d(1:jpoce,1) = dz(1) |
---|
347 | |
---|
348 | |
---|
349 | !--------------------------------------------- |
---|
350 | ! Molecular weight [g/mol] for solid species |
---|
351 | !--------------------------------------------- |
---|
352 | |
---|
353 | |
---|
354 | ! opal=sio2*0.4(h20)=28+2*16+0.4*(2+16) |
---|
355 | !--------------------------------------- |
---|
356 | mol_wgt(jsopal) = 28. + 2. * 16. + 0.4 * ( 2. + 16. ) |
---|
357 | |
---|
358 | ! clay |
---|
359 | ! some kind of Illit (according to Pape) |
---|
360 | ! K0.58(Al 1.38 Fe(III)0.37Fe(II)0.04Mg0.34)[(OH)2|(Si3.41Al0.59)O10] |
---|
361 | !-------------------------------------------------------------------- |
---|
362 | mol_wgt(jsclay) = 0.58 * 39. + 1.38 * 27. + ( 0.37 + 0.04 ) * 56.+ & |
---|
363 | & 0.34 * 24. + 2. * ( 16. + 1. ) + 3.41 * 38. + & |
---|
364 | & 0.59 * 27. + 10. * 16. |
---|
365 | |
---|
366 | ! for chemistry Poc : C(122)H(244)O(86)N(16)P(1) |
---|
367 | ! But den sity of Poc is an Hydrated material (= POC + 30H2O) |
---|
368 | ! So C(122)H(355)O(120)N(16)P(1) |
---|
369 | !------------------------------------------------------------ |
---|
370 | mol_wgt(jspoc) = ( 122. * 12. + 355. + 120. * 16.+ & |
---|
371 | & 16. * 14. + 31. ) / 122. |
---|
372 | |
---|
373 | ! CaCO3 |
---|
374 | !--------- |
---|
375 | mol_wgt(jscal) = 40. + 12. + 3. * 16. |
---|
376 | |
---|
377 | ! Density of solid material in sediment [g/cm**3] |
---|
378 | !------------------------------------------------ |
---|
379 | dens = 2.6 |
---|
380 | |
---|
381 | ! Initialization of diffusion coefficient as function of porosity [cm**2/s] |
---|
382 | !-------------------------------------------------------------------- |
---|
383 | diff(:) = dcoef * por(:) |
---|
384 | |
---|
385 | |
---|
386 | ! Initialization of time step as function of porosity [cm**2/s] |
---|
387 | !------------------------------------------------------------------ |
---|
388 | rdtsed(2:jpksed) = dtsed / ( dens * por1(2:jpksed) ) |
---|
389 | |
---|
390 | END SUBROUTINE sed_init_geom |
---|
391 | |
---|
392 | SUBROUTINE sed_init_nam |
---|
393 | !!---------------------------------------------------------------------- |
---|
394 | !! *** ROUTINE sed_init_nam *** |
---|
395 | !! |
---|
396 | !! ** Purpose : Initialization of sediment geometry |
---|
397 | !! - Reading namelist and defines constants variables |
---|
398 | !! |
---|
399 | !! History : |
---|
400 | !! ! 06-07 (C. Ethe) Original |
---|
401 | !!---------------------------------------------------------------------- |
---|
402 | |
---|
403 | INTEGER :: & |
---|
404 | numnamsed = 28 |
---|
405 | |
---|
406 | TYPE PSED |
---|
407 | CHARACTER(len = 20) :: snamesed !: short name |
---|
408 | CHARACTER(len = 80 ) :: lnamesed !: long name |
---|
409 | CHARACTER(len = 20 ) :: unitsed !: unit |
---|
410 | END TYPE PSED |
---|
411 | |
---|
412 | TYPE(PSED) , DIMENSION(jpsol ) :: sedsol |
---|
413 | TYPE(PSED) , DIMENSION(jpwat ) :: sedwat |
---|
414 | TYPE(PSED) , DIMENSION(jpdia3dsed) :: seddiag3d |
---|
415 | TYPE(PSED) , DIMENSION(jpdia2dsed) :: seddiag2d |
---|
416 | |
---|
417 | NAMELIST/nam_time/nfreq |
---|
418 | NAMELIST/nam_trased/sedsol, sedwat |
---|
419 | NAMELIST/nam_diased/seddiag3d, seddiag2d |
---|
420 | NAMELIST/nam_reac/sisat, claysat, rcopal, rcclay, dcoef |
---|
421 | NAMELIST/nam_poc/redO2, redNo3, redPo4, redC, redDnit, & |
---|
422 | & rcorg, o2seuil, rcorgN |
---|
423 | NAMELIST/nam_cal/rccal |
---|
424 | NAMELIST/nam_dc13/pdb, rc13P, rc13Ca |
---|
425 | NAMELIST/nam_btb/dbiot |
---|
426 | NAMELIST/nam_rst/ln_rst_sed |
---|
427 | |
---|
428 | INTEGER :: jn, jn1 |
---|
429 | !------------------------------------------------------- |
---|
430 | |
---|
431 | WRITE(numsed,*) ' sed_init_nam : Read namelists ' |
---|
432 | WRITE(numsed,*) ' ' |
---|
433 | |
---|
434 | ! ryear = 1 year converted in second |
---|
435 | !------------------------------------ |
---|
436 | WRITE(numsed,*) ' ' |
---|
437 | WRITE(numsed,*) 'number of seconds in one year : ryear = ', ryear |
---|
438 | WRITE(numsed,*) ' ' |
---|
439 | |
---|
440 | ! Reading namelist.sed variables |
---|
441 | !--------------------------------- |
---|
442 | CALL ctl_opn( numnamsed, 'namelist.sediment', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) |
---|
443 | |
---|
444 | dtsed = rdt |
---|
445 | #if ! defined key_sed_off |
---|
446 | nitsed000 = nittrc000 |
---|
447 | nitsedend = nitend |
---|
448 | nwrised = nwritetrc |
---|
449 | #else |
---|
450 | nitsed000 = nit000 |
---|
451 | nitsedend = nitend |
---|
452 | nwrised = nwrite |
---|
453 | #endif |
---|
454 | ! Diffraction/reaction parameters |
---|
455 | !---------------------------------- |
---|
456 | READ( numnamsed, nam_time ) |
---|
457 | WRITE(numsed,*) ' namelist nam_time' |
---|
458 | |
---|
459 | #if ! defined key_sed_off |
---|
460 | nfreq = 1 |
---|
461 | #endif |
---|
462 | |
---|
463 | WRITE(numsed,*) ' sedimentation time step dtsed = ', dtsed |
---|
464 | WRITE(numsed,*) ' 1st time step for sediment. nitsed000 = ', nitsed000 |
---|
465 | WRITE(numsed,*) ' last time step for sediment. nitsedend = ', nitsedend |
---|
466 | WRITE(numsed,*) ' frequency of sediment outputs nwrised = ', nwrised |
---|
467 | WRITE(numsed,*) ' frequency of restoring inputs data nfreq = ', nfreq |
---|
468 | WRITE(numsed,*) ' ' |
---|
469 | |
---|
470 | REWIND( numnamsed ) ! read nattrc |
---|
471 | READ ( numnamsed, nam_trased ) |
---|
472 | |
---|
473 | DO jn = 1, jpsol |
---|
474 | sedtrcd(jn) = sedsol(jn)%snamesed |
---|
475 | sedtrcl(jn) = sedsol(jn)%lnamesed |
---|
476 | sedtrcu(jn) = sedsol(jn)%unitsed |
---|
477 | END DO |
---|
478 | |
---|
479 | DO jn = 1, jpwat |
---|
480 | jn1 = jn + jpsol |
---|
481 | sedtrcd(jn1) = sedwat(jn)%snamesed |
---|
482 | sedtrcl(jn1) = sedwat(jn)%lnamesed |
---|
483 | sedtrcu(jn1) = sedwat(jn)%unitsed |
---|
484 | END DO |
---|
485 | |
---|
486 | WRITE(numsed,*) ' namelist nam_trased' |
---|
487 | WRITE(numsed,*) ' ' |
---|
488 | DO jn = 1, jptrased |
---|
489 | WRITE(numsed,*) 'name of 3d output sediment field number :',jn,' : ',TRIM(sedtrcd(jn)) |
---|
490 | WRITE(numsed,*) 'long name ', TRIM(sedtrcl(jn)) |
---|
491 | WRITE(numsed,*) ' in unit = ', TRIM(sedtrcu(jn)) |
---|
492 | WRITE(numsed,*) ' ' |
---|
493 | END DO |
---|
494 | WRITE(numsed,*) ' ' |
---|
495 | |
---|
496 | |
---|
497 | REWIND( numnamsed ) |
---|
498 | READ( numnamsed, nam_diased ) |
---|
499 | |
---|
500 | DO jn = 1, jpdia3dsed |
---|
501 | seddia3d(jn) = seddiag3d(jn)%snamesed |
---|
502 | seddia3l(jn) = seddiag3d(jn)%lnamesed |
---|
503 | seddia3u(jn) = seddiag3d(jn)%unitsed |
---|
504 | END DO |
---|
505 | |
---|
506 | DO jn = 1, jpdia2dsed |
---|
507 | seddia2d(jn) = seddiag2d(jn)%snamesed |
---|
508 | seddia2l(jn) = seddiag2d(jn)%lnamesed |
---|
509 | seddia2u(jn) = seddiag2d(jn)%unitsed |
---|
510 | END DO |
---|
511 | |
---|
512 | WRITE(numsed,*) ' namelist nam_diased' |
---|
513 | WRITE(numsed,*) ' ' |
---|
514 | DO jn = 1, jpdia3dsed |
---|
515 | WRITE(numsed,*) 'name of 3D output diag number :',jn, ' : ', TRIM(seddia3d(jn)) |
---|
516 | WRITE(numsed,*) 'long name ', TRIM(seddia3l(jn)) |
---|
517 | WRITE(numsed,*) ' in unit = ',TRIM(seddia3u(jn)) |
---|
518 | WRITE(numsed,*) ' ' |
---|
519 | END DO |
---|
520 | |
---|
521 | DO jn = 1, jpdia2dsed |
---|
522 | WRITE(numsed,*) 'name of 2D output diag number :',jn, ' : ', TRIM(seddia2d(jn)) |
---|
523 | WRITE(numsed,*) 'long name ', TRIM(seddia2l(jn)) |
---|
524 | WRITE(numsed,*) ' in unit = ',TRIM(seddia2u(jn)) |
---|
525 | WRITE(numsed,*) ' ' |
---|
526 | END DO |
---|
527 | |
---|
528 | WRITE(numsed,*) ' ' |
---|
529 | |
---|
530 | |
---|
531 | ! Diffraction/reaction parameters |
---|
532 | !---------------------------------- |
---|
533 | REWIND( numnamsed ) |
---|
534 | READ( numnamsed, nam_reac ) |
---|
535 | WRITE(numsed,*) ' namelist nam_reac' |
---|
536 | WRITE(numsed,*) ' saturation for si sisat = ', sisat |
---|
537 | WRITE(numsed,*) ' saturation for clay claysat = ', claysat |
---|
538 | WRITE(numsed,*) ' reactivity for Si rcopal = ', rcopal |
---|
539 | WRITE(numsed,*) ' reactivity for clay rcclay = ', rcclay |
---|
540 | WRITE(numsed,*) ' diff. coef for por. dcoef = ', dcoef |
---|
541 | WRITE(numsed,*) ' ' |
---|
542 | |
---|
543 | |
---|
544 | ! Unity conversion to get saturation conc. psat in [mol.l-1] |
---|
545 | ! and reactivity rc in [l.mol-1.s-1] |
---|
546 | !---------------------------------------------------------- |
---|
547 | sat_sil = sisat * 1.e-6 |
---|
548 | sat_clay = claysat * 1.e-6 |
---|
549 | |
---|
550 | reac_sil = rcopal / ryear |
---|
551 | reac_clay = rcclay / ryear |
---|
552 | |
---|
553 | |
---|
554 | ! Additional parameter linked to POC/O2/No3/Po4 |
---|
555 | !---------------------------------------------- |
---|
556 | REWIND( numnamsed ) |
---|
557 | READ( numnamsed, nam_poc ) |
---|
558 | WRITE(numsed,*) ' namelist nam_poc' |
---|
559 | WRITE(numsed,*) ' Redfield coef for oxy redO2 = ', redO2 |
---|
560 | WRITE(numsed,*) ' Redfield coef for no3 redNo3 = ', redNo3 |
---|
561 | WRITE(numsed,*) ' Redfield coef for po4 redPo4 = ', redPo4 |
---|
562 | WRITE(numsed,*) ' Redfield coef for carbone redC = ', redC |
---|
563 | WRITE(numsed,*) ' Redfield coef for denitri redDnit = ', redDnit |
---|
564 | WRITE(numsed,*) ' reactivity for POC/O2 rcorg = ', rcorg |
---|
565 | WRITE(numsed,*) ' threshold O2 concen. o2seuil = ', o2seuil |
---|
566 | WRITE(numsed,*) ' reactivity for POC/NO3 rcorgN = ', rcorgN |
---|
567 | WRITE(numsed,*) ' ' |
---|
568 | |
---|
569 | |
---|
570 | so2ut = redO2 / redC |
---|
571 | srno3 = redNo3 / redC |
---|
572 | spo4r = redPo4 / redC |
---|
573 | srDnit = redDnit / redC |
---|
574 | sthro2 = o2seuil * 1.e-6 ! threshold O2 concen. in [mol.l-1] |
---|
575 | ! reactivity rc in [l.mol-1.s-1] |
---|
576 | reac_poc = rcorg / ryear |
---|
577 | reac_no3 = rcorgN / ryear |
---|
578 | |
---|
579 | |
---|
580 | ! Carbonate parameters |
---|
581 | !--------------------- |
---|
582 | READ( numnamsed, nam_cal ) |
---|
583 | WRITE(numsed,*) ' namelist nam_cal' |
---|
584 | WRITE(numsed,*) ' reactivity for calcite rccal = ', rccal |
---|
585 | WRITE(numsed,*) ' ' |
---|
586 | |
---|
587 | ! reactivity rc in [l.mol-1.s-1] |
---|
588 | reac_cal = rccal / ryear |
---|
589 | |
---|
590 | |
---|
591 | ! C13 parameters |
---|
592 | !---------------- |
---|
593 | READ( numnamsed, nam_dc13 ) |
---|
594 | WRITE(numsed,*) ' namelist nam_dc13 ' |
---|
595 | WRITE(numsed,*) ' 13C/12C in PD Belemnite PDB = ', pdb |
---|
596 | WRITE(numsed,*) ' 13C/12C in POC = rc13P*PDB rc13P = ', rc13P |
---|
597 | WRITE(numsed,*) ' 13C/12C in CaCO3 = rc13Ca*PDB rc13Ca = ', rc13Ca |
---|
598 | WRITE(numsed,*) ' ' |
---|
599 | |
---|
600 | |
---|
601 | ! Bioturbation parameter |
---|
602 | !------------------------ |
---|
603 | READ( numnamsed, nam_btb ) |
---|
604 | WRITE(numsed,*) ' namelist nam_btb ' |
---|
605 | WRITE(numsed,*) ' coefficient for bioturbation dbiot = ', dbiot |
---|
606 | WRITE(numsed,*) ' ' |
---|
607 | |
---|
608 | ! Unity convertion to get bioturb coefficient in [cm2.s-1] |
---|
609 | db = dbiot / ( ryear * 1000. ) |
---|
610 | |
---|
611 | ! Initial value (t=0) for sediment pore water and solid components |
---|
612 | !---------------------------------------------------------------- |
---|
613 | READ( numnamsed, nam_rst ) |
---|
614 | WRITE(numsed,*) ' namelist nam_rst ' |
---|
615 | WRITE(numsed,*) ' boolean term for restart (T or F) ln_rst_sed = ', ln_rst_sed |
---|
616 | WRITE(numsed,*) ' ' |
---|
617 | |
---|
618 | CLOSE( numnamsed ) |
---|
619 | |
---|
620 | END SUBROUTINE sed_init_nam |
---|
621 | |
---|
622 | SUBROUTINE sed_init_data |
---|
623 | !!---------------------------------------------------------------------- |
---|
624 | !! *** ROUTINE sed_init_data *** |
---|
625 | !! |
---|
626 | !! ** Purpose : Initialization of sediment module |
---|
627 | !! - sets initial sediment composition |
---|
628 | !! ( only clay or reading restart file ) |
---|
629 | !! |
---|
630 | !! History : |
---|
631 | !! ! 06-07 (C. Ethe) original |
---|
632 | !!---------------------------------------------------------------------- |
---|
633 | |
---|
634 | ! local variables |
---|
635 | INTEGER :: & |
---|
636 | ji, jk, zhipor |
---|
637 | |
---|
638 | !-------------------------------------------------------------------- |
---|
639 | |
---|
640 | |
---|
641 | IF( .NOT. ln_rst_sed ) THEN |
---|
642 | |
---|
643 | WRITE(numsed,*) ' Initilization of default values of sediment components' |
---|
644 | |
---|
645 | ! default values for initial pore water concentrations [mol/l] |
---|
646 | pwcp(:,:,:) = 0. |
---|
647 | ! default value for initial solid component (fraction of dry weight dim=[0]) |
---|
648 | ! clay |
---|
649 | solcp(:,:,:) = 0. |
---|
650 | solcp(:,2:jpksed,jsclay) = 1. |
---|
651 | |
---|
652 | ! Initialization of [h+] and [co3--] |
---|
653 | |
---|
654 | zhipor = 8. |
---|
655 | ! Initialization of [h+] in mol/kg |
---|
656 | DO jk = 1, jpksed |
---|
657 | DO ji = 1, jpoce |
---|
658 | hipor (ji,jk) = 10.**( -1. * zhipor ) |
---|
659 | ENDDO |
---|
660 | ENDDO |
---|
661 | |
---|
662 | co3por(:,:) = 0. |
---|
663 | |
---|
664 | ELSE |
---|
665 | |
---|
666 | WRITE(numsed,*) ' Initilization of Sediment components from restart' |
---|
667 | |
---|
668 | CALL sed_rst_read |
---|
669 | |
---|
670 | ENDIF |
---|
671 | |
---|
672 | |
---|
673 | ! Load initial Pisces Data for bot. wat. Chem and fluxes |
---|
674 | CALL sed_dta ( nitsed000 ) |
---|
675 | |
---|
676 | ! Initialization of chemical constants |
---|
677 | CALL sed_chem ( nitsed000 ) |
---|
678 | |
---|
679 | ! Stores initial sediment data for mass balance calculation |
---|
680 | pwcp0 (1:jpoce,1:jpksed,1:jpwat ) = pwcp (1:jpoce,1:jpksed,1:jpwat ) |
---|
681 | solcp0(1:jpoce,1:jpksed,1:jpsol ) = solcp(1:jpoce,1:jpksed,1:jpsol) |
---|
682 | |
---|
683 | ! Conversion of [h+] in mol/Kg to get it in mol/l ( multiplication by density) |
---|
684 | DO jk = 1, jpksed |
---|
685 | hipor(1:jpoce,jk) = hipor(1:jpoce,jk) * densSW(1:jpoce) |
---|
686 | ENDDO |
---|
687 | |
---|
688 | |
---|
689 | ! In default case - no restart - sedco3 is run to initiate [h+] and [co32-] |
---|
690 | ! Otherwise initiate values of pH and co3 read in restart |
---|
691 | IF( .NOT. ln_rst_sed ) THEN |
---|
692 | ! sedco3 is run to initiate[h+] [co32-] in mol/l of solution |
---|
693 | CALL sed_co3 ( nitsed000 ) |
---|
694 | |
---|
695 | ENDIF |
---|
696 | |
---|
697 | END SUBROUTINE sed_init_data |
---|
698 | |
---|
699 | SUBROUTINE sed_init_wri |
---|
700 | |
---|
701 | INTEGER :: jk |
---|
702 | |
---|
703 | WRITE(numsed,*)' ' |
---|
704 | WRITE(numsed,*)'======== Write summary of initial state ============' |
---|
705 | WRITE(numsed,*)' ' |
---|
706 | WRITE(numsed,*)' ' |
---|
707 | WRITE(numsed,*)'-------------------------------------------------------------------' |
---|
708 | WRITE(numsed,*)' Initial Conditions ' |
---|
709 | WRITE(numsed,*)'-------------------------------------------------------------------' |
---|
710 | WRITE(numsed,*)'dzm = dzkbot minimum to calculate ', 0. |
---|
711 | WRITE(numsed,*)'Local zone : jpi, jpj : ',jpi, jpj |
---|
712 | WRITE(numsed,*)'jpoce = ',jpoce,' nbtot pts = ',jpij,' nb earth pts = ',jpij - jpoce |
---|
713 | WRITE(numsed,*)'sublayer thickness dz(1) [cm] : ', dz(1) |
---|
714 | WRITE(numsed,*)'Coeff diff for k=1 (cm2/s) : ',diff(1) |
---|
715 | WRITE(numsed,*)' nb solid comp : ',jpsol |
---|
716 | WRITE(numsed,*)'(1=opal,2=clay,3=POC,4=CaCO3)' |
---|
717 | WRITE(numsed,*)'weight mol 1,2,3,4' |
---|
718 | WRITE(numsed,'(4(F0.2,3X))')mol_wgt(jsopal),mol_wgt(jsclay),mol_wgt(jspoc),mol_wgt(jscal) |
---|
719 | WRITE(numsed,*)'nb dissolved comp',jpwat |
---|
720 | WRITE(numsed,*)'(1=silicic acid,2="dissolved" clay,3=O2,4=DIC,5=Nitrate,& |
---|
721 | &6=Phosphates,7=Alk))' |
---|
722 | WRITE(numsed,*)'Psat (umol/l) for silicic Acid and "dissolved" clay' |
---|
723 | WRITE(numsed,'(2(F0.2,3X))') sat_sil * 1e+6, sat_clay * 1e+6 |
---|
724 | WRITE(numsed,*)'reaction rate rc for Op/si,Clay,POC/O2,caco3, POC/No3 (an-1)' |
---|
725 | WRITE(numsed,'(5(F0.2,3X))') reac_sil * ryear, reac_clay * ryear, reac_poc * ryear, & |
---|
726 | reac_cal * ryear, reac_no3 * ryear |
---|
727 | WRITE(numsed,*)'redfield coef C,O,N P Dit ' |
---|
728 | WRITE(numsed,'(5(F0.2,3X))')1./spo4r,so2ut/spo4r,srno3/spo4r,spo4r/spo4r,srDnit/spo4r |
---|
729 | WRITE(numsed,*)'threshold for stating denitrification [mol/l]' |
---|
730 | WRITE(numsed,'(1PE8.2)') sthrO2 |
---|
731 | WRITE(numsed,*)'-------------------------------------------------------------------' |
---|
732 | WRITE(numsed,*)'Min-Max-Mean' |
---|
733 | WRITE(numsed,*)'For each variable : min, max, moy value observed on selected local zone' |
---|
734 | WRITE(numsed,*)'-------------------------------------------------------------------' |
---|
735 | WRITE(numsed,*)'thickness of the last wet layer dzkbot [m]' |
---|
736 | WRITE(numsed,'(3(F0.2,3X))') MINVAL(dzkbot(1:jpoce))/100.,MAXVAL(dzkbot(1:jpoce))/100.,& |
---|
737 | &SUM(dzkbot(1:jpoce))/jpoce/100. |
---|
738 | WRITE(numsed,*)'temp [°C]' |
---|
739 | WRITE(numsed,'(3(F0.2,3X))') MINVAL(temp(1:jpoce)),MAXVAL(temp(1:jpoce)),& |
---|
740 | & SUM(temp(1:jpoce))/jpoce |
---|
741 | WRITE(numsed,*)'salt o/oo' |
---|
742 | WRITE(numsed,'(3(F0.2,3X))')MINVAL(salt(1:jpoce)),MAXVAL(salt(1:jpoce)),& |
---|
743 | & SUM(salt(1:jpoce))/jpoce |
---|
744 | #if defined key_sed_off |
---|
745 | WRITE(numsed,*)'pressure [bar] (depth in m is about 10*pressure)' |
---|
746 | WRITE(numsed,'(3(F0.2,3X))') MINVAL(press(1:jpoce)),MAXVAL(press(1:jpoce)),& |
---|
747 | & SUM(press(1:jpoce))/jpoce |
---|
748 | #endif |
---|
749 | WRITE(numsed,*)'density of Sea Water' |
---|
750 | WRITE(numsed,'(3(F0.2,3X))') MINVAL(densSW(1:jpoce)), MAXVAL(densSW(1:jpoce)),& |
---|
751 | & SUM(densSW(1:jpoce))/jpoce |
---|
752 | WRITE(numsed,*)'' |
---|
753 | WRITE(numsed,*)' Dissolved Components ' |
---|
754 | WRITE(numsed,*)' =====================' |
---|
755 | WRITE(numsed,*)'[Si(OH)4] dissolved (1)(k=1)(µmol/l)(and min value in mol/kg of solution)' |
---|
756 | WRITE(numsed,'(4(F0.3,2X))') MINVAL(pwcp(1:jpoce,1,jwsil))*1.e+6,MAXVAL(pwcp(1:jpoce,1,jwsil))*1.e+6,& |
---|
757 | & SUM(pwcp(1:jpoce,1,jwsil))*1.e+6/jpoce,& |
---|
758 | & MINVAL(pwcp(1:jpoce,1,jwsil)*1.e+6/densSW(1:jpoce)) |
---|
759 | WRITE(numsed,*)'[O2] dissolved (3) (k=1)(µmol/l)(and min value in mol/kg of solution)' |
---|
760 | WRITE(numsed,'(4(F0.3,2X))') MINVAL(pwcp(1:jpoce,1,jwoxy))*1.e+6,MAXVAL(pwcp(1:jpoce,1,jwoxy))*1.e+6,& |
---|
761 | &SUM(pwcp(1:jpoce,1,jwoxy))*1.e+6/jpoce,& |
---|
762 | &MINVAL(pwcp(1:jpoce,1,jwoxy)*1.e+6/densSW(1:jpoce)) |
---|
763 | WRITE(numsed,*)'[DIC] dissolved (4) (k=1)(µmol/l)(and min value in mol/kg of solution)' |
---|
764 | WRITE(numsed,'(4(F0.3,2X))') MINVAL(pwcp(1:jpoce,1,jwdic))*1.e+6,MAXVAL(pwcp(1:jpoce,1,jwdic))*1.e+6,& |
---|
765 | &SUM(pwcp(1:jpoce,1,jwdic))*1.e+6/jpoce,& |
---|
766 | &MINVAL(pwcp(1:jpoce,1,jwdic)*1.e+6/densSW(1:jpoce)) |
---|
767 | WRITE(numsed,*)'[NO3] dissolved (5) (k=1)(µmol/l)(and min value in mol/kg of solution)' |
---|
768 | WRITE(numsed,'(4(F0.3,2X))') MINVAL(pwcp(1:jpoce,1,jwno3))*1.e+6,MAXVAL(pwcp(1:jpoce,1,jwno3))*1.e+6,& |
---|
769 | &SUM(pwcp(1:jpoce,1,jwno3))*1.e+6/jpoce,& |
---|
770 | &MINVAL(pwcp(1:jpoce,1,jwno3)*1.e+6/densSW(1:jpoce)) |
---|
771 | WRITE(numsed,*)'[PO4] dissolved (6) (k=1)(µmol/l)(and min value in mol/kg of solution)' |
---|
772 | WRITE(numsed,'(4(F0.3,2X))') MINVAL(pwcp(1:jpoce,1,jwpo4))*1.e+6,MAXVAL(pwcp(1:jpoce,1,jwpo4))*1.e+6,& |
---|
773 | &SUM(pwcp(1:jpoce,1,jwpo4))*1.e+6/jpoce,& |
---|
774 | &MINVAL(pwcp(1:jpoce,1,jwpo4)*1.e+6/densSW(1:jpoce)) |
---|
775 | WRITE(numsed,*)'[Alk] dissolved (7) (k=1)(µequi)(and min value in mol/kg of solution)' |
---|
776 | WRITE(numsed,'(4(F0.3,2X))') MINVAL(pwcp(1:jpoce,1,jwalk))*1.e+6,MAXVAL(pwcp(1:jpoce,1,jwalk))*1.e+6,& |
---|
777 | &SUM(pwcp(1:jpoce,1,jwalk))*1.e+6/jpoce,& |
---|
778 | &MINVAL(pwcp(1:jpoce,1,jwalk)*1.e+6/densSW(1:jpoce)) |
---|
779 | WRITE(numsed,*)'[DIC13] dissolved (8) (k=1)(µmol/l)(and min value in mol/kg of solution)' |
---|
780 | WRITE(numsed,'(4(F0.3,2X))') MINVAL(pwcp(1:jpoce,1,jwc13))*1.e+6,MAXVAL(pwcp(1:jpoce,1,jwc13))*1.e+6,& |
---|
781 | &SUM(pwcp(1:jpoce,1,jwc13))*1.e+6/jpoce,& |
---|
782 | &MINVAL(pwcp(1:jpoce,1,jwc13)*1.e+6/densSW(1:jpoce)) |
---|
783 | WRITE(numsed,*)'' |
---|
784 | WRITE(numsed,*)' Solid Components ' |
---|
785 | WRITE(numsed,*)' =====================' |
---|
786 | WRITE(numsed,*)'nmole of Opale rained per dt' |
---|
787 | WRITE(numsed,'(3(1PE9.3,2X))') MINVAL(rainrm(1:jpoce,jsopal))*dtsed,MAXVAL(rainrm(1:jpoce,jsopal))*dtsed,& |
---|
788 | &SUM(rainrm(1:jpoce,1))*dtsed/jpoce |
---|
789 | WRITE(numsed,*)'nmole of Clay rained per dt' |
---|
790 | WRITE(numsed,'(3(1PE9.3,2X))') MINVAL(rainrm(1:jpoce,jsclay))*dtsed,MAXVAL(rainrm(1:jpoce,jsclay))*dtsed,& |
---|
791 | &SUM(rainrm(1:jpoce,jsclay))*dtsed/jpoce |
---|
792 | WRITE(numsed,*)'nmole of POC rained per dt' |
---|
793 | WRITE(numsed,'(3(1PE9.3,2X))') MINVAL(rainrm(1:jpoce,jspoc))*dtsed,MAXVAL(rainrm(1:jpoce,jspoc))*dtsed,& |
---|
794 | &SUM(rainrm(1:jpoce,jspoc))*dtsed/jpoce |
---|
795 | WRITE(numsed,*)'nmole of CaCO3 rained per dt' |
---|
796 | WRITE(numsed,'(3(1PE9.3,2X))') MINVAL(rainrm(1:jpoce,jscal))*dtsed,MAXVAL(rainrm(1:jpoce,jscal))*dtsed,& |
---|
797 | &SUM(rainrm(1:jpoce,jscal))*dtsed/jpoce |
---|
798 | WRITE(numsed,*)' ' |
---|
799 | WRITE(numsed,*)'Weight frac of opal rained (%) ' |
---|
800 | WRITE(numsed,'(3(F0.3,7X))') MINVAL(rainrg(1:jpoce,jsopal)/raintg(1:jpoce))*100.,& |
---|
801 | &MAXVAL(rainrg(1:jpoce,jsopal)/raintg(1:jpoce))*100.,& |
---|
802 | & SUM(rainrg(1:jpoce,jsopal)/raintg(1:jpoce))*100./jpoce |
---|
803 | WRITE(numsed,*)'Weight frac of clay rained (%) ' |
---|
804 | WRITE(numsed,'(3(F0.3,7X))') MINVAL(rainrg(1:jpoce,jsclay)/raintg(1:jpoce))*100.,& |
---|
805 | &MAXVAL(rainrg(1:jpoce,jsclay)/raintg(1:jpoce))*100.,& |
---|
806 | &SUM(rainrg(1:jpoce,jsclay)/raintg(1:jpoce))*100./jpoce |
---|
807 | WRITE(numsed,*)'Weight frac of POC rained (%)' |
---|
808 | WRITE(numsed,'(3(F0.3,7X))') MINVAL(rainrg(1:jpoce,jspoc)/raintg(1:jpoce))*100.,& |
---|
809 | &MAXVAL(rainrg(1:jpoce,jspoc)/raintg(1:jpoce))*100.,& |
---|
810 | &SUM(rainrg(1:jpoce,jspoc)/raintg(1:jpoce))*100./jpoce |
---|
811 | WRITE(numsed,*)'Weight frac of CaCO3 rained (%)' |
---|
812 | WRITE(numsed,'(3(F0.3,7X))') MINVAL(rainrg(1:jpoce,jscal)/raintg(1:jpoce))*100.,& |
---|
813 | &MAXVAL(rainrg(1:jpoce,jscal)/raintg(1:jpoce))*100.,& |
---|
814 | &SUM(rainrg(1:jpoce,jscal)/raintg(1:jpoce))*100./jpoce |
---|
815 | WRITE(numsed,*)'' |
---|
816 | WRITE(numsed,*)' Thickness of sediment layer added by particule rain, dzdep cm ' |
---|
817 | WRITE(numsed,*)' ==============================================================' |
---|
818 | WRITE(numsed,'(3(F0.5,2X))') MINVAL(dzdep(1:jpoce)),MAXVAL(dzdep(1:jpoce)),SUM(dzdep(1:jpoce))/jpoce |
---|
819 | WRITE(numsed,*)'' |
---|
820 | WRITE(numsed,*)' chemical constants K1,pK1,K2,pK2,Kw,pKw and Kb pKb (min max) [mol/kgsol] or [mol/kgsol]2 ' |
---|
821 | WRITE(numsed,*)' =========================================================================================' |
---|
822 | WRITE(numsed,'(4(1PE10.3,2X))')MINVAL(ak1s(1:jpoce)),MAXVAL(ak1s(1:jpoce)),-LOG10(MINVAL(ak1s(1:jpoce))),& |
---|
823 | &-LOG10(MAXVAL(ak1s(1:jpoce))) |
---|
824 | WRITE(numsed,'(4(1PE10.3,2X))')MINVAL(ak2s(1:jpoce)),MAXVAL(ak2s(1:jpoce)),-LOG10(MINVAL(ak2s(1:jpoce))),& |
---|
825 | &-LOG10(MAXVAL(ak2s(1:jpoce))) |
---|
826 | WRITE(numsed,'(4(1PE10.3,2X))')MINVAL(akws(1:jpoce)),MAXVAL(akws(1:jpoce)),-LOG10(MINVAL(akws(1:jpoce))),& |
---|
827 | &-LOG10(MAXVAL(akws(1:jpoce))) |
---|
828 | WRITE(numsed,'(4(1PE10.3,2X))')MINVAL(akbs(1:jpoce)),MAXVAL(akbs(1:jpoce)),-LOG10(MINVAL(akbs(1:jpoce))),& |
---|
829 | &-LOG10(MAXVAL(akbs(1:jpoce))) |
---|
830 | WRITE(numsed,*)'and boron' |
---|
831 | WRITE(numsed,'(2(1PE10.3,2X))')MINVAL(borats(1:jpoce)),MAXVAL(borats(1:jpoce)) |
---|
832 | WRITE(numsed,*)'' |
---|
833 | WRITE(numsed,*)' Compo of initial sediment for point jpoce' |
---|
834 | WRITE(numsed,*)' =========================================' |
---|
835 | WRITE(numsed,*)'solcp(1), solcp(2), solcp(3), solcp(4), hipor, pH, co3por' |
---|
836 | DO jk = 1,jpksed |
---|
837 | WRITE(numsed,'(7(1PE10.3,2X))')solcp(jpoce,jk,jsopal),solcp(jpoce,jk,jsclay),solcp(jpoce,jk,jspoc),solcp(jpoce,jk,jscal),& |
---|
838 | & hipor(jpoce,jk),-LOG10(hipor(jpoce,jk)/densSW(jpoce)),co3por(jpoce,jk) |
---|
839 | ENDDO |
---|
840 | WRITE(numsed,'(A82)')'pwcp(1), pwcp(2), pwcp(3), pwcp(4), pwcp(5), pwcp(6), pwcp(7)' |
---|
841 | DO jk = 1, jpksed |
---|
842 | WRITE(numsed,'(7(1PE10.3,2X))')pwcp(jpoce,jk,jwsil),pwcp(jpoce,jk,jwoxy),pwcp(jpoce,jk,jwdic),& |
---|
843 | & pwcp(jpoce,jk,jwno3),pwcp(jpoce,jk,jwpo4),pwcp(jpoce,jk,jwalk),pwcp(jpoce,jk,jwc13) |
---|
844 | ENDDO |
---|
845 | WRITE(numsed,*) ' ' |
---|
846 | WRITE(numsed,*) ' End Of Initialization ' |
---|
847 | WRITE(numsed,*) ' ' |
---|
848 | ! |
---|
849 | END SUBROUTINE sed_init_wri |
---|
850 | #else |
---|
851 | !!---------------------------------------------------------------------- |
---|
852 | !! Dummy module : NO Sediment model |
---|
853 | !!---------------------------------------------------------------------- |
---|
854 | CONTAINS |
---|
855 | SUBROUTINE sed_ini ! Empty routine |
---|
856 | END SUBROUTINE sed_ini |
---|
857 | #endif |
---|
858 | |
---|
859 | |
---|
860 | END MODULE sedini |
---|