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

#include <RadiationDiffusionFDDiscretization.h>

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

Public Types

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

Public Member Functions

virtual void apply (AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f) override
 
void apply (std::shared_ptr< const AMP::LinearAlgebra::Vector > ET, std::shared_ptr< AMP::LinearAlgebra::Vector > LET) override
 Compute LET = L(ET)
 
void applyWithOverwrittenDataIsValid ()
 
std::shared_ptr< AMP::LinearAlgebra::VectorcreateInputVector () const override
 Create a multiVector of E and T over the mesh.
 
std::shared_ptr< AMP::LinearAlgebra::VectorcreateOutputVector () const override
 Get an output vector ( For \(\mathbf{y=A(x)}\), \(\mathbf{y}\) is an output vector )
 
std::shared_ptr< AMP::LinearAlgebra::VariablegetInputVariable () const override
 Return the input variable.
 
virtual std::shared_ptr< AMP::LinearAlgebra::MatrixgetMatrix ()
 
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)
 
 RadDifOpPJac (std::shared_ptr< const AMP::Operator::OperatorParameters > params_)
 Constructor.
 
virtual void reInitializeVector (std::shared_ptr< AMP::LinearAlgebra::Vector >)
 
void reset (std::shared_ptr< const AMP::Operator::OperatorParameters > params) override
 
virtual void reset (std::shared_ptr< const OperatorParameters > params)
 
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)
 
virtual void setMatrix (std::shared_ptr< AMP::LinearAlgebra::Matrix > in_mat)
 
virtual void setVariables (std::shared_ptr< AMP::LinearAlgebra::Variable > in, std::shared_ptr< AMP::LinearAlgebra::Variable > out)
 
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 ~RadDifOpPJac ()
 Destructor.
 

Static Public Member Functions

static std::unique_ptr< AMP::Operator::Operatorcreate (std::shared_ptr< AMP::Operator::OperatorParameters > params)
 Used by OperatorFactory to create a RadDifOpPJac.
 

Public Attributes

std::shared_ptr< RadDifOpPJacDatad_data = nullptr
 Representation of this operator as a block 2x2 matrix.
 
std::shared_ptr< AMP::Databased_db = nullptr
 
AMP::LinearAlgebra::Vector::shared_ptr d_frozenVec = nullptr
 The vector the above operator is linearized about.
 

Protected Member Functions

void getBackendFromInput (std::shared_ptr< AMP::Database > db)
 
virtual std::shared_ptr< OperatorParametersgetJacobianParameters (std::shared_ptr< const AMP::LinearAlgebra::Vector >)
 
void setMemoryAndBackendParameters (std::shared_ptr< AMP::Database > db)
 

Protected Attributes

AMP::Utilities::Backend d_backend = AMP::Utilities::Backend::Serial
 
int d_iDebugPrintInfoLevel = 0
 
std::shared_ptr< AMP::LinearAlgebra::Variabled_inputVariable
 
int d_iObject_id
 
std::shared_ptr< AMP::LinearAlgebra::Matrixd_matrix
 
AMP::Utilities::MemoryType d_memory_location = AMP::Utilities::MemoryType::none
 
std::shared_ptr< AMP::Mesh::Meshd_Mesh
 
std::shared_ptr< AMP::LinearAlgebra::Variabled_outputVariable
 

Static Protected Attributes

static int d_iInstance_id
 

Private Member Functions

void applyFromData (std::shared_ptr< const AMP::LinearAlgebra::Vector > ET_, std::shared_ptr< AMP::LinearAlgebra::Vector > LET_)
 Apply action of the operator utilizing its representation in d_data.
 
template<size_t Component>
void fillDiffusionMatrixWithData (std::shared_ptr< AMP::LinearAlgebra::Matrix > matrix)
 
