43 class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) ShellCrossSection :
public Flags
77 double mSpaceDimension;
78 std::vector< ConstitutiveLaw::StrainMeasure > mStrainMeasures;
107 Vector* mpGeneralizedStrainVector;
108 Vector* mpGeneralizedStressVector;
109 Matrix* mpConstitutiveMatrix;
111 double mStenbergShearStabilization = 1.0;
114 const Vector* mpShapeFunctionsValues;
115 const Matrix* mpShapeFunctionsDerivatives;
123 : mpGeneralizedStrainVector(nullptr)
124 , mpGeneralizedStressVector(nullptr)
125 , mpConstitutiveMatrix(nullptr)
126 , mpShapeFunctionsValues(nullptr)
127 , mpShapeFunctionsDerivatives(nullptr)
128 , mpCurrentProcessInfo(nullptr)
129 , mpMaterialProperties(nullptr)
130 , mpElementGeometry(nullptr)
136 : mpGeneralizedStrainVector(nullptr)
137 , mpGeneralizedStressVector(nullptr)
138 , mpConstitutiveMatrix(nullptr)
139 , mpShapeFunctionsValues(nullptr)
140 , mpShapeFunctionsDerivatives(nullptr)
141 , mpCurrentProcessInfo(&rCurrentProcessInfo)
142 , mpMaterialProperties(&rMaterialProperties)
143 , mpElementGeometry(&rElementGeometry)
147 : mOptions(rNewParameters.mOptions)
148 , mpGeneralizedStrainVector(rNewParameters.mpGeneralizedStrainVector)
149 , mpGeneralizedStressVector(rNewParameters.mpGeneralizedStressVector)
150 , mpConstitutiveMatrix(rNewParameters.mpConstitutiveMatrix)
151 , mpShapeFunctionsValues(rNewParameters.mpShapeFunctionsValues)
152 , mpShapeFunctionsDerivatives(rNewParameters.mpShapeFunctionsDerivatives)
153 , mpCurrentProcessInfo(rNewParameters.mpCurrentProcessInfo)
154 , mpMaterialProperties(rNewParameters.mpMaterialProperties)
155 , mpElementGeometry(rNewParameters.mpElementGeometry)
165 if (!mpShapeFunctionsValues) {
169 if (!mpShapeFunctionsDerivatives) {
181 if (!mpCurrentProcessInfo) {
185 if (!mpMaterialProperties) {
189 if (!mpElementGeometry) {
201 if (!mpGeneralizedStrainVector) {
205 if (!mpGeneralizedStressVector) {
209 if (!mpConstitutiveMatrix) {
226 mOptions.
Set(ThisFlag);
230 mOptions.
Reset(ThisFlag);
240 mpGeneralizedStrainVector=&rGeneralizedStrainVector;
244 mpGeneralizedStressVector=&rGeneralizedStressVector;
248 mpConstitutiveMatrix =&rConstitutiveMatrix;
253 mpShapeFunctionsValues=&rShapeFunctionsValues;
257 mpShapeFunctionsDerivatives=&rShapeFunctionsDerivatives;
261 mpCurrentProcessInfo =&rProcessInfo;
265 mpMaterialProperties =&rMaterialProperties;
269 mpElementGeometry =&rElementGeometry;
273 mStenbergShearStabilization = StenbergShearStabilization;
287 return *mpGeneralizedStrainVector;
291 return *mpGeneralizedStressVector;
295 return *mpConstitutiveMatrix;
300 return *mpShapeFunctionsValues;
304 return *mpShapeFunctionsDerivatives;
308 return *mpCurrentProcessInfo;
312 return *mpMaterialProperties;
316 return *mpElementGeometry;
320 return mStenbergShearStabilization;
331 ConstitutiveLaw::Pointer mConstitutiveLaw;
343 , mLocation(location)
344 , mConstitutiveLaw(pMaterial)
350 : mWeight(other.mWeight)
351 , mLocation(other.mLocation)
352 , mConstitutiveLaw(other.mConstitutiveLaw != NULL ? other.mConstitutiveLaw->Clone() :
ConstitutiveLaw::Pointer())
357 if (
this != &other) {
358 mWeight = other.mWeight;
359 mLocation = other.mLocation;
360 mConstitutiveLaw = other.mConstitutiveLaw != NULL ? other.mConstitutiveLaw->Clone() : ConstitutiveLaw::Pointer();
387 return mConstitutiveLaw;
391 mConstitutiveLaw = pLaw;
398 virtual void save(
Serializer& rSerializer)
const
400 rSerializer.
save(
"W", mWeight);
401 rSerializer.
save(
"L", mLocation);
402 rSerializer.
save(
"CLaw", mConstitutiveLaw);
407 rSerializer.
load(
"W", mWeight);
408 rSerializer.
load(
"L", mLocation);
409 rSerializer.
load(
"CLaw", mConstitutiveLaw);
429 , mIntegrationPoints()
433 : mPlyIndex(PlyIndex)
434 , mIntegrationPoints()
437 KRATOS_ERROR_IF(NumIntegrationPoints < 1) <<
"Number of Integration points must be larger than 0!" << std::endl;
438 if (NumIntegrationPoints < 0) {
439 NumIntegrationPoints = -NumIntegrationPoints;
441 if (NumIntegrationPoints == 0) {
442 NumIntegrationPoints = 5;
444 if (NumIntegrationPoints % 2 == 0) {
445 NumIntegrationPoints += 1;
447 InitializeIntegrationPoints(rProps, NumIntegrationPoints);
451 : mPlyIndex(other.mPlyIndex)
452 , mIntegrationPoints(other.mIntegrationPoints)
459 if (
this != &other) {
460 mPlyIndex = other.mPlyIndex;
461 mIntegrationPoints = other.mIntegrationPoints;
475 double my_location(0.0);
480 for (
int i=0;
i<mPlyIndex+1; ++
i) {
482 my_location = current_location - ply_thickness*0.5 - offset;
483 current_location -= ply_thickness;
508 UpdateIntegrationPoints(rProps);
509 return mIntegrationPoints;
519 return mIntegrationPoints.size();
522 inline void SetConstitutiveLawAt(IntegrationPointCollection::size_type integrationPointID,
const ConstitutiveLaw::Pointer& pNewConstitutiveLaw)
524 if (integrationPointID < mIntegrationPoints.size()) {
525 mIntegrationPoints[integrationPointID].SetConstitutiveLaw(pNewConstitutiveLaw);
531 void InitializeIntegrationPoints(
const Properties& rProps,
const int NumIntegrationPoints)
535 const ConstitutiveLaw::Pointer& pMaterial = rProps[CONSTITUTIVE_LAW];
536 KRATOS_ERROR_IF(pMaterial ==
nullptr) <<
"A Ply needs a constitutive law to be set. "
537 <<
"Missing constitutive law in property: " << rProps.
Id() << std::endl;;
540 mIntegrationPoints.clear();
541 mIntegrationPoints.resize(NumIntegrationPoints);
542 for (
int i=0;
i<NumIntegrationPoints; ++
i) {
543 mIntegrationPoints[
i].SetConstitutiveLaw(pMaterial->Clone());
548 void UpdateIntegrationPoints(
const Properties& rProps)
552 const SizeType num_int_points = mIntegrationPoints.size();
555 Vector ip_w(num_int_points, 1.0);
556 if (num_int_points >= 3) {
558 double iw = (
i % 2 == 0) ? 2.0 : 4.0;
565 const double location = GetLocation(rProps);
568 Vector ip_loc(num_int_points, 0.0);
569 if (num_int_points >= 3) {
570 double loc_start = location + 0.5 *
thickness;
573 ip_loc(
i) = loc_start;
574 loc_start -= loc_incr;
579 IntegrationPoint& r_int_point = mIntegrationPoints[
i];
581 r_int_point.SetLocation(ip_loc(
i));
589 friend class Serializer;
591 virtual void save(Serializer& rSerializer)
const
593 rSerializer.save(
"idx", mPlyIndex);
594 rSerializer.save(
"IntP", mIntegrationPoints);
597 virtual void load(Serializer& rSerializer)
599 rSerializer.load(
"idx", mPlyIndex);
600 rSerializer.load(
"IntP", mIntegrationPoints);
699 virtual std::string GetInfo(
const Properties& rProps);
705 virtual ShellCrossSection::Pointer
Clone()
const;
792 const double& rValue,
855 const Vector& rShapeFunctionsValues);
867 const Vector& rShapeFunctionsValues,
880 const Vector& rShapeFunctionsValues,
893 const Vector& rShapeFunctionsValues,
906 const Vector& rShapeFunctionsValues,
934 const Vector& rShapeFunctionsValues);
957 double c = std::cos(radians);
958 double s = std::sin(radians);
973 T(2, 0) = 2.0 * s *
c;
974 T(2, 1) = - 2.0 * s *
c;
975 T(2, 2) =
c *
c - s * s;
977 project(T, range(3, 6), range(3, 6)) =
project(T, range(0, 3), range(0, 3));
1005 double c = std::cos(radians);
1006 double s = std::sin(radians);
1023 double c = std::cos(radians);
1024 double s = std::sin(radians);
1035 T(0, 2) = - 2.0 * s *
c;
1038 T(1, 2) = 2.0 * s *
c;
1041 T(2, 2) =
c *
c - s * s;
1043 project(T, range(3, 6), range(3, 6)) =
project(T, range(0, 3), range(0, 3));
1071 double c = std::cos(radians);
1072 double s = std::sin(radians);
1095 for (
const auto& r_ply : mStack) {
1096 thickness += r_ply.GetThickness(rProps);
1111 return mStack[0].GetOffset(rProps);
1120 for (
IndexType i_ply=0; i_ply<mStack.size(); ++i_ply) {
1121 rPlyThicknesses[i_ply] = mStack[i_ply].GetThickness(rProps);
1132 mStorePlyConstitutiveMatrices =
true;
1133 mPlyConstitutiveMatrices = std::vector<Matrix>(this->NumberOfPlies());
1135 for (
IndexType ply = 0; ply < this->NumberOfPlies(); ++ply) {
1136 if (mBehavior == Thick) {
1137 mPlyConstitutiveMatrices[ply].resize(8, 8,
false);
1139 mPlyConstitutiveMatrices[ply].resize(6, 6,
false);
1142 mPlyConstitutiveMatrices[ply].clear();
1151 return mPlyConstitutiveMatrices[PlyIndex];
1160 return mStack.size();
1170 if (PlyIndex < mStack.size()) {
1171 return mStack[PlyIndex].NumberOfIntegrationPoints();
1183 if (PlyIndex < mStack.size()) {
1184 mStack[PlyIndex].SetConstitutiveLawAt(point_id, pNewConstitutiveLaw);
1195 for (
const auto& r_ply : mStack) {
1196 vol += r_ply.CalculateMassPerUnitArea(rProps);
1207 return CalculateMassPerUnitArea(rProps) /
GetThickness(rProps);
1218 return mOrientation;
1228 mOrientation = Radians;
1246 mBehavior = behavior;
1256 return (mBehavior == Thick) ? 8 : 6;
1266 return (mBehavior == Thick) ? 1 : 3;
1275 return mDrillingPenalty;
1278 std::vector<ConstitutiveLaw::Pointer> GetConstitutiveLawsVector(
const Properties& rProps);
1283 void ParseOrthotropicPropertyMatrix(
const Properties& pProps);
1288 void GetLaminaeOrientation(
const Properties& pProps,
Vector& rOrientation_Vector);
1293 void GetLaminaeStrengths(std::vector<Matrix>& rLamina_Strengths,
const Properties& rProps);
1301 void InitializeParameters(SectionParameters& rValues,
ConstitutiveLaw::Parameters& rMaterialValues, GeneralVariables& rVariables);
1307 SectionParameters& rValues,
1308 GeneralVariables& rVariables,
1310 const unsigned int& plyNumber);
1333 PlyCollection mStack;
1335 bool mHasDrillingPenalty;
1336 double mDrillingPenalty;
1337 double mOrientation;
1338 SectionBehaviorType mBehavior;
1340 bool mNeedsOOPCondensation;
1341 Vector mOOP_CondensedStrains;
1342 Vector mOOP_CondensedStrains_converged;
1343 bool mStorePlyConstitutiveMatrices =
false;
1344 std::vector<Matrix> mPlyConstitutiveMatrices;
1353 void save(
Serializer& rSerializer)
const override
1356 rSerializer.
save(
"stack", mStack);
1357 rSerializer.
save(
"edit", mEditingStack);
1358 rSerializer.
save(
"dr", mHasDrillingPenalty);
1359 rSerializer.
save(
"bdr", mDrillingPenalty);
1360 rSerializer.
save(
"or", mOrientation);
1362 rSerializer.
save(
"behav", (
int)mBehavior);
1364 rSerializer.
save(
"init", mInitialized);
1365 rSerializer.
save(
"hasOOP", mNeedsOOPCondensation);
1366 rSerializer.
save(
"OOP_eps", mOOP_CondensedStrains);
1367 rSerializer.
save(
"OOP_eps_conv", mOOP_CondensedStrains_converged);
1368 rSerializer.
save(
"store_ply_mat", mStorePlyConstitutiveMatrices);
1369 rSerializer.
save(
"ply_mat", mPlyConstitutiveMatrices);
1372 void load(Serializer& rSerializer)
override
1375 rSerializer.load(
"stack", mStack);
1376 rSerializer.load(
"edit", mEditingStack);
1377 rSerializer.load(
"dr", mHasDrillingPenalty);
1378 rSerializer.load(
"bdr", mDrillingPenalty);
1379 rSerializer.load(
"or", mOrientation);
1382 rSerializer.load(
"behav",
temp);
1383 mBehavior = (SectionBehaviorType)
temp;
1385 rSerializer.load(
"init", mInitialized);
1386 rSerializer.load(
"hasOOP", mNeedsOOPCondensation);
1387 rSerializer.load(
"OOP_eps", mOOP_CondensedStrains);
1388 rSerializer.load(
"OOP_eps_conv", mOOP_CondensedStrains_converged);
1389 rSerializer.load(
"store_ply_mat", mStorePlyConstitutiveMatrices);
1390 rSerializer.load(
"ply_mat", mPlyConstitutiveMatrices);
1400 inline std::istream&
operator >> (std::istream& rIStream, ShellCrossSection& rThis);
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Definition: constitutive_law.h:47
StressMeasure
Definition: constitutive_law.h:69
std::size_t IndexType
Definition: flags.h:74
void Set(const Flags ThisFlag)
Definition: flags.cpp:33
void Reset(const Flags ThisFlag)
Definition: flags.h:193
Geometry base class.
Definition: geometry.h:71
IndexType Id() const
Definition: indexed_object.h:107
Short class definition.
Definition: integration_point.h:52
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
void load(std::string const &rTag, TDataType &rObject)
Definition: serializer.h:207
void save(std::string const &rTag, std::array< TDataType, TDataSize > const &rObject)
Definition: serializer.h:545
Definition: shell_cross_section.hpp:232
IntegrationPoint()
Definition: shell_cross_section.hpp:335
double GetWeight() const
Definition: shell_cross_section.hpp:367
double GetLocation() const
Definition: shell_cross_section.hpp:376
IntegrationPoint(double location, double weight, const ConstitutiveLaw::Pointer pMaterial)
Definition: shell_cross_section.hpp:341
void SetLocation(double l)
Definition: shell_cross_section.hpp:380
void SetConstitutiveLaw(const ConstitutiveLaw::Pointer &pLaw)
Definition: shell_cross_section.hpp:389
const ConstitutiveLaw::Pointer & GetConstitutiveLaw() const
Definition: shell_cross_section.hpp:385
void SetWeight(double w)
Definition: shell_cross_section.hpp:371
IntegrationPoint(const IntegrationPoint &other)
Definition: shell_cross_section.hpp:349
virtual ~IntegrationPoint()
Definition: shell_cross_section.hpp:347
Definition: shell_cross_section.hpp:302
double GetThickness(const Properties &rProps) const
Definition: shell_cross_section.hpp:468
virtual ~Ply()
Definition: shell_cross_section.hpp:455
Ply(const int PlyIndex, int NumIntegrationPoints, const Properties &rProps)
Definition: shell_cross_section.hpp:432
Ply(const Ply &other)
Definition: shell_cross_section.hpp:450
double GetOffset(const Properties &rProps) const
Definition: shell_cross_section.hpp:499
double GetOrientationAngle(const Properties &rProps) const
Definition: shell_cross_section.hpp:494
Ply()
Definition: shell_cross_section.hpp:427
void SetConstitutiveLawAt(IntegrationPointCollection::size_type integrationPointID, const ConstitutiveLaw::Pointer &pNewConstitutiveLaw)
Definition: shell_cross_section.hpp:522
IntegrationPointCollection & GetIntegrationPoints(const Properties &rProps)
Definition: shell_cross_section.hpp:506
IntegrationPointCollection::size_type NumberOfIntegrationPoints() const
Definition: shell_cross_section.hpp:517
double GetLocation(const Properties &rProps) const
Definition: shell_cross_section.hpp:473
std::vector< IntegrationPoint > IntegrationPointCollection
Definition: shell_cross_section.hpp:418
double CalculateMassPerUnitArea(const Properties &rProps) const
Definition: shell_cross_section.hpp:512
SectionParameters.
Definition: shell_cross_section.hpp:101
void SetShapeFunctionsDerivatives(const Matrix &rShapeFunctionsDerivatives)
Definition: shell_cross_section.hpp:255
void SetOptions(const Flags &rOptions)
Definition: shell_cross_section.hpp:233
Vector & GetGeneralizedStressVector()
Definition: shell_cross_section.hpp:289
Vector & GetGeneralizedStrainVector()
Definition: shell_cross_section.hpp:285
const Properties & GetMaterialProperties()
Definition: shell_cross_section.hpp:310
SectionParameters()
Definition: shell_cross_section.hpp:122
bool CheckMechanicalVariables()
Definition: shell_cross_section.hpp:199
void SetConstitutiveMatrix(Matrix &rConstitutiveMatrix)
Definition: shell_cross_section.hpp:246
void SetGeneralizedStressVector(Vector &rGeneralizedStressVector)
Definition: shell_cross_section.hpp:242
Flags & GetOptions()
Definition: shell_cross_section.hpp:280
const Matrix & GetShapeFunctionsDerivatives()
Definition: shell_cross_section.hpp:302
void SetShapeFunctionsValues(const Vector &rShapeFunctionsValues)
Definition: shell_cross_section.hpp:251
const ProcessInfo & GetProcessInfo()
Definition: shell_cross_section.hpp:306
void Set(const Flags ThisFlag)
Definition: shell_cross_section.hpp:224
Matrix & GetConstitutiveMatrix()
Definition: shell_cross_section.hpp:293
SectionParameters(const SectionParameters &rNewParameters)
Definition: shell_cross_section.hpp:146
void SetProcessInfo(const ProcessInfo &rProcessInfo)
Definition: shell_cross_section.hpp:259
bool CheckInfoMaterialGeometry()
Definition: shell_cross_section.hpp:179
bool CheckShapeFunctions()
Definition: shell_cross_section.hpp:163
void Reset(const Flags ThisFlag)
Definition: shell_cross_section.hpp:228
void SetElementGeometry(const GeometryType &rElementGeometry)
Definition: shell_cross_section.hpp:267
SectionParameters(const GeometryType &rElementGeometry, const Properties &rMaterialProperties, const ProcessInfo &rCurrentProcessInfo)
Definition: shell_cross_section.hpp:133
const Vector & GetShapeFunctionsValues()
Definition: shell_cross_section.hpp:298
void SetMaterialProperties(const Properties &rMaterialProperties)
Definition: shell_cross_section.hpp:263
const GeometryType & GetElementGeometry()
Definition: shell_cross_section.hpp:314
void SetGeneralizedStrainVector(Vector &rGeneralizedStrainVector)
Definition: shell_cross_section.hpp:238
void SetStenbergShearStabilization(const double &StenbergShearStabilization)
Definition: shell_cross_section.hpp:271
double GetStenbergShearStabilization()
Definition: shell_cross_section.hpp:318
ShellCrossSection.
Definition: shell_cross_section.hpp:45
SizeType NumberOfIntegrationPointsAt(const IndexType PlyIndex) const
Definition: shell_cross_section.hpp:1168
SectionBehaviorType
Definition: shell_cross_section.hpp:68
virtual void ResetCrossSection(const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const Vector &rShapeFunctionsValues)
void GetRotationMatrixForCondensedStresses(double radians, Matrix &T)
Definition: shell_cross_section.hpp:1059
virtual array_1d< double, 3 > & GetValue(const Variable< array_1d< double, 3 > > &rVariable, array_1d< double, 3 > &rValue)
SectionBehaviorType GetSectionBehavior() const
Definition: shell_cross_section.hpp:1235
std::vector< Ply > PlyCollection
Definition: shell_cross_section.hpp:54
virtual Matrix & GetValue(const Variable< Matrix > &rThisVariable, Matrix &rValue)
double GetOffset(const Properties &rProps) const
Definition: shell_cross_section.hpp:1108
virtual bool ValidateInput(const Properties &rMaterialProperties)
virtual bool Has(const Variable< Vector > &rThisVariable)
virtual void FinalizeSolutionStep(const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const Vector &rShapeFunctionsValues, const ProcessInfo &rCurrentProcessInfo)
KRATOS_CLASS_POINTER_DEFINITION(ShellCrossSection)
void SetupGetPlyConstitutiveMatrices()
Definition: shell_cross_section.hpp:1128
ShellCrossSection(const ShellCrossSection &other)
virtual void InitializeNonLinearIteration(const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const Vector &rShapeFunctionsValues, const ProcessInfo &rCurrentProcessInfo)
virtual int Check(const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const ProcessInfo &rCurrentProcessInfo)
virtual array_1d< double, 6 > & GetValue(const Variable< array_1d< double, 6 > > &rVariable, array_1d< double, 6 > &rValue)
virtual void SetValue(const Variable< array_1d< double, 6 > > &rVariable, const array_1d< double, 6 > &rValue, const ProcessInfo &rCurrentProcessInfo)
void GetRotationMatrixForCondensedStrains(double radians, Matrix &T)
Definition: shell_cross_section.hpp:993
Matrix GetPlyConstitutiveMatrix(const IndexType PlyIndex)
Definition: shell_cross_section.hpp:1149
virtual void SetValue(const Variable< array_1d< double, 3 > > &rVariable, const array_1d< double, 3 > &rValue, const ProcessInfo &rCurrentProcessInfo)
virtual Vector & GetValue(const Variable< Vector > &rThisVariable, Vector &rValue)
virtual bool Has(const Variable< array_1d< double, 6 > > &rThisVariable)
double CalculateAvarageDensity(const Properties &rProps) const
Definition: shell_cross_section.hpp:1205
virtual bool Has(const Variable< Matrix > &rThisVariable)
SizeType GetCondensedStrainSize()
Definition: shell_cross_section.hpp:1264
~ShellCrossSection() override
SizeType GetStrainSize()
Definition: shell_cross_section.hpp:1254
virtual ShellCrossSection::Pointer Clone() const
double GetThickness(const Properties &rProps) const
Definition: shell_cross_section.hpp:1092
SizeType NumberOfPlies() const
Definition: shell_cross_section.hpp:1158
virtual bool Has(const Variable< array_1d< double, 3 > > &rThisVariable)
Geometry< Node > GeometryType
Definition: shell_cross_section.hpp:52
void SetOrientationAngle(const double Radians)
Definition: shell_cross_section.hpp:1226
void GetRotationMatrixForGeneralizedStrains(double radians, Matrix &T)
Definition: shell_cross_section.hpp:955
double GetOrientationAngle() const
Definition: shell_cross_section.hpp:1216
virtual void SetValue(const Variable< Vector > &rVariable, const Vector &rValue, const ProcessInfo &rCurrentProcessInfo)
virtual void InitializeSolutionStep(const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const Vector &rShapeFunctionsValues, const ProcessInfo &rCurrentProcessInfo)
virtual void SetValue(const Variable< double > &rVariable, const double &rValue, const ProcessInfo &rCurrentProcessInfo)
void SetConstitutiveLawAt(const IndexType PlyIndex, SizeType point_id, const ConstitutiveLaw::Pointer &pNewConstitutiveLaw)
Definition: shell_cross_section.hpp:1181
void SetSectionBehavior(SectionBehaviorType behavior)
Definition: shell_cross_section.hpp:1244
void GetRotationMatrixForGeneralizedStresses(double radians, Matrix &T)
Definition: shell_cross_section.hpp:1021
virtual void FinalizeNonLinearIteration(const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const Vector &rShapeFunctionsValues, const ProcessInfo &rCurrentProcessInfo)
virtual void SetValue(const Variable< Matrix > &rVariable, const Matrix &rValue, const ProcessInfo &rCurrentProcessInfo)
void GetPlyThicknesses(const Properties &rProps, Vector &rPlyThicknesses)
Definition: shell_cross_section.hpp:1117
double GetDrillingStiffness() const
Definition: shell_cross_section.hpp:1273
std::size_t SizeType
Definition: shell_cross_section.hpp:56
virtual bool Has(const Variable< double > &rThisVariable)
virtual void InitializeCrossSection(const Properties &rMaterialProperties, const GeometryType &rElementGeometry, const Vector &rShapeFunctionsValues)
double CalculateMassPerUnitArea(const Properties &rProps) const
Definition: shell_cross_section.hpp:1192
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#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(conditional)
Definition: exception.h:162
#define KRATOS_DEBUG_ERROR_IF(conditional)
Definition: exception.h:171
#define KRATOS_DEBUG_ERROR_IF_NOT(conditional)
Definition: exception.h:172
Parameters GetValue(Parameters &rParameters, const std::string &rEntry)
Definition: add_kratos_parameters_to_python.cpp:53
double GetThickness(const Properties &rProps)
Definition: shell_utilities.cpp:197
double GetOrientationAngle(const Properties &rProps, const IndexType Index)
Definition: shell_utilities.cpp:234
double GetDensity(const Properties &rProps, const IndexType Index)
Definition: shell_utilities.cpp:223
double GetOffset(const Properties &rProps)
Definition: shell_utilities.cpp:251
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
TExpressionType::data_type sum(AMatrix::MatrixExpression< TExpressionType, TCategory > const &TheExpression)
Definition: amatrix_interface.h:675
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
TABLE_NUMBER_ANGULAR_VELOCITY TABLE_NUMBER_MOMENT I33 BEAM_INERTIA_ROT_UNIT_LENGHT_Y KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, BEAM_INERTIA_ROT_UNIT_LENGHT_Z) typedef std double
Definition: DEM_application_variables.h:182
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
w
Definition: generate_convection_diffusion_explicit_element.py:108
int strain_size
Definition: generate_hyper_elastic_simo_taylor_neo_hookean.py:16
c
Definition: generate_weakly_compressible_navier_stokes_element.py:108
def load(f)
Definition: ode_solve.py:307
float temp
Definition: rotating_cone.py:85
thickness
Definition: sp_statistics.py:14
integer i
Definition: TensorModule.f:17
integer l
Definition: TensorModule.f:17
Definition: constitutive_law.h:189
Definition: shell_cross_section.hpp:607
double GYZ
Definition: shell_cross_section.hpp:623
Matrix DeformationGradientF0_2D
Definition: shell_cross_section.hpp:615
Matrix ConstitutiveMatrix_2D
Definition: shell_cross_section.hpp:613
Matrix DeformationGradientF_2D
Definition: shell_cross_section.hpp:614
Vector StressVector_2D
Definition: shell_cross_section.hpp:612
Vector CondensedStressVector
Definition: shell_cross_section.hpp:629
double GXZ
Definition: shell_cross_section.hpp:624
Matrix LT
Definition: shell_cross_section.hpp:628
Matrix H
Definition: shell_cross_section.hpp:626
Matrix DeformationGradientF_3D
Definition: shell_cross_section.hpp:620
Matrix L
Definition: shell_cross_section.hpp:627
Matrix DeformationGradientF0_3D
Definition: shell_cross_section.hpp:621
Vector StressVector_3D
Definition: shell_cross_section.hpp:618
double DeterminantF0
Definition: shell_cross_section.hpp:609
double DeterminantF
Definition: shell_cross_section.hpp:608
Vector StrainVector_2D
Definition: shell_cross_section.hpp:611
Matrix ConstitutiveMatrix_3D
Definition: shell_cross_section.hpp:619
Vector StrainVector_3D
Definition: shell_cross_section.hpp:617