Advanced Multi-Physics (AMP)
On-Line Documentation
Public Types | 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::RadDifOp Class Reference

#include <RadiationDiffusionFDDiscretization.h>

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

Public Types

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

Public Member Functions

void apply (std::shared_ptr< const AMP::LinearAlgebra::Vector > ET, std::shared_ptr< AMP::LinearAlgebra::Vector > LET) override
 Compute LET = L(ET)
 
std::shared_ptr< AMP::LinearAlgebra::VectorcreateInputVector () const override
 Create a multiVector of E and T over the mesh.
 
virtual std::shared_ptr< AMP::LinearAlgebra::VectorcreateOutputVector () const
 Get a left vector ( For \(\mathbf{y=A(x)}\), \(\mathbf{y}\) is an output vector )
 
AMP::Mesh::GeomType getGeomType () const
 Geometry used in the mesh.
 
virtual std::shared_ptr< AMP::LinearAlgebra::VariablegetInputVariable () const
 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.
 
const std::vector< double > & getMeshSize () const
 Vector of hx, hy, hz.
 
virtual std::shared_ptr< AMP::LinearAlgebra::VariablegetOutputVariable () const
 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)
 
std::shared_ptr< const AMP::Discretization::DOFManagergetScalarDOFManager () const
 DOFManager used for each of E and T.
 
bool isValidVector (std::shared_ptr< const AMP::LinearAlgebra::Vector > ET) override
 E and T must be positive.
 
virtual void makeConsistent (std::shared_ptr< AMP::LinearAlgebra::Vector > vec)
 
 RadDifOp (std::shared_ptr< const AMP::Operator::OperatorParameters > params)
 Constructor.
 
virtual void reInitializeVector (std::shared_ptr< AMP::LinearAlgebra::Vector >)
 
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.
 
void setBoundaryFunctionE (const std::function< double(size_t boundaryID, const AMP::Mesh::Point &boundaryPoint)> &fn_)
 Set the Robin return function for the energy.
 
void setBoundaryFunctionT (const std::function< double(size_t boundaryID, const AMP::Mesh::Point &boundaryPoint)> &fn_)
 Set the pseudo-Neumann return function for the temperature.
 
virtual void setDebugPrintInfoLevel (int level)
 
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 ~RadDifOp ()
 Destructor.
 

Public Attributes

std::shared_ptr< AMP::Databased_db = nullptr
 Parameters required by the discretization.
 

Protected Member Functions

void getBackendFromInput (std::shared_ptr< AMP::Database > db)
 
std::shared_ptr< AMP::Operator::OperatorParametersgetJacobianParameters (AMP::LinearAlgebra::Vector::const_shared_ptr u_in) override
 
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
 
int d_iObject_id
 
AMP::Utilities::MemoryType d_memory_location = AMP::Utilities::MemoryType::none
 
std::shared_ptr< AMP::Mesh::Meshd_Mesh
 

Static Protected Attributes

static int d_iInstance_id
 

Private Member Functions

void applyBoundary (std::shared_ptr< const AMP::LinearAlgebra::Vector > E_vec, std::shared_ptr< const AMP::LinearAlgebra::Vector > T_vec, std::shared_ptr< AMP::LinearAlgebra::Vector > LE_vec, std::shared_ptr< AMP::LinearAlgebra::Vector > LT_vec)
 Apply operator over DOFs living on the boundary of process.
 
void applyInterior (std::shared_ptr< const AMP::LinearAlgebra::Vector > E_vec, std::shared_ptr< const AMP::LinearAlgebra::Vector > T_vec, std::shared_ptr< AMP::LinearAlgebra::Vector > LE_vec, std::shared_ptr< AMP::LinearAlgebra::Vector > LT_vec)
 Apply operator over DOFs living on the interior of process.
 
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)
 
void ghostValuesSolveWrapper (size_t boundaryID, const AMP::Mesh::Point &boundaryPoint, double Eint, double Tint, double &Eg, double &Tg)
 

Private Attributes

