www.mooseframework.org
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RichardsPiecewiseLinearSink Class Reference

Applies a flux sink to a boundary The sink is a piecewise linear function of porepressure (the "variable") at the quad points. More...

#include <RichardsPiecewiseLinearSink.h>

Inheritance diagram for RichardsPiecewiseLinearSink:
[legend]

Public Member Functions

 RichardsPiecewiseLinearSink (const InputParameters &parameters)
 

Protected Member Functions

virtual void computeResidual ()
 
virtual Real computeQpResidual ()
 
virtual void computeJacobian ()
 
virtual Real computeQpJacobian ()
 
virtual void computeJacobianBlock (unsigned int jvar)
 
virtual Real computeQpOffDiagJacobian (unsigned int jvar)
 
void prepareNodalValues ()
 calculates the nodal values of pressure, mobility, and derivatives thereof More...
 
Real jac (unsigned int wrt_num)
 derivative of residual wrt the wrt_num Richards variable More...
 

Protected Attributes

bool _use_mobility
 whether to multiply the sink flux by permeability*density/viscosity More...
 
bool _use_relperm
 whether to multiply the sink flux by relative permeability More...
 
bool _fully_upwind
 whether to use full upwinding More...
 
LinearInterpolation _sink_func
 piecewise-linear function of porepressure (this defines the strength of the sink) More...
 
Function & _m_func
 sink flux gets multiplied by this function More...
 
const RichardsVarNames_richards_name_UO
 holds info about the names and values of richards variable in the simulation More...
 
unsigned int _num_p
 number of richards variables More...
 
unsigned int _pvar
 the moose internal variable number corresponding to the porepressure of this sink flux More...
 
const RichardsDensity_density_UO
 user object defining the density. Only used if _fully_upwind = true More...
 
const RichardsSeff_seff_UO
 user object defining the effective saturation. Only used if _fully_upwind = true More...
 
const RichardsRelPerm_relperm_UO
 user object defining the relative permeability. Only used if _fully_upwind = true More...
 
const PostprocessorValue & _area_pp
 area postprocessor. if given then all bare_fluxes are divided by this quantity More...
 
unsigned int _num_nodes
 number of nodes in this element. Only used if _fully_upwind = true More...
 
std::vector< Real > _nodal_density
 nodal values of fluid density These are used if _fully_upwind = true More...
 
std::vector< std::vector< Real > > _dnodal_density_dv
 d(_nodal_density)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jacobian calculations if _fully_upwind = true More...
 
std::vector< Real > _nodal_relperm
 nodal values of relative permeability These are used if _fully_upwind = true More...
 
std::vector< std::vector< Real > > _dnodal_relperm_dv
 d(_nodal_relperm)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jacobian calculations if _fully_upwind = true More...
 
const MaterialProperty< std::vector< Real > > & _pp
 porepressure values (only the _pvar component is used) More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _dpp_dv
 d(porepressure_i)/d(variable_j) More...
 
const MaterialProperty< std::vector< Real > > & _viscosity
 viscosity (only the _pvar component is used) More...
 
const MaterialProperty< RealTensorValue > & _permeability
 permeability More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _dseff_dv
 derivative of effective saturation wrt variables only _dseff_dv[_pvar][i] is used for i being all variables More...
 
const MaterialProperty< std::vector< Real > > & _rel_perm
 relative permeability (only the _pvar component is used) More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _drel_perm_dv
 d(relperm_i)/d(variable_j) More...
 
const MaterialProperty< std::vector< Real > > & _density
 fluid density (only the _pvar component is used) More...
 
const MaterialProperty< std::vector< std::vector< Real > > > & _ddensity_dv
 d(density_i)/d(variable_j) More...
 
std::vector< const VariableValue * > _ps_at_nodes
 Holds the values of pressures at all the nodes of the element Only used if _fully_upwind = true Eg: _ps_at_nodes[_pvar] is a pointer to this variable's nodal porepressure values So: (*_ps_at_nodes[_pvar])[i] = _var.nodalSln()[i] = porepressure of pressure-variable _pvar at node i. More...
 

