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 
16 
17 template <>
19 
26 class PorousFlowMassTimeDerivative : public TimeKernel
27 {
28 public:
29  PorousFlowMassTimeDerivative(const InputParameters & parameters);
30 
31 protected:
32  virtual Real computeQpResidual() override;
33  virtual Real computeQpJacobian() override;
34  virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;
35 
37  const unsigned int _fluid_component;
38 
41 
43  const bool _var_is_porflow_var;
44 
46  const unsigned int _num_phases;
47 
50 
52  const MaterialProperty<Real> & _porosity;
53 
55  const MaterialProperty<Real> & _porosity_old;
56 
58  const MaterialProperty<std::vector<Real>> & _dporosity_dvar;
59 
61  const MaterialProperty<std::vector<RealGradient>> & _dporosity_dgradvar;
62 
64  const MaterialProperty<unsigned int> * const _nearest_qp;
65 
67  const MaterialProperty<std::vector<Real>> & _fluid_density;
68 
70  const MaterialProperty<std::vector<Real>> & _fluid_density_old;
71 
73  const MaterialProperty<std::vector<std::vector<Real>>> & _dfluid_density_dvar;
74 
76  const MaterialProperty<std::vector<Real>> & _fluid_saturation_nodal;
77 
79  const MaterialProperty<std::vector<Real>> & _fluid_saturation_nodal_old;
80 
82  const MaterialProperty<std::vector<std::vector<Real>>> & _dfluid_saturation_nodal_dvar;
83 
85  const MaterialProperty<std::vector<std::vector<Real>>> & _mass_frac;
86 
88  const MaterialProperty<std::vector<std::vector<Real>>> & _mass_frac_old;
89 
91  const MaterialProperty<std::vector<std::vector<std::vector<Real>>>> & _dmass_frac_dvar;
92 
98  Real computeQpJac(unsigned int pvar);
99 };
100 
PorousFlowMassTimeDerivative::_nearest_qp
const MaterialProperty< unsigned int > *const _nearest_qp
The nearest qp to the node.
Definition: PorousFlowMassTimeDerivative.h:64
PorousFlowDictator.h
PorousFlowMassTimeDerivative::_dictator
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
Definition: PorousFlowMassTimeDerivative.h:40
PorousFlowMassTimeDerivative::_dporosity_dvar
const MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable) - these derivatives will be wrt variables at the nodes
Definition: PorousFlowMassTimeDerivative.h:58
PorousFlowMassTimeDerivative::_porosity
const MaterialProperty< Real > & _porosity
Porosity at the nodes, but it can depend on grad(variables) which are actually evaluated at the qps.
Definition: PorousFlowMassTimeDerivative.h:52
PorousFlowMassTimeDerivative
Kernel = (mass_component - mass_component_old)/dt where mass_component = porosity*sum_phases(density_...
Definition: PorousFlowMassTimeDerivative.h:26
PorousFlowMassTimeDerivative::computeQpResidual
virtual Real computeQpResidual() override
Definition: PorousFlowMassTimeDerivative.C:83
PorousFlowMassTimeDerivative::computeQpJac
Real computeQpJac(unsigned int pvar)
Derivative of residual with respect to PorousFlow variable number pvar This is used by both computeQp...
Definition: PorousFlowMassTimeDerivative.C:117
PorousFlowMassTimeDerivative::_fluid_component
const unsigned int _fluid_component
The fluid component index.
Definition: PorousFlowMassTimeDerivative.h:37
PorousFlowMassTimeDerivative::_mass_frac
const MaterialProperty< std::vector< std::vector< Real > > > & _mass_frac
Nodal mass fraction.
Definition: PorousFlowMassTimeDerivative.h:85
PorousFlowMassTimeDerivative::_fluid_density_old
const MaterialProperty< std::vector< Real > > & _fluid_density_old
Old value of nodal fluid density.
Definition: PorousFlowMassTimeDerivative.h:70
PorousFlowMassTimeDerivative::_fluid_saturation_nodal
const MaterialProperty< std::vector< Real > > & _fluid_saturation_nodal
Nodal fluid saturation.
Definition: PorousFlowMassTimeDerivative.h:76
PorousFlowMassTimeDerivative::_porosity_old
const MaterialProperty< Real > & _porosity_old
Old value of porosity.
Definition: PorousFlowMassTimeDerivative.h:55
PorousFlowMassTimeDerivative::_dfluid_saturation_nodal_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_saturation_nodal_dvar
d(nodal fluid saturation)/d(PorousFlow variable)
Definition: PorousFlowMassTimeDerivative.h:82
PorousFlowMassTimeDerivative::_fluid_density
const MaterialProperty< std::vector< Real > > & _fluid_density
Nodal fluid density.
Definition: PorousFlowMassTimeDerivative.h:67
PorousFlowDictator
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
Definition: PorousFlowDictator.h:71
validParams< PorousFlowMassTimeDerivative >
InputParameters validParams< PorousFlowMassTimeDerivative >()
Definition: PorousFlowMassTimeDerivative.C:22
PorousFlowMassTimeDerivative::_num_phases
const unsigned int _num_phases
Number of fluid phases.
Definition: PorousFlowMassTimeDerivative.h:46
PorousFlowMassTimeDerivative::_dfluid_density_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_density_dvar
d(nodal fluid density)/d(PorousFlow variable)
Definition: PorousFlowMassTimeDerivative.h:73
PorousFlowMassTimeDerivative::PorousFlowMassTimeDerivative
PorousFlowMassTimeDerivative(const InputParameters &parameters)
Definition: PorousFlowMassTimeDerivative.C:41
PorousFlowMassTimeDerivative::_fluid_saturation_nodal_old
const MaterialProperty< std::vector< Real > > & _fluid_saturation_nodal_old
Old value of fluid saturation.
Definition: PorousFlowMassTimeDerivative.h:79
PorousFlowMassTimeDerivative::_dporosity_dgradvar
const MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable) - remember these derivatives will be wrt grad(vars) at qps
Definition: PorousFlowMassTimeDerivative.h:61
PorousFlowMassTimeDerivative::_var_is_porflow_var
const bool _var_is_porflow_var
Whether the Variable for this Kernel is a PorousFlow variable according to the Dictator.
Definition: PorousFlowMassTimeDerivative.h:43
PorousFlowMassTimeDerivative::_dmass_frac_dvar
const MaterialProperty< std::vector< std::vector< std::vector< Real > > > > & _dmass_frac_dvar
d(nodal mass fraction)/d(PorousFlow variable)
Definition: PorousFlowMassTimeDerivative.h:91
PorousFlowMassTimeDerivative::_strain_at_nearest_qp
const bool _strain_at_nearest_qp
Whether the porosity uses the volumetric strain at the closest quadpoint.
Definition: PorousFlowMassTimeDerivative.h:49
PorousFlowMassTimeDerivative::computeQpJacobian
virtual Real computeQpJacobian() override
Definition: PorousFlowMassTimeDerivative.C:99
PorousFlowMassTimeDerivative::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Definition: PorousFlowMassTimeDerivative.C:108
PorousFlowMassTimeDerivative::_mass_frac_old
const MaterialProperty< std::vector< std::vector< Real > > > & _mass_frac_old
Old value of nodal mass fraction.
Definition: PorousFlowMassTimeDerivative.h:88