10 #if !defined(KRATOS_RESIDUAL_BASED_BOSSAK_DISPLACEMENT_ROTATION_SCHEME)
11 #define KRATOS_RESIDUAL_BASED_BOSSAK_DISPLACEMENT_ROTATION_SCHEME
16 #include "boost/smart_ptr.hpp"
49 template<
class TSparseSpace,
class TDenseSpace >
87 std::vector< Matrix >
M;
88 std::vector< Matrix >
D;
94 std::vector< Vector >
fm;
95 std::vector< Vector >
fd;
140 :
Scheme<TSparseSpace,TDenseSpace>()
161 int NumThreads = OpenMPUtils::GetNumThreads();
211 if(
i->IsNot(SLAVE) &&
i->IsNot(RIGID) ){
219 ReferenceRotation = CurrentRotation;
226 ReferenceDisplacement = CurrentDisplacement;
236 if (i_dof->IsFree() )
238 i_dof->GetSolutionStepValue() += Dx[i_dof->EquationId()];
251 if(
i->IsNot(SLAVE) &&
i->IsNot(RIGID) ){
256 noalias(DeltaDisplacement) = CurrentDisplacement-ReferenceDisplacement;
260 noalias(CurrentStepDisplacement) = CurrentDisplacement - (
i)->FastGetSolutionStepValue(DISPLACEMENT,1);
270 UpdateAcceleration ((*
i), CurrentAcceleration, DeltaDisplacement, CurrentStepDisplacement, PreviousAcceleration, PreviousVelocity);
271 UpdateVelocity ((*
i), CurrentVelocity, DeltaDisplacement, CurrentAcceleration, PreviousAcceleration, PreviousVelocity);
293 if(
i->IsNot(SLAVE) &&
i->IsNot(RIGID) ){
306 CurrentDeltaRotation = CurrentRotation-ReferenceRotation;
315 for(
unsigned int j=0;
j<3;
j++)
317 DeltaRotationVector[
j] = CurrentDeltaRotation[
j];
319 TotalRotationVector[
j] = ReferenceRotation[
j];
321 StepRotationVector[
j] = CurrentStepRotation[
j];
330 CurrentRotationQuaternion = DeltaRotationQuaternion * ReferenceRotationQuaternion;
341 CurrentRotationQuaternion = DeltaRotationQuaternion * ReferenceRotationQuaternion;
347 for(
unsigned int j=0;
j<3;
j++)
349 LinearDeltaRotationVector[
j] = StepRotationVector[
j] - CurrentStepRotation[
j];
354 (ReferenceRotationQuaternion.conjugate()).ToRotationMatrix(RotationMatrix);
355 LinearDeltaRotationVector =
prod( RotationMatrix, LinearDeltaRotationVector );
362 for(
unsigned int j=0;
j<3;
j++)
365 CurrentRotation[
j] = TotalRotationVector[
j];
366 CurrentStepRotation[
j] = StepRotationVector[
j];
369 LinearDeltaRotation[
j] = LinearDeltaRotationVector[
j];
377 array_1d<double, 3 > & PreviousAngularAcceleration = (
i)->FastGetSolutionStepValue(ANGULAR_ACCELERATION,1);
381 UpdateAngularAcceleration ((*
i), CurrentAcceleration, LinearDeltaRotation, CurrentStepRotation, PreviousAngularAcceleration, PreviousAngularVelocity);
382 UpdateAngularVelocity ((*
i), CurrentVelocity, LinearDeltaRotation, CurrentAcceleration, PreviousAngularAcceleration, PreviousAngularVelocity);
418 if( (
i)->Is(SLAVE) &&
i->IsNot(RIGID) ){
440 QuaternionType TotalQuaternion = QuaternionType::FromRotationVector<array_1d<double,3> >(Rotation);
442 Radius = (
i)->GetInitialPosition() - Center;
447 for(
int j=0;
j<3;
j++)
448 RadiusVector[
j] = Radius[
j];
450 RadiusVector =
prod( RotationMatrix, RadiusVector );
452 for(
int j=0;
j<3;
j++)
453 Radius[
j] = RadiusVector[
j];
462 noalias(NodeDisplacement) = ( (Center + Displacement) + Radius ) - (
i)->GetInitialPosition();
463 noalias(NodeRotation) = Rotation;
464 noalias(NodeStepRotation) = StepRotation;
465 noalias(NodeDeltaRotation) = DeltaRotation;
467 for(
int j=0;
j<3;
j++)
468 RadiusVector[
j] = Radius[
j];
472 for(
int j=0;
j<3;
j++)
481 for(
int j=0;
j<3;
j++)
484 (
i)->FastGetSolutionStepValue(VELOCITY) = Velocity + VariableArray;
489 for(
int j=0;
j<3;
j++)
490 AngularVariable[
j] = AngularVelocity[
j];
497 for(
int j=0;
j<3;
j++)
506 for(
int j=0;
j<3;
j++)
507 VariableArray[
j] =
Variable[
j] + AngularVariable[
j];
509 (
i)->FastGetSolutionStepValue(ACCELERATION) = Acceleration + VariableArray;
513 (
i)->FastGetSolutionStepValue(ANGULAR_VELOCITY) = AngularVelocity;
514 (
i)->FastGetSolutionStepValue(ANGULAR_ACCELERATION) = AngularAcceleration;
555 if(
i->IsNot(SLAVE) &&
i->IsNot(RIGID) ){
568 unsigned int previous = 1;
573 noalias(CurrentStepDisplacement) = CurrentDisplacement - ReferenceDisplacement;
578 PredictStepDisplacement( (*
i),CurrentStepDisplacement, CurrentVelocity, PreviousAcceleration, CurrentAcceleration, CurrentAngularVelocity);
580 if (
i->HasDofFor(LAGRANGE_MULTIPLIER_NORMAL))
582 double& PreviousLM = (
i)->FastGetSolutionStepValue(LAGRANGE_MULTIPLIER_NORMAL, 1);
583 double& CurrentLM = (
i)->FastGetSolutionStepValue(LAGRANGE_MULTIPLIER_NORMAL);
585 CurrentLM = PreviousLM;
595 PredictAcceleration ( (*
i), CurrentAcceleration, CurrentStepDisplacement, PreviousAcceleration, PreviousVelocity);
596 PredictVelocity ( (*
i), CurrentVelocity, CurrentStepDisplacement, CurrentAcceleration, PreviousAcceleration, PreviousVelocity);
610 if(
i->IsNot(SLAVE) &&
i->IsNot(RIGID) ){
616 array_1d<double, 3 >& CurrentAngularAcceleration = (
i)->FastGetSolutionStepValue(ANGULAR_ACCELERATION);
621 unsigned int previous = 1;
622 array_1d<double, 3 > PreviousAngularVelocity = (
i)->FastGetSolutionStepValue(ANGULAR_VELOCITY,previous);
623 array_1d<double, 3 > PreviousAngularAcceleration = (
i)->FastGetSolutionStepValue(ANGULAR_ACCELERATION,previous);
625 PredictStepRotation( (*
i), CurrentStepRotation, CurrentAngularVelocity, PreviousAngularAcceleration, CurrentAngularAcceleration);
635 PredictAngularAcceleration ( (*
i), CurrentAngularAcceleration, CurrentStepRotation, PreviousAngularAcceleration, PreviousAngularVelocity);
636 PredictAngularVelocity ( (*
i), CurrentAngularVelocity, CurrentStepRotation, CurrentAngularAcceleration, PreviousAngularAcceleration, PreviousAngularVelocity);
659 int NumThreads = OpenMPUtils::GetNumThreads();
666 ElementsArrayType::iterator ElemBegin = rModelPart.
Elements().begin() + ElementPartition[
k];
667 ElementsArrayType::iterator ElemEnd = rModelPart.
Elements().begin() + ElementPartition[
k + 1];
669 for (ElementsArrayType::iterator itElem = ElemBegin; itElem != ElemEnd; itElem++)
671 itElem->Initialize();
692 KRATOS_THROW_ERROR( std::logic_error,
"Before initilizing Conditions, initialize Elements FIRST",
"" )
694 int NumThreads = OpenMPUtils::GetNumThreads();
702 ConditionsArrayType::iterator CondBegin = rModelPart.
Conditions().begin() + ConditionPartition[
k];
703 ConditionsArrayType::iterator CondEnd = rModelPart.
Conditions().begin() + ConditionPartition[
k + 1];
705 for (ConditionsArrayType::iterator itCond = CondBegin; itCond != CondEnd; itCond++)
707 itCond->Initialize();
738 double DeltaTime = CurrentProcessInfo[DELTA_TIME];
741 KRATOS_THROW_ERROR(std::logic_error,
"detected delta_time = 0 in the Solution Scheme ... check if the time step is created correctly for the current model part",
"" )
748 CurrentProcessInfo[BOSSAK_ALPHA] =
mAlpha.
m;
749 CurrentProcessInfo[COMPUTE_DYNAMIC_TANGENT] =
true;
790 int NumThreads = OpenMPUtils::GetNumThreads();
798 ElementsArrayType::iterator ElementsBegin = rElements.begin() + ElementPartition[
k];
799 ElementsArrayType::iterator ElementsEnd = rElements.begin() + ElementPartition[
k + 1];
801 for (ElementsArrayType::iterator itElem = ElementsBegin; itElem != ElementsEnd; itElem++)
803 itElem->FinalizeSolutionStep(CurrentProcessInfo);
816 ConditionsArrayType::iterator ConditionsBegin = rConditions.begin() + ConditionPartition[
k];
817 ConditionsArrayType::iterator ConditionsEnd = rConditions.begin() + ConditionPartition[
k + 1];
819 for (ConditionsArrayType::iterator itCond = ConditionsBegin; itCond != ConditionsEnd; itCond++)
821 itCond->FinalizeSolutionStep(CurrentProcessInfo);
839 for (ElementsArrayType::iterator it = pElements.begin(); it != pElements.end(); ++it)
845 for (ConditionsArrayType::iterator it = pConditions.begin(); it != pConditions.end(); ++it)
885 Element::Pointer rCurrentElement,
897 (rCurrentElement) -> CalculateLocalSystem(LHS_Contribution,RHS_Contribution,CurrentProcessInfo);
903 (rCurrentElement) -> CalculateSecondDerivativesContributions(
mMatrix.
M[thread],
mVector.
fm[thread],CurrentProcessInfo);
905 (rCurrentElement) -> CalculateFirstDerivativesContributions(
mMatrix.
D[thread],
mVector.
fd[thread],CurrentProcessInfo);
910 (rCurrentElement) -> EquationIdVector(
EquationId,CurrentProcessInfo);
928 Element::Pointer rCurrentElement,
942 (rCurrentElement) -> CalculateRightHandSide(RHS_Contribution,CurrentProcessInfo);
947 (rCurrentElement) -> CalculateSecondDerivativesRHS(
mVector.
fm[thread],CurrentProcessInfo);
949 (rCurrentElement) -> CalculateFirstDerivativesRHS(
mVector.
fd[thread],CurrentProcessInfo);
953 (rCurrentElement) -> EquationIdVector(
EquationId,CurrentProcessInfo);
973 Condition::Pointer rCurrentCondition,
989 (rCurrentCondition) -> CalculateLocalSystem(LHS_Contribution,RHS_Contribution,CurrentProcessInfo);
994 (rCurrentCondition) -> CalculateSecondDerivativesContributions(
mMatrix.
M[thread],
mVector.
fm[thread],CurrentProcessInfo);
996 (rCurrentCondition) -> CalculateFirstDerivativesContributions(
mMatrix.
D[thread],
mVector.
fd[thread],CurrentProcessInfo);
1000 (rCurrentCondition) -> EquationIdVector(
EquationId,CurrentProcessInfo);
1021 Condition::Pointer rCurrentCondition,
1034 (rCurrentCondition) -> CalculateRightHandSide(RHS_Contribution, CurrentProcessInfo);
1039 (rCurrentCondition) -> CalculateSecondDerivativesRHS(
mVector.
fm[thread],CurrentProcessInfo);
1041 (rCurrentCondition) -> CalculateFirstDerivativesRHS(
mVector.
fd[thread],CurrentProcessInfo);
1045 (rCurrentCondition) -> EquationIdVector(
EquationId, CurrentProcessInfo);
1067 Element::Pointer rCurrentElement,
1071 rCurrentElement->GetDofList(ElementalDofList, CurrentProcessInfo);
1081 Condition::Pointer rCurrentCondition,
1085 rCurrentCondition->GetDofList(ConditionDofList, CurrentProcessInfo);
1103 if(err!=0)
return err;
1107 if(DISPLACEMENT.Key() == 0)
1108 KRATOS_THROW_ERROR( std::invalid_argument,
"DISPLACEMENT has Key zero! (check if the application is correctly registered",
"" )
1109 if(VELOCITY.Key() == 0)
1110 KRATOS_THROW_ERROR( std::invalid_argument,
"VELOCITY has Key zero! (check if the application is correctly registered",
"" )
1111 if(ACCELERATION.Key() == 0)
1112 KRATOS_THROW_ERROR( std::invalid_argument,
"ACCELERATION has Key zero! (check if the application is correctly registered",
"" )
1115 for(ModelPart::NodesContainerType::iterator it=r_model_part.
NodesBegin();
1118 if (it->SolutionStepsDataHas(DISPLACEMENT) ==
false)
1119 KRATOS_THROW_ERROR( std::logic_error,
"DISPLACEMENT variable is not allocated for node ", it->Id() )
1120 if (it->SolutionStepsDataHas(VELOCITY) ==
false)
1121 KRATOS_THROW_ERROR( std::logic_error,
"DISPLACEMENT variable is not allocated for node ", it->Id() )
1122 if (it->SolutionStepsDataHas(ACCELERATION) ==
false)
1123 KRATOS_THROW_ERROR( std::logic_error,
"DISPLACEMENT variable is not allocated for node ", it->Id() )
1127 for(ModelPart::NodesContainerType::iterator it=r_model_part.
NodesBegin();
1130 if(it->HasDofFor(DISPLACEMENT_X) ==
false)
1131 KRATOS_THROW_ERROR( std::invalid_argument,
"missing DISPLACEMENT_X dof on node ",it->Id() )
1132 if(it->HasDofFor(DISPLACEMENT_Y) ==
false)
1133 KRATOS_THROW_ERROR( std::invalid_argument,
"missing DISPLACEMENT_Y dof on node ",it->Id() )
1134 if(it->HasDofFor(DISPLACEMENT_Z) ==
false)
1135 KRATOS_THROW_ERROR( std::invalid_argument,
"missing DISPLACEMENT_Z dof on node ",it->Id() )
1142 KRATOS_THROW_ERROR( std::logic_error,
"insufficient buffer size. Buffer size should be greater than 2. Current size is", r_model_part.
GetBufferSize() )
1196 if ((
Node.
pGetDof(DISPLACEMENT_X))->IsFixed() ==
false)
1198 CurrentStepDisplacement[0] = 0;
1201 if ((
Node.
pGetDof(DISPLACEMENT_Y))->IsFixed() ==
false)
1203 CurrentStepDisplacement[1] = 0;
1206 if ((
Node.
pGetDof(DISPLACEMENT_Z))->IsFixed() ==
false)
1208 CurrentStepDisplacement[2] = 0;
1250 noalias(CurrentDisplacement) += StepDisplacement;
1292 if ((
Node.
pGetDof(DISPLACEMENT_X))->IsFixed() ==
false)
1294 CurrentVelocity[0] = PreviousVelocity[0] + (
mNewmark.
c2 * PreviousAcceleration[0]
1297 if ((
Node.
pGetDof(DISPLACEMENT_Y))->IsFixed() ==
false)
1299 CurrentVelocity[1] = PreviousVelocity[1] + (
mNewmark.
c2 * PreviousAcceleration[1]
1302 if ((
Node.
pGetDof(DISPLACEMENT_Z))->IsFixed() ==
false)
1304 CurrentVelocity[2] = PreviousVelocity[2] + (
mNewmark.
c2 * PreviousAcceleration[2]
1322 if ((
Node.
pGetDof(DISPLACEMENT_X))->IsFixed() ==
false)
1327 if ((
Node.
pGetDof(DISPLACEMENT_Y))->IsFixed() ==
false)
1332 if ((
Node.
pGetDof(DISPLACEMENT_Z))->IsFixed() ==
false)
1376 if ((
Node.
pGetDof(ROTATION_X))->IsFixed() ==
false)
1378 CurrentStepRotation[0] = 0;
1381 if ((
Node.
pGetDof(ROTATION_Y))->IsFixed() ==
false)
1383 CurrentStepRotation[1] = 0;
1386 if ((
Node.
pGetDof(ROTATION_Z))->IsFixed() ==
false)
1388 CurrentStepRotation[2] = 0;
1408 noalias(CurrentRotation) += StepRotation;
1449 if(
Node.
Is(SLAVE))
return;
1476 if ((
Node.
pGetDof(ROTATION_X))->IsFixed() ==
false)
1478 CurrentAngularVelocity[0] = PreviousAngularVelocity[0] + (
mNewmark.
c2 * PreviousAngularAcceleration[0]
1482 if ((
Node.
pGetDof(ROTATION_Y))->IsFixed() ==
false)
1484 CurrentAngularVelocity[1] = PreviousAngularVelocity[1] + (
mNewmark.
c2 * PreviousAngularAcceleration[1]
1488 if ((
Node.
pGetDof(ROTATION_Z))->IsFixed() ==
false)
1490 CurrentAngularVelocity[2] = PreviousAngularVelocity[2] + (
mNewmark.
c2 * PreviousAngularAcceleration[2]
1506 if(
Node.
Is(SLAVE))
return;
1509 if ((
Node.
pGetDof(ROTATION_X))->IsFixed() ==
false)
1514 if ((
Node.
pGetDof(ROTATION_Y))->IsFixed() ==
false)
1520 if ((
Node.
pGetDof(ROTATION_Z))->IsFixed() ==
false)
1567 if(
Node.
Is(SLAVE))
return;
1570 if ((
Node.
pGetDof(DISPLACEMENT_X))->IsFixed() ==
false)
1572 CurrentVelocity[0] = PreviousVelocity[0] +
mNewmark.
c2 * PreviousAcceleration[0]
1576 if ((
Node.
pGetDof(DISPLACEMENT_Y))->IsFixed() ==
false)
1578 CurrentVelocity[1] = PreviousVelocity[1] +
mNewmark.
c2 * PreviousAcceleration[1]
1582 if ((
Node.
pGetDof(DISPLACEMENT_Z))->IsFixed() ==
false)
1584 CurrentVelocity[2] = PreviousVelocity[2] +
mNewmark.
c2 * PreviousAcceleration[2]
1620 if(
Node.
Is(SLAVE))
return;
1623 if ((
Node.
pGetDof(DISPLACEMENT_X))->IsFixed() ==
false)
1628 if ((
Node.
pGetDof(DISPLACEMENT_Y))->IsFixed() ==
false)
1633 if ((
Node.
pGetDof(DISPLACEMENT_Z))->IsFixed() ==
false)
1672 if(
Node.
Is(SLAVE))
return;
1675 if ((
Node.
pGetDof(ROTATION_X))->IsFixed() ==
false)
1681 if ((
Node.
pGetDof(ROTATION_Y))->IsFixed() ==
false)
1687 if ((
Node.
pGetDof(ROTATION_Z))->IsFixed() ==
false)
1723 if(
Node.
Is(SLAVE))
return;
1726 if ((
Node.
pGetDof(ROTATION_X))->IsFixed() ==
false)
1731 if ((
Node.
pGetDof(ROTATION_Y))->IsFixed() ==
false)
1736 if ((
Node.
pGetDof(ROTATION_Z))->IsFixed() ==
false)
1825 Element::Pointer rCurrentElement,
1836 rCurrentElement->GetSecondDerivativesVector(
mVector.a[thread], 0);
1840 rCurrentElement->GetSecondDerivativesVector(
mVector.ap[thread], 1);
1852 rCurrentElement->GetFirstDerivativesVector(
mVector.v[thread], 0);
1869 Condition::Pointer rCurrentCondition,
1880 rCurrentCondition->GetSecondDerivativesVector(
mVector.a[thread], 0);
1884 rCurrentCondition->GetSecondDerivativesVector(
mVector.ap[thread], 1);
1895 rCurrentCondition->GetFirstDerivativesVector(
mVector.v[thread], 0);
Definition: beam_math_utilities.hpp:31
static void VectorToSkewSymmetricTensor(const TVector3 &rVector, TMatrix3 &rSkewSymmetricTensor)
Definition: beam_math_utilities.hpp:231
Base class for all Elements.
Definition: element.h:60
std::vector< DofType::Pointer > DofsVectorType
Definition: element.h:100
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
bool Is(Flags const &rOther) const
Definition: flags.h:274
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
MeshType::ConditionsContainerType ConditionsContainerType
Condintions container. A vector set of Conditions with their Id's as key.
Definition: model_part.h:183
MeshType::ElementsContainerType ElementsContainerType
Element container. A vector set of Elements with their Id's as key.
Definition: model_part.h:168
IndexType GetBufferSize() const
This method gets the suffer size of the model part database.
Definition: model_part.h:1876
NodeIterator NodesBegin(IndexType ThisIndex=0)
Definition: model_part.h:487
ConditionsContainerType & Conditions(IndexType ThisIndex=0)
Definition: model_part.h:1381
ProcessInfo & GetProcessInfo()
Definition: model_part.h:1746
MeshType::NodeIterator NodeIterator
Definition: model_part.h:134
ElementsContainerType & Elements(IndexType ThisIndex=0)
Definition: model_part.h:1189
NodeIterator NodesEnd(IndexType ThisIndex=0)
Definition: model_part.h:497
This class defines the node.
Definition: node.h:65
TVariableType::Type & FastGetSolutionStepValue(const TVariableType &rThisVariable)
Definition: node.h:435
DofType::Pointer pGetDof(TVariableType const &rDofVariable) const
Get DoF counted pointer for a given variable.
Definition: node.h:711
const PointType & GetInitialPosition() const
Definition: node.h:559
static void DivideInPartitions(const int NumTerms, const int NumThreads, PartitionVector &Partitions)
Divide an array of length NumTerms between NumThreads threads.
Definition: openmp_utils.h:158
static int ThisThread()
Wrapper for omp_get_thread_num().
Definition: openmp_utils.h:108
std::vector< int > PartitionVector
Vector type for the output of DivideInPartitions method.
Definition: openmp_utils.h:53
A sorted associative container similar to an STL set, but uses a vector to store pointers to its data...
Definition: pointer_vector_set.h:72
boost::indirect_iterator< typename TContainerType::iterator > iterator
Definition: pointer_vector_set.h:95
iterator begin()
Returns an iterator pointing to the beginning of the container.
Definition: pointer_vector_set.h:278
iterator end()
Returns an iterator pointing to the end of the container.
Definition: pointer_vector_set.h:314
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
void ToRotationMatrix(TMatrix3x3 &R) const
Definition: quaternion.h:213
void ToRotationVector(T &rx, T &ry, T &rz) const
Definition: quaternion.h:262
static Quaternion FromRotationVector(double rx, double ry, double rz)
Definition: quaternion.h:427
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:51
void PredictAngularVelocity(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentAngularVelocity, const array_1d< double, 3 > &StepRotation, const array_1d< double, 3 > &CurrentAngularAcceleration, const array_1d< double, 3 > &PreviousAngularAcceleration, const array_1d< double, 3 > &PreviousAngularVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1441
GeneralVectors mVector
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1175
Scheme< TSparseSpace, TDenseSpace > BaseType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:108
void CalculateSystemContributions(Element::Pointer rCurrentElement, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:884
void InitializeElements(ModelPart &rModelPart)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:655
void Condition_CalculateSystemContributions(Condition::Pointer rCurrentCondition, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:972
void InitializeNonLinearIteration(Element::Pointer rCurrentElement, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:865
Quaternion< double > QuaternionType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:130
void AddDynamicsToRHS(LocalSystemVectorType &RHS_Contribution, LocalSystemVectorType &fd, LocalSystemVectorType &fm, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1794
ModelPart::ConditionsContainerType ConditionsArrayType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:126
void GetElementalDofList(Element::Pointer rCurrentElement, Element::DofsVectorType &ElementalDofList, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1066
void SlaveNodesUpdate(ModelPart &r_model_part)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:403
void Condition_Calculate_RHS_Contribution(Condition::Pointer rCurrentCondition, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1020
BaseType::DofsArrayType DofsArrayType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:112
void UpdateAcceleration(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentAcceleration, const array_1d< double, 3 > &DeltaDisplacement, const array_1d< double, 3 > &StepDisplacement, const array_1d< double, 3 > &PreviousAcceleration, const array_1d< double, 3 > &PreviousVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1612
BeamMathUtils< double > BeamMathUtilsType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:128
Element::DofsVectorType DofsVectorType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:114
void Predict(ModelPart &r_model_part, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Performing the prediction of the solution.
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:534
virtual ~ResidualBasedBossakDisplacementRotationScheme()
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:174
void InitializeConditions(ModelPart &rModelPart)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:687
BaseType::TSystemMatrixType TSystemMatrixType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:116
void PredictAcceleration(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentAcceleration, const array_1d< double, 3 > &StepDisplacement, const array_1d< double, 3 > &PreviousAcceleration, const array_1d< double, 3 > &PreviousVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1313
BaseType::TDataType TDataType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:110
void AddDynamicsToLHS(LocalSystemMatrixType &LHS_Contribution, LocalSystemMatrixType &D, LocalSystemMatrixType &M, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1766
void PredictVelocity(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentVelocity, const array_1d< double, 3 > &StepDisplacement, const array_1d< double, 3 > &CurrentAcceleration, const array_1d< double, 3 > &PreviousAcceleration, const array_1d< double, 3 > &PreviousVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1258
void PredictStepDisplacement(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentStepDisplacement, const array_1d< double, 3 > &PreviousVelocity, const array_1d< double, 3 > &PreviousAcceleration, const array_1d< double, 3 > &CurrentAcceleration, const array_1d< double, 3 > &CurrentAngularVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1186
void InitializeNonLinIteration(ModelPart &r_model_part, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
unction to be called when it is needed to initialize an iteration. It is designed to be called at the...
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:830
ModelPart::ElementsContainerType ElementsArrayType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:124
void InitializeNonLinearIteration(Condition::Pointer rCurrentCondition, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:855
void GetConditionDofList(Condition::Pointer rCurrentCondition, Element::DofsVectorType &ConditionDofList, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1080
ResidualBasedBossakDisplacementRotationScheme(double rDynamic=1, double mAlphaM=0.0)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:139
BaseType::LocalSystemMatrixType LocalSystemMatrixType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:122
virtual int Check(ModelPart &r_model_part)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1098
void PredictAngularAcceleration(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentAngularAcceleration, const array_1d< double, 3 > &StepRotation, const array_1d< double, 3 > &PreviousAngularAcceleration, const array_1d< double, 3 > &PreviousAngularVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1500
GeneralMatrices mMatrix
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1174
void FinalizeSolutionStep(ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:779
void PredictStepRotation(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentStepRotation, const array_1d< double, 3 > &PreviousVelocity, const array_1d< double, 3 > &PreviousAcceleration, const array_1d< double, 3 > &CurrentAcceleration)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1368
void UpdateAngularAcceleration(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentAngularAcceleration, const array_1d< double, 3 > &DeltaRotation, const array_1d< double, 3 > &StepRotation, const array_1d< double, 3 > &PreviousAngularAcceleration, const array_1d< double, 3 > &PreviousAngularVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1716
void InitializeSolutionStep(ModelPart &r_model_part, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:724
void Update(ModelPart &r_model_part, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:197
void AddDynamicsToRHS(Element::Pointer rCurrentElement, LocalSystemVectorType &RHS_Contribution, LocalSystemMatrixType &D, LocalSystemMatrixType &M, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1824
KRATOS_CLASS_POINTER_DEFINITION(ResidualBasedBossakDisplacementRotationScheme)
NewmarkMethod mNewmark
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1172
GeneralAlphaMethod mAlpha
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1171
BaseType::LocalSystemVectorType LocalSystemVectorType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:120
void UpdateAngularVelocity(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentAngularVelocity, const array_1d< double, 3 > &DeltaRotation, const array_1d< double, 3 > &CurrentAngularAcceleration, const array_1d< double, 3 > &PreviousAngularAcceleration, const array_1d< double, 3 > &PreviousAngularVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1664
void PredictRotation(array_1d< double, 3 > &CurrentRotation, const array_1d< double, 3 > &StepRotation)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1404
void UpdateVelocity(ModelPart::NodeType &Node, array_1d< double, 3 > &CurrentVelocity, const array_1d< double, 3 > &DeltaDisplacement, const array_1d< double, 3 > &CurrentAcceleration, const array_1d< double, 3 > &PreviousAcceleration, const array_1d< double, 3 > &PreviousVelocity)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1559
void AddDynamicsToRHS(Condition::Pointer rCurrentCondition, LocalSystemVectorType &RHS_Contribution, LocalSystemMatrixType &D, LocalSystemMatrixType &M, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1868
void Calculate_RHS_Contribution(Element::Pointer rCurrentElement, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &EquationId, ProcessInfo &CurrentProcessInfo)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:927
void PredictDisplacement(array_1d< double, 3 > &CurrentDisplacement, const array_1d< double, 3 > &StepDisplacement)
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:1247
BaseType::TSystemVectorType TSystemVectorType
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:118
This class provides the implementation of the basic tasks that are needed by the solution strategy.
Definition: scheme.h:56
typename TSparseSpace::MatrixType TSystemMatrixType
Matrix type definition.
Definition: scheme.h:71
bool mConditionsAreInitialized
Flag taking in account if the elements were initialized correctly or not.
Definition: scheme.h:757
ModelPart::ElementsContainerType ElementsArrayType
Elements containers definition.
Definition: scheme.h:89
virtual void EquationId(const Element &rElement, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo)
This method gets the eqaution id corresponding to the current element.
Definition: scheme.h:636
typename TSparseSpace::VectorType TSystemVectorType
Vector type definition.
Definition: scheme.h:74
typename TDenseSpace::VectorType LocalSystemVectorType
Local system vector type definition.
Definition: scheme.h:80
virtual void InitializeSolutionStep(ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b)
Function called once at the beginning of each solution step.
Definition: scheme.h:272
typename TSparseSpace::DataType TDataType
Data type definition.
Definition: scheme.h:68
typename TDenseSpace::MatrixType LocalSystemMatrixType
Local system matrix type definition.
Definition: scheme.h:77
virtual int Check(const ModelPart &rModelPart) const
This function is designed to be called once to perform all the checks needed on the input provided....
Definition: scheme.h:508
bool mElementsAreInitialized
Flag to be used in controlling if the Scheme has been initialized or not.
Definition: scheme.h:756
ModelPart::ConditionsContainerType ConditionsArrayType
Conditions containers definition.
Definition: scheme.h:92
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_THROW_ERROR(ExceptionType, ErrorMessage, MoreInfo)
Definition: define.h:77
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
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
AMatrix::MatrixProductExpression< TExpression1Type, TExpression2Type > prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:568
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
b
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:31
int k
Definition: quadrature.py:595
int j
Definition: quadrature.py:648
A
Definition: sensitivityMatrix.py:70
integer i
Definition: TensorModule.f:17
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:56
double m
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:58
double f
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:57
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:86
std::vector< Matrix > D
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:88
std::vector< Matrix > M
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:87
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:93
std::vector< Vector > fd
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:95
std::vector< Vector > fm
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:94
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:63
double c5
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:75
double deltatime
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:67
double c1
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:71
double beta
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:65
double c0
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:70
double static_dynamic
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:80
double c3
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:73
double gamma
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:66
double c2
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:72
double c6
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:76
double c4
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:74
double c7
Definition: residual_based_bossak_displacement_rotation_scheme.hpp:77