https://mooseframework.inl.gov
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
WCNSFVTwoPhaseMixturePhysics Class Referencefinal

Creates all the objects needed to solve the mixture terms for the weakly-compressible and incompressible two-phase equations. More...

#include <WCNSFVTwoPhaseMixturePhysics.h>

Inheritance diagram for WCNSFVTwoPhaseMixturePhysics:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 WCNSFVTwoPhaseMixturePhysics (const InputParameters &parameters)
 
const std::vector< NonlinearVariableName > & getAdvectedScalarNames () const
 Get the names of the advected scalar quantity variables. More...
 
bool hasScalarEquations () const
 Whether the physics is actually creating the scalar advection equations. More...
 
virtual void act () override final
 
virtual void actOnAdditionalTasks ()
 
void addBlocks (const std::vector< SubdomainName > &blocks)
 
void addBlocksById (const std::vector< SubdomainID > &block_ids)
 
const std::vector< SubdomainName > & blocks () const
 
bool checkBlockRestrictionIdentical (const std::string &object_name, const std::vector< SubdomainName > &blocks, const bool error_if_not_identical=true) const
 
const T * getCoupledPhysics (const PhysicsName &phys_name, const bool allow_fail=false) const
 
const std::vector< T *> getCoupledPhysics (const bool allow_fail=false) const
 
unsigned int dimension () const
 
const ActionComponentgetActionComponent (const ComponentName &comp_name) const
 
void checkComponentType (const ActionComponent &component) const
 
virtual void addComponent (const ActionComponent &component)
 
const std::vector< VariableName > & solverVariableNames () const
 
const std::vector< VariableName > & auxVariableNames () const
 
void timedAct ()
 
MooseObjectName uniqueActionName () const
 
const std::string & specificTaskName () const
 
const std::set< std::string > & getAllTasks () const
 
void appendTask (const std::string &task)
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
PerfGraphperfGraph ()
 
void assertParamDefined (const std::string &libmesh_dbg_var(param)) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
const WCNSFVFlowPhysicsBasegetCoupledFlowPhysics () const
 
const WCNSFVTurbulencePhysicsgetCoupledTurbulencePhysics () const
 
MooseFunctorName getPorosityFunctorName (bool smoothed) const
 Return the porosity functor name. More...
 
const MooseFunctorName & densityName () const
 
const MooseFunctorName & dynamicViscosityName () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static InputParameters commonMixtureParams ()
 
static void renamePassiveScalarToMixtureParams (InputParameters &params)
 

Public Attributes

const ConsoleStream _console
 

Static Public Attributes

static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Member Functions

virtual void addFVBCs () override
 
bool usingNavierStokesFVSyntax () const
 Detects if we are using the new Physics syntax or the old NavierStokesFV action. More...
 
InputParameters getAdditionalRMParams () const override
 Parameters to change or add relationship managers. More...
 
void assertParamDefined (const std::string &param) const
 
bool isTransient () const
 
FactorygetFactory ()
 
FactorygetFactory () const
 
virtual FEProblemBasegetProblem ()
 
virtual const FEProblemBasegetProblem () const
 
void prepareCopyVariablesFromMesh () const
 
void copyVariablesFromMesh (const std::vector< VariableName > &variables_to_copy, bool are_nonlinear=true)
 
std::string prefix () const
 
void saveSolverVariableName (const VariableName &var_name)
 
void saveAuxVariableName (const VariableName &var_name)
 
bool variableExists (const VariableName &var_name, bool error_if_aux) const
 
bool solverVariableExists (const VariableName &var_name) const
 
const SolverSystemName & getSolverSystem (unsigned int variable_index) const
 
const SolverSystemName & getSolverSystem (const VariableName &variable_name) const
 
void addRequiredPhysicsTask (const std::string &task)
 
void assignBlocks (InputParameters &params, const std::vector< SubdomainName > &blocks) const
 
bool allMeshBlocks (const std::vector< SubdomainName > &blocks) const
 
bool allMeshBlocks (const std::set< SubdomainName > &blocks) const
 
std::set< SubdomainIDgetSubdomainIDs (const std::set< SubdomainName > &blocks) const
 
std::vector< std::string > getSubdomainNamesAndIDs (const std::set< SubdomainID > &blocks) const
 
void addPetscPairsToPetscOptions (const std::vector< std::pair< MooseEnumItem, std::string >> &petsc_pair_options)
 
bool isVariableFV (const VariableName &var_name) const
 
bool isVariableScalar (const VariableName &var_name) const
 
bool shouldCreateVariable (const VariableName &var_name, const std::vector< SubdomainName > &blocks, const bool error_if_aux)
 
bool shouldCreateIC (const VariableName &var_name, const std::vector< SubdomainName > &blocks, const bool ic_is_default_ic, const bool error_if_already_defined) const
 
bool shouldCreateTimeDerivative (const VariableName &var_name, const std::vector< SubdomainName > &blocks, const bool error_if_already_defined) const
 
void reportPotentiallyMissedParameters (const std::vector< std::string > &param_names, const std::string &object_type) const
 
bool addRelationshipManagers (Moose::RelationshipManagerType when_type, const InputParameters &moose_object_pars)
 
void associateWithParameter (const std::string &param_name, InputParameters &params) const
 
void associateWithParameter (const InputParameters &from_params, const std::string &param_name, InputParameters &params) const
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
void checkParamsBothSetOrNotSet (const std::string &param1, const std::string &param2) const
 
void checkSecondParamSetOnlyIfFirstOneTrue (const std::string &param1, const std::string &param2) const
 
void checkSecondParamSetOnlyIfFirstOneSet (const std::string &param1, const std::string &param2) const
 
void checkSecondParamNotSetIfFirstOneSet (const std::string &param1, const std::string &param2) const
 
void checkVectorParamsSameLength (const std::string &param1, const std::string &param2) const
 
void checkVectorParamAndMultiMooseEnumLength (const std::string &param1, const std::string &param2) const
 
void checkTwoDVectorParamsSameLength (const std::string &param1, const std::string &param2) const
 
void checkVectorParamsNoOverlap (const std::vector< std::string > &param_vecs) const
 
void checkTwoDVectorParamsNoRespectiveOverlap (const std::vector< std::string > &param_vecs) const
 
void checkTwoDVectorParamInnerSameLengthAsOneDVector (const std::string &param1, const std::string &param2) const
 
void checkTwoDVectorParamMultiMooseEnumSameLength (const std::string &param1, const std::string &param2, const bool error_for_param2) const
 
void checkVectorParamNotEmpty (const std::string &param1) const
 
void checkVectorParamsSameLengthIfSet (const std::string &param1, const std::string &param2, const bool ignore_empty_default_param2=false) const
 
void checkVectorParamLengthSameAsCombinedOthers (const std::string &param1, const std::string &param2, const std::string &param3) const
 
void checkBlockwiseConsistency (const std::string &block_param_name, const std::vector< std::string > &parameter_names) const
 
bool parameterConsistent (const InputParameters &other_param, const std::string &param_name) const
 
void warnInconsistent (const InputParameters &parameters, const std::string &param_name) const
 
void errorDependentParameter (const std::string &param1, const std::string &value_not_set, const std::vector< std::string > &dependent_params) const
 
void errorInconsistentDependentParameter (const std::string &param1, const std::string &value_set, const std::vector< std::string > &dependent_params) const
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

std::vector< NonlinearVariableName > _passive_scalar_names
 Names of the passive scalar variables. More...
 
const bool _has_scalar_equation
 A boolean to help compatibility with the old Modules/NavierStokesFV syntax or to deliberately skip adding the equations (for example for mixtures with a stationary phase) More...
 
MultiMooseEnum _passive_scalar_inlet_types
 Passive scalar inlet boundary types. More...
 
std::vector< std::vector< MooseFunctorName > > _passive_scalar_inlet_functors
 Functors describing the inlet boundary values. See passive_scalar_inlet_types for what the functors actually represent. More...
 
std::vector< MooseFunctorName > _passive_scalar_sources
 Functors for the passive scalar sources. Indexing is scalar variable index. More...
 
std::vector< std::vector< MooseFunctorName > > _passive_scalar_coupled_sources
 Functors for the passive scalar (coupled) sources. Inner indexing is scalar variable index. More...
 
std::vector< std::vector< Real > > _passive_scalar_sources_coef
 Coefficients multiplying for the passive scalar sources. Inner indexing is scalar variable index. More...
 
