# PorousFlowHalfGaussianSink

Applies a flux sink to a boundary. The base flux defined by PorousFlowSink is multiplied by a Gaussian.

The basic sink is scaled by a Gaussian flux multiplier of the pressure of a fluid phase or the temperature : where Here the units of are kg.m.s (for fluids) or J.m.s (for heat). The parameters , and are given in the input file using the max, center and sd options, respectively.

If then the boundary condition will act as a sink, while if the boundary condition acts as a source. If applied to a fluid-component equation, the function has units kg.m.s. If applied to the heat equation, the function has units J.m.s. These units are potentially modified if the extra building blocks enumerated below are used.

In addition, the sink may be multiplied by any or all of the following quantities through the optional parameters list.

• Fluid relative permeability

• Fluid mobility (, where is the normal vector to the boundary)

• Fluid mass fraction

• Fluid internal energy

• Thermal conductivity

See boundary conditions for many more details and discussion.

## Input Parameters

• centerCenter of the Gaussian flux multiplier (measured in Pa (or K for heat fluxes)).

C++ Type:double

Options:

Description:Center of the Gaussian flux multiplier (measured in Pa (or K for heat fluxes)).

• maxMaximum of the Gaussian flux multiplier. Flux out is multiplied by max*exp((-0.5*(p - center)/sd)^2) for pcenter. Here p is the nodal porepressure for the fluid_phase specified (or, for heat fluxes, it is the temperature).

C++ Type:double

Options:

Description:Maximum of the Gaussian flux multiplier. Flux out is multiplied by max*exp((-0.5*(p - center)/sd)^2) for pcenter. Here p is the nodal porepressure for the fluid_phase specified (or, for heat fluxes, it is the temperature).

• PorousFlowDictatorThe UserObject that holds the list of PorousFlow variable names

C++ Type:UserObjectName

Options:

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

• variableThe name of the variable that this boundary condition applies to

C++ Type:NonlinearVariableName

Options:

Description:The name of the variable that this boundary condition applies to

• boundaryThe list of boundary IDs from the mesh where this boundary condition applies

C++ Type:std::vector

Options:

Description:The list of boundary IDs from the mesh where this boundary condition applies

• sdStandard deviation of the Gaussian flux multiplier (measured in Pa (or K for heat fluxes)).

C++ Type:double

Options:

Description:Standard deviation of the Gaussian flux multiplier (measured in Pa (or K for heat fluxes)).

### Required Parameters

• fluid_phaseIf supplied, then this BC will potentially be a function of fluid pressure, and you can use mass_fraction_component, use_mobility, use_relperm, use_enthalpy and use_energy. If not supplied, then this BC can only be a function of temperature

C++ Type:unsigned int

Options:

Description:If supplied, then this BC will potentially be a function of fluid pressure, and you can use mass_fraction_component, use_mobility, use_relperm, use_enthalpy and use_energy. If not supplied, then this BC can only be a function of temperature

• flux_function1The flux. The flux is OUT of the medium: hence positive values of this function means this BC will act as a SINK, while negative values indicate this flux will be a SOURCE. The functional form is useful for spatially or temporally varying sinks. Without any use_*, this function is measured in kg.m^-2.s^-1 (or J.m^-2.s^-1 for the case with only heat and no fluids)

Default:1

C++ Type:FunctionName

Options:

Description:The flux. The flux is OUT of the medium: hence positive values of this function means this BC will act as a SINK, while negative values indicate this flux will be a SOURCE. The functional form is useful for spatially or temporally varying sinks. Without any use_*, this function is measured in kg.m^-2.s^-1 (or J.m^-2.s^-1 for the case with only heat and no fluids)

• use_mobilityFalseIf true, then fluxes are multiplied by (density*permeability_nn/viscosity), where the '_nn' indicates the component normal to the boundary. In this case bare_flux is measured in Pa.m^-1. This can be used in conjunction with other use_*

Default:False

C++ Type:bool

Options:

Description:If true, then fluxes are multiplied by (density*permeability_nn/viscosity), where the '_nn' indicates the component normal to the boundary. In this case bare_flux is measured in Pa.m^-1. This can be used in conjunction with other use_*

• PT_shiftWhenever the sink is an explicit function of porepressure (such as a PiecewiseLinear function) the argument of the function is set to P - PT_shift instead of simply P. Similarly for temperature. PT_shift does not enter into any use_* calculations.

C++ Type:std::vector

Options:

Description:Whenever the sink is an explicit function of porepressure (such as a PiecewiseLinear function) the argument of the function is set to P - PT_shift instead of simply P. Similarly for temperature. PT_shift does not enter into any use_* calculations.

• mass_fraction_componentThe index corresponding to a fluid component. If supplied, the flux will be multiplied by the nodal mass fraction for the component

C++ Type:unsigned int

Options:

Description:The index corresponding to a fluid component. If supplied, the flux will be multiplied by the nodal mass fraction for the component

• use_thermal_conductivityFalseIf true, then fluxes are multiplied by thermal conductivity projected onto the normal direction. This can be used in conjunction with other use_*

Default:False

C++ Type:bool

Options:

Description:If true, then fluxes are multiplied by thermal conductivity projected onto the normal direction. This can be used in conjunction with other use_*

• use_internal_energyFalseIf true, then fluxes are multiplied by fluid internal energy. In this case bare_flux is measured in kg.m^-2.s^-1 / (J.kg). This can be used in conjunction with other use_*

Default:False

C++ Type:bool

Options:

Description:If true, then fluxes are multiplied by fluid internal energy. In this case bare_flux is measured in kg.m^-2.s^-1 / (J.kg). This can be used in conjunction with other use_*

• use_relpermFalseIf true, then fluxes are multiplied by relative permeability. This can be used in conjunction with other use_*

Default:False

C++ Type:bool

Options:

Description:If true, then fluxes are multiplied by relative permeability. This can be used in conjunction with other use_*

• displacementsThe displacements

C++ Type:std::vector

Options:

Description:The displacements

• use_enthalpyFalseIf true, then fluxes are multiplied by enthalpy. In this case bare_flux is measured in kg.m^-2.s^-1 / (J.kg). This can be used in conjunction with other use_*

Default:False

C++ Type:bool

Options:

Description:If true, then fluxes are multiplied by enthalpy. In this case bare_flux is measured in kg.m^-2.s^-1 / (J.kg). This can be used in conjunction with other use_*

### Optional Parameters

• enableTrueSet the enabled status of the MooseObject.

Default:True

C++ Type:bool

Options:

Description:Set the enabled status of the MooseObject.

• save_inThe name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

C++ Type:std::vector

Options:

Description:The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

• 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

Options:

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.

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

C++ Type:std::vector

Options:

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

• seed0The seed for the master random number generator

Default:0

C++ Type:unsigned int

Options:

Description:The seed for the master random number generator

• diag_save_inThe name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

C++ Type:std::vector

Options:

Description:The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

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

Default:True

C++ Type:bool

Options:

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

• vector_tagsnontimeThe tag for the vectors this Kernel should fill

Default:nontime

C++ Type:MultiMooseEnum

Options:nontime time

Description:The tag for the vectors this Kernel should fill

• extra_vector_tagsThe extra tags for the vectors this Kernel should fill

C++ Type:std::vector

Options:

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

Options:nontime system

Description:The tag for the matrices this Kernel should fill

• extra_matrix_tagsThe extra tags for the matrices this Kernel should fill

C++ Type:std::vector

Options:

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