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 2662 – NEMO

Changeset 2662


Ignore:
Timestamp:
2011-03-05T10:52:38+01:00 (12 years ago)
Author:
gm
Message:

dynamic mem: #785 ; suppress the need of logical work space (tradmp,wrk_nemo) + bug correction in the size of local 1d arry (tradmp). NB: llwrk_ functions can (should?) now be removed too

Location:
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/tradmp.F90

    r2633 r2662  
    570570      !!---------------------------------------------------------------------- 
    571571      USE ioipsl      ! IOipsl librairy 
    572       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, llwrk_in_use, llwrk_not_released 
    573       USE wrk_nemo, ONLY:   zxc => wrk_1d_1, zyc  => wrk_1d_2, zzc => wrk_1d_3, zdis => wrk_1d_4 
    574       USE wrk_nemo, ONLY:   llcotu => llwrk_2d_1, llcotv => llwrk_2d_2 , llcotf => llwrk_2d_3 
     572      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    575573      USE wrk_nemo, ONLY:   zxt => wrk_2d_1 , zyt => wrk_2d_2 , zzt => wrk_2d_3, zmask => wrk_2d_4 
    576574      !! 
    577575      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( out ) ::   pdct   ! distance to the coastline 
    578576      !! 
    579       INTEGER ::   ji, jj, jk, jl      ! dummy loop indices 
    580       INTEGER ::   iju, ijt            ! temporary integers 
    581       INTEGER ::   icoast, itime 
    582       INTEGER ::   icot         ! logical unit for file distance to the coast 
    583  
    584       CHARACTER (len=32) ::   clname 
    585       REAL(wp) ::   zdate0 
    586       !!---------------------------------------------------------------------- 
    587  
    588       IF( llwrk_in_use(2, 1,2,3) .OR. wrk_in_use(2, 1,2,3,4) .OR.   & 
     577      INTEGER ::   ji, jj, jk, jl   ! dummy loop indices 
     578      INTEGER ::   iju, ijt, icoast, itime, ierr, icot   ! local integers 
     579      CHARACTER (len=32) ::   clname                     ! local name 
     580      REAL(wp) ::   zdate0                               ! local scalar 
     581      LOGICAL , ALLOCATABLE, DIMENSION(:,:) ::   llcotu, llcotv, llcotf   ! 2D logical workspace 
     582      REAL(wp), ALLOCATABLE, DIMENSION(:)   ::   zxc, zyc, zzc, zdis    ! temporary workspace 
     583      !!---------------------------------------------------------------------- 
     584 
     585      IF( wrk_in_use(2, 1,2,3,4) .OR.   & 
    589586          wrk_in_use(1, 1,2,3,4)  )THEN 
    590          CALL ctl_stop('cofdis: ERROR: requested workspace arrays unavailable')   ;   RETURN 
     587         CALL ctl_stop('cofdis: requested workspace arrays unavailable')   ;   RETURN 
    591588      END IF 
     589 
     590      ALLOCATE( llcotu(jpi,jpj) , llcotv(jpi,jpj) , llcotf(jpi,jpj) ,                        & 
     591         &      zxc (3*jpi*jpj) , zyc (3*jpi*jpj) , zzc (3*jpi*jpj) , zdis (3*jpi*jpj) , STAT=ierr ) 
     592      IF( lk_mpp    )   CALL mpp_sum( ierr ) 
     593      IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'cofdis: requested local arrays unavailable') 
    592594 
    593595      ! 0. Initialization 
     
    741743      CALL restclo( icot ) 
    742744      ! 
    743       IF( llwrk_not_released(2, 1,2,3)  .OR. & 
    744            wrk_not_released(2, 1,2,3,4) .OR. &  
    745            wrk_not_released(1, 1,2,3,4)  )   CALL ctl_stop('cofdis: failed to release workspace arrays') 
     745      IF( wrk_not_released(2, 1,2,3,4) .OR. &  
     746          wrk_not_released(1, 1,2,3,4)  )   CALL ctl_stop('cofdis: failed to release workspace arrays') 
     747      DEALLOCATE( llcotu , llcotv , llcotf ,      & 
     748         &        zxc    , zyc    , zzc    , zdis ) 
    746749      ! 
    747750   END SUBROUTINE cofdis 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/wrk_nemo.F90

    r2661 r2662  
    7777   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:), TARGET, PUBLIC ::   wrk_4d_1, wrk_4d_2, wrk_4d_3, wrk_4d_4  
    7878 
    79    !                                                               !!**  2D-3D logical workspace  ** 
    80    LOGICAL , ALLOCATABLE, SAVE, DIMENSION(:,:)            , PUBLIC ::   llwrk_2d_1, llwrk_2d_2, llwrk_2d_3  
    81    LOGICAL , ALLOCATABLE, SAVE, DIMENSION(:,:,:)  , TARGET, PUBLIC ::   llwrk_3d_1 !: 3D logical workspace 
     79!!gm   !                                                               !!**  2D-3D logical workspace  ** 
     80!!gm   LOGICAL , ALLOCATABLE, SAVE, DIMENSION(:,:)            , PUBLIC ::   llwrk_2d_1, llwrk_2d_2, llwrk_2d_3  
     81!!gm   LOGICAL , ALLOCATABLE, SAVE, DIMENSION(:,:,:)  , TARGET, PUBLIC ::   llwrk_3d_1 !: 3D logical workspace 
    8282    
    8383   !                                                               !!** 2D integer workspace  ** 
     
    182182      ALLOCATE( wrk_xz_1(jpi,jpk) , wrk_xz_2(jpi,jpk) , wrk_xz_3(jpi,jpk) , wrk_xz_4(jpi,jpk) , STAT=ierror(5) ) 
    183183         ! 
    184       ALLOCATE( llwrk_2d_1(jpi,jpj) , llwrk_2d_2(jpi,jpj) , llwrk_2d_3(jpi,jpj)               , STAT=ierror(6) ) 
    185          ! 
    186       ALLOCATE( llwrk_3d_1(jpi,jpj,jpk) , STAT=ierror(7) ) 
     184!!gm      ALLOCATE( llwrk_2d_1(jpi,jpj) , llwrk_2d_2(jpi,jpj) , llwrk_2d_3(jpi,jpj)               , STAT=ierror(6) ) 
     185         ! 
     186!!gm      ALLOCATE( llwrk_3d_1(jpi,jpj,jpk) , STAT=ierror(7) ) 
    187187         ! 
    188188      ALLOCATE( iwrk_2d_1(jpi,jpj)      , STAT=ierror(8) ) 
Note: See TracChangeset for help on using the changeset viewer.