https://mooseframework.inl.gov
Loading...
Searching...
No Matches
PorousFlowPorosityExponentialBase.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
13
31template <bool is_ad>
33{
34public:
36
38
39protected:
40 virtual void initQpStatefulProperties() override;
41 virtual void computeQpProperties() override;
42
45
47 virtual Real datNegInfinityQp(unsigned pvar) const = 0;
48
50 virtual GenericReal<is_ad> atZeroQp() const = 0;
51
53 virtual Real datZeroQp(unsigned pvar) const = 0;
54
56 virtual GenericReal<is_ad> decayQp() const = 0;
57
59 virtual Real ddecayQp_dvar(unsigned pvar) const = 0;
60
62 virtual RealGradient ddecayQp_dgradvar(unsigned pvar) const = 0;
63
66
74 const bool _ensure_positive;
75
77};
78
79#define usingPorousFlowPorosityExponentialBaseMembers \
80 usingPorousFlowPorosityBaseMembers; \
81 using Coupleable::coupledComponents; \
82 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_dictator; \
83 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_nodal_material; \
84 using PorousFlowPorosityExponentialBaseTempl<is_ad>::nodalOrQpValue; \
85 using PorousFlowPorosityExponentialBaseTempl<is_ad>::nearestQP; \
86 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_current_elem; \
87 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_current_side; \
88 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_bnd; \
89 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_qrule; \
90 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_q_point; \
91 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_constant_option; \
92 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_t_step; \
93 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_dt; \
94 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_app; \
95 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_strain_at_nearest_qp; \
96 using PorousFlowPorosityExponentialBaseTempl<is_ad>::_ensure_positive
97
Moose::GenericType< Real, is_ad > GenericReal
PorousFlowPorosityExponentialBaseTempl< false > PorousFlowPorosityExponentialBase
PorousFlowPorosityExponentialBaseTempl< true > ADPorousFlowPorosityExponentialBase
Base class Material designed to provide the porosity.
Base class Material designed to provide the porosity.
virtual GenericReal< is_ad > atNegInfinityQp() const =0
Returns "a" at the quadpoint (porosity = a + (b - a) * exp(decay))
virtual GenericReal< is_ad > decayQp() const =0
Returns "decay" at the quadpoint (porosity = a + (b - a) * exp(decay))
virtual GenericReal< is_ad > atZeroQp() const =0
Returns "b" at the quadpoint (porosity = a + (b - a) * exp(decay))
virtual RealGradient ddecayQp_dgradvar(unsigned pvar) const =0
d(decay)/d(grad(PorousFlow variable pvar))
virtual Real datZeroQp(unsigned pvar) const =0
d(b)/d(PorousFlow variable pvar)
virtual Real datNegInfinityQp(unsigned pvar) const =0
d(a)/d(PorousFlow variable pvar)
virtual Real ddecayQp_dvar(unsigned pvar) const =0
d(decay)/d(PorousFlow variable pvar)
const bool _strain_at_nearest_qp
When calculating nodal porosity, use the strain at the nearest quadpoint to the node.
const bool _ensure_positive
for decayQp() > 0, porosity can be negative when using porosity = a + (b - a) * exp(decay).