KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
Todo List
Member AuxiliaryHashCombine::HashCombine (std::size_t &rSeed, const TClassType &rValue)
Once the hashers and comparors are moved from key_hash.h, include key_hash and remove this. Right now there is a cross inclussion
Class Kratos::AdditiveSchwarzPreconditioner< TSparseSpaceType, TDenseSpaceType >
Use dense solver for computation of inverse/ pseudo inverse. Check values for relaxation parameter. Only apply additive schwarz preconditioner for trimmed elements (badly conditioned elements). Apply Jacobi preconditioning for non-trimmed elements. Migrate preconditioner into Kratos Core.
Member Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateI2Invariant (const BoundedVectorType &rStressVector, double &rI2)
Adapt for 2D dimension
Member Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateI3Invariant (const BoundedVectorType &rStressVector, double &rI3)
Adapt for 2D dimension
Member Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculatePrincipalStresses (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
Adapt for 2D dimension
Member Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculatePrincipalStressesWithCardano (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
Adapt for 2D dimension
Member Kratos::AdvancedConstitutiveLawUtilities< TVoigtSize >::CalculateThirdVector (const BoundedVectorType &rDeviator, const double J2, BoundedVectorType &rThirdVector)
Adapt for 2D dimension
Member Kratos::AdvancedContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::AdvancedContactSearchProcess (ModelPart &rMainModelPart, Parameters ThisParameters=Parameters(R"({})"), Properties::Pointer pPairedProperties=nullptr)
Add more types of bounding boxes, as kdops, look bounding_volume_tree.h
Class Kratos::AugmentedLagrangianMethodFrictionalMortarContactAxisymCondition< TNumNodes, TNormalVariation >
Complete this
Class Kratos::AugmentedLagrangianMethodFrictionlessMortarContactAxisymCondition< TNumNodes, TNormalVariation >
Complete this
Member Kratos::AutomaticDifferentiationTangentUtilities< TYieldSurfaceType, TSofteningType >::CalculateTangentTensorIsotropicDamage (ConstitutiveLaw::Parameters rValues)
Adapt for 2D dimension
Class Kratos::AuxiliarModelPartUtilities
Typo, Auxiliar is not English, it is Auxiliary, please replace it.
Member Kratos::BaseContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::BaseContactSearchProcess (ModelPart &rMainModelPart, Parameters ThisParameters=Parameters(R"({})"), Properties::Pointer pPairedProperties=nullptr)
Add more types of bounding boxes, as kdops, look bounding_volume_tree.h
Member Kratos::ConstitutiveLawUtilities< TVoigtSize >::CalculateI2Invariant (const BoundedVectorType &rStressVector, double &rI2)
Adapt for 2D dimension
Member Kratos::ConstitutiveLawUtilities< TVoigtSize >::CalculateI3Invariant (const BoundedVectorType &rStressVector, double &rI3)
Adapt for 2D dimension
Member Kratos::ConstitutiveLawUtilities< TVoigtSize >::CalculatePrincipalStresses (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
Adapt for 2D dimension
Member Kratos::ConstitutiveLawUtilities< TVoigtSize >::CalculatePrincipalStressesWithCardano (array_1d< double, Dimension > &rPrincipalStressVector, const BoundedVectorType &rStressVector)
Adapt for 2D dimension
Member Kratos::ConstitutiveLawUtilities< TVoigtSize >::CalculateThirdVector (const BoundedVectorType &rDeviator, const double J2, BoundedVectorType &rThirdVector)
Adapt for 2D dimension
Member Kratos::ConstraintUtilities::PreComputeExplicitConstraintMassAndInertia (ModelPart &rModelPart, const std::string &DofDisplacementVariableName="DISPLACEMENT", const std::string &MassVariableName="NODAL_MASS", const std::string &DofRotationVariableName="ROTATION", const std::string &InertiaVariableName="NODAL_INERTIA_TENSOR")
The inertia must be computed using the Steiner theorem https://en.wikipedia.org/wiki/Parallel_axis_theorem
Member Kratos::DataValueContainer::GetValue (const Variable< TDataType > &rThisVariable) const
Make the variable of the constant version consistent with the one of the "classical" one
Class Kratos::DynamicVMS< TDim >
Rewrite this documentation This class implements a stabilized formulation based on the Variational Multiscale framework. The the subscales can be modeled using either Algebraic Subgird Scales (ASGS) or Orthogonal Subscales (OSS). In the case of OSS, the projection terms are treated explicitly (computed using the results of the previous iteration) and the subscales are not tracked in time. The choice of subscale model is made based on the ProcessInfo variable OSS_SWITCH (OSS if 1, ASGS otherwise). This class implements both the 2D and 3D versions of the element.
Member Kratos::DynamicVMS< TDim >::CalculateGeometryData ()
Use heights
Member Kratos::DynamicVMS< TDim >::CalculateOnIntegrationPoints (const Variable< double > &rVariable, std::vector< double > &rValues, const ProcessInfo &rCurrentProcessInfo) override
Use suitable variable as iteration counter
Member Kratos::ExplicitCentralDifferencesScheme< TSparseSpace, TDenseSpace >::InitializeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) override
I cannot find the formula for the higher orders with variable time step. I tried to deduce by myself but the result was very unstable
Member Kratos::ExplicitMultiStageKimScheme< TSparseSpace, TDenseSpace >::InitializeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) override
I cannot find the formula for the higher orders with variable time step. I tried to deduce by myself but the result was very unstable
Member Kratos::Expression::Evaluate (const IndexType EntityIndex, const IndexType EntityDataBeginIndex, const IndexType ComponentIndex) const =0
Move to private.
Member Kratos::FastTransferBetweenModelPartsProcess::EntityTransfered
Add intermediate combinations of constraints, conditions and elements
Member Kratos::FindIntersectedGeometricalObjectsProcess::Initialize ()
This should be moved to ExecuteInitialize (base class of Process)
Class Kratos::FindIntersectedGeometricalObjectsWithOBBProcess
Add possibility to use conditions with elements and vice versa (add second template argument)
Member Kratos::Geometry< TPointType >::IsSymmetric () const
Making some method related to symmetry axis and more...
Member Kratos::GidIO< TGaussPointContainer, TMeshContainer >::ChangeOutputName (const std::string &rDatafilename)
To be removed
Class Kratos::IntegrationValuesExtrapolationToNodesProcess
Add extrapolation from conditions on the future
Class Kratos::InterfacePreprocessCondition
Add parallelization
Member Kratos::Line2D3< TPointType >::Jacobian (Matrix &rResult, const CoordinatesArrayType &rPoint) const override
We must check if this override methods are faster than the base class methods
Member Kratos::Line2D3< TPointType >::Jacobian (JacobiansType &rResult, IntegrationMethod ThisMethod) const override
We must check if this override methods are faster than the base class methods
Member Kratos::Line2D3< TPointType >::Jacobian (JacobiansType &rResult, IntegrationMethod ThisMethod, Matrix &rDeltaPosition) const override
We must check if this override methods are faster than the base class methods
Member Kratos::Line2D3< TPointType >::Jacobian (Matrix &rResult, IndexType IntegrationPointIndex, IntegrationMethod ThisMethod) const override
We must check if this override methods are faster than the base class methods
Class Kratos::MetricFastInit< TDim >
Replace with VariableUtils() when updated for nonhistorical
Member Kratos::MmgProcess< TMMGLibrary >::SetToZeroEntityData (TContainerType &rNewContainer, const TContainerType &rOldContainer)
Interpolate values in the future
Member Kratos::ModelPart::CreateNewMasterSlaveConstraint (const std::string &ConstraintName, IndexType Id, DofsVectorType &rMasterDofsVector, DofsVectorType &rSlaveDofsVector, const MatrixType &RelationMatrix, const VectorType &ConstantVector, IndexType ThisIndex=0)
Replace these 3 functions by one that perfectly forwards arguments, then just define these 3 interfaces on the pybind side
Member Kratos::MPCContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::MPCContactSearchProcess (ModelPart &rMainModelPart, Parameters ThisParameters=Parameters(R"({})"), Properties::Pointer pPairedProperties=nullptr)
Add more types of bounding boxes, as kdops, look bounding_volume_tree.h
Member Kratos::NurbsVolumeGeometry< TContainerPointType >::Jacobian (Matrix &rResult, const CoordinatesArrayType &rCoordinates) const override
Refactor such that addional 'ComputeBSplineShapeFunctionValues'-call can be omitted. Here it is only called to find the correct knotspans and to set the shape_function_member variables 'mFirstNonzeroControlPointU,-V,-W'.
Class Kratos::PenaltyMethodFrictionalMortarContactAxisymCondition< TNumNodes, TNormalVariation, TNumNodesMaster >
Complete this
Class Kratos::PenaltyMethodFrictionlessMortarContactAxisymCondition< TNumNodes, TNormalVariation >
Complete this
Member Kratos::PoroExplicitCDScheme< TSparseSpace, TDenseSpace >::InitializeNonLinIteration (ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) override
I cannot find the formula for the higher orders with variable time step. I tried to deduce by myself but the result was very unstable
Member Kratos::PoroExplicitCDScheme< TSparseSpace, TDenseSpace >::InitializeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) override
I cannot find the formula for the higher orders with variable time step. I tried to deduce by myself but the result was very unstable
Member Kratos::Quadrilateral2D4< TPointType >::Area () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral2D4< TPointType >::DomainSize () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral2D8< TPointType >::Area () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral2D8< TPointType >::DomainSize () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral2D9< TPointType >::Area () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral2D9< TPointType >::DomainSize () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral3D8< TPointType >::Area () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral3D8< TPointType >::DomainSize () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral3D9< TPointType >::Area () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::Quadrilateral3D9< TPointType >::DomainSize () const override
could be replaced by something more suitable (comment by janosch)
Member Kratos::ResidualBasedBDFCustomScheme< TSparseSpace, TDenseSpace >::ResidualBasedBDFCustomScheme (const std::size_t Order=2, Parameters ThisParameters=Parameters(R"({})"))
The ideal would be to use directly the dof or the variable itself to identify the type of variable and is derivatives
Member Kratos::ResidualBasedBDFCustomScheme< TSparseSpace, TDenseSpace >::ResidualBasedBDFCustomScheme (Parameters ThisParameters)
The ideal would be to use directly the dof or the variable itself to identify the type of variable and is derivatives
Member Kratos::ResidualBasedBDFDisplacementScheme< TSparseSpace, TDenseSpace >::ResidualBasedBDFDisplacementScheme (const std::size_t Order=2)
The ideal would be to use directly the dof or the variable itself to identify the type of variable and is derivatives
Class Kratos::ResidualBasedBDFScheme< TSparseSpace, TDenseSpace >
Create a BibTeX file https://www.stack.nl/~dimitri/doxygen/manual/commands.html#cmdcite
Member Kratos::ResidualBasedBDFScheme< TSparseSpace, TDenseSpace >::InitializeSolutionStep (ModelPart &rModelPart, TSystemMatrixType &rA, TSystemVectorType &rDx, TSystemVectorType &rb) override
I cannot find the formula for the higher orders with variable time step. I tried to deduce by myself but the result was very unstable
Member Kratos::ResidualBasedBDFScheme< TSparseSpace, TDenseSpace >::ResidualBasedBDFScheme (const std::size_t Order=2)
The ideal would be to use directly the dof or the variable itself to identify the type of variable and is derivatives
Member Kratos::ResidualBasedBossakDisplacementScheme< TSparseSpace, TDenseSpace >::mpDofUpdater
Move to ImplicitBaseType
Class Kratos::ResidualBasedEliminationBuilderAndSolverWithConstraints< TSparseSpace, TDenseSpace, TLinearSolver >
There is a more efficient way to asemble the system, but more costly, which is the following. In this case T will be only a relation matrix between master and slave dofs. Then n_slave x n_master: us = T um + g Separating into independent dofs, master ans slave dofs: u = uu um us A = Auu Aum Aus Amu Amm Ams Asu Asm Ass b = bu bm bs Finally: A_red = Auu Aum + Aus T Amu + T^t Asu Amm + T^t Ams^t + Ams T + T^t Ass T b_red = bu - Aus g bm - Ams g
Member Kratos::ResidualBasedEliminationBuilderAndSolverWithConstraints< TSparseSpace, TDenseSpace, TLinearSolver >::ConstructMatrixStructureWithConstraints (typename TSchemeType::Pointer pScheme, TSystemMatrixType &rA, ModelPart &rModelPart)
Move this method to a common class with block builder and solver with constraints
Member Kratos::ResidualBasedLinearStrategy< TSparseSpace, TDenseSpace, TLinearSolver >::InitializeSolutionStep () override
Boost dependencies should be replaced by std equivalent
Member Kratos::SimpleContactSearchProcess< TDim, TNumNodes, TNumNodesMaster >::SimpleContactSearchProcess (ModelPart &rMainModelPart, Parameters ThisParameters=Parameters(R"({})"), Properties::Pointer pPairedProperties=nullptr)
Add more types of bounding boxes, as kdops, look bounding_volume_tree.h
Class Kratos::SparseMatrixMultiplicationUtility
Remove as soon as we do not depend of Ublas anymore...
Member Kratos::SVDUtils< TDataType >::JacobiSingularValueDecomposition (const MatrixType &InputMatrix, MatrixType &UMatrix, MatrixType &SMatrix, MatrixType &VMatrix, const TDataType Tolerance=std::numeric_limits< double >::epsilon(), const IndexType MaxIter=200)
This version is quite innefficient, look for a real and mathematical implementation (not the algorithm found in Wikipedia!!)
Member Kratos::SVDUtils< TDataType >::SingularValueDecomposition (const MatrixType &InputMatrix, MatrixType &UMatrix, MatrixType &SMatrix, MatrixType &VMatrix, const std::string &TypeSVD="Jacobi", const TDataType Tolerance=std::numeric_limits< double >::epsilon(), const IndexType MaxIter=200)
This version is quite innefficient, look for a real and mathematical implementation (not the algorithm found in Wikipedia!!)
Member Kratos::SVDUtils< TDataType >::SingularValueDecomposition (const MatrixType &InputMatrix, MatrixType &UMatrix, MatrixType &SMatrix, MatrixType &VMatrix, Parameters ThisParameters)
This version is quite innefficient, look for a real and mathematical implementation (not the algorithm found in Wikipedia!!)
Member Kratos::Triangle3D6< TPointType >::Length () const override
Could be replaced by something more suitable
Member Kratos::TrilinosSpace< TMatrixType, TVectorType >::GetColumn (const unsigned int j, const MatrixType &rM, VectorType &rX)
Implement this method