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.
large_displacement_beam_semc_element.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosSolidMechanicsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: August 2017 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_LARGE_DISPLACEMENT_BEAM_SEMC_ELEMENT_H_INCLUDED)
11 #define KRATOS_LARGE_DISPLACEMENT_BEAM_SEMC_ELEMENT_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 
17 // Project includes
19 
20 
21 namespace Kratos
22 {
37 
39 
47 class KRATOS_API(SOLID_MECHANICS_APPLICATION) LargeDisplacementBeamSEMCElement
49 {
50 public:
51 
57  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
70 
73 
77 
79  LargeDisplacementBeamSEMCElement(IndexType NewId, GeometryType::Pointer pGeometry);
80 
81  LargeDisplacementBeamSEMCElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
82 
85 
88 
89 
93 
94 
102  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
103 
104 
105 
112  void CalculateMassMatrix(MatrixType& rMassMatrix, const ProcessInfo& rCurrentProcessInfo) override;
113 
127  void AddExplicitContribution(const VectorType& rRHSVector, const Variable<VectorType>& rRHSVariable, const Variable<array_1d<double,3> >& rDestinationVariable, const ProcessInfo& rCurrentProcessInfo) override;
128 
129  void AddExplicitContribution(const MatrixType& rLHSMatrix, const Variable<MatrixType>& rLHSVariable, const Variable<Matrix >& rDestinationVariable, const ProcessInfo& rCurrentProcessInfo) override;
130 
131 
132  //************************************************************************************
133  //************************************************************************************
141  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
142 
146 
154  std::string Info() const override
155  {
156  std::stringstream buffer;
157  buffer << "Large Displacement Beam SEMC Element #" << Id();
158  return buffer.str();
159  }
160 
162  void PrintInfo(std::ostream& rOStream) const override
163  {
164  rOStream << "Large Displacement Beam SEMC Element #" << Id();
165  }
166 
168  void PrintData(std::ostream& rOStream) const override
169  {
170  GetGeometry().PrintData(rOStream);
171  }
176 
177 protected:
178 
188 
192 
193 
197  virtual void CalculateStrainResultants(Vector& rStrainResultants, ElementDataType& rVariables, double alpha);
198 
202  virtual void CalculateStrainCouples(Vector& rStrainCouples, ElementDataType& rVariables, double alpha);
203 
207  void CalculateStressResultants(ElementDataType& rVariables, const unsigned int& rPointNumber) override;
208 
212  void CalculateCurrentCurvature(ElementDataType& rVariables, const Variable<array_1d<double, 3 > >& rVariable) override;
213 
214 
218  void CalculateAndAddInertiaLHS(MatrixType& rLeftHandSideMatrix,
219  ElementDataType& rVariables,
220  const ProcessInfo& rCurrentProcessInfo,
221  double& rIntegrationWeight) override;
222 
223 
227  void CalculateAndAddInertiaRHS(VectorType& rRightHandSideVector,
228  ElementDataType& rVariables,
229  const ProcessInfo& rCurrentProcessInfo,
230  double& rIntegrationWeight) override;
231 
232 
233 
237  void CalculateStrainEnergy(double& rEnergy, ElementDataType& rVariables, const ProcessInfo& rCurrentProcessInfo, double& rIntegrationWeight) override;
238 
249 
250 private:
251 
270  friend class Serializer;
271 
272 
273  // A private default constructor necessary for serialization
274 
275 
276  void save(Serializer& rSerializer) const override;
277 
278  void load(Serializer& rSerializer) override;
279 
286 
287 
288 }; // Class LargeDisplacementBeamSEMCElement
289 
290 } // namespace Kratos.
291 #endif // KRATOS_LARGE_DISPLACEMENT_BEAM_SEMC_ELEMENT_H_INCLUDED defined
Definition: beam_math_utilities.hpp:31
Definition: constitutive_law.h:47
StressMeasure
Definition: constitutive_law.h:69
std::size_t IndexType
Definition: flags.h:74
IntegrationMethod
Definition: geometry_data.h:76
std::size_t SizeType
Definition: geometry_data.h:173
Beam Element for 3D space dimension Simo Displacement-Rotation Geometrically Exact Rod element.
Definition: large_displacement_beam_element.hpp:48
Beam Element for 3D space dimension.
Definition: large_displacement_beam_semc_element.hpp:49
LargeDisplacementBeamElement::ElementDataType ElementDataType
Type for element variables.
Definition: large_displacement_beam_semc_element.hpp:69
LargeDisplacementBeamSEMCElement()
Definition: large_displacement_beam_semc_element.hpp:187
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(LargeDisplacementBeamSEMCElement)
Counted pointer of LargeDisplacementBeamSEMCElement.
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: large_displacement_beam_semc_element.hpp:57
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: large_displacement_beam_semc_element.hpp:61
ConstitutiveLaw ConstitutiveLawType
Definition: large_displacement_beam_semc_element.hpp:55
BeamMathUtils< double > BeamMathUtilsType
Type definition for beam utilities.
Definition: large_displacement_beam_semc_element.hpp:63
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: large_displacement_beam_semc_element.hpp:168
std::string Info() const override
Turn back information as a string.
Definition: large_displacement_beam_semc_element.hpp:154
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: large_displacement_beam_semc_element.hpp:162
Quaternion< double > QuaternionType
Type definition for quaternion.
Definition: large_displacement_beam_semc_element.hpp:65
GeometryData::SizeType SizeType
Type for size.
Definition: large_displacement_beam_semc_element.hpp:67
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: large_displacement_beam_semc_element.hpp:59
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
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
Matrix MatrixType
Definition: geometrical_transformation_utilities.h:55
double CalculateStrainEnergy(Element &rElement)
Definition: mpm_energy_calculation_utility.cpp:89
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
alpha
Definition: generate_convection_diffusion_explicit_element.py:113
def load(f)
Definition: ode_solve.py:307
Definition: beam_element.hpp:123