Advanced Multi-Physics (AMP)
On-Line Documentation
RadiationDiffusionFDOpSplitPrec.h
Go to the documentation of this file.
1#ifndef RAD_DIF_OP_SPLIT_PREC
2#define RAD_DIF_OP_SPLIT_PREC
3
4#include "AMP/IO/AsciiWriter.h"
5#include "AMP/IO/PIO.h"
6#include "AMP/operators/LinearOperator.h"
7#include "AMP/operators/Operator.h"
8#include "AMP/operators/OperatorParameters.h"
9#include "AMP/operators/radiationDiffusionFD/RadiationDiffusionFDBDFWrappers.h"
10#include "AMP/operators/radiationDiffusionFD/RadiationDiffusionFDDiscretization.h"
11#include "AMP/solvers/SolverFactory.h"
12#include "AMP/solvers/SolverStrategy.h"
13#include "AMP/solvers/SolverStrategyParameters.h"
14#include "AMP/utils/AMPManager.h"
15#include "AMP/vectors/MultiVector.h"
16#include "AMP/vectors/Vector.h"
17
18#include <iomanip>
19#include <iostream>
20
21namespace AMP::Solver {
22
23
49{
50
51 //
52public:
53 BDFRadDifOpPJacOpSplitPrec( std::shared_ptr<AMP::Solver::SolverStrategyParameters> params );
54
55 static std::unique_ptr<AMP::Solver::SolverStrategy>
56 create( std::shared_ptr<AMP::Solver::SolverStrategyParameters> params )
57 {
58 return std::make_unique<BDFRadDifOpPJacOpSplitPrec>( params );
59 };
60
61 std::string type() const override { return "BDFRadDifOpPJacOpSplitPrec"; };
62
64 void apply( std::shared_ptr<const AMP::LinearAlgebra::Vector> bET_,
65 std::shared_ptr<AMP::LinearAlgebra::Vector> ET_ ) override;
66
71 void reset( std::shared_ptr<AMP::Solver::SolverStrategyParameters> params ) override;
72
73
74 //
75private:
77 static constexpr double SINGULAR_TOL = 1e-15;
78
80 std::unique_ptr<AMP::Solver::SolverStrategy> d_difSolverE = nullptr;
81 std::unique_ptr<AMP::Solver::SolverStrategy> d_difSolverT = nullptr;
82
83
86 void diffusionSolve( std::shared_ptr<const AMP::LinearAlgebra::Vector> bE,
87 std::shared_ptr<const AMP::LinearAlgebra::Vector> bT,
88 std::shared_ptr<AMP::LinearAlgebra::Vector> E,
89 std::shared_ptr<AMP::LinearAlgebra::Vector> T ) const;
90
97 void reactionSolve( std::shared_ptr<const AMP::LinearAlgebra::Vector> bE,
98 std::shared_ptr<const AMP::LinearAlgebra::Vector> bT,
99 std::shared_ptr<AMP::LinearAlgebra::Vector> E,
100 std::shared_ptr<AMP::LinearAlgebra::Vector> T );
101
108 double a, double b, double c, double d, double e, double f, double &x, double &y ) const;
109
112};
113
114
115} // namespace AMP::Solver
116
117
118#endif
std::unique_ptr< AMP::Solver::SolverStrategy > d_difSolverE
Solvers for approximately inverting diagonal diffusion blocks.
void scalar2x2Solve(double a, double b, double c, double d, double e, double f, double &x, double &y) const
std::unique_ptr< AMP::Solver::SolverStrategy > d_difSolverT
std::string type() const override
Return the name of the solver.
void reset(std::shared_ptr< AMP::Solver::SolverStrategyParameters > params) override
void setDiffusionSolvers()
Set d_difSolverE and d_difSolverT based on current state of operator.
static constexpr double SINGULAR_TOL
Tolerance for determining if 2x2 system is singular.
void apply(std::shared_ptr< const AMP::LinearAlgebra::Vector > bET_, std::shared_ptr< AMP::LinearAlgebra::Vector > ET_) override
void reactionSolve(std::shared_ptr< const AMP::LinearAlgebra::Vector > bE, std::shared_ptr< const AMP::LinearAlgebra::Vector > bT, std::shared_ptr< AMP::LinearAlgebra::Vector > E, std::shared_ptr< AMP::LinearAlgebra::Vector > T)
static std::unique_ptr< AMP::Solver::SolverStrategy > create(std::shared_ptr< AMP::Solver::SolverStrategyParameters > params)
void diffusionSolve(std::shared_ptr< const AMP::LinearAlgebra::Vector > bE, std::shared_ptr< const AMP::LinearAlgebra::Vector > bT, std::shared_ptr< AMP::LinearAlgebra::Vector > E, std::shared_ptr< AMP::LinearAlgebra::Vector > T) const
BDFRadDifOpPJacOpSplitPrec(std::shared_ptr< AMP::Solver::SolverStrategyParameters > params)
std::shared_ptr< AMP::Solver::SolverStrategy > shared_ptr



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:40.
Comments on this page