Arcane  v3.16.2.0
Documentation développeur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
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;
59 ConstArrayView<Int64> items_connectivity,
60 ArrayView<Int32> local_ids,
61 bool allow_null) override;
62
82 Real3 computeNormal(const FaceGroup& face_group,
83 const VariableNodeReal3& nodes_coord) override;
84
85 Real3 computeDirection(const NodeGroup& node_group,
86 const VariableNodeReal3& nodes_coord,
87 Real3* n1, Real3* n2) override;
88
89 void computeAdjency(ItemPairGroup adjency_array, eItemKind link_kind,
90 Integer nb_layer) override;
91
92 bool writeToFile(const String& file_name, const String& service_name) override;
93
95 bool initial_partition) override;
96
97 void mergeNodes(Int32ConstArrayView nodes_local_id,
98 Int32ConstArrayView nodes_to_merge_local_id,
99 bool allow_non_corresponding_face) override;
100
101 void computeAndSetOwnersForNodes() override;
102 void computeAndSetOwnersForFaces() override;
103
105
106 private:
107
108 IMesh* m_mesh = nullptr;
109 BasicItemPairGroupComputeFunctor* m_compute_adjacency_functor = nullptr;
110
111 private:
112
113 Real3 _round(Real3 value);
114 Real3 _broadcastFarthestNode(Real distance, const Node& node,
115 const VariableNodeReal3& nodes_coord);
116};
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120
121} // namespace Arcane
122
123/*---------------------------------------------------------------------------*/
124/*---------------------------------------------------------------------------*/
125
126#endif
127
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
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:582
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
void mergeNodes(Int32ConstArrayView nodes_local_id, Int32ConstArrayView nodes_to_merge_local_id, bool allow_non_corresponding_face) override
Fusionne des nœuds.
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 getFacesLocalIdFromConnectivity(ConstArrayView< ItemTypeId > items_type, ConstArrayView< Int64 > items_connectivity, ArrayView< Int32 > local_ids, bool allow_null) override
Recherche les identifiants locaux des faces à partir de leur connectivité.
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