12#ifndef ARCANE_MESH_MESHREFINEMENT_H
13#define ARCANE_MESH_MESHREFINEMENT_H
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/PerfCounterMng.h"
19#include "arcane/utils/AMRCallBackMng.h"
21#include "arcane/core/ItemRefinementPattern.h"
23#include "arcane/mesh/MeshGlobal.h"
24#include "arcane/mesh/MapCoordToUid.h"
25#include "arcane/mesh/DynamicMeshKindInfos.h"
59#ifdef ACTIVATE_PERF_COUNTER
81 static const std::string m_names[NbCounters] ;
113 bool needUpdate()
const {
114 return m_need_update ;
117 m_need_update = true ;
119 void initMeshContainingBox() ;
164 bool coarsenItems(
const bool maintain_level_one =
true);
190 bool refineItems(
const bool maintain_level_one=
true);
250 void populateBackFrontCellsFromParentFaces(
Cell parent_cell);
334 void _updateItemOwner2();
336 bool _removeGhostChildren();
345 void _updateLocalityMap2();
370 bool _makeFlagParallelConsistent2();
375 template <
int typeID>
377 template <
int typeID>
378 void _populateBackFrontCellsFromChildrenFaces(
Face face,
Cell parent_cell,
381 void _checkOwner(
const String & msg);
422 Byte m_face_level_mismatch_limit;
424 Int64 m_max_node_uid;
425 Int64 m_next_node_uid;
427 Int64 m_max_cell_uid;
428 Int64 m_next_cell_uid;
430 Int64 m_max_face_uid;
431 Int64 m_next_face_uid;
439 const TetraRefinementPattern2Hex_2Penta_2Py_2Tetra m_tetra_refinement_pattern;
440 const PyramidRefinementPattern4Hex_4Py m_pyramid_refinement_pattern;
441 const PrismRefinementPattern4Hex_4Pr m_prism_refinement_pattern;
442 const HexRefinementPattern8Hex m_hex_refinement_pattern;
443 const HemiHex7RefinementPattern6Hex_2HHex7 m_hemihexa7_refinement_pattern;
444 const HemiHex6RefinementPattern4Hex_4HHex7 m_hemihexa6_refinement_pattern;
445 const HemiHex5RefinementPattern2Hex_4Penta_2HHex5 m_hemihexa5_refinement_pattern;
446 const AntiWedgeLeft6RefinementPattern4Hex_4HHex7 m_antiwedgeleft6_refinement_pattern;
447 const AntiWedgeRight6RefinementPattern4Hex_4HHex7 m_antiwedgeright6_refinement_pattern;
448 const DiTetra5RefinementPattern2Hex_6HHex7 m_ditetra5_refinement_pattern;
453#ifdef ACTIVATE_PERF_COUNTER
454 PerfCounterMng<PerfCounter> m_perf_counter ;
481 return m_face_level_mismatch_limit;
496 return m_tetra_refinement_pattern;
499inline const ItemRefinementPatternT<IT_Pyramid5>&
502 return m_pyramid_refinement_pattern;
505inline const ItemRefinementPatternT<IT_Pentaedron6>&
508 return m_prism_refinement_pattern;
511inline const ItemRefinementPatternT<IT_Hexaedron8>&
514 return m_hex_refinement_pattern;
517inline const ItemRefinementPatternT<IT_HemiHexa7>&
520 return m_hemihexa7_refinement_pattern;
523inline const ItemRefinementPatternT<IT_HemiHexa6>&
526 return m_hemihexa6_refinement_pattern;
529inline const ItemRefinementPatternT<IT_HemiHexa5>&
532 return m_hemihexa5_refinement_pattern;
535inline const ItemRefinementPatternT<IT_AntiWedgeLeft6>&
538 return m_antiwedgeleft6_refinement_pattern;
541inline const ItemRefinementPatternT<IT_AntiWedgeRight6>&
544 return m_antiwedgeright6_refinement_pattern;
547inline const ItemRefinementPatternT<IT_DiTetra5>&
550 return m_ditetra5_refinement_pattern;
Vue modifiable d'un tableau d'un type T.
Tableau d'items de types quelconques.
Interface d'un fonctor avec argument.
Classe gérant un vecteur de réel de dimension 3.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Implémentation d'un maillage.
bool _checkUnflagged(bool arcane_assert_yes=false)
MeshRefinement(DynamicMesh *mesh)
bool m_coarsen_by_parents
AMRCallBackMng * m_call_back_mng
void populateBackFrontCellsFromChildrenFaces(Cell parent_cell)
const Quad4RefinementPattern4Quad m_quad4_refinement_pattern
bool coarsenItemsV2(bool update_parent_flag)
Méthode permettant de retirer les mailles marquées avec le flag "II_Coarsen".
bool refineAndCoarsenItems(const bool maintain_level_one=true)
bool refineItems(const bool maintain_level_one=true)
void flagItems(const Int32Array &flag_per_cell, const Integer max_level=-1)
unsigned char & faceLevelMismatchLimit()
const IMesh * getMesh() const
Référence constante au maillage.
bool & coarsenByParents()
void uniformlyCoarsen(Integer n=1)
Int64 findOrAddFaceUid(const Real3 &face_center, const Real &tol, bool &is_added)
MapCoordToUid::Box m_mesh_containing_box
ParallelAMRConsistency * m_parallel_amr_consistency
bool _makeCoarseningCompatible(const bool)
void _updateLocalityMap()
Int64 getFirstChildNewUid()
const ItemRefinementPatternT< typeID > & getRefinementPattern() const
bool _makeRefinementCompatible(const bool)
void _upscaleData(Array< ItemInternal * > &parent_cells)
restriction des données sur les mailles parents
ItemRefinement * m_item_refinement
bool _makeFlagParallelConsistent()
Int64 findOrAddNodeUid(const Real3 &p, const Real &tol)
bool _checkLevelOne(bool arcane_assert_yes=false)
void uniformlyRefine(Integer n=1)
void _cleanRefinementFlags()
bool coarsenItems(const bool maintain_level_one=true)
void _populateBackFrontCellsFromParentFaces(Cell parent_cell)
void _interpolateData(const Int64Array &cells_to_refine)
interpolation des données sur les mailles enfants
virtual void flagCellToRefine(Int32ConstArrayView cells_lids)
Passage de l'erreur commise par maille au flag de raffinement.
bool _refineItems(Int64Array &cells_to_refine)
MeshVariableScalarRefT< Node, Int32 > VariableNodeInt32
Grandeur au noeud de type entier 32 bits.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Array< Int64 > Int64Array
Tableau dynamique à une dimension d'entiers 64 bits.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
double Real
Type représentant un réel.
unsigned char Byte
Type d'un octet.
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.