1 #ifndef ERF_READ_CHECKPOINT_MF_H_
2 #define ERF_READ_CHECKPOINT_MF_H_
6 #include <AMReX_Geometry.H>
7 #include <AMReX_IntVect.H>
8 #include <AMReX_MultiFab.H>
9 #include <AMReX_Periodicity.H>
10 #include <AMReX_VisMF.H>
19 inline amrex::Periodicity
22 const amrex::Box& dom = geom.Domain();
23 return amrex::Periodicity(amrex::IntVect(AMREX_D_DECL(geom.isPeriodic(0) ? dom.length(0) : 0,
24 geom.isPeriodic(1) ? dom.length(1) : 0,
53 const std::string& mf_name,
54 int scomp,
int dcomp,
int ncomp,
55 const amrex::IntVect& dst_ghosts,
57 const amrex::Periodicity& period)
64 amrex::VisMF::Read(src, mf_name);
70 const amrex::IntVect ng_dst = amrex::min(dst_ghosts, dst.nGrowVect());
83 if (src.boxArray() == dst.boxArray())
85 const amrex::IntVect ng_copy = src_ghosts ? amrex::min(ng_dst, src.nGrowVect())
88 if (src.DistributionMap() == dst.DistributionMap()) {
89 amrex::MultiFab::Copy(dst, src, scomp, dcomp, ncomp, ng_copy);
91 amrex::MultiFab aligned(src.boxArray(), dst.DistributionMap(), src.nComp(), src.nGrowVect());
92 aligned.Redistribute(src, 0, 0, src.nComp(), src.nGrowVect());
93 amrex::MultiFab::Copy(dst, aligned, scomp, dcomp, ncomp, ng_copy);
107 const amrex::IntVect ng_src = amrex::min(ng_dst, src.nGrowVect());
108 dst.ParallelCopy(src, scomp, dcomp, ncomp, ng_src, ng_dst, period);
109 dst.ParallelCopy(src, scomp, dcomp, ncomp, amrex::IntVect(0), ng_dst, period);
111 dst.ParallelCopy(src, scomp, dcomp, ncomp, amrex::IntVect(0), ng_dst, period);
121 const amrex::BoxArray& ba,
122 const amrex::DistributionMapping& dm,
123 const std::string& mf_name,
124 const amrex::Periodicity& period)
126 amrex::MultiFab
tmp(ba, dm, 1, 0);
128 dst = amrex::cast<amrex::iMultiFab>(
tmp);
@ tmp
Definition: ERF_AdvanceWSM6.cpp:116
Definition: ERF_ReadCheckpointMF.H:12
void read_checkpoint_imultifab(amrex::iMultiFab &dst, const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, const std::string &mf_name, const amrex::Periodicity &period)
Definition: ERF_ReadCheckpointMF.H:120
amrex::Periodicity lateral_periodicity(const amrex::Geometry &geom)
Definition: ERF_ReadCheckpointMF.H:20
void read_checkpoint_multifab(amrex::MultiFab &dst, const std::string &mf_name, int scomp, int dcomp, int ncomp, const amrex::IntVect &dst_ghosts, bool src_ghosts, const amrex::Periodicity &period)
Definition: ERF_ReadCheckpointMF.H:52