bool _define_variables
 Whether to define variables if they do not exist. More...
 
std::vector< SolverSystemName > _system_names
 
std::vector< unsigned int_system_numbers
 
const bool _verbose
 
const MooseEnum_preconditioning
 
std::vector< SubdomainName > _blocks
 
std::string _registered_identifier
 
std::string _specific_task_name
 
std::set< std::string > _all_tasks
 
ActionWarehouse_awh
 
const std::string & _current_task
 
std::shared_ptr< MooseMesh > & _mesh
 
std::shared_ptr< MooseMesh > & _displaced_mesh
 
std::shared_ptr< FEProblemBase > & _problem
 
PerfID _act_timer
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const Parallel::Communicator & _communicator
 
const NavierStokesPhysicsBase_advection_physics
 The Physics class using this helper. More...
 
const WCNSFVFlowPhysicsBase_flow_equations_physics
 Flow physics. More...
 
const WCNSFVTurbulencePhysics_turbulence_physics
 Turbulence. More...
 
const MooseEnum _compressibility
 Compressibility type, can be compressible, incompressible or weakly-compressible. More...
 
const bool _porous_medium_treatment
 Switch to show if porous medium treatment is requested or not. More...
 
const std::vector< std::string > _velocity_names
 Velocity names. More...
 
const NonlinearVariableName _pressure_name
 Pressure name. More...
 
const MooseFunctorName _density_name
 Name of the density material property. More...
 
const MooseFunctorName _dynamic_viscosity_name
 Name of the dynamic viscosity material property. More...
 
const MooseEnum _velocity_interpolation
 The velocity / momentum face interpolation method for advecting other quantities. More...
 

Private Member Functions

virtual void addFVKernels () override
 
virtual void addMaterials () override
 
virtual void setSlipVelocityParams (InputParameters &params) const override
 Adds the slip velocity parameters. More...
 
void addPhaseInterfaceTerm ()
 Functions adding kernels for the other physics. More...
 
void addPhaseChangeEnergySource ()
 
void addPhaseDriftFluxTerm ()
 
void addAdvectionSlipTerm ()
 

Private Attributes

const WCNSFVFluidHeatTransferPhysics_fluid_energy_physics
 Fluid heat transfer physics. More...
 
const bool _add_phase_equation
 Convenience boolean to keep track of whether the phase transport equation is requested. More...
 
bool _has_energy_equation
 Convenience boolean to keep track of whether the fluid energy equation is present. More...
 
const MooseFunctorName _phase_1_fraction_name
 Name of the first phase fraction (usually, liquid) More...
 
const MooseFunctorName _phase_2_fraction_name
 Name of the second phase fraction (usually, dispersed or advected by the liquid) More...
 
const MooseFunctorName _phase_1_density
 Name of the density of the other phase. More...
 
const MooseFunctorName _phase_1_viscosity
 Name of the dyanmic viscosity of the other phase. More...
 
const MooseFunctorName _phase_1_specific_heat
 Name of the specific heat of the other phase. More...
 
const MooseFunctorName _phase_1_thermal_conductivity
 Name of the thermal conductivity of the other phase. More...
 
const MooseFunctorName _phase_2_density
 Name of the density of the other phase. More...
 
const MooseFunctorName _phase_2_viscosity
 Name of the dynamic viscosity of the other phase. More...
 
const MooseFunctorName _phase_2_specific_heat
 Name of the specific heat of the other phase. More...
 
const MooseFunctorName _phase_2_thermal_conductivity
 Name of the thermal conductivity of the other phase. More...
 
const bool _use_external_mixture_properties
 Whether to define the mixture model internally or use fluid properties instead. More...
 
const bool _use_drift_flux
 Whether to add the drift flux momentum terms to each component momentum equation. More...
 
const bool _use_advection_slip
 Whether to add the advection slip term to each component of the momentum equation. More...
 

Detailed Description

Creates all the objects needed to solve the mixture terms for the weakly-compressible and incompressible two-phase equations.

Can also add a phase transport equation

Definition at line 21 of file WCNSFVTwoPhaseMixturePhysics.h.

Constructor & Destructor Documentation

◆ WCNSFVTwoPhaseMixturePhysics()

WCNSFVTwoPhaseMixturePhysics::WCNSFVTwoPhaseMixturePhysics ( const InputParameters parameters)

Definition at line 182 of file WCNSFVTwoPhaseMixturePhysics.C.

185  _phase_1_fraction_name(getParam<MooseFunctorName>("phase_1_fraction_name")),
187  _phase_1_density(getParam<MooseFunctorName>("phase_1_density_name")),
188  _phase_1_viscosity(getParam<MooseFunctorName>("phase_1_viscosity_name")),
189  _phase_1_specific_heat(getParam<MooseFunctorName>("phase_1_specific_heat_name")),
190  _phase_1_thermal_conductivity(getParam<MooseFunctorName>("phase_1_thermal_conductivity_name")),
191  _phase_2_density(getParam<MooseFunctorName>("phase_2_density_name")),
192  _phase_2_viscosity(getParam<MooseFunctorName>("phase_2_viscosity_name")),
193  _phase_2_specific_heat(getParam<MooseFunctorName>("phase_2_specific_heat_name")),
194  _phase_2_thermal_conductivity(getParam<MooseFunctorName>("phase_2_thermal_conductivity_name")),
195  _use_external_mixture_properties(getParam<bool>("use_external_mixture_properties")),
196  _use_drift_flux(getParam<bool>("add_drift_flux_momentum_terms")),
197  _use_advection_slip(getParam<bool>("add_advection_slip_term"))
198 {
199  // Check that only one scalar was passed, as we are using vector parameters
200  if (_passive_scalar_names.size() > 1)
201  paramError("phase_fraction_name", "Only one phase fraction currently supported.");
202  if (_passive_scalar_inlet_functors.size() > 1)
203  paramError("phase_fraction_inlet_functors", "Only one phase fraction currently supported");
204 
205  // Retrieve the fluid energy equation if it exists
206  if (isParamValid("fluid_heat_transfer_physics"))
207  {
208  _fluid_energy_physics = getCoupledPhysics<WCNSFVFluidHeatTransferPhysics>(
209  getParam<PhysicsName>("fluid_heat_transfer_physics"), true);
210  // Check for a missing parameter / do not support isolated physics for now
211  if (!_fluid_energy_physics &&
212  !getCoupledPhysics<const WCNSFVFluidHeatTransferPhysics>(true).empty())
213  paramError(
214  "fluid_heat_transfer_physics",
215  "We currently do not support creating both a phase transport equation and fluid heat "
216  "transfer physics that are not coupled together");
218  _has_energy_equation = true;
219  else
220  _has_energy_equation = false;
221  }
222  else
223  {
224  _has_energy_equation = false;
225  _fluid_energy_physics = nullptr;
226  }
227 
228  // Check that the mixture parameters are correctly in use in the other physics
230  {
231  if (_fluid_energy_physics->densityName() != "rho_mixture")
232  mooseError("Density name should for Physics '",
234  "' should be 'rho_mixture'");
235  if (_fluid_energy_physics->getSpecificHeatName() != "cp_mixture")
236  mooseError("Specific heat name should for Physics '",
238  "' should be 'cp_mixture'");
239  }
241  {
242  if (_flow_equations_physics->densityName() != "rho_mixture")
243  mooseError("Density name should for Physics ,",
245  "' should be 'rho_mixture'");
246  }
247 
248  if (_verbose)
249  {
251  mooseInfoRepeated("Coupled to fluid flow physics " + _flow_equations_physics->name());
253  mooseInfoRepeated("Coupled to fluid heat transfer physics " + _fluid_energy_physics->name());
254  }
255 
256  // Parameter checking
257  // The two models are not consistent
258  if (isParamSetByUser("alpha_exchange") && getParam<bool>("add_phase_change_energy_term"))
259  paramError("alpha_exchange",
260  "A phase exchange coefficient cannot be specified if the phase change is handled "
261  "with a phase change heat loss model");
263  paramError("phase_1_fraction_name",
264  "First phase fraction name should be different from second phase fraction name");
266  paramError("add_drift_flux_momentum_terms",
267  "Drift flux model cannot be used at the same time as the advection slip model");
268  if (!getParam<bool>("add_drift_flux_momentum_terms"))
269  errorDependentParameter("add_drift_flux_momentum_terms", "true", {"density_interp_method"});
270  if (!getParam<bool>("use_dispersed_phase_drag_model"))
271  errorDependentParameter("use_dispersed_phase_drag_model", "true", {"particle_diameter"});
272 }
const WCNSFVFluidHeatTransferPhysics * _fluid_energy_physics
Fluid heat transfer physics.
WCNSFVScalarTransportPhysics(const InputParameters &parameters)
void mooseInfoRepeated(Args &&... args)
std::vector< NonlinearVariableName > _passive_scalar_names
Names of the passive scalar variables.
const bool _verbose
virtual const std::string & name() const
const MooseFunctorName _phase_2_fraction_name
Name of the second phase fraction (usually, dispersed or advected by the liquid)
const MooseFunctorName & densityName() const
Return the name of the density functor.
void errorDependentParameter(const std::string &param1, const std::string &value_not_set, const std::vector< std::string > &dependent_params) const
bool isParamValid(const std::string &name) const
std::vector< std::vector< MooseFunctorName > > _passive_scalar_inlet_functors
Functors describing the inlet boundary values. See passive_scalar_inlet_types for what the functors a...
const MooseFunctorName _phase_2_specific_heat
Name of the specific heat of the other phase.
const MooseFunctorName & getSpecificHeatName() const
Get the name of the specific heat material property.
const bool _use_advection_slip
Whether to add the advection slip term to each component of the momentum equation.
const MooseFunctorName _phase_2_thermal_conductivity
Name of the thermal conductivity of the other phase.
bool hasEnergyEquation() const
Whether the physics is actually creating the heat equation.
void paramError(const std::string &param, Args... args) const
const bool _use_external_mixture_properties
Whether to define the mixture model internally or use fluid properties instead.
bool isParamSetByUser(const std::string &nm) const
const MooseFunctorName _phase_1_density
Name of the density of the other phase.
const bool _add_phase_equation
Convenience boolean to keep track of whether the phase transport equation is requested.
const MooseFunctorName _phase_1_viscosity
Name of the dyanmic viscosity of the other phase.
const MooseFunctorName _phase_1_thermal_conductivity
Name of the thermal conductivity of the other phase.
void mooseError(Args &&... args) const
const InputParameters & parameters() const
const MooseFunctorName _phase_2_density
Name of the density of the other phase.
const bool _has_scalar_equation
A boolean to help compatibility with the old Modules/NavierStokesFV syntax or to deliberately skip ad...
const MooseFunctorName _phase_1_specific_heat
Name of the specific heat of the other phase.
const WCNSFVFlowPhysicsBase * _flow_equations_physics
Flow physics.
const MooseFunctorName _phase_2_viscosity
Name of the dynamic viscosity of the other phase.
const MooseFunctorName _phase_1_fraction_name
Name of the first phase fraction (usually, liquid)
bool _has_energy_equation
Convenience boolean to keep track of whether the fluid energy equation is present.
const bool _use_drift_flux
Whether to add the drift flux momentum terms to each component momentum equation. ...

