- Timestamp:
- 2011-03-15T16:27:46+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r2636 r2690 5 5 !! planetary vorticity trends 6 6 !!====================================================================== 7 !! History : OPA ! 8 !! 5.0 ! 9 !! 6.0 ! 10 !! 8.5 !2002-08 (G. Madec) F90: Free form and module11 !! NEMO 1.0 !2004-02 (G. Madec) vor_een: Original code12 !! - ! 13 !! - ! 14 !! 2.0 ! 15 !! 3.2 ! 16 !! 3.3 ! 7 !! History : OPA ! 1989-12 (P. Andrich) vor_ens: Original code 8 !! 5.0 ! 1991-11 (G. Madec) vor_ene, vor_mix: Original code 9 !! 6.0 ! 1996-01 (G. Madec) s-coord, suppress work arrays 10 !! NEMO 0.5 ! 2002-08 (G. Madec) F90: Free form and module 11 !! 1.0 ! 2004-02 (G. Madec) vor_een: Original code 12 !! - ! 2003-08 (G. Madec) add vor_ctl 13 !! - ! 2005-11 (G. Madec) add dyn_vor (new step architecture) 14 !! 2.0 ! 2006-11 (G. Madec) flux form advection: add metric term 15 !! 3.2 ! 2009-04 (R. Benshila) vvl: correction of een scheme 16 !! 3.3 ! 2010-10 (C. Ethe, G. Madec) reorganisation of initialisation phase 17 17 !!---------------------------------------------------------------------- 18 18 … … 58 58 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 59 59 !! $Id$ 60 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)60 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 61 61 !!---------------------------------------------------------------------- 62 62 CONTAINS … … 71 71 !! and planetary vorticity trends) ('key_trddyn') 72 72 !!---------------------------------------------------------------------- 73 USE oce, ONLY : ztrdu => ta ! use ta as 3D workspace 74 USE oce, ONLY : ztrdv => sa ! use sa as 3D workspace 75 !! 73 USE oce, ONLY: ztrdu => ta , ztrdv => sa ! (ta,sa) used as 3D workspace 74 ! 76 75 INTEGER, INTENT( in ) :: kt ! ocean time-step index 77 76 !!---------------------------------------------------------------------- 78 77 ! 79 78 ! ! vorticity term 80 79 SELECT CASE ( nvor ) ! compute the vorticity trend and add it to the general trend … … 171 170 ! 172 171 END SELECT 173 172 ! 174 173 ! ! print sum trends (used for debugging) 175 IF(ln_ctl) CALL prt_ctl( tab3d_1=ua, clinfo1=' vor - Ua: ', mask1=umask, &174 IF(ln_ctl) CALL prt_ctl( tab3d_1=ua, clinfo1=' vor - Ua: ', mask1=umask, & 176 175 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 177 176 ! … … 205 204 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 206 205 !!---------------------------------------------------------------------- 207 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released208 USE wrk_nemo, ONLY: zwx => wrk_2d_1, zwy => wrk_2d_2, zwz => wrk_2d_3209 ! !206 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 207 USE wrk_nemo, ONLY: zwx => wrk_2d_1 , zwy => wrk_2d_2 , zwz => wrk_2d_3 ! 2D workspace 208 ! 210 209 INTEGER , INTENT(in ) :: kt ! ocean time-step index 211 210 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; … … 213 212 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua ! total u-trend 214 213 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva ! total v-trend 215 !! 216 INTEGER :: ji, jj, jk ! dummy loop indices 217 REAL(wp) :: zx1, zy1, zfact2 ! temporary scalars 218 REAL(wp) :: zx2, zy2 ! " " 214 ! 215 INTEGER :: ji, jj, jk ! dummy loop indices 216 REAL(wp) :: zx1, zy1, zfact2, zx2, zy2 ! local scalars 219 217 !!---------------------------------------------------------------------- 220 218 … … 286 284 END DO ! End of slab 287 285 ! ! =============== 288 IF( wrk_not_released(2, 1,2,3) ) CALL ctl_stop('dyn:vor_ene: failed to release workspace arrays .')286 IF( wrk_not_released(2, 1,2,3) ) CALL ctl_stop('dyn:vor_ene: failed to release workspace arrays') 289 287 ! 290 288 END SUBROUTINE vor_ene … … 322 320 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 323 321 !!---------------------------------------------------------------------- 324 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 325 USE wrk_nemo, ONLY: zwx => wrk_2d_4, zwy => wrk_2d_5, & 326 zwz => wrk_2d_6, zww => wrk_2d_7 327 !! 322 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 323 USE wrk_nemo, ONLY: zwx => wrk_2d_4 , zwy => wrk_2d_5 , zwz => wrk_2d_6 , zww => wrk_2d_7 ! 2D workspace 324 ! 328 325 INTEGER, INTENT(in) :: kt ! ocean timestep index 329 ! !326 ! 330 327 INTEGER :: ji, jj, jk ! dummy loop indices 331 REAL(wp) :: zfact1, zua, zcua, zx1, zy1 ! temporaryscalars332 REAL(wp) :: zfact2, zva, zcva, zx2, zy2 ! " "328 REAL(wp) :: zfact1, zua, zcua, zx1, zy1 ! local scalars 329 REAL(wp) :: zfact2, zva, zcva, zx2, zy2 ! - - 333 330 !!---------------------------------------------------------------------- 334 331 … … 438 435 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 439 436 !!---------------------------------------------------------------------- 440 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released441 USE wrk_nemo, ONLY: zwx => wrk_2d_4, zwy => wrk_2d_5, zwz => wrk_2d_6442 ! !437 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 438 USE wrk_nemo, ONLY: zwx => wrk_2d_4, zwy => wrk_2d_5, zwz => wrk_2d_6 ! 2D workspace 439 ! 443 440 INTEGER , INTENT(in ) :: kt ! ocean time-step index 444 441 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; … … 446 443 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pua ! total u-trend 447 444 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva ! total v-trend 448 ! !445 ! 449 446 INTEGER :: ji, jj, jk ! dummy loop indices 450 447 REAL(wp) :: zfact1, zuav, zvau ! temporary scalars … … 452 449 453 450 IF( wrk_in_use(2, 4,5,6) ) THEN 454 CALL ctl_stop('dyn:vor_ens 451 CALL ctl_stop('dyn:vor_ens: requested workspace arrays unavailable') ; RETURN 455 452 END IF 456 453 … … 526 523 END DO ! End of slab 527 524 ! ! =============== 528 IF( wrk_not_released(2, 4,5,6) ) CALL ctl_stop('dyn:vor_ens 525 IF( wrk_not_released(2, 4,5,6) ) CALL ctl_stop('dyn:vor_ens: failed to release workspace arrays') 529 526 ! 530 527 END SUBROUTINE vor_ens … … 551 548 !!---------------------------------------------------------------------- 552 549 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 553 USE wrk_nemo, ONLY: zwx => wrk_2d_1 , zwy => wrk_2d_2 , zwz => wrk_2d_3 550 USE wrk_nemo, ONLY: zwx => wrk_2d_1 , zwy => wrk_2d_2 , zwz => wrk_2d_3 ! 2D workspace 554 551 USE wrk_nemo, ONLY: ztnw => wrk_2d_4 , ztne => wrk_2d_5 555 552 USE wrk_nemo, ONLY: ztsw => wrk_2d_6 , ztse => wrk_2d_7 556 553 #if defined key_vvl 557 USE wrk_nemo, ONLY: ze3f => wrk_3d_1 554 USE wrk_nemo, ONLY: ze3f => wrk_3d_1 ! 3D workspace (lk_vvl=T) 558 555 #endif 559 556 ! … … 568 565 REAL(wp) :: zfac12, zua, zva ! local scalars 569 566 #if ! defined key_vvl 570 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: ze3f 567 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: ze3f ! lk_vvl=F, ze3f=1/e3f saved one for all 571 568 #endif 572 569 !!---------------------------------------------------------------------- 573 570 574 571 IF( wrk_in_use(2, 1,2,3,4,5,6,7) .OR. wrk_in_use(3, 1) ) THEN 575 CALL ctl_stop('dyn:vor_een : requested workspace arrays unavailable.') ; RETURN572 CALL ctl_stop('dyn:vor_een: requested workspace arrays unavailable') ; RETURN 576 573 ENDIF 577 574 … … 593 590 ze3f(ji,jj,jk) = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) & 594 591 & + fse3t(ji,jj ,jk)*tmask(ji,jj ,jk) + fse3t(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) ) * 0.25 595 IF( ze3f(ji,jj,jk) /= 0. e0 ) ze3f(ji,jj,jk) = 1.e0/ ze3f(ji,jj,jk)592 IF( ze3f(ji,jj,jk) /= 0._wp ) ze3f(ji,jj,jk) = 1._wp / ze3f(ji,jj,jk) 596 593 END DO 597 594 END DO … … 600 597 ENDIF 601 598 602 zfac12 = 1. e0 / 12.e0! Local constant initialization599 zfac12 = 1._wp / 12._wp ! Local constant initialization 603 600 604 601 … … 673 670 END DO ! End of slab 674 671 ! ! =============== 675 IF( wrk_not_released(2, 1,2,3,4,5,6,7) .OR. &676 wrk_not_released(3, 1) ) CALL ctl_stop('dyn:vor_een: failed to release workspace arrays')672 IF( wrk_not_released(2, 1,2,3,4,5,6,7) .OR. & 673 wrk_not_released(3, 1) ) CALL ctl_stop('dyn:vor_een: failed to release workspace arrays') 677 674 ! 678 675 END SUBROUTINE vor_een … … 686 683 !! tracer advection schemes 687 684 !!---------------------------------------------------------------------- 688 INTEGER :: ioptio ! temporary integer 685 INTEGER :: ioptio ! local integer 686 !! 689 687 NAMELIST/namdyn_vor/ ln_dynvor_ens, ln_dynvor_ene, ln_dynvor_mix, ln_dynvor_een 690 688 !!----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.