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 3294 for trunk/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90 – NEMO

Ignore:
Timestamp:
2012-01-28T17:44:18+01:00 (12 years ago)
Author:
rblod
Message:

Merge of 3.4beta into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90

    r2715 r3294  
    2727   USE lbclnk         ! lateral boundary condition - MPP exchanges 
    2828   USE lib_mpp        ! MPP library 
     29   USE wrk_nemo       ! work arrays 
    2930   USE in_out_manager ! I/O manager 
    3031   USE prtctl         ! Print control 
     
    3435 
    3536   PUBLIC   lim_rhg_2         ! routine called by lim_dyn 
    36    PUBLIC   lim_rhg_alloc_2   ! routine called by lim_dyn_alloc_2 
    3737 
    3838   REAL(wp) ::   rzero   = 0._wp   ! constant value: zero 
    3939   REAL(wp) ::   rone    = 1._wp   !            and  one 
    40  
    41    ! 2D workspaces for lim_rhg_2. Can't use wrk_nemo module for them because 
    42    ! extent in 2nd dimension is > jpj. 
    43    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   zu0, zv0 
    44    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   zu_n, zv_n 
    45    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   zu_a, zv_a 
    46    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   zviszeta, zviseta 
    47    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   zzfrld, zztms 
    48    REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   zi1, zi2, zmasst, zpresh 
    4940 
    5041   !! * Substitutions 
     
    5647   !!---------------------------------------------------------------------- 
    5748CONTAINS 
    58  
    59    INTEGER FUNCTION lim_rhg_alloc_2() 
    60       !!------------------------------------------------------------------- 
    61       !!               ***  FUNCTION lim_rhg_alloc_2  *** 
    62       !!------------------------------------------------------------------- 
    63       ALLOCATE( zu0(jpi,0:jpj+1),      zv0(jpi,0:jpj+1),     & 
    64          &      zu_n(jpi,0:jpj+1),     zv_n(jpi,0:jpj+1),    & 
    65          &      zu_a(jpi,0:jpj+1),     zv_a(jpi,0:jpj+1),    & 
    66          &      zviszeta(jpi,0:jpj+1), zviseta(jpi,0:jpj+1), & 
    67          &      zzfrld(jpi,0:jpj+1),   zztms(jpi,0:jpj+1),   & 
    68          &      zi1(jpi,0:jpj+1),      zi2(jpi,0:jpj+1),     & 
    69          &      zmasst(jpi,0:jpj+1),   zpresh(jpi,0:jpj+1),  & 
    70          &      Stat=lim_rhg_alloc_2) 
    71          ! 
    72       IF( lim_rhg_alloc_2 /= 0 )   CALL ctl_warn('lim_rhg_alloc_2 : failed to allocate arrays') 
    73       ! 
    74    END FUNCTION lim_rhg_alloc_2 
    75  
    7649 
    7750   SUBROUTINE lim_rhg_2( k_j1, k_jpj ) 
     
    8760      !!              at I-point 
    8861      !!------------------------------------------------------------------- 
    89       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    90       USE wrk_nemo, ONLY: zfrld => wrk_2d_1, zmass => wrk_2d_2, zcorl => wrk_2d_3 
    91       USE wrk_nemo, ONLY: za1ct => wrk_2d_4, za2ct => wrk_2d_5, zresr => wrk_2d_6 
    92       USE wrk_nemo, ONLY: zc1u  => wrk_2d_7, zc1v  => wrk_2d_8, zc2u => wrk_2d_9 
    93       USE wrk_nemo, ONLY: zc2v  => wrk_2d_10, zsang => wrk_2d_11 
    94       !! 
    9562      INTEGER, INTENT(in) ::   k_j1    ! southern j-index for ice computation 
    9663      INTEGER, INTENT(in) ::   k_jpj   ! northern j-index for ice computation 
     
    11380      REAL(wp) ::   zs21_11, zs21_12, zs21_21, zs21_22 
    11481      REAL(wp) ::   zs22_11, zs22_12, zs22_21, zs22_22 
     82      REAL(wp), POINTER, DIMENSION(:,:) ::   zfrld, zmass, zcorl 
     83      REAL(wp), POINTER, DIMENSION(:,:) ::   za1ct, za2ct, zresr 
     84      REAL(wp), POINTER, DIMENSION(:,:) ::   zc1u, zc1v, zc2u, zc2v 
     85      REAL(wp), POINTER, DIMENSION(:,:) ::   zsang 
     86      REAL(wp), POINTER, DIMENSION(:,:) ::   zu0, zv0 
     87      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_n, zv_n 
     88      REAL(wp), POINTER, DIMENSION(:,:) ::   zu_a, zv_a 
     89      REAL(wp), POINTER, DIMENSION(:,:) ::   zviszeta, zviseta 
     90      REAL(wp), POINTER, DIMENSION(:,:) ::   zzfrld, zztms 
     91      REAL(wp), POINTER, DIMENSION(:,:) ::   zi1, zi2, zmasst, zpresh 
    11592      !!------------------------------------------------------------------- 
    11693       
     94      CALL wrk_alloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr ) 
     95      CALL wrk_alloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang ) 
     96      CALL wrk_alloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 ) 
     97      CALL wrk_alloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 ) 
     98 
    11799      !  Store initial velocities 
    118100      !  ---------------- 
     
    592574      ENDIF 
    593575 
     576      CALL wrk_dealloc( jpi,jpj, zfrld, zmass, zcorl, za1ct, za2ct, zresr ) 
     577      CALL wrk_dealloc( jpi,jpj, zc1u , zc1v , zc2u , zc2v , zsang ) 
     578      CALL wrk_dealloc( jpi,jpj+2, zu0, zv0, zu_n, zv_n, zu_a, zv_a, zviszeta, zviseta, kjstart = 0 ) 
     579      CALL wrk_dealloc( jpi,jpj+2, zzfrld, zztms, zi1, zi2, zmasst, zpresh, kjstart = 0 ) 
     580 
    594581   END SUBROUTINE lim_rhg_2 
    595582 
Note: See TracChangeset for help on using the changeset viewer.