Changeset 457 for trunk/NEMO/OPA_SRC/TRA/traadv_muscl.F90
- Timestamp:
- 2006-05-10T19:01:19+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/TRA/traadv_muscl.F90
r367 r457 39 39 CONTAINS 40 40 41 SUBROUTINE tra_adv_muscl( kt )41 SUBROUTINE tra_adv_muscl( kt, pun, pvn, pwn ) 42 42 !!---------------------------------------------------------------------- 43 43 !! *** ROUTINE tra_adv_muscl *** … … 61 61 !! 8.5 ! 02-06 (G. Madec) F90: Free form and module 62 62 !! 9.0 ! 04-08 (C. Talandier) New trends organization 63 !! " ! 05-11 (V. Garnier) Surface pressure gradient organization64 63 !!---------------------------------------------------------------------- 65 !! * modules used66 #if defined key_trabbl_adv67 USE oce , zun => ua, & ! use ua as workspace68 & zvn => va ! use va as workspace69 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zwn70 #else71 USE oce , zun => un, & ! When no bbl, zun == un72 zvn => vn, & ! zvn == vn73 zwn => wn ! zwn == wn74 #endif75 76 64 !! * Arguments 77 INTEGER, INTENT( in ) :: kt ! ocean time-step 65 INTEGER , INTENT( in ) :: kt ! ocean time-step index 66 REAL(wp), INTENT( in ), DIMENSION(jpi,jpj,jpk) :: & 67 pun, pvn, pwn ! now ocean velocity fields 78 68 79 69 !! * Local declarations … … 110 100 l_adv = 'mus' 111 101 ENDIF 112 113 #if defined key_trabbl_adv114 ! Advective bottom boundary layer115 ! -------------------------------116 zun(:,:,:) = un (:,:,:) - u_bbl(:,:,:)117 zvn(:,:,:) = vn (:,:,:) - v_bbl(:,:,:)118 zwn(:,:,:) = wn (:,:,:) + w_bbl( :,:,:)119 #endif120 102 121 103 … … 194 176 DO ji = fs_2, fs_jpim1 ! vector opt. 195 177 ! volume fluxes 196 #if defined key_ s_coord || defined key_partial_steps197 zeu = e2u(ji,jj) * fse3u(ji,jj,jk) * zun(ji,jj,jk)198 zev = e1v(ji,jj) * fse3v(ji,jj,jk) * zvn(ji,jj,jk)178 #if defined key_zco 179 zeu = e2u(ji,jj) * pun(ji,jj,jk) 180 zev = e1v(ji,jj) * pvn(ji,jj,jk) 199 181 #else 200 zeu = e2u(ji,jj) * zun(ji,jj,jk)201 zev = e1v(ji,jj) * zvn(ji,jj,jk)182 zeu = e2u(ji,jj) * fse3u(ji,jj,jk) * pun(ji,jj,jk) 183 zev = e1v(ji,jj) * fse3v(ji,jj,jk) * pvn(ji,jj,jk) 202 184 #endif 203 185 ! MUSCL fluxes 204 z0u = SIGN( 0.5, zun(ji,jj,jk) )186 z0u = SIGN( 0.5, pun(ji,jj,jk) ) 205 187 zalpha = 0.5 - z0u 206 zu = z0u - 0.5 * zun(ji,jj,jk) * zstep / e1u(ji,jj)188 zu = z0u - 0.5 * pun(ji,jj,jk) * zstep / e1u(ji,jj) 207 189 zzt1 = tb(ji+1,jj,jk) + zu*ztp1(ji+1,jj,jk) 208 190 zzt2 = tb(ji ,jj,jk) + zu*ztp1(ji ,jj,jk) … … 212 194 zs1(ji,jj,jk) = zeu * ( zalpha * zzs1 + (1.-zalpha) * zzs2 ) 213 195 214 z0v = SIGN( 0.5, zvn(ji,jj,jk) )196 z0v = SIGN( 0.5, pvn(ji,jj,jk) ) 215 197 zalpha = 0.5 - z0v 216 zv = z0v - 0.5 * zvn(ji,jj,jk) * zstep / e2v(ji,jj)198 zv = z0v - 0.5 * pvn(ji,jj,jk) * zstep / e2v(ji,jj) 217 199 zzt1 = tb(ji,jj+1,jk) + zv*ztp2(ji,jj+1,jk) 218 200 zzt2 = tb(ji,jj ,jk) + zv*ztp2(ji,jj ,jk) … … 245 227 DO jj = 2, jpjm1 246 228 DO ji = fs_2, fs_jpim1 ! vector opt. 247 #if defined key_s_coord || defined key_partial_steps 229 #if defined key_zco 230 zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj) ) 231 #else 248 232 zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) ) 249 #else250 zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj) )251 233 #endif 252 234 ! horizontal advective trends … … 287 269 ! "zonal" mean advective heat and salt transport 288 270 IF( ln_diaptr .AND. ( MOD( kt, nf_ptr ) == 0 ) ) THEN 289 # if defined key_s_coord || defined key_partial_steps 271 IF( lk_zco ) THEN 272 DO jk = 1, jpkm1 273 DO jj = 2, jpjm1 274 DO ji = fs_2, fs_jpim1 ! vector opt. 275 zt2(ji,jj,jk) = zt2(ji,jj,jk) * fse3v(ji,jj,jk) 276 zs2(ji,jj,jk) = zs2(ji,jj,jk) * fse3v(ji,jj,jk) 277 END DO 278 END DO 279 END DO 280 ENDIF 290 281 pht_adv(:) = ptr_vj( zt2(:,:,:) ) 291 282 pst_adv(:) = ptr_vj( zs2(:,:,:) ) 292 # else293 DO jk = 1, jpkm1294 DO jj = 2, jpjm1295 DO ji = fs_2, fs_jpim1 ! vector opt.296 zt2(ji,jj,jk) = zt2(ji,jj,jk) * fse3v(ji,jj,jk)297 zs2(ji,jj,jk) = zs2(ji,jj,jk) * fse3v(ji,jj,jk)298 END DO299 END DO300 END DO301 pht_adv(:) = ptr_vj( zt2(:,:,:) )302 pst_adv(:) = ptr_vj( zs2(:,:,:) )303 # endif304 283 ENDIF 305 284 … … 355 334 DO jj = 2, jpjm1 356 335 DO ji = fs_2, fs_jpim1 ! vector opt. 357 zew = zwn(ji,jj,jk+1)358 z0w = SIGN( 0.5, zwn(ji,jj,jk+1) )336 zew = pwn(ji,jj,jk+1) 337 z0w = SIGN( 0.5, pwn(ji,jj,jk+1) ) 359 338 zalpha = 0.5 + z0w 360 zw = z0w - 0.5 * zwn(ji,jj,jk+1)*zstep / fse3w(ji,jj,jk+1)339 zw = z0w - 0.5 * pwn(ji,jj,jk+1)*zstep / fse3w(ji,jj,jk+1) 361 340 zzt1 = tb(ji,jj,jk+1) + zw*ztp1(ji,jj,jk+1) 362 341 zzt2 = tb(ji,jj,jk ) + zw*ztp1(ji,jj,jk ) … … 373 352 zs1(:,:, 1 ) = 0.e0 374 353 ELSE ! free surface 375 zt1(:,:, 1 ) = zwn(:,:,1) * tb(:,:,1)376 zs1(:,:, 1 ) = zwn(:,:,1) * sb(:,:,1)354 zt1(:,:, 1 ) = pwn(:,:,1) * tb(:,:,1) 355 zs1(:,:, 1 ) = pwn(:,:,1) * sb(:,:,1) 377 356 ENDIF 378 357
Note: See TracChangeset
for help on using the changeset viewer.