#include <RadiationDiffusionFDDiscretization.h>

Public Types | |
| typedef std::shared_ptr< AMP::Operator::Operator > | shared_ptr |
Public Attributes | |
| std::shared_ptr< AMP::Database > | d_db = nullptr |
| Parameters required by the discretization. | |
Protected Member Functions | |
| void | getBackendFromInput (std::shared_ptr< AMP::Database > db) |
| std::shared_ptr< AMP::Operator::OperatorParameters > | getJacobianParameters (AMP::LinearAlgebra::Vector::const_shared_ptr u_in) override |
| virtual std::shared_ptr< OperatorParameters > | getJacobianParameters (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::Mesh > | d_Mesh |
Static Protected Attributes | |
| static int | d_iInstance_id |
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::BoxMesh > | d_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::Box > | d_globalBox = nullptr |
| Global grid index box w/ zero ghosts. | |
| std::vector< double > | d_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::ArraySize > | d_localArraySize = nullptr |
| Local array size. | |
| std::shared_ptr< AMP::Mesh::BoxMesh::Box > | d_localBox = nullptr |
| Local grid index box w/ zero ghosts. | |
| std::shared_ptr< FDMeshGlobalIndexingOps > | d_meshIndexingOps = nullptr |
| Mesh-indexing functions. | |
| std::shared_ptr< AMP::Discretization::multiDOFManager > | d_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< double > | d_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::DOFManager > | d_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. | |
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:
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.
|
inherited |
Definition at line 29 of file Operator.h.
| AMP::Operator::RadDifOp::RadDifOp | ( | std::shared_ptr< const AMP::Operator::OperatorParameters > | params | ) |
Constructor.
|
inlinevirtual |
Destructor.
Definition at line 380 of file RadiationDiffusionFDDiscretization.h.
|
overridevirtual |
Compute LET = L(ET)
Implements AMP::Operator::Operator.
|
private |
Apply operator over DOFs living on the boundary of process.
|
private |
Apply operator over DOFs living on the interior of process.
|
overridevirtual |
Create a multiVector of E and T over the mesh.
Reimplemented from AMP::Operator::Operator.
|
virtualinherited |
Get a left vector ( For \(\mathbf{y=A(x)}\), \(\mathbf{y}\) is an output vector )
Reimplemented in AMP::Operator::IdentityOperator, AMP::Operator::LinearOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, and AMP::Operator::MemorySpaceMigrationOperator.
|
protectedinherited |
| AMP::Mesh::GeomType AMP::Operator::RadDifOp::getGeomType | ( | ) | const |
Geometry used in the mesh.
|
inlinevirtualinherited |
Return the input variable.
Reimplemented in AMP::Operator::DirichletMatrixCorrection, AMP::Operator::NeumannVectorCorrection, AMP::Operator::ColumnOperator, AMP::Operator::ConstraintsEliminationOperator, AMP::Operator::ContactResidualCorrection, 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::MoveMeshOperator, 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, and AMP::TimeIntegrator::LinearTimeOperator.
Definition at line 106 of file Operator.h.
|
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.
| [in] | u_in | is the current nonlinear iterate. |
|
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.
|
inlineinherited |
Definition at line 89 of file Operator.h.
References AMP::Operator::Operator::d_memory_location.
|
inlineinherited |
Return the mesh.
Definition at line 149 of file Operator.h.
References AMP::Operator::Operator::d_Mesh.
|
inlineinherited |
Return the mesh.
Definition at line 152 of file Operator.h.
References AMP::Operator::Operator::d_Mesh.
|
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.
| [in] | E_vec | vector of all E values |
| [in] | T_vec | vector of all T values |
| [in] | ijk | grid indices of DOF for which 3-point stencil values are to be unpacked |
| [in] | dim | dimension in which the 3-point extends |
| [out] | ELoc3 | E values in the 3-point stencil (WEST, ORIGIN, UPPER) |
| [out] | TLoc3 | T values in the 3-point stencil (WEST, ORIGIN, UPPER) |
|
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.
|
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
| type | std:string specifying type of return operator parameters being requested. Currently the valid option is Jacobian |
| u | const pointer to current solution vector |
| params | pointer to additional parameters that might be required to construct the return parameters |
Reimplemented in AMP::Operator::IdentityOperator, AMP::Operator::MemorySpaceMigrationLinearOperator, and AMP::Operator::MemorySpaceMigrationOperator.
| std::shared_ptr< const AMP::Discretization::DOFManager > AMP::Operator::RadDifOp::getScalarDOFManager | ( | ) | const |
DOFManager used for each of E and T.
|
private |
This is a wrapper around FDBoundaryUtils::ghostValuesSolve to pass our specific constants and boundary-function evaluations.
| [in] | boundaryID | ID of the boundary |
| [in] | boundaryPoint | the point in space where the function is to be evaluated (this will be a point on the corresponding boundary) |
| [in] | Eint | |
| [in] | Tint | |
| [out] | Eg | value of E at the ghost point |
| [out] | Tg | value of T at the ghost point |
|
overridevirtual |
E and T must be positive.
Reimplemented from AMP::Operator::Operator.
|
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.
|
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.
|
virtualinherited |
This function is useful for re-initializing/updating an operator
| params | parameter 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().
|
virtualinherited |
Default base class implementation of the residual: f-L(u)
| f | shared pointer to const vector rhs |
| u | shared pointer to const vector u |
| r | shared 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.
|
virtualinherited |
Return the selector for input vectors.
Reimplemented in AMP::Operator::MemorySpaceMigrationLinearOperator, AMP::Operator::MemorySpaceMigrationOperator, AMP::Operator::FlowFrapconJacobian, AMP::Operator::FlowFrapconOperator, AMP::Operator::SubchannelFourEqLinearOperator, and AMP::Operator::SubchannelFourEqNonlinearOperator.
|
virtualinherited |
Return the selector for output vectors.
Reimplemented in AMP::Operator::MemorySpaceMigrationLinearOperator, AMP::Operator::MemorySpaceMigrationOperator, AMP::Operator::FlowFrapconJacobian, AMP::Operator::FlowFrapconOperator, AMP::Operator::SubchannelFourEqLinearOperator, and AMP::Operator::SubchannelFourEqNonlinearOperator.
| 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.
| 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.
Specify level of diagnostic information printed during iterations.
| level | zero 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.
|
protectedinherited |
|
inherited |
Subset input vector.
|
inherited |
Subset input vector.
|
inherited |
Subset output vector.
|
inherited |
Subset output vector.
|
inlineoverridevirtual |
Return the name of the operator.
Implements AMP::Operator::Operator.
Definition at line 382 of file RadiationDiffusionFDDiscretization.h.
|
private |
Placeholder for geometry that results in cell-centered data.
Definition at line 443 of file RadiationDiffusionFDDiscretization.h.
|
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.
|
protectedinherited |
Definition at line 197 of file Operator.h.
|
private |
Definition at line 424 of file RadiationDiffusionFDDiscretization.h.
|
private |
Mesh; keep a pointer to save having to downcast repeatedly.
Definition at line 435 of file RadiationDiffusionFDDiscretization.h.
| std::shared_ptr<AMP::Database> AMP::Operator::RadDifOp::d_db = nullptr |
Parameters required by the discretization.
Definition at line 372 of file RadiationDiffusionFDDiscretization.h.
Problem dimension.
Definition at line 445 of file RadiationDiffusionFDDiscretization.h.
|
private |
Global grid index box w/ zero ghosts.
Definition at line 437 of file RadiationDiffusionFDDiscretization.h.
|
private |
Mesh sizes, hx, hy, hz. We compute these based on the incoming mesh.
Definition at line 447 of file RadiationDiffusionFDDiscretization.h.
|
protectedinherited |
Definition at line 187 of file Operator.h.
Referenced by AMP::Operator::Operator::setDebugPrintInfoLevel().
|
staticprotectedinherited |
Definition at line 191 of file Operator.h.
|
protectedinherited |
Definition at line 189 of file Operator.h.
Constant scaling factors in the PDE.
Definition at line 416 of file RadiationDiffusionFDDiscretization.h.
Definition at line 417 of file RadiationDiffusionFDDiscretization.h.
Definition at line 418 of file RadiationDiffusionFDDiscretization.h.
Definition at line 419 of file RadiationDiffusionFDDiscretization.h.
|
private |
Local array size.
Definition at line 441 of file RadiationDiffusionFDDiscretization.h.
|
private |
Local grid index box w/ zero ghosts.
Definition at line 439 of file RadiationDiffusionFDDiscretization.h.
|
protectedinherited |
Definition at line 195 of file Operator.h.
Referenced by AMP::Operator::Operator::getMemoryLocation().
|
protectedinherited |
Definition at line 193 of file Operator.h.
Referenced by AMP::Operator::Operator::getMesh(), AMP::Operator::Operator::getMesh(), and AMP::Operator::ContactResidualCorrection::setMasterMesh().
|
private |
Mesh-indexing functions.
Definition at line 457 of file RadiationDiffusionFDDiscretization.h.
|
private |
Mesh-related data.
MultiDOFManager for managing [E,T] multivectors
Definition at line 431 of file RadiationDiffusionFDDiscretization.h.
|
private |
Definition at line 426 of file RadiationDiffusionFDDiscretization.h.
|
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'
| [in] | boundaryID | ID of the boundary |
| [in] | boundaryPoint | the 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.
|
private |
Reciprocal squares of mesh sizes.
Definition at line 449 of file RadiationDiffusionFDDiscretization.h.
|
private |
Definition at line 425 of file RadiationDiffusionFDDiscretization.h.
|
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'
| [in] | boundaryID | ID of the boundary |
| [in] | boundaryPoint | the 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.
|
private |
DOFManager for E and T individually.
Definition at line 433 of file RadiationDiffusionFDDiscretization.h.
Definition at line 454 of file RadiationDiffusionFDDiscretization.h.
Definition at line 453 of file RadiationDiffusionFDDiscretization.h.
Indices used for referencing WEST, ORIGIN, and EAST entries in Loc3 data structures.
Definition at line 452 of file RadiationDiffusionFDDiscretization.h.
|
Advanced Multi-Physics (AMP) Oak Ridge National Laboratory Idaho National Laboratory Los Alamos National Laboratory |
This page automatically produced from the source code by Last updated: Tue Mar 10 2026 13:06:44. Comments on this page |