Changeset 7617 for branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM
- Timestamp:
- 2017-01-27T18:17:01+01:00 (7 years ago)
- Location:
- branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r7180 r7617 69 69 INTEGER :: ji, jj, jk, jic, jn 70 70 REAL(wp) :: zdep, zlam1a, zlam1b, zlamfac 71 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll, fe3sol, fe3sol171 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll, zfecollc, fe3sol, fe3sol1 72 72 REAL(wp) :: zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 73 73 REAL(wp) :: ztrc, zdust … … 78 78 REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 79 79 REAL(wp), POINTER, DIMENSION(:,: ) :: zstrn, zstrn2 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: zcoll3d, zscav3d 80 81 REAL(wp) :: zzFeL1, zzFeL2, zzFe2, zzFeP, zzFe3, zzstrn2 81 82 REAL(wp) :: zrum, zcodel, zargu, zlight … … 84 85 REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2 85 86 REAL(wp) :: ztfe, zoxy, zhplus 86 REAL(wp) :: zstep 87 REAL(wp) :: zstep, zrfact2 87 88 #if defined key_ligand 88 89 REAL(wp) :: zaggliga, zaggligb 89 90 REAL(wp) :: dissol, zligco 91 REAL(wp), POINTER, DIMENSION(:,:,:) :: zlcoll3d 90 92 #endif 91 93 CHARACTER (len=25) :: charout … … 96 98 ! Allocate temporary workspace 97 99 CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 100 CALL wrk_alloc( jpi, jpj, jpk, zcoll3d, zscav3d ) 101 #if defined key_ligand 102 CALL wrk_alloc( jpi, jpj, jpk, zlcoll3d ) 103 #endif 98 104 zFe3 (:,:,:) = 0. 99 105 zFeL1(:,:,:) = 0. … … 327 333 ! It requires certainly some more work as it is very poorly constrained. 328 334 ! ---------------------------------------------------------------- 335 zfecollc = trb(ji,jj,jk,jpdoc) / ( 40.E-6 + trb(ji,jj,jk,jpdoc) ) * zfecoll 329 336 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 330 337 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 331 zaggdfea = zlam1a * zstep * zfecoll 338 zaggdfea = zlam1a * zstep * zfecollc 332 339 ! 333 340 #if defined key_kriest … … 335 342 #else 336 343 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 337 zaggdfeb = zlam1b * zstep * zfecoll 344 zaggdfeb = zlam1b * zstep * zfecollc 338 345 #endif 339 346 ! precipitation of Fe3+, creation of nanoparticles … … 346 353 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 347 354 #endif 355 zscav3d(ji,jj,jk) = zscave 356 zcoll3d(ji,jj,jk) = zaggdfea + zaggdfeb 348 357 #if defined key_ligand 349 358 zaggliga = zlam1a * zstep * zligco … … 355 364 tra(ji,jj,jk,jpfep) = tra(ji,jj,jk,jpfep) + precip(ji,jj,jk) 356 365 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb 366 zlcoll3d(ji,jj,jk) = zaggliga + zaggligb 357 367 #endif 358 368 END DO … … 379 389 IF( ln_diatrc .AND. lk_iomput ) THEN 380 390 IF( jnt == nrdttrc ) THEN 391 zrfact2 = 1.e3 * rfact2r ! conversion from mol/L/timestep into mol/m3/s 381 392 CALL iom_put("Fe3" , zFe3 (:,:,:) * tmask(:,:,:) ) ! Fe3+ 382 393 CALL iom_put("FeL1" , zFeL1 (:,:,:) * tmask(:,:,:) ) ! FeL1 383 394 CALL iom_put("TL1" , zTL1 (:,:,:) * tmask(:,:,:) ) ! TL1 384 395 CALL iom_put("Totlig" , ztotlig(:,:,:) * tmask(:,:,:) ) ! TL 385 CALL iom_put("Biron" , biron (:,:,:) * 1e9 * tmask(:,:,:) ) ! biron 396 CALL iom_put("Biron" , biron (:,:,:) * 1e9 * tmask(:,:,:) ) ! biron 397 CALL iom_put("FESCAV" , zscav3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 398 CALL iom_put("FECOLL" , zcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 399 #if defined key_ligand 400 CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 401 #endif 386 402 IF( ln_fechem ) THEN 387 403 CALL iom_put("Fe2" , zFe2 (:,:,:) * tmask(:,:,:) ) ! Fe2+ … … 400 416 ! 401 417 CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 418 CALL wrk_dealloc( jpi, jpj, jpk, zscav3d, zcoll3d ) 419 #if defined key_ligand 420 CALL wrk_dealloc( jpi, jpj, jpk, zlcoll3d ) 421 #endif 422 402 423 IF( ln_fechem ) THEN 403 424 CALL wrk_dealloc( jpi, jpj, zstrn, zstrn2 ) -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zligand.F90
r7180 r7617 59 59 REAL(wp) :: zlgwp, zlgwpr, zlgwr, zlablgw, zrfepa, zfepr 60 60 REAL(wp) :: zstep, zstep2, zrfact2 61 REAL(wp), POINTER, DIMENSION(:,:,:) :: zligrem, zligpr, zrligprod 61 62 CHARACTER (len=25) :: charout 62 63 !!--------------------------------------------------------------------- … … 89 90 zlgwpr = prlgw * zstep * etot(ji,jj,jk) * trn(ji,jj,jk,jplgw) * (1. - fr_i(ji,jj)) 90 91 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zlgwp - zlgwr - zlgwpr 92 zligrem(ji,jj,jk) = zlgwr 93 zligpr(ji,jj,jk) = zlgwpr 94 zrligprod(ji,jj,jk) = zlgwp 91 95 END DO 92 96 END DO … … 111 115 END DO 112 116 END DO 117 118 ! Output of some diagnostics variables 119 ! --------------------------------- 120 IF( ln_diatrc .AND. lk_iomput ) THEN 121 IF( jnt == nrdttrc ) THEN 122 CALL iom_put("LIGREM" , zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 123 CALL iom_put("LIGPR" , zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 124 CALL iom_put("LPRODR" , zrligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 125 ENDIF 126 ENDIF 127 128 CALL wrk_dealloc( jpi, jpj, jpk, zligrem, zligpr, zrligprod ) 113 129 114 130 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r6966 r7617 67 67 CHARACTER (len=25) :: charout 68 68 REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zcaldiss, zhinit, zhi, zco3sat 69 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwork 69 70 !!--------------------------------------------------------------------- 70 71 ! … … 72 73 ! 73 74 CALL wrk_alloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 75 CALL wrk_alloc( jpi, jpj, jpk, zwork ) 74 76 ! 75 77 zco3 (:,:,:) = 0. 76 78 zcaldiss(:,:,:) = 0. 79 zwork (:,:,:) = 0. 77 80 zhinit(:,:,:) = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 78 81 ! ------------------------------------------- … … 133 136 ! 134 137 IF( lk_iomput .AND. knt == nrdttrc ) THEN 135 IF( iom_use( "PH" ) ) CALL iom_put( "PH" , -1. * LOG10( hi(:,:,:) ) * tmask(:,:,:) )138 IF( iom_use( "PH" ) ) CALL iom_put( "PH" , -1. * LOG10( hi(:,:,:) + rtrn ) * tmask(:,:,:) ) 136 139 IF( iom_use( "CO3" ) ) CALL iom_put( "CO3" , zco3(:,:,:) * 1.e+3 * tmask(:,:,:) ) 137 140 IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3 * tmask(:,:,:) ) 138 141 IF( iom_use( "DCAL" ) ) CALL iom_put( "DCAL" , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 139 142 IF( iom_use( "AOU" ) ) THEN 143 zwork(:,:,:) = MAX(0., (chemo2(:,:,:) - trn(:,:,:,jpoxy) ) ) * 1.E6 * tmask(:,:,:) 144 CALL iom_put( "AOU" , MAX(0., zwork(:,:,:) ) ) 145 ENDIF 140 146 ELSE 141 147 IF( ln_diatrc ) THEN … … 154 160 ! 155 161 CALL wrk_dealloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 162 CALL wrk_dealloc( jpi, jpj, jpk, zwork ) 156 163 ! 157 164 IF( nn_timing == 1 ) CALL timing_stop('p4z_lys') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r6841 r7617 83 83 REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg 84 84 CHARACTER (len=25) :: charout 85 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d 85 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d, zfezoo2 86 #if defined key_ligand 87 REAL(wp), POINTER, DIMENSION(:,:,:) :: zz2ligprod 88 #endif 86 89 87 90 !!--------------------------------------------------------------------- … … 89 92 IF( nn_timing == 1 ) CALL timing_start('p4z_meso') 90 93 ! 91 IF( lk_iomput ) THEN 92 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 93 zgrazing(:,:,:) = 0._wp 94 ENDIF 94 CALL wrk_alloc( jpi, jpj, jpk, zgrazing, zfezoo2 ) 95 #if defined key_ligand 96 CALL wrk_alloc( jpi, jpj, jpk, zz2ligprod ) 97 zz2ligprod(:,:,:) = 0._wp 98 #endif 99 zgrazing(:,:,:) = 0._wp 100 zfezoo2(:,:,:) = 0._wp 95 101 96 102 DO jk = 1, jpkm1 … … 206 212 #if defined key_ligand 207 213 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem2 - zgrarsig) * ldocz 214 zz2ligprod(ji,jj,jk) = (zgrarem2 - zgrarsig) * ldocz 208 215 #endif 209 216 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 210 217 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer2 218 zfezoo2(ji,jj,jk) = zgrafer2 211 219 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig 212 220 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig … … 243 251 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg & 244 252 & + zgraztotf * unass2 - zfracfe 245 zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jp poc) + trb(ji,jj,jk,jpgoc) + rtrn )246 zgrazcal = (zgrazffeg + zgrazpoc)* (1. - part2) * zfracal253 zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jpgoc) + rtrn ) 254 zgrazcal = zgrazffeg * (1. - part2) * zfracal 247 255 #endif 248 256 … … 253 261 zprcaca = part2 * zprcaca 254 262 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 255 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal +zprcaca )263 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * ( zgrazcal - zprcaca ) 256 264 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 257 265 … … 270 278 CALL iom_put( "PCAL", zw3d ) 271 279 ENDIF 280 IF( iom_use( "FEZOO2" ) ) THEN 281 zw3d(:,:,:) = zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 282 CALL iom_put( "FEZOO2", zw3d ) 283 ENDIF 284 #if defined key_ligand 285 IF( iom_use( "LPRODZ2" ) ) THEN 286 zw3d(:,:,:) = zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 287 CALL iom_put( "LPRODZ2" , zw3d ) 288 ENDIF 289 #endif 272 290 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 273 291 ENDIF … … 279 297 ENDIF 280 298 ! 281 IF( lk_iomput ) CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 299 #if defined key_ligand 300 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing, zfezoo2, zz2ligprod ) 301 #else 302 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing, zfezoo2 ) 303 #endif 282 304 ! 283 305 IF( nn_timing == 1 ) CALL timing_stop('p4z_meso') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r6453 r7617 78 78 REAL(wp) :: zgrazp, zgrazm, zgrazsd 79 79 REAL(wp) :: zgrazmf, zgrazsf, zgrazpf 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d, zfezoo 81 #if defined key_ligand 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zzligprod 83 #endif 81 84 CHARACTER (len=25) :: charout 82 85 !!--------------------------------------------------------------------- … … 84 87 IF( nn_timing == 1 ) CALL timing_start('p4z_micro') 85 88 ! 86 IF( lk_iomput ) CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 89 CALL wrk_alloc( jpi, jpj, jpk, zgrazing, zfezoo ) 90 zfezoo(:,:,:) = 0._wp 91 #if defined key_ligand 92 CALL wrk_alloc( jpi, jpj, jpk, zzligprod ) 93 zzligprod(:,:,:) = 0._wp 94 #endif 87 95 ! 88 96 DO jk = 1, jpkm1 … … 151 159 #if defined key_ligand 152 160 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem - zgrarsig) * ldocz 161 zzligprod(ji,jj,jk) = (zgrarem - zgrarsig) * ldocz 153 162 #endif 154 163 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 155 164 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 165 zfezoo(ji,jj,jk) = zgrafer 156 166 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc 157 167 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zgrapoc … … 201 211 CALL iom_put( "GRAZ1", zw3d ) 202 212 ENDIF 213 IF( iom_use( "FEZOO" ) ) THEN 214 zw3d(:,:,:) = zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 215 CALL iom_put( "FEZOO", zw3d ) 216 ENDIF 217 #if defined key_ligand 218 IF( iom_use( "LPRODZ" ) ) THEN 219 zw3d(:,:,:) = zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 220 CALL iom_put( "LPRODZ" , zw3d ) 221 ENDIF 222 #endif 203 223 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 204 224 ENDIF … … 210 230 ENDIF 211 231 ! 212 IF( lk_iomput ) CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 232 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing, zfezoo ) 233 #if defined key_ligand 234 CALL wrk_dealloc( jpi, jpj, jpk, zzligprod ) 235 #endif 213 236 ! 214 237 IF( nn_timing == 1 ) CALL timing_stop('p4z_micro') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90
r7180 r7617 73 73 REAL(wp), POINTER, DIMENSION(:,:,:) :: zremipoc, zremigoc, zorem3 74 74 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: alphag 75 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfolimi 76 75 77 !!--------------------------------------------------------------------- 76 78 ! … … 80 82 CALL wrk_alloc( jpi, jpj, totprod, totthick, totcons ) 81 83 CALL wrk_alloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3 ) 84 CALL wrk_alloc( jpi, jpj, jpk, zfolimi ) 82 85 ALLOCATE( alphag(jpi,jpj,jpk,jcpoc) ) 83 86 … … 98 101 zorem3(:,:,:) = 0. 99 102 orem (:,:,:) = 0. 103 zfolimi(:,:,:) = 0. 100 104 101 105 DO jn = 1, jcpoc … … 217 221 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem2 218 222 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer2 223 zfolimi(ji,jj,jk) = zofer2 219 224 END DO 220 225 END DO … … 392 397 orem(ji,jj,jk) = orem(ji,jj,jk) + zorem 393 398 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 399 zfolimi(ji,jj,jk) = zfolimi(ji,jj,jk) + zofer 394 400 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem 395 401 #if defined key_kriest … … 407 413 CALL iom_put( "REMINP" , zremipoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate 408 414 CALL iom_put( "REMING" , zremigoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate 415 CALL iom_put( "REMINF" , zfolimi(:,:,:) * tmask(:,:,:) * 1.e+3 * rfact2r ) ! Remineralisation rate 409 416 ENDIF 410 417 … … 416 423 ! 417 424 CALL wrk_dealloc( jpi, jpj, totprod, totthick, totcons ) 418 CALL wrk_dealloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3 )425 CALL wrk_dealloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3, zfolimi ) 419 426 DEALLOCATE( alphag ) 420 427 ! -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r7180 r7617 89 89 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd 90 90 REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl 91 #if defined key_ligand 92 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpligprod, zpligprod2 93 #endif 91 94 !!--------------------------------------------------------------------- 92 95 ! … … 98 101 CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 99 102 CALL wrk_alloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 103 #if defined key_ligand 104 CALL wrk_alloc( jpi, jpj, jpk, zpligprod, zpligprod2 ) 105 #endif 100 106 ! 101 107 zprorcan(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp ; zprofed (:,:,:) = 0._wp … … 345 351 #if defined key_ligand 346 352 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet 353 zpligprod(ji,jj,jk) = zdocprod * ldocp 354 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) * lthet 347 355 #endif 348 356 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & … … 424 432 CALL iom_put( "TPBFE" , zw3d ) 425 433 ENDIF 434 #if defined key_ligand 435 IF( iom_use( "LPRODP" ) ) THEN 436 zw3d(:,:,:) = zpligprod(:,:,:) * 1e9 * zfact * tmask(:,:,:) 437 CALL iom_put( "LPRODP" , zw3d ) 438 ENDIF 439 IF( iom_use( "LDETP" ) ) THEN 440 zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 441 CALL iom_put( "LDETP" , zw3d ) 442 ENDIF 443 #endif 426 444 IF( iom_use( "INTPPPHY" ) .OR. iom_use( "INTPPPHY2" ) ) THEN 427 445 zw2d(:,:) = 0. … … 495 513 CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 496 514 CALL wrk_dealloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 515 #if defined key_ligand 516 CALL wrk_dealloc( jpi, jpj, jpk, zpligprod, zpligprod2 ) 517 #endif 497 518 ! 498 519 IF( nn_timing == 1 ) CALL timing_stop('p4z_prod') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
r7180 r7617 79 79 CHARACTER (len=25) :: charout 80 80 REAL(wp), POINTER, DIMENSION(:,: ) :: ztempbac 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib, znitr 82 82 !!--------------------------------------------------------------------- 83 83 ! … … 86 86 ! Allocate temporary workspace 87 87 CALL wrk_alloc( jpi, jpj, ztempbac ) 88 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, z facsi, zfacsib )88 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, znitr, zfacsi, zfacsib ) 89 89 90 90 ! Initialization of local variables … … 187 187 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 188 188 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 189 znitr(ji,jj,jk) = zonitr 189 190 END DO 190 191 END DO … … 271 272 CALL iom_put( "REMIN" , zolimi(:,:,:) * tmask(:,:,:) * zrfact2 ) ! Remineralisation rate 272 273 CALL iom_put( "DENIT" , denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2 ) ! Denitrification 274 CALL iom_put( "NIT" , znitr(:,:,:) * rno3 * tmask(:,:,:) * zrfact2 ) ! 275 CALL iom_put( "BACT", zdepbac(:,:,:) * 1.E6 * tmask(:,:,:) ) ! Bacterial biomass 276 273 277 ENDIF 274 278 ! 275 279 CALL wrk_dealloc( jpi, jpj, ztempbac ) 276 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib )280 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib, znitr ) 277 281 ! 278 282 IF( nn_timing == 1 ) CALL timing_stop('p4z_rem') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r6453 r7617 45 45 REAL(wp), PUBLIC :: fep_rats !: Fep/Fer ratio from sed sources 46 46 REAL(wp), PUBLIC :: fep_rath !: Fep/Fer ratio from hydro sources 47 REAL(wp), PUBLIC :: hydrolig !: Lgw/Fer ratio from hydro sources 47 48 #endif 48 49 … … 231 232 & sedfeinput, dustsolub, icefeinput, wdust, mfrac, nitrfix, diazolight, concfediaz, & 232 233 #if defined key_ligand 233 & fep_rats, fep_rath, &234 & fep_rats, fep_rath, hydrolig, & 234 235 #endif 235 236 & hratio … … 271 272 WRITE(numout,*) ' Fep/Fer ratio from sed sources = ', fep_rats 272 273 WRITE(numout,*) ' Fep/Fer ratio from sed hydro sources = ', fep_rath 274 WRITE(numout,*) ' Lgw/Fer ratio from sed sources = ', hydrolig 273 275 #endif 274 276 END IF … … 286 288 IF( lk_offline ) THEN 287 289 nk_rnf(:,:) = 1 288 h_rnf (:,:) = fs dept(:,:,1)290 h_rnf (:,:) = fse3t(:,:,1) 289 291 ENDIF 290 292 -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r7180 r7617 212 212 #if defined key_ligand 213 213 tra(:,:,:,jpfep) = tra(:,:,:,jpfep) + ( hydrofe(:,:,:) * fep_rath ) * rfact2 214 tra(:,:,:,jplgw) = tra(:,:,:,jplgw) + ( hydrofe(:,:,:) * 0.5) * rfact2214 tra(:,:,:,jplgw) = tra(:,:,:,jplgw) + ( hydrofe(:,:,:) * hydrolig ) * rfact2 215 215 #endif 216 216 ! -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zlim.F90
r6453 r7617 104 104 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdfe !: ??? 105 105 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimsi !: ??? 106 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimsi2 !: ??? 106 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbac !: ?? 107 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbacl !: ?? … … 120 121 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvpuptk 121 122 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fvduptk 123 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xbactnh4 !: ??? 124 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xbactno3 !: ??? 122 125 123 126 ! Coefficient for iron limitation … … 157 160 REAL(wp) :: zrpho, zrass, zcoef, zfuptk, zratchl 158 161 REAL(wp) :: zfvn, zfvp, zfvf, zsizen, zsizep, zsized, znanochl, zpicochl, zdiatchl 159 REAL(wp) :: zqfemn, zqfemp, zqfemd , zbactno3, zbactnh4162 REAL(wp) :: zqfemn, zqfemp, zqfemd 160 163 !!--------------------------------------------------------------------- 161 164 ! … … 242 245 ! Michaelis-Menten Limitation term for nutrients Small bacteria 243 246 ! ------------------------------------------------------------- 244 zbactnh4= trb(ji,jj,jk,jpnh4) / ( concbnh4 + trb(ji,jj,jk,jpnh4) )245 zbactno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) * (1. - zbactnh4)246 ! 247 zlim1 = zbactno3 + zbactnh4247 xbactnh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) / ( concbnh4 + trb(ji,jj,jk,jpnh4) ) 248 xbactno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) ) * (1. - xbactnh4(ji,jj,jk)) 249 ! 250 zlim1 = xbactno3(ji,jj,jk) + xbactnh4(ji,jj,jk) 248 251 zlim2 = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbpo4) 249 252 zlim3 = biron(ji,jj,jk) / ( concbfe + biron(ji,jj,jk) ) … … 345 348 xlimdfe(ji,jj,jk) = MIN( 1., zlim4 ) 346 349 xlimdia(ji,jj,jk) = MIN( 1., zlim1, zlim3, zlim4 ) 347 xlimsi(ji,jj,jk) = MIN( zlim1, zlim4 ) 350 xlimsi(ji,jj,jk) = MIN( 1., zlim3, zlim4 ) 351 xlimsi2(ji,jj,jk) = MIN( 1., zlim1, zlim4 ) 348 352 END DO 349 353 END DO … … 362 366 zfvn = 2. * fvnuptk(ji,jj,jk) 363 367 sizen(ji,jj,jk) = MAX(1., MIN(xsizern, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 364 365 368 ! N/P ratio of nanophytoplankton 366 369 ! ------------------------------ 367 370 zfuptk = 0.23 * zfvn 368 371 zrpho = 2.24 * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpnph) * rno3 * 15. + rtrn ) 369 zrass = 1. - 0.2 - zrpho - zfuptk370 xqpnmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. 371 xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) + 0.13372 xqpnmin(ji,jj,jk) = 0.13 + 0.23 * 0.0128 * 16.372 zrass = (1. - 0.2 - zrpho - zfuptk) 373 xqpnmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. + 0.13 374 xqpnmax(ji,jj,jk) = xqpnmax(ji,jj,jk) * trb(ji,jj,jk,jpnph) / ( trb(ji,jj,jk,jpphy) + rtrn ) 375 xqpnmin(ji,jj,jk) = qpnmin 373 376 374 377 ! Size estimation of picophytoplankton … … 381 384 zfuptk = 0.35 * zfvn 382 385 zrpho = 2.24 * trb(ji,jj,jk,jppch) / ( trb(ji,jj,jk,jpnpi) * rno3 * 15. + rtrn ) 383 zrass = 1. - 0.4 - zrpho - zfuptk384 xqppmax(ji,jj,jk) = (zrpho + zfuptk) * 0.0128 * 16. + zrass * 1./ 9. * 16.385 xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) + 0.13386 xqppmin(ji,jj,jk) = 0.13386 zrass = (1. - 0.4 - zrpho - zfuptk) 387 xqppmax(ji,jj,jk) = (zrpho + zfuptk) * 0.0128 * 16. + zrass * 1./ 10.9 * 16. + 0.13 388 xqppmax(ji,jj,jk) = xqppmax(ji,jj,jk) * trb(ji,jj,jk,jpnpi) / ( trb(ji,jj,jk,jppic) + rtrn ) 389 xqppmin(ji,jj,jk) = qppmin 387 390 388 391 ! Size estimation of diatoms … … 390 393 zfvn = 2. * fvduptk(ji,jj,jk) 391 394 sized(ji,jj,jk) = MAX(1., MIN(xsizerd, 1.0 / ( MAX(rtrn, zfvn) ) ) ) 392 zcoef = trb(ji,jj,jk,jpdia) - MIN(xsizedia, trb(ji,jj,jk,jpdia) )393 sized(ji,jj,jk) = 1. + xsizerd * zcoef *1E6 / ( 1. + zcoef * 1E6 )395 ! zcoef = trb(ji,jj,jk,jpdia) - MIN(xsizedia, trb(ji,jj,jk,jpdia) ) 396 ! sized(ji,jj,jk) = 1. + xsizerd * zcoef *1E6 / ( 1. + zcoef * 1E6 ) 394 397 395 398 ! N/P ratio of diatoms … … 398 401 zrpho = 2.24 * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpndi) * rno3 * 15. + rtrn ) 399 402 zrass = 1. - 0.2 - zrpho - zfuptk 400 xqpdmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. 401 xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) + 0.13 402 xqpdmin(ji,jj,jk) = 0.13 + 0.2 * 0.0128 * 16. 403 403 xqpdmax(ji,jj,jk) = ( zfuptk + zrpho ) * 0.0128 * 16. + zrass * 1./ 7.2 * 16. + 0.13 404 xqpdmax(ji,jj,jk) = xqpdmax(ji,jj,jk) * trb(ji,jj,jk,jpndi) / ( trb(ji,jj,jk,jpdia) + rtrn ) 405 xqpdmin(ji,jj,jk) = qpdmin * sized(ji,jj,jk)**(-0.27) 404 406 END DO 405 407 END DO … … 441 443 IF( iom_use( "SIZEP" ) ) CALL iom_put( "SIZEP" , sizep(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 442 444 IF( iom_use( "SIZED" ) ) CALL iom_put( "SIZED" , sized(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 445 IF( iom_use( "QPNMAX" ) ) CALL iom_put( "QPNMAX" , xqpnmax(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 446 IF( iom_use( "QPPMAX" ) ) CALL iom_put( "QPPMAX" , xqppmax(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 447 IF( iom_use( "QPDMAX" ) ) CALL iom_put( "QPDMAX" , xqpdmax(:,:,:) * tmask(:,:,:) ) ! Iron limitation term 443 448 ENDIF 444 449 ! … … 569 574 & xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk), & 570 575 & xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk), & 576 & xbactnh4(jpi,jpj,jpk), xbactno3(jpi,jpj,jpk), & 571 577 & xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk), & 572 578 & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), & … … 576 582 & fvnuptk (jpi,jpj,jpk), fvduptk (jpi,jpj,jpk), & 577 583 & fvpuptk (jpi,jpj,jpk), xlimpic (jpi,jpj,jpk), & 578 & xlimsi (jpi,jpj,jpk), STAT=ierr(1) )584 & xlimsi (jpi,jpj,jpk), xlimsi2 (jpi,jpj,jpk), STAT=ierr(1) ) 579 585 580 586 !* Minimum/maximum quotas of phytoplankton -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zmeso.F90
r7180 r7617 95 95 CHARACTER (len=25) :: charout 96 96 REAL(wp) :: zrfact2, zmetexcess 97 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d 97 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d, zfezoo2 98 #if defined key_ligand 99 REAL(wp), POINTER, DIMENSION(:,:,:) :: zz2ligprod 100 #endif 98 101 99 102 !!--------------------------------------------------------------------- … … 101 104 IF( nn_timing == 1 ) CALL timing_start('p5z_meso') 102 105 ! 103 IF( lk_iomput ) THEN 104 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 105 zgrazing(:,:,:) = 0._wp 106 ENDIF 106 CALL wrk_alloc( jpi, jpj, jpk, zgrazing, zfezoo2 ) 107 #if defined key_ligand 108 CALL wrk_alloc( jpi, jpj, jpk, zz2ligprod ) 109 zz2ligprod(:,:,:) = 0._wp 110 #endif 111 zgrazing(:,:,:) = 0._wp 112 zfezoo2(:,:,:) = 0._wp 107 113 108 114 zmetexcess = 0.0 … … 155 161 ! most abundant species 156 162 ! ------------------------------------------------------------ 157 ztmp1 = xpref2p * zcompaph **1.5158 ztmp2 = xpref2m * zcompames** 1.5159 ztmp3 = xpref2c * zcompapoc** 1.5160 ztmp4 = xpref2d * zcompadi **1.5161 ztmp5 = xpref2z * zcompaz** 1.5163 ztmp1 = xpref2p * zcompaph * (0.75 * zcompaph + 0.25 * zcompadi) 164 ztmp2 = xpref2m * zcompames**2 165 ztmp3 = xpref2c * zcompapoc**2 166 ztmp4 = xpref2d * zcompadi * (0.75 * zcompadi + 0.25 * zcompaph) 167 ztmp5 = xpref2z * zcompaz**2 162 168 ztmptot = ztmp1 + ztmp2 + ztmp3 + ztmp4 + ztmp5 + rtrn 163 169 ztmp1 = ztmp1 / ztmptot … … 324 330 #if defined key_ligand 325 331 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zgradoc * ldocz 332 zz2ligprod(ji,jj,jk) = zgradoc * ldocz 326 333 #endif 327 334 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon … … 329 336 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarem 330 337 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgraref 338 zfezoo2(ji,jj,jk) = zgraref 331 339 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarem 332 340 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgraren … … 396 404 CALL iom_put( "PCAL", zw3d ) 397 405 ENDIF 406 IF( iom_use( "FEZOO2" ) ) THEN 407 zw3d(:,:,:) = zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 408 CALL iom_put( "FEZOO2", zw3d ) 409 ENDIF 410 #if defined key_ligand 411 IF( iom_use( "LPRODZ2" ) ) THEN 412 zw3d(:,:,:) = zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 413 CALL iom_put( "LPRODZ2" , zw3d ) 414 ENDIF 415 #endif 398 416 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 399 417 ENDIF … … 405 423 ENDIF 406 424 ! 407 IF( lk_iomput ) CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 425 #if defined key_ligand 426 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing, zfezoo2, zz2ligprod ) 427 #else 428 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing, zfezoo2 ) 429 #endif 408 430 ! 409 431 IF( nn_timing == 1 ) CALL timing_stop('p5z_meso') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zmicro.F90
r7180 r7617 90 90 REAL(wp) :: zgrazdc, zgrazdn, zgrazdp, zgrazdf, zgraznf, zgrazz 91 91 REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2, zmetexcess 92 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d 92 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d, zfezoo 93 #if defined key_ligand 94 REAL(wp), POINTER, DIMENSION(:,:,:) :: zzligprod 95 #endif 93 96 CHARACTER (len=25) :: charout 94 97 !!--------------------------------------------------------------------- … … 96 99 IF( nn_timing == 1 ) CALL timing_start('p5z_micro') 97 100 ! 98 IF( lk_iomput ) CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 101 CALL wrk_alloc( jpi, jpj, jpk, zgrazing, zfezoo ) 102 zfezoo(:,:,:) = 0._wp 103 #if defined key_ligand 104 CALL wrk_alloc( jpi, jpj, jpk, zzligprod ) 105 zzligprod(:,:,:) = 0._wp 106 #endif 99 107 ! 100 108 zmetexcess = 0.0 … … 146 154 ! most abundant species 147 155 ! ------------------------------------------------------------ 148 ztmp1 = xprefn * zcompaph **1.5149 ztmp2 = xprefp * zcompapi **1.5150 ztmp3 = xprefc * zcompapoc **1.5151 ztmp4 = xprefd * zcompadi **1.5152 ztmp5 = xprefz * zcompaz **1.5156 ztmp1 = xprefn * zcompaph * ( 0.75 * zcompaph + 0.25 * zcompadi ) 157 ztmp2 = xprefp * zcompapi * zcompapi 158 ztmp3 = xprefc * zcompapoc * zcompapoc 159 ztmp4 = xprefd * zcompadi * ( 0.75 * zcompadi + 0.25 * zcompaph ) 160 ztmp5 = xprefz * zcompaz * zcompaz 153 161 ztmptot = ztmp1 + ztmp2 + ztmp3 + ztmp4 + ztmp5 + rtrn 154 162 ztmp1 = ztmp1 / ztmptot … … 258 266 #if defined key_ligand 259 267 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zgradoc * ldocz 268 zzligprod(ji,jj,jk) = zgradoc * ldocz 260 269 #endif 261 270 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zgradon … … 263 272 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarem 264 273 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgraref 274 zfezoo(ji,jj,jk) = zgraref 265 275 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zepsherv * zgraztotc - zrespirc & 266 276 & - ztortz - zgrazz … … 315 325 CALL iom_put( "GRAZ1", zw3d ) 316 326 ENDIF 327 IF( iom_use( "FEZOO" ) ) THEN 328 zw3d(:,:,:) = zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ! 329 CALL iom_put( "FEZOO", zw3d ) 330 ENDIF 331 #if defined key_ligand 332 IF( iom_use( "LPRODZ" ) ) THEN 333 zw3d(:,:,:) = zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 334 CALL iom_put( "LPRODZ" , zw3d ) 335 ENDIF 336 #endif 317 337 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 318 338 ENDIF … … 324 344 ENDIF 325 345 ! 326 IF( lk_iomput ) CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 346 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing, zfezoo ) 347 #if defined key_ligand 348 CALL wrk_dealloc( jpi, jpj, jpk, zzligprod ) 349 #endif 327 350 ! 328 351 IF( nn_timing == 1 ) CALL timing_stop('p5z_micro') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zpoc.F90
r7190 r7617 79 79 REAL(wp), POINTER, DIMENSION(:,:,:) :: zremipoc, zremigoc, zorem3 80 80 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: alphag 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfolimi 82 81 83 !!--------------------------------------------------------------------- 82 84 ! … … 87 89 CALL wrk_alloc( jpi, jpj, totprod, totthick, totcons ) 88 90 CALL wrk_alloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3 ) 91 CALL wrk_alloc( jpi, jpj, jpk, zfolimi ) 89 92 ALLOCATE( alphag(jpi,jpj,jpk,jcpoc) ) 90 93 … … 223 226 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zopop2 224 227 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer2 228 zfolimi(ji,jj,jk) = zofer2 225 229 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zopoc2 - zorem3(ji,jj,jk) 226 230 tra(ji,jj,jk,jpgon) = tra(ji,jj,jk,jpgon) - zopon2 * (1. + solgoc) … … 418 422 CALL iom_put( "REMINP" , zremipoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate 419 423 CALL iom_put( "REMING" , zremigoc(:,:,:) * tmask(:,:,:) ) ! Remineralisation rate 424 CALL iom_put( "REMINF" , zfolimi(:,:,:) * tmask(:,:,:) * 1.e+3 * rfact2r ) ! Remineralisation rate 420 425 ENDIF 421 426 ! … … 428 433 CALL wrk_dealloc( jpi, jpj, jpk, zwork1 ) 429 434 CALL wrk_dealloc( jpi, jpj, totprod, totthick, totcons ) 430 CALL wrk_dealloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3 )435 CALL wrk_dealloc( jpi, jpj, jpk, zremipoc, zremigoc, zorem3, zfolimi ) 431 436 DEALLOCATE( alphag ) 432 437 ! -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zprod.F90
r7190 r7617 86 86 REAL(wp) :: zprnutmax, zdocprod, zprochln, zprochld, zprochlp 87 87 REAL(wp) :: zpislopen, zpislopep, zpisloped, thetannm_n, thetandm_n, thetanpm_n 88 REAL(wp) :: zratiosi, zquotasi, grosip2 88 89 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup 89 90 REAL(wp) :: zrfact2 … … 94 95 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprchln, zprchlp, zprchld 95 96 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcap, zprorcad 96 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprofed, zprofep, zprofen 97 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprofed, zprofep, zprofen, zprosid 97 98 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpronewn, zpronewp, zpronewd 98 99 REAL(wp), POINTER, DIMENSION(:,:,:) :: zproregn, zproregp, zproregd … … 102 103 REAL(wp), POINTER, DIMENSION(:,:,:) :: zcroissn, zcroissp, zcroissd 103 104 REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl 105 #if defined key_ligand 106 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpligprod, zpligprod2 107 #endif 104 108 !!--------------------------------------------------------------------- 105 109 ! … … 111 115 CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadp, zpislopeadd, zysopt ) 112 116 CALL wrk_alloc( jpi, jpj, jpk, zprdia, zprpic, zprbio, zprorcan, zprorcap, zprorcad ) 113 CALL wrk_alloc( jpi, jpj, jpk, zprofed, zprofep, zprofen )117 CALL wrk_alloc( jpi, jpj, jpk, zprofed, zprofep, zprofen, zprosid ) 114 118 CALL wrk_alloc( jpi, jpj, jpk, zpronewn, zpronewp, zpronewd, zproregn, zproregp, zproregd ) 115 119 CALL wrk_alloc( jpi, jpj, jpk, zpropo4n, zpropo4p, zpropo4d, zrespn, zrespp, zrespd, zprnut ) 116 120 CALL wrk_alloc( jpi, jpj, jpk, zprchln, zprchlp, zprchld, zprodopn, zprodopp, zprodopd ) 117 121 CALL wrk_alloc( jpi, jpj, jpk, zcroissp, zcroissn, zcroissd ) 122 #if defined key_ligand 123 CALL wrk_alloc( jpi, jpj, jpk, zpligprod, zpligprod2 ) 124 #endif 118 125 ! 119 126 zprorcan(:,:,:) = 0._wp ; zprorcap(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp … … 123 130 zpropo4n(:,:,:) = 0._wp ; zpropo4p(:,:,:) = 0._wp ; zpropo4d(:,:,:) = 0._wp 124 131 zprdia (:,:,:) = 0._wp ; zprpic (:,:,:) = 0._wp ; zprbio (:,:,:) = 0._wp 125 zysopt (:,:,:) = 0._wp 132 zysopt (:,:,:) = 0._wp ; zprosid (:,:,:) = 0._wp 126 133 zrespn (:,:,:) = 0._wp ; zrespp (:,:,:) = 0._wp ; zrespd (:,:,:) = 0._wp 127 134 128 135 ! Computation of the optimal production 129 prmaxn(:,:,:) = ( 0. 65_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc(:,:,:)130 prmaxp(:,:,:) = 0.5 / 0. 65* prmaxn(:,:,:)136 prmaxn(:,:,:) = ( 0.8_wp * (1. + zpsino3 * qnpmax ) ) * r1_rday * tgfunc(:,:,:) 137 prmaxp(:,:,:) = 0.5 / 0.8 * prmaxn(:,:,:) 131 138 prmaxd(:,:,:) = prmaxn(:,:,:) 132 zprnut(:,:,:) = 0. 65_wp * r1_rday * tgfunc(:,:,:)139 zprnut(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 133 140 134 141 IF( lk_degrad ) THEN … … 159 166 zval = MAX( 1., zstrn(ji,jj) ) 160 167 IF( fsdept(ji,jj,jk) <= hmld(ji,jj) ) THEN 161 zval = MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn ))168 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 162 169 ENDIF 163 170 zmxl_chl(ji,jj,jk) = zval / 24. … … 227 234 ! Si/C is arbitrariliy increased for very high Si concentrations 228 235 ! to mimic the very high ratios observed in the Southern Ocean (silpot2) 229 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 )230 zsilim = MIN( zprdia(ji,jj,jk) / ( prmaxd(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) )231 zsilfac = 3.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim - 0.5 ) ) ) + 1.e0232 236 zsiborn = trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) * trb(ji,jj,jk,jpsil) 233 237 IF (gphit(ji,jj) < -30 ) THEN 234 zsilfac2 = 1. + 2. *zsiborn / ( zsiborn + xksi2**3 )238 zsilfac2 = 1. + zsiborn / ( zsiborn + xksi2**3 ) 235 239 ELSE 236 zsilfac2 = 1. + zsiborn / ( zsiborn + xksi2**3 )240 zsilfac2 = 1. 237 241 ENDIF 238 zysopt(ji,jj,jk) = grosip * zlim * zsilfac * zsilfac2 242 zsilim = MIN( zprdia(ji,jj,jk) / ( prmaxd(ji,jj,jk) + rtrn ), xlimsi2(ji,jj,jk) ) 243 zlim = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi1 ) 244 zratiosi = trb(ji,jj,jk,jpndi) 245 grosip2 = zsilfac2 * grosip 246 zquotasi = MIN( grosip2, trn(ji,jj,jk,jpdsi) / (zratiosi + rtrn ) ) 247 zysopt(ji,jj,jk) = 1./3. * zratiosi * zlim * MAX(0.0, grosip2 - zquotasi) 248 zysopt(ji,jj,jk) = zysopt(ji,jj,jk) * 1.005 * zsilim**3 / (0.005 + zsilim**3 ) 239 249 ENDIF 240 250 END DO … … 270 280 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 271 281 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpnmin(ji,jj,jk) ) & 272 & / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) ), xlimnfe(ji,jj,jk) ) )282 & / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) + rtrn ), xlimnfe(ji,jj,jk) ) ) 273 283 zpronewn(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xnanono3(ji,jj,jk) 274 284 zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) … … 307 317 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 308 318 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqppmin(ji,jj,jk) ) & 309 & / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) ), xlimpfe(ji,jj,jk) ) )319 & / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) + rtrn ), xlimpfe(ji,jj,jk) ) ) 310 320 zpronewp(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xpicono3(ji,jj,jk) 311 321 zproregp(ji,jj,jk) = zpronmax * xpiconh4(ji,jj,jk) … … 346 356 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 347 357 zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpdmin(ji,jj,jk) ) & 348 & / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) ), xlimdfe(ji,jj,jk) ) )358 & / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) + rtrn ), xlimsi(ji,jj,jk) ) ) 349 359 zpronewd(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xdiatno3(ji,jj,jk) 350 360 zproregd(ji,jj,jk) = zpronmax * xdiatnh4(ji,jj,jk) … … 352 362 zrat = MIN( 1., zratiop / (xqpdmax(ji,jj,jk) + rtrn) ) 353 363 zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 354 zpropmax = zprnutmax * zmax * xlim dfe(ji,jj,jk)364 zpropmax = zprnutmax * zmax * xlimsi(ji,jj,jk) 355 365 zpropo4d(ji,jj,jk) = zpropmax * xdiatpo4(ji,jj,jk) 356 366 zprodopd(ji,jj,jk) = zpropmax * xdiatdop(ji,jj,jk) 367 ! Uptake of Si 368 zprosid(ji,jj,jk) = zprnut(ji,jj,jk) * fvduptk(ji,jj,jk) / rno3 * rfact2 * zysopt(ji,jj,jk) 357 369 ! Uptake of iron 358 370 zrat = MIN( 1., zratiof / qfdmax ) … … 440 452 & + zprodopd(ji,jj,jk) * texcretd 441 453 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 442 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zpro rcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd454 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprosid(ji,jj,jk) 443 455 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) & 444 456 & + excretp * zprorcap(ji,jj,jk) … … 455 467 & + texcretp * zprofep(ji,jj,jk) 456 468 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 457 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk)469 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - zprosid(ji,jj,jk) 458 470 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) - zprorcap(ji,jj,jk) & 459 471 & + zpsino3 * zpronewn(ji,jj,jk) + zpsinh4 * zproregn(ji,jj,jk) & … … 466 478 #if defined key_ligand 467 479 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet 480 zpligprod(ji,jj,jk) = zdocprod * ldocp 481 zpligprod2(ji,jj,jk) = zfeup * plig(ji,jj,jk) * lthet 468 482 #endif 469 483 END DO … … 485 499 CALL iom_put( "PPNEWP" , zpronewp(:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by nanophyto 486 500 CALL iom_put( "PPNEWD" , zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by diatom 487 CALL iom_put( "PBSi" , zpro rcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:)) ! biogenic silica production501 CALL iom_put( "PBSi" , zprosid(:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic silica production 488 502 CALL iom_put( "PFeD" , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by diatom 489 503 CALL iom_put( "PFeP" , zprofep (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by diatom … … 499 513 CALL iom_put( "LPlight", zprpic (:,:,:) / (prmaxp(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 500 514 CALL iom_put( "LDlight", zprdia (:,:,:) / (prmaxd(:,:,:) + rtrn) * tmask(:,:,:) ) ! light limitation term 515 #if defined key_ligand 516 CALL iom_put( "LPRODP", zpligprod(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) ! light limitation term 517 CALL iom_put( "LDETP", zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) ! light limitation term 518 #endif 501 519 ENDIF 502 520 ELSE … … 505 523 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronewn(:,:,:) * zrfact2 * tmask(:,:,:) 506 524 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) 507 trc3d(:,:,:,jp_pcs0_3d + 8) = zpro rcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:)525 trc3d(:,:,:,jp_pcs0_3d + 8) = zprosid(:,:,:) * zrfact2 * tmask(:,:,:) 508 526 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 509 527 # if ! defined key_kriest … … 524 542 CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadp, zpislopeadd, zysopt ) 525 543 CALL wrk_dealloc( jpi, jpj, jpk, zprdia, zprpic, zprbio, zprorcan, zprorcap, zprorcad ) 526 CALL wrk_dealloc( jpi, jpj, jpk, zprofed, zprofep, zprofen )544 CALL wrk_dealloc( jpi, jpj, jpk, zprofed, zprofep, zprofen, zprosid ) 527 545 CALL wrk_dealloc( jpi, jpj, jpk, zpronewn, zpronewp, zpronewd, zproregn, zproregp, zproregd ) 528 546 CALL wrk_dealloc( jpi, jpj, jpk, zpropo4n, zpropo4p, zpropo4d, zrespn, zrespp, zrespd, zprnut ) 529 547 CALL wrk_dealloc( jpi, jpj, jpk, zprchln, zprchlp, zprchld, zprodopn, zprodopp, zprodopd ) 530 548 CALL wrk_dealloc( jpi, jpj, jpk, zcroissp, zcroissn, zcroissd ) 549 #if defined key_ligand 550 CALL wrk_dealloc( jpi, jpj, jpk, zpligprod, zpligprod2 ) 551 #endif 531 552 ! 532 553 IF( nn_timing == 1 ) CALL timing_stop('p5z_prod') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zrem.F90
r7190 r7617 80 80 CHARACTER (len=25) :: charout 81 81 REAL(wp), POINTER, DIMENSION(:,: ) :: ztempbac 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zwork1, zdepprod, zfacsi, zfacsib 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zwork1, zdepprod, zfacsi, zfacsib, znitr 83 83 !!--------------------------------------------------------------------- 84 84 ! … … 87 87 ! Allocate temporary workspace 88 88 CALL wrk_alloc( jpi, jpj, ztempbac ) 89 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib )89 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib, znitr ) 90 90 91 91 ! Initialisation of temprary arrys … … 199 199 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 200 200 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 201 znitr(ji,jj,jk) = zonitr 201 202 END DO 202 203 END DO … … 224 225 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.05 225 226 #else 226 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.1 6227 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0. 12228 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.0 4227 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.12 228 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.09 229 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.03 229 230 #endif 230 231 END DO … … 282 283 CALL iom_put( "REMIN" , zwork1(:,:,:) * tmask(:,:,:) * zrfact2 ) ! Remineralisation rate 283 284 CALL iom_put( "DENIT" , denitrc(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2 ) ! Denitrification 285 CALL iom_put( "NIT" , znitr(:,:,:) * rno3 * tmask(:,:,:) * zrfact2 ) ! 286 CALL iom_put( "BACT" , zdepbac(:,:,:) * 1.E6 * tmask(:,:,:) ) ! Bacterial biomass 284 287 ENDIF 285 288 ! 286 289 CALL wrk_dealloc( jpi, jpj, ztempbac ) 287 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib )290 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib, znitr ) 288 291 ! 289 292 IF( nn_timing == 1 ) CALL timing_stop('p5z_rem') -
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zsed.F90
r6841 r7617 213 213 #if defined key_ligand 214 214 trn(:,:,:,jpfep) = trn(:,:,:,jpfep) + ( hydrofe(:,:,:) * fep_rath ) * rfact2 215 trn(:,:,:,jplgw) = trn(:,:,:,jplgw) + ( hydrofe(:,:,:) * 0.5) * rfact2215 trn(:,:,:,jplgw) = trn(:,:,:,jplgw) + ( hydrofe(:,:,:) * hydrolig ) * rfact2 216 216 #endif 217 217 !
Note: See TracChangeset
for help on using the changeset viewer.