Advanced Multi-Physics (AMP)
On-Line Documentation
SubchannelTwoEqNonlinearOperator.h
Go to the documentation of this file.
1
2#ifndef included_AMP_SubchannelTwoEqNonlinearOperator
3#define included_AMP_SubchannelTwoEqNonlinearOperator
4
5#include "AMP/operators/Operator.h"
6#include "AMP/operators/subchannel/SubchannelOperatorParameters.h"
7#include "AMP/operators/subchannel/SubchannelPhysicsModel.h"
8
9
10namespace AMP::Operator {
11
18{
19public:
20 typedef std::unique_ptr<AMP::Mesh::MeshElement> ElementPtr;
21
23 explicit SubchannelTwoEqNonlinearOperator( std::shared_ptr<const OperatorParameters> params );
24
27
29 std::string type() const override { return "SubchannelTwoEqNonlinearOperator"; }
30
38
39 void reset( std::shared_ptr<const OperatorParameters> params ) override;
40
41 std::shared_ptr<AMP::LinearAlgebra::Variable> getInputVariable() const override
42 {
43 return d_inpVariable;
44 }
45
46 std::shared_ptr<AMP::LinearAlgebra::Variable> getOutputVariable() const override
47 {
48 return d_outVariable;
49 }
50
55
57 std::shared_ptr<SubchannelPhysicsModel> getSubchannelPhysicsModel()
58 {
60 }
61
63 double getInletTemperature() { return d_Tin; }
64
66 double getOutletPressure() { return d_Pout; }
67
69 auto getParams() { return d_params; }
70
71protected:
73 std::shared_ptr<OperatorParameters>
75
76 std::shared_ptr<const SubchannelOperatorParameters> d_params;
77
78 std::shared_ptr<SubchannelPhysicsModel> d_subchannelPhysicsModel;
79
80private:
82
83 std::shared_ptr<AMP::LinearAlgebra::Variable> d_inpVariable;
84 std::shared_ptr<AMP::LinearAlgebra::Variable> d_outVariable;
85 std::shared_ptr<AMP::LinearAlgebra::Vector> d_cladTemperature;
86
87 double d_Pout; // exit pressure [Pa]
88 double d_Tin; // inlet temperature [K]
89 double d_mass; // inlet global mass flow rate [kg/s]
90 double d_gamma; // fission heating coefficient
91 double d_theta; // channel angle [rad]
92 double d_Q; // rod power
93 double d_reynolds; // reynolds number
94 double d_prandtl; // prandtl number
95
96 std::string d_frictionModel; // friction model
97 double d_friction; // friction factor
98 double d_roughness; // surface roughness [m]
99
100 std::vector<double> d_channelDiam; // Channel hydraulic diameter using the wetted perimeter
101 std::vector<double> d_channelArea; // Channel flow area
102 std::vector<double> d_rodDiameter; // Average rod diameter for each subchannel
103 std::vector<double> d_rodFraction; // Fraction of a rod in each subchannel
104 std::vector<double> d_channelMass; // Mass flow rate for each subchannel [kg/s]
105
106 size_t d_NGrid; // number of grid spacers
107 std::vector<double> d_zMinGrid; // z min positions of each grid spacer
108 std::vector<double> d_zMaxGrid; // z max positions of each grid spacer
109 std::vector<double> d_lossGrid; // loss coefficients for each grid spacer
110
111 std::string d_source; // heat source type
112 std::string d_heatShape; // heat shape used if heat source type is "totalHeatGeneration"
113
114 std::vector<double> d_x, d_y, d_z;
115 std::vector<bool> d_ownSubChannel; // Which subchannels do I own
116 std::vector<std::vector<ElementPtr>> d_subchannelElem; // List of elements in each subchannel
117 std::vector<std::vector<ElementPtr>>
118 d_subchannelFace; // List of z-face elements in each subchannel
119 int getSubchannelIndex( double x, double y );
121};
122} // namespace AMP::Operator
123
124#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
std::shared_ptr< AMP::Operator::Operator > shared_ptr
Definition Operator.h:29
std::shared_ptr< AMP::LinearAlgebra::Variable > d_outVariable
std::shared_ptr< OperatorParameters > getJacobianParameters(AMP::LinearAlgebra::Vector::const_shared_ptr u) override
Gets parameters from nonlinear operator for use in linear operator.
std::shared_ptr< SubchannelPhysicsModel > getSubchannelPhysicsModel()
Get the element physics model.
std::shared_ptr< const SubchannelOperatorParameters > d_params
std::shared_ptr< AMP::LinearAlgebra::Variable > getOutputVariable() const override
Return the output variable.
std::shared_ptr< AMP::LinearAlgebra::Vector > d_cladTemperature
SubchannelTwoEqNonlinearOperator(std::shared_ptr< const OperatorParameters > params)
Constructor.
void reset(std::shared_ptr< const OperatorParameters > params) override
std::string type() const override
Return the name of the operator.
void setVector(AMP::LinearAlgebra::Vector::shared_ptr frozenVec)
void apply(AMP::LinearAlgebra::Vector::const_shared_ptr u, AMP::LinearAlgebra::Vector::shared_ptr f) override
std::shared_ptr< AMP::LinearAlgebra::Variable > getInputVariable() const override
Return the input variable.
std::shared_ptr< AMP::LinearAlgebra::Variable > d_inpVariable
std::shared_ptr< SubchannelPhysicsModel > d_subchannelPhysicsModel



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