- Timestamp:
- 2012-10-08T16:27:20+02:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_r3327_MERCATOR1_BDY/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r3367 r3490 192 192 IF( PRESENT(jit) ) THEN 193 193 ! Update barotropic boundary conditions only 194 ! jit is optional argument for fld_read and tide_update194 ! jit is optional argument for fld_read and bdytide_update 195 195 IF( nn_dyn2d(ib_bdy) .gt. 0 ) THEN 196 196 IF( nn_dyn2d_dta(ib_bdy) .eq. 2 ) THEN ! tidal harmonic forcing ONLY: initialise arrays … … 200 200 ENDIF 201 201 IF (nn_tra(ib_bdy).ne.4) THEN 202 IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3.or.(ln_full_vel_array(ib_bdy).and.nn_dyn3d_dta(ib_bdy).eq.1)) THEN 203 ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 204 jend = nb_bdy_fld(ib_bdy) 205 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 206 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), jit=jit, time_offset=time_offset ) 207 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 208 ! If full velocities in boundary data then split into barotropic and baroclinic data 209 IF( ln_full_vel_array(ib_bdy) .and. & 210 & ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 211 igrd = 2 ! zonal velocity 212 dta_bdy(ib_bdy)%u2d(:) = 0.0 213 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 214 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 215 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 216 DO ik = 1, jpkm1 217 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 218 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 202 IF (nn_dyn2d_dta(ib_bdy).eq.1.or.nn_dyn2d_dta(ib_bdy).eq.3.or.(ln_full_vel_array(ib_bdy).and.nn_dyn3d_dta(ib_bdy).eq.1)) THEN 203 ! For the runoff case, no need to update the forcing (already done in the baroclinic part) 204 jend = nb_bdy_fld(ib_bdy) 205 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend - 2 206 CALL fld_read( kt=kt, kn_fsbc=1, sd=bf(jstart:jend), map=nbmap_ptr(jstart:jend), jit=jit, time_offset=time_offset ) 207 IF ( nn_tra(ib_bdy) .GT. 0 .AND. nn_tra_dta(ib_bdy) .GE. 1 ) jend = jend + 2 208 ! If full velocities in boundary data then split into barotropic and baroclinic data 209 IF( ln_full_vel_array(ib_bdy) .and. & 210 & ( nn_dyn2d_dta(ib_bdy) .eq. 1 .or. nn_dyn2d_dta(ib_bdy) .eq. 3 .or. nn_dyn3d_dta(ib_bdy) .eq. 1 ) ) THEN 211 igrd = 2 ! zonal velocity 212 dta_bdy(ib_bdy)%u2d(:) = 0.0 213 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 214 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 215 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 216 DO ik = 1, jpkm1 217 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) & 218 & + fse3u(ii,ij,ik) * umask(ii,ij,ik) * dta_bdy(ib_bdy)%u3d(ib,ik) 219 END DO 220 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 221 DO ik = 1, jpkm1 222 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 223 END DO 219 224 END DO 220 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) * hur(ii,ij) 221 DO ik = 1, jpkm1 222 dta_bdy(ib_bdy)%u3d(ib,ik) = dta_bdy(ib_bdy)%u3d(ib,ik) - dta_bdy(ib_bdy)%u2d(ib) 225 igrd = 3 ! meridional velocity 226 dta_bdy(ib_bdy)%v2d(:) = 0.0 227 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 228 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 229 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 230 DO ik = 1, jpkm1 231 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 232 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 233 END DO 234 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 235 DO ik = 1, jpkm1 236 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 237 END DO 223 238 END DO 224 END DO 225 igrd = 3 ! meridional velocity 226 dta_bdy(ib_bdy)%v2d(:) = 0.0 227 DO ib = 1, idx_bdy(ib_bdy)%nblen(igrd) 228 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 229 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 230 DO ik = 1, jpkm1 231 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) & 232 & + fse3v(ii,ij,ik) * vmask(ii,ij,ik) * dta_bdy(ib_bdy)%v3d(ib,ik) 233 END DO 234 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) * hvr(ii,ij) 235 DO ik = 1, jpkm1 236 dta_bdy(ib_bdy)%v3d(ib,ik) = dta_bdy(ib_bdy)%v3d(ib,ik) - dta_bdy(ib_bdy)%v2d(ib) 237 END DO 238 END DO 239 ENDIF 240 ENDIF 241 IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 242 CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), & 243 & jit=jit, time_offset=time_offset ) 244 ENDIF 239 ENDIF 240 ENDIF 241 IF( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 242 CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), & 243 & jit=jit, time_offset=time_offset ) 244 ENDIF 245 245 ENDIF 246 246 ENDIF … … 306 306 ENDIF 307 307 IF( nn_dyn2d(ib_bdy) .gt. 0 .and. nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN ! update tidal harmonic forcing 308 CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset )308 CALL bdytide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 309 309 ENDIF 310 310 ENDIF … … 378 378 ! Set nn_dta 379 379 DO ib_bdy = 1, nb_bdy 380 IF (nn_dyn2d_dta(ib_bdy).eq.1.OR.nn_dyn2d_dta(ib_bdy).eq.3) nn_dta(ib_bdy) = 1 381 IF (nn_dyn3d_dta(ib_bdy).ge.1) nn_dta(ib_bdy) = 1 382 IF (nn_tra_dta (ib_bdy).ge.1) nn_dta(ib_bdy) = 1 383 #if defined key_lim2 384 IF (nn_ice_lim2_dta(ib_bdy).eq.1) nn_dta(ib_bdy) = 1 385 #endif 386 IF (lwp) THEN 387 WRITE(numout,*) 'Bdy package number ',ib_bdy 388 IF (nn_dta(ib_bdy).eq.1) THEN 389 WRITE(numout,*) 'We use external data' 390 ELSE 391 WRITE(numout,*) 'We do not use external data' 392 ENDIF 393 ENDIF 380 nn_dta(ib_bdy) = MAX( nn_dyn2d_dta(ib_bdy) & 381 ,nn_dyn3d_dta(ib_bdy) & 382 ,nn_tra_dta(ib_bdy) & 383 #if defined key_lim2 384 ,nn_ice_lim2_dta(ib_bdy) & 385 #endif 386 ) 387 IF(nn_dta(ib_bdy) .gt. 1) nn_dta(ib_bdy) = 1 394 388 END DO 395 389
Note: See TracChangeset
for help on using the changeset viewer.