Detailed Description

Applies a flux sink to a boundary The sink is a piecewise linear function of porepressure (the "variable") at the quad points.

This is specified by _sink_func. In addition, this sink can be multiplied by: (1) the relative permeability of the fluid at the quad point. (2) perm_nn*density/viscosity, where perm_nn is the permeability tensor projected in the normal direction. (3) a Function (which can be time-dependent, for instance) and divided by: (4) an area Postprocessor

Definition at line 38 of file RichardsPiecewiseLinearSink.h.

Constructor & Destructor Documentation

RichardsPiecewiseLinearSink::RichardsPiecewiseLinearSink ( const InputParameters &  parameters)

Definition at line 74 of file RichardsPiecewiseLinearSink.C.

75  : IntegratedBC(parameters),
76  _use_mobility(getParam<bool>("use_mobility")),
77  _use_relperm(getParam<bool>("use_relperm")),
78  _fully_upwind(getParam<bool>("fully_upwind")),
79 
80  _sink_func(getParam<std::vector<Real>>("pressures"),
81  getParam<std::vector<Real>>("bare_fluxes")),
82 
83  _m_func(getFunction("multiplying_fcn")),
84 
85  _richards_name_UO(getUserObject<RichardsVarNames>("richardsVarNames_UO")),
88 
89  // in the following, getUserObjectByName returns a reference (an alias) to a RichardsBLAH user
90  // object, and the & turns it into a pointer
92  ? &getUserObjectByName<RichardsDensity>(
93  getParam<std::vector<UserObjectName>>("density_UO")[_pvar])
94  : NULL),
96  ? &getUserObjectByName<RichardsSeff>(
97  getParam<std::vector<UserObjectName>>("seff_UO")[_pvar])
98  : NULL),
100  ? &getUserObjectByName<RichardsRelPerm>(
101  getParam<std::vector<UserObjectName>>("relperm_UO")[_pvar])
102  : NULL),
103 
104  _area_pp(getPostprocessorValue("area_pp")),
105 
106  _num_nodes(0),
107  _nodal_density(0),
109  _nodal_relperm(0),
111 
112  _pp(getMaterialProperty<std::vector<Real>>("porepressure")),
113  _dpp_dv(getMaterialProperty<std::vector<std::vector<Real>>>("dporepressure_dv")),
114 
115  _viscosity(getMaterialProperty<std::vector<Real>>("viscosity")),
116  _permeability(getMaterialProperty<RealTensorValue>("permeability")),
117 
118  _dseff_dv(getMaterialProperty<std::vector<std::vector<Real>>>("ds_eff_dv")),
119 
120  _rel_perm(getMaterialProperty<std::vector<Real>>("rel_perm")),
121  _drel_perm_dv(getMaterialProperty<std::vector<std::vector<Real>>>("drel_perm_dv")),
122 
123  _density(getMaterialProperty<std::vector<Real>>("density")),
124  _ddensity_dv(getMaterialProperty<std::vector<std::vector<Real>>>("ddensity_dv"))
125 {
126  _ps_at_nodes.resize(_num_p);
127  for (unsigned int pnum = 0; pnum < _num_p; ++pnum)
129 }
const MaterialProperty< std::vector< Real > > & _rel_perm
relative permeability (only the _pvar component is used)
LinearInterpolation _sink_func
piecewise-linear function of porepressure (this defines the strength of the sink) ...
const MaterialProperty< std::vector< Real > > & _viscosity
viscosity (only the _pvar component is used)
bool _use_relperm
whether to multiply the sink flux by relative permeability
bool _use_mobility
whether to multiply the sink flux by permeability*density/viscosity
std::vector< Real > _nodal_density
nodal values of fluid density These are used if _fully_upwind = true
const MaterialProperty< std::vector< Real > > & _density
fluid density (only the _pvar component is used)
const VariableValue * nodal_var(unsigned int richards_var_num) const
The nodal variable values for the given richards_var_num To extract a the value of pressure variable ...
std::vector< Real > _nodal_relperm
nodal values of relative permeability These are used if _fully_upwind = true
std::vector< std::vector< Real > > _dnodal_density_dv
d(_nodal_density)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jac...
const RichardsVarNames & _richards_name_UO
holds info about the names and values of richards variable in the simulation
const RichardsSeff * _seff_UO
user object defining the effective saturation. Only used if _fully_upwind = true
const PostprocessorValue & _area_pp
area postprocessor. if given then all bare_fluxes are divided by this quantity
unsigned int num_v() const
the number of porepressure variables
std::vector< const VariableValue * > _ps_at_nodes
Holds the values of pressures at all the nodes of the element Only used if _fully_upwind = true Eg: _...
const MaterialProperty< std::vector< std::vector< Real > > > & _drel_perm_dv
d(relperm_i)/d(variable_j)
unsigned int _pvar
the moose internal variable number corresponding to the porepressure of this sink flux ...
const MaterialProperty< std::vector< std::vector< Real > > > & _dseff_dv
derivative of effective saturation wrt variables only _dseff_dv[_pvar][i] is used for i being all var...
bool _fully_upwind
whether to use full upwinding
const MaterialProperty< std::vector< Real > > & _pp
porepressure values (only the _pvar component is used)
const MaterialProperty< std::vector< std::vector< Real > > > & _dpp_dv
d(porepressure_i)/d(variable_j)
unsigned int _num_nodes
number of nodes in this element. Only used if _fully_upwind = true
const RichardsRelPerm * _relperm_UO
user object defining the relative permeability. Only used if _fully_upwind = true ...
unsigned int _num_p
number of richards variables
std::vector< std::vector< Real > > _dnodal_relperm_dv
d(_nodal_relperm)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jac...
const MaterialProperty< RealTensorValue > & _permeability
permeability
const RichardsDensity * _density_UO
user object defining the density. Only used if _fully_upwind = true
const MaterialProperty< std::vector< std::vector< Real > > > & _ddensity_dv
d(density_i)/d(variable_j)
unsigned int richards_var_num(unsigned int moose_var_num) const
the richards variable number
Function & _m_func
sink flux gets multiplied by this function

