www.mooseframework.org
PorousFlowDispersiveFlux.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 "PorousFlowDictator.h"
14 #include "RankTwoTensor.h"
15 
17 
18 template <>
20 
25 class PorousFlowDispersiveFlux : public Kernel
26 {
27 public:
28  PorousFlowDispersiveFlux(const InputParameters & parameters);
29 
30 protected:
31  virtual Real computeQpResidual() override;
32 
33  virtual Real computeQpJacobian() override;
34 
35  virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;
36 
44  Real computeQpJac(unsigned int jvar) const;
45 
47  const MaterialProperty<std::vector<Real>> & _fluid_density_qp;
48 
50  const MaterialProperty<std::vector<std::vector<Real>>> & _dfluid_density_qp_dvar;
51 
53  const MaterialProperty<std::vector<std::vector<RealGradient>>> & _grad_mass_frac;
54 
56  const MaterialProperty<std::vector<std::vector<std::vector<Real>>>> & _dmass_frac_dvar;
57 
59  const MaterialProperty<Real> & _porosity_qp;
60 
62  const MaterialProperty<std::vector<Real>> & _dporosity_qp_dvar;
63 
65  const MaterialProperty<std::vector<Real>> & _tortuosity;
66 
68  const MaterialProperty<std::vector<std::vector<Real>>> & _dtortuosity_dvar;
69 
71  const MaterialProperty<std::vector<std::vector<Real>>> & _diffusion_coeff;
72 
74  const MaterialProperty<std::vector<std::vector<std::vector<Real>>>> & _ddiffusion_coeff_dvar;
75 
78 
80  const unsigned int _fluid_component;
81 
83  const unsigned int _num_phases;
84 
87 
89  const MaterialProperty<std::vector<Real>> & _relative_permeability;
90 
92  const MaterialProperty<std::vector<std::vector<Real>>> & _drelative_permeability_dvar;
93 
95  const MaterialProperty<std::vector<Real>> & _fluid_viscosity;
96 
98  const MaterialProperty<std::vector<std::vector<Real>>> & _dfluid_viscosity_dvar;
99 
101  const MaterialProperty<RealTensorValue> & _permeability;
102 
104  const MaterialProperty<std::vector<RealTensorValue>> & _dpermeability_dvar;
105 
107  const MaterialProperty<std::vector<std::vector<RealTensorValue>>> & _dpermeability_dgradvar;
108 
110  const MaterialProperty<std::vector<RealGradient>> & _grad_p;
111 
113  const MaterialProperty<std::vector<std::vector<Real>>> & _dgrad_p_dgrad_var;
114 
116  const MaterialProperty<std::vector<std::vector<RealGradient>>> & _dgrad_p_dvar;
117 
119  const RealVectorValue _gravity;
120 
122  const std::vector<Real> _disp_long;
123 
125  const std::vector<Real> _disp_trans;
126 
128  const bool _perm_derivs;
129 };
PorousFlowDispersiveFlux::computeQpJac
Real computeQpJac(unsigned int jvar) const
Derivative of the residual with respect to the PorousFLow Variable with variable number jvar.
Definition: PorousFlowDispersiveFlux.C:143
PorousFlowDispersiveFlux::_dgrad_p_dvar
const MaterialProperty< std::vector< std::vector< RealGradient > > > & _dgrad_p_dvar
Derivative of Grad porepressure in each phase wrt PorousFlow variables.
Definition: PorousFlowDispersiveFlux.h:116
PorousFlowDictator.h
PorousFlowDispersiveFlux::_tortuosity
const MaterialProperty< std::vector< Real > > & _tortuosity
Tortuosity tau_0 * tau_{alpha} for fluid phase alpha.
Definition: PorousFlowDispersiveFlux.h:65
PorousFlowDispersiveFlux::_gravity
const RealVectorValue _gravity
Gravitational acceleration.
Definition: PorousFlowDispersiveFlux.h:119
PorousFlowDispersiveFlux::_fluid_component
const unsigned int _fluid_component
Index of the fluid component that this kernel acts on.
Definition: PorousFlowDispersiveFlux.h:80
PorousFlowDispersiveFlux::_dfluid_viscosity_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_viscosity_dvar
Derivative of viscosity wrt PorousFlow variables.
Definition: PorousFlowDispersiveFlux.h:98
PorousFlowDispersiveFlux::_fluid_density_qp
const MaterialProperty< std::vector< Real > > & _fluid_density_qp
Fluid density for each phase (at the qp)
Definition: PorousFlowDispersiveFlux.h:47
PorousFlowDispersiveFlux::_permeability
const MaterialProperty< RealTensorValue > & _permeability
Permeability of porous material.
Definition: PorousFlowDispersiveFlux.h:101
PorousFlowDispersiveFlux::_grad_mass_frac
const MaterialProperty< std::vector< std::vector< RealGradient > > > & _grad_mass_frac
Gradient of mass fraction of each component in each phase.
Definition: PorousFlowDispersiveFlux.h:53
PorousFlowDispersiveFlux::_disp_trans
const std::vector< Real > _disp_trans
Transverse dispersivity for each phase.
Definition: PorousFlowDispersiveFlux.h:125
PorousFlowDispersiveFlux::_dpermeability_dgradvar
const MaterialProperty< std::vector< std::vector< RealTensorValue > > > & _dpermeability_dgradvar
d(permeabiity)/d(grad(PorousFlow variable))
Definition: PorousFlowDispersiveFlux.h:107
PorousFlowDispersiveFlux::_num_phases
const unsigned int _num_phases
The number of fluid phases.
Definition: PorousFlowDispersiveFlux.h:83
PorousFlowDispersiveFlux::_dtortuosity_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dtortuosity_dvar
Derivative of tortuosity wrt PorousFlow variables.
Definition: PorousFlowDispersiveFlux.h:68
PorousFlowDispersiveFlux::_perm_derivs
const bool _perm_derivs
Flag to check whether permeabiity derivatives are non-zero.
Definition: PorousFlowDispersiveFlux.h:128
PorousFlowDispersiveFlux::_drelative_permeability_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _drelative_permeability_dvar
Derivative of relative permeability wrt PorousFlow variables.
Definition: PorousFlowDispersiveFlux.h:92
PorousFlowDispersiveFlux::_relative_permeability
const MaterialProperty< std::vector< Real > > & _relative_permeability
Relative permeability of each phase.
Definition: PorousFlowDispersiveFlux.h:89
PorousFlowDispersiveFlux::_dictator
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
Definition: PorousFlowDispersiveFlux.h:77
PorousFlowDispersiveFlux::_dmass_frac_dvar
const MaterialProperty< std::vector< std::vector< std::vector< Real > > > > & _dmass_frac_dvar
Derivative of mass fraction wrt PorousFlow variables.
Definition: PorousFlowDispersiveFlux.h:56
PorousFlowDispersiveFlux::_ddiffusion_coeff_dvar
const MaterialProperty< std::vector< std::vector< std::vector< Real > > > > & _ddiffusion_coeff_dvar
Derivative of the diffusion coefficients wrt PorousFlow variables.
Definition: PorousFlowDispersiveFlux.h:74
PorousFlowDispersiveFlux::_dpermeability_dvar
const MaterialProperty< std::vector< RealTensorValue > > & _dpermeability_dvar
Derivative of permeability wrt PorousFlow variables.
Definition: PorousFlowDispersiveFlux.h:104
PorousFlowDispersiveFlux::_dgrad_p_dgrad_var
const MaterialProperty< std::vector< std::vector< Real > > > & _dgrad_p_dgrad_var
Derivative of Grad porepressure in each phase wrt grad(PorousFlow variables)
Definition: PorousFlowDispersiveFlux.h:113
PorousFlowDictator
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
Definition: PorousFlowDictator.h:71
PorousFlowDispersiveFlux::_dfluid_density_qp_dvar
const MaterialProperty< std::vector< std::vector< Real > > > & _dfluid_density_qp_dvar
Derivative of the fluid density for each phase wrt PorousFlow variables (at the qp)
Definition: PorousFlowDispersiveFlux.h:50
PorousFlowDispersiveFlux::_fluid_viscosity
const MaterialProperty< std::vector< Real > > & _fluid_viscosity
Viscosity of each component in each phase.
Definition: PorousFlowDispersiveFlux.h:95
PorousFlowDispersiveFlux::_disp_long
const std::vector< Real > _disp_long
Longitudinal dispersivity for each phase.
Definition: PorousFlowDispersiveFlux.h:122
PorousFlowDispersiveFlux::_identity_tensor
const RankTwoTensor _identity_tensor
Identity tensor.
Definition: PorousFlowDispersiveFlux.h:86
PorousFlowDispersiveFlux::computeQpResidual
virtual Real computeQpResidual() override
Definition: PorousFlowDispersiveFlux.C:94
PorousFlowDispersiveFlux::_grad_p
const MaterialProperty< std::vector< RealGradient > > & _grad_p
Gradient of the pore pressure in each phase.
Definition: PorousFlowDispersiveFlux.h:110
PorousFlowDispersiveFlux::computeQpJacobian
virtual Real computeQpJacobian() override
Definition: PorousFlowDispersiveFlux.C:131
PorousFlowDispersiveFlux::PorousFlowDispersiveFlux
PorousFlowDispersiveFlux(const InputParameters &parameters)
Definition: PorousFlowDispersiveFlux.C:36
PorousFlowDispersiveFlux
Dispersive flux of component k in fluid phase alpha.
Definition: PorousFlowDispersiveFlux.h:25
PorousFlowDispersiveFlux::_porosity_qp
const MaterialProperty< Real > & _porosity_qp
Porosity at the qps.
Definition: PorousFlowDispersiveFlux.h:59
validParams< PorousFlowDispersiveFlux >
InputParameters validParams< PorousFlowDispersiveFlux >()
Definition: PorousFlowDispersiveFlux.C:18
PorousFlowDispersiveFlux::_diffusion_coeff
const MaterialProperty< std::vector< std::vector< Real > > > & _diffusion_coeff
Diffusion coefficients of component k in fluid phase alpha.
Definition: PorousFlowDispersiveFlux.h:71
RankTwoTensorTempl
Definition: ACGrGrElasticDrivingForce.h:17
PorousFlowDispersiveFlux::_dporosity_qp_dvar
const MaterialProperty< std::vector< Real > > & _dporosity_qp_dvar
Derivative of porosity wrt PorousFlow variables (at the qps)
Definition: PorousFlowDispersiveFlux.h:62
PorousFlowDispersiveFlux::computeQpOffDiagJacobian
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Definition: PorousFlowDispersiveFlux.C:137