Member Function Documentation

◆ addAdvectionSlipTerm()

void WCNSFVTwoPhaseMixturePhysics::addAdvectionSlipTerm ( )
private

Definition at line 355 of file WCNSFVTwoPhaseMixturePhysics.C.

Referenced by addFVKernels().

356 {
357  const std::vector<std::string> components = {"x", "y", "z"};
358  for (const auto dim : make_range(dimension()))
359  {
360  auto params = getFactory().getValidParams("WCNSFV2PMomentumAdvectionSlip");
361  assignBlocks(params, _blocks);
362  params.set<NonlinearVariableName>("variable") =
364  params.set<MooseFunctorName>("u_slip") = "vel_slip_x";
365  if (dimension() >= 2)
366  params.set<MooseFunctorName>("v_slip") = "vel_slip_y";
367  if (dimension() >= 3)
368  params.set<MooseFunctorName>("w_slip") = "vel_slip_z";
369  params.set<MooseFunctorName>(NS::density) = _phase_1_density;
370  params.set<MooseFunctorName>("rho_d") = _phase_2_density;
371  params.set<MooseFunctorName>("fraction_dispersed") = _phase_2_fraction_name;
372  params.set<MooseEnum>("momentum_component") = components[dim];
373  params.set<MooseEnum>("advected_interp_method") =
375  params.set<MooseEnum>("velocity_interp_method") =
377  params.set<UserObjectName>("rhie_chow_user_object") = _flow_equations_physics->rhieChowUOName();
379  "WCNSFV2PMomentumAdvectionSlip", prefix() + "advection_slip_" + components[dim], params);
380  }
381 }
std::string prefix() const
const std::vector< std::string > & getVelocityNames() const
To interface with other Physics.
void assignBlocks(InputParameters &params, const std::vector< SubdomainName > &blocks) const
Factory & getFactory()
unsigned int dim
static const std::string density
Definition: NS.h:33
InputParameters getValidParams(const std::string &name) const
const MooseFunctorName _phase_2_fraction_name
Name of the second phase fraction (usually, dispersed or advected by the liquid)
std::vector< SubdomainName > _blocks
unsigned int dimension() const
virtual FEProblemBase & getProblem()
const MooseEnum & getVelocityFaceInterpolationMethod() const
Get the face interpolation method for velocity.
virtual UserObjectName rhieChowUOName() const =0
Return the name of the Rhie Chow user object.
const MooseEnum & getMomentumFaceInterpolationMethod() const
Get the face interpolation method for momentum (mostly used in the stress terms)
const MooseFunctorName _phase_1_density
Name of the density of the other phase.
IntRange< T > make_range(T beg, T end)
const MooseFunctorName _phase_2_density
Name of the density of the other phase.
virtual void addFVKernel(const std::string &kernel_name, const std::string &name, InputParameters &parameters)
const WCNSFVFlowPhysicsBase * _flow_equations_physics
Flow physics.

◆ addFVBCs()

void WCNSFVScalarTransportPhysicsBase::addFVBCs ( )
overrideprotectedvirtualinherited

Reimplemented from PhysicsBase.

Definition at line 130 of file WCNSFVScalarTransportPhysicsBase.C.

131 {
132  // For compatibility with Modules/NavierStokesFV syntax
134  return;
135 
137  // There is typically no wall flux of passive scalars, similarly we rarely know
138  // their concentrations at the outlet at the beginning of the simulation
139  // TODO: we will know the outlet values in case of flow reversal. Implement scalar outlet
140  addScalarWallBC();
142 }
const bool _has_scalar_equation
A boolean to help compatibility with the old Modules/NavierStokesFV syntax or to deliberately skip ad...
virtual void addScalarInletBC()=0
Functions adding boundary conditions for the scalar conservation equations.
virtual void addScalarOutletBC()=0

◆ addFVKernels()

void WCNSFVTwoPhaseMixturePhysics::addFVKernels ( )
overrideprivatevirtual

Reimplemented from WCNSFVScalarTransportPhysicsBase.

Definition at line 275 of file WCNSFVTwoPhaseMixturePhysics.C.

276 {
278 
279  if (_add_phase_equation && isParamSetByUser("alpha_exchange"))
281 
283  getParam<bool>("add_phase_change_energy_term"))
285 
290 }
bool hasFlowEquations() const
Whether the physics is actually creating the flow equations.
const WCNSFVFluidHeatTransferPhysics * _fluid_energy_physics
Fluid heat transfer physics.
const bool _use_advection_slip
Whether to add the advection slip term to each component of the momentum equation.
bool hasEnergyEquation() const
Whether the physics is actually creating the heat equation.
bool isParamSetByUser(const std::string &nm) const
const bool _add_phase_equation
Convenience boolean to keep track of whether the phase transport equation is requested.
void addPhaseInterfaceTerm()
Functions adding kernels for the other physics.
const WCNSFVFlowPhysicsBase * _flow_equations_physics
Flow physics.
const bool _use_drift_flux
Whether to add the drift flux momentum terms to each component momentum equation. ...

◆ addMaterials()

void WCNSFVTwoPhaseMixturePhysics::addMaterials ( )
overrideprivatevirtual

Reimplemented from PhysicsBase.

Definition at line 384 of file WCNSFVTwoPhaseMixturePhysics.C.

