Skip to content

[MetisApplication][Core][IO] Extend support for Metis to constraints and geometries #13435

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 126 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
ac1ec69
[IO] Refactor type definitions to use 'using' for clarity and consist…
loumalouomega Mar 27, 2025
a927530
[IO] Add Python bindings for reading and writing master-slave constra…
loumalouomega Mar 27, 2025
d6f8c86
[Core] Enhance `CompareElementsAndConditionsUtility` to support `Mast…
loumalouomega Mar 27, 2025
de80cb5
Add unit test for `CompareElementsAndConditionsUtility` to validate M…
loumalouomega Mar 27, 2025
9b42ce7
[IO] Refactor ModelPartIO to use type aliases for clarity and add met…
loumalouomega Mar 27, 2025
488619e
Fix ModelPartIO to use current constraint iterator for writing master…
loumalouomega Mar 27, 2025
ee4a5df
Add MasterSlaveConstraints to test MDPA files and update unit tests f…
loumalouomega Mar 27, 2025
cad8696
Update test_object_printing.py to reflect the correct number of const…
loumalouomega Mar 28, 2025
edc392f
Merge branch 'master' into Core/adding-constraints-to-model-part-io
loumalouomega Mar 31, 2025
7665671
Replace std::endl with "\n"
loumalouomega Apr 1, 2025
f239a70
Merge branch 'master' into metis/add-constraints
loumalouomega Apr 2, 2025
cbb7abd
[IO] Improve comments and add new partitioning information in Partiti…
loumalouomega Apr 2, 2025
73544d3
[MetisApplication] Enhance documentation and add new methods for part…
loumalouomega Apr 2, 2025
7e9054a
Refactor verbosity logging in MetisDivideHeterogeneousInputProcess an…
loumalouomega Apr 2, 2025
6f2139a
[Core] Add support for reading/writing Master-Slave Constraint data i…
loumalouomega Apr 2, 2025
2af7d54
[Core] Add support for reading/writing Master-Slave Constraint data i…
loumalouomega Apr 2, 2025
8f067b2
Add methods to read master-slave constraints and geometries from sub-…
loumalouomega Apr 2, 2025
28a6e76
WIP
loumalouomega Apr 2, 2025
75c404e
Fix method signatures in IO header for consistency and clarity
loumalouomega Apr 3, 2025
1d3a437
Add methods to read master-slave constraints and geometries from sub-…
loumalouomega Apr 3, 2025
c68e449
Add support for reading constraints and geometries in submodel parts
loumalouomega Apr 3, 2025
00bcbca
Consistent renaming (but grammarly incorrect)
loumalouomega Apr 3, 2025
c800097
Merge branch 'master' into Core/adding-constraints-to-model-part-io
loumalouomega Apr 30, 2025
9506748
Merge branch 'Core/adding-constraints-to-model-part-io' into core/ext…
loumalouomega Apr 30, 2025
2c29c2b
Add ReadSubModelPartMasterSlaveConstraintsBlock function and update R…
loumalouomega Apr 30, 2025
8a03b4d
Add SubModelPartGeometries and SubModelPartMasterSlaveConstraints sec…
loumalouomega Apr 30, 2025
5a2af08
Merge branch 'master' into Core/adding-constraints-to-model-part-io
loumalouomega May 6, 2025
c5cc60f
Minor fix
loumalouomega May 6, 2025
5ef20d5
Merge branch 'Core/adding-constraints-to-model-part-io' into core/ext…
loumalouomega May 6, 2025
08387f7
Merge pull request #13300 from KratosMultiphysics/core/extend-modelpa…
loumalouomega May 7, 2025
90b0593
Merge branch 'master' into Core/adding-constraints-to-model-part-io
loumalouomega May 12, 2025
f2a31b9
Merge branch 'Core/adding-constraints-to-model-part-io' into metis/ad…
loumalouomega May 12, 2025
e044400
Add geometry handling to ModelPartIO for improved data management
loumalouomega May 12, 2025
7ec4f7d
Merge branch 'master' into metis/add-constraints
loumalouomega May 12, 2025
fe4a3f4
Refactor ReadInitialValues to simplify GeometricalData handling
loumalouomega May 12, 2025
1445689
Add DividingGeometries method to LegacyPartitioningUtilities for geom…
loumalouomega May 12, 2025
329a239
Add geometry partitioning functionality to MetisDivideHeterogeneousIn…
loumalouomega May 12, 2025
202a74c
Implement synchronous partitioning for master-slave constraints in Me…
loumalouomega May 12, 2025
caedfee
Enhance RedistributeHangingNodes method to include geometry and maste…
loumalouomega May 13, 2025
fc76e7d
Enhance RedistributeHangingNodes to include geometry and master-slave…
loumalouomega May 13, 2025
e3d7680
Rename PartitionElementsSynchronous to PartitionGeometriesSynchronous…
loumalouomega May 13, 2025
255af2b
Fix license formatting in MetisDivideHeterogeneousInputInMemoryProces…
loumalouomega May 13, 2025
b4b8c95
Renaming
loumalouomega May 13, 2025
2ada23b
Update
loumalouomega May 13, 2025
a05872f
Rename ReadSubModelPartElementsAndConditionsIds to ReadSubModelPartEn…
loumalouomega May 13, 2025
31cc118
Remove redundant property ID reading in FillNodalConnectivitiesFromGe…
loumalouomega May 13, 2025
8dd3e1f
Add reading of variable names in FillNodalConnectivitiesFromMasterSla…
loumalouomega May 13, 2025
4ac0ee6
Add Logger severity setting to test scripts for improved output control
loumalouomega May 13, 2025
773d1a1
Fix typos in applications/StructuralMechanicsApplication
luzpaz May 12, 2025
05589da
Fix typos in applications/ContactMechanicsApplication
luzpaz May 9, 2025
fb62239
Fix typos in applications/DemStructuresCouplingApplication
luzpaz May 12, 2025
edc4a6e
[GeoMechanicsApplication] Add Coulomb model with tension cutoff for i…
mnabideltares May 12, 2025
163500b
Remove plane.h
rubenzorrilla May 12, 2025
3997f48
Fix typos in application/ConstructiveModelsApplication
luzpaz Mar 3, 2025
f9c3db4
Fix typos in applications/MeshingApplication
luzpaz May 9, 2025
e737763
Fix typos in applications/OptimizationApplication
luzpaz May 9, 2025
5dc21bd
Fix typos in applications/PfemFluidDynamicsApplication
luzpaz May 9, 2025
3ca763b
Fix typos in applications/ConstitutiveLawsApplication
luzpaz May 11, 2025
9e0176b
Fix typos in applications/MPMApplication
luzpaz May 11, 2025
dbe1bae
Remove unused Newton-Cotes integration rule
rubenzorrilla May 12, 2025
25654a3
Add ReadMasterSlaveConstraintsConnectivities method to IO class
loumalouomega May 13, 2025
2f91eaf
Rename DividingConstraints to DividingMasterSlaveConstraints and upda…
loumalouomega May 13, 2025
85a362d
Rename ReadSubModelPartElementsAndConditionsIds to ReadSubModelPartEn…
loumalouomega May 13, 2025
3c8849b
Refactor variable declarations to use 'const' for improved code safet…
loumalouomega May 13, 2025
eb2981e
Missing
loumalouomega May 14, 2025
72ac304
Add methods to read new master-slave constraints and their connectivi…
loumalouomega May 14, 2025
40e49b2
Rename unit test for quad partitioning functionality in MetisApplica…
loumalouomega May 14, 2025
9db1d3c
[Core] Add `SetMasterSlaveConstraints` method and update Python bindi…
loumalouomega May 14, 2025
2c4dd60
Remove duplicated
loumalouomega May 14, 2025
b7703be
Add functionality to read relation matrix and constant vector in Fill…
loumalouomega May 14, 2025
ee3883b
Refactor iterator declaration in PartitionMasterSlaveConstraintsSynch…
loumalouomega May 15, 2025
d655821
Add functionality to read master-slave degrees of freedom, relation m…
loumalouomega May 15, 2025
da44f14
Enhance MasterSlaveConstraints output by including variable names in …
loumalouomega May 15, 2025
94d93fa
Enhance DivideMasterSlaveConstraintsBlock to include relation matrix …
loumalouomega May 15, 2025
a2d4127
Enhance ExecutePartitioning to include master-slave constraints in do…
loumalouomega May 15, 2025
eb70200
Enhance DividingNodes to include geometries and master-slave constrai…
loumalouomega May 15, 2025
8e6004f
Enhance ExecutePartitioning to include master-slave constraints in no…
loumalouomega May 15, 2025
ad0016e
Add master-slave constraint checks to Metis submodel part tests
loumalouomega May 15, 2025
cb9ab5e
Remove assertion for local master-slave constraints in submodel part …
loumalouomega May 15, 2025
a14a14b
Enhance FillNodalConnectivitiesFromMasterSlaveConstraintBlock to read…
loumalouomega May 15, 2025
f6e444e
Merge branch 'master' into metis/add-constraints
loumalouomega May 15, 2025
6a6a877
Remove unused variable in ReadMasterSlaveConstraintsConnectivitiesBlo…
loumalouomega May 16, 2025
f316757
Remove unused MasterSlaveConstraint variable in FillNodalConnectiviti…
loumalouomega May 16, 2025
758e67e
Add NodalSolutionStepVariable for TEMPERATURE in multiple test cases
loumalouomega May 16, 2025
a28a6da
Merge branch 'master' into metis/add-constraints
loumalouomega May 20, 2025
ed3d942
Merge branch 'master' into metis/add-constraints
loumalouomega May 22, 2025
a3c1f9c
Refactor master-slave constraint terminology to use "constraint" cons…
loumalouomega May 22, 2025
82baf39
Refactor master-slave constraint terminology to use "constraint" cons…
loumalouomega May 22, 2025
7382d92
Refactor string trimming in ReadConstraintsBlock to use StringUtilities
loumalouomega May 23, 2025
3105c81
Add StringToVector and CountValuesUntilPrefix utility functions for s…
loumalouomega May 23, 2025
9ba0721
Add tests for StringToVector and CountValuesUntilPrefix utility funct…
loumalouomega May 23, 2025
98124b1
Refactor ReadConstraintsBlock to use StringUtilities::StringToVector …
loumalouomega May 23, 2025
73f095a
Update CountValuesUntilPrefix test to use tab-separated values
loumalouomega May 23, 2025
19062fb
Refactor ReadConstraintsBlock to simplify slave variable reading and …
loumalouomega May 23, 2025
c3226e0
Add SplitStringIntoAVector function and corresponding test case
loumalouomega May 23, 2025
4ba06a6
Refactor MasterSlaveConstraint references to Constraints in ModelPartIO
loumalouomega May 23, 2025
eecdac8
Refactor MasterSlaveConstraints to Constraints in cube.mdpa
loumalouomega May 23, 2025
83d157d
Merge branch 'master' into metis/add-constraints
loumalouomega May 26, 2025
e60f446
Refactor IO class methods to use generic constraint terminology
loumalouomega May 26, 2025
71a3a1d
Rename master-slave constraint references to generic constraints for …
loumalouomega May 26, 2025
d7aa335
Rename master-slave constraint methods to generic constraints in Pyth…
loumalouomega May 26, 2025
954c6a7
Rename master-slave constraint methods to generic constraint methods …
loumalouomega May 26, 2025
1bc132b
Remove unused
loumalouomega May 28, 2025
0111970
Merge branch 'master' into metis/add-constraints
loumalouomega Jun 2, 2025
a16cc14
Merge branch 'master' into metis/add-constraints
loumalouomega Jun 3, 2025
b3059ac
Merge branch 'master' into metis/add-constraints
loumalouomega Jun 3, 2025
5dde7f0
Remove duplicated (conflict) master-slave constraint methods from IO …
loumalouomega Jun 3, 2025
29b2f85
Using new format of TC
loumalouomega Jun 3, 2025
cb69fea
Fix comments and improve logic in CountValuesUntilPrefix function
loumalouomega Jun 3, 2025
3173bd3
Revert
loumalouomega Jun 3, 2025
2d68907
Refactor ReadConstraintsBlock and DivideConstraintsBlock to improve t…
loumalouomega Jun 3, 2025
8ff2caf
Fix index calculation for reading master node IDs in constraints hand…
loumalouomega Jun 3, 2025
c9dcda4
Rearrange constraints format in cube.mdpa for consistency
loumalouomega Jun 3, 2025
ed1cfc0
Remove unused variable 'id' in FillNodalConnectivitiesFromConstraintB…
loumalouomega Jun 3, 2025
a0fd3c9
Refactor mesher operation methods from Apply to Execute (#13481)
ddiezrod Jun 3, 2025
51dc6a5
[Core] Missing python standard modeler constructor in `ConnectivityPr…
loumalouomega Jun 3, 2025
b989950
sorted condition ids are now serialized instead of sorted conditions
aronnoordam May 19, 2025
4f690dc
added test for moving load restart
aronnoordam May 19, 2025
a7ddfa3
delete serializer in test after call
aronnoordam May 20, 2025
dbeca49
reverted commented tests
aronnoordam May 20, 2025
1470950
removed sorted_conditions parameter
aronnoordam Jun 3, 2025
56ac340
[Core][Geometry] Fix C++17 warning for `std::minmax` in the `TriBoxOv…
loumalouomega Jun 4, 2025
265e830
[Core] Adding `CountValuesUntilCharacter` to `StringUtilities`
loumalouomega Jun 4, 2025
4c5be33
Adding the tests
loumalouomega Jun 4, 2025
ed96a91
Replace `CountValuesUntilPrefix` with `CountValuesUntilCharacter` in …
loumalouomega Jun 4, 2025
0ccd39c
Replace `CountValuesUntilPrefix` with `CountValuesUntilCharacter` in …
loumalouomega Jun 4, 2025
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

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
// | / |
// ' / __| _` | __| _ \ __|
// . \ | ( | | ( |\__ `
// _|\_\_| \__,_|\__|\___/ ____/
// Multi-Physics
//
// License: BSD License
// Kratos default license: kratos/license.txt
//
// Main authors: Pooyan Dadvand
// Jordi Cotela
// Carlos Roig
// Vicente Mataix Ferrandiz
//

