Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IItemFamily.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* IItemFamily.h (C) 2000-2024 */
9/* */
10/* Interface d'une famille d'entités. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IITEMFAMILY_H
13#define ARCANE_IITEMFAMILY_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18#include "arcane/ItemTypes.h"
19#include "arcane/VariableTypedef.h"
20#include "arcane/Parallel.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class IParallelMng;
32class IDataOperation;
33class ItemUniqueId;
34class IItemInternalSortFunction;
35class IVariableSynchronizer;
36class IParticleFamily;
37class GroupIndexTable;
38class IItemConnectivityInfo;
39class IItemConnectivityMng;
40class IItemConnectivity;
41class IExtraGhostItemsBuilder;
42class IIncrementalItemConnectivity;
43class IItemFamilyPolicyMng;
44class IItemFamilyTopologyModifier;
45class ItemInternalConnectivityList;
46class Properties;
47
48namespace mesh
49{
50 class ItemDataList;
51 class DynamicMesh;
52 class ItemFamily;
53}
54
55/*---------------------------------------------------------------------------*/
56/*---------------------------------------------------------------------------*/
110class ARCANE_CORE_EXPORT IItemFamily
111{
112 friend class mesh::DynamicMesh;
113 friend class mesh::ItemFamily;
114
115 public:
116
117 virtual ~IItemFamily() {} //<! Libère les ressources
118
119 public:
120
121 virtual void build() =0;
122
123 public:
124
126 virtual String name() const =0;
127
129 virtual String fullName() const =0;
130
132 virtual eItemKind itemKind() const =0;
133
135 virtual Integer nbItem() const =0;
136
142 virtual Int32 maxLocalId() const =0;
143
144 public:
145
146 // TODO: a supprimer. Utiliser itemInfoListView à la place
149
150 public:
151
154
161 virtual IItemFamily* parentFamily() const = 0;
162
172 virtual void setParentFamily(IItemFamily* parent) = 0;
173
175 virtual Integer parentFamilyDepth() const = 0;
176
185 virtual void addChildFamily(IItemFamily* family) = 0;
186
189
197
199 virtual void checkValid() =0;
200
205 virtual void checkValidConnectivity() =0;
206
218
219 public:
220
231
235 virtual ItemVectorView view() =0;
236
244 virtual void removeItems2(mesh::ItemDataList& item_data_list) =0;
245
259
267 ARCANE_DEPRECATED_REASON("Use MeshUtils::findOneItem() instead")
268 virtual ItemInternal* findOneItem(Int64 unique_id) =0;
269
276 virtual void endUpdate() =0;
277
291 virtual void partialEndUpdate() =0;
292
302 virtual void partialEndUpdateGroup(const ItemGroup& group) =0;
303
313 virtual void partialEndUpdateVariable(IVariable* variable) =0;
314
316 virtual void notifyItemsOwnerChanged() =0;
317
319 virtual void notifyItemsUniqueIdChanged() =0;
320
321 public:
322
324 virtual IItemConnectivityInfo* localConnectivityInfos() const =0;
325
327 virtual IItemConnectivityInfo* globalConnectivityInfos() const =0;
328
329 public:
330
344 virtual void setHasUniqueIdMap(bool v) =0;
345
347 virtual bool hasUniqueIdMap() const =0;
348
349 public:
350
367 virtual void itemsUniqueIdToLocalId(Int32ArrayView local_ids,
369 bool do_fatal=true) const =0;
370
385 virtual void itemsUniqueIdToLocalId(Int32ArrayView local_ids,
387 bool do_fatal=true) const =0;
388
389 public:
390
401 virtual void setItemSortFunction(IItemInternalSortFunction* sort_function) =0;
402
410 virtual IItemInternalSortFunction* itemSortFunction() const =0;
411
412 public:
413
415 ARCCORE_DEPRECATED_2020("Do not use this method. Try to get 'ISubDomain' from another way")
416 virtual ISubDomain* subDomain() const =0;
417
419 virtual ITraceMng* traceMng() const =0;
420
422 virtual IMesh* mesh() const =0;
423
425 virtual IParallelMng* parallelMng() const =0;
426
427 public:
428
430 virtual ItemGroup allItems() const =0;
431
433 virtual ItemGroupCollection groups() const =0;
434
435 public:
436
438
439
444 virtual ItemGroup findGroup(const String& name) const =0;
445
455 virtual ItemGroup findGroup(const String& name,bool create_if_needed) =0;
456
457
469
478 virtual ItemGroup createGroup(const String& name) =0;
479
483 virtual void destroyGroups() =0;
484
489 virtual ItemGroup createGroup(const String& name,const ItemGroup& parent,bool do_override=false) =0;
490
492
499 virtual IVariable* findVariable(const String& name,bool throw_exception=false) =0;
500
505 virtual void usedVariables(VariableCollection collection) =0;
506
507 public:
508
510 virtual void prepareForDump() =0;
511
513 virtual void readFromDump() =0;
514
522 virtual void copyItemsValues(Int32ConstArrayView source, Int32ConstArrayView destination) =0;
523
533 virtual void copyItemsMeanValues(Int32ConstArrayView first_source,
535 Int32ConstArrayView destination) = 0;
536
543 virtual void clearItems() =0;
544
546 virtual void compactItems(bool do_sort) =0;
547
548 public:
549
559 virtual void computeSynchronizeInfos() =0;
560
562 virtual void getCommunicatingSubDomains(Int32Array& sub_domains) const =0;
563
565
566
568 virtual IVariableSynchronizer* allItemsSynchronizer() =0;
569
576 virtual void synchronize(VariableCollection variables) =0;
577
578 // TODO: à rendre virtuelle pure (décembre 2024)
589 virtual void synchronize(VariableCollection variables, Int32ConstArrayView local_ids);
591
601 virtual void reduceFromGhostItems(IVariable* v,IDataOperation* operation) =0;
611 virtual void reduceFromGhostItems(IVariable* v,Parallel::eReduceType operation) =0;
612
627 virtual ItemPairGroup findAdjencyItems(const ItemGroup& group,
628 const ItemGroup& sub_group,
630 Integer nb_layer) =0;
631
639 virtual IParticleFamily* toParticleFamily() =0;
640
648 virtual IDoFFamily* toDoFFamily() { return nullptr; }
649
658
659
671 virtual void addSourceConnectivity(IItemConnectivity* connectivity) =0;
672 virtual void addTargetConnectivity(IItemConnectivity* connectivity) =0;
673 virtual void removeSourceConnectivity(IItemConnectivity* connectivity) =0;
674 virtual void removeTargetConnectivity(IItemConnectivity* connectivity) =0;
675 virtual void setConnectivityMng(IItemConnectivityMng* connectivity_mng) =0;
677
694
695 public:
696
699
701 virtual Properties* properties() =0;
702
703 public:
704
710 virtual void resizeVariables(bool force_resize) = 0;
711
712 public:
713
716
717 public:
718
721};
722
723/*---------------------------------------------------------------------------*/
724/*---------------------------------------------------------------------------*/
725
726} // End namespace Arcane
727
728/*---------------------------------------------------------------------------*/
729/*---------------------------------------------------------------------------*/
730
731#endif
Tableau d'items de types quelconques.
Interface d'une opération sur une donnée.
Interface d'une famille de DoF.
Definition IDoFFamily.h:33
Interface des informations sur la connectivité par type d'entité.
Interface pour gérer une connectivité.
Partie interne de IItemFamily.
Interface des politiques d'une famille d'entités.
Interface de modification de la topologie des entités d'une famille.
Interface d'une famille d'entités.
virtual void removeNeedRemoveMarkedItems()=0
Supprime des entités et met a jour les connectivites.
virtual Integer parentFamilyDepth() const =0
Donne la profondeur d'imbrication du maillage courant.
virtual IItemFamilyTopologyModifier * _topologyModifier()=0
Interface du modificateur de topologie.
virtual void checkUniqueIds(Int64ConstArrayView unique_ids)=0
Vérifie que les identifiants unique_ids sont bien uniques pour tous les sous-domaines.
virtual IItemFamilyPolicyMng * policyMng()=0
Interface des comportements/politiques associées à cette famille.
virtual void setParentFamily(IItemFamily *parent)=0
Positionne l'IItemFamily parent.
virtual ItemInternalArrayView itemsInternal()=0
Tableau interne des entités.
virtual Int32 maxLocalId() const =0
virtual void checkValid()=0
Vérification de la validité des structures internes (interne)
virtual IItemFamilyCollection childFamilies()=0
Familles enfantes de cette famille.
virtual String name() const =0
Nom de la famille.
virtual ItemInfoListView itemInfoListView()=0
Vue sur la liste d'informations sur les entités.
virtual IItemFamily * parentFamily() const =0
IItemFamily parent.
virtual eItemKind itemKind() const =0
Genre des entités.
virtual void checkValidConnectivity()=0
Vérification de la validité des structures internes concernant la connectivité.
virtual String fullName() const =0
Nom complet de la famille (avec celui du maillage)
virtual ItemVectorView view(Int32ConstArrayView local_ids)=0
Vue sur les entités.
virtual IItemFamilyInternal * _internalApi()=0
API interne à Arcane.
virtual void addChildFamily(IItemFamily *family)=0
Ajoute d'une famile en dépendance.
virtual void removeItems2(mesh::ItemDataList &item_data_list)=0
Supprime des entités.
virtual void resizeVariables(bool force_resize)=0
Redimensionne les variables de cette famille.
virtual Properties * properties()=0
Propriétés associées à cette famille.
virtual void internalRemoveItems(Int32ConstArrayView local_ids, bool keep_ghost=false)=0
Supprime les entités donnés par local_ids.
virtual Integer nbItem() const =0
Nombre d'entités.
virtual VariableItemInt32 & itemsNewOwner()=0
Variable contenant le numéro du nouveau sous-domaine propriétaire de l'entité.
virtual void addGhostItems(Int64ConstArrayView unique_ids, Int32ArrayView items, Int32ConstArrayView owners)=0
Alloue des entités fantômes.
virtual ItemVectorView view()=0
Vue sur toutes les entités de la famille.
Interface d'une fonction de tri des entités.
Interface du gestionnaire de parallélisme pour un sous-domaine.
Interface d'une famille de particules.
Interface du gestionnaire d'un sous-domaine.
Definition ISubDomain.h:74
Interface d'un service de synchronisation de variable.
Interface d'une variable.
Definition IVariable.h:54
Groupe d'entités de maillage.
Definition ItemGroup.h:49
Vue sur une liste pour obtenir des informations sur les entités.
Structure interne d'une entité de maillage.
Tableau de listes 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.
Definition Lima.cc:120
Liste de propriétés.
Definition Properties.h:64
Collection de variables.
Implémentation d'un maillage.
Definition DynamicMesh.h:97
Famille d'entités.
Definition ItemFamily.h:76
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Interface du gestionnaire de traces.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.
eReduceType
Types des réductions supportées.