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/TRA/traadv_qck.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/TRA/traadv_qck.F90

    r2715 r3294  
    2626   USE diaptr          ! poleward transport diagnostics 
    2727   USE trc_oce         ! share passive tracers/Ocean variables 
     28   USE wrk_nemo        ! Memory Allocation 
     29   USE timing          ! Timing 
    2830 
    2931   IMPLICIT NONE 
     
    4547CONTAINS 
    4648 
    47    SUBROUTINE tra_adv_qck ( kt, cdtype, p2dt, pun, pvn, pwn,      & 
     49   SUBROUTINE tra_adv_qck ( kt, kit000, cdtype, p2dt, pun, pvn, pwn,      & 
    4850      &                                       ptb, ptn, pta, kjpt ) 
    4951      !!---------------------------------------------------------------------- 
     
    8284      !!---------------------------------------------------------------------- 
    8385      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
     86      INTEGER                              , INTENT(in   ) ::   kit000          ! first time step index 
    8487      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    8588      INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
     
    9093      !!---------------------------------------------------------------------- 
    9194 
    92       IF( kt == nit000 )  THEN 
     95      ! 
     96      IF( nn_timing == 1 )  CALL timing_start('tra_adv_qck') 
     97      ! 
     98      IF( kt == kit000 )  THEN 
    9399         IF(lwp) WRITE(numout,*) 
    94100         IF(lwp) WRITE(numout,*) 'tra_adv_qck : 3rd order quickest advection scheme on ', cdtype 
     
    107113      CALL tra_adv_cen2_k( kt, cdtype, pwn,         ptn, pta, kjpt ) 
    108114      ! 
     115      IF( nn_timing == 1 )  CALL timing_stop('tra_adv_qck') 
     116      ! 
    109117   END SUBROUTINE tra_adv_qck 
    110118 
     
    115123      !! 
    116124      !!---------------------------------------------------------------------- 
    117       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    118125      USE oce     , ONLY:   zwx => ua       ! ua used as workspace 
    119       USE wrk_nemo, ONLY:   zfu => wrk_3d_1 , zfc => wrk_3d_2, zfd => wrk_3d_3   ! 3D workspace 
    120126      ! 
    121127      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    129135      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
    130136      REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     137      REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfc, zfd 
    131138      !---------------------------------------------------------------------- 
    132139      ! 
    133       IF( wrk_in_use(3, 1,2,3) ) THEN 
    134          CALL ctl_stop('tra_adv_qck_i: requested workspace arrays unavailable')   ;   RETURN 
    135       ENDIF 
     140      CALL wrk_alloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
    136141      !                                                          ! =========== 
    137142      DO jn = 1, kjpt                                            ! tracer loop 
     
    228233      END DO 
    229234      ! 
    230       IF( wrk_not_released(3, 1,2,3) )   CALL ctl_stop('tra_adv_qck_i: failed to release workspace arrays') 
     235      CALL wrk_dealloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
    231236      ! 
    232237   END SUBROUTINE tra_adv_qck_i 
     
    238243      !! 
    239244      !!---------------------------------------------------------------------- 
    240       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    241245      USE oce     , ONLY:   zwy => ua       ! ua used as workspace 
    242       USE wrk_nemo, ONLY:   zfu => wrk_3d_1 , zfc => wrk_3d_2, zfd => wrk_3d_3   ! 3D workspace 
    243246      ! 
    244247      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     
    252255      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
    253256      REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
     257      REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfc, zfd 
    254258      !---------------------------------------------------------------------- 
    255259      ! 
    256       IF(wrk_in_use(3, 1,2,3))THEN 
    257          CALL ctl_stop('tra_adv_qck_j: ERROR: requested workspace arrays unavailable') 
    258          RETURN 
    259       END IF 
     260      CALL wrk_alloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
     261      ! 
    260262      !                                                          ! =========== 
    261263      DO jn = 1, kjpt                                            ! tracer loop 
     
    359361      END DO 
    360362      ! 
    361       IF( wrk_not_released(3, 1,2,3) )   CALL ctl_stop('tra_adv_qck_j: failed to release workspace arrays') 
     363      CALL wrk_dealloc( jpi, jpj, jpk, zfu, zfc, zfd ) 
    362364      ! 
    363365   END SUBROUTINE tra_adv_qck_j 
     
    436438      REAL(wp) ::  zc, zcurv, zfho          !   -      - 
    437439      !---------------------------------------------------------------------- 
    438  
     440      ! 
     441      IF( nn_timing == 1 )  CALL timing_start('quickest') 
     442      ! 
    439443      DO jk = 1, jpkm1 
    440444         DO jj = 1, jpj 
     
    467471      END DO 
    468472      ! 
     473      IF( nn_timing == 1 )  CALL timing_stop('quickest') 
     474      ! 
    469475   END SUBROUTINE quickest 
    470476 
Note: See TracChangeset for help on using the changeset viewer.