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/NST_SRC/agrif_opa_sponge.F90 – 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/NST_SRC/agrif_opa_sponge.F90

    r2528 r2715  
    2727      !!--------------------------------------------- 
    2828#include "domzgr_substitute.h90" 
    29  
     29      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
     30      USE wrk_nemo, ONLY: wrk_2d_1 
     31      USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2 
     32      USE wrk_nemo, ONLY: wrk_3d_3, wrk_3d_4 
     33      USE wrk_nemo, ONLY: wrk_3d_7, wrk_3d_6 
     34      USE wrk_nemo, ONLY: wrk_3d_8 
     35      !! 
    3036      INTEGER :: ji,jj,jk 
    3137      INTEGER :: spongearea 
    3238      REAL(wp) :: timecoeff 
    3339      REAL(wp) :: zta, zsa, zabe1, zabe2, zbtr 
    34       REAL(wp), DIMENSION(jpi,jpj) :: localviscsponge 
    35       REAL(wp), DIMENSION(jpi,jpj,jpk) :: tbdiff, sbdiff 
    36       REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztu ,ztv, zsu ,zsv 
    37       REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztab 
     40      REAL(wp), POINTER, DIMENSION(:,:) :: localviscsponge 
     41      REAL(wp), POINTER, DIMENSION(:,:,:) :: tbdiff, sbdiff 
     42      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztu, zsu, ztv, zsv 
     43      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztab 
    3844 
    3945#if defined SPONGE 
     46      localviscsponge => wrk_2d_1 
     47      tbdiff => wrk_3d_1 ;sbdiff => wrk_3d_2 
     48      ztu => wrk_3d_3 ; zsu => wrk_3d_4 
     49      ztv => wrk_3d_7 ; zsv => wrk_3d_6 
     50      ztab => wrk_3d_8 
    4051 
    4152      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    4455      Agrif_UseSpecialValue = .TRUE. 
    4556      ztab = 0.e0 
    46       CALL Agrif_Bc_Variable(ztab, ta,calledweight=timecoeff,procname=interptn) 
     57      CALL Agrif_Bc_Variable(ztab, ta_id,calledweight=timecoeff,procname=interptn) 
    4758      Agrif_UseSpecialValue = .FALSE. 
    4859 
     
    5263      Agrif_SpecialValue=0. 
    5364      Agrif_UseSpecialValue = .TRUE. 
    54       CALL Agrif_Bc_Variable(ztab, sa,calledweight=timecoeff,procname=interpsn) 
     65      CALL Agrif_Bc_Variable(ztab, sa_id,calledweight=timecoeff,procname=interpsn) 
    5566      Agrif_UseSpecialValue = .FALSE. 
    5667 
    5768      sbdiff(:,:,:) = sb(:,:,:) - ztab(:,:,:) 
    58  
    5969 
    6070      spongearea = 2 + 2 * Agrif_irhox() 
     
    164174      !!--------------------------------------------- 
    165175#include "domzgr_substitute.h90" 
    166  
     176      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
     177      USE wrk_nemo, ONLY: wrk_2d_1 
     178      USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2 
     179      USE wrk_nemo, ONLY: wrk_3d_3, wrk_3d_4 
     180      USE wrk_nemo, ONLY: wrk_3d_5 
     181      !! 
    167182      INTEGER :: ji,jj,jk 
    168183      INTEGER :: spongearea 
    169184      REAL(wp) :: timecoeff 
    170185      REAL(wp) :: ze2u, ze1v, zua, zva, zbtr 
    171       REAL(wp), DIMENSION(jpi,jpj) :: localviscsponge 
    172       REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztab, ubdiff, vbdiff,rotdiff,hdivdiff 
     186      REAL(wp), POINTER, DIMENSION(:,:) :: localviscsponge 
     187      REAL(wp), POINTER, DIMENSION(:,:,:) :: ubdiff, vbdiff 
     188      REAL(wp), POINTER, DIMENSION(:,:,:) :: rotdiff, hdivdiff 
     189      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztab 
    173190 
    174191#if defined SPONGE 
     192      localviscsponge => wrk_2d_1 
     193      ubdiff => wrk_3d_1 ; vbdiff => wrk_3d_2 
     194      rotdiff => wrk_3d_3 ; hdivdiff => wrk_3d_4 
     195      ztab => wrk_3d_5 
    175196 
    176197      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    179200      Agrif_UseSpecialValue = ln_spc_dyn 
    180201      ztab = 0.e0 
    181       CALL Agrif_Bc_Variable(ztab, ua,calledweight=timecoeff,procname=interpun) 
     202      CALL Agrif_Bc_Variable(ztab, ua_id,calledweight=timecoeff,procname=interpun) 
    182203      Agrif_UseSpecialValue = .FALSE. 
    183204 
     
    187208      Agrif_SpecialValue=0. 
    188209      Agrif_UseSpecialValue = ln_spc_dyn 
    189       CALL Agrif_Bc_Variable(ztab, va,calledweight=timecoeff,procname=interpvn) 
     210      CALL Agrif_Bc_Variable(ztab, va_id,calledweight=timecoeff,procname=interpvn) 
    190211      Agrif_UseSpecialValue = .FALSE. 
    191212 
     
    250271         spongedoneU = .TRUE. 
    251272     
    252     spbtr3(:,:) = 1./( e1f(:,:) * e2f(:,:)) 
     273     spbtr3(:,:) = 1./( e1f(:,:) * e2f(:,:)) 
    253274      ENDIF 
    254275       
Note: See TracChangeset for help on using the changeset viewer.