2#ifndef included_AMP_SubchannelFourEqLinearOperator
3#define included_AMP_SubchannelFourEqLinearOperator
5#include "AMP/operators/LinearOperator.h"
6#include "AMP/operators/subchannel/SubchannelOperatorParameters.h"
18 typedef std::unique_ptr<AMP::Mesh::MeshElement>
ElementPtr;
27 std::string
type()
const override {
return "SubchannelFourEqLinearOperator"; }
29 void reset( std::shared_ptr<const OperatorParameters> params )
override;
58 std::map<AMP::Mesh::Point, ElementPtr> &,
59 std::map<AMP::Mesh::Point, ElementPtr> & );
62 std::map<AMP::Mesh::Point, double>
getGapWidths( std::shared_ptr<AMP::Mesh::Mesh>,
63 const std::vector<double> &,
64 const std::vector<double> &,
65 const std::vector<double> & );
77 std::shared_ptr<OperatorParameters>
80 std::shared_ptr<const SubchannelOperatorParameters>
d_params;
132 std::vector<std::vector<ElementPtr>>
142 const std::map<AMP::Mesh::Point, ElementPtr> & );
std::shared_ptr< Vector > shared_ptr
Shorthand for shared pointer to Vector.
std::shared_ptr< const Vector > const_shared_ptr
std::shared_ptr< AMP::Operator::Operator > shared_ptr
std::vector< double > d_channelDiam
double DynamicViscosity(double, double)
std::vector< double > d_zMaxGrid
void reset(std::shared_ptr< const OperatorParameters > params) override
std::unique_ptr< AMP::Mesh::MeshElement > ElementPtr
std::string d_frictionModel
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< AMP::LinearAlgebra::VectorSelector > selectOutputVector() const override
Return the selector for output vectors.
std::vector< double > d_zMinGrid
void fillSubchannelGrid(std::shared_ptr< AMP::Mesh::Mesh >)
std::map< AMP::Mesh::Point, double > getGapWidths(std::shared_ptr< AMP::Mesh::Mesh >, const std::vector< double > &, const std::vector< double > &, const std::vector< double > &)
Makes map of gap widths to their xy positions.
std::vector< double > d_channelMass
double Temperature(double, double)
ElementPtr getAxiallyAdjacentLateralFace(const AMP::Mesh::MeshElement *, const AMP::Mesh::MeshElement &, const std::map< AMP::Mesh::Point, ElementPtr > &)
std::shared_ptr< AMP::LinearAlgebra::Vector > d_cladTemperature
std::vector< double > d_QFraction
int getSubchannelIndex(double x, double y)
std::vector< double > d_z
std::vector< double > d_x
std::shared_ptr< const SubchannelOperatorParameters > d_params
std::vector< double > d_channelArea
std::shared_ptr< SubchannelPhysicsModel > getSubchannelPhysicsModel()
Get the element physics model.
std::vector< bool > d_ownSubChannel
std::shared_ptr< SubchannelPhysicsModel > d_subchannelPhysicsModel
void getAxialFaces(const AMP::Mesh::MeshElement &, ElementPtr &, ElementPtr &)
std::vector< std::vector< ElementPtr > > d_subchannelElem
std::vector< double > d_lossGrid
virtual ~SubchannelFourEqLinearOperator()
Destructor.
std::vector< double > d_y
std::shared_ptr< AMP::LinearAlgebra::Vector > d_frozenVec
void setFrozenVector(AMP::LinearAlgebra::Vector::shared_ptr frozenVec)
Sets frozen solution vector.
double Volume(double, double)
void getLateralFaces(std::shared_ptr< AMP::Mesh::Mesh >, std::map< AMP::Mesh::Point, ElementPtr > &, std::map< AMP::Mesh::Point, ElementPtr > &)
Makes map of lateral gaps to their centroids.
SubchannelFourEqLinearOperator(std::shared_ptr< const OperatorParameters > params)
Constructor.
std::vector< double > d_rodDiameter
std::vector< std::vector< ElementPtr > > d_subchannelFace
double getInletTemperature()
Get the Inlet Temperature [K].
auto getParams()
Get the current operator parameters.
std::shared_ptr< AMP::LinearAlgebra::VectorSelector > selectInputVector() const override
Return the selector for input vectors.
std::vector< double > d_rodFraction
std::string type() const override
Return the name of the operator.
double getOutletPressure()
Get the Outlet Pressure [Pa].