Changeset 1457
- Timestamp:
- 2009-05-23T10:16:38+02:00 (15 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 2 added
- 1 deleted
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OFF_SRC/IOM/iom.F90
r1450 r1457 33 33 PUBLIC ! must be public to be able to access iom_def through iom 34 34 35 #if defined key_iomput 36 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .TRUE. !: iom_put flag 37 #else 38 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .FALSE. !: iom_put flag 39 #endif 40 35 41 PUBLIC iom_init, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_gettime, iom_rstput, iom_put 36 42 -
trunk/NEMO/OFF_SRC/opa.F90
r1450 r1457 225 225 226 226 CALL dta_dyn( nit000 ) ! Initialization for the dynamics 227 227 228 228 CALL trc_ini ! Passive tracers 229 230 CALL day_init ! Calendar231 229 ! ! Ocean physics 232 230 CALL tra_qsr_init ! Solar radiation penetration -
trunk/NEMO/OFF_SRC/step.F90
r1291 r1457 22 22 USE trcrst ! restart for passive tracers 23 23 USE stpctl ! time stepping control (stp_ctl routine) 24 USE iom 24 25 25 26 IMPLICIT NONE … … 70 71 !! * Arguments 71 72 INTEGER, INTENT( in ) :: kstp ! ocean time-step index 72 73 !! * local declarations74 INTEGER :: indic ! error indicator if < 075 73 !! --------------------------------------------------------------------- 76 77 indic = 1 ! reset to no error condition78 74 79 75 CALL day( kstp ) ! Calendar 80 76 81 CALL dta_dyn( kstp ) ! Interpolation of the dynamical fields77 IF( lk_iomput ) CALL iom_setkt( kstp ) ! say to iom that we are at time step kstp 82 78 83 CALL trc_stp( kstp, indic) ! time-stepping 79 CALL dta_dyn( kstp ) ! Interpolation of the dynamical fields 80 81 CALL trc_stp( kstp ) ! time-stepping 84 82 85 83 -
trunk/NEMO/OPA_SRC/IOM/iom.F90
r1441 r1457 33 33 PUBLIC ! must be public to be able to access iom_def through iom 34 34 35 #if defined key_iomput 36 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .TRUE. !: iom_put flag 37 #else 38 LOGICAL, PUBLIC, PARAMETER :: lk_iomput = .FALSE. !: iom_put flag 39 #endif 35 40 PUBLIC iom_init, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_gettime, iom_rstput, iom_put 36 41 … … 892 897 893 898 !!---------------------------------------------------------------------- 894 !! INTERFACE iom_ rstput899 !! INTERFACE iom_put 895 900 !!---------------------------------------------------------------------- 896 901 SUBROUTINE iom_p2d( cdname, pfield2d ) -
trunk/NEMO/OPA_SRC/step.F90
r1438 r1457 281 281 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 282 282 !----------------------------------------------------------------------- 283 CALL trc_stp( kstp , indic) ! time-stepping283 CALL trc_stp( kstp ) ! time-stepping 284 284 #endif 285 285 -
trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90
r1264 r1457 22 22 USE trdmld_trc 23 23 USE trdmld_trc_oce 24 USE iom 24 25 25 26 IMPLICIT NONE … … 29 30 30 31 !!* Substitution 31 # include " domzgr_substitute.h90"32 # include "top_substitute.h90" 32 33 !!---------------------------------------------------------------------- 33 34 !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) … … 71 72 REAL(wp) :: znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju 72 73 #if defined key_trc_diaadd 73 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 74 REAL(wp) :: ze3t 75 #endif 76 #if defined key_trc_diaadd && defined key_iomput 77 REAL(wp), DIMENSION(jpi,jpj,17) :: zw2d 78 # if defined key_trc_dia3d 79 REAL(wp), DIMENSION(jpi,jpj,jpk,3) :: zw3d 80 # endif 74 81 #endif 75 82 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: ztrbio … … 83 90 ENDIF 84 91 85 #if defined key_trc_diaadd86 ! convert fluxes in per day87 ze3t(:,:,:) = 0.e088 DO jk = 1, jpkbm189 ze3t(:,:,jk) = fse3t(:,:,jk) * 86400.90 END DO91 #endif92 93 92 fbod(:,:) = 0.e0 94 #if defined key_trc_diaadd 93 #if defined key_trc_diaadd && ! defined key_iomput 95 94 DO jl = jp_lob0_2d, jp_lob1_2d 96 95 trc2d(:,:,jl) = 0.e0 97 96 END DO 97 #endif 98 #if defined key_trc_diaadd && defined key_iomput 99 zw2d(:,:,:) = 0.e0 100 # if defined key_trc_dia3d 101 zw3d(:,:,:,:) = 0.e0 102 # endif 98 103 #endif 99 104 … … 107 112 ! ! -------------------------- ! 108 113 DO jj = 2, jpjm1 109 DO ji = 2, jpim1 !!gm use of fs_2 fs_jpm1 required here 110 114 DO ji = fs_2, fs_jpim1 111 115 ! trophic variables( det, zoo, phy, no3, nh4, dom) 112 116 ! ------------------------------------------------ … … 126 130 zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 ) 127 131 zlnh4 = znh4 / (znh4+aknh4) 128 129 132 130 133 ! sinks and sources … … 189 192 zdeta = zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet 190 193 zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 194 195 ! tracer flux at totox-point added to the general trend 196 tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 197 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 198 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 199 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 200 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 201 tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 191 202 192 203 #if defined key_trc_diabio … … 206 217 trbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4 207 218 trbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom 208 #endif209 #if defined key_trc_diaadd210 trc2d(ji,jj,jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t(ji,jj,jk)211 trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t(ji,jj,jk)212 trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t(ji,jj,jk)213 trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t(ji,jj,jk)214 trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t(ji,jj,jk)215 trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t(ji,jj,jk)216 trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t(ji,jj,jk)217 ! trend number 8 is in trcsed.F218 trc2d(ji,jj,jp_lob0_2d + 8) = trc2d(ji,jj,jp_lob0_2d + 8) + zzoodet * ze3t(ji,jj,jk)219 trc2d(ji,jj,jp_lob0_2d + 9) = trc2d(ji,jj,jp_lob0_2d + 9) + zzoobod * ze3t(ji,jj,jk)220 trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t(ji,jj,jk)221 trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t(ji,jj,jk)222 trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t(ji,jj,jk)223 trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t(ji,jj,jk)224 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t(ji,jj,jk)225 trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + ( zno3phy + znh4phy - zphynh4 &226 & - zphydom - zphyzoo - zphydet ) * ze3t(ji,jj,jk)227 trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + ( zphyzoo + zdetzoo - zzoodet &228 & - zzoobod - zzoonh4 - zzoodom ) * ze3t(ji,jj,jk)229 trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t(ji,jj,jk)230 ! trend number 19 is in trcexp.F231 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400232 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400233 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400234 219 #endif 235 220 IF( l_trdtrc ) THEN … … 253 238 ENDIF 254 239 255 256 ! tracer flux at totox-point added to the general trend 257 tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 258 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 259 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 260 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 261 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 262 tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 263 240 #if defined key_trc_diaadd 241 ! convert fluxes in per day 242 ze3t = fse3t(ji,jj,jk) * 86400. 243 #if ! defined key_iomput 244 trc2d(ji,jj,jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t 245 trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t 246 trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t 247 trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t 248 trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t 249 trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t 250 trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t 251 ! trend number 8 is in trcsed.F 252 trc2d(ji,jj,jp_lob0_2d + 8) = trc2d(ji,jj,jp_lob0_2d + 8) + zzoodet * ze3t 253 trc2d(ji,jj,jp_lob0_2d + 9) = trc2d(ji,jj,jp_lob0_2d + 9) + zzoobod * ze3t 254 trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t 255 trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t 256 trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t 257 trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t 258 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t 259 trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + ( zno3phy + znh4phy - zphynh4 & 260 & - zphydom - zphyzoo - zphydet ) * ze3t 261 trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + ( zphyzoo + zdetzoo - zzoodet & 262 & - zzoobod - zzoonh4 - zzoodom ) * ze3t 263 trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t 264 ! trend number 19 is in trcexp.F 265 #else 266 zw2d(ji,jj,1) = zw2d(ji,jj,1) + zno3phy * ze3t 267 zw2d(ji,jj,2) = zw2d(ji,jj,2) + znh4phy * ze3t 268 zw2d(ji,jj,3) = zw2d(ji,jj,3) + zphydom * ze3t 269 zw2d(ji,jj,4) = zw2d(ji,jj,4) + zphynh4 * ze3t 270 zw2d(ji,jj,5) = zw2d(ji,jj,5) + zphyzoo * ze3t 271 zw2d(ji,jj,6) = zw2d(ji,jj,6) + zphydet * ze3t 272 zw2d(ji,jj,7) = zw2d(ji,jj,7) + zdetzoo * ze3t 273 zw2d(ji,jj,8) = zw2d(ji,jj,8) + zzoodet * ze3t 274 zw2d(ji,jj,9) = zw2d(ji,jj,9) + zzoobod * ze3t 275 zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 276 zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 277 zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 278 zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 279 zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 280 zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 281 zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 282 zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 283 #endif 284 #if defined key_trc_dia3d 285 # if ! defined key_iomput 286 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 287 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400 288 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400 289 # else 290 zw3d(ji,jj,jk,1) = zno3phy * 86400 291 zw3d(ji,jj,jk,2) = znh4phy * 86400 292 zw3d(ji,jj,jk,3) = znh4no3 * 86400 293 # endif 294 #endif 295 #endif 264 296 END DO 265 297 END DO 266 298 END DO 267 299 268 !269 270 !!gm do loop until jpkm1 only!271 300 ! ! -------------------------- ! 272 DO jk = jpkb, jpk 301 DO jk = jpkb, jpkm1 ! Upper ocean (bio-layers) ! 273 302 ! ! -------------------------- ! 274 275 303 DO jj = 2, jpjm1 276 DO ji = 2,jpim1 !!gm use of fs_2 & fs_jpim1 required 277 304 DO ji = fs_2, fs_jpim1 278 305 ! remineralisation of all quantities towards nitrate 279 306 … … 335 362 zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 336 363 364 ! tracer flux at totox-point added to the general trend 365 tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 366 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 367 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 368 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 369 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 370 tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 371 ! 337 372 #if defined key_trc_diabio 338 373 trbio(ji,jj,jk,jp_lob0_trd ) = zno3phy … … 351 386 trbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4 352 387 trbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom 353 #endif354 #if defined key_trc_diaadd355 trc2d(ji,jj, jp_lob0_2d ) = trc2d(ji,jj, jp_lob0_2d ) + zno3phy * ze3t(ji,jj,jk)356 trc2d(ji,jj, jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t(ji,jj,jk)357 trc2d(ji,jj, jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t(ji,jj,jk)358 trc2d(ji,jj, jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t(ji,jj,jk)359 trc2d(ji,jj, jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t(ji,jj,jk)360 trc2d(ji,jj, jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t(ji,jj,jk)361 trc2d(ji,jj, jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t(ji,jj,jk)362 ! trend number 8 is in trcsed.F363 trc2d(ji,jj,jp_lob0_2d + 8) = trc2d(ji,jj,jp_lob0_2d + 8) + zzoodet * ze3t(ji,jj,jk)364 trc2d(ji,jj,jp_lob0_2d + 9) = trc2d(ji,jj,jp_lob0_2d + 9) + zzoobod * ze3t(ji,jj,jk)365 trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t(ji,jj,jk)366 trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t(ji,jj,jk)367 trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t(ji,jj,jk)368 trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t(ji,jj,jk)369 trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t(ji,jj,jk)370 371 trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + ( zno3phy + znh4phy - zphynh4 &372 & - zphydom - zphyzoo - zphydet ) * ze3t(ji,jj,jk)373 trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + ( zphyzoo + zdetzoo - zzoodet &374 & - zzoobod - zzoonh4 - zzoodom ) * ze3t(ji,jj,jk)375 trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t(ji,jj,jk)376 377 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400378 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400379 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400380 388 #endif 381 389 IF( l_trdtrc ) THEN … … 398 406 ! trend number 17 in trcexp 399 407 ENDIF 400 401 402 ! tracer flux at totox-point added to the general trend 403 tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 404 tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 405 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 406 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 407 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 408 tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 409 ! 408 #if defined key_trc_diaadd && defined key_trc_dia3d 409 # if ! defined key_iomput 410 trc3d(ji,jj,jk,jp_lob0_3d ) = zno3phy * 86400 411 trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400 412 trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400 413 # else 414 zw3d(ji,jj,jk,1) = zno3phy * 86400 415 zw3d(ji,jj,jk,2) = znh4phy * 86400 416 zw3d(ji,jj,jk,3) = znh4no3 * 86400 417 # endif 418 #endif 410 419 END DO 411 420 END DO … … 413 422 414 423 #if defined key_trc_diaadd 415 ! Lateral boundary conditions on trc2d and trc3d 424 ! Lateral boundary conditions 425 # if ! defined key_iomput 416 426 DO jl = jp_lob0_2d, jp_lob1_2d 417 427 CALL lbc_lnk( trc2d(:,:,jl),'T', 1. ) 418 428 END DO 429 # else 430 DO jl = 1, 17 431 CALL lbc_lnk( zw2d(:,:,jl),'T', 1. ) 432 END DO 433 ! Save diagnostics 434 CALL iom_put( "TNO3PHY", zw2d(:,:,1) ) 435 CALL iom_put( "TNH4PHY", zw2d(:,:,2) ) 436 CALL iom_put( "TPHYDOM", zw2d(:,:,3) ) 437 CALL iom_put( "TPHYNH4", zw2d(:,:,4) ) 438 CALL iom_put( "TPHYZOO", zw2d(:,:,5) ) 439 CALL iom_put( "TPHYDET", zw2d(:,:,6) ) 440 CALL iom_put( "TDETZOO", zw2d(:,:,7) ) 441 CALL iom_put( "TZOODET", zw2d(:,:,8) ) 442 CALL iom_put( "TZOOBOD", zw2d(:,:,9) ) 443 CALL iom_put( "TZOONH4", zw2d(:,:,10) ) 444 CALL iom_put( "TZOODOM", zw2d(:,:,11) ) 445 CALL iom_put( "TNH4NO3", zw2d(:,:,12) ) 446 CALL iom_put( "TDOMNH4", zw2d(:,:,13) ) 447 CALL iom_put( "TDETNH4", zw2d(:,:,14) ) 448 CALL iom_put( "TPHYTOT", zw2d(:,:,15) ) 449 CALL iom_put( "TZOOTOT", zw2d(:,:,16) ) 450 CALL iom_put( "TDETDOM", zw2d(:,:,17) ) 451 # endif 452 #endif 453 454 #if defined key_trc_diaadd && defined key_trc_dia3d 455 ! Lateral boundary conditions 456 # if ! defined key_iomput 419 457 DO jl = jp_lob0_3d, jp_lob1_3d 420 458 CALL lbc_lnk( trc3d(:,:,1,jl),'T', 1. ) 421 459 END DO 460 # else 461 DO jl = 1, 3 462 CALL lbc_lnk( zw3d(:,:,:,jl),'T', 1. ) 463 END DO 464 ! save diagnostics 465 CALL iom_put( "FNO3PHY", zw3d(:,:,:,1) ) 466 CALL iom_put( "FNH4PHY", zw3d(:,:,:,2) ) 467 CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) ) 468 # endif 422 469 #endif 423 470 -
trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90
r1255 r1457 23 23 USE trdmld_trc 24 24 USE trdmld_trc_oce 25 USE iom 25 26 26 27 IMPLICIT NONE … … 30 31 31 32 !!* Substitution 32 # include " domzgr_substitute.h90"33 # include "top_substitute.h90" 33 34 !!---------------------------------------------------------------------- 34 35 !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007) … … 54 55 INTEGER, INTENT( in ) :: kt ! ocean time-step index 55 56 !! 56 INTEGER :: ji, jj, jk, jl 57 REAL(wp) :: zgeolpoc, zfact 58 INTEGER , DIMENSION(jpi,jpj) :: ikbot 59 REAL(wp), DIMENSION(jpi,jpj) :: zwork 57 INTEGER :: ji, jj, jk, jl, ikbot 58 REAL(wp) :: zgeolpoc, zfact, zwork, ze3t 60 59 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrbio 61 60 CHARACTER (len=25) :: charout … … 81 80 DO jk = 1, jpkm1 82 81 DO jj = 2, jpjm1 83 DO ji = 2,jpim184 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) &85 & + (1./fse3t(ji,jj,jk))* dmin3(ji,jj,jk) * fbod(ji,jj)82 DO ji = fs_2, fs_jpim1 83 ze3t = 1. / fse3t(ji,jj,jk) 84 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + ze3t * dmin3(ji,jj,jk) * fbod(ji,jj) 86 85 END DO 87 86 END DO 88 87 END DO 89 88 90 !Find the last level of the water column91 !Compute fluxes due to sinking particles (slow)89 ! Find the last level of the water column 90 ! Compute fluxes due to sinking particles (slow) 92 91 93 ikbot(:,:) = jpk94 zwork(:,:) = 0.e095 92 96 !!gm ikbot already exist in opa... 97 DO jk = 1, jpkm1 98 DO jj = 2, jpjm1 99 DO ji = 2, jpim1 100 IF( tmask(ji,jj,jk) == 1 .AND. tmask(ji,jj,jk+1) == 0 ) THEN 101 ikbot(ji,jj) = jk 102 zwork(ji,jj) = vsed * trn(ji,jj,jk,jpdet) 103 ENDIF 104 END DO 93 zgeolpoc = 0.e0 ! Initialization 94 ! Release of nutrients from the "simple" sediment 95 DO jj = 2, jpjm1 96 DO ji = fs_2, fs_jpim1 97 ikbot = mbathy(ji,jj) - 1 98 tra(ji,jj,ikbot,jpno3) = tra(ji,jj,ikbot,jpno3) + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot) 99 ! Deposition of organic matter in the sediment 100 zwork = vsed * trn(ji,jj,ikbot,jpdet) 101 sedpoca(ji,jj) = ( zwork + dminl(ji,jj) * fbod(ji,jj) & 102 & - sedlam * sedpocn(ji,jj) - sedlostpoc * sedpocn(ji,jj) ) * rdt 103 zgeolpoc = zgeolpoc + sedlostpoc * sedpocn(ji,jj) * e1t(ji,jj) * e2t(ji,jj) 105 104 END DO 106 105 END DO 107 106 108 zgeolpoc = 0.e0 ! Initialization109 110 ! Release of nutrients from the "simple" sediment111 107 DO jj = 2, jpjm1 112 DO ji = 2, jpim1 113 tra(ji,jj,ikbot(ji,jj),jpno3) = tra(ji,jj,ikbot(ji,jj),jpno3) & 114 & + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot(ji,jj)) 115 116 ! Deposition of organic matter in the sediment 117 zgeolpoc = zgeolpoc + sedlostpoc * sedpocn(ji,jj) * e1t(ji,jj) * e2t(ji,jj) 118 119 !!gm factorisationof rdt just bellow... 120 sedpoca(ji,jj) = zwork(ji,jj) * rdt + dminl(ji,jj) * fbod(ji,jj) * rdt & 121 & - sedlam * sedpocn(ji,jj) * rdt - sedlostpoc * sedpocn(ji,jj) * rdt 122 123 END DO 124 END DO 125 126 DO jj = 2,jpjm1 127 DO ji = 2,jpim1 108 DO ji = fs_2, fs_jpim1 128 109 tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + zgeolpoc * cmask(ji,jj) / areacot / fse3t(ji,jj,1) 129 110 END DO … … 133 114 134 115 ! Oa & Ek: diagnostics depending on jpdia2d ! left as example 135 # if defined key_trc_diaadd 116 #if defined key_trc_diaadd 117 # if ! defined key_iomput 136 118 trc2d(:,:,jp_lob0_2d + 18) = sedpocn(:,:) 119 # else 120 CALL iom_put( "SEDPOC" , sedpocn ) 137 121 # endif 122 #endif 138 123 139 124 ! Leap-frog scheme (only in explicit case, otherwise the -
trunk/NEMO/TOP_SRC/LOBSTER/trclsm_lobster.F90
r1283 r1457 42 42 INTEGER :: numnatl 43 43 !! 44 #if defined key_trc_diaadd 44 #if defined key_trc_diaadd && ! defined key_iomput 45 45 INTEGER :: jl, jn 46 46 ! definition of additional diagnostic as a structure … … 78 78 79 79 NAMELIST/namlobopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig 80 #if defined key_trc_diaadd 80 #if defined key_trc_diaadd && ! defined key_iomput 81 81 NAMELIST/namlobdia/nwritedia, lobdia3d, lobdia2d ! additional diagnostics 82 82 #endif … … 280 280 ENDIF 281 281 282 #if defined key_trc_diaadd 282 #if defined key_trc_diaadd && ! defined key_iomput 283 283 284 284 ! Namelist namlobdia -
trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90
r1255 r1457 20 20 USE trdmld_trc 21 21 USE trdmld_trc_oce 22 22 USE iom 23 23 USE prtctl_trc ! Print control for debbuging 24 24 … … 61 61 REAL(wp) :: ztra 62 62 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwork 63 #if defined key_trc_diaadd && defined key_iomput 64 REAL(wp), DIMENSION(jpi,jpj) :: zw2d 65 #endif 63 66 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrbio 64 67 CHARACTER (len=25) :: charout … … 75 78 76 79 ! for detritus sedimentation only - jpdet 77 78 80 zwork(:,:,1 ) = 0.e0 ! surface value set to zero 79 81 zwork(:,:,jpk) = 0.e0 ! bottom value set to zero 82 83 #if defined key_trc_diaadd && defined key_iomput 84 zw2d(:,:) = 0. 85 # endif 80 86 81 87 IF( l_trdtrc )THEN … … 85 91 86 92 ! tracer flux at w-point: we use -vsed (downward flux) with simplification : no e1*e2 87 88 DO jk = 2, jpk 93 DO jk = 2, jpkm1 89 94 zwork(:,:,jk) = -vsed * trn(:,:,jk-1,jpdet) 90 95 END DO 91 96 92 97 ! tracer flux divergence at t-point added to the general trend 93 94 98 DO jk = 1, jpkm1 95 99 DO jj = 1, jpj … … 97 101 ztra = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 98 102 tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + ztra 99 # 103 #if defined key_trc_diabio 100 104 trbio(ji,jj,jk,jp_lob0_trd + 7) = ztra 105 #endif 106 #if defined key_trc_diaadd 107 # if ! defined key_iomput 108 trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ztra * fse3t(ji,jj,jk) * 86400. 109 # else 110 zw2d(ji,jj) = zw2d(ji,jj) + ztra * fse3t(ji,jj,jk) * 86400. 101 111 # endif 102 # if defined key_trc_diaadd 103 trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ztra * fse3t(ji,jj,jk) * 86400. 104 # endif 112 #endif 105 113 END DO 106 114 END DO … … 112 120 #endif 113 121 #if defined key_trc_diaadd 122 # if ! defined key_iomput 114 123 jl = jp_lob0_2d + 7 115 124 CALL lbc_lnk( trc2d(:,:,jl), 'T', 1. ) ! Lateral boundary conditions on trc2d 125 # else 126 CALL lbc_lnk( zw2d(:,:), 'T', 1. ) ! Lateral boundary conditions on zw2d 127 CALL iom_put( "TDETSED", zw2d ) 128 # endif 116 129 #endif 117 130 ! -
trunk/NEMO/TOP_SRC/PISCES/p4zbio.F90
r1329 r1457 26 26 USE p4zrem ! 27 27 USE prtctl_trc 28 28 USE iom 29 29 30 IMPLICIT NONE 30 31 PRIVATE … … 62 63 #if defined key_kriest 63 64 REAL(wp) :: zcoef1, zcoef2 65 #endif 66 #if defined key_trc_dia3d && defined key_kriest && defined key_iomput 67 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d 64 68 #endif 65 69 CHARACTER (len=25) :: charout … … 128 132 129 133 # if defined key_trc_dia3d && defined key_kriest 130 trc3d(:,:,:,jp_pcs0_3d + 10) = tra(:,:,:,jpcal) & 131 & * xnegtr(:,:,:) * 1.e3 * rfact2r * tmask(:,:,:) 134 #if ! defined key_iomput 135 trc3d(:,:,:,jp_pcs0_3d + 10) = tra(:,:,:,jpcal) * xnegtr(:,:,:) * 1.e3 * rfact2r * tmask(:,:,:) 136 #else 137 zw3d(:,:,:) = tra(:,:,:,jpcal) * xnegtr(:,:,:) * 1.e3 * rfact2r * tmask(:,:,:) 138 IF( jnt == nrdttrc ) CALL iom_put( "PBSi", zw3d ) 132 139 # endif 140 #endif 133 141 ! 134 142 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90
r1329 r1457 23 23 USE prtctl_trc 24 24 USE p4zche 25 USE iom 25 26 26 27 USE lib_mpp … … 32 33 33 34 REAL(wp) :: & ! pre-industrial atmospheric [co2] (ppm) 34 atcox = 0.20946 , & !: 35 atcco2 = 278. !: 36 37 REAL(wp) :: & 38 tco2flx !: Total flux of carbon per year 35 atcox = 0.20946 , & !: 36 atcco2 = 278. !: 37 38 REAL(wp) :: & 39 xconv = 0.01/3600., & ! coefficients for conversion 40 tco2flx !: Total flux of carbon per year 39 41 40 42 !!* Substitution … … 58 60 INTEGER, INTENT(in) :: kt 59 61 INTEGER :: ji, jj, jrorr, nspyr 60 REAL(wp) :: zt tc, zws, zkgwan62 REAL(wp) :: ztc, ztc2, ztc3, zws, zkgwan 61 63 REAL(wp) :: zfld, zflu, zfld16, zflu16, zfact 62 REAL(wp) :: zph, zah2, zbot, zdic, zalk, zsch mitto2, zalka, zschmittco264 REAL(wp) :: zph, zah2, zbot, zdic, zalk, zsch_o2, zalka, zsch_co2 63 65 REAL(wp), DIMENSION(jpi,jpj) :: zkgco2, zkgo2, zh2co3, ztco2flx 66 #if defined key_trc_diaadd && defined key_iomput 67 REAL(wp), DIMENSION(jpi,jpj) :: zcflx, zoflx, zkg, zdelc 68 #endif 64 69 CHARACTER (len=25) :: charout 65 70 … … 120 125 !CDIR NOVERRCHK 121 126 DO ji = 1, jpi 122 123 zttc = MIN( 35., tn(ji,jj,1) ) 124 125 ! Compute the schmidt Number both O2 and CO2 126 ! ------------------------------------------ 127 128 zschmittco2 = 2073.1 - 125.62 * zttc + 3.6276 * zttc**2 - 0.043126 * zttc**3 129 zschmitto2 = 1953.4 - 128.0 * zttc + 3.9918 * zttc**2 - 0.050091 * zttc**3 130 127 ztc = MIN( 35., tn(ji,jj,1) ) 128 ztc2 = ztc * ztc 129 ztc3 = ztc * ztc2 130 ! Compute the schmidt Number both O2 and CO2 131 zsch_co2 = 2073.1 - 125.62 * ztc + 3.6276 * ztc2 - 0.043126 * ztc3 132 zsch_o2 = 1953.4 - 128.0 * ztc + 3.9918 * ztc2 - 0.050091 * ztc3 131 133 ! wind speed 132 zws = wndm(ji,jj) 133 134 ! Compute the piston velocity for O2 and CO2 135 ! ------------------------------------------ 136 137 zkgwan = ( 0.3 * zws * zws & 138 & + 2.5 * ( 0.5246 + zttc * ( 0.016256+zttc*0.00049946 ) ) ) & 134 zws = wndm(ji,jj) * wndm(ji,jj) 135 ! Compute the piston velocity for O2 and CO2 136 zkgwan = 0.3 * zws + 2.5 * ( 0.5246 + 0.016256 * ztc + 0.00049946 * ztc2 ) 139 137 # if defined key_off_degrad 140 & * facvol(ji,jj,1) & 141 # endif 142 & / (100. * 3600.)* ( 1.- fr_i(ji,jj) ) * tmask(ji,jj,1) 143 144 ! COMPUTE GAS EXCHANGE FOR CO2 145 zkgco2(ji,jj) = zkgwan * SQRT( 660./ zschmittco2 ) 146 zkgo2(ji,jj) = zkgwan * SQRT( 660./ zschmitto2 ) 147 148 END DO 149 END DO 150 151 ztco2flx(:,:) = 0. 138 zkgwan = zkgwan * xconv * ( 1.- fr_i(ji,jj) ) * tmask(ji,jj,1) * facvol(ji,jj,1) 139 #else 140 zkgwan = zkgwan * xconv * ( 1.- fr_i(ji,jj) ) * tmask(ji,jj,1) 141 #endif 142 ! compute gas exchange for CO2 and O2 143 zkgco2(ji,jj) = zkgwan * SQRT( 660./ zsch_co2 ) 144 zkgo2 (ji,jj) = zkgwan * SQRT( 660./ zsch_o2 ) 145 END DO 146 END DO 147 148 #if ! defined key_iomput 152 149 DO jj = 1, jpj 153 150 DO ji = 1, jpi … … 167 164 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + ( zfld16 - zflu16 ) / fse3t(ji,jj,1) 168 165 169 # if defined key_trc_diaadd 166 # if defined key_trc_diaadd 170 167 ! Save diagnostics 171 168 trc2d(ji,jj,jp_pcs0_2d ) = ( zfld - zflu ) * 1000. * tmask(ji,jj,1) … … 177 174 END DO 178 175 ! 176 #else 177 DO jj = 1, jpj 178 DO ji = 1, jpi 179 ! Compute CO2 flux for the sea and air 180 zfld = atcco2 * tmask(ji,jj,1) * chemc(ji,jj,1) * zkgco2(ji,jj) 181 zflu = zh2co3(ji,jj) * tmask(ji,jj,1) * zkgco2(ji,jj) 182 tra(ji,jj,1,jpdic) = tra(ji,jj,1,jpdic) + ( zfld - zflu ) / fse3t(ji,jj,1) 183 184 ! compute flux of carbon 185 ztco2flx(ji,jj) = ( zfld - zflu ) * rfact & 186 & * e1t(ji,jj) * e2t(ji,jj) * tmask(ji,jj,1) * 1000. 187 188 ! Compute O2 flux 189 zfld16 = atcox * chemc(ji,jj,2) *tmask(ji,jj,1) * zkgo2(ji,jj) 190 zflu16 = trn(ji,jj,1,jpoxy) * tmask(ji,jj,1) * zkgo2(ji,jj) 191 tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + ( zfld16 - zflu16 ) / fse3t(ji,jj,1) 192 # if defined key_trc_diaadd 193 ! Save diagnostics 194 zcflx(ji,jj) = ( zfld - zflu ) * 1000. * tmask(ji,jj,1) 195 zoflx(ji,jj) = ( zfld16 - zflu16 ) * 1000. * tmask(ji,jj,1) 196 zkg (ji,jj) = zkgco2(ji,jj) * tmask(ji,jj,1) 197 zdelc(ji,jj) = atcco2 - zh2co3(ji,jj) / ( chemc(ji,jj,1) + rtrn ) * tmask(ji,jj,1) 198 # endif 199 END DO 200 END DO 201 #endif 179 202 180 203 ! Total Flux of Carbon … … 203 226 ENDIF 204 227 228 # if defined key_trc_diaadd && defined key_iomput 229 CALL iom_put( "Cflx", zcflx ) 230 CALL iom_put( "Oflx", zoflx ) 231 CALL iom_put( "Kg" , zkg ) 232 CALL iom_put( "DelC", zdelc ) 233 #endif 205 234 206 235 END SUBROUTINE p4z_flx -
trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90
r1329 r1457 22 22 USE sms_pisces 23 23 USE prtctl_trc 24 USE iom 24 25 25 26 IMPLICIT NONE … … 61 62 REAL(wp) :: zomegaca, zexcess, zexcess0 62 63 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zco3 64 #if defined key_trc_dia3d && defined key_iomput 65 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d 66 #endif 63 67 CHARACTER (len=25) :: charout 64 68 !!--------------------------------------------------------------------- … … 151 155 152 156 # if defined key_trc_diaadd && defined key_trc_dia3d 153 DO jk = 1, jpk 154 DO jj = 1, jpj 155 DO ji = 1, jpi 156 trc3d(ji,jj,jk,jp_pcs0_3d ) = hi (ji,jj,jk) * tmask(ji,jj,jk) 157 trc3d(ji,jj,jk,jp_pcs0_3d + 1) = zco3(ji,jj,jk) * tmask(ji,jj,jk) 158 trc3d(ji,jj,jk,jp_pcs0_3d + 2) = aksp(ji,jj,jk) / calcon * tmask(ji,jj,jk) 159 ENDDO 160 ENDDO 161 ENDDO 157 # if ! defined key_iomput 158 trc3d(:,:,:,jp_pcs0_3d ) = hi (:,:,:) * tmask(:,:,:) 159 trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:) * tmask(:,:,:) 160 trc3d(:,:,:,jp_pcs0_3d + 2) = aksp(:,:,:) / calcon * tmask(:,:,:) 161 # else 162 zw3d(:,:,:) = hi (:,:,:) * tmask(:,:,:) 163 CALL iom_put( "PH", zw3d ) 164 zw3d(:,:,:) = zco3(:,:,:) * tmask(:,:,:) 165 CALL iom_put( "CO3", zw3d ) 166 zw3d(:,:,:) = aksp(:,:,:) / calcon * tmask(:,:,:) 167 CALL iom_put( "CO3sat", zw3d ) 168 # endif 162 169 # endif 163 170 ! -
trunk/NEMO/TOP_SRC/PISCES/p4zopt.F90
r1445 r1457 18 18 USE trc_oce ! ocean-tracer share variables 19 19 USE sms_pisces ! Source Minus Sink of PISCES 20 USE iom 20 21 21 22 IMPLICIT NONE … … 60 61 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zekg, zekr, zekb 61 62 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze1 , ze2 , ze3, ze0 63 #if defined key_trc_diaadd && defined key_iomput 64 REAL(wp), DIMENSION(jpi,jpj) :: zw2d 65 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d 66 #endif 62 67 !!--------------------------------------------------------------------- 63 68 … … 226 231 END DO 227 232 228 # if defined key_trc_diaadd 229 trc2d(:,:, jp_pcs0_2d + 10) = heup (:,:) * tmask(:,:,1) ! save for outputs 233 #if defined key_trc_diaadd 234 # if ! defined key_iomput 235 ! save for outputs 236 trc2d(:,:, jp_pcs0_2d + 10) = heup(:,: ) * tmask(:,:,1) 237 trc3d(:,:,:,jp_pcs0_3d + 3) = etot(:,:,:) * tmask(:,:,:) 238 # else 239 ! write diagnostics 240 zw2d(:,: ) = heup(:,: ) * tmask(:,:,1) 241 zw3d(:,:,:) = etot(:,:,:) * tmask(:,:,:) 242 IF( jnt == nrdttrc ) CALL iom_put( "heup", zw2d ) 243 IF( jnt == nrdttrc ) CALL iom_put( "PAR" , zw3d ) 230 244 # endif 245 #endif 231 246 ! 232 247 END SUBROUTINE p4z_opt -
trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90
r1351 r1457 20 20 USE p4zint 21 21 USE p4zlim 22 USE iom 22 23 23 24 USE lib_mpp … … 78 79 #if defined key_trc_diaadd && defined key_trc_dia3d 79 80 REAL(wp) :: zrfact2 81 #if defined key_iomput 82 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d 83 #endif 80 84 #endif 81 85 REAL(wp), DIMENSION(jpi,jpj) :: zmixnano , zmixdiat, zstrn … … 107 111 108 112 109 ! Computation of the optimal production 110 ! ------------------------------------- 113 ! Computation of the optimal production 111 114 112 115 # if defined key_off_degrad … … 117 120 118 121 ! compute the day length depending on latitude and the day 119 !--------------------------------------------------------120 122 IF(lwp) write(numout,*) 121 123 IF(lwp) write(numout,*) 'p4zday : - Julian day ', nday_year … … 147 149 DO ji = 1, jpi 148 150 149 ! Computation of the P-I slope for nanos and diatoms 150 ! -------------------------------------------------- 151 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 151 ! Computation of the P-I slope for nanos and diatoms 152 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 152 153 ztn = MAX( 0., tn(ji,jj,jk) - 15. ) 153 154 zadap = 0.+ 1.* ztn / ( 2.+ ztn ) … … 167 168 & / ( prmax(ji,jj,jk) * rjjss * xlimdia(ji,jj,jk) + rtrn ) 168 169 169 ! Computation of production function 170 ! ---------------------------------- 171 170 ! Computation of production function 172 171 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * & 173 172 & ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) … … 185 184 186 185 IF( etot(ji,jj,jk) > 1.E-3 ) THEN 187 ! Si/C of diatoms188 ! ------------------------189 ! Si/C increases with iron stress and silicate availability190 ! Si/C is arbitrariliy increased for very high Si concentrations191 ! to mimic the very high ratios observed in the Southern Ocean (silpot2)186 ! Si/C of diatoms 187 ! ------------------------ 188 ! Si/C increases with iron stress and silicate availability 189 ! Si/C is arbitrariliy increased for very high Si concentrations 190 ! to mimic the very high ratios observed in the Southern Ocean (silpot2) 192 191 193 192 zlim1 = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi1 ) … … 209 208 END DO 210 209 211 ! Computation of the limitation term due to 212 ! A mixed layer deeper than the euphotic depth 213 ! -------------------------------------------- 214 210 ! Computation of the limitation term due to 211 ! A mixed layer deeper than the euphotic depth 215 212 DO jj = 1, jpj 216 213 DO ji = 1, jpi … … 221 218 END DO 222 219 END DO 223 220 221 ! Mixed-layer effect on production 224 222 DO jk = 1, jpkm1 225 223 DO jj = 1, jpj 226 224 DO ji = 1, jpi 227 225 IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 228 229 ! Mixed-layer effect on production230 ! --------------------------------231 226 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * zmixnano(ji,jj) 232 227 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * zmixdiat(ji,jj) … … 365 360 zrfact2 = 1.e3 * rfact2r 366 361 ! Supplementary diagnostics 367 DO jk = 1, jpk 368 DO jj = 1, jpj 369 DO ji = 1, jpi 370 trc3d(ji,jj,jk,jp_pcs0_3d + 3) = etot(ji,jj,jk) * tmask(ji,jj,jk) 371 trc3d(ji,jj,jk,jp_pcs0_3d + 4) = zprorca (ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 372 trc3d(ji,jj,jk,jp_pcs0_3d + 5) = zprorcad(ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 373 trc3d(ji,jj,jk,jp_pcs0_3d + 6) = zpronew (ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 374 trc3d(ji,jj,jk,jp_pcs0_3d + 7) = zpronewd(ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 375 trc3d(ji,jj,jk,jp_pcs0_3d + 8) = zprorcad(ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) & 376 & * zysopt(ji,jj,jk) 377 trc3d(ji,jj,jk,jp_pcs0_3d + 9) = zprofed (ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 362 # if ! defined key_iomput 363 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zrfact2 * tmask(:,:,:) 364 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) 365 trc3d(:,:,:,jp_pcs0_3d + 6) = zpronew (:,:,:) * zrfact2 * tmask(:,:,:) 366 trc3d(:,:,:,jp_pcs0_3d + 7) = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) 367 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) 368 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 378 369 #if ! defined key_kriest 379 trc3d(ji,jj,jk,jp_pcs0_3d + 10) = zprofen (ji,jj,jk) * zrfact2 * tmask(ji,jj,jk)370 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zrfact2 * tmask(:,:,:) 380 371 #endif 381 ENDDO 382 ENDDO 383 ENDDO 372 373 # else 374 zw3d(:,:,:) = zprorca (:,:,:) * zrfact2 * tmask(:,:,:) 375 IF( jnt == nrdttrc ) CALL iom_put( "PPPHY" , zw3d ) 376 zw3d(:,:,:) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) 377 IF( jnt == nrdttrc ) CALL iom_put( "PPPHY2", zw3d ) 378 zw3d(:,:,:) = zpronew (:,:,:) * zrfact2 * tmask(:,:,:) 379 IF( jnt == nrdttrc ) CALL iom_put( "PPZOO" , zw3d ) 380 zw3d(:,:,:) = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) 381 IF( jnt == nrdttrc ) CALL iom_put( "PPZOO2", zw3d ) 382 zw3d(:,:,:) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) 383 IF( jnt == nrdttrc ) CALL iom_put( "PBSi" , zw3d ) 384 zw3d(:,:,:) = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 385 IF( jnt == nrdttrc ) CALL iom_put( "PFeD" , zw3d ) 386 zw3d(:,:,:) = zprofen (:,:,:) * zrfact2 * tmask(:,:,:) 387 IF( jnt == nrdttrc ) CALL iom_put( "PFeN" , zw3d ) 388 # endif 384 389 #endif 385 390 -
trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90
r1329 r1457 89 89 REAL(wp), DIMENSION(jpi,jpj) :: zsidep 90 90 REAL(wp), DIMENSION(jpi,jpj,jpk) :: znitrpot, zirondep 91 #if defined key_trc_diaadd && defined key_iomput 92 REAL(wp), DIMENSION(jpi,jpj) :: zw2d 93 #endif 91 94 CHARACTER (len=25) :: charout 92 95 !!--------------------------------------------------------------------- … … 94 97 95 98 IF( ( kt * jnt ) == nittrc000 ) CALL p4z_sed_init ! Initialization (first time-step only) 96 97 99 IF( (jnt == 1) .and. (bdustfer) ) CALL p4z_sbc( kt ) 98 100 … … 136 138 137 139 DO jk = 1, jpkm1 138 trn(:,:,jk,jpfer) = trn(:,:,jk,jpfer) & 139 & + zirondep(:,:,jk) + ironsed(:,:,jk) * rfact2 140 trn(:,:,jk,jpfer) = trn(:,:,jk,jpfer) + zirondep(:,:,jk) + ironsed(:,:,jk) * rfact2 140 141 END DO 141 142 142 143 143 144 #if ! defined key_sed 144 145 145 ! Initialisation of variables used to compute Sinking Speed 146 ! ---------------------------------------------------------147 148 146 zsumsedsi = 0.e0 149 147 zsumsedpo4 = 0.e0 … … 154 152 ! The factor for calcite comes from the alkalinity effect 155 153 ! ------------------------------------------------------------- 156 157 154 DO jj = 1, jpj 158 155 DO ji = 1, jpi 159 156 ikt = MAX( mbathy(ji,jj)-1, 1 ) 160 157 zfact = e1t(ji,jj) * e2t(ji,jj) / rjjss * tmask_i(ji,jj) 161 162 158 # if defined key_kriest 163 159 zsumsedsi = zsumsedsi + zfact * trn(ji,jj,ikt,jpdsi) * wscal (ji,jj,ikt) … … 168 164 & + trn(ji,jj,ikt,jppoc) * wsbio3(ji,jj,ikt) ) 169 165 # endif 170 171 166 zsumsedcal = zsumsedcal + zfact * trn(ji,jj,ikt,jpcal) * wscal (ji,jj,ikt) * 2.e0 172 173 167 END DO 174 168 END DO … … 197 191 & * wsbio4(ji,jj,ikt) 198 192 # endif 199 200 193 trn(ji,jj,ikt,jpdsi) = trn(ji,jj,ikt,jpdsi) - zconctmp 201 194 … … 226 219 ikt = MAX( mbathy(ji,jj) - 1, 1 ) 227 220 zfact = zstep / fse3t(ji,jj,ikt) 228 229 221 # if ! defined key_kriest 230 222 zconctmp = trn(ji,jj,ikt,jpgoc) … … 241 233 242 234 # else 243 244 235 zconctmp = trn(ji,jj,ikt,jpnum) 245 236 zconctmp2 = trn(ji,jj,ikt,jppoc) … … 327 318 END DO 328 319 329 # if defined key_trc_diaadd 330 DO jj = 1,jpj 331 DO ji = 1,jpi 332 trc2d(ji,jj,jp_pcs0_2d + 11) = zirondep(ji,jj,1) * 1.e+3 * rfact2r & 333 & * fse3t(ji,jj,1) * tmask(ji,jj,1) 334 trc2d(ji,jj,jp_pcs0_2d + 12) = znitrpot(ji,jj,1) * 1.e-7 & 335 & * fse3t(ji,jj,1) * 1.e+3 / rfact2 * tmask(ji,jj,1) 336 END DO 337 END DO 320 #if defined key_trc_diaadd 321 # if ! defined key_iomput 322 trc2d(:,:,jp_pcs0_2d + 11) = zirondep(:,:,1) * 1.e+3 * rfact2r * fse3t(:,:,1) * tmask(:,:,1) 323 trc2d(:,:,jp_pcs0_2d + 12) = znitrpot(:,:,1) * 1.e-7 * 1.e+3 / rfact2 * fse3t(:,:,1) * tmask(:,:,1) 324 # else 325 ! write diagnostics 326 zw2d(:,:) = zirondep(:,:,1) * 1.e+3 * rfact2r * fse3t(:,:,1) * tmask(:,:,1) 327 IF( jnt == nrdttrc ) CALL iom_put( "Fedep", zw2d ) 328 zw2d(:,:) = znitrpot(:,:,1) * 1.e-7 * 1.e+3 / rfact2 * fse3t(:,:,1) * tmask(:,:,1) 329 IF( jnt == nrdttrc ) CALL iom_put( "Nfix", zw2d ) 330 # endif 331 338 332 # endif 339 333 ! -
trunk/NEMO/TOP_SRC/PISCES/p4zsink.F90
r1329 r1457 14 14 USE sms_pisces 15 15 USE prtctl_trc 16 16 USE iom 17 17 18 18 IMPLICIT NONE … … 34 34 REAL(wp) :: & 35 35 xstep , xstep2 !: Time step duration for biology 36 37 INTEGER :: & 38 iksed = 10 ! 36 39 37 40 #if defined key_kriest … … 89 92 INTEGER, INTENT(in) :: kt, jnt 90 93 INTEGER :: ji, jj, jk 91 INTEGER :: iksed92 94 REAL(wp) :: zagg1, zagg2, zagg3, zagg4, zagg5, zaggsi, zaggsh 93 95 REAL(wp) :: zagg , zaggdoc, znumdoc … … 95 97 REAL(wp) :: zdiv , zdiv1, zdiv2, zdiv3, zdiv4, zdiv5 96 98 REAL(wp) :: zval1, zval2, zval3, zval4 97 #if defined key_trc_dia3d 98 REAL(wp) :: zrfact2 99 #if defined key_trc_diaadd 100 REAL(wp) :: zrfact2 101 INTEGER :: iksed1 102 #if defined key_iomput 103 REAL(wp), DIMENSION(jpi,jpj) :: zw2d 104 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d 105 #endif 99 106 #endif 100 107 REAL(wp), DIMENSION(jpi,jpj,jpk) :: znum3d … … 113 120 114 121 znum3d(:,:,:) = 0.e0 115 iksed = 10116 122 zval1 = 1. + xkr_zeta 117 123 zval2 = 1. + xkr_zeta + xkr_eta … … 281 287 #if defined key_trc_diaadd 282 288 zrfact2 = 1.e3 * rfact2r 283 DO jj = 1, jpj 284 DO ji = 1, jpi 285 trc2d(ji,jj, jp_pcs0_2d + 4) = sinking (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 286 trc2d(ji,jj, jp_pcs0_2d + 5) = sinking2(ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 287 trc2d(ji,jj, jp_pcs0_2d + 6) = sinkfer (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 288 trc2d(ji,jj, jp_pcs0_2d + 7) = sinksil (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 289 trc2d(ji,jj, jp_pcs0_2d + 8) = sinkcal (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 290 ENDDO 291 ENDDO 292 # if defined key_trc_dia3d 293 DO jk = 1, jpk 294 DO jj = 1, jpj 295 DO ji = 1, jpi 296 trc3d(ji,jj,jk,jp_pcs0_3d + 11) = sinking (ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 297 trc3d(ji,jj,jk,jp_pcs0_3d + 12) = sinking2(ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 298 trc3d(ji,jj,jk,jp_pcs0_3d + 13) = sinksil (ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 299 trc3d(ji,jj,jk,jp_pcs0_3d + 14) = sinkcal (ji,jj,jk) * zrfact2 * tmask(ji,jj,jk) 300 trc3d(ji,jj,jk,jp_pcs0_3d + 15) = znum3d (ji,jj,jk) * tmask(ji,jj,jk) 301 trc3d(ji,jj,jk,jp_pcs0_3d + 16) = wsbio3 (ji,jj,jk) * tmask(ji,jj,jk) 302 trc3d(ji,jj,jk,jp_pcs0_3d + 17) = wsbio4 (ji,jj,jk) * tmask(ji,jj,jk) 303 ENDDO 304 ENDDO 305 ENDDO 289 iksed1 = iksed + 1 290 # if ! defined key_iomput 291 trc2d(:,: ,jp_pcs0_2d + 4) = sinking (:,:,iksed1) * zrfact2 * tmask(:,:,1) 292 trc2d(:,: ,jp_pcs0_2d + 5) = sinking2(:,:,iksed1) * zrfact2 * tmask(:,:,1) 293 trc2d(:,: ,jp_pcs0_2d + 6) = sinkfer (:,:,iksed1) * zrfact2 * tmask(:,:,1) 294 trc2d(:,: ,jp_pcs0_2d + 7) = sinksil (:,:,iksed1) * zrfact2 * tmask(:,:,1) 295 trc2d(:,: ,jp_pcs0_2d + 8) = sinkcal (:,:,iksed1) * zrfact2 * tmask(:,:,1) 296 trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:) * zrfact2 * tmask(:,:,:) 297 trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:) * zrfact2 * tmask(:,:,:) 298 trc3d(:,:,:,jp_pcs0_3d + 13) = sinksil (:,:,:) * zrfact2 * tmask(:,:,:) 299 trc3d(:,:,:,jp_pcs0_3d + 14) = sinkcal (:,:,:) * zrfact2 * tmask(:,:,:) 300 trc3d(:,:,:,jp_pcs0_3d + 15) = znum3d (:,:,:) * tmask(:,:,:) 301 trc3d(:,:,:,jp_pcs0_3d + 16) = wsbio3 (:,:,:) * tmask(:,:,:) 302 trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4 (:,:,:) * tmask(:,:,:) 303 #else 304 zw2d(:,: ) = sinking (:,:,iksed1) * zrfact2 * tmask(:,:,1) 305 IF( jnt == nrdttrc ) CALL iom_put( "PMO", zw2d ) 306 zw2d(:,: ) = sinking2(:,:,iksed1) * zrfact2 * tmask(:,:,1) 307 IF( jnt == nrdttrc ) CALL iom_put( "PMO2", zw2d ) 308 zw2d(:,: ) = sinkfer (:,:,iksed1) * zrfact2 * tmask(:,:,1) 309 IF( jnt == nrdttrc ) CALL iom_put( "ExpFe1", zw2d ) 310 zw2d(:,: ) = sinksil (:,:,iksed1) * zrfact2 * tmask(:,:,1) 311 IF( jnt == nrdttrc ) CALL iom_put( "ExpSi", zw2d ) 312 zw2d(:,: ) = sinkcal (:,:,iksed1) * zrfact2 * tmask(:,:,1) 313 IF( jnt == nrdttrc ) CALL iom_put( "ExpCaCO3", zw2d ) 314 zw3d(:,:,:) = sinking (:,:,:) * zrfact2 * tmask(:,:,:) 315 IF( jnt == nrdttrc ) CALL iom_put( "POCFlx", zw3d ) 316 zw3d(:,:,:) = sinking2(:,:,:) * zrfact2 * tmask(:,:,:) 317 IF( jnt == nrdttrc ) CALL iom_put( "GOCFlx", zw3d ) 318 zw3d(:,:,:) = sinksil (:,:,:) * zrfact2 * tmask(:,:,:) 319 IF( jnt == nrdttrc ) CALL iom_put( "SiFlx", zw3d ) 320 zw3d(:,:,:) = sinkcal (:,:,:) * zrfact2 * tmask(:,:,:) 321 IF( jnt == nrdttrc ) CALL iom_put( "CaCO3Flx", zw3d ) 322 zw3d(:,:,:) = znum3d (:,:,:) * tmask(:,:,:) 323 IF( jnt == nrdttrc ) CALL iom_put( "xnum", zw3d ) 324 zw3d(:,:,:) = wsbio3 (:,:,:) * tmask(:,:,:) 325 IF( jnt == nrdttrc ) CALL iom_put( "W1", zw3d ) 326 zw3d(:,:,:) = wsbio4 (:,:,:) * tmask(:,:,:) 327 IF( jnt == nrdttrc ) CALL iom_put( "W2", zw3d ) 306 328 # endif 307 329 … … 463 485 INTEGER, INTENT(in) :: kt, jnt 464 486 INTEGER :: ji, jj, jk 465 INTEGER :: iksed466 487 REAL(wp) :: zagg1, zagg2, zagg3, zagg4 467 488 REAL(wp) :: zagg , zaggfe, zaggdoc, zaggdoc2 … … 469 490 #if defined key_trc_dia3d 470 491 REAL(wp) :: zrfact2 492 INTEGER :: iksed1 493 #endif 494 #if defined key_iomput 495 REAL(wp), DIMENSION(jpi,jpj) :: zw2d 471 496 #endif 472 497 CHARACTER (len=25) :: charout … … 481 506 ! by data and from the coagulation theory 482 507 ! ----------------------------------------------------------- 483 484 iksed = 10485 486 508 DO jk = 1, jpkm1 487 509 DO jj = 1, jpj … … 546 568 DO ji = 1, jpi 547 569 zfact = xstep * xdiss(ji,jj,jk) 548 549 ! Part I : Coagulation dependent on turbulence 550 ! ---------------------------------------------- 551 570 ! Part I : Coagulation dependent on turbulence 552 571 # if defined key_off_degrad 553 572 zagg1 = 940.* zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) * facvol(ji,jj,jk) 573 zagg2 = 1.054e4 * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) * facvol(ji,jj,jk) 554 574 # else 555 575 zagg1 = 940.* zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 556 # endif557 558 # if defined key_off_degrad559 zagg2 = 1.054e4 * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) * facvol(ji,jj,jk)560 # else561 576 zagg2 = 1.054e4 * zfact * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 562 577 # endif 563 578 564 ! Aggregation of small into large particles 565 ! Part II : Differential settling 566 ! ---------------------------------------------- 567 579 ! Part II : Differential settling 580 581 ! Aggregation of small into large particles 568 582 # if defined key_off_degrad 569 583 zagg3 = 0.66 * xstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) * facvol(ji,jj,jk) 584 zagg4 = 0.e0 * xstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) * facvol(ji,jj,jk) 570 585 # else 571 586 zagg3 = 0.66 * xstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jpgoc) 572 # endif573 574 # if defined key_off_degrad575 zagg4 = 0.e0 * xstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) * facvol(ji,jj,jk)576 # else577 587 zagg4 = 0.e0 * xstep * trn(ji,jj,jk,jppoc) * trn(ji,jj,jk,jppoc) 578 588 # endif 579 580 589 zagg = zagg1 + zagg2 + zagg3 + zagg4 581 590 zaggfe = zagg * trn(ji,jj,jk,jpsfe) / ( trn(ji,jj,jk,jppoc) + rtrn ) 582 591 583 ! Aggregation of DOC to small particles 584 ! -------------------------------------- 585 592 ! Aggregation of DOC to small particles 593 #if defined key_off_degrad 586 594 zaggdoc = ( 80.* trn(ji,jj,jk,jpdoc) + 698. * trn(ji,jj,jk,jppoc) ) & 587 # if defined key_off_degrad 588 & * facvol(ji,jj,jk) & 589 # endif 590 & * zfact * trn(ji,jj,jk,jpdoc) 591 595 & * facvol(ji,jj,jk) * zfact * trn(ji,jj,jk,jpdoc) 592 596 zaggdoc2 = 1.05e4 * zfact * trn(ji,jj,jk,jpgoc) & 593 # if defined key_off_degrad 594 & * facvol(ji,jj,jk) & 595 # endif 596 & * trn(ji,jj,jk,jpdoc) 597 ! 598 ! Update the trends 599 ! ----------------- 600 ! 597 & * facvol(ji,jj,jk) * trn(ji,jj,jk,jpdoc) 598 #else 599 zaggdoc = ( 80.* trn(ji,jj,jk,jpdoc) + 698. * trn(ji,jj,jk,jppoc) ) & 600 & * zfact * trn(ji,jj,jk,jpdoc) 601 zaggdoc2 = 1.05e4 * zfact * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpdoc) 602 #endif 603 ! Update the trends 601 604 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zagg + zaggdoc 602 605 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zagg + zaggdoc2 … … 604 607 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 605 608 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 606 609 ! 607 610 END DO 608 611 END DO 609 612 END DO 610 613 611 # 614 #if defined key_trc_diaadd 612 615 zrfact2 = 1.e3 * rfact2r 613 DO jj = 1, jpj 614 DO ji = 1, jpi 615 trc2d(ji,jj, jp_pcs0_2d + 4) = sinking (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 616 trc2d(ji,jj, jp_pcs0_2d + 5) = sinking2(ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 617 trc2d(ji,jj, jp_pcs0_2d + 6) = sinkfer (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 618 trc2d(ji,jj, jp_pcs0_2d + 7) = sinkfer2(ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 619 trc2d(ji,jj, jp_pcs0_2d + 8) = sinksil (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 620 trc2d(ji,jj, jp_pcs0_2d + 9) = sinkcal (ji,jj,iksed+1) * zrfact2 * tmask(ji,jj,1) 621 ENDDO 622 ENDDO 623 # endif 616 iksed1 = iksed + 1 617 # if ! defined key_iomput 618 trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,iksed1) * zrfact2 * tmask(:,:,1) 619 trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,iksed1) * zrfact2 * tmask(:,:,1) 620 trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,iksed1) * zrfact2 * tmask(:,:,1) 621 trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,iksed1) * zrfact2 * tmask(:,:,1) 622 trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,iksed1) * zrfact2 * tmask(:,:,1) 623 trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,iksed1) * zrfact2 * tmask(:,:,1) 624 # else 625 ! write diagnostics 626 zw2d(:,:) = sinking (:,:,iksed1) * zrfact2 * tmask(:,:,1) 627 IF( jnt == nrdttrc ) CALL iom_put( "PMO", zw2d ) 628 zw2d(:,:) = sinking2(:,:,iksed1) * zrfact2 * tmask(:,:,1) 629 IF( jnt == nrdttrc ) CALL iom_put( "PMO2", zw2d ) 630 zw2d(:,:) = sinkfer (:,:,iksed1) * zrfact2 * tmask(:,:,1) 631 IF( jnt == nrdttrc ) CALL iom_put( "ExpFe1", zw2d ) 632 zw2d(:,:) = sinkfer2(:,:,iksed1) * zrfact2 * tmask(:,:,1) 633 IF( jnt == nrdttrc ) CALL iom_put( "ExpFe2", zw2d ) 634 zw2d(:,:) = sinksil (:,:,iksed1) * zrfact2 * tmask(:,:,1) 635 IF( jnt == nrdttrc ) CALL iom_put( "ExpSi", zw2d ) 636 zw2d(:,:) = sinkcal (:,:,iksed1) * zrfact2 * tmask(:,:,1) 637 IF( jnt == nrdttrc ) CALL iom_put( "ExpCaCO3", zw2d ) 638 # endif 639 #endif 624 640 ! 625 641 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
trunk/NEMO/TOP_SRC/PISCES/trclsm_pisces.F90
r1288 r1457 47 47 CHARACTER (len=32) :: clname 48 48 !! 49 #if defined key_trc_diaadd 49 #if defined key_trc_diaadd && ! defined key_iomput 50 50 INTEGER :: jl, jn 51 51 ! definition of additional diagnostic as a structure … … 64 64 NAMELIST/nampiskrp/ xkr_eta, xkr_zeta, xkr_mass_min, xkr_mass_max 65 65 #endif 66 #if defined key_trc_diaadd 66 #if defined key_trc_diaadd && ! defined key_iomput 67 67 NAMELIST/nampisdia/ nwritedia, pisdia3d, pisdia2d ! additional diagnostics 68 68 #endif … … 122 122 #endif 123 123 ! 124 #if defined key_trc_diaadd 124 #if defined key_trc_diaadd && ! defined key_iomput 125 125 126 126 ! Namelist namlobdia -
trunk/NEMO/TOP_SRC/trc.F90
r1283 r1457 64 64 INTEGER , PUBLIC :: nwritetrc !: time step frequency for concentration outputs (namelist) 65 65 66 # if defined key_trc_diaadd 66 # if defined key_trc_diaadd && ! defined key_iomput 67 67 !! additional 2D/3D outputs namelist 68 68 !! -------------------------------------------------- -
trunk/NEMO/TOP_SRC/trcdia.F90
r1450 r1457 11 11 !! ! 2008-05 (C. Ethe re-organization) 12 12 !!---------------------------------------------------------------------- 13 #if defined key_top 13 #if defined key_top && ! defined key_iomput 14 14 !!---------------------------------------------------------------------- 15 15 !! 'key_top' TOP models … … 29 29 USE lib_mpp 30 30 USE ioipsl 31 USE iom32 31 33 32 IMPLICIT NONE … … 70 69 CONTAINS 71 70 72 SUBROUTINE trc_dia( kt , kindic)71 SUBROUTINE trc_dia( kt ) 73 72 !!--------------------------------------------------------------------- 74 73 !! *** ROUTINE trc_dia *** … … 76 75 !! ** Purpose : output passive tracers fields 77 76 !!--------------------------------------------------------------------- 78 INTEGER, INTENT( in ) :: kt, kindic 77 INTEGER, INTENT( in ) :: kt 78 INTEGER :: kindic 79 79 !!--------------------------------------------------------------------- 80 80 … … 117 117 ! Initialisation 118 118 ! -------------- 119 120 CALL iom_setkt( kt + ndttrc - 1 )121 119 122 120 ! local variable for debugging … … 212 210 cltra = ctrcnm(jn) ! short title for tracer 213 211 IF( lutsav(jn) ) CALL histwrite( nit5, cltra, it, trn(:,:,:,jn), ndimt50, ndext50 ) 214 CALL iom_put( ctrcnm(jn), trn(:,:,:,jn) )215 212 END DO 216 213 … … 219 216 IF( kt == nitend .OR. kindic < 0 ) CALL histclo( nit5 ) 220 217 ! 221 CALL iom_setkt( kt )222 218 223 219 END SUBROUTINE trcdit_wr … … 257 253 ! ----------------- 258 254 259 CALL iom_setkt( kt + ndttrc - 1 )260 255 261 256 ! local variable for debugging … … 445 440 END DO 446 441 END IF 447 CALL iom_put( ctrcnm(jn), trn(:,:,:,jn) )448 442 END DO 449 443 … … 456 450 ENDIF 457 451 ! 458 CALL iom_setkt( kt )459 452 460 453 END SUBROUTINE trcdid_wr … … 500 493 ! Initialisation 501 494 ! -------------- 502 503 CALL iom_setkt( kt + ndttrc - 1 )504 495 505 496 ! local variable for debugging … … 597 588 cltra = ctrc3d(jl) ! short title for 3D diagnostic 598 589 CALL histwrite( nitd, cltra, it, trc3d(:,:,:,jl), ndimt50 ,ndext50) 599 CALL iom_put( cltra, trc3d(:,:,:,jl) )600 590 END DO 601 591 … … 604 594 cltra = ctrc2d(jl) ! short title for 2D diagnostic 605 595 CALL histwrite(nitd, cltra, it, trc2d(:,:,jl), ndimt51 ,ndext51) 606 CALL iom_put( cltra, trc2d(:,:,jl) )607 596 END DO 608 597 … … 611 600 IF( kt == nitend .OR. kindic < 0 ) CALL histclo(nitd) 612 601 ! 613 CALL iom_setkt( kt )614 602 615 603 END SUBROUTINE trcdii_wr … … 657 645 ! -------------- 658 646 659 CALL iom_setkt( kt + ndttrc - 1 )660 647 661 648 ! local variable for debugging … … 735 722 cltra = ctrbio(jl) ! short title for biological diagnostic 736 723 CALL histwrite(nitb, cltra, it, trbio(:,:,:,jl), ndimt50,ndext50) 737 CALL iom_put( cltra, trbio(:,:,:,jl) )738 724 END DO 739 725 … … 742 728 IF( kt == nitend .OR. kindic < 0 ) CALL histclo( nitb ) 743 729 ! 744 CALL iom_setkt( kt )745 730 746 731 END SUBROUTINE trcdib_wr … … 759 744 !!---------------------------------------------------------------------- 760 745 CONTAINS 761 SUBROUTINE trc_dia ! Empty routine 746 SUBROUTINE trc_dia( kt ) ! Empty routine 747 INTEGER, INTENT(in) :: kt 762 748 END SUBROUTINE trc_dia 763 749 -
trunk/NEMO/TOP_SRC/trcini.F90
r1286 r1457 27 27 USE trcini_c14b ! C14 bomb initialisation 28 28 USE trcini_my_trc ! MY_TRC initialisation 29 USE trcdta 29 USE trcdta 30 #if defined key_off_tra 31 USE daymod 32 #endif 30 33 USE zpshde_trc ! partial step: hor. derivative 31 34 USE in_out_manager ! I/O manager … … 107 110 108 111 IF( .NOT. lrsttr ) THEN 112 #if defined key_off_tra 113 CALL day_init ! calendar 114 #endif 109 115 # if defined key_dtatrc 110 116 ! Initialization of tracer from a file that may also be used for damping … … 117 123 ELSE 118 124 CALL trc_rst_read ! restart from a file 125 #if defined key_off_tra 126 CALL day_init ! calendar 127 #endif 119 128 ENDIF 120 129 -
trunk/NEMO/TOP_SRC/trcrst.F90
r1329 r1457 154 154 zco3 = ( zcaralk - trn(ji,jj,jk,jpdic) ) * ztmas + 0.5e-3 * ztmas1 155 155 zbicarb = ( 2. * trn(ji,jj,jk,jpdic) - zcaralk ) 156 !! write(numout,*) 'plante :',ji,jj,jk,ztmas,ztmas1,ak23(ji,jj,jk),zbicarb ,zco3157 156 hi(ji,jj,jk) = ( ak23(ji,jj,jk) * zbicarb / zco3 ) * ztmas + 1.e-9 * ztmas1 158 157 END DO
Note: See TracChangeset
for help on using the changeset viewer.