385 {
386  // Add the phase fraction variable, for output purposes mostly
387  if (!getProblem().hasFunctor(_phase_1_fraction_name, /*thread_id=*/0))
388  {
389  auto params = getFactory().getValidParams("ADParsedFunctorMaterial");
390  assignBlocks(params, _blocks);
391  params.set<std::string>("expression") = "1 - " + _phase_2_fraction_name;
392  params.set<std::vector<std::string>>("functor_names") = {_phase_2_fraction_name};
393  params.set<std::string>("property_name") = _phase_1_fraction_name;
394  params.set<std::vector<std::string>>("output_properties") = {_phase_1_fraction_name};
395  params.set<std::vector<OutputName>>("outputs") = {"all"};
396  getProblem().addMaterial("ADParsedFunctorMaterial", prefix() + "phase_1_fraction", params);
397 
398  // One of the phase fraction should exist though (either as a variable or set by a
399  // NSLiquidFractionAux)
400  if (!getProblem().hasFunctor(_phase_2_fraction_name, /*thread_id=*/0))
401  paramError("Phase 2 fraction should be defined as a variable or auxiliary variable");
402  }
403  if (!getProblem().hasFunctor(_phase_2_fraction_name, /*thread_id=*/0))
404  {
405  auto params = getFactory().getValidParams("ADParsedFunctorMaterial");
406  assignBlocks(params, _blocks);
407  params.set<std::string>("expression") = "1 - " + _phase_1_fraction_name;
408  params.set<std::vector<std::string>>("functor_names") = {_phase_1_fraction_name};
409  params.set<std::string>("property_name") = _phase_2_fraction_name;
410  params.set<std::vector<std::string>>("output_properties") = {_phase_2_fraction_name};
411  params.set<std::vector<OutputName>>("outputs") = {"all"};
412  getProblem().addMaterial("ADParsedFunctorMaterial", prefix() + "phase_2_fraction", params);
413  }
414 
415  // Compute mixture properties
417  {
418  auto params = getFactory().getValidParams("NSFVMixtureFunctorMaterial");
419  assignBlocks(params, _blocks);
420  params.set<std::vector<MooseFunctorName>>("prop_names") = {
421  "rho_mixture", "mu_mixture", "cp_mixture", "k_mixture"};
422  // The phase_1 and phase_2 assignments are only local to this object.
423  // We use the phase 2 variable to save a functor evaluation as we expect
424  // the phase 2 variable to be a nonlinear variable in the phase transport equation
425  params.set<std::vector<MooseFunctorName>>("phase_2_names") = {_phase_1_density,
429  params.set<std::vector<MooseFunctorName>>("phase_1_names") = {_phase_2_density,
433  params.set<MooseFunctorName>("phase_1_fraction") = _phase_2_fraction_name;
434  if (getParam<bool>("output_all_properties"))
435  params.set<std::vector<OutputName>>("outputs") = {"all"};
436  getProblem().addMaterial("NSFVMixtureFunctorMaterial", prefix() + "mixture_material", params);
437  }
438 
439  // Compute slip terms as functors, used by the drift flux kernels
441  {
442  const std::vector<std::string> vel_components = {"u", "v", "w"};
443  const std::vector<std::string> components = {"x", "y", "z"};
444  for (const auto dim : make_range(dimension()))
445  {
446  auto params = getFactory().getValidParams("WCNSFV2PSlipVelocityFunctorMaterial");
447  assignBlocks(params, _blocks);
448  params.set<MooseFunctorName>("slip_velocity_name") = "vel_slip_" + components[dim];
449  params.set<MooseEnum>("momentum_component") = components[dim];
450  for (const auto j : make_range(dimension()))
451  params.set<std::vector<VariableName>>(vel_components[j]) = {
453  params.set<MooseFunctorName>(NS::density) = _phase_1_density;
454  params.set<MooseFunctorName>(NS::mu) = "mu_mixture";
455  params.set<MooseFunctorName>("rho_d") = _phase_2_density;
456  params.set<RealVectorValue>("gravity") = _flow_equations_physics->gravityVector();
457  if (isParamValid("slip_linear_friction_name"))
458  params.set<MooseFunctorName>("linear_coef_name") =
459  getParam<MooseFunctorName>("slip_linear_friction_name");
460  else if (getParam<bool>("use_dispersed_phase_drag_model"))
461  params.set<MooseFunctorName>("linear_coef_name") = "Darcy_coefficient";
462  else if (_flow_equations_physics)
463  {
465  params.set<MooseFunctorName>("linear_coef_name") =
467  else
468  params.set<MooseFunctorName>("linear_coef_name") = "0";
469  }
470  else
471  paramError("slip_linear_friction_name",
472  "WCNSFV2PSlipVelocityFunctorMaterial created by this Physics required a scalar "
473  "field linear friction factor.");
474  params.set<MooseFunctorName>("particle_diameter") =
475  getParam<MooseFunctorName>("particle_diameter");
476  if (getParam<bool>("output_all_properties"))
477  {
478  if (!isTransient())
479  params.set<std::vector<OutputName>>("outputs") = {"all"};
480  else
481  paramInfo("output_all_properties",
482  "Slip velocity functor material output currently unsupported in Physics "
483  "in transient conditions.");
484  }
486  "WCNSFV2PSlipVelocityFunctorMaterial", prefix() + "slip_" + components[dim], params);
487  }
488  }
489 
490  // Add a default drag model for a dispersed phase
491  if (getParam<bool>("use_dispersed_phase_drag_model"))
492  {
493  const std::vector<std::string> vel_components = {"u", "v", "w"};
494 
495  auto params = getFactory().getValidParams("NSFVDispersePhaseDragFunctorMaterial");
496  assignBlocks(params, _blocks);
497  params.set<MooseFunctorName>("drag_coef_name") = "Darcy_coefficient";
498  for (const auto j : make_range(dimension()))
499  params.set<MooseFunctorName>(vel_components[j]) = {
501  params.set<MooseFunctorName>(NS::density) = "rho_mixture";
502  params.set<MooseFunctorName>(NS::mu) = "mu_mixture";
503  params.set<MooseFunctorName>("particle_diameter") =
504  getParam<MooseFunctorName>("particle_diameter");
505  if (getParam<bool>("output_all_properties"))
506  params.set<std::vector<OutputName>>("outputs") = {"all"};
508  "NSFVDispersePhaseDragFunctorMaterial", prefix() + "dispersed_drag", params);
509  }
510 }
std::string prefix() const
const std::vector< std::string > & getVelocityNames() const
To interface with other Physics.
void assignBlocks(InputParameters &params, const std::vector< SubdomainName > &blocks) const
Factory & getFactory()
virtual void addMaterial(const std::string &material_name, const std::string &name, InputParameters &parameters)
static const std::string density
Definition: NS.h:33
InputParameters getValidParams(const std::string &name) const
virtual MooseFunctorName getLinearFrictionCoefName() const =0
Get the name of the linear friction coefficient. Returns an empty string if no friction.
const MooseFunctorName _phase_2_fraction_name
Name of the second phase fraction (usually, dispersed or advected by the liquid)
std::vector< SubdomainName > _blocks
unsigned int dimension() const
bool isParamValid(const std::string &name) const
const MooseFunctorName _phase_2_specific_heat
Name of the specific heat of the other phase.
virtual FEProblemBase & getProblem()
const bool _use_advection_slip
Whether to add the advection slip term to each component of the momentum equation.
RealVectorValue gravityVector() const
Return the gravity vector.
const MooseFunctorName _phase_2_thermal_conductivity
Name of the thermal conductivity of the other phase.
static const std::string mu
Definition: NS.h:123
void paramError(const std::string &param, Args... args) const
const bool _use_external_mixture_properties
Whether to define the mixture model internally or use fluid properties instead.
const MooseFunctorName _phase_1_density
Name of the density of the other phase.
const bool _add_phase_equation
Convenience boolean to keep track of whether the phase transport equation is requested.
const MooseFunctorName _phase_1_viscosity
Name of the dyanmic viscosity of the other phase.
IntRange< T > make_range(T beg, T end)
const MooseFunctorName _phase_1_thermal_conductivity
Name of the thermal conductivity of the other phase.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const MooseFunctorName _phase_2_density
Name of the density of the other phase.
const MooseFunctorName _phase_1_specific_heat
Name of the specific heat of the other phase.
void paramInfo(const std::string &param, Args... args) const
const WCNSFVFlowPhysicsBase * _flow_equations_physics
Flow physics.
const MooseFunctorName _phase_2_viscosity
Name of the dynamic viscosity of the other phase.
bool isTransient() const
const MooseFunctorName _phase_1_fraction_name
Name of the first phase fraction (usually, liquid)
const bool _use_drift_flux
Whether to add the drift flux momentum terms to each component momentum equation. ...

◆ addPhaseChangeEnergySource()

void WCNSFVTwoPhaseMixturePhysics::addPhaseChangeEnergySource ( )
private

Definition at line 314 of file WCNSFVTwoPhaseMixturePhysics.C.

Referenced by addFVKernels().

315 {
316  auto params = getFactory().getValidParams("NSFVPhaseChangeSource");
317  assignBlocks(params, _blocks);
318  params.set<NonlinearVariableName>("variable") = _fluid_energy_physics->getFluidTemperatureName();
319  params.set<MooseFunctorName>("liquid_fraction") = _phase_1_fraction_name;
320  params.set<MooseFunctorName>("L") = NS::latent_heat;
321  params.set<MooseFunctorName>(NS::density) = "rho_mixture";
322  params.set<MooseFunctorName>("T_solidus") = NS::T_solidus;
323  params.set<MooseFunctorName>("T_liquidus") = NS::T_liquidus;
324  getProblem().addFVKernel("NSFVPhaseChangeSource", prefix() + "phase_change_energy", params);
325 
326  // TODO add phase equation source term corresponding to this term
327 }
std::string prefix() const
void assignBlocks(InputParameters &params, const std::vector< SubdomainName > &blocks) const
const WCNSFVFluidHeatTransferPhysics * _fluid_energy_physics
Fluid heat transfer physics.
Factory & getFactory()
static const std::string density
Definition: NS.h:33
InputParameters getValidParams(const std::string &name) const
static const std::string T_liquidus
Definition: NS.h:148
std::vector< SubdomainName > _blocks
virtual FEProblemBase & getProblem()
const VariableName & getFluidTemperatureName() const
Get the name of the fluid temperature variable.
static const std::string latent_heat
Definition: NS.h:147
virtual void addFVKernel(const std::string &kernel_name, const std::string &name, InputParameters &parameters)
const MooseFunctorName _phase_1_fraction_name
Name of the first phase fraction (usually, liquid)
static const std::string T_solidus
Definition: NS.h:149

◆ addPhaseDriftFluxTerm()

void WCNSFVTwoPhaseMixturePhysics::addPhaseDriftFluxTerm ( )
private

Definition at line 330 of file WCNSFVTwoPhaseMixturePhysics.C.

Referenced by addFVKernels().

331 {
332  const std::vector<std::string> components = {"x", "y", "z"};
333  for (const auto dim : make_range(dimension()))
334  {
335  auto params = getFactory().getValidParams("WCNSFV2PMomentumDriftFlux");
336  assignBlocks(params, _blocks);
337  params.set<NonlinearVariableName>("variable") =
339  params.set<MooseFunctorName>("u_slip") = "vel_slip_x";
340  if (dimension() >= 2)
341  params.set<MooseFunctorName>("v_slip") = "vel_slip_y";
342  if (dimension() >= 3)
343  params.set<MooseFunctorName>("w_slip") = "vel_slip_z";
344  params.set<MooseFunctorName>("rho_d") = _phase_2_density;
345  params.set<MooseFunctorName>("fraction_dispersed") = _phase_2_fraction_name;
346  params.set<MooseEnum>("momentum_component") = components[dim];
347  params.set<MooseEnum>("density_interp_method") = getParam<MooseEnum>("density_interp_method");
348  params.set<UserObjectName>("rhie_chow_user_object") = _flow_equations_physics->rhieChowUOName();
350  "WCNSFV2PMomentumDriftFlux", prefix() + "drift_flux_" + components[dim], params);
351  }
352 }
std::string prefix() const
const std::vector< std::string > & getVelocityNames() const
To interface with other Physics.
void assignBlocks(InputParameters &params, const std::vector< SubdomainName > &blocks) const
Factory & getFactory()
unsigned int dim
InputParameters getValidParams(const std::string &name) const
const MooseFunctorName _phase_2_fraction_name
Name of the second phase fraction (usually, dispersed or advected by the liquid)
std::vector< SubdomainName > _blocks
unsigned int dimension() const
virtual FEProblemBase & getProblem()
virtual UserObjectName rhieChowUOName() const =0
Return the name of the Rhie Chow user object.
IntRange< T > make_range(T beg, T end)
const MooseFunctorName _phase_2_density
Name of the density of the other phase.
virtual void addFVKernel(const std::string &kernel_name, const std::string &name, InputParameters &parameters)
const WCNSFVFlowPhysicsBase * _flow_equations_physics
Flow physics.

◆ addPhaseInterfaceTerm()

void WCNSFVTwoPhaseMixturePhysics::addPhaseInterfaceTerm ( )
private

Functions adding kernels for the other physics.

Definition at line 303 of file WCNSFVTwoPhaseMixturePhysics.C.

Referenced by addFVKernels().

304 {
305  auto params = getFactory().getValidParams("NSFVMixturePhaseInterface");
306  assignBlocks(params, _blocks);
307  params.set<NonlinearVariableName>("variable") = _phase_2_fraction_name;
308  params.set<MooseFunctorName>("phase_coupled") = _phase_1_fraction_name;
309  params.set<MooseFunctorName>("alpha") = getParam<MooseFunctorName>(NS::alpha_exchange);
310  getProblem().addFVKernel("NSFVMixturePhaseInterface", prefix() + "phase_interface", params);
311 }
std::string prefix() const
void assignBlocks(InputParameters &params, const std::vector< SubdomainName > &blocks) const
Factory & getFactory()
InputParameters getValidParams(const std::string &name) const
const MooseFunctorName _phase_2_fraction_name
Name of the second phase fraction (usually, dispersed or advected by the liquid)
std::vector< SubdomainName > _blocks
virtual FEProblemBase & getProblem()
static const std::string alpha_exchange
Definition: NS.h:150
virtual void addFVKernel(const std::string &kernel_name, const std::string &name, InputParameters &parameters)
const MooseFunctorName _phase_1_fraction_name
Name of the first phase fraction (usually, liquid)

◆ commonMixtureParams()

InputParameters WCNSFVTwoPhaseMixturePhysics::commonMixtureParams ( )
static

Definition at line 45 of file WCNSFVTwoPhaseMixturePhysics.C.

Referenced by validParams(), and WCNSLinearFVTwoPhaseMixturePhysics::validParams().

46 {
48 
49  params.addParam<bool>(
50  "use_external_mixture_properties",
51  false,
52  "Whether to use the simple NSFVMixtureFunctorMaterial or use a more complex model "
53  "defined outside of the Physics");
54  params.addParam<bool>("output_all_properties",
55  false,
56  "Whether to output every functor material property defined to Exodus");
57 
58  // Phase change parameters
59  params.addParam<MooseFunctorName>(
60  NS::alpha_exchange, 0, "Name of the volumetric phase exchange coefficient");
61  params.addParam<bool>("add_phase_change_energy_term",
62  false,
63  "Whether to add a phase change term based on the latent heat of fusion in "
64  "the energy equation");
65 
66  // Drift flux model parameters
67  params.addParam<bool>("add_drift_flux_momentum_terms",
68  false,
69  "Whether to add the drift flux terms to the momentum equation");
70  MooseEnum coeff_interp_method("average harmonic", "harmonic");
71  params.addParam<MooseEnum>("density_interp_method",
72  coeff_interp_method,
73  "Face interpolation method for the density in the drift flux term.");
74  params.addParam<bool>(
75  "add_advection_slip_term", false, "Whether to use the advection-slip model");
76  params.addParam<MooseFunctorName>(
77  "slip_linear_friction_name",
78  "Name of the functor providing the scalar linear friction coefficient");
79 
80  // Properties of the first phase (can be a liquid or a gas)
81  params.addRequiredParam<MooseFunctorName>(
82  "phase_1_fraction_name",
83  "Name of the first phase fraction variable, it will be created as a functor material "
84  "property if it does not exist already.");
85  params.addRequiredParam<MooseFunctorName>("phase_1_density_name",
86  "Name of the density functor for phase 1");
87  params.addRequiredParam<MooseFunctorName>("phase_1_viscosity_name",
88  "Name of the viscosity functor for phase 1");
89  params.addRequiredParam<MooseFunctorName>("phase_1_specific_heat_name",
90  "Name of the specific heat functor for phase 1");
91  params.addRequiredParam<MooseFunctorName>("phase_1_thermal_conductivity_name",
92  "Name of the thermal conductivity functor for phase 1");
93 
94  // Properties of phase 2 (can be solid, another liquid, or gaseous)
95  params.addRequiredParam<MooseFunctorName>("phase_2_density_name",
96  "Name of the density functor for phase 2");
97  params.addRequiredParam<MooseFunctorName>("phase_2_viscosity_name",
98  "Name of the viscosity functor for phase 2");
99  params.addRequiredParam<MooseFunctorName>("phase_2_specific_heat_name",
100  "Name of the specific heat functor for phase 2");
101  params.addRequiredParam<MooseFunctorName>("phase_2_thermal_conductivity_name",
102  "Name of the thermal conductivity functor for phase 2");
103 
104  // Dispersed phase properties
105  params.addParam<MooseFunctorName>(
106  "particle_diameter", 1, "Particle size if using a dispersed phase");
107  params.addParam<bool>("use_dispersed_phase_drag_model",
108  false,
109  "Adds a linear friction term with the dispersed phase drag model");
110 
111  // Parameter groups
112  params.addParamNamesToGroup("phase_1_density_name phase_1_viscosity_name "
113  "phase_1_specific_heat_name phase_1_thermal_conductivity_name "
114  "phase_2_density_name phase_2_viscosity_name "
115  "phase_2_specific_heat_name phase_2_thermal_conductivity_name "
116  "use_external_mixture_properties",
117  "Mixture material properties");
118 
119  params.addParamNamesToGroup("slip_linear_friction_name use_dispersed_phase_drag_model",
120  "Friction model");
121  params.addParamNamesToGroup(NS::alpha_exchange + " add_phase_change_energy_term", "Phase change");
122  params.addParamNamesToGroup("add_drift_flux_momentum_terms density_interp_method",
123  "Drift flux model");
124  params.addParamNamesToGroup("add_advection_slip_term", "Advection slip model");
125  return params;
126 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
InputParameters emptyInputParameters()
static const std::string alpha_exchange
Definition: NS.h:150
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)

◆ densityName()

const MooseFunctorName& WCNSFVCoupledAdvectionPhysicsHelper::densityName ( ) const
inlineinherited

◆ dynamicViscosityName()

const MooseFunctorName& WCNSFVCoupledAdvectionPhysicsHelper::dynamicViscosityName ( ) const
inlineinherited

Definition at line 37 of file WCNSFVCoupledAdvectionPhysicsHelper.h.

37 { return _dynamic_viscosity_name; }
const MooseFunctorName _dynamic_viscosity_name
Name of the dynamic viscosity material property.

◆ getAdditionalRMParams()

InputParameters NavierStokesPhysicsBase::getAdditionalRMParams ( ) const
overrideprotectedvirtualinherited

Parameters to change or add relationship managers.

Reimplemented from PhysicsBase.

Definition at line 42 of file NavierStokesPhysicsBase.C.

43 {
44  unsigned short necessary_layers = getParam<unsigned short>("ghost_layers");
45  necessary_layers = std::max(necessary_layers, getNumberAlgebraicGhostingLayersNeeded());
46 
47  // Just an object that has a ghost_layers parameter
48  const std::string kernel_type = "INSFVMixingLengthReynoldsStress";
49  InputParameters params = getFactory().getValidParams(kernel_type);
50  params.template set<unsigned short>("ghost_layers") = necessary_layers;
51 
52  return params;
53 }
Factory & getFactory()
InputParameters getValidParams(const std::string &name) const
virtual unsigned short getNumberAlgebraicGhostingLayersNeeded() const =0
Return the number of ghosting layers needed.

◆ getAdvectedScalarNames()

const std::vector<NonlinearVariableName>& WCNSFVScalarTransportPhysicsBase::getAdvectedScalarNames ( ) const
inlineinherited

Get the names of the advected scalar quantity variables.

Definition at line 33 of file WCNSFVScalarTransportPhysicsBase.h.

Referenced by WCNSFVTurbulencePhysics::addScalarAdvectionTurbulenceKernels().

34  {
35  return _passive_scalar_names;
36  }
std::vector< NonlinearVariableName > _passive_scalar_names
Names of the passive scalar variables.

◆ getCoupledFlowPhysics()

const WCNSFVFlowPhysicsBase * WCNSFVCoupledAdvectionPhysicsHelper::getCoupledFlowPhysics ( ) const
inherited

Definition at line 53 of file WCNSFVCoupledAdvectionPhysicsHelper.C.

54 {
55  // User passed it, just use that
56  if (_advection_physics->isParamValid("coupled_flow_physics"))
58  _advection_physics->getParam<PhysicsName>("coupled_flow_physics"));
59  // Look for any physics of the right type, and check the block restriction
60  else
61  {
62  const auto all_flow_physics =
64  for (const auto physics : all_flow_physics)
66  physics->name(), physics->blocks(), /*error_if_not_identical=*/false))
67  {
68  return physics;
69  }
70  }
71  mooseError("No coupled flow Physics found of type derived from 'WCNSFVFlowPhysicsBase'. Use the "
72  "'coupled_flow_physics' parameter to give the name of the desired "
73  "WCNSFVFlowPhysicsBase-derived Physics to couple with");
74 }
void mooseError(Args &&... args)
const T * getCoupledPhysics(const PhysicsName &phys_name, const bool allow_fail=false) const
bool isParamValid(const std::string &name) const
Base class for Physics which create the Navier Stokes flow equations.
const T & getParam(const std::string &name) const
bool checkBlockRestrictionIdentical(const std::string &object_name, const std::vector< SubdomainName > &blocks, const bool error_if_not_identical=true) const
const NavierStokesPhysicsBase * _advection_physics
The Physics class using this helper.

