PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent

This UserObject implements the Kuzmin-Turek stabilization scheme in the case of one-phase, multi-component, fully-saturated Darcy flow. Specifically, it computes and and given by and where is the permeability tensor, is the porepressure, is the fluid density, and is the acceleration due to gravity, is the appropriate mass fraction, and is the fluid viscosity. Derivatives of these quantities with respect to the PorousFlow Variables (defined in the PorousFlowDictator) are also computed.

The computed and may then be used by the PorousFlowFluxLimitedTVDAdvection Kernel.

Input Parameters

  • PorousFlowDictatorThe UserObject that holds the list of PorousFlow variable names

    C++ Type:UserObjectName

    Controllable:No

    Description:The UserObject that holds the list of PorousFlow variable names

  • gravityGravitational acceleration vector downwards (m/s^2)

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:Gravitational acceleration vector downwards (m/s^2)

Required Parameters

  • allowable_MB_wastage5This object will issue a memory warning if the internal node-numbering data structure wastes more than allowable_MB_wastage megabytes. This data structure uses sequential node-numbering which is optimized for speed rather than memory efficiency

    Default:5

    C++ Type:double

    Controllable:No

    Description:This object will issue a memory warning if the internal node-numbering data structure wastes more than allowable_MB_wastage megabytes. This data structure uses sequential node-numbering which is optimized for speed rather than memory efficiency

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

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

    Controllable:No

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

  • execute_onLINEARThe list of flag(s) indicating when this object should be executed, the available options include FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM.

    Default:LINEAR

    C++ Type:ExecFlagEnum

    Options:FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed, the available options include FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM.

  • fe_familyFE Family to use (eg Lagrange). You only need to specify this is your porous_flow_vars in your PorousFlowDictator have different families or orders

    C++ Type:MooseEnum

    Options:LAGRANGE, MONOMIAL, HERMITE, SCALAR, HIERARCHIC, CLOUGH, XYZ, SZABAB, BERNSTEIN

    Controllable:No

    Description:FE Family to use (eg Lagrange). You only need to specify this is your porous_flow_vars in your PorousFlowDictator have different families or orders

  • fe_orderFE Order to use (eg First). You only need to specify this is your porous_flow_vars in your PorousFlowDictator have different families or orders

    C++ Type:MooseEnum

    Options:CONSTANT, FIRST, SECOND, THIRD, FOURTH

    Controllable:No

    Description:FE Order to use (eg First). You only need to specify this is your porous_flow_vars in your PorousFlowDictator have different families or orders

  • fluid_component0The index corresponding to the fluid component for this UserObject

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The index corresponding to the fluid component for this UserObject

  • flux_limiter_typeVanLeerType of flux limiter to use. 'None' means that no antidiffusion will be added in the Kuzmin-Turek scheme

    Default:VanLeer

    C++ Type:MooseEnum

    Options:MinMod, VanLeer, MC, superbee, None

    Controllable:No

    Description:Type of flux limiter to use. 'None' means that no antidiffusion will be added in the Kuzmin-Turek scheme

  • multiply_by_densityTrueIf true, then the advective flux will be multiplied by density, so it is a mass flux, which is the most common way of using PorousFlow. If false, then the advective flux will be a volume flux, which is common in poro-mechanics

    Default:True

    C++ Type:bool

    Controllable:No

    Description:If true, then the advective flux will be multiplied by density, so it is a mass flux, which is the most common way of using PorousFlow. If false, then the advective flux will be a volume flux, which is common in poro-mechanics

  • phase0The index corresponding to the phase for this UserObject

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The index corresponding to the phase for this UserObject

  • 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

    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.

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

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

  • 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

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • 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

Input Files

Child Objects