13 #if !defined(KRATOS_BDF2_TURBULENT_SCHEME_H_INCLUDED )
14 #define KRATOS_BDF2_TURBULENT_SCHEME_H_INCLUDED
62 template<
class TSparseSpace,
class TDenseSpace>
91 :
Scheme<TSparseSpace, TDenseSpace>()
103 :
Scheme<TSparseSpace, TDenseSpace>()
104 , mpTurbulenceModel(pTurbulenceModel)
113 :
Scheme<TSparseSpace, TDenseSpace>()
114 , mrPeriodicIdVar(rPeriodicVar)
142 if (error_code != 0) {
148 <<
"Insufficient buffer size for BDF2, should be at least 3, got " << rModelPart.
GetBufferSize() << std::endl;
159 const unsigned int domain_size = r_proces_info[DOMAIN_SIZE];
161 mpRotationTool.swap(p_aux);
180 const double tol = 1.0e-12;
183 if(std::abs(
Dt - OldDt) >
tol) {
187 #pragma omp parallel for
188 for(
int i_node = 0; i_node <
n_nodes; ++i_node) {
189 auto it_node = rModelPart.
NodesBegin() + i_node;
190 auto& rMeshVel = it_node->FastGetSolutionStepValue(MESH_VELOCITY);
191 const auto& rDisp0 = it_node->FastGetSolutionStepValue(DISPLACEMENT);
192 const auto& rDisp1 = it_node->FastGetSolutionStepValue(DISPLACEMENT,1);
193 const auto& rDisp2 = it_node->FastGetSolutionStepValue(DISPLACEMENT,2);
194 rMeshVel = BDFcoefs[0] * rDisp0 + BDFcoefs[1] * rDisp1 + BDFcoefs[2] * rDisp2;
207 if (mpTurbulenceModel != 0) mpTurbulenceModel->Execute();
221 if (CurrentProcessInfo[OSS_SWITCH] == 1.0)
242 #pragma omp parallel for
243 for(
int i_node = 0; i_node <
n_nodes; ++i_node) {
244 auto it_node = rModelPart.
NodesBegin() + i_node;
245 auto& rVel0 = it_node->FastGetSolutionStepValue(VELOCITY);
246 const auto& rVel1 = it_node->FastGetSolutionStepValue(VELOCITY,1);
247 const auto& rVel2 = it_node->FastGetSolutionStepValue(VELOCITY,2);
248 auto& rAcceleration = it_node->FastGetSolutionStepValue(ACCELERATION);
251 if(!it_node->IsFixed(VELOCITY_X))
252 rVel0[0] = 2.00 * rVel1[0] - rVel2[0];
253 if(!it_node->IsFixed(VELOCITY_Y))
254 rVel0[1] = 2.00 * rVel1[1] - rVel2[1];
255 if(!it_node->IsFixed(VELOCITY_Z))
256 rVel0[2] = 2.00 * rVel1[2] - rVel2[2];
259 rAcceleration = BDFcoefs[0] * rVel0 + BDFcoefs[1] * rVel1 + BDFcoefs[2] * rVel2;
282 mpRotationTool->RotateVelocities(rModelPart);
284 mpDofUpdater->UpdateDofs(rDofSet,Dx);
286 mpRotationTool->RecoverVelocities(rModelPart);
316 this->AddDynamicRHSContribution<Kratos::Element>(rCurrentElement,RHS_Contribution,Mass,rCurrentProcessInfo);
319 mpRotationTool->Rotate(LHS_Contribution, RHS_Contribution, rCurrentElement.
GetGeometry());
320 mpRotationTool->ApplySlipCondition(LHS_Contribution, RHS_Contribution, rCurrentElement.
GetGeometry());
345 this->AddDynamicRHSContribution<Kratos::Element>(rCurrentElement,RHS_Contribution,Mass,rCurrentProcessInfo);
348 mpRotationTool->Rotate(RHS_Contribution, rCurrentElement.
GetGeometry());
349 mpRotationTool->ApplySlipCondition(RHS_Contribution, rCurrentElement.
GetGeometry());
376 this->AddDynamicRHSContribution<Kratos::Condition>(rCurrentCondition,RHS_Contribution,Mass,rCurrentProcessInfo);
379 mpRotationTool->Rotate(LHS_Contribution, RHS_Contribution, rCurrentCondition.
GetGeometry());
380 mpRotationTool->ApplySlipCondition(LHS_Contribution, RHS_Contribution, rCurrentCondition.
GetGeometry());
405 this->AddDynamicRHSContribution<Kratos::Condition>(rCurrentCondition,RHS_Contribution,Mass,rCurrentProcessInfo);
408 mpRotationTool->Rotate(RHS_Contribution, rCurrentCondition.
GetGeometry());
409 mpRotationTool->ApplySlipCondition(RHS_Contribution, rCurrentCondition.
GetGeometry());
417 this->mpDofUpdater->Clear();
435 std::string
Info()
const override
437 std::stringstream buffer;
438 buffer <<
"BDF2TurbulentScheme";
486 double Dt = rCurrentProcessInfo[DELTA_TIME];
489 double Rho = OldDt /
Dt;
490 double TimeCoeff = 1.0 / (
Dt * Rho * Rho +
Dt * Rho);
492 Vector& BDFcoeffs = rCurrentProcessInfo[BDF_COEFFICIENTS];
493 BDFcoeffs.
resize(3,
false);
495 BDFcoeffs[0] = TimeCoeff * (Rho * Rho + 2.0 * Rho);
496 BDFcoeffs[1] = -TimeCoeff * (Rho * Rho + 2.0 * Rho + 1.0);
497 BDFcoeffs[2] = TimeCoeff;
513 const int n_dof = rDofSet.
size();
515 #pragma omp parallel for
516 for (
int i_dof = 0; i_dof < n_dof; ++i_dof) {
517 auto it_dof = rDofSet.
begin() + i_dof;
518 if (it_dof->IsFree()) {
537 const double Coef0 = rBDFcoefs[0];
538 const double Coef1 = rBDFcoefs[1];
539 const double Coef2 = rBDFcoefs[2];
542 #pragma omp parallel for
543 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
544 auto it_node = rModelPart.
NodesBegin() + i_node;
545 const auto& rVel0 = it_node->FastGetSolutionStepValue(VELOCITY);
546 const auto& rVel1 = it_node->FastGetSolutionStepValue(VELOCITY,1);
547 const auto& rVel2 = it_node->FastGetSolutionStepValue(VELOCITY,2);
548 auto& rAcceleration = it_node->FastGetSolutionStepValue(ACCELERATION);
550 rAcceleration = Coef0 * rVel0 + Coef1 * rVel1 + Coef2 * rVel2;
562 const double Coef0 = rCurrentProcessInfo.
GetValue(BDF_COEFFICIENTS)[0];
563 if (rMass.size1() != 0)
noalias(rLHS) += Coef0 * rMass;
564 if (rDamp.size1() != 0)
noalias(rLHS) += rDamp;
567 template<
class TObject>
574 if (rMass.size1() != 0)
576 const Vector& rCoefs = rCurrentProcessInfo.
GetValue(BDF_COEFFICIENTS);
577 const auto& r_const_obj_ref = rObject;
579 r_const_obj_ref.GetFirstDerivativesVector(Acc);
582 for(
unsigned int n = 1;
n < 3; ++
n)
585 r_const_obj_ref.GetFirstDerivativesVector(rVel,
n);
601 #pragma omp parallel for firstprivate(zero_vect)
602 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
604 noalias(ind->FastGetSolutionStepValue(ADVPROJ)) = zero_vect;
605 ind->FastGetSolutionStepValue(DIVPROJ) = 0.0;
606 ind->FastGetSolutionStepValue(NODAL_AREA) = 0.0;
612 const unsigned int MaxIter = 100;
615 unsigned int iter = 0;
617 double dMassProj = 0.0;
619 double RelMomErr = 1000.0 * RelTol;
620 double RelMassErr = 1000.0 * RelTol;
621 double AbsMomErr = 1000.0 * AbsTol;
622 double AbsMassErr = 1000.0 * AbsTol;
624 while( ( (AbsMomErr > AbsTol && RelMomErr > RelTol) || (AbsMassErr > AbsTol && RelMassErr > RelTol) ) && iter < MaxIter)
627 #pragma omp parallel for firstprivate(zero_vect)
628 for (
int i_node = 0; i_node <
n_nodes; ++i_node)
631 noalias(ind->GetValue(ADVPROJ)) = zero_vect;
632 ind->GetValue(DIVPROJ) = 0.0;
633 ind->FastGetSolutionStepValue(NODAL_AREA) = 0.0;
644 #pragma omp parallel for private(output)
645 for (
int i_elem = 0; i_elem < n_elems; ++i_elem) {
647 it_elem->Calculate(SUBSCALE_VELOCITY,
output, rCurrentProcessInfo);
657 #pragma omp parallel for
658 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
660 const double Area = ind->FastGetSolutionStepValue(NODAL_AREA);
661 dMomProj = ind->GetValue(ADVPROJ) / Area;
662 dMassProj = ind->GetValue(DIVPROJ) / Area;
664 RelMomErr += sqrt( dMomProj[0]*dMomProj[0] + dMomProj[1]*dMomProj[1] + dMomProj[2]*dMomProj[2]);
665 RelMassErr += fabs(dMassProj);
667 auto& rMomRHS = ind->FastGetSolutionStepValue(ADVPROJ);
668 double& rMassRHS = ind->FastGetSolutionStepValue(DIVPROJ);
670 rMassRHS += dMassProj;
672 AbsMomErr += sqrt( rMomRHS[0]*rMomRHS[0] + rMomRHS[1]*rMomRHS[1] + rMomRHS[2]*rMomRHS[2]);
673 AbsMassErr += fabs(rMassRHS);
676 if(AbsMomErr > 1
e-10)
677 RelMomErr /= AbsMomErr;
681 if(AbsMassErr > 1
e-10)
682 RelMassErr /= AbsMassErr;
689 KRATOS_INFO(
"BDF2TurbulentScheme") <<
"Performed OSS Projection in " << iter <<
" iterations" << std::endl;
699 #pragma omp parallel for firstprivate(zero_vect)
700 for (
int i_node = 0; i_node <
n_nodes; ++i_node) {
701 auto itNode = rModelPart.
NodesBegin() + i_node;
702 noalias(itNode->FastGetSolutionStepValue(ADVPROJ)) = zero_vect;
703 itNode->FastGetSolutionStepValue(DIVPROJ) = 0.0;
704 itNode->FastGetSolutionStepValue(NODAL_AREA) = 0.0;
708 #pragma omp parallel for private(Out)
709 for (
int i_elem = 0; i_elem < n_elems; ++i_elem) {
711 itElem->Calculate(ADVPROJ, Out, rCurrentProcessInfo);
719 if (mrPeriodicIdVar.
Key() != 0) {
723 const double zero_tol = 1.0e-12;
724 #pragma omp parallel for firstprivate(zero_tol)
725 for (
int i_node = 0; i_node <
n_nodes; ++i_node){
726 auto iNode = rModelPart.
NodesBegin() + i_node;
727 if (iNode->FastGetSolutionStepValue(NODAL_AREA) < zero_tol) {
728 iNode->FastGetSolutionStepValue(NODAL_AREA) = 1.0;
730 const double Area = iNode->FastGetSolutionStepValue(NODAL_AREA);
731 iNode->FastGetSolutionStepValue(ADVPROJ) /= Area;
732 iNode->FastGetSolutionStepValue(DIVPROJ) /= Area;
735 KRATOS_INFO(
"BDF2TurbulentScheme") <<
"Computing OSS projections" << std::endl;
749 #pragma omp parallel for
750 for (
int i = 0;
i < num_nodes;
i++) {
753 it_node->SetValue(NODAL_AREA,0.0);
755 it_node->SetValue(DIVPROJ,0.0);
758 #pragma omp parallel for
759 for (
int i = 0;
i < num_conditions;
i++) {
762 if(it_cond->Is(PERIODIC)) {
771 #pragma omp parallel for
772 for (
int i = 0;
i < num_nodes;
i++) {
782 double nodal_area = 0.0;
784 double mass_projection = 0.0;
785 for (
unsigned int i = 0;
i < nodes_in_cond;
i++ )
787 auto& r_node = rGeometry[
i];
788 nodal_area += r_node.FastGetSolutionStepValue(NODAL_AREA);
789 noalias(momentum_projection) += r_node.FastGetSolutionStepValue(ADVPROJ);
790 mass_projection += r_node.FastGetSolutionStepValue(DIVPROJ);
793 for (
unsigned int i = 0;
i < nodes_in_cond;
i++ )
795 auto& r_node = rGeometry[
i];
803 r_node.
GetValue(NODAL_AREA) = nodal_area;
804 noalias(r_node.GetValue(ADVPROJ)) = momentum_projection;
805 r_node.GetValue(DIVPROJ) = mass_projection;
813 if (rNode.
GetValue(NODAL_AREA) != 0.0)
847 Process::Pointer mpTurbulenceModel =
nullptr;
851 typename TSparseSpace::DofUpdaterPointerType mpDofUpdater = TSparseSpace::CreateDofUpdater();
920 template<
class TSparseSpace,
class TDenseSpace>
927 template<
class TSparseSpace,
class TDenseSpace>
931 rOStream << std::endl;
A scheme for BDF2 time integration.
Definition: bdf2_turbulent_scheme.h:64
~BDF2TurbulentScheme() override
Destructor.
Definition: bdf2_turbulent_scheme.h:119
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: bdf2_turbulent_scheme.h:443
TDenseSpace::VectorType LocalSystemVectorType
Definition: bdf2_turbulent_scheme.h:77
RotationToolType::UniquePointer RotationToolPointerType
Definition: bdf2_turbulent_scheme.h:83
void SetTimeCoefficients(ProcessInfo &rCurrentProcessInfo)
Calculate the coefficients for time iteration.
Definition: bdf2_turbulent_scheme.h:481
void Initialize(ModelPart &rModelPart) override
This is the place to initialize the Scheme.
Definition: bdf2_turbulent_scheme.h:155
void FullProjection(ModelPart &rModelPart)
Definition: bdf2_turbulent_scheme.h:593
Scheme< TSparseSpace, TDenseSpace > BaseType
Definition: bdf2_turbulent_scheme.h:71
BDF2TurbulentScheme()
Default constructor.
Definition: bdf2_turbulent_scheme.h:90
BDF2TurbulentScheme(const Kratos::Variable< int > &rPeriodicVar)
Constructor for periodic boundary conditions.
Definition: bdf2_turbulent_scheme.h:112
TDenseSpace::MatrixType LocalSystemMatrixType
Definition: bdf2_turbulent_scheme.h:76
void AssemblePeriodicContributionToProjections(Geometry< Node > &rGeometry)
Definition: bdf2_turbulent_scheme.h:778
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: bdf2_turbulent_scheme.h:449
void CalculateRHSContribution(Element &rCurrentElement, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override
This function is designed to calculate just the RHS contribution.
Definition: bdf2_turbulent_scheme.h:325
void InitializeSolutionStep(ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override
Set the time iteration coefficients.
Definition: bdf2_turbulent_scheme.h:168
std::string Info() const override
Turn back information as a string.
Definition: bdf2_turbulent_scheme.h:435
void CalculateSystemContributions(Condition &rCurrentCondition, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override
Functions totally analogous to the precedent but applied to the "condition" objects.
Definition: bdf2_turbulent_scheme.h:354
void FinalizeNonLinIteration(ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override
Function to be called when it is needed to finalize an iteration. It is designed to be called at the ...
Definition: bdf2_turbulent_scheme.h:212
BaseType::DofsArrayType DofsArrayType
Definition: bdf2_turbulent_scheme.h:80
BDF2TurbulentScheme(Process::Pointer pTurbulenceModel)
Constructor to use the formulation combined with a turbulence model.
Definition: bdf2_turbulent_scheme.h:102
void UpdateAcceleration(ModelPart &rModelPart, const Vector &rBDFcoefs)
Update Dof values after a Newton-Raphson iteration.
Definition: bdf2_turbulent_scheme.h:531
void InitializeNonLinIteration(ModelPart &rModelPart, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override
unction to be called when it is needed to initialize an iteration. It is designed to be called at the...
Definition: bdf2_turbulent_scheme.h:199
void CombineLHSContributions(LocalSystemMatrixType &rLHS, LocalSystemMatrixType &rMass, LocalSystemMatrixType &rDamp, const ProcessInfo &rCurrentProcessInfo)
Definition: bdf2_turbulent_scheme.h:556
TSparseSpace::VectorType TSystemVectorType
Definition: bdf2_turbulent_scheme.h:74
TSparseSpace::MatrixType TSystemMatrixType
Definition: bdf2_turbulent_scheme.h:73
void LumpedProjection(ModelPart &rModelPart)
Definition: bdf2_turbulent_scheme.h:692
void CalculateSystemContributions(Element &rCurrentElement, LocalSystemMatrixType &LHS_Contribution, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override
This function is designed to be called in the builder and solver to introduce the selected time integ...
Definition: bdf2_turbulent_scheme.h:294
void AddDynamicRHSContribution(TObject &rObject, LocalSystemVectorType &rRHS, LocalSystemMatrixType &rMass, const ProcessInfo &rCurrentProcessInfo)
Definition: bdf2_turbulent_scheme.h:568
virtual void UpdateDofs(DofsArrayType &rDofSet, TSystemVectorType &Dx)
Update Dof values after a Newton-Raphson iteration.
Definition: bdf2_turbulent_scheme.h:507
Dof< TDataType > TDofType
Definition: bdf2_turbulent_scheme.h:79
void Update(ModelPart &rModelPart, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override
Store the iteration results as solution step variables and update acceleration after a Newton-Raphson...
Definition: bdf2_turbulent_scheme.h:273
int Check(ModelPart &rModelPart) override
Check input data for errors.
Definition: bdf2_turbulent_scheme.h:136
void CalculateRHSContribution(Condition &rCurrentCondition, LocalSystemVectorType &RHS_Contribution, Element::EquationIdVectorType &rEquationId, const ProcessInfo &rCurrentProcessInfo) override
Functions totally analogous to the precedent but applied to the "condition" objects.
Definition: bdf2_turbulent_scheme.h:385
void Clear() override
Free memory allocated by this object.
Definition: bdf2_turbulent_scheme.h:415
void Predict(ModelPart &rModelPart, DofsArrayType &rDofSet, TSystemMatrixType &A, TSystemVectorType &Dx, TSystemVectorType &b) override
Start the iteration by providing a first approximation to the solution.
Definition: bdf2_turbulent_scheme.h:230
void CorrectContributionsOnPeriodicNode(Node &rNode)
Definition: bdf2_turbulent_scheme.h:810
CoordinateTransformationUtils< LocalSystemMatrixType, LocalSystemVectorType, double > RotationToolType
Definition: bdf2_turbulent_scheme.h:82
TSparseSpace::DataType TDataType
Definition: bdf2_turbulent_scheme.h:72
void PeriodicConditionProjectionCorrection(ModelPart &rModelPart)
Definition: bdf2_turbulent_scheme.h:744
KRATOS_CLASS_POINTER_DEFINITION(BDF2TurbulentScheme)
Pointer definition of BDF2TurbulentScheme.
virtual bool AssembleNonHistoricalData(Variable< int > const &ThisVariable)
Definition: communicator.cpp:527
virtual bool AssembleCurrentData(Variable< int > const &ThisVariable)
Definition: communicator.cpp:502
Base class for all Conditions.
Definition: condition.h:59
virtual void CalculateLocalVelocityContribution(MatrixType &rDampingMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: condition.h:922
virtual void CalculateMassMatrix(MatrixType &rMassMatrix, const ProcessInfo &rCurrentProcessInfo)
Definition: condition.h:574
virtual void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const
Definition: condition.h:260
virtual void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: condition.h:440
virtual void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: condition.h:408
TDataType & GetValue(const Variable< TDataType > &rThisVariable)
Gets the value associated with a given variable.
Definition: data_value_container.h:268
Dof represents a degree of freedom (DoF).
Definition: dof.h:86
Base class for all Elements.
Definition: element.h:60
virtual void CalculateMassMatrix(MatrixType &rMassMatrix, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:570
virtual void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:437
virtual void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const
Definition: element.h:258
virtual void CalculateLocalVelocityContribution(MatrixType &rDampingMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:972
virtual void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo)
Definition: element.h:405
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
Geometry base class.
Definition: geometry.h:71
SizeType PointsNumber() const
Definition: geometry.h:528
TVariableType::Type & GetValue(const TVariableType &rThisVariable)
Definition: geometry.h:627
void resize(std::size_t NewSize1, std::size_t NewSize2, bool preserve=0)
Definition: amatrix_interface.h:224
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
ElementIterator ElementsBegin(IndexType ThisIndex=0)
Definition: model_part.h:1169
ConditionIterator ConditionsBegin(IndexType ThisIndex=0)
Definition: model_part.h:1361
Communicator & GetCommunicator()
Definition: model_part.h:1821
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
SizeType NumberOfElements(IndexType ThisIndex=0) const
Definition: model_part.h:1027
ProcessInfo & GetProcessInfo()
Definition: model_part.h:1746
SizeType NumberOfConditions(IndexType ThisIndex=0) const
Definition: model_part.h:1218
SizeType NumberOfNodes(IndexType ThisIndex=0) const
Definition: model_part.h:341
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
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
size_type size() const
Returns the number of elements in the container.
Definition: pointer_vector_set.h:502
iterator begin()
Returns an iterator pointing to the beginning of the container.
Definition: pointer_vector_set.h:278
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
ProcessInfo & GetPreviousSolutionStepInfo(IndexType StepsBefore=1)
Definition: process_info.h:258
ProcessInfo & GetPreviousTimeStepInfo(IndexType StepsBefore=1)
Definition: process_info.h:187
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
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
virtual void Initialize(ModelPart &rModelPart)
This is the place to initialize the Scheme.
Definition: scheme.h:168
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
KeyType Key() const
Definition: variable_data.h:187
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#define KRATOS_ERROR_IF(conditional)
Definition: exception.h:162
#define KRATOS_INFO(label)
Definition: logger.h:250
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
AMatrix::MatrixProductExpression< TExpression1Type, TExpression2Type > prod(AMatrix::MatrixExpression< TExpression1Type, TCategory1 > const &First, AMatrix::MatrixExpression< TExpression2Type, TCategory2 > const &Second)
Definition: amatrix_interface.h:568
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
REACTION_CHECK_STIFFNESS_FACTOR int
Definition: contact_structural_mechanics_application_variables.h:75
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
int domain_size
Definition: face_heat.py:4
Dt
Definition: face_heat.py:78
output
Definition: generate_frictional_mortar_condition.py:444
b
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:31
int n_nodes
Definition: generate_total_lagrangian_mixed_volumetric_strain_element.py:15
int tol
Definition: hinsberg_optimization.py:138
int n
manufactured solution and derivatives (u=0 at z=0 dudz=0 at z=domain_height)
Definition: ode_solve.py:402
A
Definition: sensitivityMatrix.py:70
integer i
Definition: TensorModule.f:17
e
Definition: run_cpp_mpi_tests.py:31