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 réel de 3 dimensions.
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.