template<size_t Component>
void getCSRDataDiffusionMatrix (std::shared_ptr< const AMP::LinearAlgebra::Vector > E_vec, std::shared_ptr< const AMP::LinearAlgebra::Vector > T_vec, const double *E_rawData, const double *T_rawData, size_t row, std::vector< size_t > &cols, std::vector< double > &data)
 
template<size_t Component>
void getCSRDataDiffusionMatrixBoundary (std::shared_ptr< const AMP::LinearAlgebra::Vector > E_vec, std::shared_ptr< const AMP::LinearAlgebra::Vector > T_vec, size_t row, std::vector< size_t > &cols, std::vector< double > &data)
 Get cols and data for given row, when the row lives on a process boundary.
 
template<size_t Component>
void getCSRDataDiffusionMatrixInterior (const double *E_rawData, const double *T_rawData, size_t rowLocal, std::array< size_t, 5 > &ijkLocal, std::vector< size_t > &colsLocal, std::vector< double > &data)
 
void getNNDataBoundary (std::shared_ptr< const AMP::LinearAlgebra::Vector > E_vec, std::shared_ptr< const AMP::LinearAlgebra::Vector > T_vec, std::array< size_t, 3 > &ijk, size_t dim, std::array< double, 3 > &ELoc3, std::array< double, 3 > &TLoc3, std::array< size_t, 3 > &dofsLoc3, std::optional< FDBoundaryUtils::BoundarySide > &boundaryIntersection)
 
void ghostValuesSolveWrapper (size_t boundaryID, const AMP::Mesh::Point &boundaryPoint, double Eint, double Tint, double &Eg, double &Tg)
 
double PicardCorrectionCoefficient (size_t component, size_t boundaryID, double ck) const
 
void setData ()
 Set our d_data member.
 
void setDataReaction (std::shared_ptr< const AMP::LinearAlgebra::Vector > T_vec)
 

Private Attributes

AMP::Mesh::GeomType CellCenteredGeom
 Placeholder for geometry that results in cell-centered data.
 
std::array< double, 6 > d_ak
 
bool d_applyWithOverwrittenDataIsValid = false
 
std::array< double, 6 > d_bk
 
std::shared_ptr< AMP::Mesh::BoxMeshd_BoxMesh
 Mesh; keep a pointer to save having to downcast repeatedly.
 
size_t d_dim = (size_t) -1
 Problem dimension.
 
std::array< size_t, 3 > d_dofsLoc3
 Placeholder array for dofs we connect to in 3-point stencil.
 
std::array< double, 3 > d_ELoc3
 Placeholder arrays for values used in 3-point stencils.
 
std::shared_ptr< AMP::Mesh::BoxMesh::Boxd_globalBox = nullptr
 Global grid index box w/ zero ghosts.
 
std::vector< doubled_h
 Mesh sizes, hx, hy, hz. We compute these based on the incoming mesh.
 
std::array< size_t, 5 > d_ijk
 Placeholder for grid indices. Size 5 is because ArraySize deals with 5 grid indcies.
 
const double d_k11
 Constant scaling factors in the PDE.
 
const double d_k12
 
const double d_k21
 
const double d_k22
 
std::shared_ptr< AMP::ArraySized_localArraySize = nullptr
 Local array size.
 
std::shared_ptr< AMP::Mesh::BoxMesh::Boxd_localBox = nullptr
 Local grid index box w/ zero ghosts.
 
std::shared_ptr< FDMeshGlobalIndexingOpsd_meshIndexingOps = nullptr
 Mesh indexing functions.
 
std::shared_ptr< AMP::Discretization::multiDOFManagerd_multiDOFMan
 Mesh-related data.
 
std::array< double, 6 > d_nk
 
std::function< double(size_t boundaryID, const AMP::Mesh::Point &boundaryPoint)> d_pseudoNeumannFunctionT
 
std::vector< doubled_rh2
 Reciprocal squares of mesh sizes.
 
std::array< double, 6 > d_rk
 
std::function< double(size_t boundaryID, const AMP::Mesh::Point &boundaryPoint)> d_robinFunctionE
 
