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

    r2528 r2715  
    2525   USE dom_oce         ! ocean space and time domain 
    2626   USE trdmod_oce      ! tracers trends 
    27    USE trdtra      ! tracers trends 
     27   USE trdtra          ! tracers trends 
    2828   USE in_out_manager  ! I/O manager 
    2929   USE dynspg_oce      ! choice/control of key cpp for surface pressure gradient 
    30    USE lib_mpp 
     30   USE lib_mpp         ! MPP library 
    3131   USE lbclnk          ! ocean lateral boundary condition (or mpp link)  
    3232   USE diaptr          ! poleward transport diagnostics 
     
    3939   PUBLIC   tra_adv_tvd    ! routine called by step.F90 
    4040 
    41    LOGICAL  :: l_trd       ! flag to compute trends 
     41   LOGICAL ::   l_trd   ! flag to compute trends 
    4242 
    4343   !! * Substitutions 
     
    6666      !!             - save the trends  
    6767      !!---------------------------------------------------------------------- 
    68       USE oce         , zwx => ua   ! use ua as workspace 
    69       USE oce         , zwy => va   ! use va as workspace 
    70       !! 
     68      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     69      USE oce     , ONLY:   zwx => ua        , zwy => va          ! (ua,va) used as workspace 
     70      USE wrk_nemo, ONLY:   zwi => wrk_3d_12 , zwz => wrk_3d_13   ! 3D workspace 
     71      ! 
    7172      INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    7273      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
     
    7677      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
    7778      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta             ! tracer trend  
    78       !! 
     79      ! 
    7980      INTEGER  ::   ji, jj, jk, jn           ! dummy loop indices   
    8081      REAL(wp) ::   z2dtt, zbtr, ztra        ! local scalar 
    8182      REAL(wp) ::   zfp_ui, zfp_vj, zfp_wk   !   -      - 
    8283      REAL(wp) ::   zfm_ui, zfm_vj, zfm_wk   !   -      - 
    83       REAL(wp), DIMENSION (jpi,jpj,jpk) ::   zwi, zwz   ! 3D workspace 
    8484      REAL(wp), DIMENSION (:,:,:), ALLOCATABLE ::   ztrdx, ztrdy, ztrdz 
    8585      !!---------------------------------------------------------------------- 
     86 
     87      IF( wrk_in_use(3, 12,13) ) THEN 
     88         CALL ctl_stop('tra_adv_tvd: requested workspace arrays unavailable')   ;   RETURN 
     89      ENDIF 
    8690 
    8791      IF( kt == nit000 )  THEN 
     
    235239         ENDIF 
    236240         ! 
    237       ENDDO 
     241      END DO 
    238242      ! 
    239243      IF( l_trd )  THEN 
    240244        DEALLOCATE( ztrdx )     ;     DEALLOCATE( ztrdy )     ;      DEALLOCATE( ztrdz )   
    241245      END IF 
     246      ! 
     247      IF( wrk_not_released(3, 12,13) )   CALL ctl_stop('tra_adv_tvd: failed to release workspace arrays') 
    242248      ! 
    243249   END SUBROUTINE tra_adv_tvd 
     
    257263      !!       in-space based differencing for fluid 
    258264      !!---------------------------------------------------------------------- 
     265      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     266      USE wrk_nemo, ONLY:   zbetup => wrk_3d_8  , zbetdo => wrk_3d_9    ! 3D workspace 
     267      USE wrk_nemo, ONLY:   zbup   => wrk_3d_10 , zbdo   => wrk_3d_11   !  -     - 
     268      ! 
    259269      REAL(wp), DIMENSION(jpk)         , INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
    260270      REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(in   ) ::   pbef, paft      ! before & after field 
    261271      REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(inout) ::   paa, pbb, pcc   ! monotonic fluxes in the 3 directions 
    262       !! 
    263       INTEGER ::   ji, jj, jk               ! dummy loop indices 
    264       INTEGER ::   ikm1 
    265       REAL(wp), DIMENSION (jpi,jpj,jpk) ::   zbetup, zbetdo 
    266       REAL(wp), DIMENSION (jpi,jpj,jpk) ::   zbup, zbdo 
    267       REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt 
    268       REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv 
    269       REAL(wp) ::   zup, zdo 
    270       !!---------------------------------------------------------------------- 
    271  
    272       zbig = 1.e+40 
    273       zrtrn = 1.e-15 
    274       zbetup(:,:,jpk) = 0.e0   ;   zbetdo(:,:,jpk) = 0.e0 
     272      ! 
     273      INTEGER ::   ji, jj, jk   ! dummy loop indices 
     274      INTEGER ::   ikm1         ! local integer 
     275      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt   ! local scalars 
     276      REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv, zup, zdo            !   -      - 
     277      !!---------------------------------------------------------------------- 
     278 
     279      IF( wrk_in_use(3, 8,9,10,11) ) THEN 
     280         CALL ctl_stop('nonosc: requested workspace array unavailable')   ;   RETURN 
     281      ENDIF 
     282 
     283      zbig  = 1.e+40_wp 
     284      zrtrn = 1.e-15_wp 
     285      zbetup(:,:,jpk) = 0._wp   ;   zbetdo(:,:,jpk) = 0._wp 
    275286 
    276287 
     
    348359      CALL lbc_lnk( paa, 'U', -1. )   ;   CALL lbc_lnk( pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
    349360      ! 
     361      IF( wrk_not_released(3, 8,9,10,11) )   CALL ctl_stop('nonosc: failed to release workspace arrays') 
     362      ! 
    350363   END SUBROUTINE nonosc 
    351364 
Note: See TracChangeset for help on using the changeset viewer.