Changeset 10572 for NEMO/trunk/tests/CANAL/MY_SRC/trazdf.F90
 Timestamp:
 20190124T16:37:13+01:00 (5 years ago)
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

NEMO/trunk/tests/CANAL/MY_SRC/trazdf.F90
r10425 r10572 136 136 ! 137 137 INTEGER :: ji, jj, jk, jn ! dummy loop indices 138 REAL(wp) :: zrhs 138 REAL(wp) :: zrhs, zzwi, zzws ! local scalars 139 139 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwi, zwt, zwd, zws 140 140 !! … … 177 177 ! 178 178 ! Diagonal, lower (i), upper (s) (including the bottom boundary condition since avt is masked) 179 DO jk = 1, jpkm1 180 DO jj = 2, jpjm1 181 DO ji = fs_2, fs_jpim1 ! vector opt. 182 !!gm BUG I think, use e3w_a instead of e3w_n, not sure of that 183 zwi(ji,jj,jk) =  p2dt * zwt(ji,jj,jk ) / e3w_n(ji,jj,jk ) 184 zws(ji,jj,jk) =  p2dt * zwt(ji,jj,jk+1) / e3w_n(ji,jj,jk+1) 185 zwd(ji,jj,jk) = e3t_a(ji,jj,jk)  zwi(ji,jj,jk)  zws(ji,jj,jk) 186 END DO 187 END DO 188 END DO 179 IF( ln_zad_Aimp ) THEN ! Adaptive implicit vertical advection 180 DO jk = 1, jpkm1 181 DO jj = 2, jpjm1 182 DO ji = fs_2, fs_jpim1 ! vector opt. (ensure same order of calculation as below if wi=0.) 183 zzwi =  p2dt * zwt(ji,jj,jk ) / e3w_n(ji,jj,jk ) 184 zzws =  p2dt * zwt(ji,jj,jk+1) / e3w_n(ji,jj,jk+1) 185 zwd(ji,jj,jk) = e3t_a(ji,jj,jk)  zzwi  zzws & 186 & + p2dt * ( MAX( wi(ji,jj,jk ) , 0._wp )  MIN( wi(ji,jj,jk+1) , 0._wp ) ) 187 zwi(ji,jj,jk) = zzwi + p2dt * MIN( wi(ji,jj,jk ) , 0._wp ) 188 zws(ji,jj,jk) = zzws  p2dt * MAX( wi(ji,jj,jk+1) , 0._wp ) 189 END DO 190 END DO 191 END DO 192 ELSE 193 DO jk = 1, jpkm1 194 DO jj = 2, jpjm1 195 DO ji = fs_2, fs_jpim1 ! vector opt. 196 zwi(ji,jj,jk) =  p2dt * zwt(ji,jj,jk ) / e3w_n(ji,jj,jk) 197 zws(ji,jj,jk) =  p2dt * zwt(ji,jj,jk+1) / e3w_n(ji,jj,jk+1) 198 zwd(ji,jj,jk) = e3t_a(ji,jj,jk)  zwi(ji,jj,jk)  zws(ji,jj,jk) 199 END DO 200 END DO 201 END DO 202 ENDIF 189 203 ! 190 204 !! Matrix inversion from the first level
Note: See TracChangeset
for help on using the changeset viewer.