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/LDF/ldfdyn_c3d.h90 – 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/LDF/ldfdyn_c3d.h90

    r2528 r2715  
    2626      !!       ??? explanation of the default is missing 
    2727      !!---------------------------------------------------------------------- 
    28       USE ldftra_oce, ONLY : aht0 
    29       !! 
    30       LOGICAL, INTENT (in) :: ld_print   ! If true, output arrays on numout 
    31       !! 
    32       INTEGER  ::   ji, jj, jk      ! dummy loop indices 
    33       REAL(wp) ::   & 
    34          zr = 0.2 ,   &  ! maximum of the reduction factor at the bottom ocean 
    35          !               ! ( 0 < zr < 1 ) 
    36          zh = 500.,   &  ! depth of at which start the reduction ( > dept(1) ) 
    37          zd_max   ,   &  ! maximum grid spacing over the global domain 
    38          za00, zc, zd    ! temporary scalars 
    39       REAL(wp) ::        & 
    40          zetmax, zefmax, & 
    41          zeumax, zevmax    
    42       REAL(wp), DIMENSION(jpk) ::   zcoef   ! temporary workspace 
    43       !!---------------------------------------------------------------------- 
     28      USE ldftra_oce, ONLY :   aht0 
     29      USE wrk_nemo  , ONLY:   wrk_in_use, wrk_not_released 
     30      USE wrk_nemo  , ONLY:   zcoef => wrk_1d_2 
     31      !! 
     32      LOGICAL, INTENT (in) ::   ld_print   ! If true, output arrays on numout 
     33      !! 
     34      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     35      REAL(wp) ::   zr = 0.2     ! maximum of the reduction factor at the bottom ocean ( 0 < zr < 1 ) 
     36      REAL(wp) ::   zh = 500.    ! depth of at which start the reduction ( > dept(1) ) 
     37      REAL(wp) ::   zd_max       ! maximum grid spacing over the global domain 
     38      REAL(wp) ::   za00, zc, zd, zetmax, zefmax, zeumax, zevmax   ! local scalars 
     39      !!---------------------------------------------------------------------- 
     40 
     41      IF( wrk_in_use(1,2) ) THEN 
     42         CALL ctl_stop('ldf_dyn_c3d: requested workspace array unavailable')   ;   RETURN 
     43      ENDIF 
    4444 
    4545      IF(lwp) WRITE(numout,*) 
     
    181181         ENDIF 
    182182      ENDIF 
    183  
     183      ! 
     184      IF( wrk_not_released(1,2) )   CALL ctl_stop('ldf_dyn_c3d: failed to release workspace array') 
     185      ! 
    184186   END SUBROUTINE ldf_dyn_c3d 
    185187 
     
    193195      !! ** Method  :   blah blah blah .... 
    194196      !!---------------------------------------------------------------------- 
    195       USE ldftra_oce, ONLY : aht0 
    196       !! 
    197       LOGICAL, INTENT (in) :: ld_print   ! If true, output arrays on numout 
     197      USE ldftra_oce, ONLY:   aht0 
     198      USE wrk_nemo  , ONLY:   wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
     199      USE wrk_nemo  , ONLY:   icof  => iwrk_2d_1 
     200      USE wrk_nemo  , ONLY:   zahm0 =>  wrk_2d_1 
     201      USE wrk_nemo  , ONLY:   zcoef =>  wrk_1d_1 
     202      !! 
     203      LOGICAL, INTENT(in) ::   ld_print   ! If true, output arrays on numout 
    198204      !! 
    199205      INTEGER ::   ji, jj, jk, jn      ! dummy loop indices 
    200       INTEGER ::   ii0, ii1, ij0, ij1  ! temporary integers 
    201       INTEGER ::   inum                ! temporary logical unit 
    202       INTEGER ::   iim, ijm 
     206      INTEGER ::   ii0, ii1, ij0, ij1  ! local integers 
     207      INTEGER ::   inum, iim, ijm      !  
    203208      INTEGER ::   ifreq, il1, il2, ij, ii 
    204209      INTEGER, DIMENSION(jpidta, jpjdta) ::   idata 
    205       INTEGER, DIMENSION(jpi   , jpj   ) ::   icof 
    206  
    207       REAL(wp) ::   & 
    208          zahmeq, zcoff, zcoft, zmsk,   & ! ??? 
    209          zemax, zemin, zeref, zahmm 
    210       REAL(wp), DIMENSION(jpi,jpj) ::   zahm0 
    211       REAL(wp), DIMENSION(jpk) ::   zcoef 
    212  
     210 
     211      REAL(wp) ::   zahmeq, zcoff, zcoft, zmsk   ! local scalars 
     212      REAL(wp) ::   zemax , zemin, zeref, zahmm 
    213213      CHARACTER (len=15) ::   clexp 
    214214      !!---------------------------------------------------------------------- 
     215 
     216      IF( iwrk_in_use(2,1) .OR. wrk_in_use(2,1) .OR. wrk_in_use(1,1) ) THEN 
     217         CALL ctl_stop('ldf_dyn_c3d_orca: requested workspace arrays are unavailable')   ;   RETURN 
     218      ENDIF 
    215219 
    216220      IF(lwp) WRITE(numout,*) 
    217221      IF(lwp) WRITE(numout,*) 'ldfdyn_c3d_orca : 3D eddy viscosity coefficient' 
    218222      IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~~' 
    219       IF(lwp) WRITE(numout,*) 
    220       IF(lwp) WRITE(numout,*) '        orca R1, R2 or R4 ocean model' 
    221       IF(lwp) WRITE(numout,*) '  reduced in the surface Eq. strip ' 
    222       IF(lwp) WRITE(numout,*) 
     223      IF(lwp) WRITE(numout,*) '        orca R1, R2 or R4 configuration: reduced in the surface Eq. strip ' 
    223224 
    224225      ! Read 2d integer array to specify western boundary increase in the 
     
    457458      ENDIF 
    458459 
     460      IF( iwrk_not_released(2,1) .OR.   & 
     461           wrk_not_released(2,1) .OR.   & 
     462           wrk_not_released(1,1)   ) CALL ctl_stop('ldf_dyn_c3d_orca: failed to release workspace arrays') 
     463      ! 
    459464   END SUBROUTINE ldf_dyn_c3d_orca 
Note: See TracChangeset for help on using the changeset viewer.