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 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90 – NEMO

Ignore:
Timestamp:
2012-01-28T17:44:18+01:00 (12 years ago)
Author:
rblod
Message:

Merge of 3.4beta into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r2715 r3294  
    2525   USE iom             ! I/O Manager 
    2626   USE lib_mpp         ! MPP library 
    27    USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
     27   USE wrk_nemo        ! work arrays 
     28   USE timing          ! Timing 
    2829 
    2930   IMPLICIT NONE 
     
    104105      !!---------------------------------------------------------------------- 
    105106      USE oce, zav_tide  =>   ua    ! use ua as workspace 
    106       USE wrk_nemo, ONLY: zkz => wrk_2d_1 
    107107      !! 
    108108      INTEGER, INTENT(in) ::   kt   ! ocean time-step  
     
    110110      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    111111      REAL(wp) ::   ztpc         ! scalar workspace 
    112       !!---------------------------------------------------------------------- 
    113  
    114       IF(wrk_in_use(2, 1))THEN 
    115          CALL ctl_stop('zdf_tmx : requested workspace array unavailable.')   ;   RETURN 
    116       END IF 
     112      REAL(wp), POINTER, DIMENSION(:,:) ::   zkz 
     113      !!---------------------------------------------------------------------- 
     114      ! 
     115      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx') 
     116      ! 
     117      CALL wrk_alloc( jpi,jpj, zkz ) 
     118 
    117119      !                          ! ----------------------- ! 
    118120      !                          !  Standard tidal mixing  !  (compute zav_tide) 
     
    176178      IF(ln_ctl)   CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 
    177179      ! 
    178       IF(wrk_not_released(2, 1))THEN 
    179          CALL ctl_stop('zdf_tmx : failed to release workspace array.') 
    180       END IF 
     180      CALL wrk_dealloc( jpi,jpj, zkz ) 
     181      ! 
     182      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx') 
    181183      ! 
    182184   END SUBROUTINE zdf_tmx 
     
    203205      !! References :  Koch-Larrouy et al. 2007, GRL  
    204206      !!---------------------------------------------------------------------- 
    205       USE wrk_nemo, ONLY: zkz => wrk_2d_5 
    206       USE wrk_nemo, ONLY: zsum1 => wrk_2d_2, zsum2 => wrk_2d_3, zsum => wrk_2d_4 
    207       USE wrk_nemo, ONLY: zempba_3d_1 => wrk_3d_1, zempba_3d_2 => wrk_3d_2 
    208       USE wrk_nemo, ONLY: zempba_3d   => wrk_3d_3, zdn2dz      => wrk_3d_4 
    209       USE wrk_nemo, ONLY: zavt_itf    => wrk_3d_5 
    210       !! 
    211207      INTEGER , INTENT(in   )                         ::   kt   ! ocean time-step 
    212208      REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) ::   pav  ! Tidal mixing coef. 
     
    214210      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
    215211      REAL(wp) ::   zcoef, ztpc   ! temporary scalar 
    216       !!---------------------------------------------------------------------- 
    217       ! 
    218       IF( wrk_in_use(2, 2,3,4,5) .OR. wrk_in_use(3, 1,2,3,4,5) )THEN 
    219          CALL ctl_stop('tmx_itf : requested workspace arrays unavailable.') 
    220          RETURN 
    221       END IF 
     212      REAL(wp), DIMENSION(:,:)  , POINTER ::   zkz                        ! 2D workspace 
     213      REAL(wp), DIMENSION(:,:)  , POINTER ::   zsum1 , zsum2 , zsum       !  -      - 
     214      REAL(wp), DIMENSION(:,:,:), POINTER ::   zempba_3d_1, zempba_3d_2   ! 3D workspace 
     215      REAL(wp), DIMENSION(:,:,:), POINTER ::   zempba_3d  , zdn2dz        !  -      - 
     216      REAL(wp), DIMENSION(:,:,:), POINTER ::   zavt_itf                   !  -      - 
     217      !!---------------------------------------------------------------------- 
     218      ! 
     219      IF( nn_timing == 1 )  CALL timing_start('tmx_itf') 
     220      ! 
     221      CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 
     222      CALL wrk_alloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 
     223 
    222224      !                             ! compute the form function using N2 at each time step 
    223225      zempba_3d_1(:,:,jpk) = 0.e0 
     
    304306      END DO 
    305307      ! 
    306       IF( wrk_not_released(2, 2,3,4,5) .OR. & 
    307           wrk_not_released(3, 1,2,3,4,5) )THEN 
    308          CALL ctl_stop('tmx_itf : failed to release workspace arrays.') 
    309       END IF 
     308      CALL wrk_dealloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 
     309      CALL wrk_dealloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 
     310      ! 
     311      IF( nn_timing == 1 )  CALL timing_stop('tmx_itf') 
    310312      ! 
    311313   END SUBROUTINE tmx_itf 
     
    348350      !!---------------------------------------------------------------------- 
    349351      USE oce     ,         zav_tide =>  ua         ! ua used as workspace 
    350       USE wrk_nemo, ONLY:   zem2     =>  wrk_2d_1   ! read M2 and  
    351       USE wrk_nemo, ONLY:   zek1     =>  wrk_2d_2   ! K1 tidal energy 
    352       USE wrk_nemo, ONLY:   zkz      =>  wrk_2d_3   ! total M2, K1 and S2 tidal energy 
    353       USE wrk_nemo, ONLY:   zfact    =>  wrk_2d_4   ! used for vertical structure function 
    354       USE wrk_nemo, ONLY:   zhdep    =>  wrk_2d_5   ! Ocean depth  
    355       USE wrk_nemo, ONLY:   zpc      =>  wrk_3d_1   ! power consumption 
    356352      !! 
    357353      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    358354      INTEGER  ::   inum         ! local integer 
    359355      REAL(wp) ::   ztpc, ze_z   ! local scalars 
     356      REAL(wp), DIMENSION(:,:)  , POINTER ::  zem2, zek1   ! read M2 and K1 tidal energy 
     357      REAL(wp), DIMENSION(:,:)  , POINTER ::  zkz          ! total M2, K1 and S2 tidal energy 
     358      REAL(wp), DIMENSION(:,:)  , POINTER ::  zfact        ! used for vertical structure function 
     359      REAL(wp), DIMENSION(:,:)  , POINTER ::  zhdep        ! Ocean depth  
     360      REAL(wp), DIMENSION(:,:,:), POINTER ::  zpc      ! power consumption 
    360361      !! 
    361362      NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 
    362363      !!---------------------------------------------------------------------- 
    363  
    364       IF( wrk_in_use(2, 1,2,3,4,5)  .OR.  wrk_in_use(3, 1)  ) THEN 
    365          CALL ctl_stop('zdf_tmx_init : requested workspace arrays unavailable.')   ;   RETURN 
    366       END IF 
    367  
     364      ! 
     365      IF( nn_timing == 1 )  CALL timing_start('zdf_tmx_init') 
     366      ! 
     367      CALL wrk_alloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 
     368      CALL wrk_alloc( jpi,jpj,jpk, zpc ) 
     369       
    368370      REWIND( numnam )               ! Read Namelist namtmx : Tidal Mixing 
    369371      READ  ( numnam, namzdf_tmx ) 
     
    526528      ENDIF 
    527529      ! 
    528       IF(wrk_not_released(2, 1,2,3,4,5) .OR.   & 
    529          wrk_not_released(3, 1)          )   CALL ctl_stop( 'zdf_tmx_init : failed to release workspace arrays' ) 
     530      CALL wrk_dealloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 
     531      CALL wrk_dealloc( jpi,jpj,jpk, zpc ) 
     532      ! 
     533      IF( nn_timing == 1 )  CALL timing_stop('zdf_tmx_init') 
    530534      ! 
    531535   END SUBROUTINE zdf_tmx_init 
Note: See TracChangeset for help on using the changeset viewer.