www.mooseframework.org
PorousFlowMassVolumetricExpansion.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 #include "RankTwoTensor.h"
15 
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  unsigned int _ndisp;
46 
48  std::vector<unsigned int> _disp_var_num;
49 
51  const unsigned int _num_phases;
52 
55 
58 
61 
64 
67 
70 
73 
76 
79 
82 
85 
88 
91 
94 
101  Real computedMassQpJac(unsigned int jvar) const;
102 
110  Real computedVolQpJac(unsigned int jvar) const;
111 };
const MaterialProperty< std::vector< std::vector< Real > > > & _mass_frac
Mass fraction.
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_saturation_dvar
d(fluid saturation)/d(PorousFlow variable)
PorousFlowMassVolumetricExpansion(const InputParameters &parameters)
std::vector< unsigned int > _disp_var_num
Variable number of the displacements variables.
const bool _var_is_porflow_var
Whether the Variable for this Kernel is a PorousFlow variable according to the Dictator.
const MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable)
const MaterialProperty< Real > & _porosity
Porosity.
const unsigned int _fluid_component
The fluid component index.
const MaterialProperty< std::vector< std::vector< std::vector< Real > > > > & _dmass_frac_dvar
d(mass fraction)/d(PorousFlow variable)
const MaterialProperty< std::vector< Real > > & _fluid_saturation
Fluid saturation.
const bool _multiply_by_density
Whether to multiply by density: if true then this Kernel involves the fluid mass, otherwise it involv...
const MaterialProperty< unsigned int > *const _nearest_qp
The nearest qp to the node.
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
const MaterialProperty< std::vector< Real > > *const _fluid_density
Fluid density.
const MaterialProperty< std::vector< RealGradient > > & _dstrain_rate_qp_dvar
d(strain rate)/d(PorousFlow variable)
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
const MaterialProperty< std::vector< std::vector< Real > > > *const _dfluid_density_dvar
d(fluid density)/d(PorousFlow variable)
const unsigned int _num_phases
Number of fluid phases.
unsigned int _ndisp
Number of displacement variables.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Kernel = mass_component * d(volumetric_strain)/dt where mass_component = porosity*sum_phases(density_...
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
const MaterialProperty< Real > & _strain_rate_qp
Strain rate.
const MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable)
const InputParameters & parameters() const
Real computedMassQpJac(unsigned int jvar) const
Derivative of mass part of the residual with respect to the Variable with variable number jvar...
Real computedVolQpJac(unsigned int jvar) const
Derivative of volumetric-strain part of the residual with respect to the Variable with variable numbe...
const bool _strain_at_nearest_qp
Whether the porosity uses the volumetric strain at the closest quadpoint.