Member Function Documentation

void RichardsPiecewiseLinearSink::computeJacobian ( )
protectedvirtual

Definition at line 229 of file RichardsPiecewiseLinearSink.C.

230 {
231  if (_fully_upwind)
233  IntegratedBC::computeJacobian();
234 }
bool _fully_upwind
whether to use full upwinding
void prepareNodalValues()
calculates the nodal values of pressure, mobility, and derivatives thereof
void RichardsPiecewiseLinearSink::computeJacobianBlock ( unsigned int  jvar)
protectedvirtual

Definition at line 243 of file RichardsPiecewiseLinearSink.C.

244 {
245  if (_fully_upwind)
247  IntegratedBC::computeJacobianBlock(jvar);
248 }
bool _fully_upwind
whether to use full upwinding
void prepareNodalValues()
calculates the nodal values of pressure, mobility, and derivatives thereof
Real RichardsPiecewiseLinearSink::computeQpJacobian ( )
protectedvirtual

Definition at line 237 of file RichardsPiecewiseLinearSink.C.

238 {
239  return jac(_pvar);
240 }
unsigned int _pvar
the moose internal variable number corresponding to the porepressure of this sink flux ...
Real jac(unsigned int wrt_num)
derivative of residual wrt the wrt_num Richards variable
Real RichardsPiecewiseLinearSink::computeQpOffDiagJacobian ( unsigned int  jvar)
protectedvirtual

Definition at line 251 of file RichardsPiecewiseLinearSink.C.

