Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
2221c61
remove unused imports
matekelemen Dec 2, 2025
5bab33a
add process for pretension modeling
matekelemen Dec 2, 2025
3241285
add a python interface for pretensioning
matekelemen Dec 2, 2025
45a3b9a
add test stub for pretensioning
matekelemen Dec 2, 2025
4238699
Merge branch 'master' of https://github.com/kratosmultiphysics/kratos…
matekelemen Dec 10, 2025
2f91a62
make the pretension insertion process an operation
matekelemen Dec 10, 2025
8f75dfb
keep passed linear solver
matekelemen Dec 10, 2025
b392b59
Merge branch 'master' of https://github.com/kratosmultiphysics/kratos…
matekelemen Jan 9, 2026
e076220
fix ignored linear solver settings
matekelemen Apr 10, 2026
dc2a07a
resolve merge conflicts
matekelemen Apr 21, 2026
261ad56
Merge branch 'pmg/solver-settings' into structural/pretension
matekelemen Apr 22, 2026
680b969
fix linear mfcs
matekelemen Apr 22, 2026
30c4d6f
add generic pre-tensioning system
matekelemen Apr 23, 2026
c0b42d7
add missing STL includes
matekelemen Apr 23, 2026
27166b2
add condition for a single DoF
matekelemen Apr 29, 2026
19eb838
add missing name for Quadrilateral2D4
matekelemen Apr 29, 2026
27b911d
bugfixes to pre-tensioning in 2D and 3D
matekelemen Apr 29, 2026
3e0a613
extend pre-tensioning to support transient loading
matekelemen Apr 29, 2026
c0c6de8
add docs for pre-tensioning
matekelemen Apr 29, 2026
0792664
fix bugs in dirichlet pre-tensioning
matekelemen Apr 29, 2026
26b1d8d
update pre-tensioning test
matekelemen Apr 29, 2026
370d1d6
remove multiline doxygen equations
matekelemen Apr 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ file(GLOB_RECURSE KRATOS_STRUCTURAL_MECHANICS_APPLICATION_CORE
${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/custom_elements/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/custom_io/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/custom_operations/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/custom_processes/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/custom_response_functions/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/custom_strategies/*.cpp
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
// KRATOS ___| | | |
// \___ \ __| __| | | __| __| | | __| _` | |
// | | | | | ( | | | | ( | |
// _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS
//
// License: BSD License
// license: StructuralMechanicsApplication/license.txt
//
// Main authors: Máté Kelemen
//

// --- Core Includes ---
#include "includes/condition.h"
#include "geometries/point_2d.h"
#include "includes/variables.h"

// --- Structural Includes ---
#include "structural_mechanics_application_variables.h" // POINT_LOAD_X


namespace Kratos {


class PointLoadCondition1D1N : public Condition {
public:
KRATOS_CLASS_POINTER_DEFINITION(PointLoadCondition1D1N);

PointLoadCondition1D1N() = default;

PointLoadCondition1D1N(
Condition::IndexType Id,
Geometry<Node>::Pointer pGeometry,
Properties::Pointer pProperties)
: Condition(Id, pGeometry, pProperties)
{}

Condition::Pointer Clone(
Condition::IndexType Id,
const Condition::NodesArrayType& rNodes) const override {
KRATOS_ERROR_IF_NOT(rNodes.size() == 1)
<< "PointLoadCondition1D1N::Clone expects 1 node but got " << rNodes.size();
return Condition::Pointer(new PointLoadCondition1D1N(
Id,
Geometry<Node>::Pointer(new Point2D<Node>(rNodes)),
this->pGetProperties()));
}

void EquationIdVector(
Condition::EquationIdVectorType& rIndices,
const ProcessInfo&) const override {
rIndices.resize(1);
rIndices[0] = this->GetGeometry()[0].GetDofs()[0]->EquationId();
}

void GetDofList(
Condition::DofsVectorType& rDofs,
const ProcessInfo&) const override {
rDofs.resize(1);
rDofs[0] = this->GetGeometry()[0].GetDofs()[0].get();
}

void GetValuesVector(
Vector& rOutput,
int Step) const override {
rOutput.resize(1);
rOutput[0] = this->GetGeometry()[0].FastGetSolutionStepValue(DISPLACEMENT_X, Step);
}

void GetFirstDerivativesVector(
Vector& rOutput,
int Step) const override {
rOutput.resize(1);
rOutput[0] = this->GetGeometry()[0].FastGetSolutionStepValue(VELOCITY_X, Step);
}

void GetSecondDerivativesVector(
Vector& rOutput,
int Step) const override {
rOutput.resize(1);
rOutput[0] = this->GetGeometry()[0].FastGetSolutionStepValue(ACCELERATION_X, Step);
}

void CalculateRightHandSide(
Condition::VectorType& rRhs,
const ProcessInfo&) override {
rRhs.resize(1);
rRhs[0] = this->GetValue(POINT_LOAD_X);
}

void CalculateLocalSystem(
Condition::MatrixType& rLhs,
Condition::VectorType& rRhs,
const ProcessInfo& rProcessInfo) override {
rLhs.resize(1, 1, false);
rLhs(0, 0) = 0.0;
this->CalculateRightHandSide(rRhs, rProcessInfo);
}

void CalculateMassMatrix(
Condition::MatrixType& rMatrix,
const ProcessInfo&) override {
rMatrix.resize(1, 1, false);
rMatrix(0, 0) = 0.0;
}

void CalculateDampingMatrix(
Condition::MatrixType& rMatrix,
const ProcessInfo&) override {
rMatrix.resize(1, 1, false);
rMatrix(0, 0) = 0.0;
}
}; // class PointLoadCondition1D1N

} // namespace Kratos
Loading
Loading