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 11467 for NEMO/branches/UKMO/dev_r10037_GPU/src/OCE – NEMO

Ignore:
Timestamp:
2019-08-22T11:49:08+02:00 (5 years ago)
Author:
andmirek
Message:

Ticket #2197 allocate arrays at the beggining of the run

Location:
NEMO/branches/UKMO/dev_r10037_GPU/src/OCE
Files:
1 added
17 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DIA/diahsb.F90

    r10843 r11467  
    6969      !! 
    7070      !!--------------------------------------------------------------------------- 
     71      USE scoce, ONLY : z2d0 => scr2D1, z2d1 => scr2D2, zwrk => scr1 
    7172      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    7273      ! 
     
    8182      REAL(wp)   ::   z_wn_trd_t , z_wn_trd_s     !    -     - 
    8283      REAL(wp)   ::   z_ssh_hc , z_ssh_sc         !    -     - 
    83       REAL(wp), DIMENSION(jpi,jpj)       ::   z2d0, z2d1   ! 2D workspace 
    84       REAL(wp), DIMENSION(jpi,jpj,jpkm1) ::   zwrk         ! 3D workspace 
    8584      !!--------------------------------------------------------------------------- 
    8685      IF( ln_timing )   CALL timing_start('dia_hsb')       
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DOM/dommsk.F90

    r10847 r11467  
    9393      INTEGER  ::   ijf, ijl       !   -       - 
    9494      INTEGER  ::   iktop, ikbot   !   -       - 
    95       INTEGER  ::   ios, inum 
     95      INTEGER  ::   ios 
    9696      !! 
    9797      INTEGER  :: inum             !  logical unit for shlat2d 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DOM/domvvl.F90

    r10843 r11467  
    288288      !! Reference  : Leclair, M., and Madec, G. 2011, Ocean Modelling. 
    289289      !!---------------------------------------------------------------------- 
     290      USE scoce, ONLY : zht => scr2D1, z_scale => scr2D2, & 
     291                       zwu => scr2D3, zwv=> scr2D4,      & 
     292                       zhdiv => scr2D5, ze3t => scr1 
    290293      INTEGER, INTENT( in )           ::   kt      ! time step 
    291294      INTEGER, INTENT( in ), OPTIONAL ::   kcall   ! optional argument indicating call sequence 
     
    295298      REAL(wp)               ::   z2dt, z_tmin, z_tmax  ! local scalars 
    296299      LOGICAL                ::   ll_do_bclinic         ! local logical 
    297       REAL(wp), DIMENSION(jpi,jpj)     ::   zht, z_scale, zwu, zwv, zhdiv 
    298       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t 
    299300      !!---------------------------------------------------------------------- 
    300301      ! 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DYN/dynhpg.F90

    r10843 r11467  
    272272      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    273273      !!---------------------------------------------------------------------- 
     274      USE scoce, ONLY : zhpi => scr1, zhpj => scr2 
    274275      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    275276      ! 
    276277      INTEGER  ::   ji, jj, jk       ! dummy loop indices 
    277278      REAL(wp) ::   zcoef0, zcoef1   ! temporary scalars 
    278       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj 
    279279      !!---------------------------------------------------------------------- 
    280280      ! 
     
    332332      !! ** Action  : - Update (ua,va) with the now hydrastatic pressure trend 
    333333      !!---------------------------------------------------------------------- 
     334      USE scoce, ONLY : zhpi => scr1, zhpj => scr2 
    334335      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    335336      !! 
     
    337338      INTEGER  ::   iku, ikv                         ! temporary integers 
    338339      REAL(wp) ::   zcoef0, zcoef1, zcoef2, zcoef3   ! temporary scalars 
    339       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zhpi, zhpj 
    340340      !!---------------------------------------------------------------------- 
    341341      ! 
     
    428428      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    429429      !!---------------------------------------------------------------------- 
     430      USE scoce, ONLY : zhpi => scr1, zhpj => scr2, & 
     431                       zcpx => scr2D1, zcpy => scr2D2   ! W/D pressure filter 
    430432      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    431433      !! 
     
    433435      REAL(wp) ::   zcoef0, zuap, zvap, znad, ztmp       ! temporary scalars 
    434436      LOGICAL  ::   ll_tmp1, ll_tmp2                     ! local logical variables 
    435       REAL(wp), DIMENSION(jpi,jpj,jpk)      ::   zhpi, zhpj 
    436       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   zcpx, zcpy   !W/D pressure filter 
    437       !!---------------------------------------------------------------------- 
    438       ! 
    439       IF( ln_wd_il ) ALLOCATE(zcpx(jpi,jpj), zcpy(jpi,jpj)) 
     437      !!---------------------------------------------------------------------- 
    440438      ! 
    441439      IF( kt == nit000 ) THEN 
     
    551549      END DO 
    552550      ! 
    553       IF( ln_wd_il )  DEALLOCATE( zcpx , zcpy ) 
    554       ! 
    555551   END SUBROUTINE hpg_sco 
    556552 
     
    575571      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    576572      !!---------------------------------------------------------------------- 
     573      USE scoce, ONLY : zhpi => scr1, zhpj => scr2, & 
     574                       zrhdtop_oce => scr2D1,      & 
     575                       zts_top => scr3D1 
    577576      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    578577      !! 
    579578      INTEGER  ::   ji, jj, jk, ikt, iktp1i, iktp1j   ! dummy loop indices 
    580579      REAL(wp) ::   zcoef0, zuap, zvap, znad          ! temporary scalars 
    581       REAL(wp), DIMENSION(jpi,jpj,jpk ) ::  zhpi, zhpj 
    582       REAL(wp), DIMENSION(jpi,jpj,jpts) ::  zts_top 
    583       REAL(wp), DIMENSION(jpi,jpj)      ::  zrhdtop_oce 
     580!     REAL(wp), DIMENSION(jpi,jpj,jpts) ::  zts_top 
    584581      !!---------------------------------------------------------------------- 
    585582      ! 
     
    669666      !! Reference: Shchepetkin and McWilliams, J. Geophys. Res., 108(C3), 3090, 2003 
    670667      !!---------------------------------------------------------------------- 
     668      USE scoce, ONLY : zcpx => scr2D1, zcpy => scr2D2 
    671669      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    672670      !! 
     
    680678      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   drhox, drhoy, drhoz, drhou, drhov, drhow 
    681679      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   rho_i, rho_j, rho_k 
    682       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   zcpx, zcpy   !W/D pressure filter 
    683680      !!---------------------------------------------------------------------- 
    684681      ! 
    685682      IF( ln_wd_il ) THEN 
    686          ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 
    687683        DO jj = 2, jpjm1 
    688684           DO ji = 2, jpim1  
     
    926922      END DO 
    927923      ! 
    928       IF( ln_wd_il )   DEALLOCATE( zcpx, zcpy ) 
    929       ! 
    930924   END SUBROUTINE hpg_djc 
    931925 
     
    942936      !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 
    943937      !!---------------------------------------------------------------------- 
     938      USE scoce, ONLY : zdept => scr1, zrhh => scr2,                          & 
     939                       zhpi => scr3, zu => scr4, zv => scr5, fsp => scr6,    & 
     940                       xsp => scr7, asp => scr8, bsp => scr9,                & 
     941                       csp => scr10, dsp => scr11,                           & 
     942                       zsshu_n => scr2D1, zsshv_n => scr2D2, & 
     943                       zcpx => scr2D3, zcpy => scr2D4 
    944944      INTEGER, PARAMETER  :: polynomial_type = 1    ! 1: cubic spline, 2: linear 
    945945      INTEGER, INTENT(in) ::   kt                   ! ocean time-step index 
     
    954954      REAL(wp) :: zrhdt1 
    955955      REAL(wp) :: zdpdx1, zdpdx2, zdpdy1, zdpdy2 
    956       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdept, zrhh 
    957       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 
    958       REAL(wp), DIMENSION(jpi,jpj)   ::   zsshu_n, zsshv_n 
    959       REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   zcpx, zcpy   !W/D pressure filter 
    960956      !!---------------------------------------------------------------------- 
    961957      ! 
     
    972968 
    973969      IF( ln_wd_il ) THEN 
    974          ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 
    975970         DO jj = 2, jpjm1 
    976971           DO ji = 2, jpim1  
     
    12711266      END DO 
    12721267      ! 
    1273       IF( ln_wd_il )   DEALLOCATE( zcpx, zcpy ) 
    1274       ! 
    12751268   END SUBROUTINE hpg_prj 
    12761269 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DYN/dynnxt.F90

    r10843 r11467  
    9292      !!               un,vn   now horizontal velocity of next time-step 
    9393      !!---------------------------------------------------------------------- 
     94      USE scoce, ONLY : zue => scr2D1, zve => scr2D2, & 
     95                       ze3u_f => scr1, ze3v_f => scr2, zua => scr3, zva => scr4 
    9496      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    9597      ! 
     
    98100      REAL(wp) ::   zue3a, zue3n, zue3b, zuf, zcoef    ! local scalars 
    99101      REAL(wp) ::   zve3a, zve3n, zve3b, zvf, z1_2dt   !   -      - 
    100       REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zue, zve 
    101       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3u_f, ze3v_f, zua, zva  
    102102      !!---------------------------------------------------------------------- 
    103103      ! 
    104104      IF( ln_timing    )   CALL timing_start('dyn_nxt') 
    105       IF( ln_dynspg_ts )   ALLOCATE( zue(jpi,jpj)     , zve(jpi,jpj)     ) 
    106       IF( l_trddyn     )   ALLOCATE( zua(jpi,jpj,jpk) , zva(jpi,jpj,jpk) ) 
    107105      ! 
    108106      IF( kt == nit000 ) THEN 
     
    275273            ELSE                          ! Asselin filter applied on thickness weighted velocity 
    276274               ! 
    277                ALLOCATE( ze3u_f(jpi,jpj,jpk) , ze3v_f(jpi,jpj,jpk) ) 
    278275               ! Before filtered scale factor at (u/v)-points stored in ze3u_f, ze3v_f 
    279276               CALL dom_vvl_interpol( e3t_b(:,:,:), ze3u_f, 'U' ) 
     
    302299               e3v_b(:,:,1:jpkm1) = ze3v_f(:,:,1:jpkm1) 
    303300               ! 
    304                DEALLOCATE( ze3u_f , ze3v_f ) 
    305301            ENDIF 
    306302            ! 
     
    368364         &                       tab3d_2=vn, clinfo2=' Vn: '       , mask2=vmask ) 
    369365      !  
    370       IF( ln_dynspg_ts )   DEALLOCATE( zue, zve ) 
    371       IF( l_trddyn     )   DEALLOCATE( zua, zva ) 
    372366      IF( ln_timing    )   CALL timing_stop('dyn_nxt') 
    373367      ! 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DYN/dynspg.F90

    r10843 r11467  
    7171      !!             period is used to prevent the divergence of odd and even time step. 
    7272      !!---------------------------------------------------------------------- 
     73      USE scoce, ONLY : zpice => scr2D1, ztrdu => scr1, ztrdv => scr2 
    7374      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    7475      ! 
    7576      INTEGER  ::   ji, jj, jk                   ! dummy loop indices 
    7677      REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r, zld   ! local scalars 
    77       REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zpice 
    78       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv 
    7978      !!---------------------------------------------------------------------- 
    8079      ! 
     
    8281      ! 
    8382      IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends 
    84          ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) )  
    8583         ztrdu(:,:,:) = ua(:,:,:) 
    8684         ztrdv(:,:,:) = va(:,:,:) 
     
    134132         ! 
    135133         IF( ln_ice_embd ) THEN              !== embedded sea ice: Pressure gradient due to snow-ice mass ==! 
    136             ALLOCATE( zpice(jpi,jpj) ) 
    137134            zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
    138135            zgrau0r     = - grav * r1_rau0 
     
    144141               END DO 
    145142            END DO 
    146             DEALLOCATE( zpice )          
    147143         ENDIF 
    148144         ! 
     
    169165         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    170166         CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 
    171          DEALLOCATE( ztrdu , ztrdv )  
    172167      ENDIF 
    173168      !                                      ! print mean trends (used for debugging) 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DYN/dynvor.F90

    r10843 r11467  
    205205      !! ** Action : - Update (ua,va) with the now vorticity term trend 
    206206      !!---------------------------------------------------------------------- 
     207      USE scoce, ONLY : zwx => scr2D1, zwy => scr2D2, zwz  => scr2D3, zwt => scr2D4 
    207208      INTEGER                         , INTENT(in   ) ::   kt               ! ocean time-step index 
    208209      INTEGER                         , INTENT(in   ) ::   kvor             ! total, planetary, relative, or metric 
     
    212213      INTEGER  ::   ji, jj, jk           ! dummy loop indices 
    213214      REAL(wp) ::   zx1, zy1, zx2, zy2   ! local scalars 
    214       REAL(wp), DIMENSION(jpi,jpj) ::   zwx, zwy, zwz, zwt   ! 2D workspace 
    215215      !!---------------------------------------------------------------------- 
    216216      ! 
     
    327327      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    328328      !!---------------------------------------------------------------------- 
     329      USE scoce, ONLY : zwx => scr2D1, zwy => scr2D2, zwz => scr2D3 
    329330      INTEGER                         , INTENT(in   ) ::   kt          ! ocean time-step index 
    330331      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
     
    334335      INTEGER  ::   ji, jj, jk           ! dummy loop indices 
    335336      REAL(wp) ::   zx1, zy1, zx2, zy2   ! local scalars 
    336       REAL(wp), DIMENSION(jpi,jpj) ::   zwx, zwy, zwz   ! 2D workspace 
    337337      !!---------------------------------------------------------------------- 
    338338      ! 
     
    435435      !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 
    436436      !!---------------------------------------------------------------------- 
     437      USE scoce, ONLY : zwx => scr2D1, zwy => scr2D2, & 
     438                       zwz => scr2D3, zww => scr2D4    ! 2D workspace 
    437439      INTEGER                         , INTENT(in   ) ::   kt          ! ocean time-step index 
    438440      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
     
    442444      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    443445      REAL(wp) ::   zuav, zvau   ! local scalars 
    444       REAL(wp), DIMENSION(jpi,jpj) ::   zwx, zwy, zwz, zww   ! 2D workspace 
    445446      !!---------------------------------------------------------------------- 
    446447      ! 
     
    539540      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
    540541      !!---------------------------------------------------------------------- 
     542      USE scoce, ONLY : zwx => scr2D1, zwy => scr2D2, zwz => scr2D3, z1_e3f => scr2D4, & 
     543                       ztnw => scr2D5, ztne => scr2D6, ztsw => scr2D7, ztse => scr2D8 
    541544      INTEGER                         , INTENT(in   ) ::   kt          ! ocean time-step index 
    542545      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
     
    548551      REAL(wp) ::   zua, zva     ! local scalars 
    549552      REAL(wp) ::   zmsk, ze3f   ! local scalars 
    550       REAL(wp), DIMENSION(jpi,jpj) ::   zwx , zwy , zwz , z1_e3f 
    551       REAL(wp), DIMENSION(jpi,jpj) ::   ztnw, ztne, ztsw, ztse 
    552553      !!---------------------------------------------------------------------- 
    553554      ! 
     
    692693      !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 
    693694      !!---------------------------------------------------------------------- 
     695      USE scoce, ONLY : zwx => scr2D1, zwy => scr2D2, zwz => scr2D3, z1_e3f => scr2D4, & 
     696                       ztnw => scr2D1, ztne => scr2D2, ztsw => scr2D3, ztse => scr2D4 
    694697      INTEGER                         , INTENT(in   ) ::   kt          ! ocean time-step index 
    695698      INTEGER                         , INTENT(in   ) ::   kvor        ! total, planetary, relative, or metric 
     
    701704      REAL(wp) ::   zua, zva       ! local scalars 
    702705      REAL(wp) ::   zmsk, z1_e3t   ! local scalars 
    703       REAL(wp), DIMENSION(jpi,jpj) ::   zwx , zwy , zwz 
    704       REAL(wp), DIMENSION(jpi,jpj) ::   ztnw, ztne, ztsw, ztse 
    705706      !!---------------------------------------------------------------------- 
    706707      ! 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DYN/dynzdf.F90

    r10843 r11467  
    6565      !! ** Action :   (ua,va)   after velocity  
    6666      !!--------------------------------------------------------------------- 
     67      USE scoce, ONLY : zwi => scr1, zwd => scr2, zws => scr3, &    ! 3D workspace 
     68                       ztrdu => scr3 , ztrdv => scr4 
    6769      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    6870      ! 
     
    7173      REAL(wp) ::   zzwi, ze3ua, zdt   ! local scalars 
    7274      REAL(wp) ::   zzws, ze3va        !   -      - 
    73       REAL(wp), DIMENSION(jpi,jpj,jpk)        ::  zwi, zwd, zws   ! 3D workspace  
    74       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrdu, ztrdv   !  -      - 
    7575      !!--------------------------------------------------------------------- 
    7676      ! 
     
    9696      ! 
    9797      IF( l_trddyn )   THEN         !* temporary save of ta and sa trends 
    98          ALLOCATE( ztrdu(jpi,jpj,jpk), ztrdv(jpi,jpj,jpk) )  
    9998         ztrdu(:,:,:) = ua(:,:,:) 
    10099         ztrdv(:,:,:) = va(:,:,:) 
     
    391390         ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) / r2dt - ztrdv(:,:,:) 
    392391         CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt ) 
    393          DEALLOCATE( ztrdu, ztrdv )  
    394392      ENDIF 
    395393      !                                          ! print mean trends (used for debugging) 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/DYN/sshwzv.F90

    r10843 r11467  
    6666      !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling. 
    6767      !!---------------------------------------------------------------------- 
     68      use scoce, ONLY : zhdiv => scr2D1 
    6869      INTEGER, INTENT(in) ::   kt   ! time step 
    6970      !  
    7071      INTEGER  ::   jk            ! dummy loop indice 
    7172      REAL(wp) ::   z2dt, zcoef   ! local scalars 
    72       REAL(wp), DIMENSION(jpi,jpj) ::   zhdiv   ! 2D workspace 
    7373      !!---------------------------------------------------------------------- 
    7474      ! 
     
    140140      !! Reference  : Leclair, M., and G. Madec, 2009, Ocean Modelling. 
    141141      !!---------------------------------------------------------------------- 
     142      USE scoce, ONLY : zhdiv => scr1 
    142143      INTEGER, INTENT(in) ::   kt   ! time step 
    143144      ! 
    144145      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    145146      REAL(wp) ::   z1_2dt       ! local scalars 
    146       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zhdiv 
    147147      !!---------------------------------------------------------------------- 
    148148      ! 
     
    163163      ! 
    164164      IF( ln_vvl_ztilde .OR. ln_vvl_layer ) THEN      ! z_tilde and layer cases 
    165          ALLOCATE( zhdiv(jpi,jpj,jpk) )  
    166165         ! 
    167166         DO jk = 1, jpkm1 
     
    183182         END DO 
    184183         !          IF( ln_vvl_layer ) wn(:,:,:) = 0.e0 
    185          DEALLOCATE( zhdiv )  
    186184      ELSE   ! z_star and linear free surface cases 
    187185         DO jk = jpkm1, 1, -1                       ! integrate from the bottom the hor. divergence 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/LDF/ldfslp.F90

    r10843 r11467  
    106106      !!               of now neutral surfaces at u-, w- and v- w-points, resp. 
    107107      !!---------------------------------------------------------------------- 
     108      USE scoce, ONLY : zslpml_hmlpu => scr2D1, zslpml_hmlpv => scr2D2, & 
     109                       zgru => scr1, zwz => scr2, zdzr => scr3, & 
     110                       zgrv => scr4, zww => scr5 
    108111      INTEGER , INTENT(in)                   ::   kt    ! ocean time-step index 
    109112      REAL(wp), INTENT(in), DIMENSION(:,:,:) ::   prd   ! in situ density 
     
    118121      REAL(wp) ::   zck, zfk,      zbw             !   -      - 
    119122      REAL(wp) ::   zdepu, zdepv                   !   -      - 
    120       REAL(wp), DIMENSION(jpi,jpj)     ::  zslpml_hmlpu, zslpml_hmlpv 
    121       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zgru, zwz, zdzr 
    122       REAL(wp), DIMENSION(jpi,jpj,jpk) ::  zgrv, zww 
    123123      !!---------------------------------------------------------------------- 
    124124      ! 
     
    389389      !!             - wslp2              squared slope of neutral surfaces at w-points. 
    390390      !!---------------------------------------------------------------------- 
     391      USE scoce, ONLY : z1_mlbw => scr2D1, zalbet => scr1 
    391392      INTEGER, INTENT( in ) ::   kt             ! ocean time-step index 
    392393      !! 
     
    401402      REAL(wp) ::   zdzrho_raw 
    402403      REAL(wp) ::   zbeta0, ze3_e1, ze3_e2 
    403       REAL(wp), DIMENSION(jpi,jpj)     ::   z1_mlbw 
    404       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zalbet 
    405404      REAL(wp), DIMENSION(jpi,jpj,jpk,0:1) ::   zdxrho , zdyrho, zdzrho     ! Horizontal and vertical density gradients 
    406405      REAL(wp), DIMENSION(jpi,jpj,0:1,0:1) ::   zti_mlb, ztj_mlb            ! for Griffies operator only 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/TRA/traadv.F90

    r10843 r11467  
    8383      !! ** Method  : - Update (ua,va) with the advection term following nadv 
    8484      !!---------------------------------------------------------------------- 
     85      USE scoce, ONLY : zun => scr1, zvn => scr2, zwn => scr3, &  ! 3D workspace 
     86                       ztrdt => scr4, ztrds => scr5 
    8587      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    8688      ! 
    8789      INTEGER ::   jk   ! dummy loop index 
    88       REAL(wp), DIMENSION(jpi,jpj,jpk)        :: zun, zvn, zwn   ! 3D workspace 
    89       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrdt, ztrds 
    9090      !!---------------------------------------------------------------------- 
    9191      ! 
     
    138138      ! 
    139139      IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    140          ALLOCATE( ztrdt(jpi,jpj,jpk), ztrds(jpi,jpj,jpk) ) 
    141140         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    142141         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     
    165164         CALL trd_tra( kt, 'TRA', jp_tem, jptra_totad, ztrdt ) 
    166165         CALL trd_tra( kt, 'TRA', jp_sal, jptra_totad, ztrds ) 
    167          DEALLOCATE( ztrdt, ztrds ) 
    168166      ENDIF 
    169167      !                                              ! print mean trends (used for debugging) 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/TRA/tranxt.F90

    r10843 r11467  
    8686      !! ** Action  : - tsb & tsn ready for the next time step 
    8787      !!---------------------------------------------------------------------- 
     88      USE scoce, ONLY : ztrdt => scr1, ztrds => scr2  
    8889      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    8990      !! 
    9091      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
    9192      REAL(wp) ::   zfact            ! local scalars 
    92       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdt, ztrds 
    9393      !!---------------------------------------------------------------------- 
    9494      ! 
     
    118118      ! trends computation initialisation 
    119119      IF( l_trdtra )   THEN                     
    120          ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) ) 
    121120         ztrdt(:,:,jpk) = 0._wp 
    122121         ztrds(:,:,jpk) = 0._wp 
     
    178177         CALL trd_tra( kt, 'TRA', jp_sal, jptra_atf, ztrds ) 
    179178      END IF 
    180       IF( l_trdtra )   DEALLOCATE( ztrdt , ztrds ) 
    181179      ! 
    182180      !                        ! control print 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/TRA/traqsr.F90

    r10843 r11467  
    101101      !!              Morel, A. et Berthon, JF, 1989, Limnol Oceanogr 34(8), 1545-1562 
    102102      !!---------------------------------------------------------------------- 
     103      USE scoce, ONLY : zekb => scr2D1, zekg => scr2D2, zekr => scr2D3, & 
     104                       ze0 => scr1, ze1 => scr2, ze2 => scr3, ze3 => scr4, zea => scr5, ztrdt => scr6, & 
     105                       zetot => scr7, zchl3d => scr8  
    103106      INTEGER, INTENT(in) ::   kt     ! ocean time-step 
    104107      ! 
     
    111114      REAL(wp) ::   zCb, zCmax, zze, zpsi, zpsimax, zdelpsi, zCtot, zCze 
    112115      REAL(wp) ::   zlogc, zlogc2, zlogc3  
    113       REAL(wp), ALLOCATABLE, DIMENSION(:,:)   :: zekb, zekg, zekr 
    114       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 
    115       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zetot, zchl3d 
    116116      !!---------------------------------------------------------------------- 
    117117      ! 
     
    125125      ! 
    126126      IF( l_trdtra ) THEN      ! trends diagnostic: save the input temperature trend 
    127          ALLOCATE( ztrdt(jpi,jpj,jpk) )  
    128127         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    129128      ENDIF 
     
    158157         ! 
    159158      CASE( np_RGB , np_RGBc )         !==  R-G-B fluxes  ==! 
    160          ! 
    161          ALLOCATE( zekb(jpi,jpj)     , zekg(jpi,jpj)     , zekr  (jpi,jpj)     , & 
    162             &      ze0 (jpi,jpj,jpk) , ze1 (jpi,jpj,jpk) , ze2   (jpi,jpj,jpk) , & 
    163             &      ze3 (jpi,jpj,jpk) , zea (jpi,jpj,jpk) , zchl3d(jpi,jpj,jpk)   )  
    164159         ! 
    165160         IF( nqsr == np_RGBc ) THEN          !*  Variable Chlorophyll 
     
    239234         END DO 
    240235         ! 
    241          DEALLOCATE( zekb , zekg , zekr , ze0 , ze1 , ze2 , ze3 , zea , zchl3d )  
    242          ! 
    243236      CASE( np_2BD  )            !==  2-bands fluxes  ==! 
    244237         ! 
     
    278271      ! 
    279272      IF( iom_use('qsr3d') ) THEN      ! output the shortwave Radiation distribution 
    280          ALLOCATE( zetot(jpi,jpj,jpk) ) 
    281273         zetot(:,:,nksr+1:jpk) = 0._wp     ! below ~400m set to zero 
    282274         DO jk = nksr, 1, -1 
     
    284276         END DO          
    285277         CALL iom_put( 'qsr3d', zetot )   ! 3D distribution of shortwave Radiation 
    286          DEALLOCATE( zetot )  
    287278      ENDIF 
    288279      ! 
     
    297288         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 
    298289         CALL trd_tra( kt, 'TRA', jp_tem, jptra_qsr, ztrdt ) 
    299          DEALLOCATE( ztrdt )  
    300290      ENDIF 
    301291      !                       ! print mean trends (used for debugging) 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/TRA/trasbc.F90

    r10843 r11467  
    7373      !!              - send trends to trdtra module for further diagnostics(l_trdtra=T) 
    7474      !!---------------------------------------------------------------------- 
     75      USE scoce, ONLY : ztrdt => scr1, ztrds => scr2 
    7576      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    7677      ! 
     
    7879      INTEGER  ::   ikt, ikb                    ! local integers 
    7980      REAL(wp) ::   zfact, z1_e3t, zdep, ztim   ! local scalar 
    80       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::  ztrdt, ztrds 
    8181      !!---------------------------------------------------------------------- 
    8282      ! 
     
    9090      ! 
    9191      IF( l_trdtra ) THEN                    !* Save ta and sa trends 
    92          ALLOCATE( ztrdt(jpi,jpj,jpk) , ztrds(jpi,jpj,jpk) )  
    9392         ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 
    9493         ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     
    276275         CALL trd_tra( kt, 'TRA', jp_tem, jptra_nsr, ztrdt ) 
    277276         CALL trd_tra( kt, 'TRA', jp_sal, jptra_nsr, ztrds ) 
    278          DEALLOCATE( ztrdt , ztrds )  
    279277      ENDIF 
    280278      ! 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/ZDF/zdfmxl.F90

    r10843 r11467  
    8686      !! ** Action  :   nmln, hmld, hmlp, hmlpt 
    8787      !!---------------------------------------------------------------------- 
     88      USE scoce, ONLY : imld => iscr2D1 
    8889      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    8990      ! 
     
    9192      INTEGER  ::   iikn, iiki, ikt ! local integer 
    9293      REAL(wp) ::   zN2_c           ! local scalar 
    93       INTEGER, DIMENSION(jpi,jpj) ::   imld   ! 2D workspace 
    9494      !!---------------------------------------------------------------------- 
    9595      ! 
     
    177177      !  
    178178      !!-----------------------------------------------------------------------------------  
    179  
     179      USE scoce, ONLY : ikmt => iscr2D1,   &    ! number of active tracer levels 
     180                       ik_ref => iscr2D2, &    ! index of reference level 
     181                       ik_iso => iscr2D3, &    ! index of last uniform temp level 
     182                       zT => scr1,        &    ! Temperature or density       
     183                       ppzdep => scr2D1,  &    ! depth for use in calculating d(rho) 
     184                       zT_ref => scr2D2,  &    ! reference temperature 
     185                       zdTdz => scr2,     &    ! gradient of zT 
     186                       zmoddT => scr3,    &    ! Absolute temperature difference 
     187                       zdelta_T => scr2D3,&    ! difference critereon 
     188                       zRHO1 => scr2D4,   &    ! Densities 
     189                       zRHO2 => scr2D5         ! Densities 
    180190      TYPE(MXL_ZINT), INTENT(in)  :: sf 
    181191 
     
    188198      ! Local variables 
    189199      REAL(wp), PARAMETER :: zepsilon = 1.e-30          ! local small value 
    190       INTEGER, DIMENSION(jpi,jpj) :: ikmt          ! number of active tracer levels  
    191       INTEGER, DIMENSION(jpi,jpj) :: ik_ref        ! index of reference level  
    192       INTEGER, DIMENSION(jpi,jpj) :: ik_iso        ! index of last uniform temp level  
    193       REAL, DIMENSION(jpi,jpj,jpk)  :: zT            ! Temperature or density  
    194       REAL, DIMENSION(jpi,jpj)    :: ppzdep        ! depth for use in calculating d(rho)  
    195       REAL, DIMENSION(jpi,jpj)    :: zT_ref        ! reference temperature  
    196200      REAL    :: zT_b                                   ! base temperature  
    197       REAL, DIMENSION(jpi,jpj,jpk)  :: zdTdz         ! gradient of zT  
    198       REAL, DIMENSION(jpi,jpj,jpk)  :: zmoddT        ! Absolute temperature difference  
    199201      REAL    :: zdz                                    ! depth difference  
    200202      REAL    :: zdT                                    ! temperature difference  
    201       REAL, DIMENSION(jpi,jpj)    :: zdelta_T      ! difference critereon  
    202       REAL, DIMENSION(jpi,jpj)    :: zRHO1, zRHO2  ! Densities  
    203203      INTEGER :: ji, jj, jk                             ! loop counter  
    204204 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/ZDF/zdfphy.F90

    r10846 r11467  
    225225      !!                bottom stress.....                               <<<<====verifier ! 
    226226      !!---------------------------------------------------------------------- 
     227      USE scoce, ONLY : zsh2 => scr1   ! shear production 
    227228      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    228229      ! 
    229230      INTEGER ::   ji, jj, jk   ! dummy loop indice 
    230       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zsh2   ! shear production 
    231231      !! --------------------------------------------------------------------- 
    232232      ! 
  • NEMO/branches/UKMO/dev_r10037_GPU/src/OCE/nemogcm.F90

    r10843 r11467  
    9292   USE agrif_all_update   ! Master Agrif update 
    9393#endif 
     94   USE scoce, ONLY : scoce_alloc ! scratch arrays 
    9495 
    9596   IMPLICIT NONE 
     
    607608      ierr = ierr + trc_oce_alloc()    ! shared TRC / TRA arrays 
    608609      ierr = ierr + bdy_oce_alloc()    ! bdy masks (incl. initialization) 
     610      ierr = ierr + scoce_alloc()       ! scratch arrays 
    609611      ! 
    610612#if defined key_diadct  
Note: See TracChangeset for help on using the changeset viewer.