std::shared_ptr< AMP::Discretization::DOFManagerd_scalarDOFMan
 DOFManager for E and T individually.
 
std::array< double, 3 > d_TLoc3
 

Static Private Attributes

static constexpr size_t EAST = 2
 
static constexpr size_t ORIGIN = 1
 
static constexpr size_t WEST = 0
 Indices used for referencing WEST, ORIGIN, and EAST entries in Loc3 data structures.
 

Detailed Description

Picard linearization of a RadDifOp. Specifically, the spatial operators in the radiation-diffusion equation can be written as L(u) = -D(u) -R(u) <==> hat{L}(u)*u = -hat{D}(u)*u -hat{R}(u)*u where hat{L}(u), hat{D}(u) and hat{R}(u) are block 2x2 matrices dependent upon the state u. This class implements the LinearOperator hat{L}(u), which is a Picard linearization of L(u).

Definition at line 550 of file RadiationDiffusionFDDiscretization.h.

Member Typedef Documentation

◆ shared_ptr

Definition at line 29 of file Operator.h.

Constructor & Destructor Documentation

◆ RadDifOpPJac()

AMP::Operator::RadDifOpPJac::RadDifOpPJac ( std::shared_ptr< const AMP::Operator::OperatorParameters params_)

Constructor.

◆ ~RadDifOpPJac()

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

Destructor.

Definition at line 565 of file RadiationDiffusionFDDiscretization.h.

Member Function Documentation

◆ apply() [1/2]

virtual void AMP::Operator::LinearOperator::apply ( AMP::LinearAlgebra::Vector::const_shared_ptr  u,
AMP::LinearAlgebra::Vector::shared_ptr  f 
)
overridevirtualinherited

The apply function for this operator, A, performs the following operation: f = A(u) Here, A(u) is simply a Matrix-Vector multiplication.

Parameters
[in]uinput vector.
[out]fresidual/output vector.

Reimplemented in AMP::Operator::IdentityOperator, AMP::Operator::PetscMatrixShellOperator, AMP::Operator::TrilinosMatrixShellOperator, and AMP::Operator::BDFRadDifOpPJac.

◆ apply() [2/2]

void AMP::Operator::RadDifOpPJac::apply ( std::shared_ptr< const AMP::LinearAlgebra::Vector ET,
std::shared_ptr< AMP::LinearAlgebra::Vector LET 
)
overridevirtual

Compute LET = L(ET)

Implements AMP::Operator::Operator.

◆ applyFromData()

void AMP::Operator::RadDifOpPJac::applyFromData ( std::shared_ptr< const AMP::LinearAlgebra::Vector ET_,
std::shared_ptr< AMP::LinearAlgebra::Vector LET_ 
)
private

Apply action of the operator utilizing its representation in d_data.

◆ applyWithOverwrittenDataIsValid()

void AMP::Operator::RadDifOpPJac::applyWithOverwrittenDataIsValid ( )
inline

Allows an apply from Jacobian data that's been modified by an outside class (this is an acknowledgement that the caller of the apply deeply understands what they're doing)

Definition at line 593 of file RadiationDiffusionFDDiscretization.h.

References d_applyWithOverwrittenDataIsValid.

◆ create()

static std::unique_ptr< AMP::Operator::Operator > AMP::Operator::RadDifOpPJac::create ( std::shared_ptr< AMP::Operator::OperatorParameters params)
inlinestatic

Used by OperatorFactory to create a RadDifOpPJac.

Definition at line 572 of file RadiationDiffusionFDDiscretization.h.

◆ createInputVector()

std::shared_ptr< AMP::LinearAlgebra::Vector > AMP::Operator::RadDifOpPJac::createInputVector ( ) const
overridevirtual

Create a multiVector of E and T over the mesh.

Reimplemented from AMP::Operator::LinearOperator.

◆ createOutputVector()

