| 662 | } |
| 663 | |
| 664 | void |
| 665 | StateData::InterpFillFab (MultiFabCopyDescriptor& multiFabCopyDesc, |
| 666 | const Vector<MultiFabId>& mfid, |
| 667 | const Vector<FillBoxId>& fillBoxIds, |
| 668 | FArrayBox& dest, |
| 669 | Real time, |
| 670 | int src_comp, |
| 671 | int dest_comp, |
| 672 | int num_comp, |
| 673 | bool extrap) |
| 674 | { |
| 675 | BL_PROFILE("StateData::InterpFillFab()"); |
| 676 | if (desc->timeType() == StateDescriptor::Point) |
| 677 | { |
| 678 | if (old_data == nullptr) |
| 679 | { |
| 680 | multiFabCopyDesc.FillFab(mfid[MFNEWDATA], fillBoxIds[0], dest); |
| 681 | } |
| 682 | else |
| 683 | { |
| 684 | amrex::InterpFillFab(multiFabCopyDesc, |
| 685 | fillBoxIds, |
| 686 | mfid[MFOLDDATA], |
| 687 | mfid[MFNEWDATA], |
| 688 | dest, |
| 689 | old_time.start, |
| 690 | new_time.start, |
| 691 | time, |
| 692 | src_comp, |
| 693 | dest_comp, |
| 694 | num_comp, |
| 695 | extrap); |
| 696 | } |
| 697 | } |
| 698 | else |
| 699 | { |
| 700 | const Real teps = (new_time.start - old_time.start)*1.e-3_rt; |
| 701 | |
| 702 | if (time > new_time.start-teps && time < new_time.stop+teps) |
| 703 | { |
| 704 | multiFabCopyDesc.FillFab(mfid[MFNEWDATA], fillBoxIds[0], dest); |
| 705 | } |
| 706 | else if (old_data != nullptr && |
| 707 | time > old_time.start-teps && |
| 708 | time < old_time.stop+teps) |
| 709 | { |
| 710 | multiFabCopyDesc.FillFab(mfid[MFOLDDATA], fillBoxIds[0], dest); |
| 711 | } |
| 712 | else |
| 713 | { |
| 714 | amrex::Error("StateData::Interp(): cannot interp"); |
| 715 | } |
| 716 | } |
| 717 | } |
| 718 | |
| 719 | void |
| 720 | StateData::getData (Vector<MultiFab*>& data, |
no test coverage detected