AMP::Mesh::GeomType CellCenteredGeom
 Placeholder for geometry that results in cell-centered data.
 
std::array< double, 6 > d_ak
 
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::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.
 
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.
 

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

Finite-difference discretization of the spatial operator in the above radiation-diffusion equation. This discretization is based on that described in "Dynamic implicit 3D adaptive mesh refinement for non-equilibrium radiation diffusion" by B.Philip, Z.Wangb, M.A.Berrill, M.Birkeb, M.Pernice in Journal of Computational Physics 262 (2014) 17–37. The primary difference is that this implementation does not use adaptive mesh refinement, and instead assumes the mesh spacing in each dimension is constant.

The database in the incoming OperatorParameters must contain the following parameters:

  1. ak, bk (for all boundaries k) doubles. Specify constants in Robin BCs on energy. Optionally, the RHS boundary condition values of rk and nk can be provided. However, the user can also specify these RHS values as boundary- and spatially-dependent functions via calls to 'setBoundaryFunctionE' and 'setBoundaryFunctionT', respectively, in which case whatever values of rk and nk exist in the database will be ignored.
  2. zatom: double. Atomic number constant in the nonlinear problem. Default value is 1.0.
  3. k11, k12, k21, k22 doubles. Scaling constants in PDE

Mesh: The discretization expects a non-periodic AMP::Mesh::BoxMesh generated from the "cube" generator. The boundaryIDs on the mesh must be: 1,2 for xmin,xman, 3,4 for ymin,ymax, 5,6 for zmin,zmax. The mesh range and number of points in each dimension need not be the same.

NOTES:

Definition at line 366 of file RadiationDiffusionFDDiscretization.h.

Member Typedef Documentation

◆ shared_ptr

Definition at line 29 of file Operator.h.

Constructor & Destructor Documentation

◆ RadDifOp()

AMP::Operator::RadDifOp::RadDifOp ( std::shared_ptr< const AMP::Operator::OperatorParameters params)

Constructor.

◆ ~RadDifOp()

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

Destructor.

Definition at line 380 of file RadiationDiffusionFDDiscretization.h.

Member Function Documentation

◆ apply()

void AMP::Operator::RadDifOp::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.

◆ applyBoundary()

void AMP::Operator::RadDifOp::applyBoundary ( std::shared_ptr< const AMP::LinearAlgebra::Vector E_vec,
std::shared_ptr< const AMP::LinearAlgebra::Vector T_vec,
std::shared_ptr< AMP::LinearAlgebra::Vector LE_vec,
std::shared_ptr< AMP::LinearAlgebra::Vector LT_vec 
)
private

Apply operator over DOFs living on the boundary of process.

◆ applyInterior()

void AMP::Operator::RadDifOp::applyInterior ( std::shared_ptr< const AMP::LinearAlgebra::Vector E_vec,
std::shared_ptr< const AMP::LinearAlgebra::Vector T_vec,
std::shared_ptr< AMP::LinearAlgebra::Vector LE_vec,
std::shared_ptr< AMP::LinearAlgebra::Vector LT_vec 
)
private

Apply operator over DOFs living on the interior of process.

◆ createInputVector()

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

Create a multiVector of E and T over the mesh.

Reimplemented from AMP::Operator::Operator.

◆ 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

◆ getGeomType()

AMP::Mesh::GeomType AMP::Operator::RadDifOp::getGeomType ( ) const

Geometry used in the mesh.

◆ getInputVariable()

virtual std::shared_ptr< AMP::LinearAlgebra::Variable > AMP::Operator::Operator::getInputVariable ( ) const
inlinevirtualinherited

◆ getJacobianParameters() [1/2]

std::shared_ptr< AMP::Operator::OperatorParameters > AMP::Operator::RadDifOp::getJacobianParameters ( AMP::LinearAlgebra::Vector::const_shared_ptr  u_in)
overrideprotected

Returns a parameter object that can be used to reset the corresponding RadDifOpPJac operator. Note that in the base class's getParameters get's redirected to this function.