std::shared_ptr< AMP::LinearAlgebra::Vector > AMP::Operator::LinearOperator::createOutputVector ( ) const
overridevirtualinherited

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

Returns
A newly created output vector

Reimplemented from AMP::Operator::Operator.

Reimplemented in AMP::Operator::MemorySpaceMigrationLinearOperator.

◆ fillDiffusionMatrixWithData()

template<size_t Component>
void AMP::Operator::RadDifOpPJac::fillDiffusionMatrixWithData ( std::shared_ptr< AMP::LinearAlgebra::Matrix matrix)
private

Fill the given input diffusion matrix with CSR data

Parameters
[in]matrix

◆ getBackendFromInput()

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

◆ getCSRDataDiffusionMatrix()

template<size_t Component>
void AMP::Operator::RadDifOpPJac::getCSRDataDiffusionMatrix ( std::shared_ptr< const AMP::LinearAlgebra::Vector E_vec,
std::shared_ptr< const AMP::LinearAlgebra::Vector T_vec,
const double E_rawData,
const double T_rawData,
size_t  row,
std::vector< size_t > &  cols,
std::vector< double > &  data 
)
private

Get CSR data for a row of the Picard-linearized diffusion matrix dE or dT.

Parameters
[in]E_vecE component of the frozen vector d_frozenVec
[in]T_vecT component of the frozen vector d_frozenVec
[in]E_rawDatalocal raw data array for E
[in]T_rawDatalocal raw data array for T
[in]rowthe row to retrieve (a scalar index)
[out]colsthe column indices for the non-zeros in the given row, with the diagonal entry first
[out]datathe data for the non-zeros in the given row
Note
this function implicity assumes that the stencil does not touch both boundaries at once (corresponding to the number of interior DOFs in the given dimension being larger than one)

◆ getCSRDataDiffusionMatrixBoundary()

template<size_t Component>
void AMP::Operator::RadDifOpPJac::getCSRDataDiffusionMatrixBoundary ( std::shared_ptr< const AMP::LinearAlgebra::Vector E_vec,
std::shared_ptr< const AMP::LinearAlgebra::Vector T_vec,
size_t  row,
std::vector< size_t > &  cols,
std::vector< double > &  data 
)
private

Get cols and data for given row, when the row lives on a process boundary.

◆ getCSRDataDiffusionMatrixInterior()

template<size_t Component>
void AMP::Operator::RadDifOpPJac::getCSRDataDiffusionMatrixInterior ( const double E_rawData,
const double T_rawData,
size_t  rowLocal,
std::array< size_t, 5 > &  ijkLocal,
std::vector< size_t > &  colsLocal,
std::vector< double > &  data 
)
private

Get cols and data for given row, when the row lives on the interior of a process

Note
ijkLocal is modified internally, but returned in its original state

◆ getInputVariable()

std::shared_ptr< AMP::LinearAlgebra::Variable > AMP::Operator::LinearOperator::getInputVariable ( ) const
inlineoverridevirtualinherited

◆ 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.

◆ getMatrix()

virtual std::shared_ptr< AMP::LinearAlgebra::Matrix > AMP::Operator::LinearOperator::getMatrix ( )
virtualinherited
Returns
The matrix representation of this linear operator.

Reimplemented in AMP::Operator::MemorySpaceMigrationLinearOperator.

◆ 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.

◆ getNNDataBoundary()

void AMP::Operator::RadDifOpPJac::getNNDataBoundary ( std::shared_ptr< const AMP::LinearAlgebra::Vector E_vec,
std::shared_ptr< const AMP::LinearAlgebra::Vector T_vec,
std::array< size_t, 3 > &  ijk,
size_t  dim,
std::array< double, 3 > &  ELoc3,
std::array< double, 3 > &  TLoc3,
std::array< size_t, 3 > &  dofsLoc3,
std::optional< FDBoundaryUtils::BoundarySide > &  boundaryIntersection 
)
private

