150 integer,
intent(in) :: ixi^
l, ixo^
l, ib
151 double precision,
intent(in) :: qt, x(ixi^s,1:
ndim)
152 double precision,
intent(inout) :: w(ixi^s,1:nw)
153 double precision :: tmp(ixo^s)
154 integer :: i, ix, iw, n_bc
197 if (n_bc == -1) cycle
200 x(ixomin1, ixomin2:ixomax2, 2), qt)
205 do i = 0, ixoomax1-ixoomin1
206 w(ixoomin1+i, ixomin2:ixomax2, iw) = &
207 2 * tmp(ixomin1, ixomin2:ixomax2) - &
208 w(ix, ixomin2:ixomax2, iw)
212 do i = 0, ixoomax1-ixoomin1
214 w(ixoomin1+i, ixomin2:ixomax2, iw) = &
215 4 * tmp(ixomin1, ixomin2:ixomax2) - &
216 3 * w(ix, ixomin2:ixomax2, iw)
218 w(ixoomin1+i, ixomin2:ixomax2, iw) = &
219 2 * tmp(ixomin1, ixomin2:ixomax2) - &
220 w(ix, ixomin2:ixomax2, iw)
222 w(ixoomin1+i, ixomin2:ixomax2, iw) = &
223 tmp(ixomin1, ixomin2:ixomax2)
228 do i = 0, ixoomax1-ixoomin1
229 if (i==ixoomax1-ixoomin1)
then
230 w(ixoomin1+i, ixomin2:ixomax2, iw) = &
231 4 * tmp(ixomin1, ixomin2:ixomax2) - &
232 3 * w(ix, ixomin2:ixomax2, iw)
233 elseif (i==ixoomax1-ixoomin1-1)
then
234 w(ixoomin1+i, ixomin2:ixomax2, iw) = &
235 2 * tmp(ixomin1, ixomin2:ixomax2) - &
236 w(ix, ixomin2:ixomax2, iw)
238 w(ixoomin1+i, ixomin2:ixomax2, iw) = &
239 tmp(ixomin1, ixomin2:ixomax2)
247 do i = ixoomin1, ixoomax1
248 w(i, ixomin2:ixomax2, iw) = &
249 tmp(ixomin1, ixomin2:ixomax2)
292 if (n_bc == -1) cycle
295 x(ixomin1:ixomax1, ixomin2, 1), qt)
302 do i = 0, ixoomax2-ixoomin2
303 w(ixomin1:ixomax1, ixoomin2+i, iw) = &
304 2 * tmp(ixomin1:ixomax1, ixomin2) - &
305 w(ixomin1:ixomax1, ix, iw)
309 do i = 0, ixoomax2-ixoomin2
311 w(ixomin1:ixomax1, ixoomin2+i, iw) = &
312 4 * tmp(ixomin1:ixomax1, ixomin2) - &
313 3 * w(ixomin1:ixomax1, ix, iw)
315 w(ixomin1:ixomax1, ixoomin2+i, iw) = &
316 2 * tmp(ixomin1:ixomax1, ixomin2) - &
317 w(ixomin1:ixomax1, ix, iw)
319 w(ixomin1:ixomax1, ixoomin2+i, iw) = &
320 tmp(ixomin1:ixomax1, ixomin2)
325 do i = 0, ixoomax2-ixoomin2
326 if (i==ixoomax2-ixoomin2)
then
327 w(ixomin1:ixomax1, ixoomin2+i, iw) = &
328 4 * tmp(ixomin1:ixomax1, ixomin2) - &
329 3 * w(ixomin1:ixomax1, ix, iw)
330 elseif (i==ixoomax2-ixoomin2-1)
then
331 w(ixomin1:ixomax1, ixoomin2+i, iw) = &
332 2 * tmp(ixomin1:ixomax1, ixomin2) - &
333 w(ixomin1:ixomax1, ix, iw)
335 w(ixomin1:ixomax1, ixoomin2+i, iw) = &
336 tmp(ixomin1:ixomax1, ixomin2)
344 do i = ixoomin2, ixoomax2
345 w(ixomin1:ixomax1, i, iw) = &
346 tmp(ixomin1:ixomax1, ixomin2)
357 call mpistop(
"bc_data_set: unknown iB")
396 if (n_bc == -1) cycle
398 tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3) =
bc_data_get_3d(n_bc, &
399 x(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3, 2), &
400 x(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3, 3), qt)
407 do i = 0, ixoomax1-ixoomin1
408 w(ixoomin1+i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
409 2 * tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3) - &
410 w(ix, ixomin2:ixomax2, ixomin3:ixomax3, iw)
414 do i = 0, ixoomax1-ixoomin1
416 w(ixoomin1+i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
417 4 * tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3) - &
418 3*w(ix, ixomin2:ixomax2, ixomin3:ixomax3, iw)
420 w(ixoomin1+i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
421 2 * tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3) - &
422 w(ix, ixomin2:ixomax2, ixomin3:ixomax3, iw)
424 w(ixoomin1+i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
425 tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3)
430 do i = 0, ixoomax1-ixoomin1
431 if (i==ixoomax1-ixoomin1)
then
432 w(ixoomin1+i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
433 4 * tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3) - &
434 3*w(ix, ixomin2:ixomax2, ixomin3:ixomax3, iw)
435 elseif (i==ixoomax1-ixoomin1-1)
then
436 w(ixoomin1+i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
437 2 * tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3) - &
438 w(ix, ixomin2:ixomax2, ixomin3:ixomax3, iw)
440 w(ixoomin1+i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
441 tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3)
449 do i = ixoomin1,ixoomax1
450 w(i, ixomin2:ixomax2, ixomin3:ixomax3, iw) = &
451 tmp(ixomin1, ixomin2:ixomax2, ixomin3:ixomax3)
494 if (n_bc == -1) cycle
496 tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3) =
bc_data_get_3d(n_bc, &
497 x(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3, 1), &
498 x(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3, 3), qt)
505 do i = 0, ixoomax2-ixoomin2
506 w(ixomin1:ixomax1, ixoomin2+i, ixomin3:ixomax3, iw) = &
507 2 * tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3) - &
508 w(ixomin1:ixomax1, ix, ixomin3:ixomax3, iw)
512 do i = 0, ixoomax2-ixoomin2
514 w(ixomin1:ixomax1, ixoomin2+i, ixomin3:ixomax3, iw) = &
515 4 * tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3) - &
516 3* w(ixomin1:ixomax1, ix, ixomin3:ixomax3, iw)
518 w(ixomin1:ixomax1, ixoomin2+i, ixomin3:ixomax3, iw) = &
519 2 * tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3) - &
520 w(ixomin1:ixomax1, ix, ixomin3:ixomax3, iw)
522 w(ixomin1:ixomax1, ixoomin2+i, ixomin3:ixomax3, iw) = &
523 tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3)
528 do i = 0, ixoomax2-ixoomin2
529 if (i==ixoomax2-ixoomin2)
then
530 w(ixomin1:ixomax1, ixoomin2+i, ixomin3:ixomax3, iw) = &
531 4 * tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3) - &
532 3* w(ixomin1:ixomax1, ix, ixomin3:ixomax3, iw)
533 elseif (i==ixoomax2-ixoomin2-1)
then
534 w(ixomin1:ixomax1, ixoomin2+i, ixomin3:ixomax3, iw) = &
535 2 * tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3) - &
536 w(ixomin1:ixomax1, ix, ixomin3:ixomax3, iw)
538 w(ixomin1:ixomax1, ixoomin2+i, ixomin3:ixomax3, iw) = &
539 tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3)
547 do i = ixoomin2,ixoomax2
548 w(ixomin1:ixomax1, i, ixomin3:ixomax3, iw) = &
549 tmp(ixomin1:ixomax1, ixomin2, ixomin3:ixomax3)
591 if (n_bc == -1) cycle
593 tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3) =
bc_data_get_3d(n_bc, &
594 x(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3, 1), &
595 x(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3, 2), qt)
602 do i = 0, ixoomax3-ixoomin3
603 w(ixomin1:ixomax1, ixomin2:ixomax2, ixoomin3+i, iw) = &
604 2 * tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3) - &
605 w(ixomin1:ixomax1, ixomin2:ixomax2, ix, iw)
609 do i = 0, ixoomax3-ixoomin3
611 w(ixomin1:ixomax1, ixomin2:ixomax2, ixoomin3+i, iw) = &
612 4 * tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3) - &
613 3 * w(ixomin1:ixomax1, ixomin2:ixomax2, ix, iw)
615 w(ixomin1:ixomax1, ixomin2:ixomax2, ixoomin3+i, iw) = &
616 2 * tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3) - &
617 w(ixomin1:ixomax1, ixomin2:ixomax2, ix, iw)
619 w(ixomin1:ixomax1, ixomin2:ixomax2, ixoomin3+i, iw) = &
620 tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3)
625 do i = 0, ixoomax3-ixoomin3
626 if (i==ixoomax3-ixoomin3)
then
627 w(ixomin1:ixomax1, ixomin2:ixomax2, ixoomin3+i, iw) = &
628 4 * tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3) - &
629 3 * w(ixomin1:ixomax1, ixomin2:ixomax2, ix, iw)
630 elseif (i==ixoomax3-ixoomin3-1)
then
631 w(ixomin1:ixomax1, ixomin2:ixomax2, ixoomin3+i, iw) = &
632 2 * tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3) - &
633 w(ixomin1:ixomax1, ixomin2:ixomax2, ix, iw)
635 w(ixomin1:ixomax1, ixomin2:ixomax2, ixoomin3+i, iw) = &
636 tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3)
644 do i = ixoomin3,ixoomax3
645 w(ixomin1:ixomax1, ixomin2:ixomax2, i, iw) = &
646 tmp(ixomin1:ixomax1, ixomin2:ixomax2, ixomin3)
656 call mpistop(
"bc_data_set: unknown iB")