MFEMProblemData

Summary

MFEMProblemData stores and owns the required data associated with a snapshot of the MFEM finite element problem.

Overview

Data stored in the MFEMProblemData struct is built and added to by builder methods in MFEMProblem.


#ifdef MFEM_ENABLED

#pragma once
#include "EquationSystem.h"
#include "MFEMContainers.h"
#include "CoefficientManager.h"
#include "MFEMSolverBase.h"
#include <fstream>
#include <iostream>
#include <memory>

/// Base problem data struct.
struct MFEMProblemData
{
public:
  MFEMProblemData() = default;
  virtual ~MFEMProblemData() { ode_solver.reset(); };

  std::shared_ptr<mfem::ParMesh> pmesh{nullptr};
  Moose::MFEM::SubMeshes submeshes;
  Moose::MFEM::CoefficientManager coefficients;

  std::unique_ptr<mfem::ODESolver> ode_solver{nullptr};
  mfem::BlockVector f;

  std::shared_ptr<Moose::MFEM::EquationSystem> eqn_system{nullptr};
  std::shared_ptr<mfem::NewtonSolver> nonlinear_solver{nullptr};

  std::shared_ptr<MFEMSolverBase> jacobian_solver{nullptr};

  Moose::MFEM::FECollections fecs;
  Moose::MFEM::FESpaces fespaces;
  Moose::MFEM::GridFunctions gridfunctions;

  MPI_Comm comm;
  int myid;
  int num_procs;
};

#endif
(framework/include/mfem/problem/MFEMProblemData.h)