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.
transient_convection_diffusion_FIC_element.hpp
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Albert Puigferrat Perez
11 // Ignasi de Pouplana
12 //
13 
14 #if !defined(KRATOS_TRANSIENT_CONVECTION_DIFFUSION_FIC_ELEMENT_H_INCLUDED )
15 #define KRATOS_TRANSIENT_CONVECTION_DIFFUSION_FIC_ELEMENT_H_INCLUDED
16 
17 // Project includes
18 #include "includes/serializer.h"
19 
20 // Application includes
23 #include "custom_utilities/element_utilities.hpp"
25 
27 
28 namespace Kratos
29 {
30 
31 template< unsigned int TDim, unsigned int TNumNodes >
32 class KRATOS_API(FLUID_TRANSPORT_APPLICATION) TransientConvectionDiffusionFICElement : public SteadyConvectionDiffusionFICElement<TDim,TNumNodes>
33 {
34 
35 public:
36 
38 
39  typedef std::size_t IndexType;
41  typedef Node NodeType;
46  typedef Vector VectorType;
47  typedef Matrix MatrixType;
49 
51 
54 
56  TransientConvectionDiffusionFICElement(IndexType NewId, const NodesArrayType& ThisNodes) : SteadyConvectionDiffusionFICElement<TDim,TNumNodes>(NewId, ThisNodes) {}
57 
59  TransientConvectionDiffusionFICElement(IndexType NewId, GeometryType::Pointer pGeometry) : SteadyConvectionDiffusionFICElement<TDim,TNumNodes>(NewId, pGeometry) {}
60 
62  TransientConvectionDiffusionFICElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) : SteadyConvectionDiffusionFICElement<TDim,TNumNodes>( NewId, pGeometry, pProperties ) {}
63 
66 
68 
69  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
70 
71  Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override;
72 
73  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
74 
76 
77  void InitializeNonLinearIteration(const ProcessInfo& rCurrentProcessInfo) override;
78 
80 
81  void CalculateFirstDerivativesContributions(MatrixType& rLeftHandSideMatrix,
82  VectorType& rRightHandSideVector, const ProcessInfo& rCurrentProcessInfo) override;
83 
84  void CalculateFirstDerivativesLHS(MatrixType& rLeftHandSideMatrix, const ProcessInfo& rCurrentProcessInfo) override;
85 
86  void CalculateFirstDerivativesRHS(VectorType& rRightHandSideVector, const ProcessInfo& rCurrentProcessInfo) override;
87 
88  void CalculateOnIntegrationPoints(const Variable<double>& rVariable, std::vector<double>& rValues, const ProcessInfo& rCurrentProcessInfo) override;
89 
91 
92 protected:
93 
95 
96  void CalculateDiffusivityVariables(ElementVariables& rVariables, const PropertiesType& Prop, const ProcessInfo& CurrentProcessInfo) override;
97 
98  void CalculateHVector(ElementVariables& rVariables, const PropertiesType& Prop, const ProcessInfo& CurrentProcessInfo) override;
99 
101 
102 private:
103 
105 
107 
109 
110  friend class Serializer;
111 
112  void save(Serializer& rSerializer) const override
113  {
115  }
116 
117  void load(Serializer& rSerializer) override
118  {
120  }
121 
123  TransientConvectionDiffusionFICElement & operator=(TransientConvectionDiffusionFICElement const& rOther);
124 
126  TransientConvectionDiffusionFICElement(TransientConvectionDiffusionFICElement const& rOther);
127 
128 }; // Class TransientConvectionDiffusionFICElement
129 
130 } // namespace Kratos
131 
132 #endif // KRATOS_TRANSIENT_CONVECTION_DIFFUSION_FIC_ELEMENT_H_INCLUDED defined
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Base class for all Elements.
Definition: element.h:60
std::vector< DofType::Pointer > DofsVectorType
Definition: element.h:100
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
std::size_t IndexType
Definition: flags.h:74
Geometry base class.
Definition: geometry.h:71
This class defines the node.
Definition: node.h:65
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
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
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Definition: steady_convection_diffusion_FIC_element.hpp:37
Definition: transient_convection_diffusion_FIC_element.hpp:33
TransientConvectionDiffusionFICElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constructor using Properties.
Definition: transient_convection_diffusion_FIC_element.hpp:62
std::size_t IndexType
Definition: transient_convection_diffusion_FIC_element.hpp:39
Geometry< NodeType > GeometryType
Definition: transient_convection_diffusion_FIC_element.hpp:42
SteadyConvectionDiffusionFICElement< TDim, TNumNodes >::ElementVariables ElementVariables
Definition: transient_convection_diffusion_FIC_element.hpp:48
Properties PropertiesType
Definition: transient_convection_diffusion_FIC_element.hpp:40
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(TransientConvectionDiffusionFICElement)
Element::DofsVectorType DofsVectorType
Definition: transient_convection_diffusion_FIC_element.hpp:44
Matrix MatrixType
Definition: transient_convection_diffusion_FIC_element.hpp:47
TransientConvectionDiffusionFICElement(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
Definition: transient_convection_diffusion_FIC_element.hpp:56
TransientConvectionDiffusionFICElement(IndexType NewId=0)
Default Constructor.
Definition: transient_convection_diffusion_FIC_element.hpp:53
Vector VectorType
Definition: transient_convection_diffusion_FIC_element.hpp:46
Element::EquationIdVectorType EquationIdVectorType
Definition: transient_convection_diffusion_FIC_element.hpp:45
Geometry< NodeType >::PointsArrayType NodesArrayType
Definition: transient_convection_diffusion_FIC_element.hpp:43
TransientConvectionDiffusionFICElement(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using Geometry.
Definition: transient_convection_diffusion_FIC_element.hpp:59
~TransientConvectionDiffusionFICElement() override
Destructor.
Definition: transient_convection_diffusion_FIC_element.hpp:65
Node NodeType
Definition: transient_convection_diffusion_FIC_element.hpp:41
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
Matrix MatrixType
Definition: geometrical_transformation_utilities.h:55
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
pybind11::list CalculateOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const ProcessInfo &rProcessInfo)
Definition: add_mesh_to_python.cpp:142
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
def load(f)
Definition: ode_solve.py:307
Definition: steady_convection_diffusion_FIC_element.hpp:112