PorousFlowPeacemanBorehole

A PorousFlowPeacemanBorehole is a special case of the general line sink in which a polyline (represented by a sequence of points) acts as a sink or source in the model. Please see sinks for an extended discussion and examples.

warningwarning

The function given by "bottom_p_or_t" is evaluated at the well bottom. If a file is read in using "point_file" to define the coordinates and weights of the PorousFlowPeacemanBorehole, the well bottom is assumed to be the last entry in this file and "bottom_p_or_t" will be evaluated at the z-coordinate of the last entry in "point_file". It is an error if the first entry in the "point_file" has a smaller z-coordinate than the last entry.

Input Parameters

  • PorousFlowDictatorThe UserObject that holds the list of PorousFlow variable names

    C++ Type:UserObjectName

    Unit:(no unit assumed)

    Controllable:No

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

  • SumQuantityUOUser Object of type=PorousFlowSumQuantity in which to place the total outflow from the line sink for each time step.

    C++ Type:UserObjectName

    Unit:(no unit assumed)

    Controllable:No

    Description:User Object of type=PorousFlowSumQuantity in which to place the total outflow from the line sink for each time step.

  • bottom_p_or_tFor function_of=pressure, this function is the pressure at the bottom of the borehole, otherwise it is the temperature at the bottom of the borehole.

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:For function_of=pressure, this function is the pressure at the bottom of the borehole, otherwise it is the temperature at the bottom of the borehole.

  • characterIf zero then borehole does nothing. If positive the borehole acts as a sink (production well) for porepressure > borehole pressure, and does nothing otherwise. If negative the borehole acts as a source (injection well) for porepressure < borehole pressure, and does nothing otherwise. The flow rate to/from the borehole is multiplied by |character|, so usually character = +/- 1, but you can specify other quantities to provide an overall scaling to the flow if you like.

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:If zero then borehole does nothing. If positive the borehole acts as a sink (production well) for porepressure > borehole pressure, and does nothing otherwise. If negative the borehole acts as a source (injection well) for porepressure < borehole pressure, and does nothing otherwise. The flow rate to/from the borehole is multiplied by |character|, so usually character = +/- 1, but you can specify other quantities to provide an overall scaling to the flow if you like.

  • unit_weight(fluid_density*gravitational_acceleration) as a vector pointing downwards. Note that the borehole pressure at a given z position is bottom_p_or_t + unit_weight*(q - q_bottom), where q=(x,y,z) and q_bottom=(x,y,z) of the bottom point of the borehole. The analogous formula holds for function_of=temperature. If you don't want bottomhole pressure (or temperature) to vary in the borehole just set unit_weight=0. Typical value is = (0,0,-1E4), for water

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

    Unit:(no unit assumed)

    Controllable:No

    Description:(fluid_density*gravitational_acceleration) as a vector pointing downwards. Note that the borehole pressure at a given z position is bottom_p_or_t + unit_weight*(q - q_bottom), where q=(x,y,z) and q_bottom=(x,y,z) of the bottom point of the borehole. The analogous formula holds for function_of=temperature. If you don't want bottomhole pressure (or temperature) to vary in the borehole just set unit_weight=0. Typical value is = (0,0,-1E4), for water

  • variableThe name of the variable that this residual object operates on

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the variable that this residual object operates on