Parameters
[in]u_inis the current nonlinear iterate.

◆ getJacobianParameters() [2/2]

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.

◆ getMeshSize()

const std::vector< double > & AMP::Operator::RadDifOp::getMeshSize ( ) const

Vector of hx, hy, hz.

◆ getNNDataBoundary()

void AMP::Operator::RadDifOp::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 
)
private

Get nearest neighbor data, i.e., WEST and EAST values. This is valid in the case that ORIGIN is a boundary point, either process (hence requiring ghost data) or physical (hence requiring a ghost-point solve). the latter case.

Parameters
[in]E_vecvector of all E values
[in]T_vecvector of all T values
[in]ijkgrid indices of DOF for which 3-point stencil values are to be unpacked
[in]dimdimension in which the 3-point extends
[out]ELoc3E values in the 3-point stencil (WEST, ORIGIN, UPPER)
[out]TLoc3T values in the 3-point stencil (WEST, ORIGIN, UPPER)
Note
ijk is modified inside the function, but upon conclusion of the function is in its original state

◆ getOutputVariable()

virtual std::shared_ptr< AMP::LinearAlgebra::Variable > AMP::Operator::Operator::getOutputVariable ( ) const
inlinevirtualinherited

Return the output variable.

Reimplemented in AMP::Operator::DirichletMatrixCorrection, AMP::Operator::NeumannVectorCorrection, AMP::Operator::ColumnOperator, AMP::Operator::ConstraintsEliminationOperator, AMP::Operator::ContactResidualCorrection, AMP::Operator::CoupledOperator, AMP::Operator::DiffusionNonlinearFEOperator, AMP::Operator::FickSoretNonlinearFEOperator, AMP::Operator::GradientOperator, AMP::Operator::MassLinearFEOperator, AMP::Operator::NodeToGaussPointOperator, AMP::Operator::VolumeIntegralOperator, AMP::Operator::LinearBVPOperator, AMP::Operator::LinearOperator, AMP::Operator::AsyncMapOperator, AMP::Operator::Map1Dto3D, AMP::Operator::Map3Dto1D, AMP::Operator::MapSurface, AMP::Operator::MechanicsNonlinearFEOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, AMP::Operator::MemorySpaceMigrationOperator, AMP::Operator::NeutronicsRhs, AMP::Operator::FirstOperator, AMP::Operator::SecondOperator, AMP::Operator::NonlinearBVPOperator, AMP::Operator::PetscMatrixShellOperator, AMP::Operator::CoupledChannelToCladMapOperator, AMP::Operator::CoupledFlowFrapconOperator, AMP::Operator::FlowFrapconJacobian, AMP::Operator::FlowFrapconOperator, AMP::Operator::SubchannelFourEqNonlinearOperator, AMP::Operator::SubchannelToPointMap, AMP::Operator::SubchannelTwoEqNonlinearOperator, AMP::Operator::TrilinosMatrixShellOperator, AMP::Operator::VectorCopyOperator, AMP::TimeIntegrator::LinearTimeOperator, and AMP::TimeIntegrator::TimeOperator.

Definition at line 100 of file Operator.h.

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

◆ getScalarDOFManager()

std::shared_ptr< const AMP::Discretization::DOFManager > AMP::Operator::RadDifOp::getScalarDOFManager ( ) const

DOFManager used for each of E and T.

◆ ghostValuesSolveWrapper()

void AMP::Operator::RadDifOp::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()

bool AMP::Operator::RadDifOp::isValidVector ( std::shared_ptr< const AMP::LinearAlgebra::Vector ET)
overridevirtual

E and T must be positive.

Reimplemented from AMP::Operator::Operator.

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

◆ 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()

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

◆ setBoundaryFunctionE()

void AMP::Operator::RadDifOp::setBoundaryFunctionE ( const std::function< double(size_t boundaryID, const AMP::Mesh::Point &boundaryPoint)> &  fn_)

Set the Robin return function for the energy.

