Changeset 1836
- Timestamp:
- 2010-04-14T14:26:33+02:00 (14 years ago)
- Location:
- trunk/NEMO/TOP_SRC
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/PISCES/p4zflx.F90
r1800 r1836 204 204 CALL mpp_sum( t_oce_co2_flx ) ! sum over the global domain 205 205 ENDIF 206 ! Conversion in GtC/yr ; negative for outgoing from ocean 207 t_oce_co2_flx = (-1.) * t_oce_co2_flx * 12. / 1.e15 208 ! 206 209 WRITE(numout,*) ' Atmospheric pCO2 :' 207 210 WRITE(numout,*) '-------------------- : ',kt,' ',t_atm_co2_flx 208 211 WRITE(numout,*) '(ppm)' 209 WRITE(numout,*) 'Total Flux of Carbon :'210 WRITE(numout,*) '-------------------- : ',t_oce_co2_flx * 12. / 1e15211 WRITE(numout,*) '(GtC/ an)'212 WRITE(numout,*) 'Total Flux of Carbon out of the ocean :' 213 WRITE(numout,*) '-------------------- : ',t_oce_co2_flx 214 WRITE(numout,*) '(GtC/yr)' 212 215 t_atm_co2_flx = 0. 213 216 t_oce_co2_flx = 0. 217 # if defined key_iomput 218 CALL iom_put( "tatpco2" , t_atm_co2_flx ) 219 CALL iom_put( "tco2flx" , t_oce_co2_flx ) 220 #endif 214 221 ENDIF 215 222 #endif -
trunk/NEMO/TOP_SRC/PISCES/p4zlys.F90
r1735 r1836 67 67 #if defined key_trc_dia3d && defined key_iomput 68 68 REAL(wp) :: zrfact2 69 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcaldiss , zw3d69 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zcaldiss 70 70 #endif 71 71 CHARACTER (len=25) :: charout … … 94 94 ! SET DUMMY VARIABLE FOR TOTAL BORATE 95 95 zbot = borat(ji,jj,jk) 96 97 ! SET DUMMY VARIABLE FOR TOTAL BORATE 98 zbot = borat(ji,jj,jk) 96 99 zfact = rhop (ji,jj,jk) / 1000. + rtrn 97 100 … … 171 174 # else 172 175 zrfact2 = 1.e3 * rfact2r 173 zw3d(:,:,:) = hi (:,:,:) * tmask(:,:,:) 174 CALL iom_put( "PH", zw3d ) 175 zw3d(:,:,:) = zco3(:,:,:) * tmask(:,:,:) 176 CALL iom_put( "CO3", zw3d ) 177 zw3d(:,:,:) = aksp(:,:,:) / calcon * tmask(:,:,:) 178 CALL iom_put( "CO3sat", zw3d ) 179 zw3d(:,:,:) = zcaldiss(:,:,:) * zrfact2 * tmask(:,:,:) 180 CALL iom_put( "Dcal", zw3d ) 176 CALL iom_put( "PH" , hi (:,:,:) * tmask(:,:,:) ) 177 CALL iom_put( "CO3" , zco3 (:,:,:) * tmask(:,:,:) ) 178 CALL iom_put( "CO3sat", aksp (:,:,:) / calcon * tmask(:,:,:) ) 179 CALL iom_put( "DCAL" , zcaldiss(:,:,:) * zrfact2 * tmask(:,:,:) ) 181 180 # endif 182 181 # endif … … 232 231 END SUBROUTINE p4z_lys 233 232 #endif 234 235 233 !!====================================================================== 236 234 END MODULE p4zlys -
trunk/NEMO/TOP_SRC/PISCES/p4zmeso.F90
r1800 r1836 76 76 #if defined key_trc_diaadd && defined key_trc_dia3d && defined key_iomput 77 77 REAL(wp) :: zrfact2 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d79 78 #endif 80 79 … … 203 202 END DO 204 203 204 #if defined key_trc_dia3d 205 ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 206 grazing(:,:,:) = grazing(:,:,:) + ( zgrazd (:,:,:) + zgrazz (:,:,:) + zgrazn(:,:,:) & 207 & + zgrazpoc(:,:,:) + zgrazffe(:,:,:) ) 208 #endif 209 205 210 206 211 DO jk = 1,jpkm1 … … 311 316 #if defined key_trc_diaadd && defined key_trc_dia3d && defined key_iomput 312 317 zrfact2 = 1.e3 * rfact2r 313 zw3d(:,:,:) = ( zgrazd(:,:,:) + zgrazz(:,:,:) + zgrazn(:,:,:) & 314 & + zgrazpoc(:,:,:) + zgrazffe(:,:,:) ) * zrfact2 * tmask(:,:,:) 315 IF( jnt == nrdttrc ) CALL iom_put( "Graz2" , zw3d ) 316 317 zw3d(:,:,:) = prodcal(:,:,:) * zrfact2 * tmask(:,:,:) 318 IF( jnt == nrdttrc ) CALL iom_put( "Pcal" , zw3d ) 318 ! Total grazing of phyto by zoo 319 grazing(:,:,:) = grazing(:,:,:) * zrfact2 * tmask(:,:,:) 320 ! Calcite production 321 prodcal(:,:,:) = prodcal(:,:,:) * zrfact2 * tmask(:,:,:) 322 IF( jnt == nrdttrc ) then 323 CALL iom_put( "GRAZ" , grazing ) ! Total grazing of phyto by zooplankton 324 CALL iom_put( "PCAL" , prodcal ) ! Calcite production 325 ENDIF 319 326 #endif 320 327 -
trunk/NEMO/TOP_SRC/PISCES/p4zmicro.F90
r1800 r1836 70 70 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazmf, zgrazsf, zgrazpf 71 71 CHARACTER (len=25) :: charout 72 #if defined key_trc_diaadd && defined key_trc_dia3d && defined key_iomput73 REAL(wp) :: zrfact274 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d75 #endif76 72 77 73 !!--------------------------------------------------------------------- … … 88 84 zgrazpf(:,:,:) = 0. 89 85 86 #if defined key_trc_dia3d 87 grazing(:,:,:) = 0. !: Initialisation of grazing 88 #endif 90 89 91 90 zstep = rfact2 / rday ! Time step duration for biology … … 156 155 END DO 157 156 157 #if defined key_trc_dia3d 158 ! Grazing by microzooplankton 159 grazing(:,:,:) = grazing(:,:,:) + zgrazp(:,:,:) + zgrazm(:,:,:) + zgrazsd(:,:,:) 160 #endif 158 161 159 162 DO jk = 1,jpkm1 … … 231 234 END DO 232 235 ! 233 #if defined key_trc_diaadd && defined key_trc_dia3d && defined key_iomput 234 zrfact2 = 1.e3 * rfact2r 235 zw3d(:,:,:) = ( zgrazp(:,:,:) + zgrazm(:,:,:) + zgrazsd(:,:,:) ) * zrfact2 * tmask(:,:,:) 236 IF( jnt == nrdttrc ) CALL iom_put( "Graz" , zw3d ) 237 #endif 238 239 IF(ln_ctl) THEN ! print mean trends (used for debugging) 236 IF(ln_ctl) THEN ! print mean trends (used for debugging) 240 237 WRITE(charout, FMT="('micro')") 241 238 CALL prt_ctl_trc_info(charout) 242 239 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 243 240 ENDIF 244 241 245 242 END SUBROUTINE p4z_micro -
trunk/NEMO/TOP_SRC/PISCES/p4zopt.F90
r1800 r1836 61 61 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zekg, zekr, zekb 62 62 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze1 , ze2 , ze3, ze0 63 #if defined key_trc_diaadd && defined key_iomput64 REAL(wp), DIMENSION(jpi,jpj) :: zw2d65 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d66 #endif67 63 !!--------------------------------------------------------------------- 68 64 … … 238 234 # else 239 235 ! 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 )236 IF( jnt == nrdttrc ) then 237 CALL iom_put( "Heup", heup(:,: ) * tmask(:,:,1) ) ! euphotic layer deptht 238 CALL iom_put( "PAR" , etot(:,:,:) * tmask(:,:,:) ) ! Photosynthetically Available Radiation 239 ENDIF 244 240 # endif 245 241 #endif -
trunk/NEMO/TOP_SRC/PISCES/p4zprod.F90
r1800 r1836 81 81 #if defined key_trc_diaadd && defined key_trc_dia3d 82 82 REAL(wp) :: zrfact2 83 #if defined key_iomput84 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d85 #endif86 83 #endif 87 84 REAL(wp), DIMENSION(jpi,jpj) :: zmixnano , zmixdiat, zstrn … … 352 349 WRITE(numout,*) 'Total PP :' 353 350 WRITE(numout,*) '-------------------- : ',tpp * 12. / 1.E12 354 WRITE(numout,*) '(GtC/ an)'351 WRITE(numout,*) '(GtC/yr)' 355 352 tpp = 0. 356 353 ENDIF 357 354 358 #if defined key_trc_diaadd && defined key_trc_dia3d 355 #if defined key_trc_diaadd && defined key_trc_dia3d && ! defined key_iomput 356 ! Supplementary diagnostics 359 357 zrfact2 = 1.e3 * rfact2r 360 ! Supplementary diagnostics361 # if ! defined key_iomput362 358 trc3d(:,:,:,jp_pcs0_3d + 4) = zprorca (:,:,:) * zrfact2 * tmask(:,:,:) 363 359 trc3d(:,:,:,jp_pcs0_3d + 5) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) … … 366 362 trc3d(:,:,:,jp_pcs0_3d + 8) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) 367 363 trc3d(:,:,:,jp_pcs0_3d + 9) = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 368 # if ! defined key_kriest364 # if ! defined key_kriest 369 365 trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zrfact2 * tmask(:,:,:) 366 # endif 370 367 #endif 371 368 372 # else 373 zw3d(:,:,:) = zprorca (:,:,:) * zrfact2 * tmask(:,:,:) 374 IF( jnt == nrdttrc ) CALL iom_put( "PPPHY" , zw3d ) 375 zw3d(:,:,:) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) 376 IF( jnt == nrdttrc ) CALL iom_put( "PPPHY2", zw3d ) 377 zw3d(:,:,:) = zpronew (:,:,:) * zrfact2 * tmask(:,:,:) 378 IF( jnt == nrdttrc ) CALL iom_put( "PPNEWN" , zw3d ) 379 zw3d(:,:,:) = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) 380 IF( jnt == nrdttrc ) CALL iom_put( "PPNEWD", zw3d ) 381 zw3d(:,:,:) = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) 382 IF( jnt == nrdttrc ) CALL iom_put( "PBSi" , zw3d ) 383 zw3d(:,:,:) = zprofed (:,:,:) * zrfact2 * tmask(:,:,:) 384 IF( jnt == nrdttrc ) CALL iom_put( "PFeD" , zw3d ) 385 zw3d(:,:,:) = zprofen (:,:,:) * zrfact2 * tmask(:,:,:) 386 IF( jnt == nrdttrc ) CALL iom_put( "PFeN" , zw3d ) 387 # endif 369 #if defined key_trc_diaadd && defined key_trc_dia3d && defined key_iomput 370 zrfact2 = 1.e3 * rfact2r 371 IF ( jnt == nrdttrc ) then 372 CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by nanophyto 373 CALL iom_put( "PPPHY2", zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) ) ! primary production by diatom 374 CALL iom_put( "PPNEWN", zpronew (:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by nanophyto 375 CALL iom_put( "PPNEWD", zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) ) ! new primary production by diatom 376 CALL iom_put( "PBSi" , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production 377 CALL iom_put( "PFeD" , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by diatom 378 CALL iom_put( "PFeN" , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) ) ! biogenic iron production by nanophyto 379 ENDIF 388 380 #endif 389 381 -
trunk/NEMO/TOP_SRC/PISCES/p4zsed.F90
r1735 r1836 96 96 REAL(wp) :: zrfact2 97 97 # if defined key_iomput 98 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d99 98 REAL(wp), DIMENSION(jpi,jpj) :: zw2d 100 99 # endif … … 332 331 trc2d(:,:,jp_pcs0_2d + 12) = znitrpot(:,:,1) * 1.e-7 * zrfact2 * fse3t(:,:,1) * tmask(:,:,1) 333 332 # else 334 ! write diagnostics 335 zw2d(:,:) = ( zirondep(:,:,1) + ironsed(:,:,1) * rfact2 ) & 336 & * zrfact2 * fse3t(:,:,1) * tmask(:,:,1) 333 ! surface downward net flux of iron 334 zw2d(:,:) = ( zirondep(:,:,1) + ironsed(:,:,1) * rfact2 ) * zrfact2 * fse3t(:,:,1) * tmask(:,:,1) 337 335 IF( jnt == nrdttrc ) CALL iom_put( "Irondep", zw2d ) 338 zw3d(:,:,:) = znitrpot(:,:,:) * 1.e-7 * zrfact2 * fse3t(:,:,:) * tmask(:,:,:)339 IF( jnt == nrdttrc ) CALL iom_put( "Nfix", zw3d )340 # endif 341 336 ! nitrogen fixation at surface 337 zw2d(:,:) = znitrpot(:,:,1) * 1.e-7 * zrfact2 * fse3t(:,:,1) * tmask(:,:,1) 338 IF( jnt == nrdttrc ) CALL iom_put( "Nfix" , zw2d ) 339 # endif 342 340 # endif 343 341 ! -
trunk/NEMO/TOP_SRC/PISCES/p4zsink.F90
r1800 r1836 99 99 #if defined key_trc_diaadd 100 100 REAL(wp) :: zrfact2 101 INTEGER :: iksed1 102 #if defined key_iomput 103 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d 104 #endif 101 INTEGER :: ik1 105 102 #endif 106 103 REAL(wp), DIMENSION(jpi,jpj,jpk) :: znum3d … … 286 283 #if defined key_trc_diaadd 287 284 zrfact2 = 1.e3 * rfact2r 288 ik sed1 = iksed + 1285 ik1 = iksed + 1 289 286 # if ! defined key_iomput 290 trc2d(:,: ,jp_pcs0_2d + 4) = sinking (:,:,ik sed1) * zrfact2 * tmask(:,:,1)291 trc2d(:,: ,jp_pcs0_2d + 5) = sinking2(:,:,ik sed1) * zrfact2 * tmask(:,:,1)292 trc2d(:,: ,jp_pcs0_2d + 6) = sinkfer (:,:,ik sed1) * zrfact2 * tmask(:,:,1)293 trc2d(:,: ,jp_pcs0_2d + 7) = sinksil (:,:,ik sed1) * zrfact2 * tmask(:,:,1)294 trc2d(:,: ,jp_pcs0_2d + 8) = sinkcal (:,:,ik sed1) * zrfact2 * tmask(:,:,1)287 trc2d(:,: ,jp_pcs0_2d + 4) = sinking (:,:,ik1) * zrfact2 * tmask(:,:,1) 288 trc2d(:,: ,jp_pcs0_2d + 5) = sinking2(:,:,ik1) * zrfact2 * tmask(:,:,1) 289 trc2d(:,: ,jp_pcs0_2d + 6) = sinkfer (:,:,ik1) * zrfact2 * tmask(:,:,1) 290 trc2d(:,: ,jp_pcs0_2d + 7) = sinksil (:,:,ik1) * zrfact2 * tmask(:,:,1) 291 trc2d(:,: ,jp_pcs0_2d + 8) = sinkcal (:,:,ik1) * zrfact2 * tmask(:,:,1) 295 292 trc3d(:,:,:,jp_pcs0_3d + 11) = sinking (:,:,:) * zrfact2 * tmask(:,:,:) 296 293 trc3d(:,:,:,jp_pcs0_3d + 12) = sinking2(:,:,:) * zrfact2 * tmask(:,:,:) … … 301 298 trc3d(:,:,:,jp_pcs0_3d + 17) = wsbio4 (:,:,:) * tmask(:,:,:) 302 299 #else 303 zw3d(:,:,:) = sinking (:,:,:) * zrfact2 * tmask(:,:,:) 304 IF( jnt == nrdttrc ) CALL iom_put( "PMO" , zw3d ) 305 zw3d(:,:,:) = sinking2(:,:,:) * zrfact2 * tmask(:,:,:) 306 IF( jnt == nrdttrc ) CALL iom_put( "PMO2", zw3d ) 307 zw3d(:,:,:) = sinkfer (:,:,:) * zrfact2 * tmask(:,:,:) 308 IF( jnt == nrdttrc ) CALL iom_put( "ExpFe1", zw3d ) 309 zw3d(:,:,:) = sinksil (:,:,:) * zrfact2 * tmask(:,:,:) 310 IF( jnt == nrdttrc ) CALL iom_put( "ExpSi", zw3d ) 311 zw3d(:,:,:) = sinkcal (:,:,:) * zrfact2 * tmask(:,:,:) 312 IF( jnt == nrdttrc ) CALL iom_put( "ExpCaCO3", zw3d ) 313 zw3d(:,:,:) = sinking (:,:,:) * zrfact2 * tmask(:,:,:) 314 IF( jnt == nrdttrc ) CALL iom_put( "POCFlx", zw3d ) 315 zw3d(:,:,:) = sinking2(:,:,:) * zrfact2 * tmask(:,:,:) 316 IF( jnt == nrdttrc ) CALL iom_put( "GOCFlx", zw3d ) 317 zw3d(:,:,:) = sinksil (:,:,:) * zrfact2 * tmask(:,:,:) 318 IF( jnt == nrdttrc ) CALL iom_put( "SiFlx", zw3d ) 319 zw3d(:,:,:) = sinkcal (:,:,:) * zrfact2 * tmask(:,:,:) 320 IF( jnt == nrdttrc ) CALL iom_put( "CaCO3Flx", zw3d ) 321 zw3d(:,:,:) = znum3d (:,:,:) * tmask(:,:,:) 322 IF( jnt == nrdttrc ) CALL iom_put( "xnum", zw3d ) 323 zw3d(:,:,:) = wsbio3 (:,:,:) * tmask(:,:,:) 324 IF( jnt == nrdttrc ) CALL iom_put( "W1", zw3d ) 325 zw3d(:,:,:) = wsbio4 (:,:,:) * tmask(:,:,:) 326 IF( jnt == nrdttrc ) CALL iom_put( "W2", zw3d ) 300 IF( jnt == nrdttrc ) then 301 CALL iom_put( "POCFlx" , sinking (:,:,:) * zrfact2 * tmask(:,:,:) ) ! POC export 302 CALL iom_put( "NumFlx" , sinking2 (:,:,:) * zrfact2 * tmask(:,:,:) ) ! Num export 303 CALL iom_put( "SiFlx" , sinksil (:,:,:) * zrfact2 * tmask(:,:,:) ) ! Silica export 304 CALL iom_put( "CaCO3Flx", sinkcal (:,:,:) * zrfact2 * tmask(:,:,:) ) ! Calcite export 305 CALL iom_put( "xnum" , znum3d (:,:,:) * tmask(:,:,:) ) ! Number of particles in aggregats 306 CALL iom_put( "W1" , wsbio3 (:,:,:) * tmask(:,:,:) ) ! sinking speed of POC 307 CALL iom_put( "W2" , wsbio4 (:,:,:) * tmask(:,:,:) ) ! sinking speed of aggregats 308 CALL iom_put( "PMO" , sinking (:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! POC export at 100m 309 CALL iom_put( "PMO2" , sinking2(:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! Num export at 100m 310 CALL iom_put( "ExpFe1" , sinkfer (:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! Export of iron at 100m 311 CALL iom_put( "ExpSi" , sinksil (:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! export of silica at 100m 312 CALL iom_put( "ExpCaCO3", sinkcal (:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! export of calcite at 100m 313 ENDIF 327 314 # endif 328 315 … … 489 476 #if defined key_trc_dia3d 490 477 REAL(wp) :: zrfact2 491 INTEGER :: iksed1 492 #endif 493 #if defined key_iomput 494 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zw3d 478 INTEGER :: ik1 495 479 #endif 496 480 CHARACTER (len=25) :: charout … … 613 597 #if defined key_trc_diaadd 614 598 zrfact2 = 1.e3 * rfact2r 615 ik sed1= iksed + 1599 ik1 = iksed + 1 616 600 # if ! defined key_iomput 617 trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik sed1) * zrfact2 * tmask(:,:,1)618 trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik sed1) * zrfact2 * tmask(:,:,1)619 trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik sed1) * zrfact2 * tmask(:,:,1)620 trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik sed1) * zrfact2 * tmask(:,:,1)621 trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik sed1) * zrfact2 * tmask(:,:,1)622 trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik sed1) * zrfact2 * tmask(:,:,1)601 trc2d(:,:,jp_pcs0_2d + 4) = sinking (:,:,ik1) * zrfact2 * tmask(:,:,1) 602 trc2d(:,:,jp_pcs0_2d + 5) = sinking2(:,:,ik1) * zrfact2 * tmask(:,:,1) 603 trc2d(:,:,jp_pcs0_2d + 6) = sinkfer (:,:,ik1) * zrfact2 * tmask(:,:,1) 604 trc2d(:,:,jp_pcs0_2d + 7) = sinkfer2(:,:,ik1) * zrfact2 * tmask(:,:,1) 605 trc2d(:,:,jp_pcs0_2d + 8) = sinksil (:,:,ik1) * zrfact2 * tmask(:,:,1) 606 trc2d(:,:,jp_pcs0_2d + 9) = sinkcal (:,:,ik1) * zrfact2 * tmask(:,:,1) 623 607 # else 624 zw3d(:,:,:) = sinking (:,:,:) * zrfact2 * tmask(:,:,:) 625 IF( jnt == nrdttrc ) CALL iom_put( "ExpPOC" , zw3d ) 626 zw3d(:,:,:) = sinking2(:,:,:) * zrfact2 * tmask(:,:,:) 627 IF( jnt == nrdttrc ) CALL iom_put( "ExpGOC", zw3d ) 628 zw3d(:,:,:) = sinkfer (:,:,:) * zrfact2 * tmask(:,:,:) 629 IF( jnt == nrdttrc ) CALL iom_put( "ExpFe1", zw3d ) 630 zw3d(:,:,:) = sinkfer2(:,:,:) * zrfact2 * tmask(:,:,:) 631 IF( jnt == nrdttrc ) CALL iom_put( "ExpFe2", zw3d ) 632 zw3d(:,:,:) = sinksil (:,:,:) * zrfact2 * tmask(:,:,:) 633 IF( jnt == nrdttrc ) CALL iom_put( "ExpSi", zw3d ) 634 zw3d(:,:,:) = sinkcal (:,:,:) * zrfact2 * tmask(:,:,:) 635 IF( jnt == nrdttrc ) CALL iom_put( "Expcal", zw3d ) 636 # endif 608 IF( jnt == nrdttrc ) then 609 CALL iom_put( "EPC100" , ( sinking(:,:,ik1) + sinking2(:,:,ik1) ) * zrfact2 * tmask(:,:,1) ) ! Export of carbon at 100m 610 CALL iom_put( "EPFE100" , ( sinkfer(:,:,ik1) + sinkfer2(:,:,ik1) ) * zrfact2 * tmask(:,:,1) ) ! Export of iron at 100m 611 CALL iom_put( "EPCAL100", sinkcal(:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! Export of calcite at 100m 612 CALL iom_put( "EPSI100" , sinksil(:,:,ik1) * zrfact2 * tmask(:,:,1) ) ! Export of biogenic silica at 100m 613 ENDIF 614 #endif 637 615 #endif 638 616 ! -
trunk/NEMO/TOP_SRC/PISCES/sms_pisces.F90
r1801 r1836 64 64 #if defined key_trc_dia3d 65 65 REAL(wp), DIMENSION(jpi,jpj,jpk) :: prodcal !: Calcite production 66 REAL(wp), DIMENSION(jpi,jpj,jpk) :: grazing !: Total zooplankton grazing 66 67 #endif 67 68 -
trunk/NEMO/TOP_SRC/PISCES/trcrst_pisces.F90
r1801 r1836 263 263 #if defined key_dtatrc 264 264 ! Restore close seas values to initial data 265 nmonth = 1 266 nday = 1 267 CALL trc_dta( nittrc000) 265 CALL trc_dta( nittrc000 ) 268 266 DO jn = 1, jptra 269 267 IF( lutini(jn) ) THEN -
trunk/NEMO/TOP_SRC/par_trc.F90
r1254 r1836 18 18 USE par_lobster ! LOBSTER model 19 19 USE par_pisces ! PISCES model 20 USE par_c14b ! C14 bomb tracer 20 21 USE par_cfc ! CFC 11 and 12 tracers 21 USE par_c14b ! C14 bomb tracer22 22 USE par_my_trc ! user defined passive tracers 23 23 … … 27 27 ! Passive tracers : Total size 28 28 ! --------------- ! total number of passive tracers, of 2d and 3d output and trend arrays 29 INTEGER, PUBLIC, PARAMETER :: jptra = jp_lobster + jp_pisces + jp_cfc + jp_ c14b + jp_my_trc30 INTEGER, PUBLIC, PARAMETER :: jpdia2d = jp_lobster_2d + jp_pisces_2d + jp_cfc_2d + jp_ c14b_2d + jp_my_trc_2d31 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_lobster_3d + jp_pisces_3d + jp_cfc_3d + jp_ c14b_3d + jp_my_trc_3d29 INTEGER, PUBLIC, PARAMETER :: jptra = jp_lobster + jp_pisces + jp_cfc + jp_my_trc 30 INTEGER, PUBLIC, PARAMETER :: jpdia2d = jp_lobster_2d + jp_pisces_2d + jp_cfc_2d + jp_my_trc_2d 31 INTEGER, PUBLIC, PARAMETER :: jpdia3d = jp_lobster_3d + jp_pisces_3d + jp_cfc_3d + jp_my_trc_3d 32 32 ! ! total number of sms diagnostic arrays 33 INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_ c14b_trd + jp_my_trc_trd33 INTEGER, PUBLIC, PARAMETER :: jpdiabio = jp_lobster_trd + jp_pisces_trd + jp_cfc_trd + jp_my_trc_trd 34 34 35 35 ! 1D configuration ("key_c1d") … … 40 40 LOGICAL, PUBLIC, PARAMETER :: lk_trc_c1d = .FALSE. !: 1D pass. tracer configuration flag 41 41 # endif 42 43 42 ! Passive tracers : size for TRP trends diagnotics (used if 'key_trc_diatrd' defined) 44 #if defined key_trcldf_eiv 45 # if defined key_trcdmp 46 INTEGER, PARAMETER :: jpdiatrc = 11 !: trends: 3*(advection + diffusion + eiv ) + damping + sms 47 # else 48 INTEGER, PARAMETER :: jpdiatrc = 10 !: trends: 3*(advection + diffusion + eiv ) + sms 49 # endif 50 #else 51 # if defined key_trcdmp 52 INTEGER, PARAMETER :: jpdiatrc = 8 !: trends: 3*(advection + diffusion ) + damping + sms 53 # else 54 INTEGER, PARAMETER :: jpdiatrc = 7 !: trends: 3*(advection + diffusion ) + damping + sms 55 # endif 43 # if defined key_trc_diatrd 44 ! Passive tracers : size for TRP trends diagnotics (used if 'key_trc_diatrd' defined) 45 INTEGER, PARAMETER :: jptrc_xad = 1 !: x- horizontal advection 46 INTEGER, PARAMETER :: jptrc_yad = 2 !: y- horizontal advection 47 INTEGER, PARAMETER :: jptrc_zad = 3 !: z- vertical advection 48 INTEGER, PARAMETER :: jptrc_xdf = 4 !: lateral diffusion 49 INTEGER, PARAMETER :: jptrc_ydf = 5 !: lateral diffusion 50 INTEGER, PARAMETER :: jptrc_zdf = 6 !: vertical diffusion (Kz) 51 INTEGER, PARAMETER :: jptrc_sbc = 7 !: surface boundary condition 52 #if ! defined key_trcldf_eiv && ! defined key_trcdmp 53 INTEGER, PARAMETER :: jpdiatrc = 7 !: trends: 3*(advection + diffusion ) + sbc 54 #endif 55 #if defined key_trcldf_eiv && defined key_trcdmp 56 INTEGER, PARAMETER :: jptrc_xei = 8 !: x- horiz. EIV advection 57 INTEGER, PARAMETER :: jptrc_yei = 9 !: y- horiz. EIV advection 58 INTEGER, PARAMETER :: jptrc_zei = 10 !: z- vert. EIV advection 59 INTEGER, PARAMETER :: jptrc_dmp = 11 !: damping 60 INTEGER, PARAMETER :: jpdiatrc = 11 !: trends: 3*(advection + diffusion + eiv ) + sbc + damping 61 #endif 62 #if defined key_trcldf_eiv && ! defined key_trcdmp 63 INTEGER, PARAMETER :: jptrc_xei = 8 !: x- horiz. EIV advection 64 INTEGER, PARAMETER :: jptrc_yei = 9 !: y- horiz. EIV advection 65 INTEGER, PARAMETER :: jptrc_zei = 10 !: z- vert. EIV advection 66 INTEGER, PARAMETER :: jpdiatrc = 10 !: trends: 3*(advection + diffusion + eiv ) + sbc 67 #endif 68 #if ! defined key_trcldf_eiv && defined key_trcdmp 69 INTEGER, PARAMETER :: jptrc_dmp = 8 !: damping 70 INTEGER, PARAMETER :: jpdiatrc = 8 !: trends: 3*(advection + diffusion ) + sbc + damping 71 #endif 56 72 #endif 57 73 -
trunk/NEMO/TOP_SRC/trcdia.F90
r1715 r1836 25 25 USE trc 26 26 USE trp_trc 27 USE par_trc 27 28 USE trdmld_trc_oce, ONLY : luttrd 28 29 USE dianam ! build name of file (routine) … … 41 42 INTEGER :: ndimt50 !: number of ocean points in index array 42 43 INTEGER :: ndimt51 !: number of ocean points in index array 43 REAL(wp) :: xjulian !: ???? not DOCTOR !44 REAL(wp) :: zjulian !: ???? not DOCTOR ! 44 45 INTEGER , DIMENSION (jpij*jpk) :: ndext50 !: integer arrays for ocean 3D index 45 46 INTEGER , DIMENSION (jpij) :: ndext51 !: integer arrays for ocean surface index … … 157 158 158 159 ! Compute julian date from starting date of the run 159 CALL ymds2ju( nyear, nmonth, nday, rdt, xjulian )160 xjulian = xjulian - adatrj ! set calendar origin to the beginning of the experiment160 CALL ymds2ju( nyear, nmonth, nday, rdt, zjulian ) 161 zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment 161 162 IF(lwp)WRITE(numout,*)' ' 162 163 IF(lwp)WRITE(numout,*)' Date 0 used :', nittrc000 & 163 164 & ,' YEAR ', nyear, ' MONTH ', nmonth, ' DAY ', nday & 164 & ,'Julian day : ', xjulian165 & ,'Julian day : ', zjulian 165 166 166 167 IF(lwp) WRITE(numout,*) ' indexes of zoom = ', iimi, iima, ijmi, ijma, & … … 171 172 IF(lwp) THEN 172 173 CALL dia_nam( clhstnam, nwritetrc,' ' ) 173 CALL ctl _opn( inum, 'date.file', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )174 CALL ctlopn( inum, 'date.file', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, narea ) 174 175 WRITE(inum,*) clhstnam 175 176 CLOSE(inum) … … 184 185 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 185 186 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 186 & nittrc000-ndttrc, xjulian, zdt, nhorit5, nit5 , domain_id=nidom)187 & nittrc000-ndttrc, zjulian, zdt, nhorit5, nit5 , domain_id=nidom) 187 188 188 189 ! Vertical grid for tracer : gdept … … 258 259 CHARACTER (len=80) :: cltral 259 260 CHARACTER (len=10) :: csuff 260 INTEGER :: jn, jl 261 INTEGER :: jn, jl, ikn 261 262 INTEGER :: iimi, iima, ijmi, ijma, ipk, it, itmod 262 263 REAL(wp) :: zsto, zout, zdt … … 313 314 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 314 315 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 315 & nittrc000-ndttrc, xjulian, zdt, nhorit6(jn), &316 & nittrc000-ndttrc, zjulian, zdt, nhorit6(jn), & 316 317 & nit6(jn) , domain_id=nidom ) 317 318 … … 322 323 323 324 ! Declare all the output fields as NETCDF variables 324 325 ! trends for tracer concentrations326 325 DO jn = 1, jptra 327 326 IF( luttrd(jn) ) THEN 328 327 DO jl = 1, jpdiatrc 329 IF( jl == 1) THEN328 IF( jl == jptrc_xad ) THEN 330 329 ! short and long title for x advection for tracer 331 330 WRITE (cltra,'("XAD_",16a)') ctrcnm(jn) 332 WRITE (cltral,'("X advective trend for ",58a)') & 333 & ctrcnl(jn)(1:58) 334 END IF 335 IF( jl == 2 ) THEN 331 WRITE (cltral,'("X advective trend for ",58a)') ctrcnl(jn)(1:58) 332 END IF 333 IF( jl == jptrc_yad ) THEN 336 334 ! short and long title for y advection for tracer 337 335 WRITE (cltra,'("YAD_",16a)') ctrcnm(jn) 338 WRITE (cltral,'("Y advective trend for ",58a)') & 339 & ctrcnl(jn)(1:58) 340 END IF 341 IF( jl == 3 ) THEN 336 WRITE (cltral,'("Y advective trend for ",58a)') ctrcnl(jn)(1:58) 337 END IF 338 IF( jl == jptrc_zad ) THEN 342 339 ! short and long title for Z advection for tracer 343 340 WRITE (cltra,'("ZAD_",16a)') ctrcnm(jn) 344 WRITE (cltral,'("Z advective trend for ",58a)') & 345 & ctrcnl(jn)(1:58) 346 END IF 347 IF( jl == 4 ) THEN 341 WRITE (cltral,'("Z advective trend for ",58a)') ctrcnl(jn)(1:58) 342 END IF 343 IF( jl == jptrc_xdf ) THEN 348 344 ! short and long title for X diffusion for tracer 349 345 WRITE (cltra,'("XDF_",16a)') ctrcnm(jn) 350 WRITE (cltral,'("X diffusion trend for ",58a)') & 351 & ctrcnl(jn)(1:58) 352 END IF 353 IF( jl == 5 ) THEN 346 WRITE (cltral,'("X diffusion trend for ",58a)') ctrcnl(jn)(1:58) 347 END IF 348 IF( jl == jptrc_ydf ) THEN 354 349 ! short and long title for Y diffusion for tracer 355 350 WRITE (cltra,'("YDF_",16a)') ctrcnm(jn) 356 WRITE (cltral,'("Y diffusion trend for ",58a)') & 357 & ctrcnl(jn)(1:58) 358 END IF 359 IF( jl == 6 ) THEN 351 WRITE (cltral,'("Y diffusion trend for ",58a)') ctrcnl(jn)(1:58) 352 END IF 353 IF( jl == jptrc_zdf ) THEN 360 354 ! short and long title for Z diffusion for tracer 361 355 WRITE (cltra,'("ZDF_",16a)') ctrcnm(jn) 362 WRITE (cltral,'("Z diffusion trend for ",58a)') & 363 & ctrcnl(jn)(1:58) 356 WRITE (cltral,'("Z diffusion trend for ",58a)') ctrcnl(jn)(1:58) 364 357 END IF 365 358 # if defined key_trcldf_eiv 366 IF( jl == 7) THEN359 IF( jl == jptrc_xei ) THEN 367 360 ! short and long title for x gent velocity for tracer 368 361 WRITE (cltra,'("XGV_",16a)') ctrcnm(jn) 369 WRITE (cltral,'("X gent velocity trend for ",53a)') & 370 & ctrcnl(jn)(1:53) 371 END IF 372 IF( jl == 8 ) THEN 362 WRITE (cltral,'("X gent velocity trend for ",53a)') ctrcnl(jn)(1:53) 363 END IF 364 IF( jl == jptrc_yei ) THEN 373 365 ! short and long title for y gent velocity for tracer 374 366 WRITE (cltra,'("YGV_",16a)') ctrcnm(jn) 375 WRITE (cltral,'("Y gent velocity trend for ",53a)') & 376 & ctrcnl(jn)(1:53) 377 END IF 378 IF( jl == 9 ) THEN 367 WRITE (cltral,'("Y gent velocity trend for ",53a)') ctrcnl(jn)(1:53) 368 END IF 369 IF( jl == jptrc_zei ) THEN 379 370 ! short and long title for Z gent velocity for tracer 380 371 WRITE (cltra,'("ZGV_",16a)') ctrcnm(jn) 381 WRITE (cltral,'("Z gent velocity trend for ",53a)') & 382 & ctrcnl(jn)(1:53) 372 WRITE (cltral,'("Z gent velocity trend for ",53a)') ctrcnl(jn)(1:53) 383 373 END IF 384 374 # endif 385 375 # if defined key_trcdmp 386 IF( jl == jp diatrc - 1) THEN376 IF( jl == jptrc_dmp ) THEN 387 377 ! last trends for tracer damping : short and long title 388 378 WRITE (cltra,'("TDM_",16a)') ctrcnm(jn) 389 WRITE (cltral,'("Tracer damping trend for ",55a)') & 390 & ctrcnl(jn)(1:55) 391 END IF 392 # endif 393 IF( jl == jpdiatrc ) THEN 379 WRITE (cltral,'("Tracer damping trend for ",55a)') ctrcnl(jn)(1:55) 380 END IF 381 # endif 382 IF( jl == jptrc_sbc ) THEN 394 383 ! last trends for tracer damping : short and long title 395 384 WRITE (cltra,'("SBC_",16a)') ctrcnm(jn) 396 WRITE (cltral,'("Surface boundary flux ",58a)') &397 & ctrcnl(jn)(1:58)398 END IF399 385 WRITE (cltral,'("Surface boundary flux ",58a)') ctrcnl(jn)(1:55) 386 END IF 387 WRITE (cltral,'("Surface boundary flux ",58a)') ctrcnl(jn)(1:55) 388 END IF 400 389 CALL FLUSH( numout ) 401 390 cltrau = ctrcun(jn) ! UNIT for tracer /trends … … 406 395 END IF 407 396 END DO 408 409 397 ! CLOSE netcdf Files 410 398 DO jn = 1, jptra … … 432 420 DO jn = 1, jptra 433 421 IF( luttrd(jn) ) THEN 422 ikn = ikeep(jn) 434 423 DO jl = 1, jpdiatrc 435 ! short titles 436 IF( jl == 1) WRITE (cltra,'("XAD_",16a)') ctrcnm(jn) ! x advection for tracer437 IF( jl == 2) WRITE (cltra,'("YAD_",16a)') ctrcnm(jn) ! z advection for tracer438 IF( jl == 3) WRITE (cltra,'("ZAD_",16a)') ctrcnm(jn) ! z advection for tracer439 IF( jl == 4) WRITE (cltra,'("XDF_",16a)') ctrcnm(jn) ! x diffusion for tracer440 IF( jl == 5) WRITE (cltra,'("YDF_",16a)') ctrcnm(jn) ! y diffusion for tracer441 IF( jl == 6) WRITE (cltra,'("ZDF_",16a)') ctrcnm(jn) ! z diffusion for tracer424 ! short titles 425 IF( jl == jptrc_xad) WRITE (cltra,'("XAD_",16a)') ctrcnm(jn) 426 IF( jl == jptrc_yad) WRITE (cltra,'("YAD_",16a)') ctrcnm(jn) 427 IF( jl == jptrc_zad) WRITE (cltra,'("ZAD_",16a)') ctrcnm(jn) 428 IF( jl == jptrc_xdf) WRITE (cltra,'("XDF_",16a)') ctrcnm(jn) 429 IF( jl == jptrc_ydf) WRITE (cltra,'("YDF_",16a)') ctrcnm(jn) 430 IF( jl == jptrc_zdf) WRITE (cltra,'("ZDF_",16a)') ctrcnm(jn) 442 431 # if defined key_trcldf_eiv 443 IF( jl == 7) WRITE (cltra,'("XGV_",16a)') ctrcnm(jn) ! x gent velocity for tracer444 IF( jl == 8) WRITE (cltra,'("YGV_",16a)') ctrcnm(jn) ! y gent velocity for tracer445 IF( jl == 9) WRITE (cltra,'("ZGV_",16a)') ctrcnm(jn) ! z gent velocity for tracer432 IF( jl == jptrc_xei) WRITE (cltra,'("XGV_",16a)') ctrcnm(jn) 433 IF( jl == jptrc_yei) WRITE (cltra,'("YGV_",16a)') ctrcnm(jn) 434 IF( jl == jptrc_zei) WRITE (cltra,'("ZGV_",16a)') ctrcnm(jn) 446 435 # endif 447 436 # if defined key_trcdmp 448 IF( jl == jp diatrc - 1 ) WRITE (cltra,'("TDM_",16a)') ctrcnm(jn) ! damping449 # endif 450 IF( jl == jp diatrc ) WRITE (cltra,'("SBC_",a)') ctrcnm(jn) ! surface boundary conditions437 IF( jl == jptrc_dmp ) WRITE (cltra,'("TDM_",16a)') ctrcnm(jn) 438 # endif 439 IF( jl == jptrc_sbc ) WRITE (cltra,'("SBC_",16a)') ctrcnm(jn) 451 440 ! 452 CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,ik eep(jn),jl),ndimt50, ndext50)441 CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,ikn,jl),ndimt50, ndext50) 453 442 END DO 454 443 END IF … … 552 541 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 553 542 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 554 & nittrc000-ndttrc, xjulian, zdt, nhoritd, nitd , domain_id=nidom )543 & nittrc000-ndttrc, zjulian, zdt, nhoritd, nitd , domain_id=nidom ) 555 544 556 545 ! Vertical grid for 2d and 3d arrays … … 700 689 CALL histbeg( clhstnam, jpi, glamt, jpj, gphit, & 701 690 & iimi, iima-iimi+1, ijmi, ijma-ijmi+1, & 702 & nittrc000-ndttrc, xjulian, zdt, nhoritb, nitb , domain_id=nidom )691 & nittrc000-ndttrc, zjulian, zdt, nhoritb, nitb , domain_id=nidom ) 703 692 ! Vertical grid for biological trends 704 693 CALL histvert(nitb, 'deptht', 'Vertical T levels', 'm', ipk, gdept_0, ndepitb) -
trunk/NEMO/TOP_SRC/trcini.F90
r1745 r1836 122 122 trb(:,:,:,:) = trn(:,:,:,:) 123 123 ELSE 124 ! 124 125 CALL trc_rst_read ! restart from a file 125 #if defined key_off_tra 126 CALL day_init ! calendar 127 #endif 126 ! 128 127 ENDIF 129 128 -
trunk/NEMO/TOP_SRC/trcrst.F90
r1801 r1836 33 33 USE trcrst_c14b ! C14 bomb restart 34 34 USE trcrst_my_trc ! MY_TRC restart 35 35 #if defined key_off_tra 36 USE daymod 37 #endif 36 38 IMPLICIT NONE 37 39 PRIVATE … … 277 279 WRITE(numout,*) 278 280 ENDIF 281 ! 282 CALL day_init ! compute calendar 283 ! 279 284 #endif 280 285 -
trunk/NEMO/TOP_SRC/trcwri.F90
r1656 r1836 1 1 MODULE trcwri 2 !!====================================================================== 2 !!=================================================================================== 3 3 !! *** MODULE trcwri *** 4 !! TOP : Output of passive tracers 5 !!====================================================================== 6 !! 1.0 !7 !! ! 20 09-05 (C. Ethe )4 !! TOP : Output of passive tracers 5 !!==================================================================================== 6 !! History : 1.0 ! 2009-05 (C. Ethe) Original code 7 !! ! 2010-03 (C. Ethe, R. Seferian ) Add the tracer transport trends 8 8 !!---------------------------------------------------------------------- 9 9 #if defined key_top && defined key_iomput … … 11 11 !! 'key_top' && 'key_iomput' TOP models 12 12 !!---------------------------------------------------------------------- 13 !! trc_wri : outputs of concentration fields 13 !! trc_wri_trc : outputs of concentration fields 14 !! trc_wri_trd : outputs of transport trends 14 15 !!---------------------------------------------------------------------- 16 USE dom_oce ! ocean space and time domain variables 17 USE oce_trc 18 USE trp_trc 15 19 USE trc 20 USE trdmld_trc_oce, ONLY : luttrd 16 21 USE iom 17 22 #if defined key_off_tra … … 35 40 CONTAINS 36 41 37 SUBROUTINE trc_wri( kt ) 42 SUBROUTINE trc_wri( kt ) 38 43 !!--------------------------------------------------------------------- 39 44 !! *** ROUTINE trc_wri *** 45 !! 46 !! ** Purpose : output passive tracers fields and dynamical trends 47 !!--------------------------------------------------------------------- 48 INTEGER, INTENT( in ) :: kt 49 !!--------------------------------------------------------------------- 50 51 ! 52 CALL iom_setkt ( kt + ndttrc - 1 ) ! set the passive tracer time step 53 CALL trc_wri_trc( kt ) ! outputs for tracer concentration 54 CALL trc_wri_trd( kt ) ! outputs for dynamical trends 55 CALL iom_setkt ( kt ) ! set the model time step 56 ! 57 END SUBROUTINE trc_wri 58 59 SUBROUTINE trc_wri_trc( kt ) 60 !!--------------------------------------------------------------------- 61 !! *** ROUTINE trc_wri_trc *** 40 62 !! 41 63 !! ** Purpose : output passive tracers fields … … 43 65 INTEGER, INTENT( in ) :: kt ! ocean time-step 44 66 INTEGER :: jn 45 CHARACTER (len=20) :: cltra 67 CHARACTER (len=20) :: cltra, cltras 46 68 #if defined key_off_tra 47 69 CHARACTER (len=40) :: clhstnam 48 70 INTEGER :: inum = 11 ! temporary logical unit 49 71 #endif 50 51 72 !!--------------------------------------------------------------------- 52 73 53 ! Initialisation54 ! --------------55 56 CALL iom_setkt( kt + ndttrc - 1 ) ! set the passive tracer time step57 58 74 #if defined key_off_tra 59 75 IF( kt == nittrc000 ) THEN … … 67 83 ENDIF 68 84 #endif 69 70 71 85 ! write the tracer concentrations in the file 72 86 ! --------------------------------------- … … 76 90 END DO 77 91 ! 78 CALL iom_setkt( kt ) ! set the model time step92 END SUBROUTINE trc_wri_trc 79 93 94 # if defined key_trc_diatrd 95 96 SUBROUTINE trc_wri_trd( kt ) 97 !!---------------------------------------------------------------------- 98 !! *** ROUTINE trc_wri_trd *** 99 !! 100 !! ** Purpose : output of passive tracer : advection-diffusion trends 101 !! 102 !!---------------------------------------------------------------------- 103 INTEGER, INTENT( in ) :: kt ! ocean time-step 104 !! 105 CHARACTER (len=3) :: cltra 106 INTEGER :: jn, jl, ikn 107 !!---------------------------------------------------------------------- 108 109 DO jn = 1, jptra 110 IF( luttrd(jn) ) THEN 111 ikn = ikeep(jn) 112 DO jl = 1, jpdiatrc 113 IF( jl == jptrc_xad ) WRITE (cltra,"(3a)") 'XAD' ! x advection for tracer 114 IF( jl == jptrc_yad ) WRITE (cltra,"(3a)") 'YAD' ! y advection for tracer 115 IF( jl == jptrc_zad ) WRITE (cltra,"(3a)") 'ZAD' ! z advection for tracer 116 IF( jl == jptrc_xdf ) WRITE (cltra,"(3a)") 'XDF' ! x diffusion for tracer 117 IF( jl == jptrc_ydf ) WRITE (cltra,"(3a)") 'YDF' ! y diffusion for tracer 118 IF( jl == jptrc_zdf ) WRITE (cltra,"(3a)") 'ZDF' ! z diffusion for tracer 119 # if defined key_trcldf_eiv 120 IF( jl == jptrc_xei ) WRITE (cltra,"(3a)") 'XGV' ! x gent velocity for tracer 121 IF( jl == jptrc_yei ) WRITE (cltra,"(3a)") 'YGV' ! y gent velocity for tracer 122 IF( jl == jptrc_zei ) WRITE (cltra,"(3a)") 'ZGV' ! z gent velocity for tracer 123 # endif 124 # if defined key_trcdmp 125 IF( jl == jptrc_dmp ) WRITE (cltra,"(3a)") 'DMP' ! damping 126 # endif 127 IF( jl == jptrc_sbc ) WRITE (cltra,"(3a)") 'SBC' ! surface boundary conditions 128 ! write the trends 129 CALL iom_put( cltra, trtrd(:,:,:,ikn,jl) ) 130 END DO 131 END IF 132 END DO 80 133 ! 81 END SUBROUTINE trc_wri 134 END SUBROUTINE trc_wri_trd 82 135 136 # else 137 SUBROUTINE trc_wri_trd( kt ) ! Dummy routine 138 INTEGER, INTENT ( in ) :: kt 139 END SUBROUTINE trc_wri_trd 140 #endif 83 141 #else 84 142 !!---------------------------------------------------------------------- … … 90 148 INTEGER, INTENT(in) :: kt 91 149 END SUBROUTINE trc_wri 92 93 150 #endif 94 151
Note: See TracChangeset
for help on using the changeset viewer.