#pragma once

// External includes
Expand Down Expand Up @@ -183,6 +198,13 @@ class KRATOS_API(METIS_APPLICATION) MetisDivideHeterogeneousInputProcess : publi
const IO::ConnectivitiesContainerType& rElemConnectivities,
std::vector<idxtype>& rElemPartition);

/// Partition the geometries such that boundary geometries are always assigned the majority partition.
void PartitionGeometriesSynchronous(
const std::vector<idxtype>& rNodePartition,
const IO::ConnectivitiesContainerType& rGeometryConnectivities,
std::vector<idxtype>& rGeometryPartition
);

/// Partition the elements such that boundary elements are always assigned the majority partition.
void PartitionElementsSynchronous(std::vector<idxtype> const& NodePartition,
const IO::ConnectivitiesContainerType& rElemConnectivities,
Expand All @@ -195,12 +217,49 @@ class KRATOS_API(METIS_APPLICATION) MetisDivideHeterogeneousInputProcess : publi
const IO::ConnectivitiesContainerType& rElemConnectivities,
std::vector<idxtype>& rCondPartition);

/// Partition the constraint such that boundary constraints are always assigned the majority partition.
void PartitionConstraintsSynchronous(
const std::vector<idxtype>& NodePartition,
const IO::ConnectivitiesContainerType& rConstraintConnectivities,
std::vector<idxtype>& rConstraintPartition
);

