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/dynldf_iso.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/dynldf_iso.F90

    r2528 r2590  
    3030   !! * Routine accessibility 
    3131   PUBLIC dyn_ldf_iso           ! called by step.F90 
     32   PUBLIC dyn_ldf_iso_alloc     ! called by nemogcm.F90 
     33 
     34   ! These are just workspace arrays but because they are (jpi,jpk) in extent 
     35   ! we can't use the arrays in wrk_nemo for them 
     36   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zfuw, zdiu, zdju, zdj1u 
     37   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zfvw, zdiv, zdjv, zdj1v 
    3238 
    3339   !! * Substitutions 
     
    4248 
    4349CONTAINS 
     50 
     51   FUNCTION dyn_ldf_iso_alloc() 
     52      !!---------------------------------------------------------------------- 
     53      !!                  ***  ROUTINE dyn_ldf_iso_alloc  *** 
     54      !!---------------------------------------------------------------------- 
     55      INTEGER :: dyn_ldf_iso_alloc 
     56      !!---------------------------------------------------------------------- 
     57 
     58      ALLOCATE(zfuw(jpi,jpk), zdiu(jpi,jpk), zdju(jpi,jpk), zdj1u(jpi,jpk), &  
     59               zfvw(jpi,jpk), zdiv(jpi,jpk), zdjv(jpi,jpk), zdj1v(jpi,jpk), & 
     60               Stat=dyn_ldf_iso_alloc) 
     61 
     62      IF(dyn_ldf_iso_alloc /= 0)THEN 
     63         CALL ctl_warn('dyn_ldf_iso_alloc: array allocate failed.') 
     64      END IF 
     65 
     66   END FUNCTION dyn_ldf_iso_alloc 
     67 
    4468 
    4569   SUBROUTINE dyn_ldf_iso( kt ) 
     
    93117      !!        !  05-11  (G. Madec)  s-coordinate: horizontal diffusion 
    94118      !!---------------------------------------------------------------------- 
     119      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     120      USE wrk_nemo, ONLY: ziut => wrk_2d_1, zjuf  => wrk_2d_2, & ! temporary workspace 
     121                          zjvt => wrk_2d_3, zivf  => wrk_2d_4, &  
     122                          zdku => wrk_2d_5, zdk1u => wrk_2d_6, & 
     123                          zdkv => wrk_2d_7, zdk1v => wrk_2d_8 
     124      !! 
    95125      !! * Arguments 
    96126      INTEGER, INTENT( in ) ::   kt       ! ocean time-step index 
     
    102132         zmskt, zmskf, zbu, zbv,       & 
    103133         zuah, zvah 
    104       REAL(wp), DIMENSION(jpi,jpj) ::   & 
    105          ziut, zjuf, zjvt, zivf,        & ! temporary workspace 
    106          zdku, zdk1u, zdkv, zdk1v 
    107134 
    108135      REAL(wp) ::   & 
    109136         zcoef0, zcoef3, zcoef4, zmkt, zmkf,   & 
    110137         zuav, zvav, zuwslpi, zuwslpj, zvwslpi, zvwslpj 
    111       REAL(wp), DIMENSION(jpi,jpk) ::        & 
    112          zfuw, zdiu, zdju, zdj1u,            & !    "        " 
    113          zfvw, zdiv, zdjv, zdj1v 
    114  
    115       !!---------------------------------------------------------------------- 
     138 
     139      !!---------------------------------------------------------------------- 
     140 
     141      IF( .NOT. wrk_use(2, 1,2,3,4,5,6,7,8))THEN 
     142         CALL ctl_stop('dyn_ldf_iso: requested workspace arrays unavailable.') 
     143         RETURN 
     144      END IF 
    116145 
    117146      IF( kt == nit000 ) THEN 
     
    420449      !                                                ! =============== 
    421450 
     451      IF( .NOT. wrk_release(2, 1,2,3,4,5,6,7,8))THEN 
     452         CALL ctl_stop('dyn_ldf_iso: failed to release workspace arrays.') 
     453      END IF 
     454 
    422455   END SUBROUTINE dyn_ldf_iso 
    423456 
     
    428461CONTAINS 
    429462   SUBROUTINE dyn_ldf_iso( kt )               ! Empty routine 
     463      INTEGER, INTENT(in) :: kt 
    430464      WRITE(*,*) 'dyn_ldf_iso: You should not have seen this print! error?', kt 
    431465   END SUBROUTINE dyn_ldf_iso 
Note: See TracChangeset for help on using the changeset viewer.