www.mooseframework.org
PorousFlowMassTimeDerivative.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 "TimeDerivative.h"
13 #include "PorousFlowDictator.h"
14 
24 {
25 public:
27 
29 
30 protected:
31  virtual Real computeQpResidual() override;
32  virtual Real computeQpJacobian() override;
33  virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;
34 
36  const unsigned int _fluid_component;
37 
40 
42  const bool _var_is_porflow_var;
43 
45  const unsigned int _num_phases;
46 
49 
52 
54  const std::string _base_name;
55 
57  const bool _has_total_strain;
58 
61 
64 
67 
70 
73 
76 
79 
82 
85 
88 
91 
94 
97 
100 
103 
109  Real computeQpJac(unsigned int pvar);
110 };
const bool _strain_at_nearest_qp
Whether the porosity uses the volumetric strain at the closest quadpoint.
const MaterialProperty< std::vector< Real > > *const _fluid_density
Nodal fluid density.
const MaterialProperty< Real > & _porosity_old
Old value of porosity.
const MaterialProperty< Real > & _porosity
Porosity at the nodes, but it can depend on grad(variables) which are actually evaluated at the qps...
Real computeQpJac(unsigned int pvar)
Derivative of residual with respect to PorousFlow variable number pvar This is used by both computeQp...
const MaterialProperty< RankTwoTensor > *const _total_strain_old
Old value of total strain calculated by a Tensor Mechanics strain calculator, if it exists...
const MaterialProperty< std::vector< Real > > & _fluid_saturation_nodal
Nodal fluid saturation.
const MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable) - remember these derivatives will be wrt grad(vars) at qps ...
const std::string _base_name
base name used in the Tensor Mechanics strain calculator
const bool _var_is_porflow_var
Whether the Variable for this Kernel is a PorousFlow variable according to the Dictator.
PorousFlowMassTimeDerivative(const InputParameters &parameters)
const MaterialProperty< std::vector< Real > > & _fluid_saturation_nodal_old
Old value of fluid saturation.
const MaterialProperty< std::vector< std::vector< Real > > > *const _dfluid_density_dvar
d(nodal fluid density)/d(PorousFlow variable)
const MaterialProperty< std::vector< std::vector< Real > > > & _mass_frac
Nodal mass fraction.
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
const bool _has_total_strain
Whether there is a Material called _base_name_total_strain.
const MaterialProperty< std::vector< std::vector< Real > > > & _mass_frac_old
Old value of nodal mass fraction.
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_saturation_nodal_dvar
d(nodal fluid saturation)/d(PorousFlow variable)
const MaterialProperty< std::vector< std::vector< std::vector< Real > > > > & _dmass_frac_dvar
d(nodal mass fraction)/d(PorousFlow variable)
const bool _multiply_by_density
Whether to multiply by density: if true then this Kernel is computing the time-derivative of fluid ma...
Kernel = (mass_component - mass_component_old)/dt where mass_component = porosity*sum_phases(density_...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
const unsigned int _num_phases
Number of fluid phases.
const unsigned int _fluid_component
The fluid component index.
const InputParameters & parameters() const
const MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable) - these derivatives will be wrt variables at the nodes ...
const MaterialProperty< unsigned int > *const _nearest_qp
The nearest qp to the node.
const MaterialProperty< std::vector< Real > > *const _fluid_density_old
Old value of nodal fluid density.