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
250computeConnectivityPatternOccurence(IMesh* mesh);
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.
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.
Référence à une instance.
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.