14#include "arcane/utils/Array.h"
15#include "arcane/utils/FatalErrorException.h"
16#include "arcane/utils/NotImplementedException.h"
17#include "arcane/utils/TraceInfo.h"
19#include "arcane/IMesh.h"
20#include "arcane/Item.h"
21#include "arcane/ItemEnumerator.h"
22#include "arcane/ItemTypes.h"
23#include "arcane/IItemFamily.h"
24#include "arcane/MeshToMeshTransposer.h"
59 iKind = iKind - dimB + dimA;
62 if (iKind < 0 || iKind > 3)
79 ARCANE_ASSERT((meshA!=NULL && meshB!=NULL),(
"Bad NULL mesh"));
82 if (itemsA.
size() == 0)
87 eItemKind kindB = kindTranspose(kindA,meshA,meshB);
90 return _transpose(familyA,familyB,itemsA,do_fatal);
99 ARCANE_ASSERT((familyA!=NULL && familyB!=NULL),(
"Bad NULL mesh"));
102 if (itemsA.
size() == 0)
105 return _transpose(familyA,familyB,itemsA,do_fatal);
119 if (parent_familyA == familyB) {
123 const Item & item = *iitem;
126 return ItemVector(familyB,lidsB);
128 else if (parent_familyB == familyA) {
130 if (kindB==IK_Node || kindB==IK_Face || kindB==IK_Edge || kindB==IK_Cell ) {
133 UniqueArray<Int64> uidsA(itemsA.
size());
135 uidsA[iitem.index()] = iitem->uniqueId();
137 UniqueArray<Int32> lidsB(uidsA.size());
139 return ItemVector(familyB,lidsB);
142 throw NotImplementedException(A_FUNCINFO,
"Cannot only transpose item to cell or node");
144 }
else if (familyA == familyB) {
146 return ItemVector(familyB,itemsA.
localIds());
148 throw NotImplementedException(A_FUNCINFO,String::format(
"Cannot transpose between families {0}::{1} and {2}::{3}",familyA->
mesh()->
name(),familyA->
name(),familyA->
mesh()->
name(),familyB->
name()));
Interface d'une famille d'entités.
virtual String name() const =0
Nom de la famille.
virtual IItemFamily * parentFamily() const =0
IItemFamily parent.
virtual eItemKind itemKind() const =0
Genre des entités.
virtual IMesh * mesh() const =0
Maillage associé
virtual void itemsUniqueIdToLocalId(Int32ArrayView local_ids, Int64ConstArrayView unique_ids, bool do_fatal=true) const =0
Converti un tableau de numéros uniques en numéros locaux.
virtual String name() const =0
Nom du maillage.
virtual IItemFamily * itemFamily(eItemKind ik)=0
Retourne la famille d'entité de type ik.
virtual Integer dimension()=0
Dimension du maillage (1D, 2D ou 3D).
Vue sur un vecteur d'entités.
Int32 size() const
Nombre d'éléments du vecteur.
Int32ConstArrayView localIds() const
Tableau des numéros locaux des entités.
Classe de base d'un élément de maillage.
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Item parent(Int32 i) const
i-ème parent pour les sous-maillages
Exception lorsqu'une erreur fatale est survenue.
Vecteur 1D de données avec sémantique par valeur (style STL).
eItemKind
Genre d'entité de maillage.
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Face
Entité de maillage de genre face.
@ IK_Edge
Entité de maillage de genre arête.