MCPcopy Create free account
hub / github.com/AMReX-Codes/amrex / InterpFillFab

Method InterpFillFab

Src/Amr/AMReX_StateData.cpp:664–717  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

662}
663
664void
665StateData::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
719void
720StateData::getData (Vector<MultiFab*>& data,

Callers 1

fillMethod · 0.80

Calls 3

InterpFillFabFunction · 0.85
timeTypeMethod · 0.80
FillFabMethod · 0.80

Tested by

no test coverage detected