- Timestamp:
- 2010-09-17T14:35:46+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2006_merge_TRA_TRC/NEMO/OPA_SRC/TRA/traldf_lap.F90
r2082 r2104 13 13 !! 3.0 ! 10-06 (C. Ethe, G. Madec) Merge TRA-TRC 14 14 !!---------------------------------------------------------------------- 15 15 16 !!---------------------------------------------------------------------- 16 17 !! tra_ldf_lap : update the tracer trend with the horizontal diffusion 17 18 !! using a iso-level harmonic (laplacien) operator. 18 19 !!---------------------------------------------------------------------- 19 !! * Modules used20 20 USE oce ! ocean dynamics and active tracers 21 21 USE dom_oce ! ocean space and time domain … … 25 25 USE trc_oce ! share passive tracers/Ocean variables 26 26 27 28 27 IMPLICIT NONE 29 28 PRIVATE 30 29 31 !! * Routine accessibility 32 PUBLIC tra_ldf_lap ! routine called by step.F90 30 PUBLIC tra_ldf_lap ! routine called by step.F90 33 31 34 32 REAL(wp), DIMENSION(jpi,jpj) :: e1ur, e2vr ! scale factor coefficients … … 40 38 !!---------------------------------------------------------------------- 41 39 !! NEMO/OPA 3.3 , LOCEAN-IPSL (2010) 42 !! $Id$ 40 !! $Id$ 43 41 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 44 42 !!---------------------------------------------------------------------- … … 46 44 CONTAINS 47 45 48 SUBROUTINE tra_ldf_lap( kt, cdtype, pgu, pgv, &46 SUBROUTINE tra_ldf_lap( kt, cdtype, pgu, pgv, & 49 47 & ptb, pta, kjpt ) 50 48 !!---------------------------------------------------------------------- … … 68 66 !! harmonic mixing trend. 69 67 !!---------------------------------------------------------------------- 70 !!71 68 USE oce , ztu => ua ! use ua as workspace 72 69 USE oce , ztv => va ! use va as workspace 73 70 !! 74 INTEGER , INTENT(in ) :: kt! ocean time-step index75 CHARACTER(len=3) , INTENT(in ) :: cdtype! =TRA or TRC (tracer indicator)76 INTEGER , INTENT(in ) :: kjpt! number of tracers77 REAL(wp) , INTENT(in ), DIMENSION(jpi,jpj,kjpt ) :: pgu, pgv! tracer gradient at pstep levels78 REAL(wp) , INTENT(in ), DIMENSION(jpi,jpj,jpk,kjpt) :: ptb! before and now tracer fields79 REAL(wp) , INTENT(inout), DIMENSION(jpi,jpj,jpk,kjpt) :: pta! tracer trend71 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 80 77 !! 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 85 81 !!---------------------------------------------------------------------- 86 82 87 IF( ( cdtype == 'TRA' .AND. kt == nit000 ) .OR. ( cdtype == 'TRC' .AND. kt == nittrc000 )) THEN83 IF( kt == nit000 ) THEN 88 84 IF(lwp) WRITE(numout,*) 89 85 IF(lwp) WRITE(numout,*) 'tra_ldf_lap : iso-level laplacian diffusion on ', cdtype … … 93 89 ENDIF 94 90 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 100 95 ! 101 96 ! 1. First derivative (gradient) … … 133 128 DO ji = fs_2, fs_jpim1 ! vector opt. 134 129 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) ) 140 133 END DO 141 134 END DO 142 ! ! =============135 ! 143 136 END DO ! End of slab 144 ! ! =============137 ! 145 138 ! "Poleward" diffusive heat or salt transports 146 139 IF( cdtype == 'TRA' .AND. ln_diaptr .AND. ( MOD( kt, nf_ptr ) == 0 ) ) THEN … … 148 141 IF( jn == jp_sal) pst_ldf(:) = ptr_vj( ztv(:,:,:) ) 149 142 ENDIF 150 ! 151 END DO 152 ! 143 ! ! ================== 144 END DO ! end of tracer loop 145 ! ! ================== 153 146 END SUBROUTINE tra_ldf_lap 154 147
Note: See TracChangeset
for help on using the changeset viewer.