19 #include "custom_elements/base_solid_element.h"
168 GeometryType::Pointer pGeom,
169 PropertiesType::Pointer pProperties
182 PropertiesType::Pointer pProperties
191 Element::Pointer Clone(
201 void EquationIdVector(
202 EquationIdVectorType& rResult,
212 DofsVectorType& rElementalDofList,
221 void GetValuesVector(
231 void GetFirstDerivativesVector(
241 void GetSecondDerivativesVector(
252 void CalculateRightHandSide(
263 void CalculateLeftHandSide(
276 void CalculateLocalSystem(
288 void CalculateMassMatrix(
299 void CalculateDampingMatrix(
313 void CalculateDampingMatrix(
328 std::vector<bool>& rOutput,
340 std::vector<int>& rOutput,
352 std::vector<double>& rOutput,
388 std::vector<Vector>& rOutput,
400 std::vector< Matrix >& rOutput,
424 const std::vector<double>& rValues,
436 const std::vector<Vector>& rValues,
448 const std::vector<Matrix>& rValues,
460 const std::vector<ConstitutiveLaw::Pointer>& rValues,
472 int Check(
const ProcessInfo& rCurrentProcessInfo)
const override;
479 std::string
Info()
const override
481 std::stringstream buffer;
482 buffer <<
"SPRISM Element #" << Id();
489 rOStream <<
"SPRISM Element #" << Id();
495 GetGeometry().PrintData(rOStream);
510 void FinalizeSolutionStep(
const ProcessInfo& rCurrentProcessInfo)
override;
516 void InitializeNonLinearIteration(
const ProcessInfo& rCurrentProcessInfo)
override;
522 void FinalizeNonLinearIteration(
const ProcessInfo& rCurrentProcessInfo)
override;
528 void Initialize(
const ProcessInfo& rCurrentProcessInfo)
override;
691 const Matrix* pNcontainer;
724 pNcontainer=&rNcontainer;
761 std::vector<MatrixType> *mpLeftHandSideMatrices;
762 std::vector<VectorType> *mpRightHandSideVectors;
765 const std::vector< Variable< MatrixType > > *mpLeftHandSideVariables;
768 const std::vector< Variable< VectorType > > *mpRightHandSideVariables;
778 void SetLeftHandSideMatrices( std::vector<MatrixType>& rLeftHandSideMatrices ) { mpLeftHandSideMatrices = &rLeftHandSideMatrices; }
782 void SetRightHandSideVectors( std::vector<VectorType>& rRightHandSideVectors ) { mpRightHandSideVectors = &rRightHandSideVectors; }
825 void CalculateElementalSystem(
835 void PrintElementCalculation(
865 void GetNodalCoordinates(
879 void CalculateCommonComponents(
889 void CalculateLocalCoordinateSystem(
892 const double ThisAngle
905 void ComputeLocalDerivatives(
915 void ComputeLocalDerivativesQuadratic(
928 void CalculateJacobianCenterGauss(
930 std::vector< Matrix >& Jinv,
933 const double ZetaGauss
944 void CalculateJacobian(
960 void CalculateJacobianAndInv(
975 void CalculateJacobianAndInv(
987 void CalculateCartesianDerivativesOnCenterPlane(
1000 void CalculateCartesianDerOnGaussPlane(
1014 void CalculateCartesianDerOnGaussTrans(
1027 void CalculateCartesianDerOnCenterTrans(
1042 void CalculateInPlaneGradientFGauss(
1056 void CalculateTransverseGradientF(
1068 void CalculateTransverseGradientFinP(
1082 void CalculateAndAddBMembrane(
1096 void CalculateAndAddMembraneKgeometric(
1112 void CalculateAndAddBShear(
1128 void CalculateAndAddShearKgeometric(
1141 void CalculateAndAddBNormal(
1154 void CalculateAndAddNormalKgeometric(
1157 const double SNormal
1179 void IntegrateStressesInZeta(
1182 const double AlphaEAS,
1183 const double ZetaGauss,
1184 const double IntegrationWeight
1194 void IntegrateEASInZeta(
1197 const double ZetaGauss,
1198 const double IntegrationWeight
1209 void CalculateAndAddLHS(
1228 void CalculateAndAddRHS(
1244 void CalculateAndAddKuum(
1247 const double IntegrationWeight
1254 void CalculateAndAddKuug(
1288 void CalculateAndAddExternalForces(
1299 void CalculateAndAddInternalForces(
1313 void SetGeneralVariables(
1325 void InitializeSystemMatrices(
1328 Flags& rCalculationFlags
1335 void CalculateDeltaPosition(
Matrix & rDeltaPosition);
1345 void CalculateKinematics(
1350 const double AlphaEAS,
1351 const double ZetaGauss
1362 const int rPointNumber
1371 void CalculateDeformationMatrix(
1374 const double ZetaGauss,
1375 const double AlphaEAS
1389 void FinalizeStepVariables(
1399 void GetHistoricalVariables(
1409 void CalculateVolumeChange(
1410 double& rVolumeChange,
1420 void CalculateVolumeForce(
1423 const double IntegrationWeight
1458 template<
class TType>
1459 void GetValueOnConstitutiveLaw(
1461 std::vector<TType>& rOutput
1466 for (
IndexType point_number = 0; point_number <integration_points.size(); ++point_number ) {
1467 mConstitutiveLawVector[point_number]->GetValue( rVariable,rOutput[point_number]);
1479 template<
class TType>
1480 void CalculateOnConstitutiveLaw(
1481 const Variable<TType>& rVariable,
1482 std::vector<TType>& rOutput,
1483 const ProcessInfo& rCurrentProcessInfo
1487 GeneralVariables general_variables;
1488 this->InitializeGeneralVariables(general_variables);
1491 ConstitutiveLaw::Parameters Values(GetGeometry(),GetProperties(),rCurrentProcessInfo);
1494 Flags &ConstitutiveLawOptions = Values.GetOptions();
1496 ConstitutiveLawOptions.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN,
false);
1497 ConstitutiveLawOptions.Set(ConstitutiveLaw::COMPUTE_STRESS);
1502 double& alpha_eas = this->
GetValue(ALPHA_EAS);
1505 CartesianDerivatives this_cartesian_derivatives;
1506 this->CalculateCartesianDerivatives(this_cartesian_derivatives);
1509 CommonComponents common_components;
1510 common_components.clear();
1511 this->CalculateCommonComponents(common_components, this_cartesian_derivatives);
1514 for (
IndexType point_number = 0; point_number < integration_points.size(); ++point_number ) {
1515 const double zeta_gauss = 2.0 * integration_points[point_number].Z() - 1.0;
1518 this->CalculateKinematics(general_variables, common_components, integration_points, point_number, alpha_eas, zeta_gauss);
1521 if( mFinalizedStep )
1522 this->GetHistoricalVariables(general_variables,point_number);
1525 this->SetGeneralVariables(general_variables,Values,point_number);
1527 rOutput[point_number] = mConstitutiveLawVector[point_number]->CalculateValue( Values, rVariable, rOutput[point_number] );
1543 void save(
Serializer& rSerializer)
const override;
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
This is base class used to define the solid elements.
Definition: base_solid_element.h:67
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::vector< IntegrationPointType > IntegrationPointsArrayType
Definition: geometry.h:161
This class is a vector which stores global pointers.
Definition: global_pointers_vector.h:61
This class defines the node.
Definition: node.h:65
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
This is a triangular prism solid element for the analysis of thin/thick shells undergoing large elast...
Definition: solid_shell_element_sprism_3D6N.h:58
Flags mELementalFlags
Definition: solid_shell_element_sprism_3D6N.h:814
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_RHS_VECTOR)
Flags related to the element computation.
Node NodeType
This is the definition of the node.
Definition: solid_shell_element_sprism_3D6N.h:89
GlobalPointersVector< NodeType > WeakPointerVectorNodesType
Definition: solid_shell_element_sprism_3D6N.h:101
OrthogonalBaseApproach
To differtiate between the different possible orthogonal bases.
Definition: solid_shell_element_sprism_3D6N.h:127
GeometricLevel
To differtiate between center, lower part and upper part.
Definition: solid_shell_element_sprism_3D6N.h:118
KRATOS_DEFINE_LOCAL_FLAG(TOTAL_UPDATED_LAGRANGIAN)
ConstitutiveLaw ConstitutiveLawType
Reference type definition for constitutive laws.
Definition: solid_shell_element_sprism_3D6N.h:77
BaseSolidElement BaseType
The base element type.
Definition: solid_shell_element_sprism_3D6N.h:92
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: solid_shell_element_sprism_3D6N.h:487
std::string Info() const override
Turn back information as a string.
Definition: solid_shell_element_sprism_3D6N.h:479
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: solid_shell_element_sprism_3D6N.h:80
std::size_t SizeType
The definition of the sizetype.
Definition: solid_shell_element_sprism_3D6N.h:98
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: solid_shell_element_sprism_3D6N.h:493
KRATOS_DEFINE_LOCAL_FLAG(EXPLICIT_RHS_COMPUTATION)
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_LHS_MATRIX)
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_LHS_MATRIX_WITH_COMPONENTS)
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_RHS_VECTOR_WITH_COMPONENTS)
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(SolidShellElementSprism3D6N)
Counted pointer of SolidShellElementSprism3D6N.
bool mFinalizedStep
Definition: solid_shell_element_sprism_3D6N.h:807
std::size_t IndexType
The definition of the index type.
Definition: solid_shell_element_sprism_3D6N.h:95
std::vector< Matrix > mAuxContainer
Definition: solid_shell_element_sprism_3D6N.h:810
KRATOS_DEFINE_LOCAL_FLAG(QUADRATIC_ELEMENT)
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: solid_shell_element_sprism_3D6N.h:83
Configuration
This enum is defined in oder to difereniate between initial (TL) and current (UL) configuration.
Definition: solid_shell_element_sprism_3D6N.h:113
KRATOS_DEFINE_LOCAL_FLAG(EAS_IMPLICIT_EXPLICIT)
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: solid_shell_element_sprism_3D6N.h:86
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
void SetValuesOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const std::vector< TDataType > &values, const ProcessInfo &rCurrentProcessInfo)
Definition: add_mesh_to_python.cpp:185
pybind11::list CalculateOnIntegrationPoints(TObject &dummy, const Variable< TDataType > &rVariable, const ProcessInfo &rProcessInfo)
Definition: add_mesh_to_python.cpp:142
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
Parameters GetValue(Parameters &rParameters, const std::string &rEntry)
Definition: add_kratos_parameters_to_python.cpp:53
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
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
def load(f)
Definition: ode_solve.py:307
J
Definition: sensitivityMatrix.py:58
integer i
Definition: TensorModule.f:17
Definition: constitutive_law.h:189
Here the cartesian derivatives are defined.
Definition: solid_shell_element_sprism_3D6N.h:539
BoundedMatrix< double, 2, 2 > JInvPlaneUpper
Definition: solid_shell_element_sprism_3D6N.h:552
array_1d< BoundedMatrix< double, 2, 4 >, 6 > InPlaneCartesianDerivativesGauss
Definition: solid_shell_element_sprism_3D6N.h:542
BoundedMatrix< double, 2, 2 > JInvPlaneLower
Definition: solid_shell_element_sprism_3D6N.h:551
BoundedMatrix< double, 6, 1 > TransversalCartesianDerivativesCenter
Definition: solid_shell_element_sprism_3D6N.h:546
void clear()
Reset components.
Definition: solid_shell_element_sprism_3D6N.h:557
array_1d< BoundedMatrix< double, 6, 1 >, 6 > TransversalCartesianDerivativesGauss
Definition: solid_shell_element_sprism_3D6N.h:548
Common Components defined in order to compute the Cauchy tensor and the deformation matrix.
Definition: solid_shell_element_sprism_3D6N.h:576
BoundedMatrix< double, 3, 1 > CMembraneLower
Transverse normal.
Definition: solid_shell_element_sprism_3D6N.h:585
BoundedMatrix< double, 3, 18 > BMembraneUpper
Membrane (lower)
Definition: solid_shell_element_sprism_3D6N.h:579
double CNormal
Transverse shear (upper)
Definition: solid_shell_element_sprism_3D6N.h:589
BoundedMatrix< double, 2, 18 > BShearLower
Membrane (upper)
Definition: solid_shell_element_sprism_3D6N.h:580
BoundedMatrix< double, 2, 1 > CShearLower
Membrane (upper)
Definition: solid_shell_element_sprism_3D6N.h:587
BoundedMatrix< double, 3, 18 > BMembraneLower
Definition: solid_shell_element_sprism_3D6N.h:578
BoundedMatrix< double, 3, 1 > CMembraneUpper
Membrane (lower)
Definition: solid_shell_element_sprism_3D6N.h:586
BoundedMatrix< double, 2, 18 > BShearUpper
Transverse shear (lower)
Definition: solid_shell_element_sprism_3D6N.h:581
BoundedMatrix< double, 1, 18 > BNormal
Transverse shear (upper)
Definition: solid_shell_element_sprism_3D6N.h:582
BoundedMatrix< double, 2, 1 > CShearUpper
Transverse shear (lower)
Definition: solid_shell_element_sprism_3D6N.h:588
void clear()
Definition: solid_shell_element_sprism_3D6N.h:594
EAS Components.
Definition: solid_shell_element_sprism_3D6N.h:668
BoundedMatrix< double, 1, 36 > mHEAS
Definition: solid_shell_element_sprism_3D6N.h:672
double mRHSAlpha
Definition: solid_shell_element_sprism_3D6N.h:670
void clear()
Definition: solid_shell_element_sprism_3D6N.h:677
double mStiffAlpha
Definition: solid_shell_element_sprism_3D6N.h:671
Definition: solid_shell_element_sprism_3D6N.h:688
double detF
FT = F0 * F ( total F )
Definition: solid_shell_element_sprism_3D6N.h:705
Vector StressVector
Strain tensor.
Definition: solid_shell_element_sprism_3D6N.h:700
void SetShapeFunctions(const Matrix &rNcontainer)
Definition: solid_shell_element_sprism_3D6N.h:722
Vector N
Volume variation, sqrt(det(C))
Definition: solid_shell_element_sprism_3D6N.h:712
Matrix DN_DX
Definition: solid_shell_element_sprism_3D6N.h:713
Vector C
Deformation gradient determinant in the reference configuration.
Definition: solid_shell_element_sprism_3D6N.h:708
const GeometryType::ShapeFunctionsGradientsType & GetShapeFunctionsGradients()
Definition: solid_shell_element_sprism_3D6N.h:740
Matrix FT
Deformation gradient (F) in the reference configuration, ( historical F )
Definition: solid_shell_element_sprism_3D6N.h:704
Vector StrainVector
Constitutive matrix.
Definition: solid_shell_element_sprism_3D6N.h:699
void SetShapeFunctionsGradients(const GeometryType::ShapeFunctionsGradientsType &rDN_De)
Definition: solid_shell_element_sprism_3D6N.h:727
GeometryType::JacobiansType J
Definition: solid_shell_element_sprism_3D6N.h:716
double detFT
Deformation gradient determinant in the reference configuration.
Definition: solid_shell_element_sprism_3D6N.h:707
GeometryType::JacobiansType j
Definition: solid_shell_element_sprism_3D6N.h:717
double detJ
The Cauchy tensor components.
Definition: solid_shell_element_sprism_3D6N.h:709
Matrix F
Deformation matrix.
Definition: solid_shell_element_sprism_3D6N.h:702
double detF0
Deformation gradient determinant in the current configuration.
Definition: solid_shell_element_sprism_3D6N.h:706
Matrix B
Stress tensor.
Definition: solid_shell_element_sprism_3D6N.h:701
const Matrix & GetShapeFunctions()
Definition: solid_shell_element_sprism_3D6N.h:735
Matrix ConstitutiveMatrix
Definition: solid_shell_element_sprism_3D6N.h:698
StressMeasureType StressMeasure
Definition: solid_shell_element_sprism_3D6N.h:695
Matrix F0
Deformation gradient (F) from the reference to the current configuration ( Delta F )
Definition: solid_shell_element_sprism_3D6N.h:703
Definition: solid_shell_element_sprism_3D6N.h:754
VectorType & GetRightHandSideVector()
Definition: solid_shell_element_sprism_3D6N.h:792
std::vector< MatrixType > & GetLeftHandSideMatrices()
Definition: solid_shell_element_sprism_3D6N.h:789
void SetLeftHandSideMatrix(MatrixType &rLeftHandSideMatrix)
Definition: solid_shell_element_sprism_3D6N.h:777
void SetRightHandSideVector(VectorType &rRightHandSideVector)
Definition: solid_shell_element_sprism_3D6N.h:781
MatrixType & GetLeftHandSideMatrix()
Definition: solid_shell_element_sprism_3D6N.h:788
void SetLeftHandSideVariables(const std::vector< Variable< MatrixType > > &rLeftHandSideVariables)
Definition: solid_shell_element_sprism_3D6N.h:779
void SetRightHandSideVectors(std::vector< VectorType > &rRightHandSideVectors)
Definition: solid_shell_element_sprism_3D6N.h:782
const std::vector< Variable< VectorType > > & GetRightHandSideVariables()
Definition: solid_shell_element_sprism_3D6N.h:794
void SetRightHandSideVariables(const std::vector< Variable< VectorType > > &rRightHandSideVariables)
Definition: solid_shell_element_sprism_3D6N.h:783
const std::vector< Variable< MatrixType > > & GetLeftHandSideVariables()
Definition: solid_shell_element_sprism_3D6N.h:790
Flags CalculationFlags
Definition: solid_shell_element_sprism_3D6N.h:772
void SetLeftHandSideMatrices(std::vector< MatrixType > &rLeftHandSideMatrices)
Definition: solid_shell_element_sprism_3D6N.h:778
std::vector< VectorType > & GetRightHandSideVectors()
Definition: solid_shell_element_sprism_3D6N.h:793
OrthogonalBase.
Definition: solid_shell_element_sprism_3D6N.h:641
array_1d< double, 3 > Veta
Definition: solid_shell_element_sprism_3D6N.h:642
Stress integrated Components used during the integration.
Definition: solid_shell_element_sprism_3D6N.h:615
array_1d< double, 2 > SShearUpper
Transverse shear (lower)
Definition: solid_shell_element_sprism_3D6N.h:620
array_1d< double, 2 > SShearLower
Membrane (upper)
Definition: solid_shell_element_sprism_3D6N.h:619
void clear()
Transverse normal.
Definition: solid_shell_element_sprism_3D6N.h:626
array_1d< double, 3 > SMembraneUpper
Membrane (lower)
Definition: solid_shell_element_sprism_3D6N.h:618
double SNormal
Transverse shear (upper)
Definition: solid_shell_element_sprism_3D6N.h:621
array_1d< double, 3 > SMembraneLower
Definition: solid_shell_element_sprism_3D6N.h:617
TransverseGradient.
Definition: solid_shell_element_sprism_3D6N.h:650
array_1d< double, 3 > F0
Definition: solid_shell_element_sprism_3D6N.h:651
TransverseGradientIsoParametric.
Definition: solid_shell_element_sprism_3D6N.h:659
array_1d< double, 3 > Feta
Definition: solid_shell_element_sprism_3D6N.h:660