- Timestamp:
- 2013-04-09T18:34:38+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r3764 r3865 201 201 DO jj = 1, jpj 202 202 DO ji = 1, jpi 203 zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0 * un(ji,jj,jk) + ua(ji,jj,jk) )204 zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0 * vn(ji,jj,jk) + va(ji,jj,jk) )203 zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0_wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 204 zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0_wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 205 205 ! 206 206 ub(ji,jj,jk) = zuf ! ub <-- filtered velocity … … 214 214 ELSE ! Variable volume ! 215 215 ! ! ================! 216 ! Before scale factor at t-points 217 ! (used as a now filtered scale factor until the swap) 218 ! ---------------------------------------------------- 219 fse3t_b(:,:,:) = fse3t_n(:,:,:) + atfp * ( fse3t_b(:,:,:) - 2._wp * fse3t_n(:,:,:) + fse3t_a(:,:,:) ) 220 ! Add volume filter correction: compatibility with tracer advection scheme 221 ! => time filter + conservation correction (only at the first level) 222 fse3t_b(:,:,1) = fse3t_b(:,:,1) - atfp * rdt * r1_rau0 * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 216 223 ! 217 DO jk = 1, jpkm1 ! Before scale factor at t-points 218 fse3t_b(:,:,jk) = fse3t_n(:,:,jk) & 219 & + atfp * ( fse3t_b(:,:,jk) + fse3t_a(:,:,jk) & 220 & - 2._wp * fse3t_n(:,:,jk) ) 221 END DO 222 zec = atfp * rdt / rau0 ! Add filter correction only at the 1st level of t-point scale factors 223 fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 224 ! 225 IF( ln_dynadv_vec ) THEN ! vector invariant form (no thickness weighted calulation) 226 ! 227 ! ! before scale factors at u- & v-pts (computed from fse3t_b) 228 CALL dom_vvl_2( kt, fse3u_b(:,:,:), fse3v_b(:,:,:) ) 229 ! 230 DO jk = 1, jpkm1 ! Leap-Frog - Asselin filter and swap: applied on velocity 231 DO jj = 1, jpj ! -------- 224 IF( ln_dynadv_vec ) THEN 225 ! Before scale factor at (u/v)-points 226 ! ----------------------------------- 227 CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3u_b(:,:,:), 'U' ) 228 CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3v_b(:,:,:), 'V' ) 229 ! Leap-Frog - Asselin filter and swap: applied on velocity 230 ! ----------------------------------- 231 DO jk = 1, jpkm1 232 DO jj = 1, jpj 232 233 DO ji = 1, jpi 233 zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2. e0* un(ji,jj,jk) + ua(ji,jj,jk) )234 zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2. e0* vn(ji,jj,jk) + va(ji,jj,jk) )234 zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2._wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 235 zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2._wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 235 236 ! 236 237 ub(ji,jj,jk) = zuf ! ub <-- filtered velocity … … 242 243 END DO 243 244 ! 244 ELSE ! flux form (thickness weighted calulation) 245 ! 246 CALL dom_vvl_2( kt, ze3u_f, ze3v_f ) ! before scale factors at u- & v-pts (computed from fse3t_b) 247 ! 248 DO jk = 1, jpkm1 ! Leap-Frog - Asselin filter and swap: 249 DO jj = 1, jpj ! applied on thickness weighted velocity 245 ELSE 246 ! Temporary filtered scale factor at (u/v)-points (will become before scale factor) 247 !------------------------------------------------ 248 CALL dom_vvl_interpol( fse3t_b(:,:,:), ze3u_f, 'U' ) 249 CALL dom_vvl_interpol( fse3t_b(:,:,:), ze3v_f, 'V' ) 250 ! Leap-Frog - Asselin filter and swap: applied on thickness weighted velocity 251 ! ----------------------------------- =========================== 252 DO jk = 1, jpkm1 253 DO jj = 1, jpj 250 254 DO ji = 1, jpi ! --------------------------- 251 255 zue3a = ua(ji,jj,jk) * fse3u_a(ji,jj,jk)
Note: See TracChangeset
for help on using the changeset viewer.