252 {
254  return 0.0;
255  unsigned int dvar = _richards_name_UO.richards_var_num(jvar);
256  return jac(dvar);
257 }
bool not_richards_var(unsigned int moose_var_num) const
returns true if moose_var_num is not a richards var
const RichardsVarNames & _richards_name_UO
holds info about the names and values of richards variable in the simulation
Real jac(unsigned int wrt_num)
derivative of residual wrt the wrt_num Richards variable
unsigned int richards_var_num(unsigned int moose_var_num) const
the richards variable number
Real RichardsPiecewiseLinearSink::computeQpResidual ( )
protectedvirtual

Definition at line 183 of file RichardsPiecewiseLinearSink.C.

184 {
185  Real flux = 0;
186  Real k = 0;
187 
188  if (!_fully_upwind)
189  {
190  flux = _test[_i][_qp] * _sink_func.sample(_pp[_qp][_pvar]);
191  if (_use_mobility)
192  {
193  k = (_permeability[_qp] * _normals[_qp]) * _normals[_qp];
194  flux *= _density[_qp][_pvar] * k / _viscosity[_qp][_pvar];
195  }
196  if (_use_relperm)
197  flux *= _rel_perm[_qp][_pvar];
198  }
199  else
200  {
201  flux = _test[_i][_qp] * _sink_func.sample((*_ps_at_nodes[_pvar])[_i]);
202  if (_use_mobility)
203  {
204  k = (_permeability[0] * _normals[_qp]) * _normals[_qp]; // assume that _permeability is
205  // constant throughout element so
206  // doesn't need to be upwinded
207  flux *= _nodal_density[_i] * k /
208  _viscosity[0][_pvar]; // assume that viscosity is constant throughout element
209  }
210  if (_use_relperm)
211  flux *= _nodal_relperm[_i];
212  }
213 
214  flux *= _m_func.value(_t, _q_point[_qp]);
215 
216  if (_area_pp == 0.0)
217  {
218  if (flux != 0)
219  mooseError("RichardsPiecewiseLinearSink: flux is nonzero, but area is zero!\n");
220  // if flux == 0, then leave it as zero.
221  }
222  else
223  flux /= _area_pp;
224 
225  return flux;
226 }
const MaterialProperty< std::vector< Real > > & _rel_perm
relative permeability (only the _pvar component is used)
LinearInterpolation _sink_func
piecewise-linear function of porepressure (this defines the strength of the sink) ...
const MaterialProperty< std::vector< Real > > & _viscosity
viscosity (only the _pvar component is used)
bool _use_relperm
whether to multiply the sink flux by relative permeability
bool _use_mobility
whether to multiply the sink flux by permeability*density/viscosity
std::vector< Real > _nodal_density
nodal values of fluid density These are used if _fully_upwind = true
const MaterialProperty< std::vector< Real > > & _density
fluid density (only the _pvar component is used)
std::vector< Real > _nodal_relperm
nodal values of relative permeability These are used if _fully_upwind = true
const PostprocessorValue & _area_pp
area postprocessor. if given then all bare_fluxes are divided by this quantity
std::vector< const VariableValue * > _ps_at_nodes
Holds the values of pressures at all the nodes of the element Only used if _fully_upwind = true Eg: _...
unsigned int _pvar
the moose internal variable number corresponding to the porepressure of this sink flux ...
bool _fully_upwind
whether to use full upwinding
const MaterialProperty< std::vector< Real > > & _pp
porepressure values (only the _pvar component is used)
const MaterialProperty< RealTensorValue > & _permeability
permeability
Function & _m_func
sink flux gets multiplied by this function
void RichardsPiecewiseLinearSink::computeResidual ( )
protectedvirtual

Definition at line 175 of file RichardsPiecewiseLinearSink.C.

176 {
177  if (_fully_upwind)
179  IntegratedBC::computeResidual();
180 }
bool _fully_upwind
whether to use full upwinding
void prepareNodalValues()
calculates the nodal values of pressure, mobility, and derivatives thereof
Real RichardsPiecewiseLinearSink::jac ( unsigned int  wrt_num)
protected

