Advanced Multi-Physics (AMP)
On-Line Documentation
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
AMP::Operator::DirichletMatrixCorrection Class Referenceabstract

#include <DirichletMatrixCorrection.h>

Inheritance diagram for AMP::Operator::DirichletMatrixCorrection:
Inheritance graph
[legend]

Public Types

typedef std::shared_ptr< AMP::Operator::Operatorshared_ptr
 

Public Member Functions

void addRHScorrection (AMP::LinearAlgebra::Vector::shared_ptr rhs) override
 
virtual void apply (AMP::LinearAlgebra::Vector::const_shared_ptr, AMP::LinearAlgebra::Vector::shared_ptr) override
 
virtual void apply (std::shared_ptr< const AMP::LinearAlgebra::Vector > u, std::shared_ptr< AMP::LinearAlgebra::Vector > f)=0
 
virtual std::shared_ptr< AMP::LinearAlgebra::VectorcreateInputVector () const
 Get a input vector ( For \(\mathbf{A(x)}\), \(\mathbf{x}\) is a input vector )
 
virtual std::shared_ptr< AMP::LinearAlgebra::VectorcreateOutputVector () const
 Get a left vector ( For \(\mathbf{y=A(x)}\), \(\mathbf{y}\) is an output vector )
 
 DirichletMatrixCorrection (std::shared_ptr< const OperatorParameters > params)
 Constructor.
 
const autogetBoundaryIds ()
 
const autogetDofIds ()
 
std::shared_ptr< AMP::LinearAlgebra::VariablegetInputVariable () const override
 Return the input variable.
 
AMP::Utilities::MemoryType getMemoryLocation () const
 
std::shared_ptr< AMP::Mesh::MeshgetMesh ()
 Return the mesh.
 
std::shared_ptr< const AMP::Mesh::MeshgetMesh () const
 Return the mesh.
 
std::shared_ptr< AMP::LinearAlgebra::VariablegetOutputVariable () const override
 Return the output variable.
 
virtual std::shared_ptr< OperatorParametersgetParameters (const std::string &type, std::shared_ptr< const AMP::LinearAlgebra::Vector > u, std::shared_ptr< OperatorParameters > params=nullptr)
 
virtual bool isValidVector (std::shared_ptr< const AMP::LinearAlgebra::Vector >)
 given a vector return whether it is valid or not
 
virtual void makeConsistent (std::shared_ptr< AMP::LinearAlgebra::Vector > vec)
 
virtual void modifyInitialSolutionVector (AMP::LinearAlgebra::Vector::shared_ptr)
 
virtual void reInitializeVector (std::shared_ptr< AMP::LinearAlgebra::Vector >)
 
void reset (std::shared_ptr< const OperatorParameters >) override
 
virtual void residual (std::shared_ptr< const AMP::LinearAlgebra::Vector > f, std::shared_ptr< const AMP::LinearAlgebra::Vector > u, std::shared_ptr< AMP::LinearAlgebra::Vector > r)
 
virtual std::shared_ptr< AMP::LinearAlgebra::VectorSelectorselectInputVector () const
 Return the selector for input vectors.
 
virtual std::shared_ptr< AMP::LinearAlgebra::VectorSelectorselectOutputVector () const
 Return the selector for output vectors.
 
virtual void setDebugPrintInfoLevel (int level)
 
void setRHScorrection (AMP::LinearAlgebra::Vector::shared_ptr rhs) override
 
void setVariable (const std::shared_ptr< AMP::LinearAlgebra::Variable > &var)
 Set the variable for the vector that will used with this operator.
 
std::shared_ptr< AMP::LinearAlgebra::VectorsubsetInputVector (std::shared_ptr< AMP::LinearAlgebra::Vector > vec) const
 Subset input vector.
 
std::shared_ptr< const AMP::LinearAlgebra::VectorsubsetInputVector (std::shared_ptr< const AMP::LinearAlgebra::Vector > vec) const
 Subset input vector.
 
std::shared_ptr< AMP::LinearAlgebra::VectorsubsetOutputVector (std::shared_ptr< AMP::LinearAlgebra::Vector > vec) const
 Subset output vector.
 
