Advanced Multi-Physics (AMP)
On-Line Documentation
DiffusionNonlinearFEOperator.h
Go to the documentation of this file.
1#ifndef included_AMP_DiffusionNonlinearFEOperator
2#define included_AMP_DiffusionNonlinearFEOperator
3
4#include "AMP/operators/diffusion/DiffusionNonlinearElement.h"
5#include "AMP/operators/diffusion/DiffusionNonlinearFEOperatorParameters.h"
6#include "AMP/operators/libmesh/NonlinearFEOperator.h"
7#include "AMP/vectors/MultiVariable.h"
8#include "AMP/vectors/Vector.h"
9
10#include <vector>
11
12namespace AMP::Operator {
13
15{
16public:
17 explicit DiffusionNonlinearFEOperator( std::shared_ptr<const OperatorParameters> params );
18
20
21 void reset( std::shared_ptr<const OperatorParameters> ) override;
22
23 void setInputVariableName( const std::string &name, int varId = -1 );
24
25 void setOutputVariableName( const std::string &name, int varId = -1 );
26
27 std::shared_ptr<AMP::LinearAlgebra::Variable> createInputVariable( const std::string &name,
28 int varId = -1 );
29
30 std::shared_ptr<AMP::LinearAlgebra::Variable> createOutputVariable( const std::string &name,
31 int varId = -1 );
32
33 std::shared_ptr<AMP::LinearAlgebra::Variable> getInputVariable() const override;
34
35 std::shared_ptr<AMP::LinearAlgebra::Variable> getOutputVariable() const override;
36
37 unsigned int numberOfDOFMaps() { return 1; }
38
39 std::shared_ptr<AMP::LinearAlgebra::Variable> getVariableForDOFMap( unsigned int id );
40
41 const auto &getPrincipalVariable() { return d_PrincipalVariable; }
42
43 std::vector<std::string> getNonPrincipalVariableIds();
44
45 std::shared_ptr<DiffusionTransportModel> getTransportModel();
46
47 std::map<std::string, AMP::LinearAlgebra::Vector::shared_ptr> getFrozen();
48
56
61
62protected:
63 std::shared_ptr<OperatorParameters>
65
68
69 void postAssembly() override;
70
72
73 void postElementOperation() override;
74
75 void init( std::shared_ptr<const DiffusionNonlinearFEOperatorParameters> params );
76
77 std::vector<double> d_elementOutputVector;
78
79 std::shared_ptr<DiffusionNonlinearElement> d_diffNonlinElem;
80
81 std::shared_ptr<DiffusionTransportModel> d_transportModel;
82
84
86
87 std::shared_ptr<std::vector<double>> d_TransportGauss;
89
90protected:
92 bool isFrozen = false;
93 std::shared_ptr<const AMP::LinearAlgebra::Vector> vec;
94 std::shared_ptr<const AMP::LinearAlgebra::Vector> frozen;
95 };
96 std::map<std::string, InputVectorStruct> d_active;
97
98private:
99 std::shared_ptr<AMP::LinearAlgebra::MultiVariable> d_inpVariables;
100
101 std::shared_ptr<AMP::LinearAlgebra::Variable> d_outVariable;
102
104
105 void resetFrozen( std::shared_ptr<const DiffusionNonlinearFEOperatorParameters> params );
106
108 std::shared_ptr<const DiffusionNonlinearFEOperatorParameters> params, bool );
109};
110} // namespace AMP::Operator
111
112#endif
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
Definition Vector.h:60
std::shared_ptr< const Vector > const_shared_ptr
Definition Vector.h:65
A pointer class to wrap a MeshElementVector.
std::shared_ptr< AMP::LinearAlgebra::Variable > createOutputVariable(const std::string &name, int varId=-1)
std::map< std::string, InputVectorStruct > d_active
std::shared_ptr< DiffusionTransportModel > d_transportModel
std::shared_ptr< AMP::LinearAlgebra::Variable > d_outVariable
std::shared_ptr< AMP::LinearAlgebra::MultiVariable > d_inpVariables
void setOutputVariableName(const std::string &name, int varId=-1)
DiffusionNonlinearFEOperator(std::shared_ptr< const DiffusionNonlinearFEOperatorParameters > params, bool)
void reset(std::shared_ptr< const OperatorParameters >) override
std::map< std::string, AMP::LinearAlgebra::Vector::shared_ptr > getFrozen()
std::shared_ptr< AMP::LinearAlgebra::Variable > createInputVariable(const std::string &name, int varId=-1)
void resetFrozen(std::shared_ptr< const DiffusionNonlinearFEOperatorParameters > params)
std::shared_ptr< DiffusionTransportModel > getTransportModel()
std::shared_ptr< std::vector< double > > d_TransportGauss
std::shared_ptr< AMP::LinearAlgebra::Variable > getVariableForDOFMap(unsigned int id)
DiffusionNonlinearFEOperator(std::shared_ptr< const OperatorParameters > params)
void setVector(const std::string &name, AMP::LinearAlgebra::Vector::shared_ptr frozenVec)
std::shared_ptr< OperatorParameters > getJacobianParameters(AMP::LinearAlgebra::Vector::const_shared_ptr u) override
AMP::LinearAlgebra::Vector::shared_ptr d_outVec
void preAssembly(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr r) override
std::vector< std::string > getNonPrincipalVariableIds()
std::shared_ptr< DiffusionNonlinearElement > d_diffNonlinElem
std::shared_ptr< AMP::LinearAlgebra::Variable > getInputVariable() const override
Return the input variable.
void setInputVariableName(const std::string &name, int varId=-1)
std::shared_ptr< AMP::LinearAlgebra::Variable > getOutputVariable() const override
Return the output variable.
void preElementOperation(const AMP::Mesh::MeshElement &) override
bool isValidVector(AMP::LinearAlgebra::Vector::const_shared_ptr u) override
void init(std::shared_ptr< const DiffusionNonlinearFEOperatorParameters > params)
AMP::LinearAlgebra::Vector::shared_ptr d_TransportNodal
std::shared_ptr< AMP::Operator::Operator > shared_ptr
Definition Operator.h:29
std::shared_ptr< const AMP::LinearAlgebra::Vector > frozen



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