derivative of residual wrt the wrt_num Richards variable

Definition at line 260 of file RichardsPiecewiseLinearSink.C.

Referenced by computeQpJacobian(), and computeQpOffDiagJacobian().

261 {
262  Real flux = 0;
263  Real deriv = 0;
264  Real k = 0;
265  Real mob = 0;
266  Real mobp = 0;
267  Real phi = 0;
268 
269  if (!_fully_upwind)
270  {
271  flux = _sink_func.sample(_pp[_qp][_pvar]);
272  deriv = _sink_func.sampleDerivative(_pp[_qp][_pvar]) * _dpp_dv[_qp][_pvar][wrt_num];
273  phi = _phi[_j][_qp];
274  if (_use_mobility)
275  {
276  k = (_permeability[_qp] * _normals[_qp]) * _normals[_qp];
277  mob = _density[_qp][_pvar] * k / _viscosity[_qp][_pvar];
278  mobp = _ddensity_dv[_qp][_pvar][wrt_num] * k / _viscosity[_qp][_pvar];
279  deriv = mob * deriv + mobp * flux;
280  flux *= mob;
281  }
282  if (_use_relperm)
283  deriv = _rel_perm[_qp][_pvar] * deriv + _drel_perm_dv[_qp][_pvar][wrt_num] * flux;
284  }
285  else
286  {
287  if (_i != _j)
288  return 0.0; // residual at node _i only depends on variables at that node
289  flux = _sink_func.sample((*_ps_at_nodes[_pvar])[_i]);
290  deriv = (_pvar == wrt_num ? _sink_func.sampleDerivative((*_ps_at_nodes[_pvar])[_i])
291  : 0); // NOTE: i'm assuming that the variables are pressure variables
292  phi = 1;
293  if (_use_mobility)
294  {
295  k = (_permeability[0] * _normals[_qp]) * _normals[_qp];
296  mob = _nodal_density[_i] * k / _viscosity[0][_pvar];
297  mobp = _dnodal_density_dv[_i][wrt_num] * k / _viscosity[0][_pvar];
298  deriv = mob * deriv + mobp * flux;
299  flux *= mob;
300  }
301  if (_use_relperm)
302  deriv = _nodal_relperm[_i] * deriv + _dnodal_relperm_dv[_i][wrt_num] * flux;
303  }
304 
305  deriv *= _m_func.value(_t, _q_point[_qp]);
306 
307  if (_area_pp == 0.0)
308  {
309  if (deriv != 0)
310  mooseError("RichardsPiecewiseLinearSink: deriv is nonzero, but area is zero!\n");
311  // if deriv == 0, then leave it as zero.
312  }
313  else
314  deriv /= _area_pp;
315 
316  return _test[_i][_qp] * deriv * phi;
317 }
const MaterialProperty< std::vector< Real > > & _rel_perm
relative permeability (only the _pvar component is used)
LinearInterpolation _sink_func
piecewise-linear function of porepressure (this defines the strength of the sink) ...
const MaterialProperty< std::vector< Real > > & _viscosity
viscosity (only the _pvar component is used)
bool _use_relperm
whether to multiply the sink flux by relative permeability
bool _use_mobility
whether to multiply the sink flux by permeability*density/viscosity
std::vector< Real > _nodal_density
nodal values of fluid density These are used if _fully_upwind = true
const MaterialProperty< std::vector< Real > > & _density
fluid density (only the _pvar component is used)
std::vector< Real > _nodal_relperm
nodal values of relative permeability These are used if _fully_upwind = true
std::vector< std::vector< Real > > _dnodal_density_dv
d(_nodal_density)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jac...
const PostprocessorValue & _area_pp
area postprocessor. if given then all bare_fluxes are divided by this quantity
std::vector< const VariableValue * > _ps_at_nodes
Holds the values of pressures at all the nodes of the element Only used if _fully_upwind = true Eg: _...
const MaterialProperty< std::vector< std::vector< Real > > > & _drel_perm_dv
d(relperm_i)/d(variable_j)
unsigned int _pvar
the moose internal variable number corresponding to the porepressure of this sink flux ...
bool _fully_upwind
whether to use full upwinding
const MaterialProperty< std::vector< Real > > & _pp
porepressure values (only the _pvar component is used)
const MaterialProperty< std::vector< std::vector< Real > > > & _dpp_dv
d(porepressure_i)/d(variable_j)
std::vector< std::vector< Real > > _dnodal_relperm_dv
d(_nodal_relperm)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jac...
const MaterialProperty< RealTensorValue > & _permeability
permeability
const MaterialProperty< std::vector< std::vector< Real > > > & _ddensity_dv
d(density_i)/d(variable_j)
Function & _m_func
sink flux gets multiplied by this function
void RichardsPiecewiseLinearSink::prepareNodalValues ( )
protected

