14#include "arcane/utils/ITraceMng.h"
15#include "arcane/utils/FatalErrorException.h"
17#include "arcane/Item.h"
18#include "arcane/ItemGroupComputeFunctor.h"
19#include "arcane/ItemGroupImpl.h"
20#include "arcane/ItemGroup.h"
21#include "arcane/IMesh.h"
22#include "arcane/IItemFamily.h"
23#include "arcane/Properties.h"
46 items_lid.
add(iitem.itemLocalId());
51 trace->
debug() <<
"OwnItemGroupComputeFunctor::execute()"
52 <<
" this=" << m_group
53 <<
" parent_name=" << parent.
name()
54 <<
" name=" << m_group->
name()
55 <<
" parent_count=" << parent.
size()
56 <<
" mysize=" << m_group->
size();
73 items_lid.
add(iitem.itemLocalId());
79 trace->
debug() <<
"GhostItemGroupComputeFunctor::execute()"
80 <<
" this=" << m_group
81 <<
" parent_name=" << parent.
name()
82 <<
" name=" << m_group->
name()
83 <<
" parent_count=" << parent.
size()
84 <<
" mysize=" << m_group->
size();
98 trace->
fatal() <<
"InterfaceGroupComputeFunctor::executeFunctor()"
99 <<
" Incoherent family expected=" <<
IK_Face <<
" current=" << family->
itemKind();
110 if ( !bcell.
null() && !fcell.
null() ) {
111 const bool isBackOwn = bcell.
isOwn();
112 const bool isFrontOwn = fcell.
isOwn();
113 if ( isBackOwn != isFrontOwn ) {
122 trace->
debug() <<
"InterfaceItemGroupComputeFunctor::execute()"
123 <<
" this=" << m_group
124 <<
" parent_name=" << parent.
name()
125 <<
" name=" << m_group->
name()
126 <<
" parent_count=" << parent.
size()
127 <<
" mysize=" << m_group->
size();
137template<
typename ItemType>
void
141 IMesh* mesh = m_group->mesh();
142 ITraceMng* trace = m_group->mesh()->traceMng();
148 ARCANE_FATAL(
"Incoherent family wanted={0} current={1} v={2}",
149 ik,family->
itemKind(),m_group->itemKind());
152 m_group->beginTransaction();
156 ItemType* null_type = 0;
159 for(
ItemEnumerator iitem2(i.itemList(null_type)); iitem2.hasNext(); ++iitem2 ){
160 Int32 lid = iitem2.localId();
161 if (markers[lid]==0){
169 m_group->setItems(items_lid,do_sort);
170 m_group->endTransaction();
172 trace->
debug() <<
"ItemItemGroupComputeFunctor::execute()"
173 <<
" this=" << m_group
174 <<
" parent_name=" << parent.
name()
175 <<
" name=" << m_group->name()
176 <<
" parent_count=" << parent.
size()
177 <<
" mysize=" << m_group->size()
178 <<
" mysize2=" << items_lid.
size();
196 const Face& face = *iface;
205 markers[icell.localId()] =
true;
220 trace->
debug() <<
"InnerFaceItemGroupComputeFunctor::execute()"
221 <<
" this=" << m_group
222 <<
" parent_name=" << parent.
name()
223 <<
" name=" << m_group->
name()
224 <<
" parent_count=" << parent.
size()
225 <<
" mysize=" << m_group->
size();
243 const Face& face = *iface;
252 markers[icell.localId()] =
true;
267 trace->
debug() <<
"OuterFaceItemGroupComputeFunctor::execute()"
268 <<
" this=" << m_group
269 <<
" parent_name=" << parent.
name()
270 <<
" name=" << m_group->
name()
271 <<
" parent_count=" << parent.
size()
272 <<
" mysize=" << m_group->
size();
286 trace->
fatal() <<
"AllActiveCellGroupComputeFunctor::executeFunctor()"
287 <<
" Incoherent family expected=" <<
IK_Cell <<
" current=" << family->
itemKind();
300 trace->
debug() <<
"AllActiveCellGroupComputeFunctor::execute()"
301 <<
" this=" << m_group
302 <<
" parent_name=" << parent.
name()
303 <<
" name=" << m_group->
name()
304 <<
" parent_count=" << parent.
size()
305 <<
" mysize=" << m_group->
size();
319 trace->
fatal() <<
"OwnActiveCellGroupComputeFunctor::executeFunctor()"
320 <<
" Incoherent family expected=" <<
IK_Cell <<
" current=" << family->
itemKind();
334 trace->
debug() <<
"OwnActiveCellGroupComputeFunctor::execute()"
335 <<
" this=" << m_group
336 <<
" parent_name=" << parent.
name()
337 <<
" name=" << m_group->
name()
338 <<
" parent_count=" << parent.
size()
339 <<
" mysize=" << m_group->
size();
353 trace->
fatal() <<
"LevelCellGroupComputeFunctor::executeFunctor()"
354 <<
" Incoherent family expected=" <<
IK_Cell <<
" current=" << family->
itemKind();
362 if(item.
level() == m_level)
368 trace->
debug() <<
"LevelCellGroupComputeFunctor::execute()"
369 <<
" this=" << m_group
370 <<
" parent_name=" << parent.
name()
371 <<
" name=" << m_group->
name()
372 <<
" parent_count=" << parent.
size()
373 <<
" mysize=" << m_group->
size();
389 trace->
fatal() <<
"LevelCellGroupComputeFunctor::executeFunctor()"
390 <<
" Incoherent family expected=" <<
IK_Cell <<
" current=" << family->
itemKind();
394 if (item.
isOwn() && (item.
level() == m_level))
400 trace->
debug() <<
"OwnLevelItemGroupComputeFunctor::execute()"
401 <<
" this=" << m_group
402 <<
" parent_name=" << parent.
name()
403 <<
" name=" << m_group->
name()
404 <<
" parent_count=" << parent.
size()
405 <<
" mysize=" << m_group->
size();
445 markers[icell.localId()] =
true;
448 const Face & face = *iface;
458 trace->
debug() <<
"NUMBER OF ALL FACES= " << counter
459 <<
"\n NUNMBER OF BOUNDARY FACES= " << counter_0
460 <<
"\n NUMBER OF ACTIVE BOUNDARY FACES= " << counter_1
461 <<
"\n NUMBER OF ACTIVE INTERIOR FACES= " << counter_2 <<
"\n";
465 trace->
debug() <<
"ActiveFaceItemGroupComputeFunctor::execute()"
466 <<
" this=" << m_group
467 <<
" parent_name=" << parent.
name()
468 <<
" name=" << m_group->
name()
469 <<
" parent_count=" << parent.
size()
470 <<
" mysize=" << m_group->
size();
488 const Face& face = *iface;
501 markers[icell.localId()] =
true;
504 const Face & face = *iface;
509 else if (face.
isOwn() &&
519 trace->
debug() <<
"OwnActiveFaceItemGroupComputeFunctor::execute()"
520 <<
" this=" << m_group
521 <<
" parent_name=" << parent.
name()
522 <<
" name=" << m_group->
name()
523 <<
" parent_count=" << parent.
size()
524 <<
" mysize=" << m_group->
size();
554 markers[icell.localId()] =
true;
572 trace->
debug() <<
"InnerActiveFaceItemGroupComputeFunctor::execute()"
573 <<
" this=" << m_group
574 <<
" parent_name=" << parent.
name()
575 <<
" name=" << m_group->
name()
576 <<
" parent_count=" << parent.
size()
577 <<
" mysize=" << m_group->
size();
595 const Face& face = *iface;
604 markers[icell.localId()] =
true;
619 trace->
debug() <<
"OuterActiveFaceItemGroupComputeFunctor::execute()"
620 <<
" this=" << m_group
621 <<
" parent_name=" << parent.
name()
622 <<
" name=" << m_group->
name()
623 <<
" parent_count=" << parent.
size()
624 <<
" mysize=" << m_group->
size();
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Exécute la méthode associé
Cell frontCell() const
Maille devant la face (maille nulle si aucune)
bool isSubDomainBoundary() const
Indique si la face est au bord du sous-domaine (i.e nbCell()==1)
Cell boundaryCell() const
Maille associée à cette face frontière (maille nulle si aucune)
Cell backCell() const
Maille derrière la face (maille nulle si aucune)
void executeFunctor() override
Exécute la méthode associé
Interface d'une famille d'entités.
virtual ItemGroup allItems() const =0
Groupe de toutes les entités.
virtual Int32 maxLocalId() const =0
virtual eItemKind itemKind() const =0
Genre des entités.
virtual ITraceMng * traceMng()=0
Gestionnaire de message associé
virtual Properties * properties()=0
Propriétés associées à ce maillage.
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Exécute la méthode associé
Classe de base pour les entités du maillage.
void setItems(Int32ConstArrayView items_local_id)
Positionne les entités du groupe à items_local_id.
void endTransaction()
Termine une transaction.
ItemGroupImpl * parent() const
Groupe parent (0 si aucun)
IMesh * mesh() const
Maillage auquel appartient le groupe (0 pour le groupe nul).
Integer size() const
Nombre d'entités du groupe.
IItemFamily * itemFamily() const
Familly à laquelle appartient le groupe (ou 0 si aucune)
void beginTransaction()
Débute une transaction.
const String & name() const
Nom du groupe.
Groupe d'entités de maillage.
const String & name() const
Nom du groupe.
Integer size() const
Nombre d'éléments du groupe.
IItemFamily * itemFamily() const
Famille d'entité à laquelle appartient ce groupe (0 pour le group nul)
bool isAllItems() const
Indique si le groupe est celui de toutes les entités.
void executeFunctor() override
Fonctor pour calculer un groupe contenant les entités connectées aux entités du groupe parent.
static eItemKind kind()
Genre de l'entité
Classe de base d'un élément de maillage.
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
bool isOwn() const
true si l'entité est appartient au sous-domaine
constexpr bool null() const
true si l'entité est nul (i.e. non connecté au maillage)
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Exécute la méthode associé
void executeFunctor() override
Calcul des entités propres du groupe.
void executeFunctor() override
Exécute la méthode associé
bool getBoolWithDefault(const String &name, bool default_value) const
Valeur de la propriété de nom name.
Integer size() const
Nombre d'éléments du vecteur.
void fill(ConstReferenceType value)
Remplit le tableau avec la valeur value.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Interface du gestionnaire de traces.
virtual TraceMessageDbg debug(Trace::eDebugLevel=Trace::Medium)=0
Flot pour un message de debug.
virtual TraceMessage fatal()=0
Flot pour un message d'erreur fatale.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eItemKind
Genre d'entité de maillage.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Face
Entité de maillage de genre face.