Changeset 2120
- Timestamp:
- 2010-09-24T16:12:49+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/TRA/tranxt.F90
r2104 r2120 32 32 USE trdtra ! ocean active tracers trends 33 33 USE phycst 34 USE obc_oce 34 35 USE obctra ! open boundary condition (obc_tra routine) 35 36 USE bdytra ! Unstructured open boundary condition (bdy_tra routine) … … 40 41 USE agrif_opa_update 41 42 USE agrif_opa_interp 42 USE obc_oce43 43 44 44 IMPLICIT NONE … … 106 106 CALL tra_unswap 107 107 #endif 108 108 109 #if defined key_obc 109 110 IF( lk_obc ) CALL obc_tra( kt ) ! OBC open boundaries 110 111 #endif 111 #if defined key_bdy 112 CALL bdy_tra( kt )! BDY open boundaries112 #if defined key_bdy 113 IF( lk_bdy ) CALL bdy_tra( kt ) ! BDY open boundaries 113 114 #endif 114 115 #if defined key_agrif 115 CALL Agrif_tra ! AGRIF zoom boundaries 116 #endif 116 CALL Agrif_tra ! AGRIF zoom boundaries 117 #endif 118 117 119 #if defined key_obc || defined key_bdy || defined key_agrif 118 120 CALL tra_swap … … 199 201 ENDIF 200 202 ! 201 ! ! ----------------------- ! 202 IF( ln_dynhpg_imp ) THEN ! semi-implicite hpg case ! 203 ! 204 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler time-stepping at first time-step 205 ! ! (only swap) 206 DO jn = 1, kjpt 207 DO jk = 1, jpkm1 208 ptn(:,:,jk,jn) = pta(:,:,jk,jn) ! ptb <-- ptn 209 END DO 210 END DO 211 ! 212 ELSE ! general case (Leapfrog + Asselin filter 213 ! 203 214 ! ! ----------------------- ! 204 ! 205 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler time-stepping at first time-step 206 ! ! (only swap) 207 DO jn = 1, kjpt 208 DO jk = 1, jpkm1 209 DO jj = 1, jpj 210 DO ji = 1, jpi 211 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptb <-- ptn 212 END DO 213 END DO 214 END DO 215 END DO 216 ELSE ! general case (Leapfrog + Asselin filter 215 IF( ln_dynhpg_imp ) THEN ! semi-implicite hpg case ! 216 ! ! ----------------------- ! 217 217 DO jn = 1, kjpt 218 218 DO jk = 1, jpkm1 … … 220 220 DO ji = 1, jpi 221 221 ztm = 0.25 * ( pta(ji,jj,jk,jn) + 2.* ptn(ji,jj,jk,jn) + ptb(ji,jj,jk,jn) ) ! mean pt 222 ztf = atfp * ( pta(ji,jj,jk,jn) - 2.* ptn(ji,jj,jk,jn) + pt n(ji,jj,jk,jn) ) ! Asselin filter on pt222 ztf = atfp * ( pta(ji,jj,jk,jn) - 2.* ptn(ji,jj,jk,jn) + ptb(ji,jj,jk,jn) ) ! Asselin filter on pt 223 223 ptb(ji,jj,jk,jn) = ptn(ji,jj,jk,jn) + ztf ! ptb <-- filtered ptn 224 224 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptn <-- pta … … 228 228 END DO 229 229 END DO 230 ENDIF 231 ! ! ----------------------- ! 232 ELSE ! explicit hpg case ! 233 ! ! ----------------------- ! 234 ! 235 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler time-stepping at first time-step 236 DO jn = 1, kjpt 237 DO jk = 1, jpkm1 238 DO jj = 1, jpj 239 DO ji = 1, jpi 240 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! ptn <-- pta 241 END DO 242 END DO 243 END DO 244 END DO 245 ELSE ! general case (Leapfrog + Asselin filter 230 ! ! ----------------------- ! 231 ELSE ! explicit hpg case ! 232 ! ! ----------------------- ! 246 233 DO jn = 1, kjpt 247 234 DO jk = 1, jpkm1 … … 255 242 END DO 256 243 END DO 244 ! 257 245 ENDIF 258 246 ! … … 304 292 ENDIF 305 293 ! 306 ! ! ----------------------- ! 307 IF( ln_dynhpg_imp ) THEN ! semi-implicite hpg case ! 308 ! ! ----------------------- ! 294 ! 295 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler time-stepping at first time-step 296 ! ! (only swap) 297 DO jn = 1, kjpt 298 DO jk = 1, jpkm1 299 ptn(:,:,jk,jn) = pta(:,:,jk,jn) ! ptb <-- ptn 300 END DO 301 END DO 302 ! 303 ELSE ! general case (Leapfrog + Asselin filter 309 304 ! 310 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler time-stepping at first time-step 311 DO jn = 1, kjpt ! (only swap) 312 DO jk = 1, jpkm1 313 DO jj = 1, jpj 314 DO ji = 1, jpi 315 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! tn <-- ta 316 END DO 317 END DO 318 END DO 319 END DO 320 ELSE 321 DO jn = 1, kjpt ! (only swap) 305 ! ! ----------------------- ! 306 IF( ln_dynhpg_imp ) THEN ! semi-implicite hpg case ! 307 ! ! ----------------------- ! 308 DO jn = 1, kjpt 322 309 DO jk = 1, jpkm1 323 310 DO jj = 1, jpj … … 351 338 END DO 352 339 END DO 353 ENDIF 354 ! ! ----------------------- ! 355 ELSE ! explicit hpg case ! 356 ! ! ----------------------- ! 357 ! 358 IF( neuler == 0 .AND. kt == nit000 ) THEN ! case of Euler time-stepping at first time-step 359 DO jn = 1, kjpt ! No filter nor thickness weighting computation required 360 DO jk = 1, jpkm1 ! ONLY swap 361 DO jj = 1, jpj 362 DO ji = 1, jpi 363 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! tn <-- ta 364 END DO 365 END DO 366 END DO 367 END DO 368 ! ! general case (Leapfrog + Asselin filter) 369 ELSE ! apply filter on thickness weighted tracer and swap 340 ! ! ----------------------- ! 341 ELSE ! explicit hpg case ! 342 ! ! ----------------------- ! 370 343 DO jn = 1, kjpt 371 344 DO jk = 1, jpkm1 … … 388 361 ztf = ( ztcn + ztc_f ) * ze3fr 389 362 ! ! swap of arrays 390 ptb(ji,jj,jk,jn) = ztf ! tb <-- tn filtered391 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! tn <-- ta363 ptb(ji,jj,jk,jn) = ztf ! tb <-- tn filtered 364 ptn(ji,jj,jk,jn) = pta(ji,jj,jk,jn) ! tn <-- ta 392 365 END DO 393 366 END DO 394 367 END DO 395 368 END DO 369 ! 396 370 ENDIF 371 ! 397 372 ENDIF 398 373 !
Note: See TracChangeset
for help on using the changeset viewer.