INSFVRhieChowInterpolator

Computes the Rhie-Chow velocity based on gathered 'a' coefficient data.

Overview

This object coordinates everything about an incompressible Navier-Stokes finite volume (INSFV) simulation related to Rhie-Chow. This object performs the following activities

  • Loops through all momentum residual objects and gathers information related to

  • aa coefficients: these are the coefficients that multiply the on-diagonal/current-cell velocity solution in a linearized writing of the momentum equation

  • Computes the Rhie-Chow velocity according to Eq. (1) when requested by advection kernels or postprocessors

vf=vfDf(pfpf) \bm{v}_f = \overline{\bm{v}_f} - \overline{\bm{D}_f}\left(\nabla p_f - \overline{\nabla p_f}\right)(1)

Accessing 'a' coefficient data in nonstandard locations

If you ever come across an error like

Attempted access into CellCenteredMapFunctor 'a' with a key that does not yet
exist in the map. Make sure to fill your CellCenteredMapFunctor for all elements
you will attempt to access later.

then it means an object you're using in your input file is attempting to access Rhie-Chow data in unexpected locations. This can potentially be remedied by setting the parameter pull_all_nonlocal_a = true. This will tell all processes to pull 'a' coefficient data for all elements they have access to (which may not be all the elements in the mesh if the mesh is distributed) from the processes that own the 'a' coefficient data.

Correcting for non-velocity-dependent volume forces

The standard Rhie-Chow interpolation may introduce oscillatory errors in the velocity field under block-localized volume forces that do not depend on velocity, e.g., a pump force.

The user can activate the correction for body forces by setting correct_volumetric_force = true. Then, the list of the names of the functors representing the body forces must be defined under the volumetric_force_functors parameter. Finally, the user can select two possible methods for correcting for volume force under the volume_force_correction_method parameter:

  • pressure-consistent, which deactivates the Rhie-Chow correaction on faces in which the pressure correction is inconsistent due to the volume forces

  • force-consistent, which deactivates the Rhie-Chow correction in the regions with localized volume forces since the pressure-velocity system is already linked by the volume force in these regions.

The latter method is the default and is generally preferred due to its lower computational cost.

Input Parameters

  • pressureThe pressure variable.

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The pressure variable.

  • uThe x-component of velocity

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The x-component of velocity

Required Parameters

  • a_uFor simulations in which the advecting velocities are aux variables, this parameter must be supplied. It represents the on-diagonal coefficients for the 'x' component velocity, solved via the Navier-Stokes equations. A functor is any of the following: a variable, a functor material property, a function, a post-processor, or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:For simulations in which the advecting velocities are aux variables, this parameter must be supplied. It represents the on-diagonal coefficients for the 'x' component velocity, solved via the Navier-Stokes equations. A functor is any of the following: a variable, a functor material property, a function, a post-processor, or a number.

  • a_vFor simulations in which the advecting velocities are aux variables, this parameter must be supplied when the mesh dimension is greater than 1. It represents the on-diagonal coefficients for the 'y' component velocity, solved via the Navier-Stokes equations. A functor is any of the following: a variable, a functor material property, a function, a post-processor, or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:For simulations in which the advecting velocities are aux variables, this parameter must be supplied when the mesh dimension is greater than 1. It represents the on-diagonal coefficients for the 'y' component velocity, solved via the Navier-Stokes equations. A functor is any of the following: a variable, a functor material property, a function, a post-processor, or a number.

  • a_wFor simulations in which the advecting velocities are aux variables, this parameter must be supplied when the mesh dimension is greater than 2. It represents the on-diagonal coefficients for the 'z' component velocity, solved via the Navier-Stokes equations. A functor is any of the following: a variable, a functor material property, a function, a post-processor, or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:For simulations in which the advecting velocities are aux variables, this parameter must be supplied when the mesh dimension is greater than 2. It represents the on-diagonal coefficients for the 'z' component velocity, solved via the Navier-Stokes equations. A functor is any of the following: a variable, a functor material property, a function, a post-processor, or a number.

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • correct_volumetric_forceFalseFlag to activate volume force corrections.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Flag to activate volume force corrections.

  • disp_xThe x-component of displacement

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The x-component of displacement

  • disp_yThe y-component of displacement

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The y-component of displacement

  • disp_zThe z-component of displacement

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The z-component of displacement

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

  • vThe y-component of velocity

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The y-component of velocity

  • velocity_interp_methodrcThe interpolation to use for the velocity. Options are 'average' and 'rc' which stands for Rhie-Chow. The default is Rhie-Chow.

    Default:rc

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:average, rc

    Controllable:No

    Description:The interpolation to use for the velocity. Options are 'average' and 'rc' which stands for Rhie-Chow. The default is Rhie-Chow.

  • volume_force_correction_methodforce-consistentThe method used for correcting the Rhie-Chow coefficients for a volume force.

    Default:force-consistent

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:force-consistent, pressure-consistent

    Controllable:No

    Description:The method used for correcting the Rhie-Chow coefficients for a volume force.

  • volumetric_force_functorsThe names of the functors with the volumetric force sources.

    C++ Type:std::vector<MooseFunctorName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The names of the functors with the volumetric force sources.

  • wThe z-component of velocity

    C++ Type:VariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The z-component of velocity

Optional Parameters

  • absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution

    C++ Type:std::vector<TagName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution

  • extra_matrix_tagsThe extra tags for the matrices this Kernel should fill

    C++ Type:std::vector<TagName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The extra tags for the matrices this Kernel should fill

  • extra_vector_tagsThe extra tags for the vectors this Kernel should fill

    C++ Type:std::vector<TagName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The extra tags for the vectors this Kernel should fill

  • matrix_tagssystemThe tag for the matrices this Kernel should fill

    Default:system

    C++ Type:MultiMooseEnum

    Unit:(no unit assumed)

    Options:nontime, system

    Controllable:No

    Description:The tag for the matrices this Kernel should fill

  • vector_tagsnontimeThe tag for the vectors this Kernel should fill

    Default:nontime

    C++ Type:MultiMooseEnum

    Unit:(no unit assumed)

    Options:nontime, time

    Controllable:No

    Description:The tag for the vectors this Kernel should fill

Tagging Parameters

  • allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

    Default:0

    C++ Type:int

    Unit:(no unit assumed)

    Controllable:No

    Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.

  • force_postauxFalseForces the UserObject to be executed in POSTAUX

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Forces the UserObject to be executed in POSTAUX

  • force_preauxFalseForces the UserObject to be executed in PREAUX

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Forces the UserObject to be executed in PREAUX

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • mass_momentum_systemnl0The nonlinear system in which the monolithic momentum and continuity equations are located.

    Default:nl0

    C++ Type:NonlinearSystemName

    Unit:(no unit assumed)

    Controllable:No

    Description:The nonlinear system in which the monolithic momentum and continuity equations are located.

Nonlinear Solver Parameters

  • pull_all_nonlocal_aFalseWhether to pull all nonlocal 'a' coefficient data to our process. Note that 'nonlocal' means elements that we have access to (this may not be all the elements in the mesh if the mesh is distributed) but that we do not own.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether to pull all nonlocal 'a' coefficient data to our process. Note that 'nonlocal' means elements that we have access to (this may not be all the elements in the mesh if the mesh is distributed) but that we do not own.

Parallel Execution Tuning Parameters