v0.15.0
Loading...
Searching...
No Matches
MixTransport::MaterialWithAutomaticDifferentiation Struct Referenceabstract

#include "tutorials/cor-0to1/src/MaterialUnsaturatedFlow.hpp"

Inheritance diagram for MixTransport::MaterialWithAutomaticDifferentiation:
[legend]
Collaboration diagram for MixTransport::MaterialWithAutomaticDifferentiation:
[legend]

Public Member Functions

 MaterialWithAutomaticDifferentiation (const CommonMaterialData &data)
 
template<typename TYPE >
TYPE funSe (TYPE &theta)
 
virtual void recordTheta ()=0
 
virtual void recordKr ()=0
 
MoFEMErrorCode calK ()
 
MoFEMErrorCode calDiffK ()
 
MoFEMErrorCode calC ()
 
MoFEMErrorCode calDiffC ()
 
MoFEMErrorCode calTheta ()
 
MoFEMErrorCode calSe ()
 
- Public Member Functions inherited from MixTransport::CommonMaterialData
 CommonMaterialData ()
 
double initialPcEval () const
 Initialize head.
 
void addOptions (po::options_description &o, const std::string &prefix)
 
void printMatParameters (const int id, const std::string &prefix) const
 
- Public Member Functions inherited from MixTransport::GenericMaterial
virtual ~GenericMaterial ()
 

Public Attributes

double Kr
 
double diffKr
 
- Public Attributes inherited from MixTransport::CommonMaterialData
int blockId
 Block Id.
 
std::string matName
 material name
 
double Ks
 Saturated hydraulic conductivity [m/day].
 
double hS
 minimum capillary height [m]
 
double thetaS
 saturated water content
 
double thetaR
 residual water contents
 
double thetaM
 model parameter
 
double alpha
 model parameter
 
double n
 model parameter
 
double Ah
 Initial hydraulic head coefficient.
 
double AhZ
 Initial hydraulic head coefficient.
 
double AhZZ
 Initial hydraulic head coefficient.
 
- Public Attributes inherited from MixTransport::GenericMaterial
double sCale
 Scale time dependent eq.
 
double h
 hydraulic head
 
double h_t
 rate of hydraulic head
 
double K
 Hydraulic conductivity [L/s].
 
double diffK
 Derivative of hydraulic conductivity [L/s * L^2/F].
 
double C
 Capacity [S^2/L^2].
 
double diffC
 Derivative of capacity [S^2/L^2 * L^2/F ].
 
double tHeta
 Water content.
 
double Se
 Effective saturation.
 
Range tEts
 Elements with this material.
 
double x
 
double y
 
double z
 in meters (L)
 

Additional Inherited Members

- Public Types inherited from MixTransport::CommonMaterialData
typedef boost::function< boost::shared_ptr< CommonMaterialData >(const CommonMaterialData &data)> RegisterHook
 
- Static Public Attributes inherited from MixTransport::GenericMaterial
static double ePsilon0 = 0
 Regularization parameter.
 
static double ePsilon1 = 0
 Regularization parameter.
 
static double scaleZ = 1
 Scale z direction.
 

Detailed Description

Definition at line 148 of file MaterialUnsaturatedFlow.hpp.

Constructor & Destructor Documentation

◆ MaterialWithAutomaticDifferentiation()

MixTransport::MaterialWithAutomaticDifferentiation::MaterialWithAutomaticDifferentiation ( const CommonMaterialData & data)
inline

Member Function Documentation

◆ calC()

MoFEMErrorCode MixTransport::MaterialWithAutomaticDifferentiation::calC ( )
inlinevirtual

Reimplemented from MixTransport::GenericMaterial.

Definition at line 194 of file MaterialUnsaturatedFlow.hpp.

194 {
196 if (h < hS) {
197 int r = ::gradient(2 * blockId + 0, 1, &h, &C);
198 if (r < 0) {
199 SETERRQ(PETSC_COMM_SELF, MOFEM_OPERATION_UNSUCCESSFUL,
200 "ADOL-C function evaluation with error");
201 }
202 } else {
203 C = 0;
204 }
205 C += ePsilon1;
207 }
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
@ MOFEM_OPERATION_UNSUCCESSFUL
Definition definitions.h:34
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
int r
Definition sdf.py:8
double hS
minimum capillary height [m]
double C
Capacity [S^2/L^2].
static double ePsilon1
Regularization parameter.

◆ calDiffC()

MoFEMErrorCode MixTransport::MaterialWithAutomaticDifferentiation::calDiffC ( )
inlinevirtual

Reimplemented from MixTransport::GenericMaterial.

Definition at line 209 of file MaterialUnsaturatedFlow.hpp.

