Changeset 490 for trunk/NEMO/TOP_SRC
- Timestamp:
- 2006-09-01T15:50:43+02:00 (18 years ago)
- Location:
- trunk/NEMO/TOP_SRC/TRP
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/TOP_SRC/TRP/trczdf_exp.F90
r349 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 -
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 -
trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90
r433 r490 125 125 INTEGER :: ji, jj, jk, jn ! dummy loop indices 126 126 INTEGER :: ikst, ikenm2, ikstp1 ! temporary integers 127 #if defined key_partial_steps128 127 INTEGER :: iku, ikv, ikv1 ! temporary integers 129 #endif 128 130 129 REAL(wp) :: ztra 131 130 REAL(wp) :: & … … 167 166 IF( neuler == 0 .AND. kt == nittrc000 ) THEN 168 167 rdttrc(:) = rdttra(:) * FLOAT(ndttrc) ! restarting with Euler time stepping 169 ELSEIF( kt <= nittrc000 + 1) THEN168 ELSEIF( kt <= nittrc000 + ndttrc ) THEN 170 169 rdttrc(:) = 2. * rdttra(:) * FLOAT(ndttrc) ! leapfrog 171 170 ENDIF … … 208 207 END DO 209 208 END DO 210 # if defined key_partial_steps 211 ! partial steps correction at the bottom ocean level212 DO ji = 1, jpim1213 ! last ocean level214 iku = MIN( mbathy(ji,jj), mbathy(ji+1,jj ) ) - 1215 ikv = MIN( mbathy(ji,jj), mbathy(ji ,jj+1) ) - 1216 ikv1 = MIN( mbathy(ji,jj), mbathy(ji ,jj-1) ) - 1217 ! i-gradient of of passive tracer at jj218 zdit (ji,iku) = gtru(ji,jj,jn)219 ! j-gradient of of passive tracer at jj220 zdjt (ji,ikv) = gtrv(ji,jj,jn)221 ! j-gradient of of passive tracer at jj+1222 zdj1t(ji,ikv1)= gtrv(ji,jj-1,jn)223 END DO224 #endif 225 209 210 IF( ln_zps ) THEN 211 ! partial steps correction at the bottom ocean level 212 DO ji = 1, jpim1 213 ! last ocean level 214 iku = MIN( mbathy(ji,jj), mbathy(ji+1,jj ) ) - 1 215 ikv = MIN( mbathy(ji,jj), mbathy(ji ,jj+1) ) - 1 216 ikv1 = MIN( mbathy(ji,jj), mbathy(ji ,jj-1) ) - 1 217 ! i-gradient of of passive tracer at jj 218 zdit (ji,iku) = gtru(ji,jj,jn) 219 ! j-gradient of of passive tracer at jj 220 zdjt (ji,ikv) = gtrv(ji,jj,jn) 221 ! j-gradient of of passive tracer at jj+1 222 zdj1t(ji,ikv1)= gtrv(ji,jj-1,jn) 223 END DO 224 ENDIF 226 225 227 226 ! I.2 Vertical fluxes … … 279 278 ! ! Eddy induced vertical advective fluxes ! 280 279 ! ! ---------------------------------------! 281 #if defined key_traldf_c2d || defined key_traldf_c3d 280 #if defined key_traldf_c2d || defined key_traldf_c3d || defined key_off_degrad 282 281 DO jk = 2, jpkm1 283 282 DO ji = 2, jpim1 -
trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90
r433 r490 177 177 IF( neuler == 0 .AND. kt == nittrc000 ) THEN 178 178 rdttrc(:) = rdttra(:) * FLOAT(ndttrc) ! restarting with Euler time stepping 179 ELSEIF( kt <= nittrc000 + 1) THEN179 ELSEIF( kt <= nittrc000 + ndttrc ) THEN 180 180 rdttrc(:) = 2. * rdttra(:) * FLOAT(ndttrc) ! leapfrog 181 181 ENDIF … … 398 398 !! * Local declarations 399 399 INTEGER :: ji, jj, jk,jn ! dummy loop indices 400 #if defined key_partial_steps401 400 INTEGER :: iku, ikv 402 #endif403 401 REAL(wp) :: & 404 402 ztavg, & ! temporary scalars … … 446 444 END DO 447 445 END DO 448 # if defined key_partial_steps 449 ! partial steps correction at the bottom ocean level450 DO jj = 1, jpjm1451 DO ji = 1, fs_jpim1 ! vector opt.452 ! last ocean level453 iku = MIN( mbathy(ji,jj), mbathy(ji+1,jj ) ) - 1454 ikv = MIN( mbathy(ji,jj), mbathy(ji ,jj+1) ) - 1455 ! i-gradient of passive tracer456 zwx (ji,jj,iku) = gtru(ji,jj,jn)457 ! j-gradient of passive tracer458 zwy (ji,jj,ikv) = gtrv(ji,jj,jn)459 END DO460 END DO461 #endif 446 IF( ln_zps ) THEN 447 ! partial steps correction at the bottom ocean level 448 DO jj = 1, jpjm1 449 DO ji = 1, fs_jpim1 ! vector opt. 450 ! last ocean level 451 iku = MIN( mbathy(ji,jj), mbathy(ji+1,jj ) ) - 1 452 ikv = MIN( mbathy(ji,jj), mbathy(ji ,jj+1) ) - 1 453 ! i-gradient of passive tracer 454 zwx (ji,jj,iku) = gtru(ji,jj,jn) 455 ! j-gradient of passive tracer 456 zwy (ji,jj,ikv) = gtrv(ji,jj,jn) 457 END DO 458 END DO 459 ENDIF 462 460 463 461 … … 502 500 DO jj = 2, jpjm1 503 501 DO ji = fs_2, fs_jpim1 ! vector opt. 504 # if defined key_traldf_c2d || defined key_traldf_c3d 502 # if defined key_traldf_c2d || defined key_traldf_c3d || defined key_off_degrad 505 503 zuwki = ( wslpi(ji,jj,jk) + wslpi(ji-1,jj,jk) ) & 506 504 & * fsaeitru(ji-1,jj,jk) * e2u(ji-1,jj) * umask(ji-1,jj,jk)
Note: See TracChangeset
for help on using the changeset viewer.