- Timestamp:
- 2011-02-18T13:49:27+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r2528 r2590 39 39 PUBLIC dyn_vor ! routine called by step.F90 40 40 PUBLIC dyn_vor_init ! routine called by opa.F90 41 PUBLIC dyn_vor_alloc ! routine called by nemogcm.F90 41 42 42 43 ! !!* Namelist namdyn_vor: vorticity term … … 50 51 INTEGER :: nrvm = 2 ! =2 relative vorticity ; =3 metric term 51 52 INTEGER :: ntot = 4 ! =4 total vorticity (relative + planetary) ; =5 coriolis + metric term 53 54 !!$#if defined key_vvl 55 !!$ REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3f 56 !!$#else 57 !!$ REAL(wp), ALLOCATABLE, DIMENSION(jpi,jpj,jpk), SAVE :: ze3f 58 !!$#endif 59 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ze3f 52 60 53 61 !! * Substitutions … … 61 69 62 70 CONTAINS 71 72 FUNCTION dyn_vor_alloc() 73 !!---------------------------------------------------------------------- 74 !! *** Routine dyn_vor_alloc *** 75 !!---------------------------------------------------------------------- 76 IMPLICIT none 77 INTEGER :: dyn_vor_alloc 78 !!---------------------------------------------------------------------- 79 80 ALLOCATE(ze3f(jpi,jpj,jpk), Stat=dyn_vor_alloc) 81 82 IF(dyn_vor_alloc /= 0 )THEN 83 CALL ctl_warn('dyn_vor_alloc: failed to allocate array ze3f.') 84 END IF 85 86 END FUNCTION dyn_vor_alloc 87 63 88 64 89 SUBROUTINE dyn_vor( kt ) … … 205 230 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 206 231 !!---------------------------------------------------------------------- 232 USE wrk_nemo, ONLY: wrk_use, wrk_release 233 USE wrk_nemo, ONLY: zwx => wrk_2d_1, zwy => wrk_2d_2, zwz => wrk_2d_3 234 !! 207 235 INTEGER , INTENT(in ) :: kt ! ocean time-step index 208 236 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; … … 214 242 REAL(wp) :: zx1, zy1, zfact2 ! temporary scalars 215 243 REAL(wp) :: zx2, zy2 ! " " 216 REAL(wp), DIMENSION(jpi,jpj) :: zwx, zwy, zwz ! temporary 2D workspace 217 !!---------------------------------------------------------------------- 244 !!---------------------------------------------------------------------- 245 246 IF(.NOT. wrk_use(2, 1,2,3))THEN 247 CALL ctl_stop('dyn:vor_ene: requested workspace arrays unavailable.') 248 RETURN 249 END IF 218 250 219 251 IF( kt == nit000 ) THEN … … 280 312 END DO ! End of slab 281 313 ! ! =============== 314 IF(.NOT. wrk_release(2, 1,2,3))THEN 315 CALL ctl_stop('dyn:vor_ene: failed to release workspace arrays.') 316 END IF 317 ! 282 318 END SUBROUTINE vor_ene 283 319 … … 314 350 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 315 351 !!---------------------------------------------------------------------- 352 USE wrk_nemo, ONLY: wrk_use, wrk_release 353 USE wrk_nemo, ONLY: zwx => wrk_2d_4, zwy => wrk_2d_5, & 354 zwz => wrk_2d_6, zww => wrk_2d_7 355 !! 316 356 INTEGER, INTENT(in) :: kt ! ocean timestep index 317 357 !! … … 319 359 REAL(wp) :: zfact1, zua, zcua, zx1, zy1 ! temporary scalars 320 360 REAL(wp) :: zfact2, zva, zcva, zx2, zy2 ! " " 321 REAL(wp), DIMENSION(jpi,jpj) :: zwx, zwy, zwz, zww ! temporary 3D workspace 322 !!---------------------------------------------------------------------- 361 !!---------------------------------------------------------------------- 362 363 IF(.NOT. wrk_use(2, 4,5,6,7))THEN 364 CALL ctl_stop('dyn:vor_mix: requested workspace arrays unavailable.') 365 RETURN 366 END IF 323 367 324 368 IF( kt == nit000 ) THEN … … 392 436 END DO ! End of slab 393 437 ! ! =============== 438 IF(.NOT. wrk_release(2, 4,5,6,7))THEN 439 CALL ctl_stop('dyn:vor_mix: failed to release workspace arrays.') 440 END IF 441 ! 394 442 END SUBROUTINE vor_mix 395 443 … … 421 469 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 422 470 !!---------------------------------------------------------------------- 471 USE wrk_nemo, ONLY: wrk_use, wrk_release 472 USE wrk_nemo, ONLY: zwx => wrk_2d_4, zwy => wrk_2d_5, zwz => wrk_2d_6 473 !! 423 474 INTEGER , INTENT(in ) :: kt ! ocean time-step index 424 475 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; … … 429 480 INTEGER :: ji, jj, jk ! dummy loop indices 430 481 REAL(wp) :: zfact1, zuav, zvau ! temporary scalars 431 REAL(wp), DIMENSION(jpi,jpj) :: zwx, zwy, zwz ! temporary 3D workspace432 482 !!---------------------------------------------------------------------- 433 483 484 IF(.NOT. wrk_use(2, 4,5,6))THEN 485 CALL ctl_stop('dyn:vor_ens : requested workspace arrays unavailable.') 486 RETURN 487 END IF 488 434 489 IF( kt == nit000 ) THEN 435 490 IF(lwp) WRITE(numout,*) … … 503 558 END DO ! End of slab 504 559 ! ! =============== 560 IF(.NOT. wrk_release(2, 4,5,6))THEN 561 CALL ctl_stop('dyn:vor_ens : failed to release workspace arrays.') 562 END IF 563 ! 505 564 END SUBROUTINE vor_ens 506 565 … … 525 584 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 526 585 !!---------------------------------------------------------------------- 586 USE wrk_nemo, ONLY: wrk_use, wrk_release 587 USE wrk_nemo, ONLY: zwx => wrk_2d_1, zwy => wrk_2d_2, zwz => wrk_2d_3 588 USE wrk_nemo, ONLY: ztnw => wrk_2d_4, ztne => wrk_2d_5, & 589 ztsw => wrk_2d_6, ztse => wrk_2d_7 590 !! 527 591 INTEGER , INTENT(in ) :: kt ! ocean time-step index 528 592 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; … … 533 597 INTEGER :: ji, jj, jk ! dummy loop indices 534 598 REAL(wp) :: zfac12, zua, zva ! temporary scalars 535 REAL(wp), DIMENSION(jpi,jpj) :: zwx, zwy, zwz ! temporary 2D workspace 536 REAL(wp), DIMENSION(jpi,jpj) :: ztnw, ztne, ztsw, ztse ! temporary 3D workspace 537 #if defined key_vvl 538 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3f 539 #else 540 REAL(wp), DIMENSION(jpi,jpj,jpk), SAVE :: ze3f 541 #endif 542 !!---------------------------------------------------------------------- 599 !!---------------------------------------------------------------------- 600 601 IF(.NOT. wrk_use(2, 1,2,3,4,5,6,7))THEN 602 CALL ctl_stop('dyn:vor_een : requested workspace arrays unavailable.') 603 RETURN 604 END IF 543 605 544 606 IF( kt == nit000 ) THEN … … 634 696 END DO ! End of slab 635 697 ! ! =============== 698 IF(.NOT. wrk_release(2, 1,2,3,4,5,6,7))THEN 699 CALL ctl_stop('dyn:vor_een : failed to release workspace arrays.') 700 END IF 701 ! 636 702 END SUBROUTINE vor_een 637 703
Note: See TracChangeset
for help on using the changeset viewer.