www.mooseframework.org
Q2PPorepressureFlux.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
19 
20 template <>
21 InputParameters validParams<Q2PPorepressureFlux>();
22 
46 class Q2PPorepressureFlux : public Kernel
47 {
48 public:
49  Q2PPorepressureFlux(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 & _sat;
89 
91  unsigned int _sat_var;
92 
95 
97  Real _viscosity;
98 
100  const MaterialProperty<RealVectorValue> & _gravity;
101 
103  const MaterialProperty<RealTensorValue> & _permeability;
104 
106  unsigned int _num_nodes;
107 
112  std::vector<Real> _mobility;
113 
118  std::vector<Real> _dmobility_dp;
119 
124  std::vector<Real> _dmobility_ds;
125 };
RichardsRelPerm
Base class for Richards relative permeability classes that provide relative permeability as a functio...
Definition: RichardsRelPerm.h:23
Q2PPorepressureFlux::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: Q2PPorepressureFlux.C:128
Q2PPorepressureFlux::computeResidual
virtual void computeResidual() override
This simply calls upwind.
Definition: Q2PPorepressureFlux.C:97
Q2PPorepressureFlux
This is a fully upwinded flux Kernel The Variable of this Kernel should be the porepressure.
Definition: Q2PPorepressureFlux.h:46
Q2PPorepressureFlux::_mobility
std::vector< Real > _mobility
nodal values of mobility = density*relperm/viscosity These are multiplied by _flux_no_mob to give the...
Definition: Q2PPorepressureFlux.h:112
Q2PPorepressureFlux::_relperm
const RichardsRelPerm & _relperm
fluid relative permeability
Definition: Q2PPorepressureFlux.h:94
Q2PPorepressureFlux::_sat_var
unsigned int _sat_var
variable number of the saturation variable
Definition: Q2PPorepressureFlux.h:91
Q2PPorepressureFlux::_viscosity
Real _viscosity
fluid viscosity
Definition: Q2PPorepressureFlux.h:97
Q2PPorepressureFlux::_dmobility_ds
std::vector< Real > _dmobility_ds
d(_mobility)/d(saturation) These are used in the jacobian calculations
Definition: Q2PPorepressureFlux.h:124
Q2PPorepressureFlux::_gravity
const MaterialProperty< RealVectorValue > & _gravity
gravity
Definition: Q2PPorepressureFlux.h:100
Q2PPorepressureFlux::_permeability
const MaterialProperty< RealTensorValue > & _permeability
permeability
Definition: Q2PPorepressureFlux.h:103
Q2PPorepressureFlux::prepareNodalValues
void prepareNodalValues()
calculates the nodal values of mobility, and derivatives thereof
Definition: Q2PPorepressureFlux.C:60
Q2PPorepressureFlux::computeOffDiagJacobian
virtual void computeOffDiagJacobian(MooseVariableFEBase &jvar) override
this simply calls upwind
Definition: Q2PPorepressureFlux.C:109
Q2PPorepressureFlux::computeQpResidual
virtual Real computeQpResidual() override
Note that this is not the complete residual for the quadpoint In computeResidual we sum over the quad...
Definition: Q2PPorepressureFlux.C:88
Q2PPorepressureFlux::_density
const RichardsDensity & _density
fluid density
Definition: Q2PPorepressureFlux.h:85
RichardsDensity
Base class for fluid density as a function of porepressure The functions density, ddensity and d2dens...
Definition: RichardsDensity.h:24
RichardsRelPerm.h
RichardsDensity.h
Q2PPorepressureFlux::_sat
const VariableValue & _sat
saturation at the nodes
Definition: Q2PPorepressureFlux.h:88
Q2PPorepressureFlux::_num_nodes
unsigned int _num_nodes
number of nodes in the element
Definition: Q2PPorepressureFlux.h:106
Q2PPorepressureFlux::computeJacobian
virtual void computeJacobian() override
this simply calls upwind
Definition: Q2PPorepressureFlux.C:103
validParams< Q2PPorepressureFlux >
InputParameters validParams< Q2PPorepressureFlux >()
Definition: Q2PPorepressureFlux.C:26
Q2PPorepressureFlux::computeQpJac
Real computeQpJac(unsigned int dvar)
the derivative of the flux without the upstream mobility terms
Definition: Q2PPorepressureFlux.C:115
Q2PPorepressureFlux::Q2PPorepressureFlux
Q2PPorepressureFlux(const InputParameters &parameters)
Definition: Q2PPorepressureFlux.C:43
Q2PPorepressureFlux::_dmobility_dp
std::vector< Real > _dmobility_dp
d(_mobility)/d(porepressure) These are used in the jacobian calculations
Definition: Q2PPorepressureFlux.h:118