◆ getCoupledTurbulencePhysics()

const WCNSFVTurbulencePhysics * WCNSFVCoupledAdvectionPhysicsHelper::getCoupledTurbulencePhysics ( ) const
inherited

Definition at line 77 of file WCNSFVCoupledAdvectionPhysicsHelper.C.

Referenced by WCNSFVFluidHeatTransferPhysicsBase::actOnAdditionalTasks().

78 {
79  // User passed it, just use that
80  if (_advection_physics->isParamValid("coupled_turbulence_physics"))
82  _advection_physics->getParam<PhysicsName>("coupled_turbulence_physics"));
83  // Look for any physics of the right type, and check the block restriction
84  else
85  {
86  const auto all_turbulence_physics =
88  for (const auto physics : all_turbulence_physics)
90  physics->name(), physics->blocks(), /*error_if_not_identical=*/false))
91  return physics;
92  }
93  // Did not find one
94  return nullptr;
95 }
Creates all the objects needed to add a turbulence model to an incompressible / weakly-compressible N...
const T * getCoupledPhysics(const PhysicsName &phys_name, const bool allow_fail=false) const
bool isParamValid(const std::string &name) const
const T & getParam(const std::string &name) const
bool checkBlockRestrictionIdentical(const std::string &object_name, const std::vector< SubdomainName > &blocks, const bool error_if_not_identical=true) const
const NavierStokesPhysicsBase * _advection_physics
The Physics class using this helper.

