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/OPA_SRC/DYN/dynadv_ubs.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/OPA_SRC/DYN/dynadv_ubs.F90

    r2715 r3294  
    2222   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    2323   USE lib_mpp        ! MPP library 
     24   USE wrk_nemo        ! Memory Allocation 
     25   USE timing          ! Timing 
    2426 
    2527   IMPLICIT NONE 
    2628   PRIVATE 
    2729 
    28    REAL(wp), PARAMETER :: gamma1 = 1._wp/4._wp  ! =1/4 quick      ; =1/3  3rd order UBS 
     30   REAL(wp), PARAMETER :: gamma1 = 1._wp/3._wp  ! =1/4 quick      ; =1/3  3rd order UBS 
    2931   REAL(wp), PARAMETER :: gamma2 = 1._wp/8._wp  ! =0   2nd order  ; =1/8  4th order centred 
    3032 
     
    6264      !!      before velocity (forward in time).  
    6365      !!      Default value (hard coded in the begining of the module) are  
    64       !!      gamma1=1/4 and gamma2=1/8. 
     66      !!      gamma1=1/3 and gamma2=1/8. 
    6567      !! 
    6668      !! ** Action : - (ua,va) updated with the 3D advective momentum trends 
     
    6870      !! Reference : Shchepetkin & McWilliams, 2005, Ocean Modelling.  
    6971      !!---------------------------------------------------------------------- 
    70       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    71       USE oce     , ONLY:   zfu    => ta       , zfv    => sa      ! (ta,sa) used as 3D workspace 
    72       USE wrk_nemo, ONLY:   zfu_t  => wrk_3d_1 , zfv_t  =>wrk_3d_4 , zfu_uw =>wrk_3d_6   ! 3D workspace 
    73       USE wrk_nemo, ONLY:   zfu_f  => wrk_3d_2 , zfv_f  =>wrk_3d_5 , zfv_vw =>wrk_3d_7 
    74       USE wrk_nemo, ONLY:   zfw    => wrk_3d_3 
    75       USE wrk_nemo, ONLY:   zlu_uu => wrk_4d_1 , zlv_vv=>wrk_4d_3   ! 4D workspace 
    76       USE wrk_nemo, ONLY:   zlu_uv => wrk_4d_2 , zlv_vu=>wrk_4d_4 
    77       ! 
    7872      INTEGER, INTENT(in) ::   kt     ! ocean time-step index 
    7973      ! 
     
    8175      REAL(wp) ::   zbu, zbv    ! temporary scalars 
    8276      REAL(wp) ::   zui, zvj, zfuj, zfvi, zl_u, zl_v   ! temporary scalars 
     77      REAL(wp), POINTER, DIMENSION(:,:,:  ) ::  zfu, zfv 
     78      REAL(wp), POINTER, DIMENSION(:,:,:  ) ::  zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw 
     79      REAL(wp), POINTER, DIMENSION(:,:,:,:) ::  zlu_uu, zlv_vv, zlu_uv, zlv_vu 
    8380      !!---------------------------------------------------------------------- 
    84  
     81      ! 
     82      IF( nn_timing == 1 )  CALL timing_start('dyn_adv_ubs') 
     83      ! 
     84      CALL wrk_alloc( jpi, jpj, jpk,       zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 
     85      CALL wrk_alloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu                               ) 
     86      ! 
    8587      IF( kt == nit000 ) THEN 
    8688         IF(lwp) WRITE(numout,*) 
     
    8890         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    8991      ENDIF 
    90  
    91       ! Check that required workspace arrays are not already in use 
    92       IF( wrk_in_use(3, 1,2,3,4,5,6,7) .OR. wrk_in_use(4, 1,2,3,4) ) THEN 
    93          CALL ctl_stop('dyn_adv_ubs: requested workspace array unavailable')   ;   RETURN 
    94       ENDIF 
    95  
     92      ! 
    9693      zfu_t(:,:,:) = 0._wp 
    9794      zfv_t(:,:,:) = 0._wp 
     
    254251         &                       tab3d_2=va, clinfo2=           ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    255252      ! 
    256       IF( wrk_not_released(3, 1,2,3,4,5,6,7) .OR.   & 
    257           wrk_not_released(4, 1,2,3,4)       )   CALL ctl_stop('dyn_adv_ubs: failed to release workspace array') 
     253      CALL wrk_dealloc( jpi, jpj, jpk,       zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 
     254      CALL wrk_dealloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu                               ) 
     255      ! 
     256      IF( nn_timing == 1 )  CALL timing_stop('dyn_adv_ubs') 
    258257      ! 
    259258   END SUBROUTINE dyn_adv_ubs 
Note: See TracChangeset for help on using the changeset viewer.