std::shared_ptr< const AMP::LinearAlgebra::VectorsubsetOutputVector (std::shared_ptr< const AMP::LinearAlgebra::Vector > vec) const
 Subset output vector.
 
std::string type () const override
 Return the name of the operator.
 
virtual ~DirichletMatrixCorrection ()
 Destructor.
 

Protected Member Functions

void applyMatrixCorrection ()
 
void getBackendFromInput (std::shared_ptr< AMP::Database > db)
 
virtual std::shared_ptr< OperatorParametersgetJacobianParameters (std::shared_ptr< const AMP::LinearAlgebra::Vector >)
 
void initRhsCorrectionAdd (AMP::LinearAlgebra::Vector::shared_ptr rhs)
 
void initRhsCorrectionSet ()
 
void parseParams (std::shared_ptr< const DirichletMatrixCorrectionParameters >)
 
void setMemoryAndBackendParameters (std::shared_ptr< AMP::Database > db)
 

Protected Attributes

bool d_applyMatrixCorrectionWasCalled
 
AMP::Utilities::Backend d_backend = AMP::Utilities::Backend::Serial
 
std::vector< short intd_boundaryIds
 
bool d_computedAddRHScorrection = false
 
std::vector< std::vector< double > > d_dirichletValues
 
AMP::LinearAlgebra::Vector::shared_ptr d_dispVals
 
std::vector< std::vector< unsigned int > > d_dofIds
 
int d_iDebugPrintInfoLevel = 0
 
bool d_initialized = false
 
std::shared_ptr< AMP::LinearAlgebra::Matrixd_inputMatrix
 
int d_iObject_id
 
AMP::Utilities::MemoryType d_memory_location = AMP::Utilities::MemoryType::none
 
std::shared_ptr< AMP::Mesh::Meshd_Mesh
 
AMP::LinearAlgebra::Vector::shared_ptr d_rhsCorrectionAdd
 
std::shared_ptr< DirichletVectorCorrectiond_rhsCorrectionSet
 
bool d_skipRHSaddCorrection = false
 
bool d_skipRHSsetCorrection = false
 
bool d_symmetricCorrection = false
 
std::shared_ptr< AMP::LinearAlgebra::Variabled_variable
 
bool d_zeroDirichletBlock = false
 

Static Protected Attributes

static int d_iInstance_id
 

Detailed Description

A class used to impose Dirichlet boundary conditions for a linear operator. For a linear operator, imposing Dirichlet boundary conditions involves the following steps: 1) Modify the entries of the matrix appropriately. 2) Add a vector of corrections to the RHS vector 3) Set the Dirichlet values at the appropriate locations in the RHS vector.

Definition at line 20 of file DirichletMatrixCorrection.h.

Member Typedef Documentation

◆ shared_ptr

Definition at line 29 of file Operator.h.

Constructor & Destructor Documentation

◆ DirichletMatrixCorrection()

AMP::Operator::DirichletMatrixCorrection::DirichletMatrixCorrection ( std::shared_ptr< const OperatorParameters params)
explicit

Constructor.

◆ ~DirichletMatrixCorrection()

virtual AMP::Operator::DirichletMatrixCorrection::~DirichletMatrixCorrection ( )
inlinevirtual

Destructor.

Definition at line 27 of file DirichletMatrixCorrection.h.

Member Function Documentation

◆ addRHScorrection()

void AMP::Operator::DirichletMatrixCorrection::addRHScorrection ( AMP::LinearAlgebra::Vector::shared_ptr  rhs)
overridevirtual

Adds a vector to the RHS vector. This is one of the steps for imposing Dirichlet boundary conditions. This step can be skipped if the Dirichlet boundary conditons are homogeneous.

Reimplemented from AMP::Operator::BoundaryOperator.

◆ apply() [1/2]

virtual void AMP::Operator::DirichletMatrixCorrection::apply ( AMP::LinearAlgebra::Vector::const_shared_ptr  ,
AMP::LinearAlgebra::Vector::shared_ptr   
)
inlineoverridevirtual