calculates the nodal values of pressure, mobility, and derivatives thereof

Definition at line 132 of file RichardsPiecewiseLinearSink.C.

Referenced by computeJacobian(), computeJacobianBlock(), and computeResidual().

133 {
134  // NOTE: i'm assuming that all the richards variables are pressure values
135 
136  _num_nodes = (*_ps_at_nodes[_pvar]).size();
137 
138  Real p;
139  Real seff;
140  std::vector<Real> dseff_dp;
141  Real drelperm_ds;
142 
143  _nodal_density.resize(_num_nodes);
145  _nodal_relperm.resize(_num_nodes);
147  dseff_dp.resize(_num_p);
148  for (unsigned int nodenum = 0; nodenum < _num_nodes; ++nodenum)
149  {
150  // retrieve and calculate basic things at the node
151  p = (*_ps_at_nodes[_pvar])[nodenum]; // pressure of fluid _pvar at node nodenum
152 
153  _nodal_density[nodenum] = _density_UO->density(p); // density of fluid _pvar at node nodenum
154  _dnodal_density_dv[nodenum].resize(_num_p);
155  for (unsigned int ph = 0; ph < _num_p; ++ph)
156  _dnodal_density_dv[nodenum][ph] = 0;
157  _dnodal_density_dv[nodenum][_pvar] = _density_UO->ddensity(p); // d(density)/dP
158 
159  seff = _seff_UO->seff(_ps_at_nodes,
160  nodenum); // effective saturation of fluid _pvar at node nodenum
161  _seff_UO->dseff(
162  _ps_at_nodes, nodenum, dseff_dp); // d(seff)/d(P_ph), for ph = 0, ..., _num_p - 1
163 
164  _nodal_relperm[nodenum] =
165  _relperm_UO->relperm(seff); // relative permeability of fluid _pvar at node nodenum
166  drelperm_ds = _relperm_UO->drelperm(seff); // d(relperm)/dseff
167 
168  _dnodal_relperm_dv[nodenum].resize(_num_p);
169  for (unsigned int ph = 0; ph < _num_p; ++ph)
170  _dnodal_relperm_dv[nodenum][ph] = drelperm_ds * dseff_dp[ph];
171  }
172 }
virtual Real drelperm(Real seff) const =0
derivative of relative permeability wrt effective saturation This must be over-ridden in your derived...
std::vector< Real > _nodal_density
nodal values of fluid density These are used if _fully_upwind = true
std::vector< Real > _nodal_relperm
nodal values of relative permeability These are used if _fully_upwind = true
virtual void dseff(std::vector< const VariableValue * > p, unsigned int qp, std::vector< Real > &result) const =0
derivative(s) of effective saturation as a function of porepressure(s) at given quadpoint of the elem...
virtual Real density(Real p) const =0
fluid density as a function of porepressure This must be over-ridden in derived classes to provide an...
std::vector< std::vector< Real > > _dnodal_density_dv
d(_nodal_density)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jac...
const RichardsSeff * _seff_UO
user object defining the effective saturation. Only used if _fully_upwind = true
std::vector< const VariableValue * > _ps_at_nodes
Holds the values of pressures at all the nodes of the element Only used if _fully_upwind = true Eg: _...
unsigned int _pvar
the moose internal variable number corresponding to the porepressure of this sink flux ...
virtual Real ddensity(Real p) const =0
derivative of fluid density wrt porepressure This must be over-ridden in derived classes to provide a...
unsigned int _num_nodes
number of nodes in this element. Only used if _fully_upwind = true
const RichardsRelPerm * _relperm_UO
user object defining the relative permeability. Only used if _fully_upwind = true ...
virtual Real relperm(Real seff) const =0
relative permeability as a function of effective saturation This must be over-ridden in your derived ...
unsigned int _num_p
number of richards variables
std::vector< std::vector< Real > > _dnodal_relperm_dv
d(_nodal_relperm)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jac...
const RichardsDensity * _density_UO
user object defining the density. Only used if _fully_upwind = true
virtual Real seff(std::vector< const VariableValue * > p, unsigned int qp) const =0
effective saturation as a function of porepressure(s) at given quadpoint of the element ...

