Skip to content

Commit ecbbd3e

Browse files
authored
Merge pull request #1785 from arcaneframework/dev/ah-fixes-in-reducenbghostlayers
Correct an error in the reduceNbGhostLayers() method
2 parents 19bb227 + 21becaa commit ecbbd3e

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

arcane/src/arcane/cartesianmesh/CartesianMesh.cc

+9-3
Original file line numberDiff line numberDiff line change
@@ -777,18 +777,21 @@ reduceNbGhostLayers(Integer level, Integer target_nb_ghost_layers)
777777
}
778778

779779
level_max = m_mesh->parallelMng()->reduce(Parallel::ReduceMax, level_max);
780+
//debug() << "Level max : " << level_max;
780781

781782
computeDirections();
782783

783784
Integer level_0_nb_ghost_layer = m_mesh->ghostLayerMng()->nbGhostLayer();
784-
//info() << "NbGhostLayers : " << level_0_nb_ghost_layer;
785+
//debug() << "NbGhostLayers level 0 : " << level_0_nb_ghost_layer;
785786

786787
if (level_0_nb_ghost_layer == 0) {
787788
return 0;
788789
}
789790

790791
Integer nb_ghost_layer = Convert::toInt32(level_0_nb_ghost_layer * pow(2, level));
791792

793+
//debug() << "NbGhostLayers level " << level << " : " << nb_ghost_layer;
794+
792795
// On considère qu'on a toujours 2*2 mailles filles (2*2*2 en 3D).
793796
if (target_nb_ghost_layers % 2 != 0) {
794797
target_nb_ghost_layers++;
@@ -798,6 +801,8 @@ reduceNbGhostLayers(Integer level, Integer target_nb_ghost_layers)
798801
return nb_ghost_layer;
799802
}
800803

804+
//debug() << "TargetNbGhostLayers level " << level << " : " << target_nb_ghost_layers;
805+
801806
Integer parent_level = level - 1;
802807
Integer parent_target_nb_ghost_layer = target_nb_ghost_layers / 2;
803808

@@ -809,6 +814,7 @@ reduceNbGhostLayers(Integer level, Integer target_nb_ghost_layers)
809814

810815
children_list = [&cell_lid2, &children_list](Cell cell) -> void {
811816
for (Integer i = 0; i < cell.nbHChildren(); ++i) {
817+
//debug() << "child of lid=" << cell.localId() << " : lid=" << cell.hChild(i).localId() << " -- level : " << cell.level();
812818
cell_lid2[cell.level()].add(cell.hChild(i).localId());
813819
children_list(cell.hChild(i));
814820
}
@@ -862,7 +868,7 @@ reduceNbGhostLayers(Integer level, Integer target_nb_ghost_layers)
862868
}
863869

864870
// Maille n'ayant pas de nodes déjà traités.
865-
if (min == 10 && max == -1) {
871+
if (min == max_nb_layer && max == -1) {
866872
continue;
867873
}
868874

@@ -898,7 +904,7 @@ reduceNbGhostLayers(Integer level, Integer target_nb_ghost_layers)
898904
if (m_mesh->parallelMng()->reduce(Parallel::ReduceMax, cell_lid2[i].size()) == 0) {
899905
continue;
900906
}
901-
//debug() << "Ghost cells to remove (level=" << i << ") (localIds) : " << cell_lid2[i];
907+
//debug() << "Removing children of ghost cell (parent level=" << i << ") (children localIds) : " << cell_lid2[i];
902908

903909
m_mesh->modifier()->flagCellToCoarsen(cell_lid2[i]);
904910
m_mesh->modifier()->coarsenItemsV2(false);

arcane/src/arcane/mesh/MeshRefinement.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ coarsenItemsV2(bool update_parent_flag)
664664
}
665665
// Si la maille à côté est raffinée, on aura plus d'un niveau de décalage.
666666
if (other_cell.nbHChildren() != 0) { // && !(other_cell.mutableItemBase().flags() & ItemFlags::II_Coarsen)) { // Impossible de dé-raffiner plusieurs niveaux.
667-
ARCANE_FATAL("Once level diff between two cells needed -- Cell uid: {0} -- Opposite cell uid: {1}", cell.uniqueId(), other_cell.uniqueId());
667+
ARCANE_FATAL("Max one level diff between two cells is allowed -- Uid of Cell to be coarseing: {0} -- Uid of Opposite cell with children: {1}", cell.uniqueId(), other_cell.uniqueId());
668668
}
669669
// Si la maille d'à côté n'est pas à nous, elle prend la propriété de la maille d'à côté.
670670
if (other_cell.owner() != cell.owner()) {

0 commit comments

Comments
 (0)