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 2715 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90 – NEMO

Ignore:
Timestamp:
2011-03-30T17:58:35+02:00 (13 years ago)
Author:
rblod
Message:

First attempt to put dynamic allocation on the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traldf.F90

    r2528 r2715  
    3737   ! 
    3838   INTEGER ::   nldf = 0   ! type of lateral diffusion used defined from ln_traldf_... namlist logicals) 
    39 #if defined key_traldf_ano 
    40    REAL, DIMENSION(jpi,jpj,jpk) ::   t0_ldf, s0_ldf   ! lateral diffusion trends of T & S for a constant profile 
    41 #endif 
     39 
     40   REAL, SAVE, ALLOCATABLE, DIMENSION(:,:,:) ::   t0_ldf, s0_ldf   !: lateral diffusion trends of T & S for a cst profile 
     41   !                                                               !  (key_traldf_ano only) 
    4242 
    4343   !! * Substitutions 
     
    130130      !!---------------------------------------------------------------------- 
    131131      INTEGER ::   ioptio, ierr         ! temporary integers  
    132 !       
    133132      !!---------------------------------------------------------------------- 
    134133 
     
    238237      !! ** Purpose :   initializations of  
    239238      !!---------------------------------------------------------------------- 
     239      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     240      USE wrk_nemo, ONLY:   zt_ref => wrk_3d_1, ztb => wrk_3d_2, zavt => wrk_3d_3   ! 3D workspaces 
     241      USE wrk_nemo, ONLY:   zs_ref => wrk_3d_4, zsb => wrk_3d_5                     ! 3D workspaces 
     242      ! 
    240243      USE zdf_oce         ! vertical mixing 
    241244      USE trazdf          ! vertical mixing: double diffusion 
    242245      USE zdfddm          ! vertical mixing: double diffusion 
    243       !! 
     246      ! 
    244247      INTEGER  ::   jk              ! Dummy loop indice 
    245       LOGICAL  ::   llsave          ! 
    246       REAL(wp) ::   zt0, zs0, z12   ! temporary scalar 
    247       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zt_ref, ztb, zavt   ! 3D workspace 
    248       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zs_ref, zsb         ! 3D workspace 
    249       !!---------------------------------------------------------------------- 
     248      INTEGER  ::   ierr            ! local integer 
     249      LOGICAL  ::   llsave          ! local logical 
     250      REAL(wp) ::   zt0, zs0, z12   ! local scalar 
     251      !!---------------------------------------------------------------------- 
     252 
     253      IF( wrk_in_use(3, 1,2,3,4,5) ) THEN 
     254         CALL ctl_stop('ldf_ano : requested workspace arrays unavailable')   ;   RETURN 
     255      ENDIF 
    250256 
    251257      IF(lwp) THEN 
     
    254260         WRITE(numout,*) '~~~~~~~~~~~' 
    255261      ENDIF 
     262 
     263      !                              ! allocate trabbl arrays 
     264      ALLOCATE( t0_ldf(jpi,jpj,jpk) , s0_ldf(jpi,jpj,jpk) , STAT=ierr ) 
     265      IF( lk_mpp    )   CALL mpp_sum( ierr ) 
     266      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'ldf_ano: unable to allocate arrays' ) 
    256267 
    257268      ! defined the T & S reference profiles 
     
    309320      avt(:,:,:)        = zavt(:,:,:) 
    310321      ! 
     322      IF( wrk_not_released(3, 1,2,3,4,5) )   CALL ctl_stop('ldf_ano: failed to release workspace arrays') 
     323      ! 
    311324   END SUBROUTINE ldf_ano 
    312325 
Note: See TracChangeset for help on using the changeset viewer.