Changeset 490 for trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90
- Timestamp:
- 2006-09-01T15:50:43+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90
r433 r490 97 97 IF( neuler == 0 .AND. kt == nittrc000 ) THEN 98 98 rdttrc(:) = rdttra(:) * FLOAT(ndttrc) ! restarting with Euler time stepping 99 ELSEIF( kt <= nittrc000 + 1) THEN99 ELSEIF( kt <= nittrc000 + ndttrc ) THEN 100 100 rdttrc(:) = 2. * rdttra(:) * FLOAT(ndttrc) ! leapfrog 101 101 ENDIF … … 145 145 END DO 146 146 147 148 ! Matrix inversion from the first level 149 ikst = 1 150 151 # include "zdf.matrixsolver.vopt.h90" 152 147 148 ! Matrix inversion from the first level 149 !---------------------------------------------------------------------- 150 ! solve m.x = y where m is a tri diagonal matrix ( jpk*jpk ) 151 ! 152 ! ( zwd1 zws1 0 0 0 )( zwx1 ) ( zwy1 ) 153 ! ( zwi2 zwd2 zws2 0 0 )( zwx2 ) ( zwy2 ) 154 ! ( 0 zwi3 zwd3 zws3 0 )( zwx3 )=( zwy3 ) 155 ! ( ... )( ... ) ( ... ) 156 ! ( 0 0 0 zwik zwdk )( zwxk ) ( zwyk ) 157 ! 158 ! m is decomposed in the product of an upper and lower triangular matrix 159 ! The 3 diagonal terms are in 2d arrays: zwd, zws, zwi 160 ! The second member is in 2d array zwy 161 ! The solution is in 2d array zwx 162 ! The 3d arry zwt is a work space array 163 ! zwy is used and then used as a work space array : its value is modified! 164 ! 165 ! N.B. the starting vertical index (ikst) is equal to 1 except for 166 ! the resolution of tke matrix where surface tke value is prescribed 167 ! so that ikstrt=2. 168 ikst = 1 169 ikstp1 = ikst + 1 170 ikenm2 = jpk - 2 171 172 DO jj = 2, jpjm1 173 DO ji = fs_2, fs_jpim1 174 zwt(ji,jj,ikst) = zwd(ji,jj,ikst) 175 END DO 176 END DO 177 178 DO jk = ikstp1, jpkm1 179 DO jj = 2, jpjm1 180 DO ji = fs_2, fs_jpim1 181 zwt(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwt(ji,jj,jk-1) 182 END DO 183 END DO 184 END DO 185 186 DO jk = ikstp1, jpkm1 187 DO jj = 2, jpjm1 188 DO ji = fs_2, fs_jpim1 189 zwy(ji,jj,jk) = zwy(ji,jj,jk) - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * zwy(ji,jj,jk-1) 190 END DO 191 END DO 192 END DO 193 194 DO jj = 2, jpjm1 195 DO ji = fs_2, fs_jpim1 196 zwx(ji,jj,jpkm1) = zwy(ji,jj,jpkm1) / zwt(ji,jj,jpkm1) 197 END DO 198 END DO 199 200 DO jk = ikenm2, ikst, -1 201 DO jj = 2, jpjm1 202 DO ji = fs_2, fs_jpim1 203 zwx(ji,jj,jk) = ( zwy(ji,jj,jk) - zws(ji,jj,jk) * zwx(ji,jj,jk+1) ) / zwt(ji,jj,jk) 204 END DO 205 END DO 206 END DO 207 153 208 154 209 #if defined key_trc_diatrd
Note: See TracChangeset
for help on using the changeset viewer.