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_bilapg.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_bilapg.F90

    r2528 r2590  
    2828 
    2929   !! * Routine accessibility 
    30    PUBLIC dyn_ldf_bilapg ! called by step.F90 
     30   PUBLIC dyn_ldf_bilapg       ! called by step.F90 
     31   PUBLIC dyn_ldf_bilapg_alloc ! called by nemogcm.F90 
     32 
     33   ! These are just workspace arrays but since they're (jpi,jpk) it's not 
     34   ! worth putting them in the wrk_nemo module. 
     35   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::  zfuw, zfvw, zdiu, zdiv 
     36   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) ::  zdju, zdj1u, zdjv, zdj1v  
    3137 
    3238   !! * Substitutions 
     
    4046 
    4147CONTAINS 
     48 
     49   FUNCTION dyn_ldf_bilapg_alloc() 
     50      !!---------------------------------------------------------------------- 
     51      !!               ***  ROUTINE dyn_ldf_bilapg_alloc  *** 
     52      !!---------------------------------------------------------------------- 
     53      INTEGER :: dyn_ldf_bilapg_alloc 
     54 
     55      ALLOCATE(zfuw(jpi,jpk), zfvw(jpi,jpk),  zdiu(jpi,jpk), zdiv(jpi,jpk), & 
     56               zdju(jpi,jpk), zdj1u(jpi,jpk), zdjv(jpi,jpk), zdj1v(jpi,jpk),& 
     57               Stat = dyn_ldf_bilapg_alloc) 
     58 
     59      IF(dyn_ldf_bilapg_alloc /= 0)THEN 
     60         CALL ctl_warn('dyn_ldf_bilapg_alloc: failed to allocate arrays') 
     61      END IF 
     62 
     63   END FUNCTION dyn_ldf_bilapg_alloc 
     64 
    4265 
    4366   SUBROUTINE dyn_ldf_bilapg( kt ) 
     
    7699      USE oce, ONLY :    zwk3 => ta,   & ! use ta as 3D workspace    
    77100                         zwk4 => sa      ! use sa as 3D workspace    
    78  
     101      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     102      ! work array used for rotated biharmonic operator on  
     103      ! tracers and/or momentum 
     104      USE wrk_nemo, ONLY: zwk1 => wrk_3d_1, &  
     105                          zwk2 => wrk_3d_2 
    79106      !! * Arguments 
    80107      INTEGER, INTENT( in ) ::   kt           ! ocean time-step index 
     
    82109      !! * Local declarations 
    83110      INTEGER ::   ji, jj, jk                 ! dummy loop indices 
    84       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   & 
    85          zwk1, zwk2                ! work array used for rotated biharmonic 
    86          !                         ! operator on tracers and/or momentum 
    87       !!---------------------------------------------------------------------- 
     111      !!---------------------------------------------------------------------- 
     112 
     113      IF(.NOT. wrk_use(3, 1,2))THEN 
     114         CALL ctl_stop('dyn_ldf_bilapg: requested workspace arrays unavailable.') 
     115         RETURN 
     116      END IF 
    88117 
    89118      IF( kt == nit000 ) THEN 
     
    130159      END DO                                           !   End of slab 
    131160      !                                                ! =============== 
    132  
     161      IF(.NOT. wrk_release(3, 1,2))THEN 
     162         CALL ctl_stop('dyn_ldf_bilapg: failed to release workspace arrays.') 
     163      END IF 
     164      ! 
    133165   END SUBROUTINE dyn_ldf_bilapg 
    134166 
     
    179211      !!   8.5  !  02-08  (G. Madec)  F90: Free form and module 
    180212      !!---------------------------------------------------------------------- 
     213      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     214      USE wrk_nemo, ONLY: ziut => wrk_2d_1, zjuf => wrk_2d_2, zjvt => wrk_2d_3 
     215      USE wrk_nemo, ONLY: zivf => wrk_2d_4, zdku => wrk_2d_5, zdk1u => wrk_2d_6 
     216      USE wrk_nemo, ONLY: zdkv => wrk_2d_7, zdk1v => wrk_2d_8 
     217      !! 
    181218      !! * Arguments 
    182219      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) ::   & 
     
    199236         zbur, zbvr, zmkt, zmkf, zuav, zvav,    & 
    200237         zuwslpi, zuwslpj, zvwslpi, zvwslpj 
    201       REAL(wp), DIMENSION(jpi,jpj) ::   & 
    202          ziut, zjuf , zjvt, zivf,       &  ! workspace 
    203          zdku, zdk1u, zdkv, zdk1v 
    204       REAL(wp), DIMENSION(jpi,jpk) ::   & 
    205          zfuw, zfvw, zdiu, zdiv,        &  ! workspace 
    206          zdju, zdj1u, zdjv, zdj1v  
    207       !!---------------------------------------------------------------------- 
    208  
     238      !!---------------------------------------------------------------------- 
     239 
     240      IF(.NOT. wrk_use(2, 1,2,3,4,5,6,7,8))THEN 
     241         CALL ctl_stop('dyn:ldfguv : requested workspace arrays unavailable.') 
     242         RETURN 
     243      END IF 
    209244      !                               ! ********** !   ! =============== 
    210245      DO jk = 1, jpkm1                ! First step !   ! Horizontal slab 
     
    461496      END DO                                           !   End of slab 
    462497      !                                                ! =============== 
     498 
     499      IF(.NOT. wrk_release(2, 1,2,3,4,5,6,7,8))THEN 
     500         CALL ctl_stop('dyn:ldfguv : failed to release workspace arrays.') 
     501      END IF 
     502      ! 
    463503   END SUBROUTINE ldfguv 
    464504 
     
    469509CONTAINS 
    470510   SUBROUTINE dyn_ldf_bilapg( kt )               ! Dummy routine 
     511      INTEGER, INTENT(in) :: kt 
    471512      WRITE(*,*) 'dyn_ldf_bilapg: You should not have seen this print! error?', kt 
    472513   END SUBROUTINE dyn_ldf_bilapg 
Note: See TracChangeset for help on using the changeset viewer.