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 2618 for branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90 – NEMO

Ignore:
Timestamp:
2011-02-26T13:31:38+01:00 (13 years ago)
Author:
gm
Message:

dynamic mem: #785 ; move dyn allocation from nemogcm to module when possible (continuation)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r2590 r2618  
    2727   PUBLIC   dom_vvl_alloc ! called by nemogcm.F90 
    2828 
    29    REAL(wp), PUBLIC, ALLOCATABLE, SAVE,   DIMENSION(:,:) ::   ee_t, ee_u, ee_v, ee_f   !: ??? 
    30    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   mut, muu, muv, muf       !: ???  
    31  
    32    REAL(wp),         ALLOCATABLE, SAVE,     DIMENSION(:) ::   r2dt   ! vertical profile time-step, = 2 rdttra  
    33       !                                 ! except at nit000 (=rdttra) if neuler=0 
     29   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)  ::   ee_t, ee_u, ee_v, ee_f   !: ??? 
     30   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   mut , muu , muv , muf    !: ???  
     31 
     32   REAL(wp),         ALLOCATABLE, SAVE, DIMENSION(:)    ::   r2dt   ! vertical profile time-step, = 2 rdttra  
     33      !                                                              ! except at nit000 (=rdttra) if neuler=0 
    3434 
    3535   !! * Substitutions 
     
    3737#  include "vectopt_loop_substitute.h90" 
    3838   !!---------------------------------------------------------------------- 
    39    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     39   !! NEMO/OPA 4.0 , NEMO Consortium (2011) 
    4040   !! $Id$ 
    41    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    42    !!---------------------------------------------------------------------- 
    43  
     41   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     42   !!---------------------------------------------------------------------- 
    4443CONTAINS        
    4544 
    46    FUNCTION dom_vvl_alloc() 
     45   INTEGER FUNCTION dom_vvl_alloc() 
    4746      !!---------------------------------------------------------------------- 
    4847      !!                ***  ROUTINE dom_vvl_alloc  *** 
    4948      !!---------------------------------------------------------------------- 
    50       IMPLICIT none 
    51       INTEGER :: dom_vvl_alloc 
    52       !!---------------------------------------------------------------------- 
    53  
    54       ALLOCATE(mut(jpi,jpj,jpk), muu(jpi,jpj,jpk), muv(jpi,jpj,jpk),       & 
    55                muf(jpi,jpj,jpk),                                           & 
    56                ee_t(jpi,jpj), ee_u(jpi,jpj), ee_v(jpi,jpj), ee_f(jpi,jpj), & 
    57                r2dt(jpk), Stat=dom_vvl_alloc) 
    58  
    59       IF(dom_vvl_alloc /= 0)THEN 
    60          CALL ctl_warn('dom_vvl_alloc: failed to allocate arrays') 
    61       END IF 
    62  
     49      ! 
     50      ALLOCATE( mut (jpi,jpj,jpk) , muu (jpi,jpj,jpk) , muv (jpi,jpj,jpk) , muf (jpi,jpj,jpk) ,    & 
     51         &      ee_t(jpi,jpj)     , ee_u(jpi,jpj)     , ee_v(jpi,jpj)     , ee_f(jpi,jpj)     ,    & 
     52         &      r2dt(jpk)                                                                     , STAT=dom_vvl_alloc) 
     53         ! 
     54      IF( lk_mpp             )   CALL mpp_sum ( dom_vvl_alloc ) 
     55      IF( dom_vvl_alloc /= 0 )   CALL ctl_warn('dom_vvl_alloc: failed to allocate arrays') 
     56      ! 
    6357   END FUNCTION dom_vvl_alloc 
    6458 
     
    7165      !!               ssh over the whole water column (scale factors) 
    7266      !!---------------------------------------------------------------------- 
    73       USE wrk_nemo, ONLY: wrk_use, wrk_release 
    74       USE wrk_nemo, ONLY: zs_t   => wrk_2d_1, zs_u_1 => wrk_2d_2, & 
    75                           zs_v_1 => wrk_2d_3 
     67      USE wrk_nemo, ONLY:   wrk_use, wrk_release 
     68      USE wrk_nemo, ONLY:   zs_t   => wrk_2d_1, zs_u_1 => wrk_2d_2 
     69      USE wrk_nemo, ONLY:   zs_v_1 => wrk_2d_3 
    7670      !! 
    7771      INTEGER  ::   ji, jj, jk 
    78       REAL(wp) ::   zcoefu , zcoefv   , zcoeff                   ! temporary scalars 
    79       REAL(wp) ::   zv_t_ij, zv_t_ip1j, zv_t_ijp1, zv_t_ip1jp1   !     -        - 
     72      REAL(wp) ::   zcoefu , zcoefv   , zcoeff                   ! local scalars 
     73      REAL(wp) ::   zv_t_ij, zv_t_ip1j, zv_t_ijp1, zv_t_ip1jp1   !   -      - 
    8074      !!---------------------------------------------------------------------- 
    8175 
    8276      IF(.not. wrk_use(2, 1,2,3))THEN 
    83          CALL ctl_stop('dom_vvl: ERROR - requested workspace arrays unavailable.') 
    84          RETURN 
     77         CALL ctl_stop('dom_vvl: ERROR - requested workspace arrays unavailable.')   ;   RETURN 
    8578      END IF 
    8679 
    87       IF(lwp)   THEN 
     80      IF(lwp) THEN 
    8881         WRITE(numout,*) 
    89          WRITE(numout,*) 'dom_vvl : Variable volume activated' 
     82         WRITE(numout,*) 'dom_vvl : Variable volume initialization' 
    9083         WRITE(numout,*) '~~~~~~~~  compute coef. used to spread ssh over each layers' 
    9184      ENDIF 
    92  
     85       
     86      IF( dom_vvl_alloc /= 0 )   CALL ctl_stop( 'STOP', 'dom_vvl : unable to allocate arrays' ) 
    9387 
    9488      fsdept(:,:,:) = gdept (:,:,:) 
Note: See TracChangeset for help on using the changeset viewer.