Member Data Documentation

const PostprocessorValue& RichardsPiecewiseLinearSink::_area_pp
protected

area postprocessor. if given then all bare_fluxes are divided by this quantity

Definition at line 90 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

const MaterialProperty<std::vector<std::vector<Real> > >& RichardsPiecewiseLinearSink::_ddensity_dv
protected

d(density_i)/d(variable_j)

Definition at line 147 of file RichardsPiecewiseLinearSink.h.

Referenced by jac().

const MaterialProperty<std::vector<Real> >& RichardsPiecewiseLinearSink::_density
protected

fluid density (only the _pvar component is used)

Definition at line 144 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

const RichardsDensity* RichardsPiecewiseLinearSink::_density_UO
protected

user object defining the density. Only used if _fully_upwind = true

Definition at line 81 of file RichardsPiecewiseLinearSink.h.

Referenced by prepareNodalValues().

std::vector<std::vector<Real> > RichardsPiecewiseLinearSink::_dnodal_density_dv
protected

d(_nodal_density)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jacobian calculations if _fully_upwind = true

Definition at line 105 of file RichardsPiecewiseLinearSink.h.

Referenced by jac(), and prepareNodalValues().

std::vector<std::vector<Real> > RichardsPiecewiseLinearSink::_dnodal_relperm_dv
protected

d(_nodal_relperm)/d(variable_ph) (variable_ph is the variable for phase=ph) These are used in the jacobian calculations if _fully_upwind = true

Definition at line 117 of file RichardsPiecewiseLinearSink.h.

Referenced by jac(), and prepareNodalValues().

const MaterialProperty<std::vector<std::vector<Real> > >& RichardsPiecewiseLinearSink::_dpp_dv
protected

d(porepressure_i)/d(variable_j)

Definition at line 123 of file RichardsPiecewiseLinearSink.h.

Referenced by jac().

const MaterialProperty<std::vector<std::vector<Real> > >& RichardsPiecewiseLinearSink::_drel_perm_dv
protected

d(relperm_i)/d(variable_j)

Definition at line 141 of file RichardsPiecewiseLinearSink.h.

Referenced by jac().

const MaterialProperty<std::vector<std::vector<Real> > >& RichardsPiecewiseLinearSink::_dseff_dv
protected

derivative of effective saturation wrt variables only _dseff_dv[_pvar][i] is used for i being all variables

Definition at line 135 of file RichardsPiecewiseLinearSink.h.

bool RichardsPiecewiseLinearSink::_fully_upwind
protected

whether to use full upwinding

Definition at line 63 of file RichardsPiecewiseLinearSink.h.

