KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
van_genuchten_law.h
Go to the documentation of this file.
1 // KRATOS___
2 // // ) )
3 // // ___ ___
4 // // ____ //___) ) // ) )
5 // // / / // // / /
6 // ((____/ / ((____ ((___/ / MECHANICS
7 //
8 // License: geo_mechanics_application/license.txt
9 //
10 // Main authors: Vahid Galavi
11 //
12 
13 #pragma once
14 
15 // System includes
16 #include <string>
17 #include <iostream>
18 #include "includes/define.h"
19 
20 // External includes
21 
22 // Project includes
23 #include "includes/serializer.h"
25 
26 // Application includes
28 
29 namespace Kratos
30 {
38 class KRATOS_API(GEO_MECHANICS_APPLICATION) VanGenuchtenLaw
39  : public RetentionLaw
40 {
41 public:
44 
46 
48  using SizeType = std::size_t;
49 
52 
53  RetentionLaw::Pointer Clone() const override;
54 
55  void InitializeMaterial(const Properties& rMaterialProperties,
56  const GeometryType& rElementGeometry,
57  const Vector& rShapeFunctionsValues) override;
58 
59  void Initialize(Parameters &rParameters) override;
60 
61  void InitializeSolutionStep(Parameters &rParameters) override;
62 
63  double CalculateSaturation(Parameters &rParameters) override;
64 
65  double CalculateEffectiveSaturation(Parameters &rParameters) override;
66 
67  double CalculateDerivativeOfSaturation(Parameters &rParameters) override;
68 
69  double CalculateRelativePermeability(Parameters &rParameters) override;
70 
71  double CalculateBishopCoefficient(Parameters &rParameters) override;
72 
73  void Finalize(Parameters &rParameters) override;
74 
75  void FinalizeSolutionStep(Parameters &rParameters) override;
76 
84  double& CalculateValue(RetentionLaw::Parameters& rParameterValues,
85  const Variable<double>& rThisVariable,
86  double& rValue) override;
87 
88 
97  int Check(const Properties& rMaterialProperties,
98  const ProcessInfo& rCurrentProcessInfo) override;
99 
100 private:
101  friend class Serializer;
102 
103  void save(Serializer& rSerializer) const override
104  {
106  }
107 
108  void load(Serializer& rSerializer) override
109  {
111  }
112 
113 }; // Class VanGenuchtenLaw
114 } // namespace Kratos.
Geometry base class.
Definition: geometry.h:71
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
Definition: retention_law.h:47
Definition: retention_law.h:32
std::size_t SizeType
Definition: retention_law.h:39
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
This class defines The Van-Genuchten Soil Water Characteristic Curve (retention curve)
Definition: van_genuchten_law.h:40
KRATOS_CLASS_POINTER_DEFINITION(VanGenuchtenLaw)
Counted pointer of VanGenuchtenLaw.
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307