12#ifndef ARCANE_CORE_MESHUTILS_H
13#define ARCANE_CORE_MESHUTILS_H
17#include "arcane/utils/FunctorUtils.h"
18#include "arcane/utils/MemoryUtils.h"
20#include "arcane/Item.h"
35class IVariableSynchronizer;
41namespace Arcane::MeshUtils
43extern "C++" ARCANE_CORE_EXPORT
void
44writeMeshItemInfo(ISubDomain*, Cell cell,
bool depend_info =
true);
45extern "C++" ARCANE_CORE_EXPORT
void
46writeMeshItemInfo(ISubDomain*, Node node,
bool depend_info =
true);
47extern "C++" ARCANE_CORE_EXPORT
void
48writeMeshItemInfo(ISubDomain*, Edge edge,
bool depend_info =
true);
49extern "C++" ARCANE_CORE_EXPORT
void
50writeMeshItemInfo(ISubDomain*, Face face,
bool depend_info =
true);
74extern "C++" ARCANE_CORE_EXPORT
bool
103extern "C++" ARCANE_CORE_EXPORT
bool
118extern "C++" ARCANE_CORE_EXPORT Face
133extern "C++" ARCANE_CORE_EXPORT Face
141extern "C++" ARCANE_CORE_EXPORT Int64
154extern "C++" ARCANE_CORE_EXPORT
void
169extern "C++" ARCANE_CORE_EXPORT
void
178extern "C++" ARCANE_CORE_EXPORT
void
181extern "C++" ARCANE_CORE_EXPORT
void
182writeMeshInfos(IMesh* mesh,
const String& file_name);
189extern "C++" ARCANE_CORE_EXPORT
void
192extern "C++" ARCANE_CORE_EXPORT
void
193checkMeshConnectivity(IMesh* mesh,
const XmlNode& root_node,
bool check_sub_domain);
195extern "C++" ARCANE_CORE_EXPORT
void
196checkMeshConnectivity(IMesh* mesh,
const String& file_name,
bool check_sub_domain);
203extern "C++" ARCANE_CORE_EXPORT
void
204printItems(std::ostream& ostr,
const String& name, ItemGroup item_group);
214extern "C++" ARCANE_CORE_EXPORT Int64
218extern "C++" ARCANE_CORE_EXPORT
void
227extern "C++" ARCANE_CORE_EXPORT
void
234extern "C++" ARCANE_CORE_EXPORT
void
255extern "C++" ARCANE_CORE_EXPORT
void
257 bool do_prefetch =
false);
268extern "C++" ARCANE_CORE_EXPORT impl::ItemBase
269findOneItem(IItemFamily* family, Int64 unique_id);
280extern "C++" ARCANE_CORE_EXPORT impl::ItemBase
281findOneItem(IItemFamily* family, ItemUniqueId unique_id);
288extern "C++" ARCANE_CORE_EXPORT
void
289visitGroups(IItemFamily* family, IFunctorWithArgumentT<ItemGroup&>* functor);
296extern "C++" ARCANE_CORE_EXPORT
void
297visitGroups(IMesh* mesh, IFunctorWithArgumentT<ItemGroup&>* functor);
315template <
typename LambdaType>
inline void
340template <
typename LambdaType>
inline void
351 inline Int64 computeCapacity(Int64 size)
353 return Arcane::MemoryUtils::impl::computeCapacity(size);
375template <
typename DataType>
inline bool
378 return Arcane::MemoryUtils::checkResizeArrayWithCapacity(array, new_size, force_resize);
390getMaxItemUniqueIdCollective(
IMesh* mesh);
413extern "C++" ARCANE_CORE_EXPORT
void
415 const String& expected_hash,
bool print_hash_value,
423extern "C++" ARCANE_CORE_EXPORT
void
434extern "C++" ARCANE_CORE_EXPORT Ref<IIndexedIncrementalItemConnectivity>
435computeNodeNodeViaEdgeConnectivity(
IMesh* mesh,
const String& connectivity_name);
445namespace Arcane::mesh_utils
450using MeshUtils::checkMeshConnectivity;
451using MeshUtils::checkMeshProperties;
452using MeshUtils::computeConnectivityPatternOccurence;
453using MeshUtils::dumpSynchronizerTopologyJSON;
454using MeshUtils::getFaceFromNodesLocal;
455using MeshUtils::getFaceFromNodesUnique;
456using MeshUtils::printItems;
457using MeshUtils::printMeshGroupsMemoryUsage;
458using MeshUtils::removeItemAndKeepOrder;
459using MeshUtils::reorderNodesOfFace;
460using MeshUtils::reorderNodesOfFace2;
461using MeshUtils::shrinkMeshGroups;
462using MeshUtils::writeMeshConnectivity;
463using MeshUtils::writeMeshInfos;
464using MeshUtils::writeMeshInfosSorted;
465using MeshUtils::writeMeshItemInfo;
void shrinkMeshGroups(IMesh *mesh)
Limite au plus juste l'usage mémoire des groupes.
void dumpSynchronizerTopologyJSON(IVariableSynchronizer *var_syncer, const String &filename)
Ecrit dans un fichier les informations sur la topologie d'une synchronisation.
bool checkResizeArray(Array< DataType > &array, Int64 new_size, bool force_resize)
Redimensionne un tableau qui est indexé par des 'ItemLocalId'.
void writeMeshInfosSorted(IMesh *mesh, const String &file_name)
Ecrit sur le fichier file_name les infos du maillage mesh.
void writeMeshConnectivity(IMesh *mesh, const String &file_name)
Ecrit sur le fichier file_name la connectivité du maillage mesh.
void printItems(std::ostream &ostr, const String &name, ItemGroup item_group)
Ecrit dans le flux ostr la description des items du groupe item_group.
bool reorderNodesOfFace(Int64ConstArrayView before_ids, Int64ArrayView after_ids)
Réordonne les noeuds d'une face.
Int64 generateHashUniqueId(SmallSpan< const Int64 > nodes_unique_id)
Génère un identifiant unique à partir d'une liste d'identifiants de noeuds.
Int64 printMeshGroupsMemoryUsage(IMesh *mesh, Int32 print_level)
Affiche l'utilisation mémoire des groupes du maillage.
void visitGroups(IItemFamily *family, IFunctorWithArgumentT< ItemGroup & > *functor)
Visite l'ensemble des groupes de family avec le functor functor.
void removeItemAndKeepOrder(Int32ArrayView items, Int32 local_id)
Supprime une entité en conservant l'ordre.
void checkMeshProperties(IMesh *mesh, bool is_sorted, bool has_no_hole, bool check_faces)
Vérifie que le maillage possède certaines propriétés.
Face getFaceFromNodesLocal(Node node, Int32ConstArrayView face_nodes_local_id)
Recherche une entité face à partir des numéros locaux de ces noeuds.
void markMeshConnectivitiesAsMostlyReadOnly(IMesh *mesh, RunQueue *q=nullptr, bool do_prefetch=false)
Indique que les connectivités du maillages ne seront pas régulièrement modifiées.
Face getFaceFromNodesUnique(Node node, Int64ConstArrayView face_nodes_unique_id)
Recherche une entité face à partir des numéros uniques de ces noeuds.
void computeConnectivityPatternOccurence(IMesh *mesh)
Calcul et affiche les patterns communs dans les connectivités.
bool reorderNodesOfFace2(Int64ConstArrayView nodes_unique_id, IntegerArrayView new_index)
Réordonne les noeuds d'une face.
Interface d'un algorithme de hashage.
Interface d'une famille d'entités.
Identifiant unique d'une entité.
Vue sur un vecteur d'entités.
Classe de base des vecteurs 1D de données.
Interface d'un fonctor avec argument mais sans valeur de retour.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ArrayView< Integer > IntegerArrayView
Equivalent C d'un tableau à une dimension d'entiers.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
ArrayView< Int64 > Int64ArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.