2#ifndef included_AMP_NeumannVectorCorrection
3#define included_AMP_NeumannVectorCorrection
5#include "AMP/operators/boundary/BoundaryOperator.h"
6#include "AMP/operators/boundary/libmesh/NeumannVectorCorrectionParameters.h"
7#include "AMP/operators/boundary/libmesh/RobinPhysicsModel.h"
9#include "AMP/discretization/createLibmeshElements.h"
12#include "libmesh/libmesh_config.h"
13#undef LIBMESH_ENABLE_REFERENCE_COUNTING
14#include "libmesh/quadrature.h"
47 std::string
type()
const override {
return "NeumannVectorCorrection"; }
61 void reset( std::shared_ptr<const OperatorParameters> params )
override;
99 std::shared_ptr<OperatorParameters>
124 std::shared_ptr<const NeumannVectorCorrectionParameters>
d_params;
128 std::shared_ptr<const libMesh::FEType>
d_type;
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< const Vector > const_shared_ptr
A pointer class to wrap a MeshElementVector.
std::shared_ptr< AMP::LinearAlgebra::Variable > d_variable
const auto & getBoundaryIds() const
std::shared_ptr< OperatorParameters > getJacobianParameters(AMP::LinearAlgebra::Vector::const_shared_ptr u) override
AMP::LinearAlgebra::Vector::shared_ptr d_variableFlux
std::vector< std::vector< unsigned int > > d_dofIds
AMP::LinearAlgebra::Vector::shared_ptr d_Frozen
void setVariableFlux(const AMP::LinearAlgebra::Vector::shared_ptr &flux)
std::vector< short int > d_boundaryIds
virtual ~NeumannVectorCorrection()
void setVariable(const std::shared_ptr< AMP::LinearAlgebra::Variable > &var)
std::vector< bool > d_IsCoupledBoundary
const auto & getDofIds() const
void setFrozenVector(AMP::LinearAlgebra::Vector::shared_ptr f)
std::shared_ptr< const libMesh::FEType > d_type
void apply(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f) override
AMP::LinearAlgebra::Vector::shared_ptr d_rhsCorrectionAdd
libMeshEnums::QuadratureType d_qruleType
libMeshEnums::Order d_qruleOrder
std::shared_ptr< const NeumannVectorCorrectionParameters > d_params
std::shared_ptr< RobinPhysicsModel > d_robinPhysicsModel
std::vector< std::vector< double > > d_neumannValues
void computeRHScorrection(AMP::LinearAlgebra::Vector::shared_ptr rhsCorrection)
bool d_isFluxGaussPtVector
std::shared_ptr< AMP::LinearAlgebra::Variable > getInputVariable() const override
Return the input variable.
std::shared_ptr< AMP::LinearAlgebra::Variable > getOutputVariable() const override
Return the output variable.
std::shared_ptr< RobinPhysicsModel > getRobinPhysicsModel()
Discretization::createLibmeshElements d_libmeshElements
NeumannVectorCorrection(std::shared_ptr< const OperatorParameters > params)
Constructor. This function reads all the parameters required for surface elements.
std::string type() const override
Return the name of the operator.
void reset(std::shared_ptr< const OperatorParameters > params) override
void addRHScorrection(AMP::LinearAlgebra::Vector::shared_ptr rhs) override
auto getOperatorParameters()
AMP::Mesh::MeshElementVectorPtr d_currNodes
std::shared_ptr< AMP::Operator::Operator > shared_ptr