◆ setBoundaryFunctionT()

void AMP::Operator::RadDifOp::setBoundaryFunctionT ( const std::function< double(size_t boundaryID, const AMP::Mesh::Point &boundaryPoint)> &  fn_)

Set the pseudo-Neumann return function for the temperature.

◆ 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

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

Return the name of the operator.

Implements AMP::Operator::Operator.

Definition at line 382 of file RadiationDiffusionFDDiscretization.h.

Member Data Documentation

◆ CellCenteredGeom

AMP::Mesh::GeomType AMP::Operator::RadDifOp::CellCenteredGeom
private

Placeholder for geometry that results in cell-centered data.

Definition at line 443 of file RadiationDiffusionFDDiscretization.h.

◆ d_ak

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

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

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

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

Definition at line 424 of file RadiationDiffusionFDDiscretization.h.

◆ d_BoxMesh

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

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

Definition at line 435 of file RadiationDiffusionFDDiscretization.h.

◆ d_db

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

Parameters required by the discretization.

Definition at line 372 of file RadiationDiffusionFDDiscretization.h.

◆ d_dim

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

Problem dimension.

Definition at line 445 of file RadiationDiffusionFDDiscretization.h.

◆ d_globalBox

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

Global grid index box w/ zero ghosts.

Definition at line 437 of file RadiationDiffusionFDDiscretization.h.

◆ d_h

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

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

Definition at line 447 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_iObject_id

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

Definition at line 189 of file Operator.h.

◆ d_k11

const double AMP::Operator::RadDifOp::d_k11
private

Constant scaling factors in the PDE.

Definition at line 416 of file RadiationDiffusionFDDiscretization.h.

◆ d_k12

const double AMP::Operator::RadDifOp::d_k12
private

Definition at line 417 of file RadiationDiffusionFDDiscretization.h.

◆ d_k21

const double AMP::Operator::RadDifOp::d_k21
private

Definition at line 418 of file RadiationDiffusionFDDiscretization.h.

◆ d_k22

const double AMP::Operator::RadDifOp::d_k22
private

Definition at line 419 of file RadiationDiffusionFDDiscretization.h.

◆ d_localArraySize

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

Local array size.

Definition at line 441 of file RadiationDiffusionFDDiscretization.h.

◆ d_localBox

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

Local grid index box w/ zero ghosts.

Definition at line 439 of file RadiationDiffusionFDDiscretization.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::RadDifOp::d_meshIndexingOps = nullptr
private

Mesh-indexing functions.

Definition at line 457 of file RadiationDiffusionFDDiscretization.h.

◆ d_multiDOFMan

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

Mesh-related data.

MultiDOFManager for managing [E,T] multivectors

Definition at line 431 of file RadiationDiffusionFDDiscretization.h.

◆ d_nk

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

Definition at line 426 of file RadiationDiffusionFDDiscretization.h.

◆ d_pseudoNeumannFunctionT

std::function<double( size_t boundaryID, const AMP::Mesh::Point &boundaryPoint )> AMP::Operator::RadDifOp::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 529 of file RadiationDiffusionFDDiscretization.h.

◆ d_rh2

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

Reciprocal squares of mesh sizes.

Definition at line 449 of file RadiationDiffusionFDDiscretization.h.

◆ d_rk

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

Definition at line 425 of file RadiationDiffusionFDDiscretization.h.

◆ d_robinFunctionE

std::function<double( size_t boundaryID, const AMP::Mesh::Point &boundaryPoint )> AMP::Operator::RadDifOp::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 520 of file RadiationDiffusionFDDiscretization.h.

◆ d_scalarDOFMan

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

DOFManager for E and T individually.

Definition at line 433 of file RadiationDiffusionFDDiscretization.h.

◆ EAST

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

Definition at line 454 of file RadiationDiffusionFDDiscretization.h.

◆ ORIGIN

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

Definition at line 453 of file RadiationDiffusionFDDiscretization.h.

◆ WEST

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

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

Definition at line 452 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