◆ getPorosityFunctorName()

MooseFunctorName WCNSFVCoupledAdvectionPhysicsHelper::getPorosityFunctorName ( bool  smoothed) const
inherited

Return the porosity functor name.

It is important to forward to the Physics so we do not get the smoothing status wrong

Definition at line 47 of file WCNSFVCoupledAdvectionPhysicsHelper.C.

48 {
50 }
MooseFunctorName getPorosityFunctorName(const bool smoothed) const
const WCNSFVFlowPhysicsBase * _flow_equations_physics
Flow physics.

◆ hasScalarEquations()

bool WCNSFVScalarTransportPhysicsBase::hasScalarEquations ( ) const
inlineinherited

Whether the physics is actually creating the scalar advection equations.

Definition at line 39 of file WCNSFVScalarTransportPhysicsBase.h.

Referenced by WCNSFVTurbulencePhysics::retrieveCoupledPhysics().

39 { return _has_scalar_equation; }
const bool _has_scalar_equation
A boolean to help compatibility with the old Modules/NavierStokesFV syntax or to deliberately skip ad...

◆ renamePassiveScalarToMixtureParams()

void WCNSFVTwoPhaseMixturePhysics::renamePassiveScalarToMixtureParams ( InputParameters params)
static

Definition at line 129 of file WCNSFVTwoPhaseMixturePhysics.C.

