1 #if !defined(KRATOS_SHELL_5P_ELEMENT_H_INCLUDED )
2 #define KRATOS_SHELL_5P_ELEMENT_H_INCLUDED
139 GeometryType::Pointer pGeometry)
146 GeometryType::Pointer pGeometry,
147 PropertiesType::Pointer pProperties)
148 :
Element(NewId, pGeometry, pProperties)
167 GeometryType::Pointer pGeom,
168 PropertiesType::Pointer pProperties
171 return Kratos::make_intrusive<Shell5pElement>(
172 NewId, pGeom, pProperties);
179 PropertiesType::Pointer pProperties
182 return Kratos::make_intrusive< Shell5pElement >(
201 const SizeType mat_size = number_of_nodes * 5;
203 if (rRightHandSideVector.size() != mat_size)
204 rRightHandSideVector.resize(mat_size);
209 CalculateAll(left_hand_side_matrix, rRightHandSideVector,
210 rCurrentProcessInfo,
false,
true);
224 const SizeType mat_size = number_of_nodes * 5;
228 if (rLeftHandSideMatrix.size1() != mat_size)
229 rLeftHandSideMatrix.
resize(mat_size, mat_size);
232 CalculateAll(rLeftHandSideMatrix, right_hand_side_vector,
233 rCurrentProcessInfo,
true,
false);
250 const SizeType mat_size = number_of_nodes * 5;
252 if (rRightHandSideVector.size() != mat_size)
253 rRightHandSideVector.resize(mat_size);
256 if (rLeftHandSideMatrix.size1() != mat_size || rLeftHandSideMatrix.size2() != mat_size)
257 rLeftHandSideMatrix.resize(mat_size, mat_size);
260 CalculateAll(rLeftHandSideMatrix, rRightHandSideVector,
261 rCurrentProcessInfo,
true,
true);
296 int Step)
const final;
300 int Step)
const final;
304 int Step)
const final;
321 <<
"DIRECTOR not provided at node #" << r_geometry[
i].Id() << std::endl;
334 std::stringstream buffer;
335 buffer <<
"RMElement #" <<
Id();
342 rOStream <<
"RMElement #" <<
Id();
359 std::vector<array_1d<double, 3>> reference_Curvature;
361 std::vector<array_1d<double, 2>> reference_TransShear;
372 std::vector<Matrix> m_cart_deriv;
386 const bool CalculateStiffnessMatrixFlag,
387 const bool CalculateResidualVectorFlag
390 std::pair< Shell5pElement::KinematicVariables, Shell5pElement::VariationVariables>
391 CalculateKinematics(
const IndexType IntegrationPointIndex)
const;
394 Matrix CalculateCartesianDerivatives(
397 Matrix CalculateStrainDisplacementOperator(
399 const KinematicVariables& rActualKinematic,
400 const VariationVariables& rVariations)
const ;
402 Matrix CalculateGeometricStiffness(
404 const KinematicVariables& rActKin,
405 const VariationVariables& ractVar,
406 const ConstitutiveVariables& rThisConstitutiveVariables)
const;
415 void CalculateConstitutiveVariables(
417 const KinematicVariables& rActualMetric,
418 ConstitutiveVariables& rThisConstitutiveVariables,
424 void CalculateSVKMaterialTangent();
426 template<
typename ContainerType,
typename NodeFunctor,
typename ...Args>
438 void save(
Serializer& rSerializer)
const final
441 rSerializer.save(
"reference_Curvature", reference_Curvature);
442 rSerializer.save(
"reference_TransShear", reference_TransShear);
443 rSerializer.save(
"dA_vector", m_dA_vector);
444 rSerializer.save(
"cart_deriv", m_cart_deriv);
450 rSerializer.load(
"curvature", reference_Curvature);
451 rSerializer.load(
"reference_TransShear", reference_TransShear);
452 rSerializer.load(
"dA_vector", m_dA_vector);
453 rSerializer.save(
"cart_deriv", m_cart_deriv);
StressMeasure
Definition: constitutive_law.h:69
Base class for all Elements.
Definition: element.h:60
std::size_t SizeType
Definition: element.h:94
std::vector< DofType::Pointer > DofsVectorType
Definition: element.h:100
Matrix MatrixType
Definition: element.h:90
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
std::size_t IndexType
Definition: flags.h:74
GeometryType::Pointer pGetGeometry()
Returns the pointer to the geometry.
Definition: geometrical_object.h:140
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
bool Has(const Variable< TDataType > &rThisVariable) const
Definition: geometrical_object.h:230
Geometry base class.
Definition: geometry.h:71
SizeType size() const
Definition: geometry.h:518
IndexType Id() const
Definition: indexed_object.h:107
Definition: amatrix_interface.h:41
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
This class defines the node.
Definition: node.h:65
TVariableType::Type & FastGetSolutionStepValue(const TVariableType &rThisVariable)
Definition: node.h:435
TVariableType::Type & GetValue(const TVariableType &rThisVariable)
Definition: node.h:466
const PointType & GetInitialPosition() const
Definition: node.h:559
Point class.
Definition: point.h:59
CoordinatesArrayType const & Coordinates() const
Definition: point.h:215
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
Definition: shell_5p_element.h:26
Shell5pElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constructor using an array of nodes with properties.
Definition: shell_5p_element.h:144
static BoundedMatrix< double, 3, 2 > TangentSpaceFromStereographicProjection(const array_1d< double, 3 > &director)
Definition: shell_5p_element.cpp:512
std::string Info() const final
Turn back information as a string.
Definition: shell_5p_element.h:332
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) final
This is called during the assembling process in order to calculate the condition right hand side matr...
Definition: shell_5p_element.h:196
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) final
This is called during the assembling process in order to calculate the condition left hand side matri...
Definition: shell_5p_element.h:219
std::size_t IndexType
Definition: shell_5p_element.h:125
void FinalizeNonLinearIteration(const ProcessInfo &rCurrentProcessInfo) final
Definition: shell_5p_element.cpp:541
void GetValuesVector(Vector &rValues, int Step) const final
Definition: shell_5p_element.cpp:372
void GetFirstDerivativesVector(Vector &rValues, int Step) const final
Definition: shell_5p_element.cpp:393
Shell5pElement(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using an array of nodes.
Definition: shell_5p_element.h:137
void InitializeNonLinearIteration(const ProcessInfo &rCurrentProcessInfo) final
Definition: shell_5p_element.cpp:535
Geometry< NodeType > GeometryType
Definition: shell_5p_element.h:129
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const final
Sets on rResult the ID's of the element degrees of freedom.
Definition: shell_5p_element.cpp:433
void GetDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const final
Sets on rConditionDofList the degrees of freedom of the considered element geometry.
Definition: shell_5p_element.cpp:457
Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const final
Create with Id, pointer to geometry and pointer to property.
Definition: shell_5p_element.h:165
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const final
Create with Id, pointer to geometry and pointer to property.
Definition: shell_5p_element.h:176
void PrintData(std::ostream &rOStream) const final
Print object's data.
Definition: shell_5p_element.h:346
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(Shell5pElement)
Counted pointer of Shell5pElement.
void GetSecondDerivativesVector(Vector &rValues, int Step) const final
Definition: shell_5p_element.cpp:413
void PrintInfo(std::ostream &rOStream) const final
Print information about this object.
Definition: shell_5p_element.h:340
std::size_t SizeType
Size types.
Definition: shell_5p_element.h:124
Node NodeType
Definition: shell_5p_element.h:128
void Initialize(const ProcessInfo &rCurrentProcessInfo) final
Definition: shell_5p_element.cpp:25
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) final
This function provides a more general interface to the element.
Definition: shell_5p_element.h:244
Shell5pElement()
Default constructor necessary for serialization.
Definition: shell_5p_element.h:152
int Check(const ProcessInfo &rCurrentProcessInfo) const final
Definition: shell_5p_element.h:317
virtual ~Shell5pElement() final
Destructor.
Definition: shell_5p_element.h:157
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#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
#define KRATOS_ERROR_IF_NOT(conditional)
Definition: exception.h:163
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
args
Definition: generate_gid_list_file.py:37
def load(f)
Definition: ode_solve.py:307
tuple const
Definition: ode_solve.py:403
integer i
Definition: TensorModule.f:17
Definition: constitutive_law.h:189
Definition: shell_5p_element.h:80
Vector StrainVector
Definition: shell_5p_element.h:81
Matrix ConstitutiveMatrix
Definition: shell_5p_element.h:83
ConstitutiveVariables(SizeType StrainSize)
Definition: shell_5p_element.h:88
Vector StressVector
Definition: shell_5p_element.h:82
Internal variables used for metric transformation.
Definition: shell_5p_element.h:31
BoundedVector< double, 3 > a2
Definition: shell_5p_element.h:39
void setZero()
Definition: shell_5p_element.h:56
BoundedVector< double, 3 > dud1
Definition: shell_5p_element.h:43
BoundedVector< double, 3 > t
Definition: shell_5p_element.h:46
array_1d< double, 3 > dtd2
Definition: shell_5p_element.h:51
double dA
Definition: shell_5p_element.h:54
array_1d< double, 3 > metricChange
Definition: shell_5p_element.h:33
BoundedVector< double, 3 > dud2
Definition: shell_5p_element.h:44
array_1d< double, 3 > curvature
Definition: shell_5p_element.h:34
BoundedVector< double, 3 > A1
Definition: shell_5p_element.h:40
BoundedVector< double, 3 > A2
Definition: shell_5p_element.h:41
BoundedVector< double, 3 > a1
Definition: shell_5p_element.h:38
array_1d< double, 3 > dtd1
Definition: shell_5p_element.h:50
array_1d< double, 2 > transShear
Definition: shell_5p_element.h:35
Definition: shell_5p_element.h:105
Matrix3d Q1
Definition: shell_5p_element.h:107
Matrix3d S2
Definition: shell_5p_element.h:110
Matrix3d Chi12Chi21
Definition: shell_5p_element.h:112
Matrix3d Chi11
Definition: shell_5p_element.h:111
Matrix3d Q2
Definition: shell_5p_element.h:108
Matrix3d Chi22
Definition: shell_5p_element.h:113
Matrix3d S1
Definition: shell_5p_element.h:109
Matrix3d P
Definition: shell_5p_element.h:106
Configure::ContainerType ContainerType
Definition: transfer_utility.h:247