/**
* @brief Redistribute hanging nodes among the partitions including geometries and master-slave constraints.
* @details This function adjusts the node partitioning by redistributing hanging nodes
* based on the partition information provided for elements, conditions, geometries, and master-slave constraints,
* as well as their connectivity data. The redistribution ensures consistent partitioning
* across the computational domain.
* @param rNodePartition A reference to the vector storing the partition indices for nodes.
* The vector will be updated with new partition assignment for hanging nodes.
* @param rGeometryPartition A const reference to the vector holding partition indices for geometries.
* This is used to propagate partitioning information from geometries.
* @param rGeometryConnectivities A const reference to the container with connectivity data
* for geometries.
* @param rElementPartition A const reference to the vector holding partition indices for elements.
* This is used to propagate partitioning information to the nodes.
* @param rElementConnectivities A const reference to the container with connectivity
* data for elements. This helps determine node associations from elements.
* @param rConditionPartition A const reference to the vector containing partition indices for conditions.
* Condition partitioning is used to manage nodes associated with conditions.
* @param rConditionConnectivities A const reference to the container with connectivity data
* for conditions. This is used to correctly assign node partitions based on condition connectivity.
* @param rConstraintPartition A const reference to the vector holding partition indices for master-slave constraints.
* This is used to propagate partitioning information from master-slave constraints.
* @param rConstraintConnectivities A const reference to the container with connectivity data
* for master-slave constraints.
*/
void RedistributeHangingNodes(
std::vector<idxtype>& rNodePartition,
std::vector<idxtype> const& rGeometryPartition,
const IO::ConnectivitiesContainerType& rGeometryConnectivities,
std::vector<idxtype> const& rElementPartition,
const IO::ConnectivitiesContainerType& rElementConnectivities,
std::vector<idxtype> const& rConditionPartition,
const IO::ConnectivitiesContainerType& rConditionConnectivities);
const IO::ConnectivitiesContainerType& rConditionConnectivities,
std::vector<idxtype> const& rConstraintPartition,
const IO::ConnectivitiesContainerType& rConstraintConnectivities
);