Definition at line 48 of file DirichletMatrixCorrection.h.

◆ apply() [2/2]

virtual void AMP::Operator::Operator::apply ( std::shared_ptr< const AMP::LinearAlgebra::Vector u,
std::shared_ptr< AMP::LinearAlgebra::Vector f 
)
pure virtualinherited

This base class can not give a meaningful definition of apply. See the derived classes for how they define apply. Each operator is free to define apply in a way that is appropriate for that operator.

Parameters
ushared pointer to const input vector u
fshared pointer to output vector storing result of applying this operator

Implemented in AMP::Operator::RadDifOp, AMP::Operator::RadDifOpPJac, AMP::Operator::FunctionOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, and AMP::Operator::MemorySpaceMigrationOperator.

◆ applyMatrixCorrection()

void AMP::Operator::DirichletMatrixCorrection::applyMatrixCorrection ( )
protected

◆ createInputVector()

virtual std::shared_ptr< AMP::LinearAlgebra::Vector > AMP::Operator::Operator::createInputVector ( ) const
virtualinherited

◆ createOutputVector()

virtual std::shared_ptr< AMP::LinearAlgebra::Vector > AMP::Operator::Operator::createOutputVector ( ) const
virtualinherited

Get a left vector ( For \(\mathbf{y=A(x)}\), \(\mathbf{y}\) is an output vector )

Returns
A newly created output vector

Reimplemented in AMP::Operator::IdentityOperator, AMP::Operator::LinearOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, and AMP::Operator::MemorySpaceMigrationOperator.

◆ getBackendFromInput()

void AMP::Operator::Operator::getBackendFromInput ( std::shared_ptr< AMP::Database db)
protectedinherited

◆ getBoundaryIds()

const auto & AMP::Operator::DirichletMatrixCorrection::getBoundaryIds ( )
inline

Definition at line 74 of file DirichletMatrixCorrection.h.

References d_boundaryIds.

◆ getDofIds()

const auto & AMP::Operator::DirichletMatrixCorrection::getDofIds ( )
inline

Definition at line 76 of file DirichletMatrixCorrection.h.

References d_dofIds.

◆ getInputVariable()

std::shared_ptr< AMP::LinearAlgebra::Variable > AMP::Operator::DirichletMatrixCorrection::getInputVariable ( ) const
inlineoverridevirtual

Return the input variable.

Reimplemented from AMP::Operator::Operator.

Definition at line 43 of file DirichletMatrixCorrection.h.

References d_variable.

◆ getJacobianParameters()

virtual std::shared_ptr< OperatorParameters > AMP::Operator::Operator::getJacobianParameters ( std::shared_ptr< const AMP::LinearAlgebra::Vector )
inlineprotectedvirtualinherited

This function returns a OperatorParameters object constructed by the operator which contains parameters from which new Jacobian operators can be created. Returning a parameter object instead of an Operator itself is meant to give users more flexibility.

Definition at line 180 of file Operator.h.

◆ getMemoryLocation()

AMP::Utilities::MemoryType AMP::Operator::Operator::getMemoryLocation ( ) const
inlineinherited

Definition at line 89 of file Operator.h.

References AMP::Operator::Operator::d_memory_location.

◆ getMesh() [1/2]

std::shared_ptr< AMP::Mesh::Mesh > AMP::Operator::Operator::getMesh ( )
inlineinherited

Return the mesh.

Definition at line 149 of file Operator.h.

References AMP::Operator::Operator::d_Mesh.

◆ getMesh() [2/2]

std::shared_ptr< const AMP::Mesh::Mesh > AMP::Operator::Operator::getMesh ( ) const
inlineinherited

Return the mesh.

Definition at line 152 of file Operator.h.

References AMP::Operator::Operator::d_Mesh.

◆ getOutputVariable()

std::shared_ptr< AMP::LinearAlgebra::Variable > AMP::Operator::DirichletMatrixCorrection::getOutputVariable ( ) const
inlineoverridevirtual

Return the output variable.

