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.
geo_mechanics_application.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 // Mohamed Nabi
12 //
13 
14 #pragma once
15 
16 // System includes
17 #include <iostream>
18 #include <string>
19 
20 // External includes
21 
22 // Project includes
23 #include "includes/define.h"
26 
27 // Application includes
29 
30 // conditions
34 #include "custom_conditions/U_Pw_face_load_condition.hpp"
35 #include "custom_conditions/U_Pw_face_load_interface_condition.hpp"
36 #include "custom_conditions/U_Pw_force_condition.hpp"
37 #include "custom_conditions/U_Pw_normal_face_load_condition.hpp"
38 #include "custom_conditions/U_Pw_normal_flux_FIC_condition.hpp"
39 #include "custom_conditions/U_Pw_normal_flux_condition.hpp"
40 #include "custom_conditions/U_Pw_normal_flux_interface_condition.hpp"
45 #include "custom_conditions/line_load_2D_diff_order_condition.hpp"
46 #include "custom_conditions/line_normal_fluid_flux_2D_diff_order_condition.hpp"
47 #include "custom_conditions/line_normal_load_2D_diff_order_condition.hpp"
48 #include "custom_conditions/surface_load_3D_diff_order_condition.hpp"
49 #include "custom_conditions/surface_normal_fluid_flux_3D_diff_order_condition.hpp"
50 #include "custom_conditions/surface_normal_load_3D_diff_order_condition.hpp"
51 
52 // Geometries
57 #include "geometries/line_2d_2.h"
58 #include "geometries/line_2d_3.h"
59 #include "geometries/line_2d_4.h"
60 #include "geometries/line_2d_5.h"
61 #include "geometries/point_2d.h"
62 #include "geometries/point_3d.h"
80 
81 // elements
82 #include "custom_elements/U_Pw_small_strain_FIC_element.hpp"
85 #include "custom_elements/U_Pw_small_strain_element.hpp"
86 #include "custom_elements/U_Pw_small_strain_interface_element.hpp"
87 #include "custom_elements/U_Pw_small_strain_link_interface_element.hpp"
92 #include "custom_elements/small_strain_U_Pw_diff_order_element.hpp"
103 
104 // geo structural element
114 
115 // constitutive models
116 #include "custom_constitutive/bilinear_cohesive_2D_law.hpp"
117 #include "custom_constitutive/bilinear_cohesive_3D_law.hpp"
134 
135 namespace Kratos {
136 
139 
143 
147 
151 
155 
157 
159 class KRATOS_API(GEO_MECHANICS_APPLICATION) KratosGeoMechanicsApplication : public KratosApplication {
160 public:
163 
164 
167 
171 
173  ~KratosGeoMechanicsApplication() override = default;
178 
182 
183 
187 
188  void Register() override;
189 
190 
191 
195 
196 
200 
201 
205 
207  std::string Info() const override
208  {
209  return "KratosGeoMechanicsApplication";
210  }
211 
213  void PrintInfo(std::ostream& rOStream) const override
214  {
215  rOStream << Info();
216  PrintData(rOStream);
217  }
218 
220  void PrintData(std::ostream& rOStream) const override
221  {
222  KRATOS_WATCH("in KratosGeoMechanicsApplication")
224 
225  rOStream << "Variables:" << std::endl;
227  rOStream << std::endl;
228  rOStream << "Elements:" << std::endl;
229  KratosComponents<Element>().PrintData(rOStream);
230  rOStream << std::endl;
231  rOStream << "Conditions:" << std::endl;
232  KratosComponents<Condition>().PrintData(rOStream);
233  }
234 
235 
239 
240 
242 
243 private:
246 
247  // static const ApplicationCondition msApplicationCondition;
248 
252 
256 
257 
261 
262 
266 
267 
271 
272 
276 
277  // elements
278  // transient one-phase flow elements:
279  const TransientPwElement<2, 3> mTransientPwElement2D3N { 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
280  const TransientPwElement<2, 4> mTransientPwElement2D4N { 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
281  const TransientPwElement<3, 4> mTransientPwElement3D4N { 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
282  const TransientPwElement<3, 8> mTransientPwElement3D8N { 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
283  const TransientPwElement<2, 6> mTransientPwElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
284  const TransientPwElement<2, 8> mTransientPwElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
285  const TransientPwElement<2, 9> mTransientPwElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
286  const TransientPwElement<2,10> mTransientPwElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
287  const TransientPwElement<2,15> mTransientPwElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
288  const TransientPwElement<3,10> mTransientPwElement3D10N{ 0, Kratos::make_shared< Tetrahedra3D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
289  const TransientPwElement<3,20> mTransientPwElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 <NodeType> >(Element::GeometryType::PointsArrayType(20)) };
290  const TransientPwElement<3,27> mTransientPwElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 <NodeType> >(Element::GeometryType::PointsArrayType(27)) };
291 
292  const TransientPwInterfaceElement<2,4> mTransientPwInterfaceElement2D4N{ 0, Kratos::make_shared< QuadrilateralInterface2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
293  const TransientPwInterfaceElement<3,6> mTransientPwInterfaceElement3D6N{ 0, Kratos::make_shared< PrismInterface3D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
294  const TransientPwInterfaceElement<3,8> mTransientPwInterfaceElement3D8N{ 0, Kratos::make_shared< HexahedraInterface3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
295 
296  // Steady-State one-phase flow elements:
297  const SteadyStatePwElement<2, 3> mSteadyStatePwElement2D3N { 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
298  const SteadyStatePwElement<2, 4> mSteadyStatePwElement2D4N { 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
299  const SteadyStatePwElement<3, 4> mSteadyStatePwElement3D4N { 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
300  const SteadyStatePwElement<3, 8> mSteadyStatePwElement3D8N { 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
301  const SteadyStatePwElement<2, 6> mSteadyStatePwElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
302  const SteadyStatePwElement<2, 8> mSteadyStatePwElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
303  const SteadyStatePwElement<2, 9> mSteadyStatePwElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
304  const SteadyStatePwElement<2,10> mSteadyStatePwElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
305  const SteadyStatePwElement<2,15> mSteadyStatePwElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
306  const SteadyStatePwElement<3,10> mSteadyStatePwElement3D10N{ 0, Kratos::make_shared< Tetrahedra3D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
307  const SteadyStatePwElement<3,20> mSteadyStatePwElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 <NodeType> >(Element::GeometryType::PointsArrayType(20)) };
308  const SteadyStatePwElement<3,27> mSteadyStatePwElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 <NodeType> >(Element::GeometryType::PointsArrayType(27)) };
309 
310  const SteadyStatePwInterfaceElement<2,4> mSteadyStatePwInterfaceElement2D4N{ 0, Kratos::make_shared< QuadrilateralInterface2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
311  const SteadyStatePwInterfaceElement<3,6> mSteadyStatePwInterfaceElement3D6N{ 0, Kratos::make_shared< PrismInterface3D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
312  const SteadyStatePwInterfaceElement<3,8> mSteadyStatePwInterfaceElement3D8N{ 0, Kratos::make_shared< HexahedraInterface3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
313 
314  const SteadyStatePwPipingElement<2,4> mSteadyStatePwPipingElement2D4N{ 0, Kratos::make_shared< QuadrilateralInterface2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
315  const SteadyStatePwPipingElement<3,6> mSteadyStatePwPipingElement3D6N{ 0, Kratos::make_shared< PrismInterface3D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
316  const SteadyStatePwPipingElement<3,8> mSteadyStatePwPipingElement3D8N{ 0, Kratos::make_shared< HexahedraInterface3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
317 
318  // small strain elements:
319  const UPwSmallStrainElement<2, 3> mUPwSmallStrainElement2D3N { 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
320  const UPwSmallStrainElement<2, 4> mUPwSmallStrainElement2D4N { 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
321  const UPwSmallStrainElement<3, 4> mUPwSmallStrainElement3D4N { 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
322  const UPwSmallStrainElement<3, 8> mUPwSmallStrainElement3D8N { 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
323  const UPwSmallStrainElement<2, 6> mUPwSmallStrainElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
324  const UPwSmallStrainElement<2, 8> mUPwSmallStrainElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
325  const UPwSmallStrainElement<2, 9> mUPwSmallStrainElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
326  const UPwSmallStrainElement<2,10> mUPwSmallStrainElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
327  const UPwSmallStrainElement<2,15> mUPwSmallStrainElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
328  const UPwSmallStrainElement<3,10> mUPwSmallStrainElement3D10N{ 0, Kratos::make_shared< Tetrahedra3D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
329  const UPwSmallStrainElement<3,20> mUPwSmallStrainElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 <NodeType> >(Element::GeometryType::PointsArrayType(20)) };
330  const UPwSmallStrainElement<3,27> mUPwSmallStrainElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 <NodeType> >(Element::GeometryType::PointsArrayType(27)) };
331 
332  // small strain drained elements:
333  const DrainedUPwSmallStrainElement<2,3> mDrainedUPwSmallStrainElement2D3N{ 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
334  const DrainedUPwSmallStrainElement<2,4> mDrainedUPwSmallStrainElement2D4N{ 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
335  const DrainedUPwSmallStrainElement<3,4> mDrainedUPwSmallStrainElement3D4N{ 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
336  const DrainedUPwSmallStrainElement<3,8> mDrainedUPwSmallStrainElement3D8N{ 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
337 
338  // small strain undrained elements:
339  const UndrainedUPwSmallStrainElement<2,3> mUndrainedUPwSmallStrainElement2D3N{ 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
340  const UndrainedUPwSmallStrainElement<2,4> mUndrainedUPwSmallStrainElement2D4N{ 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
341  const UndrainedUPwSmallStrainElement<3,4> mUndrainedUPwSmallStrainElement3D4N{ 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
342  const UndrainedUPwSmallStrainElement<3,8> mUndrainedUPwSmallStrainElement3D8N{ 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
343 
344  // FIC elements
345  const UPwSmallStrainFICElement<2,3> mUPwSmallStrainFICElement2D3N{ 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
346  const UPwSmallStrainFICElement<2,4> mUPwSmallStrainFICElement2D4N{ 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
347  const UPwSmallStrainFICElement<3,4> mUPwSmallStrainFICElement3D4N{ 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
348  const UPwSmallStrainFICElement<3,8> mUPwSmallStrainFICElement3D8N{ 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
349 
350  // Small strain different order elements
351  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
352  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
353  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
354  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
355  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
356  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement3D10N{ 0, Kratos::make_shared< Tetrahedra3D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
357  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 <NodeType> >(Element::GeometryType::PointsArrayType(20)) };
358  const SmallStrainUPwDiffOrderElement mSmallStrainUPwDiffOrderElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 <NodeType> >(Element::GeometryType::PointsArrayType(27)) };
359 
360  // small strain axisymmtric elements:
361  const UPwSmallStrainAxisymmetricElement<2, 3> mUPwSmallStrainAxisymmetricElement2D3N { 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
362  const UPwSmallStrainAxisymmetricElement<2, 4> mUPwSmallStrainAxisymmetricElement2D4N { 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
363  const UPwSmallStrainAxisymmetricElement<2, 6> mUPwSmallStrainAxisymmetricElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
364  const UPwSmallStrainAxisymmetricElement<2, 8> mUPwSmallStrainAxisymmetricElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
365  const UPwSmallStrainAxisymmetricElement<2, 9> mUPwSmallStrainAxisymmetricElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
366  const UPwSmallStrainAxisymmetricElement<2,10> mUPwSmallStrainAxisymmetricElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
367  const UPwSmallStrainAxisymmetricElement<2,15> mUPwSmallStrainAxisymmetricElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
368 
369  const UPwSmallStrainAxisymmetricFICElement<2,3> mUPwSmallStrainAxisymmetricFICElement2D3N{ 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
370  const UPwSmallStrainAxisymmetricFICElement<2,4> mUPwSmallStrainAxisymmetricFICElement2D4N{ 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
371 
372  const SmallStrainUPwDiffOrderAxisymmetricElement mSmallStrainUPwDiffOrderAxisymmetricElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
373  const SmallStrainUPwDiffOrderAxisymmetricElement mSmallStrainUPwDiffOrderAxisymmetricElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
374  const SmallStrainUPwDiffOrderAxisymmetricElement mSmallStrainUPwDiffOrderAxisymmetricElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
375  const SmallStrainUPwDiffOrderAxisymmetricElement mSmallStrainUPwDiffOrderAxisymmetricElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
376  const SmallStrainUPwDiffOrderAxisymmetricElement mSmallStrainUPwDiffOrderAxisymmetricElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
377 
378  // interface elements
379  const UPwSmallStrainInterfaceElement<2,4> mUPwSmallStrainInterfaceElement2D4N{ 0, Kratos::make_shared< QuadrilateralInterface2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
380  const UPwSmallStrainInterfaceElement<3,6> mUPwSmallStrainInterfaceElement3D6N{ 0, Kratos::make_shared< PrismInterface3D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
381  const UPwSmallStrainInterfaceElement<3,8> mUPwSmallStrainInterfaceElement3D8N{ 0, Kratos::make_shared< HexahedraInterface3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
382 
383  const UPwSmallStrainLinkInterfaceElement<2,4> mUPwSmallStrainLinkInterfaceElement2D4N{ 0, Kratos::make_shared< QuadrilateralInterface2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
384  const UPwSmallStrainLinkInterfaceElement<3,6> mUPwSmallStrainLinkInterfaceElement3D6N{ 0, Kratos::make_shared< PrismInterface3D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
385  const UPwSmallStrainLinkInterfaceElement<3,8> mUPwSmallStrainLinkInterfaceElement3D8N{ 0, Kratos::make_shared< HexahedraInterface3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
386 
387  // Updated-Lagrangian elements:
388  const UPwUpdatedLagrangianElement<2, 3> mUPwUpdatedLagrangianElement2D3N { 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
389  const UPwUpdatedLagrangianElement<2, 4> mUPwUpdatedLagrangianElement2D4N { 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
390  const UPwUpdatedLagrangianElement<3, 4> mUPwUpdatedLagrangianElement3D4N { 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
391  const UPwUpdatedLagrangianElement<3, 8> mUPwUpdatedLagrangianElement3D8N { 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
392  const UPwUpdatedLagrangianElement<2, 6> mUPwUpdatedLagrangianElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
393  const UPwUpdatedLagrangianElement<2, 8> mUPwUpdatedLagrangianElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
394  const UPwUpdatedLagrangianElement<2, 9> mUPwUpdatedLagrangianElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
395  const UPwUpdatedLagrangianElement<2,10> mUPwUpdatedLagrangianElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
396  const UPwUpdatedLagrangianElement<2,15> mUPwUpdatedLagrangianElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
397  const UPwUpdatedLagrangianElement<3,10> mUPwUpdatedLagrangianElement3D10N{ 0, Kratos::make_shared< Tetrahedra3D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
398  const UPwUpdatedLagrangianElement<3,20> mUPwUpdatedLagrangianElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 <NodeType> >(Element::GeometryType::PointsArrayType(20)) };
399  const UPwUpdatedLagrangianElement<3,27> mUPwUpdatedLagrangianElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 <NodeType> >(Element::GeometryType::PointsArrayType(27)) };
400 
401  const UPwUpdatedLagrangianFICElement<2,3> mUPwUpdatedLagrangianFICElement2D3N{ 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
402  const UPwUpdatedLagrangianFICElement<2,4> mUPwUpdatedLagrangianFICElement2D4N{ 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
403  const UPwUpdatedLagrangianFICElement<3,4> mUPwUpdatedLagrangianFICElement3D4N{ 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
404  const UPwUpdatedLagrangianFICElement<3,8> mUPwUpdatedLagrangianFICElement3D8N{ 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
405 
406  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
407  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
408  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
409  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
410  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
411  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement3D10N{ 0, Kratos::make_shared< Tetrahedra3D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
412  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 <NodeType> >(Element::GeometryType::PointsArrayType(20)) };
413  const UpdatedLagrangianUPwDiffOrderElement mUpdatedLagrangianUPwDiffOrderElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 <NodeType> >(Element::GeometryType::PointsArrayType(27)) };
414 
415  // Updated-Lagrangian axisymmetric elements
416  const UPwUpdatedLagrangianAxisymmetricElement<2, 3> mUPwUpdatedLagrangianAxisymmetricElement2D3N { 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
417  const UPwUpdatedLagrangianAxisymmetricElement<2, 4> mUPwUpdatedLagrangianAxisymmetricElement2D4N { 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
418  const UPwUpdatedLagrangianAxisymmetricElement<2, 6> mUPwUpdatedLagrangianAxisymmetricElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
419  const UPwUpdatedLagrangianAxisymmetricElement<2, 8> mUPwUpdatedLagrangianAxisymmetricElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
420  const UPwUpdatedLagrangianAxisymmetricElement<2, 9> mUPwUpdatedLagrangianAxisymmetricElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
421  const UPwUpdatedLagrangianAxisymmetricElement<2,10> mUPwUpdatedLagrangianAxisymmetricElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
422  const UPwUpdatedLagrangianAxisymmetricElement<2,15> mUPwUpdatedLagrangianAxisymmetricElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
423 
424  const UpdatedLagrangianUPwDiffOrderAxisymmetricElement mUpdatedLagrangianUPwDiffOrderAxisymmetricElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType(6)) };
425  const UpdatedLagrangianUPwDiffOrderAxisymmetricElement mUpdatedLagrangianUPwDiffOrderAxisymmetricElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType(8)) };
426  const UpdatedLagrangianUPwDiffOrderAxisymmetricElement mUpdatedLagrangianUPwDiffOrderAxisymmetricElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType(9)) };
427  const UpdatedLagrangianUPwDiffOrderAxisymmetricElement mUpdatedLagrangianUPwDiffOrderAxisymmetricElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
428  const UpdatedLagrangianUPwDiffOrderAxisymmetricElement mUpdatedLagrangianUPwDiffOrderAxisymmetricElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
429 
430  const UPwUpdatedLagrangianAxisymmetricFICElement<2,3> mUPwUpdatedLagrangianAxisymmetricFICElement2D3N{ 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
431  const UPwUpdatedLagrangianAxisymmetricFICElement<2,4> mUPwUpdatedLagrangianAxisymmetricFICElement2D4N{ 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType(4)) };
432 
433  // geo structural element
434  const GeoCrBeamElement2D2N mGeoCrBeamElement2D2N { 0, Kratos::make_shared< Line2D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
435  const GeoCrBeamElement3D2N mGeoCrBeamElement3D2N { 0, Kratos::make_shared< Line3D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
436  const GeoCrBeamElementLinear2D2N mGeoCrBeamElementLinear2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
437  const GeoCrBeamElementLinear3D2N mGeoCrBeamElementLinear3D2N{ 0, Kratos::make_shared< Line3D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
438  const GeoTrussElement<2,2> mGeoTrussElement2D2N { 0, Kratos::make_shared< Line2D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
439  const GeoTrussElement<3,2> mGeoTrussElement3D2N { 0, Kratos::make_shared< Line3D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
440  const GeoLinearTrussElement<2,2> mGeoLinearTrussElement2D2N { 0, Kratos::make_shared< Line2D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
441  const GeoLinearTrussElement<3,2> mGeoLinearTrussElement3D2N { 0, Kratos::make_shared< Line3D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
442  const GeoCableElement<2,2> mGeoCableElement2D2N { 0, Kratos::make_shared< Line2D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
443  const GeoCableElement<3,2> mGeoCableElement3D2N { 0, Kratos::make_shared< Line3D2 <NodeType> >(Element::GeometryType::PointsArrayType(2)) };
444  const GeoCurvedBeamElement<2,3> mGeoCurvedBeamElement2D3N { 0, Kratos::make_shared< Line2D3 <NodeType> >(Element::GeometryType::PointsArrayType(3)) };
445 
446  // transient one-phase temperature elements:
447  const TransientThermalElement<2, 3> mTransientThermalElement2D3N { 0, Kratos::make_shared< Triangle2D3 <NodeType> >(Element::GeometryType::PointsArrayType( 3)) };
448  const TransientThermalElement<2, 6> mTransientThermalElement2D6N { 0, Kratos::make_shared< Triangle2D6 <NodeType> >(Element::GeometryType::PointsArrayType( 6)) };
449  const TransientThermalElement<2,10> mTransientThermalElement2D10N{ 0, Kratos::make_shared< Triangle2D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
450  const TransientThermalElement<2,15> mTransientThermalElement2D15N{ 0, Kratos::make_shared< Triangle2D15 <NodeType> >(Element::GeometryType::PointsArrayType(15)) };
451  const TransientThermalElement<2, 4> mTransientThermalElement2D4N { 0, Kratos::make_shared< Quadrilateral2D4 <NodeType> >(Element::GeometryType::PointsArrayType( 4)) };
452  const TransientThermalElement<2, 8> mTransientThermalElement2D8N { 0, Kratos::make_shared< Quadrilateral2D8 <NodeType> >(Element::GeometryType::PointsArrayType( 8)) };
453  const TransientThermalElement<2, 9> mTransientThermalElement2D9N { 0, Kratos::make_shared< Quadrilateral2D9 <NodeType> >(Element::GeometryType::PointsArrayType( 9)) };
454  const TransientThermalElement<3, 4> mTransientThermalElement3D4N { 0, Kratos::make_shared< Tetrahedra3D4 <NodeType> >(Element::GeometryType::PointsArrayType( 4)) };
455  const TransientThermalElement<3,10> mTransientThermalElement3D10N{ 0, Kratos::make_shared< Tetrahedra3D10 <NodeType> >(Element::GeometryType::PointsArrayType(10)) };
456  const TransientThermalElement<3, 8> mTransientThermalElement3D8N { 0, Kratos::make_shared< Hexahedra3D8 <NodeType> >(Element::GeometryType::PointsArrayType( 8)) };
457  const TransientThermalElement<3,20> mTransientThermalElement3D20N{ 0, Kratos::make_shared< Hexahedra3D20 <NodeType> >(Element::GeometryType::PointsArrayType(20)) };
458  const TransientThermalElement<3,27> mTransientThermalElement3D27N{ 0, Kratos::make_shared< Hexahedra3D27 <NodeType> >(Element::GeometryType::PointsArrayType(27)) };
459 
460  // conditions
461  const UPwForceCondition<2,1> mUPwForceCondition2D1N{ 0, Kratos::make_shared< Point2D <NodeType> >(Condition::GeometryType::PointsArrayType(1)) };
462  const UPwForceCondition<3,1> mUPwForceCondition3D1N{ 0, Kratos::make_shared< Point3D <NodeType> >(Condition::GeometryType::PointsArrayType(1)) };
463 
464  const UPwFaceLoadCondition<2,2> mUPwFaceLoadCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
465  const UPwFaceLoadCondition<3,3> mUPwFaceLoadCondition3D3N{ 0, Kratos::make_shared< Triangle3D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
466  const UPwFaceLoadCondition<3,4> mUPwFaceLoadCondition3D4N{ 0, Kratos::make_shared< Quadrilateral3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
467 
468  const UPwNormalFaceLoadCondition<2,2> mUPwNormalFaceLoadCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
469  const UPwNormalFaceLoadCondition<3,3> mUPwNormalFaceLoadCondition3D3N{ 0, Kratos::make_shared< Triangle3D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
470  const UPwNormalFaceLoadCondition<3,4> mUPwNormalFaceLoadCondition3D4N{ 0, Kratos::make_shared< Quadrilateral3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
471 
472  const UPwNormalFluxCondition<2,2> mUPwNormalFluxCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
473  const UPwNormalFluxCondition<3,3> mUPwNormalFluxCondition3D3N{ 0, Kratos::make_shared< Triangle3D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
474  const UPwNormalFluxCondition<3,4> mUPwNormalFluxCondition3D4N{ 0, Kratos::make_shared< Quadrilateral3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
475 
476  const PwNormalFluxCondition<2,2> mPwNormalFluxCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
477  const PwNormalFluxCondition<3,3> mPwNormalFluxCondition3D3N{ 0, Kratos::make_shared< Triangle3D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
478  const PwNormalFluxCondition<3,4> mPwNormalFluxCondition3D4N{ 0, Kratos::make_shared< Quadrilateral3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
479 
480  const UPwFaceLoadCondition<2,3> mUPwFaceLoadCondition2D3N{ 0, Kratos::make_shared< Line2D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
481  const UPwFaceLoadCondition<2,4> mUPwFaceLoadCondition2D4N{ 0, Kratos::make_shared< Line2D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
482  const UPwFaceLoadCondition<2,5> mUPwFaceLoadCondition2D5N{ 0, Kratos::make_shared< Line2D5 <NodeType> >(Condition::GeometryType::PointsArrayType(5)) };
483 
484  const UPwFaceLoadInterfaceCondition<2,2> mUPwFaceLoadInterfaceCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
485  const UPwFaceLoadInterfaceCondition<3,4> mUPwFaceLoadInterfaceCondition3D4N{ 0, Kratos::make_shared< QuadrilateralInterface3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
486 
487  const UPwNormalFluxInterfaceCondition<2,2> mUPwNormalFluxInterfaceCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
488  const UPwNormalFluxInterfaceCondition<3,4> mUPwNormalFluxInterfaceCondition3D4N{ 0, Kratos::make_shared< QuadrilateralInterface3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
489 
490  const UPwNormalFluxFICCondition<2,2> mUPwNormalFluxFICCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
491  const UPwNormalFluxFICCondition<3,3> mUPwNormalFluxFICCondition3D3N{ 0, Kratos::make_shared< Triangle3D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
492  const UPwNormalFluxFICCondition<3,4> mUPwNormalFluxFICCondition3D4N{ 0, Kratos::make_shared< Quadrilateral3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
493 
494  const LineLoad2DDiffOrderCondition mLineLoadDiffOrderCondition2D3N{ 0, Kratos::make_shared< Line2D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
495  const LineLoad2DDiffOrderCondition mLineLoadDiffOrderCondition2D4N{ 0, Kratos::make_shared< Line2D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
496  const LineLoad2DDiffOrderCondition mLineLoadDiffOrderCondition2D5N{ 0, Kratos::make_shared< Line2D5 <NodeType> >(Condition::GeometryType::PointsArrayType(5)) };
497 
498  const LineNormalLoad2DDiffOrderCondition mLineNormalLoadDiffOrderCondition2D3N{ 0, Kratos::make_shared< Line2D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
499  const LineNormalLoad2DDiffOrderCondition mLineNormalLoadDiffOrderCondition2D4N{ 0, Kratos::make_shared< Line2D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
500  const LineNormalLoad2DDiffOrderCondition mLineNormalLoadDiffOrderCondition2D5N{ 0, Kratos::make_shared< Line2D5 <NodeType> >(Condition::GeometryType::PointsArrayType(5)) };
501 
502  const LineNormalFluidFlux2DDiffOrderCondition mLineNormalFluidFluxDiffOrderCondition2D3N{ 0, Kratos::make_shared< Line2D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
503  const LineNormalFluidFlux2DDiffOrderCondition mLineNormalFluidFluxDiffOrderCondition2D4N{ 0, Kratos::make_shared< Line2D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
504  const LineNormalFluidFlux2DDiffOrderCondition mLineNormalFluidFluxDiffOrderCondition2D5N{ 0, Kratos::make_shared< Line2D5 <NodeType> >(Condition::GeometryType::PointsArrayType(5)) };
505 
506  const SurfaceLoad3DDiffOrderCondition mSurfaceLoadDiffOrderCondition3D6N{ 0, Kratos::make_shared< Triangle3D6 <NodeType> >(Condition::GeometryType::PointsArrayType(6)) };
507  const SurfaceLoad3DDiffOrderCondition mSurfaceLoadDiffOrderCondition3D8N{ 0, Kratos::make_shared< Quadrilateral3D8 <NodeType> >(Condition::GeometryType::PointsArrayType(8)) };
508  const SurfaceLoad3DDiffOrderCondition mSurfaceLoadDiffOrderCondition3D9N{ 0, Kratos::make_shared< Quadrilateral3D9 <NodeType> >(Condition::GeometryType::PointsArrayType(9)) };
509 
510  const SurfaceNormalLoad3DDiffOrderCondition mSurfaceNormalLoadDiffOrderCondition3D6N{ 0, Kratos::make_shared< Triangle3D6 <NodeType> >(Condition::GeometryType::PointsArrayType(6)) };
511  const SurfaceNormalLoad3DDiffOrderCondition mSurfaceNormalLoadDiffOrderCondition3D8N{ 0, Kratos::make_shared< Quadrilateral3D8 <NodeType> >(Condition::GeometryType::PointsArrayType(8)) };
512  const SurfaceNormalLoad3DDiffOrderCondition mSurfaceNormalLoadDiffOrderCondition3D9N{ 0, Kratos::make_shared< Quadrilateral3D9 <NodeType> >(Condition::GeometryType::PointsArrayType(9)) };
513 
514  const SurfaceNormalFluidFlux3DDiffOrderCondition mSurfaceNormalFluidFluxDiffOrderCondition3D6N{ 0, Kratos::make_shared< Triangle3D6 <NodeType> >(Condition::GeometryType::PointsArrayType(6)) };
515  const SurfaceNormalFluidFlux3DDiffOrderCondition mSurfaceNormalFluidFluxDiffOrderCondition3D8N{ 0, Kratos::make_shared< Quadrilateral3D8 <NodeType> >(Condition::GeometryType::PointsArrayType(8)) };
516  const SurfaceNormalFluidFlux3DDiffOrderCondition mSurfaceNormalFluidFluxDiffOrderCondition3D9N{ 0, Kratos::make_shared< Quadrilateral3D9 <NodeType> >(Condition::GeometryType::PointsArrayType(9)) };
517 
518  const AxisymmetricUPwNormalFaceLoadCondition<2, 2> mAxisymmetricUPwNormalFaceLoadCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
519 
520  const AxisymmetricLineNormalLoad2DDiffOrderCondition mAxisymmetricLineNormalLoadDiffOrderCondition2D3N{ 0, Kratos::make_shared< Line2D3<NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
521 
522  const AxisymmetricLineNormalFluidFlux2DDiffOrderCondition mAxisymmetricLineNormalFluidFluxDiffOrderCondition2D3N{ 0, Kratos::make_shared< Line2D3<NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
523 
524  const UPwLysmerAbsorbingCondition<2,2> mUPwLysmerAbsorbingCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
525  const UPwLysmerAbsorbingCondition<2,3> mUPwLysmerAbsorbingCondition2D3N{ 0, Kratos::make_shared< Line2D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
526  const UPwLysmerAbsorbingCondition<3,3> mUPwLysmerAbsorbingCondition3D3N{ 0, Kratos::make_shared< Triangle3D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
527  const UPwLysmerAbsorbingCondition<3,4> mUPwLysmerAbsorbingCondition3D4N{ 0, Kratos::make_shared< Quadrilateral3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
528 
529  const GeoTNormalFluxCondition<2, 2> mGeoTNormalFluxCondition2D2N{ 0, Kratos::make_shared< Line2D2 <NodeType> >(Condition::GeometryType::PointsArrayType(2)) };
530  const GeoTNormalFluxCondition<2, 3> mGeoTNormalFluxCondition2D3N{ 0, Kratos::make_shared< Line2D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
531  const GeoTNormalFluxCondition<2, 4> mGeoTNormalFluxCondition2D4N{ 0, Kratos::make_shared< Line2D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
532  const GeoTNormalFluxCondition<2, 5> mGeoTNormalFluxCondition2D5N{ 0, Kratos::make_shared< Line2D5 <NodeType> >(Condition::GeometryType::PointsArrayType(5)) };
533  const GeoTNormalFluxCondition<3, 3> mGeoTNormalFluxCondition3D3N{ 0, Kratos::make_shared< Triangle3D3 <NodeType> >(Condition::GeometryType::PointsArrayType(3)) };
534  const GeoTNormalFluxCondition<3, 6> mGeoTNormalFluxCondition3D6N{ 0, Kratos::make_shared< Triangle3D6 <NodeType> >(Condition::GeometryType::PointsArrayType(6)) };
535  const GeoTNormalFluxCondition<3, 4> mGeoTNormalFluxCondition3D4N{ 0, Kratos::make_shared< Quadrilateral3D4 <NodeType> >(Condition::GeometryType::PointsArrayType(4)) };
536  const GeoTNormalFluxCondition<3, 8> mGeoTNormalFluxCondition3D8N{ 0, Kratos::make_shared< Quadrilateral3D8 <NodeType> >(Condition::GeometryType::PointsArrayType(8)) };
537  const GeoTNormalFluxCondition<3, 9> mGeoTNormalFluxCondition3D9N{ 0, Kratos::make_shared< Quadrilateral3D9 <NodeType> >(Condition::GeometryType::PointsArrayType(9)) };
538 
539  const GeoTMicroClimateFluxCondition<2, 2> mGeoTMicroClimateFluxCondition2D2N{0, Kratos::make_shared<Line2D2 <NodeType>>(Condition::GeometryType::PointsArrayType(2))};
540  const GeoTMicroClimateFluxCondition<2, 3> mGeoTMicroClimateFluxCondition2D3N{0, Kratos::make_shared<Line2D3 <NodeType>>(Condition::GeometryType::PointsArrayType(3))};
541  const GeoTMicroClimateFluxCondition<2, 4> mGeoTMicroClimateFluxCondition2D4N{0, Kratos::make_shared<Line2D4 <NodeType>>(Condition::GeometryType::PointsArrayType(4))};
542  const GeoTMicroClimateFluxCondition<2, 5> mGeoTMicroClimateFluxCondition2D5N{0, Kratos::make_shared<Line2D5 <NodeType>>(Condition::GeometryType::PointsArrayType(5))};
543  const GeoTMicroClimateFluxCondition<3, 3> mGeoTMicroClimateFluxCondition3D3N{0, Kratos::make_shared<Triangle3D3 <NodeType>>(Condition::GeometryType::PointsArrayType(3))};
544  const GeoTMicroClimateFluxCondition<3, 6> mGeoTMicroClimateFluxCondition3D6N{0, Kratos::make_shared<Triangle3D6 <NodeType>>(Condition::GeometryType::PointsArrayType(6))};
545  const GeoTMicroClimateFluxCondition<3, 4> mGeoTMicroClimateFluxCondition3D4N{0, Kratos::make_shared<Quadrilateral3D4<NodeType>>(Condition::GeometryType::PointsArrayType(4))};
546  const GeoTMicroClimateFluxCondition<3, 8> mGeoTMicroClimateFluxCondition3D8N{0, Kratos::make_shared<Quadrilateral3D8<NodeType>>(Condition::GeometryType::PointsArrayType(8))};
547  const GeoTMicroClimateFluxCondition<3, 9> mGeoTMicroClimateFluxCondition3D9N{0, Kratos::make_shared<Quadrilateral3D9<NodeType>>(Condition::GeometryType::PointsArrayType(9))};
548 
549  // constitutive models
550  const BilinearCohesive3DLaw mBilinearCohesive3DLaw;
551  const BilinearCohesive2DLaw mBilinearCohesive2DLaw;
552  const LinearPlaneStrainK0Law mLinearPlaneStrainK0Law;
553  const GeoLinearElasticPlaneStrain2DLaw mLinearElasticPlaneStrain2DLaw;
554  const ElasticIsotropicK03DLaw mElasticIsotropicK03DLaw;
555  const GeoLinearElasticPlaneStress2DLaw mLinearElasticPlaneStress2DLaw;
556 
557  const SmallStrainUDSM3DLaw mSmallStrainUDSM3DLaw{};
558  const SmallStrainUDSM2DPlaneStrainLaw mSmallStrainUDSM2DPlaneStrainLaw{};
559  const SmallStrainUDSM2DInterfaceLaw mSmallStrainUDSM2DInterfaceLaw{};
560  const SmallStrainUDSM3DInterfaceLaw mSmallStrainUDSM3DInterfaceLaw{};
561 
562  const SmallStrainUMAT3DLaw mSmallStrainUMAT3DLaw{};
563  const SmallStrainUMAT2DPlaneStrainLaw mSmallStrainUMAT2DPlaneStrainLaw{};
564  const SmallStrainUMAT2DInterfaceLaw mSmallStrainUMAT2DInterfaceLaw{};
565  const SmallStrainUMAT3DInterfaceLaw mSmallStrainUMAT3DInterfaceLaw{};
566 
567  const LinearElastic2DInterfaceLaw mLinearElastic2DInterfaceLaw;
568  const LinearElastic3DInterfaceLaw mLinearElastic3DInterfaceLaw;
569 
570  const LinearElastic2DBeamLaw mLinearElastic2DBeamLaw;
571 
572  const GeoThermalDispersionLaw mGeoThermalDispersion2DLaw{ConstitutiveLaw::SizeType(2)};
573  const GeoThermalDispersionLaw mGeoThermalDispersion3DLaw{ConstitutiveLaw::SizeType(3)};
574 
576 
577 }; // Class KratosGeoMechanicsApplication
578 
580 
583 
587 
589 
590 } // namespace Kratos
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
std::size_t SizeType
Definition: constitutive_law.h:82
PointerVector< TPointType > PointsArrayType
Definition: geometry.h:118
This class defines the interface with kernel for all applications in Kratos.
Definition: kratos_application.h:91
Definition: kratos_components.h:253
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: kratos_components.h:403
KratosComponents class encapsulates a lookup table for a family of classes in a generic way.
Definition: kratos_components.h:49
Short class definition.
Definition: geo_mechanics_application.h:159
KRATOS_CLASS_POINTER_DEFINITION(KratosGeoMechanicsApplication)
Pointer definition of KratosGeoMechanicsApplication.
KratosGeoMechanicsApplication(KratosGeoMechanicsApplication &&)=delete
KratosGeoMechanicsApplication & operator=(const KratosGeoMechanicsApplication &)=delete
~KratosGeoMechanicsApplication() override=default
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: geo_mechanics_application.h:213
KratosGeoMechanicsApplication & operator=(KratosGeoMechanicsApplication &&)=delete
std::string Info() const override
Turn back information as a string.
Definition: geo_mechanics_application.h:207
KratosGeoMechanicsApplication(const KratosGeoMechanicsApplication &)=delete
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: geo_mechanics_application.h:220
#define KRATOS_WATCH(variable)
Definition: define.h:806
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KRATOS_API_EXTERN template class KratosComponents< Condition >
Definition: condition.h:1191
KRATOS_API_EXTERN template class KratosComponents< Element >
Definition: element.h:1240