Referenced by validParams(), and WCNSLinearFVTwoPhaseMixturePhysics::validParams().

130 {
131  // It can be useful to define the mixture materials with a fixed phase fraction instead
132  // of solving the equations
133  params.addParam<bool>("add_scalar_equation", true, "");
134  params.renameParam("add_scalar_equation",
135  "add_phase_transport_equation",
136  "Whether to add the phase transport equation.");
137 
138  params.renameParam("initial_scalar_variables",
139  "initial_phase_fraction",
140  "Initial value of the main phase fraction variable");
141  params.renameParam("passive_scalar_diffusivity",
142  "phase_fraction_diffusivity",
143  "Functor names for the diffusivities used for the main phase fraction.");
144 
145  params.renameParam("passive_scalar_names",
146  "phase_2_fraction_name",
147  "Name of the second phase fraction variable (can be a dispersed phase)");
148 
149  // Not applicable currently
150  params.suppressParameter<std::vector<MooseFunctorName>>("passive_scalar_source");
151  params.suppressParameter<std::vector<std::vector<MooseFunctorName>>>(
152  "passive_scalar_coupled_source");
153  params.suppressParameter<std::vector<std::vector<Real>>>("passive_scalar_coupled_source_coeff");
154 
155  // Boundary conditions
156  params.renameParam("passive_scalar_inlet_types",
157  "phase_fraction_inlet_type",
158  "Types for the inlet boundary for the phase fraction.");
159  params.renameParam("passive_scalar_inlet_functors",
160  "phase_fraction_inlet_functors",
161  "Functors describing the inlet phase fraction boundary condition.");
162 
163  // Spatial finite volume discretization scheme
164  params.renameParam("passive_scalar_advection_interpolation",
165  "phase_advection_interpolation",
166  "The numerical scheme to use for interpolating the phase fraction variable, "
167  "as an advected quantity, to the face.");
168  params.renameParam(
169  "passive_scalar_two_term_bc_expansion",
170  "phase_two_term_bc_expansion",
171  "If a two-term Taylor expansion is needed for the determination of the boundary values"
172  "of the phase fraction.");
173 
174  // Numerical system parameters
175  params.renameParam("passive_scalar_scaling",
176  "phase_scaling",
177  "The scaling factor for the phase transport equation");
178 
179  params.renameParameterGroup("Passive scalar control", "Mixture transport control");
180 }
void renameParam(const std::string &old_name, const std::string &new_name, const std::string &new_docstring)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void renameParameterGroup(const std::string &old_name, const std::string &new_name)
void suppressParameter(const std::string &name)

◆ setSlipVelocityParams()

void WCNSFVTwoPhaseMixturePhysics::setSlipVelocityParams ( InputParameters params) const
overrideprivatevirtual

Adds the slip velocity parameters.

Reimplemented from WCNSFVScalarTransportPhysicsBase.

Definition at line 293 of file WCNSFVTwoPhaseMixturePhysics.C.

294 {
295  params.set<MooseFunctorName>("u_slip") = "vel_slip_x";
296  if (dimension() >= 2)
297  params.set<MooseFunctorName>("v_slip") = "vel_slip_y";
298  if (dimension() >= 3)
299  params.set<MooseFunctorName>("w_slip") = "vel_slip_z";
300 }
T & set(const std::string &name, bool quiet_mode=false)
unsigned int dimension() const

◆ usingNavierStokesFVSyntax()

bool NavierStokesPhysicsBase::usingNavierStokesFVSyntax ( ) const
inlineprotectedinherited

Detects if we are using the new Physics syntax or the old NavierStokesFV action.

Definition at line 32 of file NavierStokesPhysicsBase.h.

33  {
34  return (parameters().get<std::string>("registered_identifier") == "Modules/NavierStokesFV");
35  }
const InputParameters & parameters() const

◆ validParams()

InputParameters WCNSFVTwoPhaseMixturePhysics::validParams ( )
static

Definition at line 19 of file WCNSFVTwoPhaseMixturePhysics.C.

20 {
22 
23  // First rename the parameters from passive scalar to mixture
25  params.renameParam("passive_scalar_face_interpolation",
26  "phase_face_interpolation",
27  "The numerical scheme to interpolate the phase fraction variable to the "
28  "face (separate from the advected quantity interpolation)");
29 
30  // Then add parameters specific to mixtures
31  // The flow physics is obtained from the scalar transport base class
32  // The fluid heat transfer physics is retrieved even if unspecified
33  params.addParam<PhysicsName>(
34  "fluid_heat_transfer_physics",
35  "NavierStokesFV",
36  "WCNSFVFluidHeatTransferPhysics generating the fluid energy equation");
37  params += commonMixtureParams();
38  params.addParamNamesToGroup("fluid_heat_transfer_physics", "Phase change");
39  params.addClassDescription("Define the additional terms for a mixture model for the two phase "
40  "weakly-compressible Navier Stokes equations");
41  return params;
42 }
void renameParam(const std::string &old_name, const std::string &new_name, const std::string &new_docstring)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static InputParameters commonMixtureParams()
static void renamePassiveScalarToMixtureParams(InputParameters &params)

Member Data Documentation

◆ _add_phase_equation

const bool WCNSFVTwoPhaseMixturePhysics::_add_phase_equation
private

Convenience boolean to keep track of whether the phase transport equation is requested.

Definition at line 49 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addFVKernels(), and addMaterials().

◆ _advection_physics

const NavierStokesPhysicsBase* WCNSFVCoupledAdvectionPhysicsHelper::_advection_physics
protectedinherited

◆ _compressibility

const MooseEnum WCNSFVCoupledAdvectionPhysicsHelper::_compressibility
protectedinherited

Compressibility type, can be compressible, incompressible or weakly-compressible.

Definition at line 48 of file WCNSFVCoupledAdvectionPhysicsHelper.h.

Referenced by WCNSFVFluidHeatTransferPhysics::addEnergyTimeKernels().

◆ _define_variables

bool NavierStokesPhysicsBase::_define_variables
protectedinherited

◆ _density_name

const MooseFunctorName WCNSFVCoupledAdvectionPhysicsHelper::_density_name
protectedinherited

◆ _dynamic_viscosity_name

const MooseFunctorName WCNSFVCoupledAdvectionPhysicsHelper::_dynamic_viscosity_name
protectedinherited

◆ _flow_equations_physics

const WCNSFVFlowPhysicsBase* WCNSFVCoupledAdvectionPhysicsHelper::_flow_equations_physics
protectedinherited

Flow physics.

Definition at line 43 of file WCNSFVCoupledAdvectionPhysicsHelper.h.

Referenced by addAdvectionSlipTerm(), WCNSFVTurbulencePhysics::addAuxiliaryKernels(), WCNSFVFluidHeatTransferPhysics::addEnergyAdvectionKernels(), WCNSLinearFVFluidHeatTransferPhysics::addEnergyAdvectionKernels(), WCNSFVFluidHeatTransferPhysics::addEnergyHeatConductionKernels(), WCNSFVFluidHeatTransferPhysics::addEnergyInletBC(), WCNSLinearFVFluidHeatTransferPhysics::addEnergyInletBC(), WCNSLinearFVFluidHeatTransferPhysics::addEnergyOutletBC(), WCNSFVFluidHeatTransferPhysics::addEnergySeparatorBC(), WCNSFVFluidHeatTransferPhysics::addEnergyTimeKernels(), WCNSLinearFVFluidHeatTransferPhysics::addEnergyWallBC(), WCNSFVFluidHeatTransferPhysics::addEnergyWallBC(), WCNSFVTurbulencePhysics::addFlowTurbulenceKernels(), WCNSFVTurbulencePhysics::addFluidEnergyTurbulenceKernels(), WCNSFVTurbulencePhysics::addFVBCs(), WCNSLinearFVTwoPhaseMixturePhysics::addFVKernels(), addFVKernels(), WCNSFVTurbulencePhysics::addInitialConditions(), WCNSFVTurbulencePhysics::addKEpsilonAdvection(), WCNSFVTurbulencePhysics::addKEpsilonDiffusion(), WCNSFVTurbulencePhysics::addKEpsilonSink(), WCNSLinearFVTwoPhaseMixturePhysics::addMaterials(), addMaterials(), WCNSFVTurbulencePhysics::addMaterials(), WCNSFVFluidHeatTransferPhysicsBase::addMaterials(), WCNSLinearFVTwoPhaseMixturePhysics::addPhaseDriftFluxTerm(), addPhaseDriftFluxTerm(), WCNSLinearFVScalarTransportPhysics::addScalarAdvectionKernels(), WCNSFVScalarTransportPhysics::addScalarAdvectionKernels(), WCNSLinearFVScalarTransportPhysics::addScalarInletBC(), WCNSFVScalarTransportPhysics::addScalarInletBC(), WCNSLinearFVScalarTransportPhysics::addScalarOutletBC(), WCNSLinearFVTwoPhaseMixturePhysics::checkIntegrity(), WCNSFVTurbulencePhysics::getNumberAlgebraicGhostingLayersNeeded(), WCNSFVFluidHeatTransferPhysicsBase::getNumberAlgebraicGhostingLayersNeeded(), WCNSFVScalarTransportPhysicsBase::getNumberAlgebraicGhostingLayersNeeded(), WCNSFVCoupledAdvectionPhysicsHelper::getPorosityFunctorName(), WCNSFVTurbulencePhysics::retrieveCoupledPhysics(), WCNSFVFluidHeatTransferPhysicsBase::WCNSFVFluidHeatTransferPhysicsBase(), WCNSFVTwoPhaseMixturePhysics(), WCNSLinearFVScalarTransportPhysics::WCNSLinearFVScalarTransportPhysics(), and WCNSLinearFVTwoPhaseMixturePhysics::WCNSLinearFVTwoPhaseMixturePhysics().

