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 31 of file RichardsHalfGaussianSinkFlux.h.

Constructor & Destructor Documentation

◆ RichardsHalfGaussianSinkFlux()

RichardsHalfGaussianSinkFlux::RichardsHalfGaussianSinkFlux ( const InputParameters &  parameters)

Definition at line 45 of file RichardsHalfGaussianSinkFlux.C.

46  : SideIntegralVariablePostprocessor(parameters),
47  _feproblem(dynamic_cast<FEProblemBase &>(_subproblem)),
48  _maximum(getParam<Real>("max")),
49  _sd(getParam<Real>("sd")),
50  _centre(getParam<Real>("centre")),
51  _richards_name_UO(getUserObject<RichardsVarNames>("richardsVarNames_UO")),
52  _pvar(_richards_name_UO.richards_var_num(coupled("variable"))),
53  _m_func(getFunction("multiplying_fcn")),
54  _pp(getMaterialProperty<std::vector<Real>>("porepressure"))
55 {
56 }
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.
unsigned int richards_var_num(unsigned int moose_var_num) const
the richards variable number
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 Function Documentation

◆ computeQpIntegral()

Real RichardsHalfGaussianSinkFlux::computeQpIntegral ( )
protectedvirtual

Definition at line 59 of file RichardsHalfGaussianSinkFlux.C.

60 {
61  if (_pp[_qp][_pvar] >= _centre)
62  return _maximum * _dt * _m_func.value(_t, _q_point[_qp]);
63  else
64  return _maximum * exp(-0.5 * std::pow((_pp[_qp][_pvar] - _centre) / _sd, 2)) * _dt *
65  _m_func.value(_t, _q_point[_qp]);
66 }
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

◆ _centre

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 48 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

◆ _feproblem

FEProblemBase& RichardsHalfGaussianSinkFlux::_feproblem
protected

Definition at line 39 of file RichardsHalfGaussianSinkFlux.h.

◆ _m_func

Function& RichardsHalfGaussianSinkFlux::_m_func
protected

the multiplier function

Definition at line 66 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

◆ _maximum

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 42 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

◆ _pp

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

porepressure (or porepressure vector for multiphase problems)

Definition at line 69 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

◆ _pvar

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 63 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().

◆ _richards_name_UO

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 54 of file RichardsHalfGaussianSinkFlux.h.

◆ _sd

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 45 of file RichardsHalfGaussianSinkFlux.h.

Referenced by computeQpIntegral().


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