www.mooseframework.org
Q2PSaturationFlux.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 "Kernel.h"
13 #include "RichardsDensity.h"
14 #include "RichardsRelPerm.h"
15 #include "Material.h"
16 
17 // Forward Declarations
18 class Q2PSaturationFlux;
19 
20 template <>
21 InputParameters validParams<Q2PSaturationFlux>();
22 
46 class Q2PSaturationFlux : public Kernel
47 {
48 public:
49  Q2PSaturationFlux(const InputParameters & parameters);
50 
51 protected:
57  virtual Real computeQpResidual() override;
58 
60  virtual void computeResidual() override;
61 
63  virtual void computeOffDiagJacobian(MooseVariableFEBase & jvar) override;
64  using Kernel::computeOffDiagJacobian;
65 
67  virtual void computeJacobian() override;
68 
70  Real computeQpJac(unsigned int dvar);
71 
79  void upwind(bool compute_res, bool compute_jac, unsigned int jvar);
80 
82  void prepareNodalValues();
83 
86 
88  const VariableValue & _pp;
89 
91  const VariableGradient & _grad_pp;
92 
94  const VariableValue & _pp_nodal;
95 
97  unsigned int _pp_var;
98 
101 
104 
106  const MaterialProperty<RealVectorValue> & _gravity;
107 
109  const MaterialProperty<RealTensorValue> & _permeability;
110 
112  unsigned int _num_nodes;
113 
118  std::vector<Real> _mobility;
119 
124  std::vector<Real> _dmobility_dp;
125 
130  std::vector<Real> _dmobility_ds;
131 };
Q2PSaturationFlux::_dmobility_dp
std::vector< Real > _dmobility_dp
d(_mobility)/d(porepressure) These are used in the jacobian calculations
Definition: Q2PSaturationFlux.h:124
Q2PSaturationFlux::_viscosity
Real _viscosity
fluid viscosity
Definition: Q2PSaturationFlux.h:103
Q2PSaturationFlux::_dmobility_ds
std::vector< Real > _dmobility_ds
d(_mobility)/d(saturation) These are used in the jacobian calculations
Definition: Q2PSaturationFlux.h:130
Q2PSaturationFlux
This is a fully upwinded flux Kernel The Variable of this Kernel should be the saturation.
Definition: Q2PSaturationFlux.h:46
Q2PSaturationFlux::_permeability
const MaterialProperty< RealTensorValue > & _permeability
permeability
Definition: Q2PSaturationFlux.h:109
Q2PSaturationFlux::_num_nodes
unsigned int _num_nodes
number of nodes in the element
Definition: Q2PSaturationFlux.h:112
RichardsRelPerm
Base class for Richards relative permeability classes that provide relative permeability as a functio...
Definition: RichardsRelPerm.h:23
Q2PSaturationFlux::_mobility
std::vector< Real > _mobility
nodal values of mobility = density*relperm/viscosity These are multiplied by _flux_no_mob to give the...
Definition: Q2PSaturationFlux.h:118
Q2PSaturationFlux::computeJacobian
virtual void computeJacobian() override
this simply calls upwind
Definition: Q2PSaturationFlux.C:107
Q2PSaturationFlux::_pp
const VariableValue & _pp
porepressure at the quadpoints
Definition: Q2PSaturationFlux.h:88
Q2PSaturationFlux::Q2PSaturationFlux
Q2PSaturationFlux(const InputParameters &parameters)
Definition: Q2PSaturationFlux.C:44
Q2PSaturationFlux::upwind
void upwind(bool compute_res, bool compute_jac, unsigned int jvar)
Do the upwinding for both the residual and jacobian I've put both calculations in the same code to tr...
Definition: Q2PSaturationFlux.C:132
Q2PSaturationFlux::_grad_pp
const VariableGradient & _grad_pp
grad(porepressure) at the quadpoints
Definition: Q2PSaturationFlux.h:91
validParams< Q2PSaturationFlux >
InputParameters validParams< Q2PSaturationFlux >()
Definition: Q2PSaturationFlux.C:26
Q2PSaturationFlux::computeOffDiagJacobian
virtual void computeOffDiagJacobian(MooseVariableFEBase &jvar) override
this simply calls upwind
Definition: Q2PSaturationFlux.C:113
Q2PSaturationFlux::_pp_var
unsigned int _pp_var
variable number of the porepressure variable
Definition: Q2PSaturationFlux.h:97
Q2PSaturationFlux::_gravity
const MaterialProperty< RealVectorValue > & _gravity
gravity
Definition: Q2PSaturationFlux.h:106
Q2PSaturationFlux::_density
const RichardsDensity & _density
fluid density
Definition: Q2PSaturationFlux.h:85
Q2PSaturationFlux::_pp_nodal
const VariableValue & _pp_nodal
porepressure at the nodes
Definition: Q2PSaturationFlux.h:94
RichardsDensity
Base class for fluid density as a function of porepressure The functions density, ddensity and d2dens...
Definition: RichardsDensity.h:24
Q2PSaturationFlux::computeResidual
virtual void computeResidual() override
This simply calls upwind.
Definition: Q2PSaturationFlux.C:101
RichardsRelPerm.h
RichardsDensity.h
Q2PSaturationFlux::computeQpJac
Real computeQpJac(unsigned int dvar)
the derivative of the flux without the upstream mobility terms
Definition: Q2PSaturationFlux.C:119
Q2PSaturationFlux::computeQpResidual
virtual Real computeQpResidual() override
Note that this is not the complete residual for the quadpoint In computeResidual we sum over the quad...
Definition: Q2PSaturationFlux.C:92
Q2PSaturationFlux::prepareNodalValues
void prepareNodalValues()
calculates the nodal values of mobility, and derivatives thereof
Definition: Q2PSaturationFlux.C:63
Q2PSaturationFlux::_relperm
const RichardsRelPerm & _relperm
fluid relative permeability
Definition: Q2PSaturationFlux.h:100