Reimplemented from AMP::Operator::Operator.

Definition at line 38 of file DirichletMatrixCorrection.h.

References d_variable.

◆ getParameters()

virtual std::shared_ptr< OperatorParameters > AMP::Operator::Operator::getParameters ( const std::string &  type,
std::shared_ptr< const AMP::LinearAlgebra::Vector u,
std::shared_ptr< OperatorParameters params = nullptr 
)
virtualinherited

This function returns a OperatorParameters object constructed by the operator which contains parameters from which new operators can be created. Returning a parameter object instead of an Operator itself is meant to give users more flexibility. Examples of how this functionality might be used would be the construction of Jacobian, frozen Jacobian, preconditioner approximations to the Jacobian, adjoint operators etc

Parameters
typestd:string specifying type of return operator parameters being requested. Currently the valid option is Jacobian
uconst pointer to current solution vector
paramspointer to additional parameters that might be required to construct the return parameters

Reimplemented in AMP::Operator::IdentityOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, and AMP::Operator::MemorySpaceMigrationOperator.

◆ initRhsCorrectionAdd()

void AMP::Operator::DirichletMatrixCorrection::initRhsCorrectionAdd ( AMP::LinearAlgebra::Vector::shared_ptr  rhs)
protected

◆ initRhsCorrectionSet()

void AMP::Operator::DirichletMatrixCorrection::initRhsCorrectionSet ( )
protected

◆ isValidVector()

virtual bool AMP::Operator::Operator::isValidVector ( std::shared_ptr< const AMP::LinearAlgebra::Vector )
inlinevirtualinherited

◆ makeConsistent()

virtual void AMP::Operator::Operator::makeConsistent ( std::shared_ptr< AMP::LinearAlgebra::Vector vec)
virtualinherited

virtual interface used to make a vector consistent in an operator defined way. An example of where an operator is required to make a vector consistent is in the context of AMR where ghost values on coarse-fine interfaces are filled in an operator dependent way. The default implementation is to simply call the vector makeConsistent(SET)

Reimplemented in AMP::Operator::MemorySpaceMigrationLinearOperator, AMP::Operator::MemorySpaceMigrationOperator, and AMP::TimeIntegrator::TimeOperator.

◆ modifyInitialSolutionVector()

virtual void AMP::Operator::BoundaryOperator::modifyInitialSolutionVector ( AMP::LinearAlgebra::Vector::shared_ptr  )
inlinevirtualinherited

◆ parseParams()

void AMP::Operator::DirichletMatrixCorrection::parseParams ( std::shared_ptr< const DirichletMatrixCorrectionParameters )
protected

◆ reInitializeVector()

virtual void AMP::Operator::Operator::reInitializeVector ( std::shared_ptr< AMP::LinearAlgebra::Vector )
inlinevirtualinherited

re-initialize a vector, e.g. after a regrid operation has happened. This is useful for example when numerical overshoots or undershoots have happened due to interpolation for example The default is a null op

Reimplemented in AMP::TimeIntegrator::TimeOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, and AMP::Operator::MemorySpaceMigrationOperator.

Definition at line 167 of file Operator.h.

◆ reset()

void AMP::Operator::DirichletMatrixCorrection::reset ( std::shared_ptr< const OperatorParameters )
overridevirtual

This function modifies the entries of the matrix formed by the volume operator in order to impose Dirichlet boundary conditions. This function can also be used to change the Dirichlet boundary conditions, if required.

Reimplemented from AMP::Operator::Operator.

◆ residual()

virtual void AMP::Operator::Operator::residual ( std::shared_ptr< const AMP::LinearAlgebra::Vector f,
std::shared_ptr< const AMP::LinearAlgebra::Vector u,
std::shared_ptr< AMP::LinearAlgebra::Vector r 
)
virtualinherited

Default base class implementation of the residual: f-L(u)

Parameters
fshared pointer to const vector rhs
ushared pointer to const vector u
rshared pointer to vector residual

