BernoulliFormLossPressureJump

Provides Bernoulli and form-loss pressure jumps to PorousRhieChowMassFlux.

Description

BernoulliFormLossPressureJump defines pressure jumps on the interfaces selected by "boundary". It is not executed in the user object loops. Instead, a PorousRhieChowMassFlux named by "pressure_jump_models" calls it when updating the pressure jump from the current face mass flux.

The reversible jump is

where and denote the owner and non-owner sides, is the face mass flux, is the face-interpolated "density", and is supplied by "porosity". This assumes density varies smoothly, so one interpolated face density stands in for the owner and non-owner densities in this term.

The owner of a face is decided from the mesh, independently of the flow direction:

  1. If the boundary in "boundary" is attached to the side of only one of the two cells sharing the face, that cell is the owner. A sideset generated on one side of an interface, for example with a primary_block and paired_block, therefore makes the cells on its own side the owners.

  2. Otherwise, when the boundary is attached to both sides or to neither, the cell with the lower subdomain ID is the owner.

  3. If both cells also share a subdomain, the finer cell is the owner, and on equal refinement levels the cell with the lower element ID is.

The physical pressure difference does not depend on this choice: exchanging the owner and the non-owner reverses the sign of and of the pressure difference it describes, so ownership fixes only the orientation in which is stored.

Each entry of "form_loss" adds the irreversible term on the corresponding "boundary", where is the form-loss coefficient and is the interstitial normal velocity of the reference side . The reference side is selected by "reference_velocity_side", which defaults to the lower-porosity side. The stored jump is pressure on the non-owner side minus pressure on the owner side, and is the mass flux from the owner toward the non-owner.

Example Input Syntax

In this example, one model supplies Bernoulli jumps on two porous interfaces to the PorousRhieChowMassFlux object.

[UserObjects<<<{"href": "../../syntax/UserObjects/index.html"}>>>]
  [pressure_jump]
    type = BernoulliFormLossPressureJump<<<{"description": "Provides Bernoulli and form-loss pressure jumps to PorousRhieChowMassFlux.", "href": "BernoulliFormLossPressureJump.html"}>>>
    boundary<<<{"description": "The boundaries on which this pressure jump model applies."}>>> = 'baffle baffle2'
    porosity<<<{"description": "The porosity functor. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number."}>>> = porosity
    density<<<{"description": "The density functor. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number."}>>> = ${rho}
  []
  [rc]
    type = PorousRhieChowMassFlux<<<{"description": "Rhie-Chow mass flux object specialized for porous flow/baffle cases.", "href": "PorousRhieChowMassFlux.html"}>>>
    u<<<{"description": "The x-component of velocity"}>>> = superficial_u
    pressure<<<{"description": "The pressure variable."}>>> = pressure
    rho<<<{"description": "Density functor. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number."}>>> = ${rho}
    porosity<<<{"description": "Porosity functor (defaults to 1 for non-porous calculations). A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number."}>>> = porosity
    p_diffusion_kernel<<<{"description": "The LinearFVPressureCorrectionDiffusion kernel acting on the pressure."}>>> = p_diffusion
    pressure_jump_models<<<{"description": "Pressure jump models applied by this object."}>>> = pressure_jump
    pressure_jump_relaxation<<<{"description": "Under-relaxation factor for pressure jump updates."}>>> = 0.1
  []
[]
(modules/navier_stokes/test/tests/finite_volume/pins/channel-flow/linear-segregated/1d-simple-channel/porous-baffle-1d.i)

Input Parameters

  • boundaryThe boundaries on which this pressure jump model applies.

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

    Controllable:No

    Description:The boundaries on which this pressure jump model applies.

  • densityThe density functor. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The density functor. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • porosityThe porosity functor. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The porosity functor. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

Required Parameters

  • form_lossForm-loss coefficients for each pressure-jump boundaries.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Form-loss coefficients for each pressure-jump boundaries.

  • reference_velocity_sideReference-velocity sides for each the pressure-jump boundaries. The default is lower_porosity.

    C++ Type:MultiMooseEnum

    Options:lower_porosity, higher_porosity

    Controllable:No

    Description:Reference-velocity sides for each the pressure-jump boundaries. The default is lower_porosity.

Optional 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

    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).

  • 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

    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

    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

    Controllable:No

    Description:Forces the UserObject to be executed in PREAUX

  • force_preicFalseForces the UserObject to be executed in PREIC during initial setup

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Forces the UserObject to be executed in PREIC during initial setup

Execution Scheduling Parameters

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

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

    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

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • 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

    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

  • 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

    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.

Material Property Retrieval Parameters

Input Files