Closely related to RadDifOp::getNNDataBoundary, except there are two additional outputs:

Parameters
[in]E_vec
[in]T_vec
[in]ijk
[in]dim
[in]ELoc3
[in]TLoc3
[out]dofsLoc3indices of the dofs in the 3-point stencil
[out]boundaryIntersectionflag indicating if the stencil touches a physical boundary (and which one if it does)
Note
if the stencil touches a physical boundary then the corresponding value in dofs is meaningless
this function implicity assumes that the stencil does not touch both boundaries at once (corresponding to the number of interior DOFs in the given dimension being larger than one)

◆ getOutputVariable()

std::shared_ptr< AMP::LinearAlgebra::Variable > AMP::Operator::LinearOperator::getOutputVariable ( ) const
inlineoverridevirtualinherited

◆ 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.

◆ ghostValuesSolveWrapper()

void AMP::Operator::RadDifOpPJac::ghostValuesSolveWrapper ( size_t  boundaryID,
const AMP::Mesh::Point boundaryPoint,
double  Eint,
double  Tint,
double Eg,
double Tg 
)
private

This is a wrapper around FDBoundaryUtils::ghostValuesSolve to pass our specific constants and boundary-function evaluations.

Parameters
[in]boundaryIDID of the boundary
[in]boundaryPointthe point in space where the function is to be evaluated (this will be a point on the corresponding boundary)
[in]Eint
[in]Tint
[out]Egvalue of E at the ghost point
[out]Tgvalue of T at the ghost point

◆ 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.

◆ PicardCorrectionCoefficient()

double AMP::Operator::RadDifOpPJac::PicardCorrectionCoefficient ( size_t  component,
size_t  boundaryID,
double  ck 
) const
private

We have ghost values that satisfy Eg = alpha_E*Eint + beta_E Tg = alpha_T*Tint + beta_T Here we return the coefficient alpha_

Parameters
[in]component0 (for energy), or 1 (for temperature)
[in]boundaryIDthe boundary
[in]ck= +k11*D_E(T), but is ignored if component == 1.

◆ 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() [1/2]

void AMP::Operator::RadDifOpPJac::reset ( std::shared_ptr< const AMP::Operator::OperatorParameters params)
override

Reset the operator based on the incoming parameters. Primarily, this updates frozen value of current solution, d_frozenSolution. It also resets the associated linearized data. Note that it does not update any mesh-related data since neither does the base classes reset(). It also doesn't update any boundary-related data

◆ reset() [2/2]

virtual void AMP::Operator::Operator::reset ( std::shared_ptr< const OperatorParameters params)
virtualinherited

This function is useful for re-initializing/updating an operator

Parameters
paramsparameter object containing parameters to change

Reimplemented in AMP::TimeIntegrator::ColumnTimeOperator, AMP::TimeIntegrator::LinearTimeOperator, AMP::TimeIntegrator::TimeOperator, AMP::Operator::PowerShape, AMP::Operator::NeutronicsRhs, AMP::Operator::WeldOperator, AMP::Operator::ColumnBoundaryOperator, AMP::Operator::DirichletVectorCorrection, AMP::Operator::NeumannVectorCorrection, AMP::Operator::RobinMatrixCorrection, AMP::Operator::RobinVectorCorrection, AMP::Operator::ColumnOperator, AMP::Operator::FickSoretNonlinearFEOperator, AMP::Operator::IdentityOperator, AMP::Operator::GradientOperator, AMP::Operator::PelletStackOperator, AMP::Operator::MapOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, AMP::Operator::MemorySpaceMigrationOperator, AMP::Operator::MoveMeshOperator, AMP::Operator::NonlinearBVPOperator, AMP::Operator::PetscMatrixShellOperator, AMP::Operator::CoupledFlowFrapconOperator, AMP::Operator::FlowFrapconJacobian, AMP::Operator::FlowFrapconOperator, AMP::Operator::SubchannelFourEqLinearOperator, AMP::Operator::SubchannelFourEqNonlinearOperator, AMP::Operator::SubchannelTwoEqLinearOperator, AMP::Operator::SubchannelTwoEqNonlinearOperator, AMP::Operator::TrilinosMatrixShellOperator, AMP::Operator::DirichletMatrixCorrection, AMP::Operator::MassMatrixCorrection, AMP::Operator::DiffusionNonlinearFEOperator, AMP::Operator::LinearFEOperator, AMP::Operator::VolumeIntegralOperator, AMP::Operator::LinearBVPOperator, AMP::Operator::Map1Dto3D, AMP::Operator::Map3Dto1D, and AMP::Operator::MechanicsNonlinearFEOperator.

