12#ifndef ARCANE_CORE_MESHUTILS_H
13#define ARCANE_CORE_MESHUTILS_H
17#include "arcane/utils/FunctorUtils.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
121ARCANE_DEPRECATED_REASON(
"Y2025: Use getFaceFromNodesLocalId() instead")
140extern "C++" ARCANE_CORE_EXPORT Face
143ARCANE_DEPRECATED_REASON(
"Y2025: Use getFaceFromNodesUniqueId() instead")
155extern "C++" ARCANE_CORE_EXPORT
Int64
168extern "C++" ARCANE_CORE_EXPORT
void
184extern "C++" ARCANE_CORE_EXPORT
void
193extern "C++" ARCANE_CORE_EXPORT
void
196extern "C++" ARCANE_CORE_EXPORT
void
197writeMeshInfos(IMesh* mesh,
const String& file_name);
204extern "C++" ARCANE_CORE_EXPORT
void
207extern "C++" ARCANE_CORE_EXPORT
void
208checkMeshConnectivity(IMesh* mesh,
const XmlNode& root_node,
bool check_sub_domain);
210extern "C++" ARCANE_CORE_EXPORT
void
211checkMeshConnectivity(IMesh* mesh,
const String& file_name,
bool check_sub_domain);
218extern "C++" ARCANE_CORE_EXPORT
void
219printItems(std::ostream& ostr,
const String& name, ItemGroup item_group);
229extern "C++" ARCANE_CORE_EXPORT
Int64
233extern "C++" ARCANE_CORE_EXPORT
void
242extern "C++" ARCANE_CORE_EXPORT
void
249extern "C++" ARCANE_CORE_EXPORT
void
270extern "C++" ARCANE_CORE_EXPORT
void
272 bool do_prefetch =
false);
283extern "C++" ARCANE_CORE_EXPORT ItemBase
284findOneItem(IItemFamily* family,
Int64 unique_id);
295extern "C++" ARCANE_CORE_EXPORT ItemBase
296findOneItem(IItemFamily* family, ItemUniqueId unique_id);
303extern "C++" ARCANE_CORE_EXPORT
void
304visitGroups(IItemFamily* family, IFunctorWithArgumentT<ItemGroup&>* functor);
311extern "C++" ARCANE_CORE_EXPORT
void
312visitGroups(IMesh* mesh, IFunctorWithArgumentT<ItemGroup&>* functor);
330template <
typename LambdaType>
inline void
355template <
typename LambdaType>
inline void
366 inline Int64 computeCapacity(Int64 size)
368 return Arcane::MemoryUtils::impl::computeCapacity(size);
390template <
typename DataType>
inline bool
405getMaxItemUniqueIdCollective(
IMesh* mesh);
428extern "C++" ARCANE_CORE_EXPORT
void
438extern "C++" ARCANE_CORE_EXPORT
void
450computeNodeNodeViaEdgeConnectivity(
IMesh* mesh,
const String& connectivity_name);
460namespace Arcane::mesh_utils
465using MeshUtils::checkMeshConnectivity;
466using MeshUtils::checkMeshProperties;
467using MeshUtils::computeConnectivityPatternOccurence;
468using MeshUtils::dumpSynchronizerTopologyJSON;
469using MeshUtils::getFaceFromNodesLocal;
470using MeshUtils::getFaceFromNodesUnique;
471using MeshUtils::printItems;
472using MeshUtils::printMeshGroupsMemoryUsage;
473using MeshUtils::removeItemAndKeepOrder;
474using MeshUtils::reorderNodesOfFace;
475using MeshUtils::reorderNodesOfFace2;
476using MeshUtils::shrinkMeshGroups;
477using MeshUtils::writeMeshConnectivity;
478using MeshUtils::writeMeshInfos;
479using MeshUtils::writeMeshInfosSorted;
480using MeshUtils::writeMeshItemInfo;
Fonctions de gestion mémoire et des allocateurs.
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 getFaceFromNodesUniqueId(Node node, Int64ConstArrayView face_nodes_unique_id)
Recherche une entité face à partir des numéros uniques 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.
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.
Face getFaceFromNodesLocalId(Node node, Int32ConstArrayView face_nodes_local_id)
Recherche une entité face à partir des numéros locaux de ces noeuds.
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.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Chaîne de caractères unicode.
Int32 checkResizeArrayWithCapacity(Array< DataType > &array, Int64 new_size, bool force_resize)
Redimensionne un tableau en ajoutant une réserve de mémoire.
-*- 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.