Required Parameters

  • allow_moving_sourcesFalseIf true, allow Dirac sources to move, even if the mesh does not move, during the simulation.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:If true, allow Dirac sources to move, even if the mesh does not move, during the simulation.

  • 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

  • fluid_phase0The fluid phase whose pressure (and potentially mobility, enthalpy, etc) controls the flux to the line sink. For p_or_t=temperature, and without any use_*, this parameter is irrelevant

    Default:0

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:The fluid phase whose pressure (and potentially mobility, enthalpy, etc) controls the flux to the line sink. For p_or_t=temperature, and without any use_*, this parameter is irrelevant

  • function_ofpressureModifying functions will be a function of either pressure and permeability (eg, for boreholes that pump fluids) or temperature and thermal conductivity (eg, for boreholes that pump pure heat with no fluid flow)

    Default:pressure

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:pressure, temperature

    Controllable:No

    Description:Modifying functions will be a function of either pressure and permeability (eg, for boreholes that pump fluids) or temperature and thermal conductivity (eg, for boreholes that pump pure heat with no fluid flow)

  • line_baseLine base point x,y,z coordinates. This is the same format as a single-line point_file. Note this is only used if there is no point file specified.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Line base point x,y,z coordinates. This is the same format as a single-line point_file. Note this is only used if there is no point file specified.

  • line_direction0 0 1Line direction. Note this is only used if there is only one point in the point_file.

    Default:0 0 1

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Line direction. Note this is only used if there is only one point in the point_file.

  • line_length0Line length. Note this is only used if there is only one point in the point_file.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Line length. Note this is only used if there is only one point in the point_file.

  • 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

    Unit:(no unit assumed)

    Controllable:No

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

  • multiplying_var1.0Fluxes will be moultiplied by this variable

    Default:1.0

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Fluxes will be moultiplied by this variable

  • point_fileThe file containing the coordinates of the points and their weightings that approximate the line sink. The physical meaning of the weightings depend on the scenario, eg, they may be borehole radii. Each line in the file must contain a space-separated weight and coordinate, viz r x y z. For boreholes, the last point in the file is defined as the borehole bottom, where the borehole pressure is bottom_pressure. If your file contains just one point, you must also specify the line_length and line_direction parameters. Note that you will get segementation faults if your points do not lie within your mesh!

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:The file containing the coordinates of the points and their weightings that approximate the line sink. The physical meaning of the weightings depend on the scenario, eg, they may be borehole radii. Each line in the file must contain a space-separated weight and coordinate, viz r x y z. For boreholes, the last point in the file is defined as the borehole bottom, where the borehole pressure is bottom_pressure. If your file contains just one point, you must also specify the line_length and line_direction parameters. Note that you will get segementation faults if your points do not lie within your mesh!

  • point_not_found_behaviorIGNOREBy default (IGNORE), it is ignored if an added point cannot be located in the specified subdomains. If this option is set to ERROR, this situation will result in an error. If this option is set to WARNING, then a warning will be issued.

    Default:IGNORE

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:ERROR, WARNING, IGNORE

    Controllable:No

    Description:By default (IGNORE), it is ignored if an added point cannot be located in the specified subdomains. If this option is set to ERROR, this situation will result in an error. If this option is set to WARNING, then a warning will be issued.

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

  • re_constant0.28The dimensionless constant used in evaluating the borehole effective radius. This depends on the meshing scheme. Peacemann finite-difference calculations give 0.28, while for rectangular finite elements the result is closer to 0.1594. (See Eqn(4.13) of Z Chen, Y Zhang, Well flow models for various numerical methods, Int J Num Analysis and Modeling, 3 (2008) 375-388.)

    Default:0.28

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The dimensionless constant used in evaluating the borehole effective radius. This depends on the meshing scheme. Peacemann finite-difference calculations give 0.28, while for rectangular finite elements the result is closer to 0.1594. (See Eqn(4.13) of Z Chen, Y Zhang, Well flow models for various numerical methods, Int J Num Analysis and Modeling, 3 (2008) 375-388.)

  • use_enthalpyFalseMultiply the flux by the fluid enthalpy

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Multiply the flux by the fluid enthalpy

  • use_internal_energyFalseMultiply the flux by the fluid internal energy

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Multiply the flux by the fluid internal energy

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

  • use_mobilityFalseMultiply the flux by the fluid mobility

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Multiply the flux by the fluid mobility

  • use_relative_permeabilityFalseMultiply the flux by the fluid relative permeability

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Multiply the flux by the fluid relative permeability

  • weight_reporterreporter weight name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

    C++ Type:ReporterName

    Unit:(no unit assumed)

    Controllable:No

    Description:reporter weight name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

  • well_constant-1Usually this is calculated internally from the element geometry, the local borehole direction and segment length, and the permeability. However, if this parameter is given as a positive number then this number is used instead of the internal calculation. This speeds up computation marginally. re_constant becomes irrelevant

    Default:-1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Usually this is calculated internally from the element geometry, the local borehole direction and segment length, and the permeability. However, if this parameter is given as a positive number then this number is used instead of the internal calculation. This speeds up computation marginally. re_constant becomes irrelevant

  • x_coord_reporterreporter x-coordinate name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

    C++ Type:ReporterName

    Unit:(no unit assumed)

    Controllable:No

    Description:reporter x-coordinate name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

  • y_coord_reporterreporter y-coordinate name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

    C++ Type:ReporterName

    Unit:(no unit assumed)

    Controllable:No

    Description:reporter y-coordinate name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

  • z_coord_reporterreporter z-coordinate name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

    C++ Type:ReporterName

    Unit:(no unit assumed)

    Controllable:No

    Description:reporter z-coordinate name of line sink. This uses the reporter syntax /. Each point must adhere to the same requirements as those that would be given if using point_file

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

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

  • drop_duplicate_pointsTrueBy default points added to a DiracKernel are dropped if a point at the same locationhas been added before. If this option is set to false duplicate points are retainedand contribute to residual and Jacobian.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:By default points added to a DiracKernel are dropped if a point at the same locationhas been added before. If this option is set to false duplicate points are retainedand contribute to residual and Jacobian.

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

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

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    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

    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

Input Files