Arcane  v3.14.10.0
Documentation utilisateur
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)
 

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

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.