Skip to content

Commit

Permalink
Merge pull request #6 from aurora-multiphysics/EdwardPalmer99/impleme…
Browse files Browse the repository at this point in the history
…nt-mfem-general-user-object

Adds MFEMGeneralUserObject
  • Loading branch information
alexanderianblair authored Jul 12, 2024
2 parents bbb346a + b0d7b93 commit 11cf338
Show file tree
Hide file tree
Showing 31 changed files with 87 additions and 113 deletions.
8 changes: 2 additions & 6 deletions include/bcs/MFEMBoundaryCondition.h
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#pragma once

#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"
#include "boundary_conditions.h"
#include "gridfunctions.h"
#include "coefficients.h"
#include "Function.h"

class MFEMBoundaryCondition : public GeneralUserObject
class MFEMBoundaryCondition : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();
Expand All @@ -19,10 +19,6 @@ class MFEMBoundaryCondition : public GeneralUserObject
return _boundary_condition;
}

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

protected:
std::vector<BoundaryName> _boundary_names;
mfem::Array<int> bdr_attr;
Expand Down
4 changes: 0 additions & 4 deletions include/bcs/MFEMComplexVectorDirichletBC.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ class MFEMComplexVectorDirichletBC : public MFEMBoundaryCondition
MFEMComplexVectorDirichletBC(const InputParameters & parameters);
~MFEMComplexVectorDirichletBC() override {}

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

protected:
MFEMVectorCoefficient * _vec_coef_re{nullptr};
MFEMVectorCoefficient * _vec_coef_im{nullptr};
Expand Down
4 changes: 0 additions & 4 deletions include/bcs/MFEMScalarDirichletBC.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ class MFEMScalarDirichletBC : public MFEMBoundaryCondition
MFEMScalarDirichletBC(const InputParameters & parameters);
~MFEMScalarDirichletBC() override {}

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

protected:
MFEMCoefficient * _coef{nullptr};
};
4 changes: 0 additions & 4 deletions include/bcs/MFEMVectorDirichletBC.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ class MFEMVectorDirichletBC : public MFEMBoundaryCondition
MFEMVectorDirichletBC(const InputParameters & parameters);
~MFEMVectorDirichletBC() override {}

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

protected:
MFEMVectorCoefficient * _vec_coef{nullptr};
};
4 changes: 0 additions & 4 deletions include/bcs/MFEMVectorNormalIntegratedBC.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ class MFEMVectorNormalIntegratedBC : public MFEMBoundaryCondition
MFEMVectorNormalIntegratedBC(const InputParameters & parameters);
~MFEMVectorNormalIntegratedBC() override {}

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

protected:
MFEMVectorCoefficient * _vec_coef{nullptr};
};
8 changes: 2 additions & 6 deletions include/coefficients/MFEMCoefficient.h
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
#pragma once

#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"
#include "coefficients.h"
#include "Function.h"

libMesh::Point PointFromMFEMVector(const mfem::Vector & vec);

class MFEMCoefficient : public GeneralUserObject
class MFEMCoefficient : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMCoefficient(const InputParameters & parameters);
virtual ~MFEMCoefficient();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

