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"
47class ParallelAMRConsistency;
59#ifdef ACTIVATE_PERF_COUNTER
113 bool needUpdate()
const {
114 return m_need_update ;
117 m_need_update =
true ;
119 void initMeshContainingBox() ;
334 void _updateItemOwner2();
336 bool _removeGhostChildren();
345 void _updateLocalityMap2();
370 bool _makeFlagParallelConsistent2();
375 template <
int typeID>
377 template <
int typeID>
421 Integer m_nb_cell_target;
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;
433 Integer m_max_nb_hChildren;
453#ifdef ACTIVATE_PERF_COUNTER
481 return m_face_level_mismatch_limit;
488MeshRefinement::getRefinementPattern<IT_Quad4>()
const
494MeshRefinement::getRefinementPattern<IT_Tetraedron4>()
const
496 return m_tetra_refinement_pattern;
499inline const ItemRefinementPatternT<IT_Pyramid5>&
500MeshRefinement::getRefinementPattern<IT_Pyramid5>()
const
502 return m_pyramid_refinement_pattern;
505inline const ItemRefinementPatternT<IT_Pentaedron6>&
506MeshRefinement::getRefinementPattern<IT_Pentaedron6>()
const
508 return m_prism_refinement_pattern;
511inline const ItemRefinementPatternT<IT_Hexaedron8>&
512MeshRefinement::getRefinementPattern<IT_Hexaedron8>()
const
514 return m_hex_refinement_pattern;
517inline const ItemRefinementPatternT<IT_HemiHexa7>&
518MeshRefinement::getRefinementPattern<IT_HemiHexa7>()
const
520 return m_hemihexa7_refinement_pattern;
523inline const ItemRefinementPatternT<IT_HemiHexa6>&
524MeshRefinement::getRefinementPattern<IT_HemiHexa6>()
const
526 return m_hemihexa6_refinement_pattern;
529inline const ItemRefinementPatternT<IT_HemiHexa5>&
530MeshRefinement::getRefinementPattern<IT_HemiHexa5>()
const
532 return m_hemihexa5_refinement_pattern;
535inline const ItemRefinementPatternT<IT_AntiWedgeLeft6>&
536MeshRefinement::getRefinementPattern<IT_AntiWedgeLeft6>()
const
538 return m_antiwedgeleft6_refinement_pattern;
541inline const ItemRefinementPatternT<IT_AntiWedgeRight6>&
542MeshRefinement::getRefinementPattern<IT_AntiWedgeRight6>()
const
544 return m_antiwedgeright6_refinement_pattern;
547inline const ItemRefinementPatternT<IT_DiTetra5>&
548MeshRefinement::getRefinementPattern<IT_DiTetra5>()
const
550 return m_ditetra5_refinement_pattern;
Tableau d'items de types quelconques.
Interface d'un fonctor avec argument.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Classe gérant un vecteur de réel de dimension 3.
Implémentation d'un maillage.
Implémentation des algorithmes d'adaptation par raffinement de maillages non-structuré.
bool _checkUnflagged(bool arcane_assert_yes=false)
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)
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
Classe d'accès aux traces.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-