Referenced by AMP::Operator::FirstOperator::FirstOperator(), and AMP::Operator::SecondOperator::SecondOperator().

◆ 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

◆ setData()

void AMP::Operator::RadDifOpPJac::setData ( )
private

Set our d_data member.

◆ setDataReaction()

void AMP::Operator::RadDifOpPJac::setDataReaction ( std::shared_ptr< const AMP::LinearAlgebra::Vector T_vec)
private

Sets the reaction-related vectors in our d_data member. This code is based on stripping out the reaction component of the apply of the nonlinear operator.

Parameters
[in]T_vecT component of the frozen vector d_frozenVec

◆ 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.

◆ setMatrix()

virtual void AMP::Operator::LinearOperator::setMatrix ( std::shared_ptr< AMP::LinearAlgebra::Matrix in_mat)
virtualinherited

Copies the shared pointer for the matrix representation of this linear operator.

Parameters
[in]in_matThe matrix representation of this linear operator.

Reimplemented in AMP::Operator::IdentityOperator.

Referenced by AMP::Solver::AMG::coarse_operator< Config >::coarse_operator(), and AMP::Operator::EpetraMatrixOperator::EpetraMatrixOperator().

◆ setMemoryAndBackendParameters()

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

◆ setVariables()

virtual void AMP::Operator::LinearOperator::setVariables ( std::shared_ptr< AMP::LinearAlgebra::Variable in,
std::shared_ptr< AMP::LinearAlgebra::Variable out 
)
inlinevirtualinherited

◆ 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::RadDifOpPJac::type ( ) const
inlineoverridevirtual

Return the name of the operator.

Reimplemented from AMP::Operator::LinearOperator.

Definition at line 584 of file RadiationDiffusionFDDiscretization.h.

Member Data Documentation

◆ CellCenteredGeom

AMP::Mesh::GeomType AMP::Operator::RadDifOpPJac::CellCenteredGeom
private

Placeholder for geometry that results in cell-centered data.

Definition at line 631 of file RadiationDiffusionFDDiscretization.h.

◆ d_ak

std::array<double, 6> AMP::Operator::RadDifOpPJac::d_ak
private

Constants in boundary conditions from incoming db. The constant for a given boundaryID is in index boundaryID-1

Definition at line 606 of file RadiationDiffusionFDDiscretization.h.

◆ d_applyWithOverwrittenDataIsValid

bool AMP::Operator::RadDifOpPJac::d_applyWithOverwrittenDataIsValid = false
private

Flag indicating whether apply with overwritten Jacobian data is valid. This is reset to false at the end of every apply call, and can be set t true by the public member function

Definition at line 613 of file RadiationDiffusionFDDiscretization.h.

Referenced by applyWithOverwrittenDataIsValid().

◆ d_backend

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

Definition at line 197 of file Operator.h.

◆ d_bk

std::array<double, 6> AMP::Operator::RadDifOpPJac::d_bk
private

Definition at line 607 of file RadiationDiffusionFDDiscretization.h.

◆ d_BoxMesh

std::shared_ptr<AMP::Mesh::BoxMesh> AMP::Operator::RadDifOpPJac::d_BoxMesh
private

