www.mooseframework.org
Q2PPiecewiseLinearSink.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "IntegratedBC.h"
13 #include "LinearInterpolation.h"
14 #include "Function.h"
15 #include "RichardsDensity.h"
16 #include "RichardsRelPerm.h"
17 
18 // Forward Declarations
20 
21 template <>
22 InputParameters validParams<Q2PPiecewiseLinearSink>();
23 
36 class Q2PPiecewiseLinearSink : public IntegratedBC
37 {
38 public:
39  Q2PPiecewiseLinearSink(const InputParameters & parameters);
40 
41 protected:
42  virtual void computeResidual() override;
43 
44  virtual Real computeQpResidual() override;
45 
46  virtual void computeJacobian() override;
47 
48  virtual Real computeQpJacobian() override;
49 
50  virtual void computeJacobianBlock(MooseVariableFEBase & jvar) override;
51  using IntegratedBC::computeJacobianBlock;
52 
53  virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;
54 
57 
60 
62  LinearInterpolation _sink_func;
63 
65  const Function & _m_func;
66 
69 
72 
74  const VariableValue & _other_var_nodal;
75 
77  unsigned int _other_var_num;
78 
80  bool _var_is_pp;
81 
83  Real _viscosity;
84 
86  const MaterialProperty<RealTensorValue> & _permeability;
87 
89  unsigned int _num_nodes;
90 
92  std::vector<Real> _pp;
93 
95  std::vector<Real> _sat;
96 
98  std::vector<Real> _nodal_density;
99 
101  std::vector<Real> _dnodal_density_dp;
102 
104  std::vector<Real> _nodal_relperm;
105 
107  std::vector<Real> _dnodal_relperm_ds;
108 
110  void prepareNodalValues();
111 
113  Real jac(unsigned int wrt_num);
114 };
Q2PPiecewiseLinearSink::_permeability
const MaterialProperty< RealTensorValue > & _permeability
permeability
Definition: Q2PPiecewiseLinearSink.h:86
Q2PPiecewiseLinearSink::_nodal_relperm
std::vector< Real > _nodal_relperm
nodal values of relative permeability
Definition: Q2PPiecewiseLinearSink.h:104
RichardsRelPerm
Base class for Richards relative permeability classes that provide relative permeability as a functio...
Definition: RichardsRelPerm.h:23
Q2PPiecewiseLinearSink::computeQpJacobian
virtual Real computeQpJacobian() override
Definition: Q2PPiecewiseLinearSink.C:185
Q2PPiecewiseLinearSink
Applies a fully-upwinded flux sink to a boundary The sink is a piecewise linear function of porepress...
Definition: Q2PPiecewiseLinearSink.h:36
Q2PPiecewiseLinearSink::_pp
std::vector< Real > _pp
nodal values of porepressure
Definition: Q2PPiecewiseLinearSink.h:92
Q2PPiecewiseLinearSink::_other_var_nodal
const VariableValue & _other_var_nodal
the other variable in the 2-phase system (this is saturation if Variable=porepressure,...
Definition: Q2PPiecewiseLinearSink.h:74
Q2PPiecewiseLinearSink::_dnodal_relperm_ds
std::vector< Real > _dnodal_relperm_ds
d(_nodal_relperm)/d(saturation)
Definition: Q2PPiecewiseLinearSink.h:107
Q2PPiecewiseLinearSink::_use_mobility
bool _use_mobility
whether to multiply the sink flux by permeability*density/viscosity
Definition: Q2PPiecewiseLinearSink.h:56
Q2PPiecewiseLinearSink::prepareNodalValues
void prepareNodalValues()
calculates the nodal values of pressure, mobility, and derivatives thereof
Definition: Q2PPiecewiseLinearSink.C:100
Q2PPiecewiseLinearSink::Q2PPiecewiseLinearSink
Q2PPiecewiseLinearSink(const InputParameters &parameters)
Definition: Q2PPiecewiseLinearSink.C:75
Q2PPiecewiseLinearSink::_relperm
const RichardsRelPerm & _relperm
fluid relative permeability
Definition: Q2PPiecewiseLinearSink.h:71
Q2PPiecewiseLinearSink::_num_nodes
unsigned int _num_nodes
number of nodes in this element.
Definition: Q2PPiecewiseLinearSink.h:89
Q2PPiecewiseLinearSink::_density
const RichardsDensity & _density
fluid density
Definition: Q2PPiecewiseLinearSink.h:68
Q2PPiecewiseLinearSink::_sat
std::vector< Real > _sat
nodal values of saturation
Definition: Q2PPiecewiseLinearSink.h:95
Q2PPiecewiseLinearSink::computeResidual
virtual void computeResidual() override
Definition: Q2PPiecewiseLinearSink.C:149
Q2PPiecewiseLinearSink::computeJacobianBlock
virtual void computeJacobianBlock(MooseVariableFEBase &jvar) override
Definition: Q2PPiecewiseLinearSink.C:191
Q2PPiecewiseLinearSink::_viscosity
Real _viscosity
viscosity
Definition: Q2PPiecewiseLinearSink.h:83
validParams< Q2PPiecewiseLinearSink >
InputParameters validParams< Q2PPiecewiseLinearSink >()
Definition: Q2PPiecewiseLinearSink.C:22
Q2PPiecewiseLinearSink::_var_is_pp
bool _var_is_pp
whether the Variable for this BC is porepressure or not
Definition: Q2PPiecewiseLinearSink.h:80
Q2PPiecewiseLinearSink::_use_relperm
bool _use_relperm
whether to multiply the sink flux by relative permeability
Definition: Q2PPiecewiseLinearSink.h:59
Q2PPiecewiseLinearSink::jac
Real jac(unsigned int wrt_num)
derivative of residual wrt the wrt_num variable
Definition: Q2PPiecewiseLinearSink.C:207
RichardsDensity
Base class for fluid density as a function of porepressure The functions density, ddensity and d2dens...
Definition: RichardsDensity.h:24
Q2PPiecewiseLinearSink::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Definition: Q2PPiecewiseLinearSink.C:198
RichardsRelPerm.h
Q2PPiecewiseLinearSink::_m_func
const Function & _m_func
sink flux gets multiplied by this function
Definition: Q2PPiecewiseLinearSink.h:65
Q2PPiecewiseLinearSink::_other_var_num
unsigned int _other_var_num
the variable number of the other variable
Definition: Q2PPiecewiseLinearSink.h:77
RichardsDensity.h
Q2PPiecewiseLinearSink::_nodal_density
std::vector< Real > _nodal_density
nodal values of fluid density
Definition: Q2PPiecewiseLinearSink.h:98
Q2PPiecewiseLinearSink::_dnodal_density_dp
std::vector< Real > _dnodal_density_dp
d(_nodal_density)/d(porepressure)
Definition: Q2PPiecewiseLinearSink.h:101
Q2PPiecewiseLinearSink::computeJacobian
virtual void computeJacobian() override
Definition: Q2PPiecewiseLinearSink.C:178
Q2PPiecewiseLinearSink::computeQpResidual
virtual Real computeQpResidual() override
Definition: Q2PPiecewiseLinearSink.C:156
Q2PPiecewiseLinearSink::_sink_func
LinearInterpolation _sink_func
piecewise-linear function of porepressure (this defines the strength of the sink)
Definition: Q2PPiecewiseLinearSink.h:62