Reimplemented in AMP::Solver::AMG::HasDeferConsistency< AMP::Operator::LinearOperator >, AMP::Operator::MemorySpaceMigrationLinearOperator, AMP::Operator::MemorySpaceMigrationOperator, AMP::TimeIntegrator::IDATimeOperator, and AMP::TimeIntegrator::TimeOperator.

◆ selectInputVector()

virtual std::shared_ptr< AMP::LinearAlgebra::VectorSelector > AMP::Operator::Operator::selectInputVector ( ) const
virtualinherited

◆ selectOutputVector()

virtual std::shared_ptr< AMP::LinearAlgebra::VectorSelector > AMP::Operator::Operator::selectOutputVector ( ) const
virtualinherited

◆ setDebugPrintInfoLevel()

virtual void AMP::Operator::Operator::setDebugPrintInfoLevel ( int  level)
inlinevirtualinherited

Specify level of diagnostic information printed during iterations.

Parameters
levelzero prints none or minimal information, higher numbers provide increasingly verbose debugging information.

Reimplemented in AMP::Operator::MemorySpaceMigrationLinearOperator, and AMP::Operator::MemorySpaceMigrationOperator.

Definition at line 97 of file Operator.h.

References AMP::Operator::Operator::d_iDebugPrintInfoLevel.

◆ setMemoryAndBackendParameters()

void AMP::Operator::Operator::setMemoryAndBackendParameters ( std::shared_ptr< AMP::Database db)
protectedinherited

◆ setRHScorrection()

void AMP::Operator::DirichletMatrixCorrection::setRHScorrection ( AMP::LinearAlgebra::Vector::shared_ptr  rhs)
overridevirtual

Sets the Dirichlet values at the appropriate locations in the RHS vector. This is one of the steps for imposing Dirichlet boundary conditions.

Reimplemented from AMP::Operator::BoundaryOperator.

◆ setVariable()

void AMP::Operator::DirichletMatrixCorrection::setVariable ( const std::shared_ptr< AMP::LinearAlgebra::Variable > &  var)
inline

Set the variable for the vector that will used with this operator.

Definition at line 33 of file DirichletMatrixCorrection.h.

References d_variable.

◆ subsetInputVector() [1/2]

std::shared_ptr< AMP::LinearAlgebra::Vector > AMP::Operator::Operator::subsetInputVector ( std::shared_ptr< AMP::LinearAlgebra::Vector vec) const
inherited

Subset input vector.

◆ subsetInputVector() [2/2]

std::shared_ptr< const AMP::LinearAlgebra::Vector > AMP::Operator::Operator::subsetInputVector ( std::shared_ptr< const AMP::LinearAlgebra::Vector vec) const
inherited

Subset input vector.

◆ subsetOutputVector() [1/2]

std::shared_ptr< AMP::LinearAlgebra::Vector > AMP::Operator::Operator::subsetOutputVector ( std::shared_ptr< AMP::LinearAlgebra::Vector vec) const
inherited

Subset output vector.

◆ subsetOutputVector() [2/2]

std::shared_ptr< const AMP::LinearAlgebra::Vector > AMP::Operator::Operator::subsetOutputVector ( std::shared_ptr< const AMP::LinearAlgebra::Vector vec) const
inherited

Subset output vector.

◆ type()

std::string AMP::Operator::DirichletMatrixCorrection::type ( ) const
inlineoverridevirtual

Return the name of the operator.

Implements AMP::Operator::Operator.

Definition at line 30 of file DirichletMatrixCorrection.h.

Member Data Documentation

◆ d_applyMatrixCorrectionWasCalled

bool AMP::Operator::DirichletMatrixCorrection::d_applyMatrixCorrectionWasCalled
protected

Definition at line 117 of file DirichletMatrixCorrection.h.

◆ d_backend

AMP::Utilities::Backend AMP::Operator::Operator::d_backend = AMP::Utilities::Backend::Serial
protectedinherited

Definition at line 197 of file Operator.h.

◆ d_boundaryIds

std::vector<short int> AMP::Operator::DirichletMatrixCorrection::d_boundaryIds
protected

Definition at line 87 of file DirichletMatrixCorrection.h.

