Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
EdgeFamily.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/* EdgeFamily.h (C) 2000-2022 */
9/* */
10/* Famille d'arêtes. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_MESH_EDGEFAMILY_H
13#define ARCANE_MESH_EDGEFAMILY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/mesh/ItemFamily.h"
18#include "arcane/IItemFamilyModifier.h"
19#include "arcane/mesh/ItemInternalConnectivityIndex.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane::mesh
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
32class ARCANE_MESH_EXPORT EdgeFamily
33: public ItemFamily
35{
36 class TopologyModifier;
40
41 public:
42
43 EdgeFamily(IMesh* mesh,const String& name);
44 virtual ~EdgeFamily(); //<! Libère les ressources
45
46 public:
47
48 virtual void build() override;
49 virtual void preAllocate(Integer nb_item);
50 virtual void computeSynchronizeInfos() override;
51
52 public:
53
55 // IItemFamilyModifier interface
56 Item allocOne(Int64 uid,ItemTypeId type_id, MeshInfos& mesh_info) override;
57 Item findOrAllocOne(Int64 uid,ItemTypeId type_id,MeshInfos& mesh_info, bool& is_alloc) override;
58 IItemFamily* family() override {return this;}
59
61 ItemInternal* findOrAllocOne(Int64 uid,bool& is_alloc);
62
63 void replaceNode(ItemLocalId edge,Integer index,ItemLocalId node);
64
66 void addCellToEdge(Edge edge,Cell new_cell);
68 void addFaceToEdge(Edge edge,Face new_face);
70 void removeCellFromEdge(Edge edge,ItemLocalId cell_to_remove_lid);
72 void removeFaceFromEdge(ItemLocalId edge,ItemLocalId face_to_remove);
75
77
78 void setConnectivity(const Integer c);
79
80 protected:
81
82 ItemTypeInfo* m_edge_type = nullptr;
83 bool m_has_edge = false;
84 Integer m_node_prealloc = 0;
85 Integer m_face_prealloc = 0;
86 Integer m_cell_prealloc = 0;
87 Integer m_mesh_connectivity = 0;
88 NodeConnectivity* m_node_connectivity = nullptr;
89 FaceConnectivity* m_face_connectivity = nullptr;
90 CellConnectivity* m_cell_connectivity = nullptr;
91
92 private:
93
96
97 inline void _removeEdge(Edge edge);
98 inline void _createOne(ItemInternal* item,Int64 uid);
99};
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
103
104} // End namespace Arcane::mesh
105
106/*---------------------------------------------------------------------------*/
107/*---------------------------------------------------------------------------*/
108
109#endif
Maille d'un maillage.
Definition Item.h:1191
Arête d'une maille.
Definition Item.h:809
Face d'une maille.
Definition Item.h:944
Interface de modification d'une famille.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Structure interne d'une entité de maillage.
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Type d'une entité (Item).
Definition ItemTypeId.h:32
Infos sur un type d'entité du maillage.
Classe de base d'un élément de maillage.
Definition Item.h:83
Chaîne de caractères unicode.
void removeCellFromEdge(Edge edge, ItemLocalId cell_to_remove_lid)
Supprime une maille d'une arête.
virtual void computeSynchronizeInfos() override
Construit les structures nécessaires à la synchronisation.
void removeFaceFromEdge(ItemLocalId edge, ItemLocalId face_to_remove)
Supprime une maille d'une arête.
Item findOrAllocOne(Int64 uid, ItemTypeId type_id, MeshInfos &mesh_info, bool &is_alloc) override
Récupère ou alloue une arête de numéro unique uid et de type type.Ajout générique d'item.
void setConnectivity(const Integer c)
Définit la connectivité active pour le maillage associé
NodeFamily * m_node_family
Famille des noeuds associée à cette famille.
Definition EdgeFamily.h:95
void removeEdgeIfNotConnected(Edge edge)
Supprime l'arête si elle n'est plus connectée.
void addFaceToEdge(Edge edge, Face new_face)
Ajoute une maille voisine à une arête.
void replaceNode(ItemLocalId edge, Integer index, ItemLocalId node)
Remplace le noeud d'index index de l'arête edge avec celui de localId() node_lid.
Item allocOne(Int64 uid, ItemTypeId type_id, MeshInfos &mesh_info) override
Version appelées dans l'ajout générique d'item.
void addCellToEdge(Edge edge, Cell new_cell)
Ajoute une maille voisine à une arête.
Sélection entre les connectivités historiques et à la demande.
IMesh * mesh() const override
Maillage associé
String name() const override
Nom de la famille.
Definition ItemFamily.h:130
Classe factorisant des informations sur le maillage.
Definition MeshInfos.h:36
Famille de noeuds.
Definition NodeFamily.h:37
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.