13 #if !defined(KRATOS_SUPPORT_NITSCHE_CONDITION_H_INCLUDED )
14 #define KRATOS_SUPPORT_NITSCHE_CONDITION_H_INCLUDED
124 GeometryType::Pointer pGeometry)
131 GeometryType::Pointer pGeometry,
132 PropertiesType::Pointer pProperties)
133 :
Condition(NewId, pGeometry, pProperties)
151 GeometryType::Pointer pGeom,
152 PropertiesType::Pointer pProperties
155 return Kratos::make_intrusive<SupportNitscheCondition>(
156 NewId, pGeom, pProperties);
163 PropertiesType::Pointer pProperties
166 return Kratos::make_intrusive< SupportNitscheCondition >(
186 CalculateAll(left_hand_side_matrix, rRightHandSideVector,
187 rCurrentProcessInfo,
false,
true);
202 CalculateAll(rLeftHandSideMatrix, right_hand_side_vector,
203 rCurrentProcessInfo,
true,
false);
219 if (rCurrentProcessInfo[BUILD_LEVEL] == 2)
222 rCurrentProcessInfo);
227 rCurrentProcessInfo,
true,
true);
257 const bool CalculateStiffnessMatrixFlag,
258 const bool CalculateResidualVectorFlag
269 Vector& rDeterminantOfJacobian);
277 int Step = 0)
const override;
289 std::string
Info()
const override
291 std::stringstream buffer;
292 buffer <<
"\"SupportNitscheCondition\" #" <<
Id();
299 rOStream <<
"\"SupportNitscheCondition\" #" <<
Id();
315 std::vector<array_1d<double, 3>> m_A_ab_covariant_vector;
323 std::vector<Matrix> m_T_vector;
327 std::vector<Matrix> m_T_hat_vector;
330 std::vector<array_1d< array_1d<double, 3>,2>> m_reference_contravariant_base;
333 std::vector<array_1d<double, 2>> m_n_contravariant_vector;
335 void CalculateKinematics(
337 KinematicVariables& rKinematicVariables,
341 void CalculateTransformation(
342 const KinematicVariables& rKinematicVariables,
347 void CalculateTraction(
350 const KinematicVariables& rActualKinematic,
351 ConstitutiveVariables& rThisConstitutiveVariablesMembrane);
354 void CalculateFirstVariationStressCovariant(
356 Matrix& rFirstVariationStressCovariant,
357 const KinematicVariables& rActualKinematic,
358 ConstitutiveVariables& rThisConstitutiveVariablesMembrane);
361 void CalculateFirstVariationTraction(
363 Matrix& rFirstVariationTraction,
364 Matrix& rFirstVariationStressCovariant,
365 const KinematicVariables& rActualKinematic,
366 ConstitutiveVariables& rThisConstitutiveVariablesMembrane);
369 void CalculateSecondVariationTractionProduct(
372 const KinematicVariables& rActualKinematic,
373 ConstitutiveVariables& rThisConstitutiveVariablesMembrane);
376 void CalculateSecondVariationTraction(
378 Matrix& rSecondVariationTraction,
379 const KinematicVariables& rActualKinematic,
380 Matrix& rFirstVariationStressCovariant,
391 void CalculateConstitutiveVariables(
393 KinematicVariables& rActualMetric,
394 ConstitutiveVariables& rThisConstitutiveVariablesMembrane,
404 void CalculateTransformationPrestress(
405 Matrix& rTransformationPrestress,
406 const KinematicVariables& rActualKinematic
415 virtual void save(
Serializer& rSerializer)
const override
418 rSerializer.
save(
"A_ab_covariant_vector", m_A_ab_covariant_vector);
419 rSerializer.
save(
"dA_vector", m_dA_vector);
420 rSerializer.
save(
"T_vector", m_T_vector);
421 rSerializer.
save(
"reference_contravariant_base", m_reference_contravariant_base);
427 rSerializer.
load(
"A_ab_covariant_vector", m_A_ab_covariant_vector);
428 rSerializer.
load(
"dA_vector", m_dA_vector);
429 rSerializer.
load(
"T_vector", m_T_vector);
430 rSerializer.
load(
"reference_contravariant_base", m_reference_contravariant_base);
Base class for all Conditions.
Definition: condition.h:59
std::size_t SizeType
Definition: condition.h:94
std::vector< std::size_t > EquationIdVectorType
Definition: condition.h:98
Matrix MatrixType
Definition: condition.h:90
std::vector< DofType::Pointer > DofsVectorType
Definition: condition.h:100
StressMeasure
Definition: constitutive_law.h:69
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
Geometry base class.
Definition: geometry.h:71
IndexType Id() const
Definition: indexed_object.h:107
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
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
Nitsche-type based support condition.
Definition: support_nitsche_condition.h:36
std::size_t IndexType
Definition: support_nitsche_condition.h:115
KRATOS_CLASS_POINTER_DEFINITION(SupportNitscheCondition)
Counted pointer of SupportNitscheCondition.
ConfigurationType
Definition: support_nitsche_condition.h:279
void CalculateAll(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo, const bool CalculateStiffnessMatrixFlag, const bool CalculateResidualVectorFlag)
Calculates left (K) and right (u) hand sides.
Definition: support_nitsche_condition.cpp:254
void GetDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const override
Sets on rElementalDofList the degrees of freedom of the considered element geometry.
Definition: support_nitsche_condition.cpp:962
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
This is called during the assembling process in order to calculate the condition right hand side matr...
Definition: support_nitsche_condition.h:180
void GetValuesVector(Vector &rValues, int Step=0) const override
Definition: support_nitsche_condition.cpp:915
void CalculateNitscheStabilizationMatrix(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: support_nitsche_condition.cpp:517
std::size_t SizeType
Size types.
Definition: support_nitsche_condition.h:114
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
This function provides a more general interface to the element.
Definition: support_nitsche_condition.h:214
void DeterminantOfJacobianInitial(const GeometryType &rGeometry, Vector &rDeterminantOfJacobian)
Definition: support_nitsche_condition.cpp:479
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: support_nitsche_condition.h:297
std::string Info() const override
Turn back information as a string.
Definition: support_nitsche_condition.h:289
SupportNitscheCondition(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constructor with Id, geometry and property.
Definition: support_nitsche_condition.h:129
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
This is called during the assembling process in order to calculate the condition left hand side matri...
Definition: support_nitsche_condition.h:196
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const override
Sets on rResult the ID's of the element degrees of freedom.
Definition: support_nitsche_condition.cpp:938
Condition::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override
Create with Id, pointer to geometry and pointer to property.
Definition: support_nitsche_condition.h:149
SupportNitscheCondition(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor with Id and geometry.
Definition: support_nitsche_condition.h:122
SupportNitscheCondition()
Default constructor.
Definition: support_nitsche_condition.h:137
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: support_nitsche_condition.h:303
virtual ~SupportNitscheCondition()=default
Destructor.
Condition::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
Create with Id, pointer to geometry and pointer to property.
Definition: support_nitsche_condition.h:160
#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
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KratosZeroVector< double > ZeroVector
Definition: amatrix_interface.h:561
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
KratosZeroMatrix< double > ZeroMatrix
Definition: amatrix_interface.h:559
Internals::Matrix< double, AMatrix::dynamic, AMatrix::dynamic > Matrix
Definition: amatrix_interface.h:470
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
def load(f)
Definition: ode_solve.py:307
Definition: constitutive_law.h:189
Definition: support_nitsche_condition.h:90
Vector StrainVector
Definition: support_nitsche_condition.h:91
ConstitutiveVariables(SizeType StrainSize)
Definition: support_nitsche_condition.h:98
Matrix ConstitutiveMatrix
Definition: support_nitsche_condition.h:93
Vector StressVector
Definition: support_nitsche_condition.h:92
Internal variables used for metric transformation.
Definition: support_nitsche_condition.h:41
array_1d< double, 3 > n
Definition: support_nitsche_condition.h:60
array_1d< double, 3 > a1
Definition: support_nitsche_condition.h:46
array_1d< double, 3 > a3
Definition: support_nitsche_condition.h:50
array_1d< double, 3 > t
Definition: support_nitsche_condition.h:58
double dA
Definition: support_nitsche_condition.h:55
array_1d< double, 2 > n_contravariant
Definition: support_nitsche_condition.h:62
KinematicVariables(SizeType Dimension)
Definition: support_nitsche_condition.h:68
array_1d< double, 3 > a2
Definition: support_nitsche_condition.h:48
array_1d< double, 3 > a3_tilde
Definition: support_nitsche_condition.h:52
array_1d< double, 3 > a_ab_covariant
Definition: support_nitsche_condition.h:43