◆ _fluid_energy_physics

const WCNSFVFluidHeatTransferPhysics* WCNSFVTwoPhaseMixturePhysics::_fluid_energy_physics
private

Fluid heat transfer physics.

Definition at line 46 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addFVKernels(), addPhaseChangeEnergySource(), and WCNSFVTwoPhaseMixturePhysics().

◆ _has_energy_equation

bool WCNSFVTwoPhaseMixturePhysics::_has_energy_equation
private

Convenience boolean to keep track of whether the fluid energy equation is present.

Definition at line 51 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by WCNSFVTwoPhaseMixturePhysics().

◆ _has_scalar_equation

const bool WCNSFVScalarTransportPhysicsBase::_has_scalar_equation
protectedinherited

◆ _passive_scalar_coupled_sources

std::vector<std::vector<MooseFunctorName> > WCNSFVScalarTransportPhysicsBase::_passive_scalar_coupled_sources
protectedinherited

Functors for the passive scalar (coupled) sources. Inner indexing is scalar variable index.

Definition at line 60 of file WCNSFVScalarTransportPhysicsBase.h.

Referenced by WCNSFVScalarTransportPhysicsBase::addFVKernels(), WCNSLinearFVScalarTransportPhysics::addScalarSourceKernels(), and WCNSFVScalarTransportPhysics::addScalarSourceKernels().

◆ _passive_scalar_inlet_functors

std::vector<std::vector<MooseFunctorName> > WCNSFVScalarTransportPhysicsBase::_passive_scalar_inlet_functors
protectedinherited

◆ _passive_scalar_inlet_types

MultiMooseEnum WCNSFVScalarTransportPhysicsBase::_passive_scalar_inlet_types
protectedinherited

◆ _passive_scalar_names

std::vector<NonlinearVariableName> WCNSFVScalarTransportPhysicsBase::_passive_scalar_names
protectedinherited

◆ _passive_scalar_sources

std::vector<MooseFunctorName> WCNSFVScalarTransportPhysicsBase::_passive_scalar_sources
protectedinherited

◆ _passive_scalar_sources_coef

std::vector<std::vector<Real> > WCNSFVScalarTransportPhysicsBase::_passive_scalar_sources_coef
protectedinherited

Coefficients multiplying for the passive scalar sources. Inner indexing is scalar variable index.

Definition at line 62 of file WCNSFVScalarTransportPhysicsBase.h.

Referenced by WCNSLinearFVScalarTransportPhysics::addScalarSourceKernels(), WCNSFVScalarTransportPhysics::addScalarSourceKernels(), and WCNSFVScalarTransportPhysicsBase::WCNSFVScalarTransportPhysicsBase().

◆ _phase_1_density

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_1_density
private

Name of the density of the other phase.

Definition at line 59 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addAdvectionSlipTerm(), and addMaterials().

◆ _phase_1_fraction_name

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_1_fraction_name
private

Name of the first phase fraction (usually, liquid)

Definition at line 54 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials(), addPhaseChangeEnergySource(), addPhaseInterfaceTerm(), and WCNSFVTwoPhaseMixturePhysics().

◆ _phase_1_specific_heat

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_1_specific_heat
private

Name of the specific heat of the other phase.

Definition at line 63 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials().

◆ _phase_1_thermal_conductivity

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_1_thermal_conductivity
private

Name of the thermal conductivity of the other phase.

Definition at line 65 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials().

◆ _phase_1_viscosity

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_1_viscosity
private

Name of the dyanmic viscosity of the other phase.

Definition at line 61 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials().

◆ _phase_2_density

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_2_density
private

Name of the density of the other phase.

Definition at line 68 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addAdvectionSlipTerm(), addMaterials(), and addPhaseDriftFluxTerm().

◆ _phase_2_fraction_name

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_2_fraction_name
private

Name of the second phase fraction (usually, dispersed or advected by the liquid)

Definition at line 56 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addAdvectionSlipTerm(), addMaterials(), addPhaseDriftFluxTerm(), addPhaseInterfaceTerm(), and WCNSFVTwoPhaseMixturePhysics().

◆ _phase_2_specific_heat

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_2_specific_heat
private

Name of the specific heat of the other phase.

Definition at line 72 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials().

◆ _phase_2_thermal_conductivity

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_2_thermal_conductivity
private

Name of the thermal conductivity of the other phase.

Definition at line 74 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials().

◆ _phase_2_viscosity

const MooseFunctorName WCNSFVTwoPhaseMixturePhysics::_phase_2_viscosity
private

Name of the dynamic viscosity of the other phase.

Definition at line 70 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials().

◆ _porous_medium_treatment

const bool WCNSFVCoupledAdvectionPhysicsHelper::_porous_medium_treatment
protectedinherited

◆ _pressure_name

const NonlinearVariableName WCNSFVCoupledAdvectionPhysicsHelper::_pressure_name
protectedinherited

Pressure name.

Definition at line 56 of file WCNSFVCoupledAdvectionPhysicsHelper.h.

◆ _turbulence_physics

const WCNSFVTurbulencePhysics* WCNSFVCoupledAdvectionPhysicsHelper::_turbulence_physics
protectedinherited

◆ _use_advection_slip

const bool WCNSFVTwoPhaseMixturePhysics::_use_advection_slip
private

Whether to add the advection slip term to each component of the momentum equation.

Definition at line 82 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addFVKernels(), addMaterials(), and WCNSFVTwoPhaseMixturePhysics().

◆ _use_drift_flux

const bool WCNSFVTwoPhaseMixturePhysics::_use_drift_flux
private

Whether to add the drift flux momentum terms to each component momentum equation.

Definition at line 80 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addFVKernels(), addMaterials(), and WCNSFVTwoPhaseMixturePhysics().

◆ _use_external_mixture_properties

const bool WCNSFVTwoPhaseMixturePhysics::_use_external_mixture_properties
private

Whether to define the mixture model internally or use fluid properties instead.

Definition at line 77 of file WCNSFVTwoPhaseMixturePhysics.h.

Referenced by addMaterials().

◆ _velocity_interpolation

const MooseEnum WCNSFVCoupledAdvectionPhysicsHelper::_velocity_interpolation
protectedinherited

The velocity / momentum face interpolation method for advecting other quantities.

Definition at line 64 of file WCNSFVCoupledAdvectionPhysicsHelper.h.

Referenced by WCNSFVFluidHeatTransferPhysics::addEnergyAdvectionKernels(), WCNSFVTurbulencePhysics::addKEpsilonAdvection(), and WCNSFVScalarTransportPhysics::addScalarAdvectionKernels().

◆ _velocity_names

const std::vector<std::string> WCNSFVCoupledAdvectionPhysicsHelper::_velocity_names
protectedinherited

The documentation for this class was generated from the following files: