[1179] | 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 |
---|
[1581] | 19 | USE in_out_manager ! I/O manager |
---|
[1179] | 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 |
---|
[1250] | 80 | INTEGER :: numblt |
---|
| 81 | INTEGER :: nummsh |
---|
[1179] | 82 | REAL(wp) , DIMENSION(jpi,jpj) :: zdta |
---|
| 83 | #endif |
---|
| 84 | !!---------------------------------------------------------------------- |
---|
| 85 | |
---|
| 86 | |
---|
| 87 | ! Reading namelist.sed variables |
---|
| 88 | !--------------------------------------- |
---|
| 89 | |
---|
[1581] | 90 | CALL ctl_opn( numsed, 'sediment.output', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) |
---|
[1179] | 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 |
---|
[1290] | 227 | INTEGER :: numpres |
---|
[1179] | 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 | |
---|
[1250] | 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 |
---|
[1179] | 411 | |
---|
[1250] | 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 | |
---|
[1179] | 417 | NAMELIST/nam_time/nfreq |
---|
[1250] | 418 | NAMELIST/nam_trased/sedsol, sedwat |
---|
| 419 | NAMELIST/nam_diased/seddiag3d, seddiag2d |
---|
[1179] | 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 | |
---|
[1250] | 428 | INTEGER :: jn, jn1 |
---|
[1179] | 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 |
---|
[1290] | 441 | !--------------------------------- |
---|
[1581] | 442 | CALL ctl_opn( numnamsed, 'namelist.sediment', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE. ) |
---|
[1179] | 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 | |
---|
[1188] | 459 | #if ! defined key_sed_off |
---|
| 460 | nfreq = 1 |
---|
| 461 | #endif |
---|
| 462 | |
---|
[1179] | 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 | |
---|
[1250] | 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,*) ' ' |
---|
[1179] | 488 | DO jn = 1, jptrased |
---|
[1250] | 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,*) ' ' |
---|
[1179] | 493 | END DO |
---|
| 494 | WRITE(numsed,*) ' ' |
---|
| 495 | |
---|
| 496 | |
---|
[1250] | 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 |
---|
[1179] | 504 | END DO |
---|
[1250] | 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' |
---|
[1179] | 513 | WRITE(numsed,*) ' ' |
---|
[1250] | 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 |
---|
[1179] | 520 | |
---|
[1250] | 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 |
---|
[1179] | 527 | |
---|
[1250] | 528 | WRITE(numsed,*) ' ' |
---|
| 529 | |
---|
| 530 | |
---|
[1179] | 531 | ! Diffraction/reaction parameters |
---|
| 532 | !---------------------------------- |
---|
[1250] | 533 | REWIND( numnamsed ) |
---|
[1179] | 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 | !---------------------------------------------- |
---|
[1250] | 556 | REWIND( numnamsed ) |
---|
[1179] | 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))' |
---|
[1250] | 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 |
---|
[1179] | 724 | WRITE(numsed,*)'reaction rate rc for Op/si,Clay,POC/O2,caco3, POC/No3 (an-1)' |
---|
[1250] | 725 | WRITE(numsed,'(5(F0.2,3X))') reac_sil * ryear, reac_clay * ryear, reac_poc * ryear, & |
---|
| 726 | reac_cal * ryear, reac_no3 * ryear |
---|
[1179] | 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 |
---|