SizeType FindMax(SizeType NumTerms, const std::vector<int>& rVect);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,17 +35,25 @@ void MetisDivideSubModelPartsHeterogeneousInputProcess::GetNodesPartitions(
IO::ConnectivitiesContainerType kratos_format_node_connectivities;
std::unordered_set<SizeType> submodelpart_elements_ids;
std::unordered_set<SizeType> submodelpart_conditions_ids;
std::unordered_set<SizeType> submodelpart_constraints_ids;
std::unordered_set<SizeType> submodelpart_geometries_ids;
std::vector<idxtype> submodelpart_partition_nodes;

BaseType::mrIO.ReadSubModelPartElementsAndConditionsIds(
BaseType::mrIO.ReadSubModelPartEntitiesIds(
submodelpart_name,
submodelpart_elements_ids,
submodelpart_conditions_ids);
submodelpart_conditions_ids,
submodelpart_constraints_ids,
submodelpart_geometries_ids
);

rNumNodes = BaseType::mrIO.ReadNodalGraphFromEntitiesList(
kratos_format_node_connectivities,
submodelpart_elements_ids,
submodelpart_conditions_ids);
submodelpart_conditions_ids,
submodelpart_constraints_ids,
submodelpart_geometries_ids
);

SizeType id = 0;
IO::ConnectivitiesContainerType reduced_kratos_format_node_connectivities;
Expand Down
Loading
Loading