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.
conservative_condition.h
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: Miguel Maso Sotomayor
11 //
12 
13 #ifndef KRATOS_CONSERVATIVE_CONDITION_H_INCLUDED
14 #define KRATOS_CONSERVATIVE_CONDITION_H_INCLUDED
15 
16 // System includes
17 
18 
19 // External includes
20 
21 
22 // Project includes
23 #include "wave_condition.h"
24 
25 namespace Kratos
26 {
29 
32 
36 
40 
47 template<std::size_t TNumNodes>
48 class ConservativeCondition : public WaveCondition<TNumNodes>
49 {
50 public:
53 
54  typedef std::size_t IndexType;
55 
56  typedef Node NodeType;
57 
59 
61 
63 
65 
67 
69 
70  typedef typename BaseType::ConditionData ConditionData;
71 
73 
75 
79 
81 
85 
90 
94  ConservativeCondition(IndexType NewId, const NodesArrayType& ThisNodes) : BaseType(NewId, ThisNodes){}
95 
99  ConservativeCondition(IndexType NewId, GeometryType::Pointer pGeometry) : BaseType(NewId, pGeometry){}
100 
104  ConservativeCondition(IndexType NewId, GeometryType::Pointer pGeometry, typename PropertiesType::Pointer pProperties) : BaseType(NewId, pGeometry, pProperties){}
105 
109  ~ ConservativeCondition() override {};
110 
114 
122  Condition::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, typename PropertiesType::Pointer pProperties) const override
123  {
124  return Kratos::make_intrusive<ConservativeCondition<TNumNodes>>(NewId, this->GetGeometry().Create(ThisNodes), pProperties);
125  }
126 
134  Condition::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, typename PropertiesType::Pointer pProperties) const override
135  {
136  return Kratos::make_intrusive<ConservativeCondition<TNumNodes>>(NewId, pGeom, pProperties);
137  }
138 
145  Condition::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override
146  {
147  Condition::Pointer p_new_elem = Create(NewId, this->GetGeometry().Create(ThisNodes), this->pGetProperties());
148  p_new_elem->SetData(this->GetData());
149  p_new_elem->Set(Flags(*this));
150  return p_new_elem;
151  }
152 
156 
161  const Parameters GetSpecifications() const override;
162 
166 
170  std::string Info() const override
171  {
172  return "ConservativeCondition";
173  }
174 
178 
179 
181 
182 protected:
185 
187 
191 
192  const Variable<double>& GetUnknownComponent(int Index) const override;
193 
195 
197  ConditionData& rData,
198  const IndexType PointIndex,
199  const array_1d<double,TNumNodes>& rN) override;
200 
202 
203 private:
206 
207 
211 
212 
216 
217  friend class Serializer;
218 
219  void save(Serializer& rSerializer) const override
220  {
222  }
223 
224  void load(Serializer& rSerializer) override
225  {
227  }
228 
232 
233 
235 
236 }; // Class ConservativeCondition
237 
241 
242 
246 
247 
249 
251 
252 } // namespace Kratos.
253 
254 #endif // KRATOS_CONSERVATIVE_CONDITION_H_INCLUDED defined
Base class for all Conditions.
Definition: condition.h:59
Geometry< NodeType >::PointsArrayType NodesArrayType
definition of nodes container type, redefined from GeometryType
Definition: condition.h:86
std::vector< std::size_t > EquationIdVectorType
Definition: condition.h:98
std::vector< DofType::Pointer > DofsVectorType
Definition: condition.h:100
Properties PropertiesType
Definition: condition.h:80
PropertiesType::Pointer pGetProperties()
returns the pointer to the property of the condition. Does not throw an error, to allow copying of co...
Definition: condition.h:964
Implementation of a condition for shallow water waves problems.
Definition: conservative_condition.h:49
BaseType::NodesArrayType NodesArrayType
Definition: conservative_condition.h:62
std::string Info() const override
Turn back information as a string.
Definition: conservative_condition.h:170
WaveCondition< TNumNodes > BaseType
Definition: conservative_condition.h:60
const Parameters GetSpecifications() const override
This method provides the specifications/requirements of the element.
Definition: conservative_condition.cpp:29
BaseType::EquationIdVectorType EquationIdVectorType
Definition: conservative_condition.h:66
BaseType::LocalMatrixType LocalMatrixType
Definition: conservative_condition.h:74
Condition::Pointer Clone(IndexType NewId, NodesArrayType const &ThisNodes) const override
Create a new condition pointer and clone the previous condition data.
Definition: conservative_condition.h:145
void CalculateGaussPointData(ConditionData &rData, const IndexType PointIndex, const array_1d< double, TNumNodes > &rN) override
Definition: conservative_condition.cpp:65
BaseType::DofsVectorType DofsVectorType
Definition: conservative_condition.h:68
static constexpr IndexType mLocalSize
Definition: conservative_condition.h:186
BaseType::ConditionData ConditionData
Definition: conservative_condition.h:70
Condition::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, typename PropertiesType::Pointer pProperties) const override
Create a new condition pointer.
Definition: conservative_condition.h:134
Condition::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, typename PropertiesType::Pointer pProperties) const override
Create a new condition pointer.
Definition: conservative_condition.h:122
const Variable< double > & GetUnknownComponent(int Index) const override
Definition: conservative_condition.cpp:41
Geometry< NodeType > GeometryType
Definition: conservative_condition.h:58
ConservativeCondition(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using Geometry.
Definition: conservative_condition.h:99
BaseType::PropertiesType PropertiesType
Definition: conservative_condition.h:64
ConservativeCondition(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
Definition: conservative_condition.h:94
LocalVectorType GetUnknownVector(ConditionData &rData) override
Definition: conservative_condition.cpp:52
ConservativeCondition(IndexType NewId, GeometryType::Pointer pGeometry, typename PropertiesType::Pointer pProperties)
Constructor using Geometry and Properties.
Definition: conservative_condition.h:104
~ ConservativeCondition() override
Destructor.
Definition: conservative_condition.h:109
Node NodeType
Definition: conservative_condition.h:56
std::size_t IndexType
Definition: conservative_condition.h:54
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(ConservativeCondition)
ConservativeCondition()
Default constructor.
Definition: conservative_condition.h:89
BaseType::LocalVectorType LocalVectorType
Definition: conservative_condition.h:72
std::size_t IndexType
Definition: flags.h:74
Flags()
Default constructor.
Definition: flags.h:119
This defines the geometrical object, base definition of the element and condition entities.
Definition: geometrical_object.h:58
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
DataValueContainer & GetData()
Definition: geometrical_object.h:212
Geometry base class.
Definition: geometry.h:71
virtual Pointer Create(PointsArrayType const &rThisPoints) const
Creates a new geometry pointer.
Definition: geometry.h:813
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Implementation of a condition for shallow water waves problems.
Definition: wave_condition.h:51
static constexpr IndexType mLocalSize
Definition: wave_condition.h:261
array_1d< double, 3 *TNumNodes > LocalVectorType
Definition: wave_condition.h:60
BoundedMatrix< double, 3 *TNumNodes, 3 *TNumNodes > LocalMatrixType
Definition: wave_condition.h:62
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def Index()
Definition: hdf5_io_tools.py:38
def load(f)
Definition: ode_solve.py:307