10#ifdef MOOSE_MFEM_ENABLED
18storeGridFunction(std::ostream & stream, mfem::ParGridFunction & gridfunction,
void * context)
20 const auto size = gridfunction.Size();
23 const auto *
values = gridfunction.HostRead();
32loadGridFunction(std::istream & stream, mfem::ParGridFunction & gridfunction,
void * context)
36 mooseAssert(size == gridfunction.Size(),
37 "MFEM restartable GridFunction size mismatch during restore.");
39 auto *
values = gridfunction.HostWrite();
52 dataStore(stream, num_gridfunctions, context);
53 for (
const auto & [name, gridfunction] : data->gridfunctions)
55 auto stored_name = name;
57 storeGridFunction(stream, *gridfunction, context);
60 auto num_complex_gridfunctions = data->cmplx_gridfunctions.size();
61 dataStore(stream, num_complex_gridfunctions, context);
62 for (
const auto & [name, gridfunction] : data->cmplx_gridfunctions)
64 auto stored_name = name;
66 storeGridFunction(stream, gridfunction->real(), context);
67 storeGridFunction(stream, gridfunction->imag(), context);
77 int num_gridfunctions = 0;
78 dataLoad(stream, num_gridfunctions, context);
79 for ([[maybe_unused]]
const auto i : make_range(num_gridfunctions))
83 auto & gf = data->gridfunctions.GetRef(name);
84 loadGridFunction(stream, gf, context);
87 int num_complex_gridfunctions = 0;
88 dataLoad(stream, num_complex_gridfunctions, context);
89 for ([[maybe_unused]]
const auto i : make_range(num_complex_gridfunctions))
93 auto & gf = data->cmplx_gridfunctions.GetRef(name);
94 loadGridFunction(stream, gf.real(), context);
95 loadGridFunction(stream, gf.imag(), context);
std::array< Real, 2 > values
void dataStore(std::ostream &stream, Moose::MFEM::SolutionState &, void *context)
void dataLoad(std::istream &stream, Moose::MFEM::SolutionState &, void *context)
int size()
Returns the number of elements in the map.
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
IntRange< T > make_range(T beg, T end)
Base problem data struct.
Moose::MFEM::GridFunctions gridfunctions