Mesh; keep a pointer to save having to downcast repeatedly.

Definition at line 623 of file RadiationDiffusionFDDiscretization.h.

◆ d_data

std::shared_ptr<RadDifOpPJacData> AMP::Operator::RadDifOpPJac::d_data = nullptr

Representation of this operator as a block 2x2 matrix.

Definition at line 557 of file RadiationDiffusionFDDiscretization.h.

◆ d_db

std::shared_ptr<AMP::Database> AMP::Operator::RadDifOpPJac::d_db = nullptr

Definition at line 555 of file RadiationDiffusionFDDiscretization.h.

◆ d_dim

size_t AMP::Operator::RadDifOpPJac::d_dim = (size_t) -1
private

Problem dimension.

Definition at line 633 of file RadiationDiffusionFDDiscretization.h.

◆ d_dofsLoc3

std::array<size_t, 3> AMP::Operator::RadDifOpPJac::d_dofsLoc3
private

Placeholder array for dofs we connect to in 3-point stencil.

Definition at line 645 of file RadiationDiffusionFDDiscretization.h.

◆ d_ELoc3

std::array<double, 3> AMP::Operator::RadDifOpPJac::d_ELoc3
private

Placeholder arrays for values used in 3-point stencils.

Definition at line 642 of file RadiationDiffusionFDDiscretization.h.

◆ d_frozenVec

AMP::LinearAlgebra::Vector::shared_ptr AMP::Operator::RadDifOpPJac::d_frozenVec = nullptr

The vector the above operator is linearized about.

Definition at line 559 of file RadiationDiffusionFDDiscretization.h.

◆ d_globalBox

std::shared_ptr<AMP::Mesh::BoxMesh::Box> AMP::Operator::RadDifOpPJac::d_globalBox = nullptr
private

Global grid index box w/ zero ghosts.

Definition at line 625 of file RadiationDiffusionFDDiscretization.h.

◆ d_h

std::vector<double> AMP::Operator::RadDifOpPJac::d_h
private

Mesh sizes, hx, hy, hz. We compute these based on the incoming mesh.

Definition at line 635 of file RadiationDiffusionFDDiscretization.h.

◆ 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_ijk

std::array<size_t, 5> AMP::Operator::RadDifOpPJac::d_ijk
private

Placeholder for grid indices. Size 5 is because ArraySize deals with 5 grid indcies.

Definition at line 640 of file RadiationDiffusionFDDiscretization.h.

◆ d_inputVariable

std::shared_ptr<AMP::LinearAlgebra::Variable> AMP::Operator::LinearOperator::d_inputVariable
protectedinherited

◆ d_iObject_id

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

Definition at line 189 of file Operator.h.

◆ d_k11

const double AMP::Operator::RadDifOpPJac::d_k11
private

Constant scaling factors in the PDE.

Definition at line 599 of file RadiationDiffusionFDDiscretization.h.

◆ d_k12

const double AMP::Operator::RadDifOpPJac::d_k12
private

Definition at line 600 of file RadiationDiffusionFDDiscretization.h.

◆ d_k21

const double AMP::Operator::RadDifOpPJac::d_k21
private

Definition at line 601 of file RadiationDiffusionFDDiscretization.h.

◆ d_k22

const double AMP::Operator::RadDifOpPJac::d_k22
private

Definition at line 602 of file RadiationDiffusionFDDiscretization.h.

◆ d_localArraySize

std::shared_ptr<AMP::ArraySize> AMP::Operator::RadDifOpPJac::d_localArraySize = nullptr
private

Local array size.

Definition at line 629 of file RadiationDiffusionFDDiscretization.h.

◆ d_localBox

std::shared_ptr<AMP::Mesh::BoxMesh::Box> AMP::Operator::RadDifOpPJac::d_localBox = nullptr
private

Local grid index box w/ zero ghosts.

Definition at line 627 of file RadiationDiffusionFDDiscretization.h.

◆ d_matrix

