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/traldf_lap.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/traldf_lap.F90

    r2528 r2715  
    2424   USE diaptr          ! poleward transport diagnostics 
    2525   USE trc_oce         ! share passive tracers/Ocean variables 
     26   USE lib_mpp         ! MPP library 
    2627 
    2728   IMPLICIT NONE 
     
    3031   PUBLIC   tra_ldf_lap   ! routine called by step.F90 
    3132 
    32    REAL(wp), DIMENSION(jpi,jpj) ::   e1ur, e2vr   ! scale factor coefficients 
     33   REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) ::   e1ur, e2vr   ! scale factor coefficients 
    3334 
    3435   !! * Substitutions 
     
    6263      !!                harmonic mixing trend. 
    6364      !!---------------------------------------------------------------------- 
    64       USE oce         , ztu => ua   ! use ua as workspace 
    65       USE oce         , ztv => va   ! use va as workspace 
    66       !! 
     65      USE oce, ONLY:   ztu => ua , ztv => va  ! (ua,va) used as workspace 
     66      ! 
    6767      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
    6868      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
     
    7171      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb        ! before and now tracer fields 
    7272      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta        ! tracer trend  
    73       !! 
     73      ! 
    7474      INTEGER  ::   ji, jj, jk, jn       ! dummy loop indices 
    75       INTEGER  ::   iku, ikv             ! local integers 
     75      INTEGER  ::   iku, ikv, ierr       ! local integers 
    7676      REAL(wp) ::   zabe1, zabe2, zbtr   ! local scalars 
    7777      !!---------------------------------------------------------------------- 
     
    8181         IF(lwp) WRITE(numout,*) 'tra_ldf_lap : iso-level laplacian diffusion on ', cdtype 
    8282         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' 
     83         ! 
     84         ALLOCATE( e1ur(jpi,jpj), e2vr(jpi,jpj), STAT=ierr ) 
     85         IF( lk_mpp    )   CALL mpp_sum( ierr ) 
     86         IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'tra_ldf_lap : unable to allocate arrays' ) 
     87         ! 
    8388         e1ur(:,:) = e2u(:,:) / e1u(:,:) 
    8489         e2vr(:,:) = e1v(:,:) / e2v(:,:) 
     
    123128            DO jj = 2, jpjm1 
    124129               DO ji = fs_2, fs_jpim1   ! vector opt. 
    125                   zbtr = 1.0 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     130                  zbtr = 1._wp / ( e1t(ji,jj) *e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    126131                  ! horizontal diffusive trends added to the general tracer trends 
    127132                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk)   & 
Note: See TracChangeset for help on using the changeset viewer.