Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Référence du fichier ItemLoop.h

Types et macros pour gérer les boucles sur les entités du maillage. Plus de détails...

#include "arcane/ItemEnumerator.h"
+ Graphe des dépendances par inclusion de ItemLoop.h:

Aller au code source de ce fichier.

Classes

class  Arcane::Loop::ItemLoopFunctor< ItemType >
 Classe template pour encapsuler une boucle sur les entités. Plus de détails...
 

Espaces de nommage

namespace  Arcane
 -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
 
namespace  Arcane::Loop
 Espace de nom contenant les différentes classes gérant les boucles sur les entités.
 

Macros

#define ENUMERATE_ITEM_LAMBDA(item_type, iter, container)    Arcane::Loop:: ItemLoopFunctor ## item_type :: create ( (container) ) << [=]( Arcane::Loop:: ItemLoopFunctor ## item_type :: IterType iter)
 Enumérateur sur une entité via une fonction lambda.
 

Définitions de type

typedef ItemLoopFunctor< CellArcane::Loop::ItemLoopFunctorCell
 
typedef ItemLoopFunctor< NodeArcane::Loop::ItemLoopFunctorNode
 

Fonctions

template<typename IterType , typename Lambda >
void Arcane::Loop::_InternalSimpleItemLoop (ItemVectorView view, const Lambda &lambda)
 Fonctor de boucle d'entité permettant de supprimer les indirections si les indices locaux de view sont consécutifs.
 

Description détaillée

Types et macros pour gérer les boucles sur les entités du maillage.

Définition dans le fichier ItemLoop.h.

Documentation des macros

◆ ENUMERATE_ITEM_LAMBDA

#define ENUMERATE_ITEM_LAMBDA (   item_type,
  iter,
  container 
)     Arcane::Loop:: ItemLoopFunctor ## item_type :: create ( (container) ) << [=]( Arcane::Loop:: ItemLoopFunctor ## item_type :: IterType iter)

Enumérateur sur une entité via une fonction lambda.

Paramètres
item_typetype de l'entité (Arcane::Node, Arcane::Cell, Arcane::Edge, ....)
iternom de l'itérateur
containerconteneur associé (de type Arcane::ItemGroup ou Arcane::ItemVectorView).

Cette macro génère une lambda et il faut donc terminer l'expression par un ';'.

Par exemple, pour itérer sur toutes les mailles:

Real gamma = 1.4;
ENUMERATE_ITEM_LAMBDA(Cell,icell,allCells()){
Real pressure = pressure[icell];
Real adiabatic_cst = adiabatic_cst[icell];
Real density = density[icell];
internal_energy[icell] = pressure / ((gamma-1.0) * density);
};
#define ENUMERATE_ITEM_LAMBDA(item_type, iter, container)
Enumérateur sur une entité via une fonction lambda.
Definition ItemLoop.h:131
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120

L'itérateur est de type item_type :: Index (par exemple Cell::Index pour une maille). Il ne dispose donc pas des méthodes classiques sur les entités (comme par exemple Arcane::Cell::nbNode()). L'itérateur permet uniquement d'accéder aux valeurs des variables.

La lambda est déclarée avec [=] et il est donc interdit de modifier les variables capturées.

Avertissement
La syntaxe et la sémantique de cette macro sont expérimentales. Cette macro ne doit être utilisée que pour des tests.

Définition à la ligne 131 du fichier ItemLoop.h.