www.mooseframework.org
Functions
PeacemanBorehole.C File Reference

Go to the source code of this file.

Functions

template<>
InputParameters validParams< PeacemanBorehole > ()
 

Function Documentation

template<>
InputParameters validParams< PeacemanBorehole > ( )

Definition at line 15 of file PeacemanBorehole.C.

Referenced by validParams< Q2PBorehole >(), and validParams< RichardsBorehole >().

16 {
17  InputParameters params = validParams<DiracKernel>();
18  params.addRequiredParam<FunctionName>(
19  "character",
20  "If zero then borehole does nothing. If positive the borehole acts as a sink "
21  "(production well) for porepressure > borehole pressure, and does nothing "
22  "otherwise. If negative the borehole acts as a source (injection well) for "
23  "porepressure < borehole pressure, and does nothing otherwise. The flow rate "
24  "to/from the borehole is multiplied by |character|, so usually character = +/- "
25  "1, but you can specify other quantities to provide an overall scaling to the "
26  "flow if you like.");
27  params.addRequiredParam<Real>("bottom_pressure", "Pressure at the bottom of the borehole");
28  params.addRequiredParam<RealVectorValue>(
29  "unit_weight",
30  "(fluid_density*gravitational_acceleration) as a vector pointing downwards. "
31  "Note that the borehole pressure at a given z position is bottom_pressure + "
32  "unit_weight*(p - p_bottom), where p=(x,y,z) and p_bottom=(x,y,z) of the "
33  "bottom point of the borehole. If you don't want bottomhole pressure to vary "
34  "in the borehole just set unit_weight=0. Typical value is = (0,0,-1E4)");
35  params.addRequiredParam<std::string>(
36  "point_file",
37  "The file containing the borehole radii and coordinates of the point sinks "
38  "that approximate the borehole. Each line in the file must contain a "
39  "space-separated radius and coordinate. Ie r x y z. The last point in the "
40  "file is defined as the borehole bottom, where the borehole pressure is "
41  "bottom_pressure. If your file contains just one point, you must also specify "
42  "the borehole_length and borehole_direction. Note that you will get "
43  "segementation faults if your points do not lie within your mesh!");
44  params.addRequiredParam<UserObjectName>(
45  "SumQuantityUO",
46  "User Object of type=RichardsSumQuantity in which to place the total "
47  "outflow from the borehole for each time step.");
48  params.addParam<Real>("re_constant",
49  0.28,
50  "The dimensionless constant used in evaluating the borehole effective "
51  "radius. This depends on the meshing scheme. Peacemann "
52  "finite-difference calculations give 0.28, while for rectangular finite "
53  "elements the result is closer to 0.1594. (See Eqn(4.13) of Z Chen, Y "
54  "Zhang, Well flow models for various numerical methods, Int J Num "
55  "Analysis and Modeling, 3 (2008) 375-388.)");
56  params.addParam<Real>("well_constant",
57  -1.0,
58  "Usually this is calculated internally from the element geometry, the "
59  "local borehole direction and segment length, and the permeability. "
60  "However, if this parameter is given as a positive number then this "
61  "number is used instead of the internal calculation. This speeds up "
62  "computation marginally. re_constant becomes irrelevant");
63  params.addRangeCheckedParam<Real>(
64  "borehole_length",
65  0.0,
66  "borehole_length>=0",
67  "Borehole length. Note this is only used if there is only one point in the point_file.");
68  params.addParam<RealVectorValue>(
69  "borehole_direction",
70  RealVectorValue(0, 0, 1),
71  "Borehole direction. Note this is only used if there is only one point in the point_file.");
72  params.addClassDescription("Approximates a borehole in the mesh using the Peaceman approach, ie "
73  "using a number of point sinks with given radii whose positions are "
74  "read from a file");
75  return params;
76 }