Referenced by getBoundaryIds().

◆ d_computedAddRHScorrection

bool AMP::Operator::DirichletMatrixCorrection::d_computedAddRHScorrection = false
protected

Definition at line 107 of file DirichletMatrixCorrection.h.

◆ d_dirichletValues

std::vector<std::vector<double> > AMP::Operator::DirichletMatrixCorrection::d_dirichletValues
protected

Definition at line 89 of file DirichletMatrixCorrection.h.

◆ d_dispVals

AMP::LinearAlgebra::Vector::shared_ptr AMP::Operator::DirichletMatrixCorrection::d_dispVals
protected

Definition at line 95 of file DirichletMatrixCorrection.h.

◆ d_dofIds

std::vector<std::vector<unsigned int> > AMP::Operator::DirichletMatrixCorrection::d_dofIds
protected

Definition at line 91 of file DirichletMatrixCorrection.h.

Referenced by getDofIds().

◆ d_iDebugPrintInfoLevel

int AMP::Operator::Operator::d_iDebugPrintInfoLevel = 0
protectedinherited

Definition at line 187 of file Operator.h.

Referenced by AMP::Operator::Operator::setDebugPrintInfoLevel().

◆ d_iInstance_id

int AMP::Operator::Operator::d_iInstance_id
staticprotectedinherited

Definition at line 191 of file Operator.h.

◆ d_initialized

bool AMP::Operator::DirichletMatrixCorrection::d_initialized = false
protected

Definition at line 109 of file DirichletMatrixCorrection.h.

◆ d_inputMatrix

std::shared_ptr<AMP::LinearAlgebra::Matrix> AMP::Operator::DirichletMatrixCorrection::d_inputMatrix
protected

Definition at line 119 of file DirichletMatrixCorrection.h.

◆ d_iObject_id

int AMP::Operator::Operator::d_iObject_id
protectedinherited

Definition at line 189 of file Operator.h.

◆ d_memory_location

AMP::Utilities::MemoryType AMP::Operator::Operator::d_memory_location = AMP::Utilities::MemoryType::none
protectedinherited

Definition at line 195 of file Operator.h.

Referenced by AMP::Operator::Operator::getMemoryLocation().

◆ d_Mesh

std::shared_ptr<AMP::Mesh::Mesh> AMP::Operator::Operator::d_Mesh
protectedinherited

◆ d_rhsCorrectionAdd

AMP::LinearAlgebra::Vector::shared_ptr AMP::Operator::DirichletMatrixCorrection::d_rhsCorrectionAdd
protected

Definition at line 93 of file DirichletMatrixCorrection.h.

◆ d_rhsCorrectionSet

std::shared_ptr<DirichletVectorCorrection> AMP::Operator::DirichletMatrixCorrection::d_rhsCorrectionSet
protected

Definition at line 97 of file DirichletMatrixCorrection.h.

◆ d_skipRHSaddCorrection

bool AMP::Operator::DirichletMatrixCorrection::d_skipRHSaddCorrection = false
protected

Definition at line 103 of file DirichletMatrixCorrection.h.

◆ d_skipRHSsetCorrection

bool AMP::Operator::DirichletMatrixCorrection::d_skipRHSsetCorrection = false
protected

Definition at line 105 of file DirichletMatrixCorrection.h.

◆ d_symmetricCorrection

bool AMP::Operator::DirichletMatrixCorrection::d_symmetricCorrection = false
protected

Definition at line 99 of file DirichletMatrixCorrection.h.

◆ d_variable

std::shared_ptr<AMP::LinearAlgebra::Variable> AMP::Operator::DirichletMatrixCorrection::d_variable
protected

Definition at line 85 of file DirichletMatrixCorrection.h.

Referenced by getInputVariable(), getOutputVariable(), and setVariable().

◆ d_zeroDirichletBlock

bool AMP::Operator::DirichletMatrixCorrection::d_zeroDirichletBlock = false
protected

Definition at line 101 of file DirichletMatrixCorrection.h.


The documentation for this class was generated from the following file:



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:44.
Comments on this page