New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 2590 for branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90 – NEMO

Ignore:
Timestamp:
2011-02-18T13:49:27+01:00 (13 years ago)
Author:
trackstand2
Message:

Merge branch 'dynamic_memory' into master-svn-dyn

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r2528 r2590  
    3939   PUBLIC   dyn_vor        ! routine called by step.F90 
    4040   PUBLIC   dyn_vor_init   ! routine called by opa.F90 
     41   PUBLIC   dyn_vor_alloc  ! routine called by nemogcm.F90 
    4142 
    4243   !                                             !!* Namelist namdyn_vor: vorticity term 
     
    5051   INTEGER ::   nrvm = 2   ! =2 relative vorticity ; =3 metric term 
    5152   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 
    5260 
    5361   !! * Substitutions 
     
    6169 
    6270CONTAINS 
     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 
    6388 
    6489   SUBROUTINE dyn_vor( kt ) 
     
    205230      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    206231      !!---------------------------------------------------------------------- 
     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      !! 
    207235      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
    208236      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     
    214242      REAL(wp) ::   zx1, zy1, zfact2   ! temporary scalars 
    215243      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 
    218250 
    219251      IF( kt == nit000 ) THEN 
     
    280312      END DO                                           !   End of slab 
    281313      !                                                ! =============== 
     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      ! 
    282318   END SUBROUTINE vor_ene 
    283319 
     
    314350      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    315351      !!---------------------------------------------------------------------- 
     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      !! 
    316356      INTEGER, INTENT(in) ::   kt   ! ocean timestep index 
    317357      !! 
     
    319359      REAL(wp) ::   zfact1, zua, zcua, zx1, zy1   ! temporary scalars 
    320360      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 
    323367 
    324368      IF( kt == nit000 ) THEN 
     
    392436      END DO                                           !   End of slab 
    393437      !                                                ! =============== 
     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      ! 
    394442   END SUBROUTINE vor_mix 
    395443 
     
    421469      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    422470      !!---------------------------------------------------------------------- 
     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      !! 
    423474      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
    424475      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     
    429480      INTEGER  ::   ji, jj, jk           ! dummy loop indices 
    430481      REAL(wp) ::   zfact1, zuav, zvau   ! temporary scalars 
    431       REAL(wp), DIMENSION(jpi,jpj) ::   zwx, zwy, zwz   ! temporary 3D workspace 
    432482      !!---------------------------------------------------------------------- 
    433483       
     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 
    434489      IF( kt == nit000 ) THEN 
    435490         IF(lwp) WRITE(numout,*) 
     
    503558      END DO                                           !   End of slab 
    504559      !                                                ! =============== 
     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      ! 
    505564   END SUBROUTINE vor_ens 
    506565 
     
    525584      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
    526585      !!---------------------------------------------------------------------- 
     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      !! 
    527591      INTEGER , INTENT(in   )                         ::   kt     ! ocean time-step index 
    528592      INTEGER , INTENT(in   )                         ::   kvor   ! =ncor (planetary) ; =ntot (total) ; 
     
    533597      INTEGER  ::   ji, jj, jk         ! dummy loop indices 
    534598      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 
    543605 
    544606      IF( kt == nit000 ) THEN 
     
    634696      END DO                                           !   End of slab 
    635697      !                                                ! =============== 
     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      ! 
    636702   END SUBROUTINE vor_een 
    637703 
Note: See TracChangeset for help on using the changeset viewer.