Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
4dad16a
Add first draft of penalty method in Nitsche
eulovi Oct 8, 2025
2ec71e3
Correct penalty contribution Nitsche
eulovi Oct 9, 2025
703531c
Add parameters for Nitsche
eulovi Oct 10, 2025
d3eb649
Fix obtaining parameters
eulovi Oct 13, 2025
3c6a413
Include discretization for evaluation of Cauchy
eulovi Nov 26, 2025
22f2056
Add evaluation of Cauchy stress into embedded
eulovi Nov 26, 2025
0f1cc72
Commit more or less working Nitsche
eulovi Dec 8, 2025
55e8cd3
Working Nitsche version
eulovi Dec 10, 2025
a4c8d67
Add testing of the embeddedmesh nitsche
eulovi Dec 10, 2025
480253d
Remove an error and writing of nodal data
eulovi Dec 11, 2025
985fad9
Add parameter changes
eulovi Dec 17, 2025
0206ea0
Try to clean up Nitsche implementation
eulovi Dec 18, 2025
5860cf0
Write nodal output
eulovi Dec 18, 2025
5447f9b
Add comments
eulovi Dec 18, 2025
e2522b9
Commit first draft for fixing K_T
eulovi Feb 20, 2026
6f0babf
Fix stiffness matrix calculation
eulovi Feb 23, 2026
12d38b9
Commit current state (maybe not right)
eulovi Mar 4, 2026
e0c9d71
Add first version
eulovi Mar 11, 2026
ed0f24a
Saving a middle state (not working)
eulovi Mar 13, 2026
0a0dc28
Clean implementation
eulovi Mar 13, 2026
13f9b4e
Add more cleanup
eulovi Mar 13, 2026
104ea87
Add last changes
eulovi Mar 14, 2026
6ccbee4
Simplify formulation
eulovi Mar 14, 2026
b2dc4a6
Do more clean up
eulovi Mar 17, 2026
3415e3b
Save current state
eulovi Mar 20, 2026
1bc3518
Save dirty state
eulovi Mar 23, 2026
d10b43b
Save working state
eulovi Mar 23, 2026
3f93bb0
Remove couts and update test
eulovi Mar 23, 2026
ece2d40
Add linear kinematics and tests
eulovi Mar 25, 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 @@ -15,6 +15,7 @@
#include "4C_io_visualization_data.hpp"
#include "4C_linalg_fevector.hpp"
#include "4C_linalg_fixedsizematrix.hpp"
#include "4C_solid_3D_ele.hpp"
#include "4C_utils_parameter_list.fwd.hpp"

#include <memory>
Expand Down Expand Up @@ -42,6 +43,7 @@ namespace GeometryPair
namespace Constraints::EmbeddedMesh
{
class SolidToSolidMortarManager;
class SolidToSolidNitscheManager;

class SolidInteractionPair
{
Expand All @@ -66,12 +68,12 @@ namespace Constraints::EmbeddedMesh
/*!
\brief Get first element
*/
const Core::Elements::Element& element_1() const { return *element1_.get(); };
Core::Elements::Element& element_1() const { return *element1_.get(); };

/*!
\brief Get second element
*/
const Core::Elements::Element& element_2() const { return *element2_; };
Core::Elements::Element& element_2() const { return *element2_; };

/*!
\brief Get the number of segments
Expand Down Expand Up @@ -126,6 +128,19 @@ namespace Constraints::EmbeddedMesh
Core::LinAlg::FEVector<double>& global_kappa,
Core::LinAlg::FEVector<double>& global_lambda_active) = 0;

virtual void evaluate_and_assemble_nitsche_contributions(
const Core::FE::Discretization& discret,
const Constraints::EmbeddedMesh::SolidToSolidNitscheManager* nitsche_manager,
Core::LinAlg::SparseMatrix& global_penalty_interface,
Core::LinAlg::SparseMatrix& global_penalty_background,
Core::LinAlg::SparseMatrix& global_penalty_interface_background,
Core::LinAlg::SparseMatrix& global_nitsche_interface,
Core::LinAlg::SparseMatrix& global_nitsche_background,
Core::LinAlg::SparseMatrix& global_nitsche_interface_background,
Core::LinAlg::FEVector<double>& global_penalty_constraint,
Core::LinAlg::FEVector<double>& global_nitsche_constraint,
double& nitsche_average_weight_param) = 0;

/**
* \brief Set the current element displacement.
* @param discret (in) Discretization, used to get the boundary layer GIDs.
Expand Down Expand Up @@ -154,10 +169,10 @@ namespace Constraints::EmbeddedMesh
private:
//! @name member variables
//! first element of interacting pair
const std::shared_ptr<Core::Elements::Element> element1_;
std::shared_ptr<Core::Elements::Element> element1_;

//! second element of interacting pair
const Core::Elements::Element* element2_;
Core::Elements::Element* element2_;

//! pointer to the cutwizard
std::shared_ptr<Cut::CutWizard> cutwizard_ptr_ = nullptr;
Expand Down
Loading