Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
UnstructuredMeshUtilities.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* UnstructuredMeshUtilities.h (C) 2000-2025 */
9/* */
10/* Fonctions utilitaires sur un maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_UNSTRUCTUREDMESHUTILITIES_H
13#define ARCANE_MESH_UNSTRUCTUREDMESHUTILITIES_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18
19#include "arcane/core/IMeshUtilities.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30class IMesh;
31class ItemPairGroup;
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
40class UnstructuredMeshUtilities
41: public TraceAccessor
42, public IMeshUtilities
43{
44 public:
45
46 explicit UnstructuredMeshUtilities(IMesh* mesh);
48
49 public:
50
51 void changeOwnersFromCells() override;
52
54 IntegerConstArrayView items_nb_node,
55 Int64ConstArrayView items_connectivity,
56 Int32ArrayView local_ids,
57 bool allow_null) override;
58
78 Real3 computeNormal(const FaceGroup& face_group,
79 const VariableNodeReal3& nodes_coord) override;
80
81 Real3 computeDirection(const NodeGroup& node_group,
82 const VariableNodeReal3& nodes_coord,
83 Real3* n1, Real3* n2) override;
84
85 void computeAdjency(ItemPairGroup adjency_array, eItemKind link_kind,
86 Integer nb_layer) override;
87
88 bool writeToFile(const String& file_name, const String& service_name) override;
89
91 bool initial_partition) override;
92
93 void mergeNodes(Int32ConstArrayView nodes_local_id,
94 Int32ConstArrayView nodes_to_merge_local_id) override;
95
96 void computeAndSetOwnersForNodes() override;
97 void computeAndSetOwnersForFaces() override;
98
100
101 private:
102
103 IMesh* m_mesh = nullptr;
104 BasicItemPairGroupComputeFunctor* m_compute_adjacency_functor = nullptr;
105
106 private:
107
108 Real3 _round(Real3 value);
109 Real3 _broadcastFarthestNode(Real distance, const Node& node,
110 const VariableNodeReal3& nodes_coord);
111};
112
113/*---------------------------------------------------------------------------*/
114/*---------------------------------------------------------------------------*/
115
116} // namespace Arcane
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120
121#endif
122
Interface d'un partitionneur de maillage.
Interface d'une classe proposant des fonctions utilitaires sur maillage.
Implémentation d'un tableau de listes d'entités.
Tableau de listes d'entités.
Noeud d'un maillage.
Definition Item.h:573
Classe gérant un vecteur de réel de dimension 3.
Definition Real3.h:132
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Real3 computeDirection(const NodeGroup &node_group, const VariableNodeReal3 &nodes_coord, Real3 *n1, Real3 *n2) override
Real3 computeNormal(const FaceGroup &face_group, const VariableNodeReal3 &nodes_coord) override
Calcule la normale d'un groupe de face.
~UnstructuredMeshUtilities() override
Libère les ressources.
void partitionAndExchangeMeshWithReplication(IMeshPartitionerBase *partitioner, bool initial_partition) override
Repartitionne et échange le maillage en gérant la réplication.
void mergeNodes(Int32ConstArrayView nodes_local_id, Int32ConstArrayView nodes_to_merge_local_id) override
Fusionne des noeuds.
void computeAdjency(ItemPairGroup adjency_array, eItemKind link_kind, Integer nb_layer) override
Calcul des adjacences, rangées dans adjacency_array.
bool writeToFile(const String &file_name, const String &service_name) override
Ecrit le maillage dans un fichier.
void changeOwnersFromCells() override
Positionne les nouveaux propriétaires des noeuds, arêtes et faces à partir des mailles.
void localIdsFromConnectivity(eItemKind item_kind, IntegerConstArrayView items_nb_node, Int64ConstArrayView items_connectivity, Int32ArrayView local_ids, bool allow_null) override
Recherche les identifiants locaux des entités à partir de leur connectivité.
void recomputeItemsUniqueIdFromNodesUniqueId() override
Recalcule les uniqueId() des arêtes, faces et mailles en fonction des uniqueId() des noeuds.
void computeAndSetOwnersForFaces() override
Détermine les propriétaires des faces.
void computeAndSetOwnersForNodes() override
Détermine les propriétaires des noeuds.
ItemGroupT< Face > FaceGroup
Groupe de faces.
Definition ItemTypes.h:178
ItemGroupT< Node > NodeGroup
Groupe de noeuds.
Definition ItemTypes.h:167
MeshVariableScalarRefT< Node, Real3 > VariableNodeReal3
Grandeur au noeud de type coordonnées.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
Definition UtilsTypes.h:567
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:540
eItemKind
Genre d'entité de maillage.
double Real
Type représentant un réel.
ConstArrayView< Integer > IntegerConstArrayView
Equivalent C d'un tableau à une dimension d'entiers.
Definition UtilsTypes.h:573