virtual std::shared_ptr<mfem::Coefficient> getCoefficient() const
{
mooseError("Base class MFEMCoefficient cannot return a valid Coefficient. Use a child class.");
Expand Down
4 changes: 0 additions & 4 deletions include/coefficients/MFEMConstantCoefficient.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,6 @@ class MFEMConstantCoefficient : public MFEMCoefficient
MFEMConstantCoefficient(const InputParameters & parameters);
virtual ~MFEMConstantCoefficient();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

std::shared_ptr<mfem::Coefficient> getCoefficient() const override { return coefficient; }

private:
Expand Down
4 changes: 0 additions & 4 deletions include/coefficients/MFEMFunctionCoefficient.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@ class MFEMFunctionCoefficient : public MFEMCoefficient
MFEMFunctionCoefficient(const InputParameters & parameters);
virtual ~MFEMFunctionCoefficient();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

std::shared_ptr<mfem::Coefficient> getCoefficient() const override { return _coefficient; };

private:
Expand Down
8 changes: 2 additions & 6 deletions include/coefficients/MFEMVectorCoefficient.h
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@
#pragma once

#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"
#include "coefficients.h"
#include "Function.h"

class MFEMVectorCoefficient : public GeneralUserObject
class MFEMVectorCoefficient : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMVectorCoefficient(const InputParameters & parameters);
virtual ~MFEMVectorCoefficient();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

virtual std::shared_ptr<mfem::VectorCoefficient> getVectorCoefficient() const
{
mooseError("Base class MFEMVectorCoefficient cannot return a valid VectorCoefficient. Use a "
Expand Down
4 changes: 0 additions & 4 deletions include/coefficients/MFEMVectorConstantCoefficient.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@ class MFEMVectorConstantCoefficient : public MFEMVectorCoefficient
MFEMVectorConstantCoefficient(const InputParameters & parameters);
virtual ~MFEMVectorConstantCoefficient();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

virtual std::shared_ptr<mfem::VectorCoefficient> getVectorCoefficient() const override
{
return _vector_coefficient;
Expand Down
4 changes: 0 additions & 4 deletions include/coefficients/MFEMVectorFunctionCoefficient.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@ class MFEMVectorFunctionCoefficient : public MFEMVectorCoefficient
MFEMVectorFunctionCoefficient(const InputParameters & parameters);
virtual ~MFEMVectorFunctionCoefficient();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

std::shared_ptr<mfem::VectorCoefficient> getVectorCoefficient() const override
{
return _vector_coefficient;
Expand Down
7 changes: 2 additions & 5 deletions include/fespaces/MFEMFESpace.h
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
#pragma once
#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"

class MFEMFESpace : public GeneralUserObject
class MFEMFESpace : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMFESpace(const InputParameters & parameters);
virtual ~MFEMFESpace();
virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

static const std::string createFECName(const std::string & fespace_type, const int order);
const int order;
Expand Down
5 changes: 0 additions & 5 deletions include/formulations/CustomFormulation.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,6 @@ class CustomFormulation : public MFEMFormulation
CustomFormulation(const InputParameters & parameters);
~CustomFormulation() override = default;

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

/// Returns a shared pointer to the time-domain equation system problem builder.
std::shared_ptr<platypus::ProblemBuilder> getProblemBuilder() const override
{
return _formulation;
Expand Down
8 changes: 2 additions & 6 deletions include/formulations/MFEMFormulation.h
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
#pragma once

#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"
#include "problem_builder_base.h"

class MFEMFormulation : public GeneralUserObject
class MFEMFormulation : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMFormulation(const InputParameters & parameters);
virtual ~MFEMFormulation() override = default;

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

virtual std::shared_ptr<platypus::ProblemBuilder> getProblemBuilder() const
{
mooseError(
Expand Down
8 changes: 2 additions & 6 deletions include/kernels/MFEMBilinearFormKernel.h
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
#pragma once

#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"
#include "kernels.h"
#include "gridfunctions.h"

class MFEMBilinearFormKernel : public GeneralUserObject
class MFEMBilinearFormKernel : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMBilinearFormKernel(const InputParameters & parameters);
virtual ~MFEMBilinearFormKernel() {}

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

virtual std::shared_ptr<platypus::Kernel<mfem::ParBilinearForm>> getKernel() { return nullptr; }
};
4 changes: 0 additions & 4 deletions include/kernels/MFEMDiffusionKernel.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@ class MFEMDiffusionKernel : public MFEMBilinearFormKernel
MFEMDiffusionKernel(const InputParameters & parameters);
~MFEMDiffusionKernel() override {}

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

std::shared_ptr<platypus::Kernel<mfem::ParBilinearForm>> getKernel() override { return _kernel; }

protected:
Expand Down
8 changes: 2 additions & 6 deletions include/kernels/MFEMLinearFormKernel.h
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
#pragma once

#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"
#include "kernels.h"
#include "gridfunctions.h"

class MFEMLinearFormKernel : public GeneralUserObject
class MFEMLinearFormKernel : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMLinearFormKernel(const InputParameters & parameters);
virtual ~MFEMLinearFormKernel();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

virtual std::shared_ptr<platypus::Kernel<mfem::ParLinearForm>> getKernel() { return nullptr; }
};
8 changes: 2 additions & 6 deletions include/materials/MFEMMaterial.h
Original file line number Diff line number Diff line change
@@ -1,21 +1,17 @@
#pragma once

#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"
#include "MFEMCoefficient.h"
#include "coefficients.h"

class MFEMMaterial : public GeneralUserObject
class MFEMMaterial : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMMaterial(const InputParameters & parameters);
virtual ~MFEMMaterial();

virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

virtual void storeCoefficients(platypus::Subdomain & subdomain) {}

std::vector<SubdomainName> blocks;
Expand Down
6 changes: 4 additions & 2 deletions include/problem/MFEMProblem.h
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,16 @@ class MFEMProblem : public ExternalProblem

/**
* Override of ExternalProblem::addKernel. Uses ExternalProblem::addKernel to create a
* GeneralUserObject representing the kernel in MOOSE, and creates corresponding MFEM kernel
* MFEMGeneralUserObject representing the kernel in MOOSE, and creates corresponding MFEM kernel
* to be used in the MFEM solve.
*/
void addKernel(const std::string & kernel_name,
const std::string & name,
InputParameters & parameters) override;
/**
* Override of ExternalProblem::addAuxKernel.
* Override of ExternalProblem::addAuxKernel. Uses ExternalProblem::addAuxKernel to create a
* MFEMGeneralUserObject representing the auxkernel in MOOSE, and creates corresponding MFEM
* auxsolver to be used in the MFEM solve.
*/
void addAuxKernel(const std::string & kernel_name,
const std::string & name,
Expand Down
30 changes: 30 additions & 0 deletions include/userobjects/MFEMGeneralUserObject.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#pragma once

// MOOSE includes
#include "GeneralUserObject.h"

// Forwards declaration.
class MFEMProblem;

/*
* This class adds a getMFEMProblem method.
*/
class MFEMGeneralUserObject : public GeneralUserObject
{
public:
static InputParameters validParams();

MFEMGeneralUserObject(const InputParameters & parameters);

/// Returns a reference to the MFEMProblem instance.
MFEMProblem & getMFEMProblem() const { return _mfem_problem; }

void execute() override {}

void initialize() override {}

void finalize() override {}

private:
MFEMProblem & _mfem_problem;
};
7 changes: 2 additions & 5 deletions include/variables/MFEMVariable.h
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
#pragma once

#include "MFEMFESpace.h"
#include "GeneralUserObject.h"
#include "MFEMGeneralUserObject.h"

class MFEMVariable : public GeneralUserObject
class MFEMVariable : public MFEMGeneralUserObject
{
public:
static InputParameters validParams();

MFEMVariable(const InputParameters & parameters);
virtual ~MFEMVariable();
virtual void execute() override {}
virtual void initialize() override {}
virtual void finalize() override {}

const MFEMFESpace & fespace;
unsigned int components;
Expand Down
4 changes: 2 additions & 2 deletions src/bcs/MFEMBoundaryCondition.C
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ registerMooseObject("PlatypusApp", MFEMBoundaryCondition);
InputParameters
MFEMBoundaryCondition::validParams()
{
InputParameters params = GeneralUserObject::validParams();
InputParameters params = MFEMGeneralUserObject::validParams();

params.registerBase("BoundaryCondition");

Expand All @@ -18,7 +18,7 @@ MFEMBoundaryCondition::validParams()
}

MFEMBoundaryCondition::MFEMBoundaryCondition(const InputParameters & parameters)
: GeneralUserObject(parameters),
: MFEMGeneralUserObject(parameters),
_boundary_names(getParam<std::vector<BoundaryName>>("boundary")),
bdr_attr(_boundary_names.size())
{
Expand Down
Loading

0 comments on commit 11cf338

Please sign in to comment.