Skip to content

Commit 169a21a

Browse files
Merge pull request #4143 from KratosMultiphysics/feature-core-mortar-mapping-reset-database
[Core] Mortar mapper ResetDatabase() implementation
2 parents 0e47b34 + 6459909 commit 169a21a

3 files changed

Lines changed: 40 additions & 0 deletions

File tree

kratos/processes/simple_mortar_mapper_process.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ void SimpleMortarMapperProcess<TDim, TNumNodes, TVarType, TNumNodesMaster>:: Exe
121121
{
122122
KRATOS_TRY;
123123

124+
// We reset the database if needed
125+
const bool update_interface = mThisParameters["update_interface"].GetBool();
126+
if (update_interface) {
127+
this->UpdateInterface();
128+
}
129+
124130
if (mpThisLinearSolver == nullptr)
125131
ExecuteExplicitMapping();
126132
else
@@ -883,6 +889,28 @@ void SimpleMortarMapperProcess<TDim, TNumNodes, TVarType, TNumNodesMaster>::Exec
883889
/***********************************************************************************/
884890
/***********************************************************************************/
885891

892+
template< SizeType TDim, SizeType TNumNodes, class TVarType, const SizeType TNumNodesMaster >
893+
void SimpleMortarMapperProcess<TDim, TNumNodes, TVarType, TNumNodesMaster>::UpdateInterface()
894+
{
895+
// Iterate in the conditions
896+
auto &r_destination_conditions_array = mDestinationModelPart.Conditions();
897+
#pragma omp parallel for
898+
for(int i = 0; i < static_cast<int>(r_destination_conditions_array.size()); ++i) {
899+
auto it_cond = r_destination_conditions_array.begin() + i;
900+
// Reset the index set
901+
if (it_cond->Has(INDEX_SET)) {
902+
(it_cond->GetValue(INDEX_SET))->clear();
903+
}
904+
// Reset the index set
905+
if (it_cond->Has(INDEX_MAP)) {
906+
(it_cond->GetValue(INDEX_SET))->clear();
907+
}
908+
}
909+
}
910+
911+
/***********************************************************************************/
912+
/***********************************************************************************/
913+
886914
template< SizeType TDim, SizeType TNumNodes, class TVarType, const SizeType TNumNodesMaster >
887915
Parameters SimpleMortarMapperProcess<TDim, TNumNodes, TVarType, TNumNodesMaster>::GetDefaultParameters()
888916
{
@@ -901,6 +929,7 @@ Parameters SimpleMortarMapperProcess<TDim, TNumNodes, TVarType, TNumNodesMaster>
901929
"destination_variable" : "",
902930
"origin_variable_historical" : true,
903931
"destination_variable_historical" : true,
932+
"update_interface" : false,
904933
"search_parameters" : {
905934
"allocation_size" : 1000,
906935
"bucket_size" : 4,

kratos/processes/simple_mortar_mapper_process.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -760,6 +760,16 @@ class KRATOS_API(KRATOS_CORE) SimpleMortarMapperProcess
760760
}
761761
}
762762

763+
/**
764+
* @brief Reset the interface database
765+
* This method resets the mapping database saved in the destination database.
766+
* Note that this needs to be done if such modelpart has changed its number
767+
* of nodes or conditions. This needs to be done even though the mapping
768+
* instance is deleted since such information is saved in the destination
769+
* nodes and conditions.
770+
*/
771+
void UpdateInterface();
772+
763773
/**
764774
* @brief This method provides the defaults parameters to avoid conflicts between the different constructors
765775
*/

kratos/processes/simple_mortar_mapper_wrapper_process.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ class SimpleMortarMapperProcessWrapper
266266
"destination_variable" : "",
267267
"origin_variable_historical" : true,
268268
"destination_variable_historical" : true,
269+
"update_interface" : false,
269270
"search_parameters" : {
270271
"allocation_size" : 1000,
271272
"bucket_size" : 4,

0 commit comments

Comments
 (0)