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 2104 for branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf_lap.F90 – NEMO

Ignore:
Timestamp:
2010-09-17T14:35:46+02:00 (14 years ago)
Author:
cetlod
Message:

update DEV_r2006_merge_TRA_TRC according to review

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf_lap.F90

    r2082 r2104  
    1313   !!            3.0  !  10-06  (C. Ethe, G. Madec) Merge TRA-TRC 
    1414   !!---------------------------------------------------------------------- 
     15 
    1516   !!---------------------------------------------------------------------- 
    1617   !!   tra_ldf_lap  : update the tracer trend with the horizontal diffusion 
    1718   !!                 using a iso-level harmonic (laplacien) operator. 
    1819   !!---------------------------------------------------------------------- 
    19    !! * Modules used 
    2020   USE oce             ! ocean dynamics and active tracers 
    2121   USE dom_oce         ! ocean space and time domain 
     
    2525   USE trc_oce         ! share passive tracers/Ocean variables 
    2626 
    27  
    2827   IMPLICIT NONE 
    2928   PRIVATE 
    3029 
    31    !! * Routine accessibility 
    32    PUBLIC tra_ldf_lap  ! routine called by step.F90 
     30   PUBLIC   tra_ldf_lap   ! routine called by step.F90 
    3331 
    3432   REAL(wp), DIMENSION(jpi,jpj) ::   e1ur, e2vr   ! scale factor coefficients 
     
    4038   !!---------------------------------------------------------------------- 
    4139   !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010)  
    42    !! $Id$  
     40   !! $Id$ 
    4341   !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    4442   !!---------------------------------------------------------------------- 
     
    4644CONTAINS 
    4745 
    48    SUBROUTINE tra_ldf_lap( kt, cdtype, pgu, pgv,  & 
     46   SUBROUTINE tra_ldf_lap( kt, cdtype, pgu, pgv,   & 
    4947      &                                ptb, pta, kjpt )  
    5048      !!---------------------------------------------------------------------- 
     
    6866      !!                harmonic mixing trend. 
    6967      !!---------------------------------------------------------------------- 
    70       !! 
    7168      USE oce         , ztu => ua   ! use ua as workspace 
    7269      USE oce         , ztv => va   ! use va as workspace 
    7370      !! 
    74       INTEGER         , INTENT(in   )                                ::   kt             ! ocean time-step index 
    75       CHARACTER(len=3), INTENT(in   )                                ::   cdtype         ! =TRA or TRC (tracer indicator) 
    76       INTEGER         , INTENT(in   )                                ::   kjpt            ! number of tracers 
    77       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,kjpt  )     ::   pgu, pgv     ! tracer gradient at pstep levels 
    78       REAL(wp)        , INTENT(in   ), DIMENSION(jpi,jpj,jpk,kjpt)   ::   ptb          ! before and now tracer fields 
    79       REAL(wp)        , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt)   ::   pta          ! tracer trend  
     71      INTEGER                              , INTENT(in   ) ::   kt         ! ocean time-step index 
     72      CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype     ! =TRA or TRC (tracer indicator) 
     73      INTEGER                              , INTENT(in   ) ::   kjpt       ! number of tracers 
     74      REAL(wp), DIMENSION(jpi,jpj    ,kjpt), INTENT(in   ) ::   pgu, pgv   ! tracer gradient at pstep levels 
     75      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb        ! before and now tracer fields 
     76      REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta        ! tracer trend  
    8077      !! 
    81       INTEGER ::   ji, jj, jk, jn          ! dummy loop indices 
    82       INTEGER ::   iku, ikv                ! temporary integers 
    83       REAL(wp) ::   & 
    84          zabe1, zabe2, ztra, zbtr           ! temporary scalars 
     78      INTEGER  ::   ji, jj, jk, jn       ! dummy loop indices 
     79      INTEGER  ::   iku, ikv             ! local integers 
     80      REAL(wp) ::   zabe1, zabe2, zbtr   ! local scalars 
    8581      !!---------------------------------------------------------------------- 
    8682       
    87       IF( ( cdtype == 'TRA' .AND. kt == nit000 ) .OR. ( cdtype == 'TRC' .AND. kt == nittrc000 ) )  THEN 
     83      IF( kt == nit000 )  THEN 
    8884         IF(lwp) WRITE(numout,*) 
    8985         IF(lwp) WRITE(numout,*) 'tra_ldf_lap : iso-level laplacian diffusion on ', cdtype 
     
    9389      ENDIF 
    9490 
    95       ! 
    96       DO jn = 1, kjpt                                            ! tracer loop 
    97          !                                                       ! ===========       
    98          !                                                  
    99          DO jk = 1, jpkm1                                 
     91      !                                                          ! =========== ! 
     92      DO jn = 1, kjpt                                            ! tracer loop ! 
     93         !                                                       ! =========== !     
     94         DO jk = 1, jpkm1                                            ! slab loop 
    10095            !                                            
    10196            ! 1. First derivative (gradient) 
     
    133128               DO ji = fs_2, fs_jpim1   ! vector opt. 
    134129                  zbtr = 1.0 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    135                   ! horizontal diffusive trends 
    136                   ztra = zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk)   & 
    137                      &           + ztv(ji,jj,jk) - ztv(ji,jj-1,jk)  ) 
    138                   ! add it to the general tracer trends 
    139                   pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + ztra 
     130                  ! horizontal diffusive trends added to the general tracer trends 
     131                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + zbtr * (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk)   & 
     132                     &                                          + ztv(ji,jj,jk) - ztv(ji,jj-1,jk)  ) 
    140133               END DO 
    141134            END DO 
    142             !                                               ! ============= 
     135            ! 
    143136         END DO                                             !  End of slab   
    144          !                                                  ! ============= 
     137         ! 
    145138         ! "Poleward" diffusive heat or salt transports 
    146139         IF( cdtype == 'TRA' .AND. ln_diaptr .AND. ( MOD( kt, nf_ptr ) == 0 ) ) THEN 
     
    148141            IF( jn  == jp_sal)   pst_ldf(:) = ptr_vj( ztv(:,:,:) ) 
    149142         ENDIF 
    150          ! 
    151       END DO 
    152       ! 
     143         !                                                  ! ================== 
     144      END DO                                                ! end of tracer loop 
     145      !                                                     ! ================== 
    153146   END SUBROUTINE tra_ldf_lap 
    154147 
Note: See TracChangeset for help on using the changeset viewer.