Changeset 2005 for branches/DEV_r1837_MLF/NEMO/OPA_SRC/DYN/sshwzv.F90
- Timestamp:
- 2010-07-09T15:07:02+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1837_MLF/NEMO/OPA_SRC/DYN/sshwzv.F90
r1975 r2005 189 189 CALL lbc_lnk( sshu_a, 'U', 1. ) 190 190 CALL lbc_lnk( sshv_a, 'V', 1. ) 191 DO jj = 1, jpjm1 192 DO ji = 1, jpim1 ! NO Vector Opt. 193 sshf_a(ji,jj) = 0.5 * umask(ji,jj,1) * umask(ji,jj+1,1) & 194 & / ( e1f(ji,jj ) * e2f(ji,jj ) ) & 195 & * ( e1u(ji,jj ) * e2u(ji,jj ) * sshu_a(ji,jj ) & 196 & + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_a(ji,jj+1) ) 197 END DO 198 END DO 199 ! Boundaries conditions 200 CALL lbc_lnk( sshf_a, 'F', 1. ) 201 ENDIF 202 191 ENDIF 192 ! !----------------------------------------! 193 ! ! vertical scale factor laplacian ! 194 ! !----------------------------------------! 195 ! Needed for Robert-Asselin time filter and for Brown & Campana semi implicit hydrostatic presure gradient 196 fse3t_m(:,:,:) = fse3t_b(:,:,:) & 197 & - 2.e0 * fse3t_n(:,:,:) & 198 & + fse3t_a(:,:,:) 203 199 ! !------------------------------! 204 200 ! ! Now Vertical Velocity ! … … 219 215 CALL iom_put( "ssh2", sshn(:,:) * sshn(:,:) ) ! square of sea surface height 220 216 IF( lk_diaar5 ) THEN ! vertical mass transport & its square value 217 ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 221 218 z2d(:,:) = rau0 * e1t(:,:) * e2t(:,:) 222 219 DO jk = 1, jpk … … 264 261 265 262 ! !--------------------------! 266 IF( lk_vvl ) THEN ! Variable volume levels ! ssh at t-, u-, v, f-points263 IF( lk_vvl ) THEN ! Variable volume levels ! 267 264 ! !--------------------------! 265 ! 266 ! ssh at t-, u-, v, f-points 267 !=========================== 268 268 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler time-stepping at first time-step : no filter 269 269 sshn (:,:) = ssha (:,:) ! now <-- after (before already = now) 270 270 sshu_n(:,:) = sshu_a(:,:) 271 271 sshv_n(:,:) = sshv_a(:,:) 272 sshf_n(:,:) = sshf_a(:,:) 272 DO jj = 1, jpjm1 273 DO ji = 1, jpim1 ! NO Vector Opt. 274 sshf_n(ji,jj) = 0.5 * umask(ji,jj,1) * umask(ji,jj+1,1) & 275 & / ( e1f(ji,jj ) * e2f(ji,jj ) ) & 276 & * ( e1u(ji,jj ) * e2u(ji,jj ) * sshu_n(ji,jj ) & 277 & + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_n(ji,jj+1) ) 278 END DO 279 END DO 280 ! Boundaries conditions 281 CALL lbc_lnk( sshf_n, 'F', 1. ) 273 282 ELSE ! Leap-Frog time-stepping: Asselin filter + swap 274 zec = atfp * rdt / rau0275 283 DO jj = 1, jpj 276 284 DO ji = 1, jpi ! before <-- now filtered … … 280 288 sshu_n(ji,jj) = sshu_a(ji,jj) 281 289 sshv_n(ji,jj) = sshv_a(ji,jj) 282 sshf_n(ji,jj) = sshf_a(ji,jj) 283 END DO 284 END DO 290 END DO 291 END DO 292 DO jj = 1, jpjm1 293 DO ji = 1, jpim1 ! NO Vector Opt. 294 sshf_n(ji,jj) = 0.5 * umask(ji,jj,1) * umask(ji,jj+1,1) & 295 & / ( e1f(ji,jj ) * e2f(ji,jj ) ) & 296 & * ( e1u(ji,jj ) * e2u(ji,jj ) * sshu_n(ji,jj ) & 297 & + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_n(ji,jj+1) ) 298 END DO 299 END DO 300 ! Boundaries conditions 301 CALL lbc_lnk( sshf_n, 'F', 1. ) 285 302 DO jj = 1, jpjm1 286 303 DO ji = 1, jpim1 ! NO Vector Opt. … … 296 313 CALL lbc_lnk( sshu_b, 'U', 1. ) 297 314 CALL lbc_lnk( sshv_b, 'V', 1. ) 298 DO jj = 1, jpjm1299 DO ji = 1, jpim1 ! NO Vector Opt.300 sshf_b(ji,jj) = 0.5 * umask(ji,jj,1) * umask(ji,jj+1,1) &301 & / ( e1f(ji,jj ) * e2f(ji,jj ) ) &302 & * ( e1u(ji,jj ) * e2u(ji,jj ) * sshu_b(ji,jj ) &303 & + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_b(ji,jj+1) )304 END DO305 END DO306 ! Boundaries conditions307 CALL lbc_lnk( sshf_b, 'F', 1. )308 315 ENDIF 309 316 ! !--------------------------! 310 ELSE ! fixed levels ! ssh at t-point only317 ELSE ! fixed levels ! 311 318 ! !--------------------------! 319 ! 320 ! ssh at t-point only 321 !==================== 312 322 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler time-stepping at first time-step : no filter 313 323 sshn(:,:) = ssha(:,:) ! now <-- after (before already = now)
Note: See TracChangeset
for help on using the changeset viewer.