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_qck.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_qck.F90

    r2528 r2715  
    115115      !! 
    116116      !!---------------------------------------------------------------------- 
    117       USE oce         , zwx => ua   ! use ua as workspace 
    118       !! 
    119       INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    120       CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    121       INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    122       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
    123       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun             ! i-velocity components 
    124       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
    125       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta             ! tracer trend  
    126       !! 
    127       INTEGER  :: ji, jj, jk, jn           ! dummy loop indices 
    128       REAL(wp) :: ztra, zbtr               ! local scalars 
    129       REAL(wp) :: zdir, zdx, zdt, zmsk     ! local scalars 
    130       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfu, zfc, zfd   ! 3D wokspace 
     117      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     118      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 
     120      ! 
     121      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     122      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
     123      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     124      REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt       ! vertical profile of tracer time-step 
     125      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun        ! i-velocity components 
     126      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn   ! before and now tracer fields 
     127      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta        ! tracer trend  
     128      !! 
     129      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
     130      REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
    131131      !---------------------------------------------------------------------- 
    132  
     132      ! 
     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 
    133136      !                                                          ! =========== 
    134137      DO jn = 1, kjpt                                            ! tracer loop 
     
    188191               DO ji = fs_2, fs_jpim1   ! vector opt.                
    189192                  zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 
    190                ENDDO 
     193               END DO 
    191194            END DO 
    192195         END DO 
     
    225228      END DO 
    226229      ! 
     230      IF( wrk_not_released(3, 1,2,3) )   CALL ctl_stop('tra_adv_qck_i: failed to release workspace arrays') 
     231      ! 
    227232   END SUBROUTINE tra_adv_qck_i 
    228233 
     
    233238      !! 
    234239      !!---------------------------------------------------------------------- 
    235       USE oce         , zwy => ua   ! use ua as workspace 
    236       !! 
    237       INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    238       CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    239       INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    240       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step 
    241       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pvn             ! j-velocity components 
    242       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn        ! before and now tracer fields 
    243       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta             ! tracer trend  
    244       !! 
    245       INTEGER  :: ji, jj, jk, jn           ! dummy loop indices 
    246       REAL(wp) :: ztra, zbtr               ! local scalars 
    247       REAL(wp) :: zdir, zdx, zdt, zmsk     ! local scalars 
    248       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zfu, zfc, zfd   ! 3D wokspace 
     240      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     241      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 
     243      ! 
     244      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     245      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
     246      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     247      REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt       ! vertical profile of tracer time-step 
     248      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pvn        ! j-velocity components 
     249      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb, ptn   ! before and now tracer fields 
     250      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta        ! tracer trend  
     251      !! 
     252      INTEGER  :: ji, jj, jk, jn   ! dummy loop indices 
     253      REAL(wp) :: ztra, zbtr, zdir, zdx, zdt, zmsk   ! local scalars 
    249254      !---------------------------------------------------------------------- 
    250  
     255      ! 
     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 
    251260      !                                                          ! =========== 
    252261      DO jn = 1, kjpt                                            ! tracer loop 
     
    350359      END DO 
    351360      ! 
     361      IF( wrk_not_released(3, 1,2,3) )   CALL ctl_stop('tra_adv_qck_j: failed to release workspace arrays') 
     362      ! 
    352363   END SUBROUTINE tra_adv_qck_j 
    353364 
     
    358369      !! 
    359370      !!---------------------------------------------------------------------- 
    360       USE oce         , zwz => ua   ! use ua as workspace 
    361       !! 
    362       INTEGER                              , INTENT(in   ) ::   kt              ! ocean time-step index 
    363       CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator) 
    364       INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers 
    365       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pwn             ! vertical velocity  
    366       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptn             ! before and now tracer fields 
    367       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta             ! tracer trend  
    368       !! 
     371      USE oce, ONLY:   zwz => ua   ! ua used as workspace 
     372      ! 
     373      INTEGER                              , INTENT(in   ) ::   kt       ! ocean time-step index 
     374      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype   ! =TRA or TRC (tracer indicator) 
     375      INTEGER                              , INTENT(in   ) ::   kjpt     ! number of tracers 
     376      REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pwn      ! vertical velocity  
     377      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptn      ! before and now tracer fields 
     378      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta      ! tracer trend  
     379      ! 
    369380      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    370       REAL(wp) ::   zbtr , ztra      ! temporary scalars 
     381      REAL(wp) ::   zbtr , ztra      ! local scalars 
    371382      !!---------------------------------------------------------------------- 
    372383 
Note: See TracChangeset for help on using the changeset viewer.