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

Postprocessor that records the mass flux from porespace to a half-gaussian sink. More...

#include <RichardsHalfGaussianSinkFlux.h>

Inheritance diagram for RichardsHalfGaussianSinkFlux:
[legend]

Public Member Functions

 RichardsHalfGaussianSinkFlux (const InputParameters &parameters)
 

Protected Member Functions

virtual Real computeQpIntegral ()
 

Protected Attributes

FEProblemBase & _feproblem
 
Real _maximum
 flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise More...
 
Real _sd
 flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise More...
 
Real _centre
 flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise More...
 
const RichardsVarNames_richards_name_UO
 holds info regarding the names of the Richards variables and methods for extracting values of these variables More...
 
unsigned int _pvar
 the index of this variable in the list of Richards variables held by _richards_name_UO. More...
 
Function & _m_func
 the multiplier function More...
 
const MaterialProperty< std::vector< Real > > & _pp
 porepressure (or porepressure vector for multiphase problems) More...
 

Detailed Description

Postprocessor that records the mass flux from porespace to a half-gaussian sink.

(Positive if fluid is being removed from porespace.) flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise If a function, _m_func, is used then the flux is multiplied by _m_func. The result is the flux integrated over the specified sideset.

Definition at line 29 of file RichardsHalfGaussianSinkFlux.h.

Constructor & Destructor Documentation

RichardsHalfGaussianSinkFlux::RichardsHalfGaussianSinkFlux ( const InputParameters &  parameters)

Definition at line 41 of file RichardsHalfGaussianSinkFlux.C.

42  : SideIntegralVariablePostprocessor(parameters),
43  _feproblem(dynamic_cast<FEProblemBase &>(_subproblem)),
44  _maximum(getParam<Real>("max")),
45  _sd(getParam<Real>("sd")),
46  _centre(getParam<Real>("centre")),
47  _richards_name_UO(getUserObject<RichardsVarNames>("richardsVarNames_UO")),
48  _pvar(_richards_name_UO.richards_var_num(coupled("variable"))),
49  _m_func(getFunction("multiplying_fcn")),
50  _pp(getMaterialProperty<std::vector<Real>>("porepressure"))
51 {
52 }
const RichardsVarNames & _richards_name_UO
holds info regarding the names of the Richards variables and methods for extracting values of these v...
Real _maximum
flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise ...
const MaterialProperty< std::vector< Real > > & _pp
porepressure (or porepressure vector for multiphase problems)
Real _centre
flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise ...
unsigned int _pvar
the index of this variable in the list of Richards variables held by _richards_name_UO.
Function & _m_func
the multiplier function
unsigned int richards_var_num(unsigned int moose_var_num) const
the richards variable number
Real _sd
flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise ...

Member Function Documentation

Real RichardsHalfGaussianSinkFlux::computeQpIntegral ( )
protectedvirtual

Definition at line 55 of file RichardsHalfGaussianSinkFlux.C.

56 {
57  if (_pp[_qp][_pvar] >= _centre)
58  return _maximum * _dt * _m_func.value(_t, _q_point[_qp]);
59  else
60  return _maximum * exp(-0.5 * std::pow((_pp[_qp][_pvar] - _centre) / _sd, 2)) * _dt *
61  _m_func.value(_t, _q_point[_qp]);
62 }
Real _maximum
flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise ...
const MaterialProperty< std::vector< Real > > & _pp
porepressure (or porepressure vector for multiphase problems)
Real _centre
flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise ...
ExpressionBuilder::EBTerm pow(const ExpressionBuilder::EBTerm &left, T exponent)
unsigned int _pvar
the index of this variable in the list of Richards variables held by _richards_name_UO.
Function & _m_func
the multiplier function
Real _sd
flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise ...

Member Data Documentation

Real RichardsHalfGaussianSinkFlux::_centre
protected

flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise

Definition at line 46 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

FEProblemBase& RichardsHalfGaussianSinkFlux::_feproblem
protected

Definition at line 37 of file RichardsHalfGaussianSinkFlux.h.

Function& RichardsHalfGaussianSinkFlux::_m_func
protected

the multiplier function

Definition at line 64 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

Real RichardsHalfGaussianSinkFlux::_maximum
protected

flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise

Definition at line 40 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

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

porepressure (or porepressure vector for multiphase problems)

Definition at line 67 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

unsigned int RichardsHalfGaussianSinkFlux::_pvar
protected

the index of this variable in the list of Richards variables held by _richards_name_UO.

Eg if richards_vars = 'pwater pgas poil' in the _richards_name_UO and this kernel has variable = pgas, then _pvar = 1 This is used to index correctly into _viscosity, _seff, etc

Definition at line 61 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

const RichardsVarNames& RichardsHalfGaussianSinkFlux::_richards_name_UO
protected

holds info regarding the names of the Richards variables and methods for extracting values of these variables

Definition at line 52 of file RichardsHalfGaussianSinkFlux.h.

Real RichardsHalfGaussianSinkFlux::_sd
protected

flux out = max*exp((-0.5*(p - centre)/sd)^2) for p<centre, and flux out = max otherwise

Definition at line 43 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().


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