Changeset 202 for trunk/NEMO/TOP_SRC
- Timestamp:
- 2004-12-22T16:55:48+01:00 (19 years ago)
- Location:
- trunk/NEMO/TOP_SRC/TRP
- Files:
-
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90
r186 r202 11 11 !!---------------------------------------------------------------------- 12 12 !! * Modules used 13 USE oce_trc ! ocean dynamics and active tracers 14 USE trc 15 USE trcbbl ! advective term in the BBL 16 USE lbclnk 13 USE oce_trc ! ocean dynamics and active tracers variables 14 USE trc ! ocean passive tracers variables 17 15 18 16 IMPLICIT NONE … … 256 254 ! ! =============== 257 255 258 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)259 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )256 IF(l_ctl) THEN ! print mean trends (used for debugging) 257 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 260 258 WRITE(numout,*) ' trc/had - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 261 259 tra_ctl(jn) = ztra … … 269 267 270 268 ! Surface value 271 #if defined key_dynspg_fsc 272 ! free surface-constant volume 273 zwx(:,:, 1 ) = zwn(:,:,1) * trn(:,:,1,jn) 274 #else 275 ! rigid lid : flux set to zero 276 zwx(:,:, 1 ) = 0.e0 277 #endif 269 IF( lk_dynspg_fsc ) THEN ! free surface-constant volume 270 zwx(:,:, 1 ) = zwn(:,:,1) * trn(:,:,1,jn) 271 ELSE ! rigid lid : flux set to zero 272 zwx(:,:, 1 ) = 0.e0 273 ENDIF 278 274 279 275 ! 1. Vertical advective fluxes … … 321 317 END DO 322 318 323 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)324 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )319 IF(l_ctl) THEN ! print mean trends (used for debugging) 320 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 325 321 WRITE(numout,*) ' trc/zad - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' centered2' 326 322 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90
r186 r202 10 10 !!---------------------------------------------------------------------- 11 11 !! * Modules used 12 USE oce_trc ! ocean dynamics and active tracers 13 USE trc 14 USE trcbbl ! tracers: bottom boundary layer 15 USE lbclnk 12 USE oce_trc ! ocean dynamics and active tracers variables 13 USE trc ! ocean passive tracers variables 14 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 16 15 17 16 IMPLICIT NONE … … 94 93 95 94 #if defined key_trcbbl_adv 96 97 95 ! Advective bottom boundary layer 98 96 ! ------------------------------- … … 132 130 DO jk = 1, jpkm1 133 131 DO jj = 2, jpj 134 DO ji = fs_2, fs_jpim1 ! vector opt. 135 z0u = zt1(ji,jj,jk) * zt1(ji-1,jj,jk) 136 IF( z0u > 0. ) THEN 137 ztp1(ji,jj,jk) = 0.5 * ( zt1(ji,jj,jk)+zt1(ji-1,jj,jk) ) 138 ELSE 139 ztp1(ji,jj,jk) = 0.e0 140 ENDIF 141 142 z0v = zt2(ji,jj,jk) * zt2(ji,jj-1,jk) 143 IF( z0v > 0. ) THEN 144 ztp2(ji,jj,jk) = 0.5 * ( zt2(ji,jj,jk)+zt2(ji,jj-1,jk) ) 145 ELSE 146 ztp2(ji,jj,jk) = 0.e0 147 ENDIF 132 DO ji = fs_2, jpi ! vector opt. 133 ztp1(ji,jj,jk) = ( zt1(ji,jj,jk) + zt1(ji-1,jj ,jk) ) & 134 & * ( 0.25 + SIGN( 0.25, zt1(ji,jj,jk) * zt1(ji-1,jj ,jk) ) ) 135 ztp2(ji,jj,jk) = ( zt2(ji,jj,jk) + zt2(ji ,jj-1,jk) ) & 136 & * ( 0.25 + SIGN( 0.25, zt2(ji,jj,jk) * zt2(ji ,jj-1,jk) ) ) 148 137 END DO 149 138 END DO … … 246 235 END DO 247 236 237 IF(l_ctl) THEN ! print mean trends (used for debugging) 238 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 239 WRITE(numout,*) ' trc/had - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl' 240 tra_ctl(jn) = ztra 241 ENDIF 248 242 249 243 ! II. Vertical advective fluxes … … 255 249 zt1(:,:,jk) = tmask(:,:,jk) * ( trb(:,:,jk-1,jn) - trb(:,:,jk,jn) ) 256 250 END DO 257 ! surface bottom boundary conditions251 ! surface and bottom boundary conditions 258 252 zt1 (:,:, 1 ) = 0.e0 259 253 zt1 (:,:,jpk) = 0.e0 … … 262 256 DO jj = 1, jpj 263 257 DO ji = 1, jpi 264 z0w = zt1(ji,jj,jk) * zt1(ji,jj,jk+1) 265 IF( z0w > 0. ) THEN 266 ztp1(ji,jj,jk) = 0.5 * ( zt1(ji,jj,jk) + zt1(ji,jj,jk+1) ) 267 ELSE 268 ztp1(ji,jj,jk) = 0.e0 269 ENDIF 258 ztp1(ji,jj,jk) = ( zt1(ji,jj,jk) + zt1(ji,jj,jk+1) ) & 259 & * ( 0.25 + SIGN( 0.25, zt1(ji,jj,jk) * zt1(ji,jj,jk+1) ) ) 270 260 END DO 271 261 END DO … … 302 292 END DO 303 293 ! surface values 304 #if defined key_dynspg_fsc 305 ! free surface-constant volume 306 zt1(:,:, 1 ) = zwn(:,:,1) * trb(:,:,1,jn) 307 #else 308 ! rigid lid : flux set to zero 309 zt1(:,:, 1 ) = 0.e0 310 #endif 294 IF( lk_dynspg_fsc .OR. lk_dynspg_fsc_tsk ) THEN ! free surface-constant volume 295 zt1(:,:, 1 ) = zwn(:,:,1) * trb(:,:,1,jn) 296 ELSE ! rigid lid : flux set to zero 297 zt1(:,:, 1 ) = 0.e0 298 ENDIF 299 311 300 ! bottom values 312 301 zt1(:,:,jpk) = 0.e0 … … 330 319 END DO 331 320 332 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)333 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )321 IF(l_ctl) THEN ! print mean trends (used for debugging) 322 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 334 323 WRITE(numout,*) ' trc/zad - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl' 335 324 tra_ctl(jn) = ztra 336 325 ENDIF 337 ENDDO 326 327 END DO 338 328 339 329 END SUBROUTINE trc_adv_muscl -
trunk/NEMO/TOP_SRC/TRP/trcadv_muscl2.F90
r186 r202 10 10 !!---------------------------------------------------------------------- 11 11 !! * Modules used 12 USE oce_trc ! ocean dynamics and active tracers 13 USE trc ! ocean passive tracers 14 USE trcbbl ! tracers: bottom boudary layer 15 USE lbclnk 12 USE oce_trc ! ocean dynamics and active tracers variables 13 USE trc ! ocean passive tracers variables 14 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 16 15 17 16 IMPLICIT NONE … … 125 124 DO jk = 1, jpkm1 126 125 DO jj = 2, jpj 127 DO ji = fs_2, fs_jpim1 ! vector opt. 128 z0u = zt1(ji,jj,jk) * zt1(ji-1,jj,jk) 129 IF( z0u > 0. ) THEN 130 ztp1(ji,jj,jk) = 0.5 * ( zt1(ji,jj,jk)+zt1(ji-1,jj,jk) ) 131 ELSE 132 ztp1(ji,jj,jk) = 0.e0 133 ENDIF 134 135 z0v = zt2(ji,jj,jk) * zt2(ji,jj-1,jk) 136 IF( z0v > 0. ) THEN 137 ztp2(ji,jj,jk) = 0.5 * ( zt2(ji,jj,jk)+zt2(ji,jj-1,jk) ) 138 ELSE 139 ztp2(ji,jj,jk) = 0.e0 140 ENDIF 126 DO ji = fs_2, jpi ! vector opt. 127 ztp1(ji,jj,jk) = ( zt1(ji,jj,jk) + zt1(ji-1,jj ,jk) ) & 128 & * ( 0.25 + SIGN( 0.25, zt1(ji,jj,jk) * zt1(ji-1,jj ,jk) ) ) 129 ztp2(ji,jj,jk) = ( zt2(ji,jj,jk) + zt2(ji ,jj-1,jk) ) & 130 & * ( 0.25 + SIGN( 0.25, zt2(ji,jj,jk) * zt2(ji ,jj-1,jk) ) ) 141 131 END DO 142 132 END DO … … 287 277 END DO 288 278 289 290 279 IF(l_ctl) THEN ! print mean trends (used for debugging) 280 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 281 WRITE(numout,*) ' trc/had - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl' 282 tra_ctl(jn) = ztra 283 ENDIF 291 284 292 285 ! II. Vertical advective fluxes … … 306 299 DO jj = 1, jpj 307 300 DO ji = 1, jpi 308 z0w = zt1(ji,jj,jk) * zt1(ji,jj,jk+1) 309 IF( z0w > 0. ) THEN 310 ztp1(ji,jj,jk) = 0.5 * ( zt1(ji,jj,jk) + zt1(ji,jj,jk+1) ) 311 ELSE 312 ztp1(ji,jj,jk) = 0.e0 313 ENDIF 301 ztp1(ji,jj,jk) = ( zt1(ji,jj,jk) + zt1(ji,jj,jk+1) ) & 302 & * ( 0.25 + SIGN( 0.25, zt1(ji,jj,jk) * zt1(ji,jj,jk+1) ) ) 314 303 END DO 315 304 END DO … … 360 349 361 350 ! surface values 362 #if defined key_dynspg_fsc 363 ! free surface-constant volume 364 zt1(:,:, 1 ) = zwn(:,:,1) * trb(:,:,1,jn) 365 #else 366 ! rigid lid : flux set to zero 367 zt1(:,:, 1 ) = 0.e0 368 #endif 351 IF( lk_dynspg_fsc .OR. lk_dynspg_fsc_tsk ) THEN ! free surface-constant volume 352 zt1(:,:, 1 ) = zwn(:,:,1) * trb(:,:,1,jn) 353 ELSE ! rigid lid : flux set to zero 354 zt1(:,:, 1 ) = 0.e0 355 ENDIF 369 356 370 357 ! bottom values … … 389 376 END DO 390 377 391 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)392 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )378 IF(l_ctl) THEN ! print mean trends (used for debugging) 379 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 393 380 WRITE(numout,*) ' trc/zad - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' muscl2' 394 381 tra_ctl(jn) = ztra 395 382 ENDIF 396 383 397 END DO384 END DO 398 385 399 386 END SUBROUTINE trc_adv_muscl2 -
trunk/NEMO/TOP_SRC/TRP/trcadv_smolar.F90
r186 r202 11 11 !!---------------------------------------------------------------------- 12 12 !! * Modules used 13 USE oce_trc ! ocean dynamics and active tracers 14 USE trc 15 USE trcbbl ! Advective term of BBL 16 USE lbclnk 13 USE oce_trc ! ocean dynamics and active tracers variables 14 USE trc ! ocean passive tracers variables 15 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 17 16 18 17 IMPLICIT NONE … … 177 176 ! II. Vertical advection 178 177 ! ---------------------- 179 !!! Chris 178 180 179 ! Surface value 181 #if defined key_dynspg_fsc 182 ! free surface-constant volume 183 zkz(:,:, 1 ) = zwn(:,:,1) * trn(:,:,1,jn) * tmask(ji,jj,1) 184 #else 185 ! rigid lid : flux set to zero 186 zkz(:,:, 1 ) = 0.e0 187 #endif 188 !!! Chris 180 IF( lk_dynspg_fsc .OR. lk_dynspg_fsc_tsk ) THEN ! free surface-constant volume 181 zkz(:,:, 1 ) = zwn(:,:,1) * trn(:,:,1,jn) * tmask(ji,jj,1) 182 ELSE ! rigid lid : flux set to zero 183 zkz(:,:, 1 ) = 0.e0 184 ENDIF 189 185 190 186 DO jk = 2,jpk … … 502 498 #endif 503 499 504 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)505 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )500 IF(l_ctl) THEN ! print mean trends (used for debugging) 501 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 506 502 WRITE(numout,*) ' trc/zad - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' smolar' 507 503 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcadv_tvd.F90
r186 r202 12 12 !!---------------------------------------------------------------------- 13 13 !! * Modules used 14 USE oce_trc ! ocean dynamics and active tracers 15 USE trc 16 USE trcbbl ! Advective term of BBL 17 USE lbclnk 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE trc ! ocean passive tracers variables 16 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 17 19 18 IMPLICIT NONE … … 92 91 93 92 #if defined key_trcbbl_adv 94 95 93 ! Advective Bottom boundary layer: add the velocity 96 94 ! ------------------------------------------------- … … 131 129 ! upstream tracer flux in the k direction 132 130 ! Surface value 133 #if defined key_dynspg_fsc 134 ! free surface-constant volume 135 DO jj = 1, jpj 136 DO ji = 1, jpi 137 zew = e1t(ji,jj) * e2t(ji,jj) * zwn(ji,jj,1) 138 ztw(ji,jj,1) = zew * trb(ji,jj,1,jn) 139 END DO 140 END DO 141 #else 142 ! rigid lid : flux set to zero 143 ztw(:,:,1) = 0.e0 144 #endif 131 IF( lk_dynspg_fsc .OR. lk_dynspg_fsc_tsk ) THEN ! free surface-constant volume 132 DO jj = 1, jpj 133 DO ji = 1, jpi 134 zew = e1t(ji,jj) * e2t(ji,jj) * zwn(ji,jj,1) 135 ztw(ji,jj,1) = zew * trb(ji,jj,1,jn) 136 END DO 137 END DO 138 ELSE ! rigid lid : flux set to zero 139 ztw(:,:,1) = 0.e0 140 ENDIF 145 141 146 142 ! Interior value … … 235 231 END DO 236 232 237 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)238 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )233 IF(l_ctl) THEN ! print mean trends (used for debugging) 234 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 239 235 WRITE(numout,*) ' trc/zad - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn), ' tvd' 240 236 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcbbc.F90
r186 r202 12 12 !!---------------------------------------------------------------------- 13 13 !! * Modules used 14 USE oce_trc ! ocean dynamics and active tracers 15 USE trc 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE trc ! ocean passive tracers variables 16 16 17 17 IMPLICIT NONE … … 104 104 END DO 105 105 #endif 106 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)107 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )106 IF(l_ctl) THEN ! print mean trends (used for debugging) 107 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 108 108 WRITE(numout,*) ' trc/bbc - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 109 109 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcbbl.F90
r186 r202 16 16 !!---------------------------------------------------------------------- 17 17 !! * Modules used 18 USE oce_trc ! ocean dynamics and active tracers 19 USE trc ! ocean active tracer trends18 USE oce_trc ! ocean dynamics and active tracers variables 19 USE trc ! ocean passive tracers variables 20 20 21 21 IMPLICIT NONE … … 339 339 # endif 340 340 END DO 341 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)342 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )341 IF(l_ctl) THEN ! print mean trends (used for debugging) 342 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 343 343 WRITE(numout,*) ' trc/bbl - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 344 344 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcbbl_adv.h90
r186 r202 51 51 !!---------------------------------------------------------------------- 52 52 !! * Modules used 53 USE lbclnk 53 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 54 54 55 55 !! * Arguments … … 382 382 #endif 383 383 END DO 384 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)385 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )384 IF(l_ctl) THEN ! print mean trends (used for debugging) 385 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 386 386 WRITE(numout,*) ' trc/bbl - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 387 387 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcdmp.F90
r186 r202 16 16 !! * Modules used 17 17 USE oce_trc ! ocean dynamics and tracers variables 18 USE trc ! ocean active tracer trendvariables19 USE trctrp_lec 18 USE trc ! ocean passive tracers variables 19 USE trctrp_lec ! passive tracers transport 20 20 21 21 IMPLICIT NONE … … 154 154 ENDIF 155 155 156 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)157 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )156 IF(l_ctl) THEN ! print mean trends (used for debugging) 157 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 158 158 WRITE(numout,*) ' trc/dmp - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 159 159 tra_ctl(jn) = ztra … … 264 264 ! damping along the forced closed boundary over 6 grid-points 265 265 DO jn = 1, 6 266 IF( lzoom_e ) restotr( mi0(jn+1) , : , :,:) = zfact(jn) ! east closed 267 IF( lzoom_s ) restotr( : , mj0(jn+1) , :,:) = zfact(jn) ! south closed 268 IF( lzoom_w ) restotr( mi0(jpiglo-jn) , : , : ,:) = zfact(jn) ! west closed 269 IF( lzoom_n ) restotr( : , mi0(jpjglo-jn) , : ,:) = zfact(jn) ! north closed 266 IF( lzoom_w ) resto( mi0(jn+jpizoom):mi1(jn+jpizoom), : , : ) = zfact(jn) ! west closed 267 IF( lzoom_s ) resto( : , mj0(jn+jpjzoom):mj1(jn+jpjzoom), : ) = zfact(jn) ! south closed 268 IF( lzoom_e ) resto( mi0(jpiglo+jpizoom-1-jn):mi1(jpiglo+jpizoom-1-jn) , : , : ) & 269 & = zfact(jn) ! east closed 270 IF( lzoom_n ) resto( : , mj0(jpjglo+jpjzoom-1-jn):mj1(jpjglo+jpjzoom-1-jn) , : ) & 271 & = zfact(jn) ! north closed 270 272 END DO 271 273 … … 343 345 344 346 !! * Local declarations 345 INTEGER :: j k, jn! dummy loop indices347 INTEGER :: ji, jj, jk, je, jn ! dummy loop indices 346 348 INTEGER, PARAMETER :: jpmois=1 347 349 INTEGER :: ipi, ipj, ipk ! temporary integers 350 INTEGER :: ii0, ii1, ij0, ij1 ! " " 348 351 INTEGER :: & 349 352 idmp, & ! logical unit for file restoring damping term 350 353 icot ! logical unit for file distance to the coast 351 INTEGER :: itime, istep(jpmois) 352 CHARACTER (len=32) :: clname, clname3 354 INTEGER :: itime, istep(jpmois), ie 355 LOGICAL :: llbon 356 CHARACTER (len=32) :: clname, clname2, clname3 353 357 REAL(wp) :: & 354 zdate0 ! temporary scalars 355 REAL(wp), DIMENSION(jpk) :: & 356 zdept 357 REAL(wp), DIMENSION(jpi,jpj) :: & 358 zlamt, zphit 359 360 INTEGER :: ji, jj, ie, je ! dummy loop indices 361 INTEGER :: ii0, ii1, ij0, ij1 ! " " 362 LOGICAL :: llbon 363 CHARACTER (len=32) :: clname2 364 REAL(wp) :: & 365 zinfl, zlon, & ! temporary scalars 358 zdate0, zinfl, zlon, & ! temporary scalars 366 359 zlat, zlat0, zlat1, zlat2, & ! " " 367 360 zsdmp, zbdmp ! " " 368 361 REAL(wp), DIMENSION(jpk) :: & 369 z hfac362 zdept, zhfac 370 363 REAL(wp), DIMENSION(jpi,jpj) :: & 371 zmrs 364 zmrs, zlamt, zphit 372 365 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 373 366 zdct 374 375 367 !!---------------------------------------------------------------------- 376 368 … … 486 478 ! ... Decrease the value in the vicinity of the coast 487 479 restotr(ji,jj,jk,jn) = restotr(ji,jj,1,jn)*0.5 & 488 * ( 1. - COS( rpi*zdct(ji,jj,jk)/zinfl) )480 & * ( 1. - COS( rpi*zdct(ji,jj,jk)/zinfl) ) 489 481 490 482 ! ... Vertical variation from zsdmp (sea surface) to zbdmp (bottom) 491 restotr(ji,jj,jk,jn) = restotr(ji,jj,jk,jn) *&492 ( zbdmp + (zsdmp-zbdmp)*EXP(-fsdept(ji,jj,jk)/hdmptr) )483 restotr(ji,jj,jk,jn) = restotr(ji,jj,jk,jn) & 484 & * ( zbdmp + (zsdmp-zbdmp)*EXP(-fsdept(ji,jj,jk)/hdmptr) ) 493 485 END DO 494 486 END DO … … 519 511 ii0 = 81 ; ii1 = 91 ; zmrs( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0 520 512 ij0 = 50 ; ij1 = 55 521 ii0 = 7 0; ii1 = 80 ; zmrs( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0513 ii0 = 75 ; ii1 = 80 ; zmrs( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0 522 514 ij0 = 52 ; ij1 = 53 523 515 ii0 = 70 ; ii1 = 74 ; zmrs( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0 … … 574 566 ii0 = 568 ; ii1 = 574 575 567 ij0 = 324 ; ij1 = 333 ; zmrs( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0 576 ii0 = 575 ; ii1 = 314568 ii0 = 575 ; ii1 = 658 577 569 ij0 = 314 ; ij1 = 366 ; zmrs( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0 578 570 ! Black Sea (remaining part … … 695 687 REAL(wp) :: zdate0 696 688 REAL(wp), DIMENSION(jpi,jpj) :: & 697 zxt, zyt, zzt ! cartesian coordinates for T-points 689 zxt, zyt, zzt, & ! cartesian coordinates for T-points 690 zmask 698 691 REAL(wp), DIMENSION(3*jpi*jpj) :: & 699 692 zxc, zyc, zzc, zdis ! temporary workspace … … 728 721 DO jj = 2, jpjm1 729 722 DO ji = 2, jpim1 730 llcotu(ji,jj) = ( umask(ji,jj,jk) == 0. ) .AND. ( tmask(ji,jj ,jk)+tmask(ji+1,jj ,jk) == 1. ) 731 llcotv(ji,jj) = ( vmask(ji,jj,jk) == 0. ) .AND. ( tmask(ji,jj ,jk)+tmask(ji ,jj+1,jk) == 1. ) 732 llcotf(ji,jj) = ( fmask(ji,jj,jk) == 0. ) .AND. ( tmask(ji,jj+1,jk)+tmask(ji+1,jj+1,jk) & 733 + tmask(ji,jj ,jk)+tmask(ji+1,jj ,jk) < 4. ) 723 zmask(ji,jj) = ( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 724 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) ) 725 llcotu(ji,jj) = ( tmask(ji,jj, jk) + tmask(ji+1,jj ,jk) == 1. ) 726 llcotv(ji,jj) = ( tmask(ji,jj ,jk) + tmask(ji ,jj+1,jk) == 1. ) 727 llcotf(ji,jj) = ( zmask(ji,jj) > 0. ) .AND. ( zmask(ji,jj) < 4. ) 734 728 END DO 735 729 END DO -
trunk/NEMO/TOP_SRC/TRP/trcldf_bilap.F90
r186 r202 10 10 !!---------------------------------------------------------------------- 11 11 !! * Modules used 12 USE oce_trc ! ocean dynamics and active tracers 13 USE trc ! ocean space and time domain12 USE oce_trc ! ocean dynamics and active tracers variables 13 USE trc ! ocean passive tracers variables 14 14 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 15 15 … … 84 84 !! * Local declarations 85 85 INTEGER :: ji, jj, jk, jn ! dummy loop indices 86 86 #if defined key_partial_steps 87 INTEGER :: iku, ikv ! temporary integers 88 #endif 87 89 REAL(wp) :: ztra ! temporary scalars 88 90 89 91 REAL(wp), DIMENSION(jpi,jpj) :: & 90 zeeu, zeev, zbtr, & ! workspace 91 zlt, ztu, ztv 92 zeeu, zeev, zbtr, zlt ! workspace 93 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 94 ztu, ztv ! workspace 92 95 !!---------------------------------------------------------------------- 93 96 … … 130 133 DO jj = 1, jpjm1 131 134 DO ji = 1, fs_jpim1 ! vector opt. 132 ztu(ji,jj) = zeeu(ji,jj) * ( trb(ji+1,jj ,jk,jn) - trb(ji,jj,jk,jn) ) 133 ztv(ji,jj) = zeev(ji,jj) * ( trb(ji ,jj+1,jk,jn) - trb(ji,jj,jk,jn) ) 134 END DO 135 END DO 136 135 ztu(ji,jj,jk) = zeeu(ji,jj) * ( trb(ji+1,jj ,jk,jn) - trb(ji,jj,jk,jn) ) 136 ztv(ji,jj,jk) = zeev(ji,jj) * ( trb(ji ,jj+1,jk,jn) - trb(ji,jj,jk,jn) ) 137 END DO 138 END DO 139 #if defined key_partial_steps 140 141 DO jj = 1, jpj-1 142 DO ji = 1, jpi-1 143 ! last level 144 iku = MIN ( mbathy(ji,jj), mbathy(ji+1,jj ) ) - 1 145 ikv = MIN ( mbathy(ji,jj), mbathy(ji ,jj+1) ) - 1 146 IF( iku == jk ) THEN 147 ztu(ji,jj,jk) = zeeu(ji,jj) * gtu(ji,jj) 148 ENDIF 149 IF( ikv == jk ) THEN 150 ztv(ji,jj,jk) = zeev(ji,jj) * gtv(ji,jj) 151 ENDIF 152 END DO 153 END DO 154 #endif 137 155 138 156 ! Second derivative (divergence) 139 157 DO jj = 2, jpjm1 140 158 DO ji = fs_2, fs_jpim1 ! vector opt. 141 zlt(ji,jj) = zbtr(ji,jj) * ( ztu(ji,jj ) - ztu(ji-1,jj) + ztv(ji,jj) - ztv(ji,jj-1) )159 zlt(ji,jj) = zbtr(ji,jj) * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk) ) 142 160 END DO 143 161 END DO … … 159 177 DO jj = 1, jpjm1 160 178 DO ji = 1, fs_jpim1 ! vector opt. 161 ztu(ji,jj ) = zeeu(ji,jj) * ( zlt(ji+1,jj ) - zlt(ji,jj) )162 ztv(ji,jj ) = zeev(ji,jj) * ( zlt(ji ,jj+1) - zlt(ji,jj) )179 ztu(ji,jj,jk) = zeeu(ji,jj) * ( zlt(ji+1,jj ) - zlt(ji,jj) ) 180 ztv(ji,jj,jk) = zeev(ji,jj) * ( zlt(ji ,jj+1) - zlt(ji,jj) ) 163 181 END DO 164 182 END DO … … 168 186 DO ji = fs_2, fs_jpim1 ! vector opt. 169 187 ! horizontal diffusive trends 170 ztra = zbtr(ji,jj) * ( ztu(ji,jj ) - ztu(ji-1,jj) + ztv(ji,jj) - ztv(ji,jj-1) )188 ztra = zbtr(ji,jj) * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) + ztv(ji,jj,jk) - ztv(ji,jj-1,jk) ) 171 189 ! add it to the general tracer trends 172 190 tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztra 173 191 #if defined key_trc_diatrd 174 192 ! save the horizontal diffusive trends 175 trtrd(ji,jj,jk,jn,4) = ( ztu(ji,jj ) - ztu(ji-1,jj) ) * zbtr(ji,jj)176 trtrd(ji,jj,jk,jn,5) = ( ztv(ji,jj ) - ztv(ji-1,jj) ) * zbtr(ji,jj)193 trtrd(ji,jj,jk,jn,4) = ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) ) * zbtr(ji,jj) 194 trtrd(ji,jj,jk,jn,5) = ( ztv(ji,jj,jk) - ztv(ji-1,jj,jk) ) * zbtr(ji,jj) 177 195 #endif 178 196 END DO … … 185 203 CALL lbc_lnk( trtrd(1,1,1,jn,5), 'T', 1. ) 186 204 #endif 187 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)188 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )205 IF(l_ctl) THEN ! print mean trends (used for debugging) 206 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 189 207 WRITE(numout,*) ' trc/ldf - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 190 208 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcldf_bilapg.F90
r186 r202 14 14 !! * Modules used 15 15 USE oce_trc ! ocean dynamics and tracers variables 16 USE trc ! ocean space and time domainvariables17 USE lbclnk ! ocean lateral boundary condition (or mpp link)16 USE trc ! ocean passive tracers variables 17 USE lbclnk ! ocean lateral boundary condition (or mpp link) 18 18 19 19 IMPLICIT NONE … … 64 64 65 65 !! * Local declarations 66 INTEGER :: ji, jj, jk,jn ! dummy loop indices 66 INTEGER :: ji, jj, jk,jn ! dummy loop indices 67 REAL(wp) :: ztra ! workspace 67 68 REAL(wp), DIMENSION(jpi,jpj,jpk,jptra) :: & 68 69 wk1, wk2 ! work array used for rotated biharmonic … … 114 115 END DO ! End of slab 115 116 ! ! =============== 117 118 IF(l_ctl) THEN ! print mean trends (used for debugging) 119 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 120 WRITE(numout,*) ' trc/ldf - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 121 tra_ctl(jn) = ztra 122 ENDIF 123 116 124 END DO 117 125 … … 185 193 186 194 REAL(wp), DIMENSION(jpi,jpj) :: & 187 zftu, zftv , & ! workspace195 zftu, zftv , & ! workspace 188 196 zdkt, zdk1t 189 197 190 198 REAL(wp), DIMENSION(jpi,jpk) :: & 191 zftw, & ! workspace199 zftw, & ! workspace 192 200 zdit, zdjt, zdj1t 193 201 … … 222 230 223 231 zmku=1./MAX( tmask(ji+1,jj,jk )+tmask(ji,jj,jk+1) & 224 +tmask(ji+1,jj,jk+1)+tmask(ji,jj,jk ),1. )232 +tmask(ji+1,jj,jk+1)+tmask(ji,jj,jk ),1. ) 225 233 zmkv=1./MAX( tmask(ji,jj+1,jk )+tmask(ji,jj,jk+1) & 226 +tmask(ji,jj+1,jk+1)+tmask(ji,jj,jk ),1. )234 +tmask(ji,jj+1,jk+1)+tmask(ji,jj,jk ),1. ) 227 235 228 236 zcof1= -e2u(ji,jj) * uslp(ji,jj,jk) * zmku … … 231 239 zftu(ji,jj)= umask(ji,jj,jk) * & 232 240 ( zabe1 *( pt(ji+1,jj,jk,jn) - pt(ji,jj,jk,jn) ) & 233 + zcof1 *( zdkt (ji+1,jj) + zdk1t(ji,jj)&234 +zdk1t(ji+1,jj) + zdkt (ji,jj) ) )241 + zcof1 *( zdkt (ji+1,jj) + zdk1t(ji,jj) & 242 +zdk1t(ji+1,jj) + zdkt (ji,jj) ) ) 235 243 236 244 zftv(ji,jj)= vmask(ji,jj,jk) * & 237 245 ( zabe2 *( pt(ji,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) & 238 + zcof2 *( zdkt (ji,jj+1) + zdk1t(ji,jj)&239 +zdk1t(ji,jj+1) + zdkt (ji,jj) ) )246 + zcof2 *( zdkt (ji,jj+1) + zdk1t(ji,jj) & 247 +zdk1t(ji,jj+1) + zdkt (ji,jj) ) ) 240 248 END DO 241 249 END DO … … 284 292 zcof0 = e1t(ji,jj) * e2t(ji,jj) / fse3w(ji,jj,jk) & 285 293 * ( wslpi(ji,jj,jk) * wslpi(ji,jj,jk) & 286 + wslpj(ji,jj,jk) * wslpj(ji,jj,jk) )294 + wslpj(ji,jj,jk) * wslpj(ji,jj,jk) ) 287 295 288 296 zmku =1./MAX( umask(ji ,jj,jk-1)+umask(ji-1,jj,jk) & 289 +umask(ji-1,jj,jk-1)+umask(ji ,jj,jk), 1. )297 +umask(ji-1,jj,jk-1)+umask(ji ,jj,jk), 1. ) 290 298 291 299 zmkv =1./MAX( vmask(ji,jj ,jk-1)+vmask(ji,jj-1,jk) & 292 +vmask(ji,jj-1,jk-1)+vmask(ji,jj ,jk), 1. )300 +vmask(ji,jj-1,jk-1)+vmask(ji,jj ,jk), 1. ) 293 301 294 302 zcof3 = - e2t(ji,jj) * wslpi (ji,jj,jk) * zmku … … 297 305 zftw(ji,jk) = tmask(ji,jj,jk) * & 298 306 ( zcof0 * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) ) & 299 + zcof3 * ( zdit (ji ,jk-1) + zdit (ji-1,jk)&300 +zdit (ji-1,jk-1) + zdit (ji ,jk) )&301 + zcof4 * ( zdjt (ji ,jk-1) + zdj1t(ji ,jk)&302 +zdj1t(ji ,jk-1) + zdjt (ji ,jk) ) )307 + zcof3 * ( zdit (ji ,jk-1) + zdit (ji-1,jk) & 308 +zdit (ji-1,jk-1) + zdit (ji ,jk) ) & 309 + zcof4 * ( zdjt (ji ,jk-1) + zdj1t(ji ,jk) & 310 +zdj1t(ji ,jk-1) + zdjt (ji ,jk) ) ) 303 311 END DO 304 312 END DO -
trunk/NEMO/TOP_SRC/TRP/trcldf_iso.F90
r186 r202 14 14 !! * Modules used 15 15 USE oce_trc ! ocean dynamics and tracers variables 16 USE trc ! ocean space and time domain variables 17 USE lbclnk 16 USE trc ! ocean passive tracers variables 18 17 19 18 IMPLICIT NONE … … 200 199 END DO ! End of slab 201 200 ! ! =============== 202 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)203 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )201 IF(l_ctl) THEN ! print mean trends (used for debugging) 202 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 204 203 WRITE(numout,*) ' trc/ldf - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 205 204 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcldf_iso_zps.F90
r186 r202 12 12 !!---------------------------------------------------------------------- 13 13 !! * Modules used 14 USE oce_trc ! ocean dynamics and active tracers 15 USE trc ! ocean space and time domain 16 USE lbclnk 14 USE oce_trc ! ocean dynamics and active tracers variables 15 USE trc ! ocean passive tracers variables 17 16 18 17 IMPLICIT NONE … … 108 107 IF(lwp) WRITE(numout,*) 'trc_ldf_iso_zps : iso neutral laplacian diffusion in ' 109 108 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~ z-coordinates with partial steps' 110 #if defined key_ diaeiv109 #if defined key_trcldf_eiv && defined key_diaeiv 111 110 u_trc_eiv(:,:,:) = 0.e0 112 111 v_trc_eiv(:,:,:) = 0.e0 … … 239 238 END DO ! End of slab 240 239 ! ! =============== 241 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)242 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )240 IF(l_ctl) THEN ! print mean trends (used for debugging) 241 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 243 242 WRITE(numout,*) ' trc/ldf - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 244 243 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trcldf_lap.F90
r186 r202 10 10 !!---------------------------------------------------------------------- 11 11 !! * Modules used 12 USE oce_trc ! ocean dynamics and active tracers 13 USE trc ! ocean space and time domain 14 USE lbclnk 12 USE oce_trc ! ocean dynamics and active tracers variables 13 USE trc ! ocean passive tracers variables 15 14 16 15 IMPLICIT NONE … … 77 76 78 77 REAL(wp) :: & 79 ztrax, ztray 80 ! workspace 78 ztra, ztrax, ztray ! workspace 81 79 !!---------------------------------------------------------------------- 82 80 … … 139 137 ! ! ============= 140 138 139 IF(l_ctl) THEN ! print mean trends (used for debugging) 140 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 141 WRITE(numout,*) ' trc/ldf - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 142 tra_ctl(jn) = ztra 143 ENDIF 144 141 145 END DO 142 146 -
trunk/NEMO/TOP_SRC/TRP/trcnxt.F90
r186 r202 10 10 !! * Modules used 11 11 USE oce_trc ! ocean dynamics and tracers variables 12 USE trc 12 USE trc ! ocean passive tracers variables 13 13 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 14 USE trctrp_lec 14 USE trctrp_lec ! pasive tracers transport 15 15 16 16 IMPLICIT NONE … … 64 64 !! * Local declarations 65 65 INTEGER :: ji, jj, jk,jn ! dummy loop indices 66 REAL(wp) :: zfact 66 REAL(wp) :: zfact, ztra ! temporary scalar 67 67 !!---------------------------------------------------------------------- 68 68 … … 93 93 94 94 #if defined key_obc 95 96 ????????Passive tracers and key_obc not yet implemented 97 ????????Forced compiled error 98 95 IF(lwp) WRITE(numout,cform_err) 96 IF(lwp) WRITE(numout,*) ' Passive tracers and Open Boundary condition can not be used together ' 97 IF(lwp) WRITE(numout,*) ' Check in trc_nxt routine' 98 nstop = nstop + 1 99 99 #endif 100 100 … … 137 137 END DO ! End of slab 138 138 ! ! =============== 139 IF( l_ctl .AND. lwp ) THEN ! print mean field (used for debugging) 140 WRITE(numout,*) ' trc/nxt - ',ctrcnm(jn),' : ',SUM( trn(:,:,:,jn) * tmask(:,:,:) ) 139 IF(l_ctl) THEN ! print mean field (used for debugging) 140 ztra = SUM( trn(2:nictl,2:njctl,1:jpkm1,jn)*tmask(2:nictl,2:njctl,1:jpkm1) ) 141 WRITE(numout,*) ' trc/nxt - ',ctrcnm(jn),' : ', ztra 141 142 ENDIF 142 143 -
trunk/NEMO/TOP_SRC/TRP/trcrad.F90
r186 r202 10 10 !! * Modules used 11 11 USE oce_trc ! ocean dynamics and tracers variables 12 USE trc 12 USE trc ! ocean passive tracers variables 13 13 14 14 IMPLICIT NONE … … 44 44 !! * Local declarations 45 45 INTEGER :: ji, jj, jk, jn ! dummy loop indices 46 REAL(wp) :: ztra 46 47 #if defined key_trc_hamocc3 || defined key_trc_pisces 47 48 REAL(wp) :: zvolk, trcorb, trmasb ,trcorn, trmasn … … 158 159 #endif 159 160 DO jn = 1, jptra 160 IF( l_ctl .AND. lwp ) THEN ! print mean field (used for debugging) 161 WRITE(numout,*) ' trc/rad - ',ctrcnm(jn),' : ',SUM( trn(:,:,:,jn) * tmask(:,:,:) ) 161 IF(l_ctl) THEN ! print mean field (used for debugging) 162 ztra = SUM( trn(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 163 WRITE(numout,*) ' trc/rad - ',ctrcnm(jn),' : ', ztra 162 164 ENDIF 163 165 ENDDO … … 168 170 #else 169 171 !!---------------------------------------------------------------------- 170 !! Dummy module : Rigid-lid case172 !! Dummy module : NO passive tracer 171 173 !!---------------------------------------------------------------------- 172 174 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trcsbc.F90
r186 r202 9 9 !!---------------------------------------------------------------------- 10 10 !! * Modules used 11 USE oce_trc ! ocean dynamics and active tracers 12 USE trc ! ocean passive tracers11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE trc ! ocean passive tracers variables 13 13 14 14 IMPLICIT NONE … … 87 87 END DO 88 88 89 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)90 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )91 WRITE(numout,*) ' trc/sbc - ',ctrcnm(jn),' : ', ztra 89 IF(l_ctl) THEN ! print mean trends (used for debugging) 90 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 91 WRITE(numout,*) ' trc/sbc - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 92 92 tra_ctl(jn) = ztra 93 93 ENDIF … … 98 98 #else 99 99 !!---------------------------------------------------------------------- 100 !! Dummy module : Rigid-lid case100 !! Dummy module : NO passive tracer 101 101 !!---------------------------------------------------------------------- 102 102 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trcstp.F90
r186 r202 9 9 !!---------------------------------------------------------------------- 10 10 !! * Modules used 11 !! * Modules used12 USE oce_trc ! ocean dynamics variables13 USE trc ! passive tracers variables14 USE trctrp ! passive tracers transport 11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE trc ! ocean passive tracers variables 13 USE trctrp ! passive tracers transport 14 15 15 IMPLICIT NONE 16 16 PRIVATE … … 59 59 #else 60 60 !!---------------------------------------------------------------------- 61 !! Default key N opassive tracers61 !! Default key NO passive tracers 62 62 !!---------------------------------------------------------------------- 63 63 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trctrp.F90
r186 r202 2 2 !!====================================================================== 3 3 !! *** MODULE trctrp *** 4 !! Ocean Physics : manage ofpassive tracer transport4 !! Ocean Physics : manage the passive tracer transport 5 5 !!====================================================================== 6 6 #if defined key_passivetrc … … 9 9 !!---------------------------------------------------------------------- 10 10 !! * Modules used 11 USE oce_trc ! ocean dynamics variables 12 USE trc ! passive tracers variables 13 USE lbclnk 11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE trc ! ocean passive tracers variables 14 13 15 USE trctrp_lec 14 USE trctrp_lec ! passive tracers transport 16 15 17 USE trcbbl ! bottom boundary layer (trc_bbl routine)18 USE trcdmp ! internal damping (trc_dmp routine)16 USE trcbbl ! bottom boundary layer (trc_bbl routine) 17 USE trcdmp ! internal damping (trc_dmp routine) 19 18 20 USE trcldf_bilapg ! lateral mixing (trc_ldf_bilapg routine)21 USE trcldf_bilap ! lateral mixing (trc_ldf_bilap routine)22 USE trcldf_iso ! lateral mixing (trc_ldf_iso routine)23 USE trcldf_iso_zps ! lateral mixing (trc_ldf_iso_zps routine)24 USE trcldf_lap ! lateral mixing (trc_ldf_lap routine)19 USE trcldf_bilapg ! lateral mixing (trc_ldf_bilapg routine) 20 USE trcldf_bilap ! lateral mixing (trc_ldf_bilap routine) 21 USE trcldf_iso ! lateral mixing (trc_ldf_iso routine) 22 USE trcldf_iso_zps ! lateral mixing (trc_ldf_iso_zps routine) 23 USE trcldf_lap ! lateral mixing (trc_ldf_lap routine) 25 24 26 USE trcnxt ! time-stepping (trc_nxt routine)27 USE trcrad ! positivity (trc_rad routine)25 USE trcnxt ! time-stepping (trc_nxt routine) 26 USE trcrad ! positivity (trc_rad routine) 28 27 29 USE trcadv_cen2 ! 2nd order centered advection (trc_adv_cen2 routine)30 USE trcadv_muscl ! MUSCL advection (trc_adv_muscl routine)28 USE trcadv_cen2 ! 2nd order centered advection (trc_adv_cen2 routine) 29 USE trcadv_muscl ! MUSCL advection (trc_adv_muscl routine) 31 30 USE trcadv_muscl2 ! MUSCL2 advection (trc_adv_muscl2 routine) 32 USE trcadv_tvd ! TVD advection (trc_adv_tvd routine)31 USE trcadv_tvd ! TVD advection (trc_adv_tvd routine) 33 32 USE trcadv_smolar ! SMOLAR advection (trc_adv_smolar routine) 34 33 35 USE trczdf_exp ! vertical diffusion (trc_zdf_exp routine)36 USE trczdf_imp ! vertical diffusion (trc_zdf_exp routine)37 USE trczdf_iso ! vertical diffusion (trc_zdf_exp routine)38 USE trczdf_iso_vopt ! vertical diffusion (trc_zdf_exp routine)39 USE trcsbc ! surface boundary condition (trc_sbc routine)34 USE trczdf_exp ! vertical diffusion (trc_zdf_exp routine) 35 USE trczdf_imp ! vertical diffusion (trc_zdf_exp routine) 36 USE trczdf_iso ! vertical diffusion (trc_zdf_exp routine) 37 USE trczdf_iso_vopt ! vertical diffusion (trc_zdf_exp routine) 38 USE trcsbc ! surface boundary condition (trc_sbc routine) 40 39 41 USE zpshde_trc ! partial step: hor. derivative (zps_hde_trc routine)40 USE zpshde_trc ! partial step: hor. derivative (zps_hde_trc routine) 42 41 43 42 … … 71 70 !! * Arguments 72 71 INTEGER, INTENT( in ) :: kt ! ocean time-step index 73 74 75 72 !! --------------------------------------------------------------------- 76 77 73 78 74 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 82 78 83 79 84 CALL trc_sbc( kt ) ! surface boundary condition 80 CALL trc_sbc( kt ) ! surface boundary condition 81 # if defined key_trcbbc 82 IF(lwp) WRITE(numout,cform_err) 83 IF(lwp) WRITE(numout,*) ' Bottom heat flux not yet implemented' 84 IF(lwp) WRITE(numout,*) ' With passive tracers. ' 85 IF(lwp) WRITE(numout,*) ' Check trc_trp routine' 86 nstop = nstop + 1 87 # endif 88 ! ! bottom boundary condition 89 IF( lk_trcbbl_dif ) CALL trc_bbl_dif( kt ) ! diffusive bottom boundary layer scheme 90 IF( lk_trcbbl_adv ) CALL trc_bbl_adv( kt ) ! advective (and/or diffusive) bottom boundary layer scheme 91 92 IF( lk_trcdmp ) CALL trc_dmp( kt ) ! internal damping trends 85 93 86 87 #if defined key_trabbc 88 ????????Passive tracers and key_obc not yet implemented 89 ????????Forced compiled error 90 #endif 91 92 IF( lk_trcbbl_dif ) CALL trc_bbl_dif( kt ) ! diffusive bottom boundary layer scheme 93 IF( lk_trcbbl_adv ) CALL trc_bbl_adv( kt ) ! advective (and/or diffusive) bottom boundary layer scheme 94 95 96 IF( lk_trcdmp ) CALL trc_dmp( kt ) ! internal damping trends 97 98 ! ! horizontal & vertical advection 99 IF( ln_trcadv_cen2 ) CALL trc_adv_cen2 ( kt ) ! 2nd order centered scheme 100 IF( ln_trcadv_muscl ) CALL trc_adv_muscl ( kt ) ! MUSCL scheme 101 IF( ln_trcadv_muscl2 ) CALL trc_adv_muscl2( kt ) ! MUSCL2 scheme 102 IF( ln_trcadv_tvd ) CALL trc_adv_tvd ( kt ) ! TVD scheme 103 IF( ln_trcadv_smolar ) CALL trc_adv_smolar( kt ) 104 94 ! ! horizontal & vertical advection 95 IF( ln_trcadv_cen2 ) CALL trc_adv_cen2 ( kt ) ! 2nd order centered scheme 96 IF( ln_trcadv_muscl ) CALL trc_adv_muscl ( kt ) ! MUSCL scheme 97 IF( ln_trcadv_muscl2 ) CALL trc_adv_muscl2( kt ) ! MUSCL2 scheme 98 IF( ln_trcadv_tvd ) CALL trc_adv_tvd ( kt ) ! TVD scheme 99 IF( ln_trcadv_smolar ) CALL trc_adv_smolar( kt ) ! SMOLARKIEWICZ scheme 105 100 106 101 IF( n_cla == 1 ) THEN 107 WRITE(numout,*) ' Cross Land Advection not yet implemented' 108 WRITE(numout,*) ' With Passive tracers. STOPPPPPP !!!!' 109 STOP 102 IF(lwp) WRITE(numout,cform_err) 103 IF(lwp) WRITE(numout,*) ' Cross Land Advection not yet implemented' 104 IF(lwp) WRITE(numout,*) ' With Passive tracers. n_cla = ', n_cla 105 IF(lwp) WRITE(numout,*) ' Check trc_trp routine' 106 nstop = nstop + 1 110 107 ENDIF 111 108 112 ! 113 ! lateral mixing 114 IF( l_trcldf_bilapg ) CALL trc_ldf_bilapg ( kt ) ! s-coord. horizontal bilaplacian 115 IF( l_trcldf_bilap ) CALL trc_ldf_bilap ( kt ) ! iso-level bilaplacian 116 IF( l_trcldf_iso ) CALL trc_ldf_iso ( kt ) ! iso-neutral laplacian 117 IF( l_trcldf_iso_zps ) CALL trc_ldf_iso_zps( kt ) ! partial step iso-neutral laplacian 118 IF( l_trcldf_lap ) CALL trc_ldf_lap ( kt ) ! iso-level laplacian 109 ! ! lateral mixing 110 IF( l_trcldf_bilapg ) CALL trc_ldf_bilapg ( kt ) ! s-coord. horizontal bilaplacian 111 IF( l_trcldf_bilap ) CALL trc_ldf_bilap ( kt ) ! iso-level bilaplacian 112 IF( l_trcldf_iso ) CALL trc_ldf_iso ( kt ) ! iso-neutral laplacian 113 IF( l_trcldf_iso_zps ) CALL trc_ldf_iso_zps( kt ) ! partial step iso-neutral laplacian 114 IF( l_trcldf_lap ) CALL trc_ldf_lap ( kt ) ! iso-level laplacian 119 115 120 ! ! vertical diffusion121 IF( l_trczdf_exp ) CALL trc_zdf_exp( kt ) ! explicit time stepping (time splitting scheme)122 IF( l_trczdf_imp ) CALL trc_zdf_imp( kt ) ! implicit time stepping (euler backward)123 IF( l_trczdf_iso ) CALL trc_zdf_iso( kt ) ! isopycnal124 IF( l_trczdf_iso_vo ) CALL trc_zdf_iso_vopt( kt ) ! vector opt. isopycnal116 ! ! vertical diffusion 117 IF( l_trczdf_exp ) CALL trc_zdf_exp( kt ) ! explicit time stepping (time splitting scheme) 118 IF( l_trczdf_imp ) CALL trc_zdf_imp( kt ) ! implicit time stepping (euler backward) 119 IF( l_trczdf_iso ) CALL trc_zdf_iso( kt ) ! isopycnal 120 IF( l_trczdf_iso_vo ) CALL trc_zdf_iso_vopt( kt ) ! vector opt. isopycnal 125 121 126 122 CALL trc_nxt( kt ) ! tracer fields at next time step … … 137 133 #else 138 134 !!---------------------------------------------------------------------- 139 !! Dummy module : Rigid-lid case135 !! Dummy module : NO passive tracers 140 136 !!---------------------------------------------------------------------- 141 137 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trctrp_ctl.F90
r186 r202 9 9 !!---------------------------------------------------------------------- 10 10 !! * Modules used 11 USE oce_trc ! ocean dynamics and active tracers 12 USE trc ! ocean space and time domain13 USE trctrp_lec 11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE trc ! ocean passive tracers variables 13 USE trctrp_lec ! passive tracers transport 14 14 15 15 IMPLICIT NONE … … 23 23 LOGICAL, PARAMETER :: lk_trcldf_eiv = .TRUE. !: eddy induced velocity flag 24 24 #else 25 LOGICAL, PARAMETER :: lk_trcldf_eiv = .FALSE. 25 LOGICAL, PARAMETER :: lk_trcldf_eiv = .FALSE. !: eddy induced velocity flag 26 26 #endif 27 27 … … 40 40 !! 41 41 !! History : 42 !!43 42 !! 9.0 ! 04-0. (C. Ethe) 44 43 !!---------------------------------------------------------------------- … … 385 384 #else 386 385 !!---------------------------------------------------------------------- 387 !! Dummy module : Rigid-lid case386 !! Dummy module : NO passive tracer 388 387 !!---------------------------------------------------------------------- 389 388 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trctrp_lec.F90
r186 r202 9 9 !!---------------------------------------------------------------------- 10 10 !! * Modules used 11 USE oce_trc ! ocean dynamics and active tracers 12 USE trc ! ocean space and time domain11 USE oce_trc ! ocean dynamics and active tracers variables 12 USE trc ! ocean passive tracers variables 13 13 14 14 IMPLICIT NONE … … 22 22 !! Advection 23 23 LOGICAL, PUBLIC :: & 24 ln_trcadv_cen2 = .FALSE. , & !2nd order centered scheme flag25 ln_trcadv_tvd = .FALSE. , & !TVD scheme flag26 ln_trcadv_muscl = .FALSE. , & !MUSCL scheme flag27 ln_trcadv_muscl2 = .FALSE. , & !MUSCL2 scheme flag28 ln_trcadv_smolar = .TRUE. !Smolarkiewicz scheme flag24 ln_trcadv_cen2 = .FALSE. , & !!: 2nd order centered scheme flag 25 ln_trcadv_tvd = .FALSE. , & !: TVD scheme flag 26 ln_trcadv_muscl = .FALSE. , & !: MUSCL scheme flag 27 ln_trcadv_muscl2 = .FALSE. , & !: MUSCL2 scheme flag 28 ln_trcadv_smolar = .TRUE. !: Smolarkiewicz scheme flag 29 29 30 30 !! Lateral diffusion … … 37 37 ln_trcldf_iso = .TRUE. !: iso-neutral direction 38 38 39 LOGICAL , PUBLIC :: & 39 LOGICAL , PUBLIC :: & !!: flag of the lateral diff. scheme used 40 40 l_trcldf_lap , & !: iso-level laplacian operator 41 41 l_trcldf_bilap , & !: iso-level bilaplacian operator … … 47 47 48 48 !! Vertical diffusion 49 LOGICAL , PUBLIC :: & !!!nam_trczdf: vertical diffusion50 ln_trczdf_exp = .FALSE. !explicit vertical diffusion scheme flag51 52 INTEGER, PUBLIC :: & !!: namzdf: vertical diffusion53 n_trczdf_exp = 3 !: number of sub-time step (explicit time stepping)54 55 LOGICAL, PUBLIC :: &!:56 l_trczdf_exp = .FALSE. , & !: ???57 l_trczdf_imp = .FALSE. !:49 LOGICAL , PUBLIC :: & !!: nam_trczdf: vertical diffusion 50 ln_trczdf_exp = .FALSE. !: explicit vertical diffusion scheme flag 51 52 INTEGER, PUBLIC :: & !!: namzdf: vertical diffusion 53 n_trczdf_exp = 3 !: number of sub-time step (explicit time stepping) 54 55 LOGICAL, PUBLIC :: & !: 56 l_trczdf_exp = .FALSE. , & !: explicit vertical diffusion 57 l_trczdf_imp = .FALSE. !: implicit vertical diffusion 58 58 59 59 #if defined key_trcdmp 60 60 !! Newtonian damping 61 INTEGER , PUBLIC :: & !! !* newtonian damping namelist (nam_trcdmp) *62 ndmptr = -1 , & != 0/-1/'latitude' for damping over tracers63 ndmpftr = 2 , & != 1 create a damping.coeff NetCDF file64 nmldmptr = 0 != 0/1/2 flag for damping in the mixed layer65 66 REAL(wp) , PUBLIC :: & !! !* newtonian damping namelist *67 sdmptr = 50., & !surface time scale for internal damping (days)68 bdmptr = 360., & !bottom time scale for internal damping (days)69 hdmptr = 800. !depth of transition between sdmp and bdmp (meters)61 INTEGER , PUBLIC :: & !!: * newtonian damping namelist (nam_trcdmp) * 62 ndmptr = -1 , & !: = 0/-1/'latitude' for damping over tracers 63 ndmpftr = 2 , & !: = 1 create a damping.coeff NetCDF file 64 nmldmptr = 0 !: = 0/1/2 flag for damping in the mixed layer 65 66 REAL(wp) , PUBLIC :: & !!: * newtonian damping namelist * 67 sdmptr = 50., & !: surface time scale for internal damping (days) 68 bdmptr = 360., & !: bottom time scale for internal damping (days) 69 hdmptr = 800. !: depth of transition between sdmp and bdmp (meters) 70 70 #endif 71 71 !!---------------------------------------------------------------------- … … 82 82 !! 83 83 !! History : 84 !!85 84 !! 9.0 ! 04-03 (C. Ethe) 86 85 !!---------------------------------------------------------------------- … … 193 192 #else 194 193 !!---------------------------------------------------------------------- 195 !! Dummy module : Rigid-lid case194 !! Dummy module : NO passive tracer 196 195 !!---------------------------------------------------------------------- 197 196 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trczdf_exp.F90
r186 r202 11 11 !!---------------------------------------------------------------------- 12 12 !! * Modules used 13 USE oce_trc ! ocean dynamics and active tracers14 USE trc ! ocean space and time domain15 USE trctrp_lec 13 USE oce_trc ! ocean dynamics and active tracers variables 14 USE trc ! ocean passive tracers variables 15 USE trctrp_lec ! passive tracers transport 16 16 17 17 IMPLICIT NONE … … 163 163 #else 164 164 !!---------------------------------------------------------------------- 165 !! Dummy module : Rigid-lid case165 !! Dummy module : NO passive tracer 166 166 !!---------------------------------------------------------------------- 167 167 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90
r186 r202 10 10 !!---------------------------------------------------------------------- 11 11 !! * Modules used 12 USE oce_trc ! ocean dynamics and active tracers 13 USE trc ! ocean space and time domain14 USE trctrp_lec 12 USE oce_trc ! ocean dynamics and active tracers variables 13 USE trc ! ocean passive tracers variables 14 USE trctrp_lec ! passive tracers transport 15 15 16 16 IMPLICIT NONE … … 122 122 END DO 123 123 END DO 124 END DO124 END DO 125 125 126 126 ! Surface boudary conditions … … 181 181 END DO 182 182 183 IF( l_ctl .AND. lwp) THEN183 IF(l_ctl) THEN 184 184 DO jk = 1, jpkm1 185 185 DO jj = 2, jpjm1 … … 191 191 ENDIF 192 192 193 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)194 ztra = SUM( ztrd(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )193 IF(l_ctl) THEN ! print mean trends (used for debugging) 194 ztra = SUM( ztrd(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 195 195 WRITE(numout,*) ' trc/zdf - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 196 196 tra_ctl(jn) = ztra … … 203 203 #else 204 204 !!---------------------------------------------------------------------- 205 !! Dummy module : Rigid-lid case205 !! Dummy module : NO passive tracer 206 206 !!---------------------------------------------------------------------- 207 207 CONTAINS -
trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90
r186 r202 13 13 !!---------------------------------------------------------------------- 14 14 !! * Modules used 15 USE oce_trc ! ocean dynamics and tracers variables16 USE trc ! ocean space and time domainvariables17 USE lbclnk ! ocean lateral boundary conditions (or mpp link)18 USE trctrp_lec 15 USE oce_trc ! ocean dynamics and tracers variables 16 USE trc ! ocean passive tracers variables 17 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 USE trctrp_lec ! passive tracers transport 19 19 20 20 IMPLICIT NONE … … 342 342 ! ! =============== 343 343 344 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)345 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )344 IF(l_ctl) THEN ! print mean trends (used for debugging) 345 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 346 346 WRITE(numout,*) ' trc/zdf 1 - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 347 347 tra_ctl(jn) = ztra … … 433 433 434 434 435 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)436 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )435 IF(l_ctl) THEN ! print mean trends (used for debugging) 436 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 437 437 WRITE(numout,*) ' trc/zdf 2 - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 438 438 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90
r186 r202 17 17 !! * Modules used 18 18 USE oce_trc ! ocean dynamics and tracers variables 19 USE trc ! ocean space and time domainvariables19 USE trc ! ocean passive tracers variables 20 20 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 USE trctrp_lec 21 USE trctrp_lec ! passive tracers transport 22 22 23 23 IMPLICIT NONE … … 51 51 !! * Arguments 52 52 INTEGER, INTENT( in ) :: kt ! ocean time-step index 53 !! * Local variables54 53 !!--------------------------------------------------------------------- 55 54 !! OPA 8.5, LODYC-IPSL (2002) … … 315 314 # endif 316 315 #endif 317 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)318 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )316 IF(l_ctl) THEN ! print mean trends (used for debugging) 317 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 319 318 WRITE(numout,*) ' trc/zdf 1 - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 320 319 tra_ctl(jn) = ztra … … 549 548 END DO 550 549 551 IF( l_ctl .AND. lwp) THEN ! print mean trends (used for debugging)552 ztra = SUM( tra(2: jpim1,2:jpjm1,1:jpkm1,jn) * tmask(2:jpim1,2:jpjm1,1:jpkm1) )550 IF(l_ctl) THEN ! print mean trends (used for debugging) 551 ztra = SUM( tra(2:nictl,2:njctl,1:jpkm1,jn) * tmask(2:nictl,2:njctl,1:jpkm1) ) 553 552 WRITE(numout,*) ' trc/zdf 2 - ',ctrcnm(jn),' : ', ztra-tra_ctl(jn) 554 553 tra_ctl(jn) = ztra -
trunk/NEMO/TOP_SRC/TRP/zpshde_trc.F90
r186 r202 13 13 !! * Modules used 14 14 USE oce_trc ! ocean dynamics and tracers variables 15 USE trc ! physical constants15 USE trc ! ocean passive tracers variables 16 16 USE lbclnk ! lateral boundary conditions (or mpp link) 17 17
Note: See TracChangeset
for help on using the changeset viewer.