std::shared_ptr<AMP::LinearAlgebra::Matrix> AMP::Operator::LinearOperator::d_matrix
protectedinherited

Definition at line 92 of file LinearOperator.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_meshIndexingOps

std::shared_ptr<FDMeshGlobalIndexingOps> AMP::Operator::RadDifOpPJac::d_meshIndexingOps = nullptr
private

Mesh indexing functions.

Definition at line 653 of file RadiationDiffusionFDDiscretization.h.

◆ d_multiDOFMan

std::shared_ptr<AMP::Discretization::multiDOFManager> AMP::Operator::RadDifOpPJac::d_multiDOFMan
private

Mesh-related data.

MultiDOFManager for managing [E,T] multivectors

Definition at line 619 of file RadiationDiffusionFDDiscretization.h.

◆ d_nk

std::array<double, 6> AMP::Operator::RadDifOpPJac::d_nk
private

Definition at line 609 of file RadiationDiffusionFDDiscretization.h.

◆ d_outputVariable

std::shared_ptr<AMP::LinearAlgebra::Variable> AMP::Operator::LinearOperator::d_outputVariable
protectedinherited

◆ d_pseudoNeumannFunctionT

std::function<double( size_t boundaryID, const AMP::Mesh::Point &boundaryPoint )> AMP::Operator::RadDifOpPJac::d_pseudoNeumannFunctionT
private

Prototype of function returning value of pseudo-Neumann BC of T on given boundary at given node. The user can specify any function with this signature via 'setBoundaryFunctionT'

Parameters
[in]boundaryIDID of the boundary
[in]boundaryPointthe point in space where the function is to be evaluated (this will be a point on the corresponding boundary)

Definition at line 790 of file RadiationDiffusionFDDiscretization.h.

◆ d_rh2

std::vector<double> AMP::Operator::RadDifOpPJac::d_rh2
private

Reciprocal squares of mesh sizes.

Definition at line 637 of file RadiationDiffusionFDDiscretization.h.

◆ d_rk

std::array<double, 6> AMP::Operator::RadDifOpPJac::d_rk
private

Definition at line 608 of file RadiationDiffusionFDDiscretization.h.

◆ d_robinFunctionE

std::function<double( size_t boundaryID, const AMP::Mesh::Point &boundaryPoint )> AMP::Operator::RadDifOpPJac::d_robinFunctionE
private

Prototype of function returning value of Robin BC of E on given boundary at given node. The user can specify any function with this signature via 'setBoundaryFunctionE'

Parameters
[in]boundaryIDID of the boundary
[in]boundaryPointthe point in space where the function is to be evaluated (this will be a point on the corresponding boundary)

Definition at line 781 of file RadiationDiffusionFDDiscretization.h.

◆ d_scalarDOFMan

std::shared_ptr<AMP::Discretization::DOFManager> AMP::Operator::RadDifOpPJac::d_scalarDOFMan
private

DOFManager for E and T individually.

Definition at line 621 of file RadiationDiffusionFDDiscretization.h.

◆ d_TLoc3

std::array<double, 3> AMP::Operator::RadDifOpPJac::d_TLoc3
private

Definition at line 643 of file RadiationDiffusionFDDiscretization.h.

◆ EAST

constexpr size_t AMP::Operator::RadDifOpPJac::EAST = 2
staticconstexprprivate

Definition at line 650 of file RadiationDiffusionFDDiscretization.h.

◆ ORIGIN

constexpr size_t AMP::Operator::RadDifOpPJac::ORIGIN = 1
staticconstexprprivate

Definition at line 649 of file RadiationDiffusionFDDiscretization.h.

◆ WEST

constexpr size_t AMP::Operator::RadDifOpPJac::WEST = 0
staticconstexprprivate

Indices used for referencing WEST, ORIGIN, and EAST entries in Loc3 data structures.

Definition at line 648 of file RadiationDiffusionFDDiscretization.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