209 {
211 if (h < hS) {
212 double v = 1;
213 int r = ::hess_vec(2 * blockId + 0, 1, &h, &v, &diffC);
214 if (r < 0) {
215 SETERRQ(PETSC_COMM_SELF, MOFEM_OPERATION_UNSUCCESSFUL,
216 "ADOL-C function evaluation with error");
217 }
218 } else {
219 diffC = 0;
220 }
222 }
const double v
phase velocity of light in medium (cm/ns)
double diffC
Derivative of capacity [S^2/L^2 * L^2/F ].

◆ calDiffK()

MoFEMErrorCode MixTransport::MaterialWithAutomaticDifferentiation::calDiffK ( )
inlinevirtual

Reimplemented from MixTransport::GenericMaterial.

Definition at line 178 of file MaterialUnsaturatedFlow.hpp.

178 {
180 if (h < hS) {
181 diffK = 0;
182 int r = ::gradient(2 * blockId + 1, 1, &h, &diffKr);
183 if (r < 0) {
184 SETERRQ(PETSC_COMM_SELF, MOFEM_OPERATION_UNSUCCESSFUL,
185 "ADOL-C function evaluation with error");
186 }
187 diffK = Ks * diffKr;
188 } else {
189 diffK = 0;
190 }
192 };
double Ks
Saturated hydraulic conductivity [m/day].
double diffK
Derivative of hydraulic conductivity [L/s * L^2/F].

◆ calK()

MoFEMErrorCode MixTransport::MaterialWithAutomaticDifferentiation::calK ( )
inlinevirtual

Reimplemented from MixTransport::GenericMaterial.

Definition at line 161 of file MaterialUnsaturatedFlow.hpp.

161 {
163 if (h < hS) {
164 int r = ::function(2 * blockId + 1, 1, 1, &h, &Kr);
165 if (r < 0) {
166 SETERRQ(PETSC_COMM_SELF, MOFEM_OPERATION_UNSUCCESSFUL,
167 "ADOL-C function evaluation with error");
168 }
169 K = Ks * Kr;
170 } else {
171 K = Ks;
172 }
173 K += Ks * ePsilon0;
175 };
static double ePsilon0
Regularization parameter.
double K
Hydraulic conductivity [L/s].

◆ calSe()

MoFEMErrorCode MixTransport::MaterialWithAutomaticDifferentiation::calSe ( )
inlinevirtual

Reimplemented from MixTransport::GenericMaterial.

Definition at line 238 of file MaterialUnsaturatedFlow.hpp.

238 {
240 if (h < hS) {
241 int r = ::function(2 * blockId + 0, 1, 1, &h, &tHeta);
242 Se = funSe(tHeta);
243 if (r < 0) {
244 SETERRQ(PETSC_COMM_SELF, MOFEM_OPERATION_UNSUCCESSFUL,
245 "ADOL-C function evaluation with error");
246 }
247 } else {
248 tHeta = thetaS;
249 }
251 }
double thetaS
saturated water content
double Se
Effective saturation.

◆ calTheta()

MoFEMErrorCode MixTransport::MaterialWithAutomaticDifferentiation::calTheta ( )
inlinevirtual

Reimplemented from MixTransport::GenericMaterial.

Definition at line 224 of file MaterialUnsaturatedFlow.hpp.

224 {
226 if (h < hS) {
227 int r = ::function(2 * blockId + 0, 1, 1, &h, &tHeta);
228 if (r < 0) {
229 SETERRQ(PETSC_COMM_SELF, MOFEM_OPERATION_UNSUCCESSFUL,
230 "ADOL-C function evaluation with error");
231 }
232 } else {
233 tHeta = thetaS;
234 }
236 }

◆ funSe()

template<typename TYPE >
TYPE MixTransport::MaterialWithAutomaticDifferentiation::funSe ( TYPE & theta)
inline

Definition at line 152 of file MaterialUnsaturatedFlow.hpp.

152 {
153 return (theta - thetaR) / (thetaS - thetaR);
154 }
double thetaR
residual water contents

◆ recordKr()

virtual void MixTransport::MaterialWithAutomaticDifferentiation::recordKr ( )
pure virtual

◆ recordTheta()

virtual void MixTransport::MaterialWithAutomaticDifferentiation::recordTheta ( )
pure virtual

Member Data Documentation

◆ diffKr

double MixTransport::MaterialWithAutomaticDifferentiation::diffKr

Definition at line 177 of file MaterialUnsaturatedFlow.hpp.

◆ Kr

double MixTransport::MaterialWithAutomaticDifferentiation::Kr

Definition at line 160 of file MaterialUnsaturatedFlow.hpp.


The documentation for this struct was generated from the following file: