Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ are taken from the *first* connection.

!template load file=volume_junction_1phase_usage.md.template name=VolumeJunction1Phase

If connected flow channels include passive transport variables (see [FlowChannel1Phase.md]), then [!param](/Components/VolumeJunction1Phase/initial_passives) must be specified to give the initial value for each passive $y$; [!param](/Components/VolumeJunction1Phase/scaling_factor_passives_times_V) may be specified to use non-unity values for the scaling factors for each corresponding junction variable $y V$.

!alert tip title=Visualizing junction solutions
Since junction variables are located on the mesh, they can visualized alongside the other field variables, such as from pipes. In Paraview, the junction can be made more visible using the "point size" parameter.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,7 @@ class JunctionParallelChannels1Phase : public VolumeJunction1Phase
JunctionParallelChannels1Phase(const InputParameters & params);

protected:
/**
* Builds user object for computing and storing the fluxes
*/
virtual bool supportsPassiveTransport() const override { return false; }
virtual void buildVolumeJunctionUserObject() override;

public:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class Pump1Phase : public VolumeJunction1Phase
Pump1Phase(const InputParameters & params);

protected:
virtual bool supportsPassiveTransport() const override { return false; }
virtual void buildVolumeJunctionUserObject() override;

/// Pump head [m]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class ShaftConnectedCompressor1Phase : public VolumeJunction1Phase, public Shaft

protected:
virtual void check() const override;
virtual bool supportsPassiveTransport() const override { return false; }
virtual void buildVolumeJunctionUserObject() override;

/// Compressor inlet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class ShaftConnectedPump1Phase : public VolumeJunction1Phase, public ShaftConnec

protected:
virtual void check() const override;
virtual bool supportsPassiveTransport() const override { return false; }
virtual void buildVolumeJunctionUserObject() override;

/// Pump inlet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class ShaftConnectedTurbine1Phase : public VolumeJunction1Phase, public ShaftCon

protected:
virtual void check() const override;
virtual bool supportsPassiveTransport() const override { return false; }
virtual void buildVolumeJunctionUserObject() override;

/// Turbine inlet
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ class VolumeJunction1Phase : public FlowJunction1Phase

protected:
virtual void setupMesh() override;
virtual void init() override;
virtual void check() const override;
virtual bool supportsPassiveTransport() const override { return true; }

/**
* Builds user object for computing and storing the fluxes
Expand Down Expand Up @@ -78,6 +80,9 @@ class VolumeJunction1Phase : public FlowJunction1Phase
*/
void addVolumeJunctionIC(const VariableName & var, const std::string & quantity);

/// Adds initial conditions for a passive transport variable
void addPassiveTransportIC(const VariableName & var, const FunctionName & function_name);

/// Volume of the junction
const Real _volume;

Expand Down Expand Up @@ -117,6 +122,9 @@ class VolumeJunction1Phase : public FlowJunction1Phase
/// Reference area
const Real & _A_ref;

/// Names of the passive transport solution variables, if any
std::vector<VariableName> _passives_times_V;

public:
static InputParameters validParams();
};
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ class ADVolumeJunction1PhaseUserObject : public ADVolumeJunctionBaseUserObject
const ADVariableValue & _rhouA;
/// rho*E*A of the connected flow channels
const ADVariableValue & _rhoEA;
/// Passives transport variables of the connected flow channels
std::vector<const ADVariableValue *> _passives_times_area;

/// Number of passive transport variables
const unsigned int _n_passives;

/// Form loss coefficient
const Real & _K;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ ADVolumeJunction1PhaseBC::validParams()
params.addRequiredCoupledVar("rhoA", "Flow channel variable: rho*A");
params.addRequiredCoupledVar("rhouA", "Flow channel variable: rho*u*A");
params.addRequiredCoupledVar("rhoEA", "Flow channel variable: rho*E*A");
params.addRequiredCoupledVar("passives_times_area", "Passive transport solution variables");

params.addClassDescription(
"Adds boundary fluxes for flow channels connected to a 1-phase volume junction");
Expand Down Expand Up @@ -69,6 +70,10 @@ ADVolumeJunction1PhaseBC::getFlowChannelIndexMapping() const
jvar_map.insert(std::pair<unsigned int, unsigned int>(_rhoA_jvar, THMVACE1D::MASS));
jvar_map.insert(std::pair<unsigned int, unsigned int>(_rhouA_jvar, THMVACE1D::MOMENTUM));
jvar_map.insert(std::pair<unsigned int, unsigned int>(_rhoEA_jvar, THMVACE1D::ENERGY));
const auto n_passives = coupledComponents("passives_times_area");
for (const auto i : make_range(n_passives))
jvar_map.insert(std::pair<unsigned int, unsigned int>(coupled("passives_times_area", i),
THMVACE1D::N_FLUX_OUTPUTS + i));

return jvar_map;
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,15 @@ JunctionParallelChannels1Phase::buildVolumeJunctionUserObject()
params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA};
params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA};
params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA};
auto flow_model_1phase = dynamic_cast<const FlowModelSinglePhase *>(_flow_model.get());
params.set<std::vector<VariableName>>("passives_times_area") =
flow_model_1phase->passiveTransportSolutionVariableNames();
params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name};
params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name};
params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name};
params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name};
params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name};
params.set<std::vector<VariableName>>("passives_times_V") = _passives_times_V;
params.set<RealVectorValue>("dir_c0") = _directions[0];
params.set<Real>("K") = _K;
params.set<Real>("A_ref") = _A_ref;
Expand Down
4 changes: 4 additions & 0 deletions modules/thermal_hydraulics/src/components/Pump1Phase.C
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,15 @@ Pump1Phase::buildVolumeJunctionUserObject()
params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA};
params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA};
params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA};
auto flow_model_1phase = dynamic_cast<const FlowModelSinglePhase *>(_flow_model.get());
params.set<std::vector<VariableName>>("passives_times_area") =
flow_model_1phase->passiveTransportSolutionVariableNames();
params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name};
params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name};
params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name};
params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name};
params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name};
params.set<std::vector<VariableName>>("passives_times_V") = _passives_times_V;
params.set<Real>("head") = _head;
params.set<Real>("gravity_magnitude") = THM::gravity_const;
params.set<Real>("A_ref") = getParam<Real>("A_ref");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,15 @@ ShaftConnectedCompressor1Phase::buildVolumeJunctionUserObject()
params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA};
params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA};
params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA};
auto flow_model_1phase = dynamic_cast<const FlowModelSinglePhase *>(_flow_model.get());
params.set<std::vector<VariableName>>("passives_times_area") =
flow_model_1phase->passiveTransportSolutionVariableNames();
params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name};
params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name};
params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name};
params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name};
params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name};
params.set<std::vector<VariableName>>("passives_times_V") = _passives_times_V;
// the direction of the outlet channel
params.set<Point>("di_out") = _directions[1].unit();
params.set<Real>("omega_rated") = _omega_rated;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,11 +116,15 @@ ShaftConnectedPump1Phase::buildVolumeJunctionUserObject()
params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA};
params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA};
params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA};
auto flow_model_1phase = dynamic_cast<const FlowModelSinglePhase *>(_flow_model.get());
params.set<std::vector<VariableName>>("passives_times_area") =
flow_model_1phase->passiveTransportSolutionVariableNames();
params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name};
params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name};
params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name};
params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name};
params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name};
params.set<std::vector<VariableName>>("passives_times_V") = _passives_times_V;
// the direction of the outlet channel
params.set<Point>("di_out") = _directions[1].unit();
params.set<Real>("gravity_magnitude") = THM::gravity_const;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,15 @@ ShaftConnectedTurbine1Phase::buildVolumeJunctionUserObject()
params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA};
params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA};
params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA};
auto flow_model_1phase = dynamic_cast<const FlowModelSinglePhase *>(_flow_model.get());
params.set<std::vector<VariableName>>("passives_times_area") =
flow_model_1phase->passiveTransportSolutionVariableNames();
params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name};
params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name};
params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name};
params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name};
params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name};
params.set<std::vector<VariableName>>("passives_times_V") = _passives_times_V;
// the direction of the outlet channel
params.set<Point>("di_out") = _directions[1].unit();
params.set<Real>("omega_rated") = _omega_rated;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,15 @@ SimpleTurbine1Phase::buildVolumeJunctionUserObject()
params.set<std::vector<VariableName>>("rhoA") = {FlowModelSinglePhase::RHOA};
params.set<std::vector<VariableName>>("rhouA") = {FlowModelSinglePhase::RHOUA};
params.set<std::vector<VariableName>>("rhoEA") = {FlowModelSinglePhase::RHOEA};
auto flow_model_1phase = dynamic_cast<const FlowModelSinglePhase *>(_flow_model.get());
params.set<std::vector<VariableName>>("passives_times_area") =
flow_model_1phase->passiveTransportSolutionVariableNames();
params.set<std::vector<VariableName>>("rhoV") = {_rhoV_var_name};
params.set<std::vector<VariableName>>("rhouV") = {_rhouV_var_name};
params.set<std::vector<VariableName>>("rhovV") = {_rhovV_var_name};
params.set<std::vector<VariableName>>("rhowV") = {_rhowV_var_name};
params.set<std::vector<VariableName>>("rhoEV") = {_rhoEV_var_name};
params.set<std::vector<VariableName>>("passives_times_V") = _passives_times_V;
params.set<RealVectorValue>("dir_c0") = _directions[0];
params.set<Real>("K") = _K;
params.set<Real>("A_ref") = _A_ref;
Expand Down
Loading