Referenced by computeJacobian(), computeJacobianBlock(), computeQpResidual(), computeResidual(), and jac().

Function& RichardsPiecewiseLinearSink::_m_func
protected

sink flux gets multiplied by this function

Definition at line 69 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

std::vector<Real> RichardsPiecewiseLinearSink::_nodal_density
protected

nodal values of fluid density These are used if _fully_upwind = true

Definition at line 99 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), jac(), and prepareNodalValues().

std::vector<Real> RichardsPiecewiseLinearSink::_nodal_relperm
protected

nodal values of relative permeability These are used if _fully_upwind = true

Definition at line 111 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), jac(), and prepareNodalValues().

unsigned int RichardsPiecewiseLinearSink::_num_nodes
protected

number of nodes in this element. Only used if _fully_upwind = true

Definition at line 93 of file RichardsPiecewiseLinearSink.h.

Referenced by prepareNodalValues().

unsigned int RichardsPiecewiseLinearSink::_num_p
protected

number of richards variables

Definition at line 75 of file RichardsPiecewiseLinearSink.h.

Referenced by prepareNodalValues(), and RichardsPiecewiseLinearSink().

const MaterialProperty<RealTensorValue>& RichardsPiecewiseLinearSink::_permeability
protected

permeability

Definition at line 129 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

const MaterialProperty<std::vector<Real> >& RichardsPiecewiseLinearSink::_pp
protected

porepressure values (only the _pvar component is used)

Definition at line 120 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

std::vector<const VariableValue *> RichardsPiecewiseLinearSink::_ps_at_nodes
protected

Holds the values of pressures at all the nodes of the element Only used if _fully_upwind = true Eg: _ps_at_nodes[_pvar] is a pointer to this variable's nodal porepressure values So: (*_ps_at_nodes[_pvar])[i] = _var.nodalSln()[i] = porepressure of pressure-variable _pvar at node i.

Definition at line 157 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), jac(), prepareNodalValues(), and RichardsPiecewiseLinearSink().

unsigned int RichardsPiecewiseLinearSink::_pvar
protected

the moose internal variable number corresponding to the porepressure of this sink flux

Definition at line 78 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpJacobian(), computeQpResidual(), jac(), and prepareNodalValues().

const MaterialProperty<std::vector<Real> >& RichardsPiecewiseLinearSink::_rel_perm
protected

relative permeability (only the _pvar component is used)

Definition at line 138 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

const RichardsRelPerm* RichardsPiecewiseLinearSink::_relperm_UO
protected

user object defining the relative permeability. Only used if _fully_upwind = true

Definition at line 87 of file RichardsPiecewiseLinearSink.h.

Referenced by prepareNodalValues().

const RichardsVarNames& RichardsPiecewiseLinearSink::_richards_name_UO
protected

holds info about the names and values of richards variable in the simulation

Definition at line 72 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpOffDiagJacobian(), and RichardsPiecewiseLinearSink().

const RichardsSeff* RichardsPiecewiseLinearSink::_seff_UO
protected

user object defining the effective saturation. Only used if _fully_upwind = true

Definition at line 84 of file RichardsPiecewiseLinearSink.h.

Referenced by prepareNodalValues().

LinearInterpolation RichardsPiecewiseLinearSink::_sink_func
protected

piecewise-linear function of porepressure (this defines the strength of the sink)

Definition at line 66 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

bool RichardsPiecewiseLinearSink::_use_mobility
protected

whether to multiply the sink flux by permeability*density/viscosity

Definition at line 57 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

bool RichardsPiecewiseLinearSink::_use_relperm
protected

whether to multiply the sink flux by relative permeability

Definition at line 60 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().

const MaterialProperty<std::vector<Real> >& RichardsPiecewiseLinearSink::_viscosity
protected

viscosity (only the _pvar component is used)

Definition at line 126 of file RichardsPiecewiseLinearSink.h.

Referenced by computeQpResidual(), and jac().


The documentation for this class was generated from the following files: