14#include "arcane/utils/OStringStream.h"
16#include "arcane/core/BasicUnitTest.h"
17#include "arcane/core/ItemPrinter.h"
18#include "arcane/core/IMesh.h"
20#include "arcane/accelerator/core/IAcceleratorMng.h"
21#include "arcane/accelerator/core/RunQueue.h"
23#if defined(ARCANE_HAS_ACCELERATOR_API)
25#include "arcane/accelerator/MaterialVariableViews.h"
29#include "arcane/materials/IMeshMaterialMng.h"
30#include "arcane/materials/MeshMaterialInfo.h"
31#include "arcane/materials/MeshEnvironmentBuildInfo.h"
32#include "arcane/materials/MeshMaterialModifier.h"
33#include "arcane/materials/MatItemEnumerator.h"
34#include "arcane/materials/MeshMaterialVariableRef.h"
35#include "arcane/materials/MaterialVariableBuildInfo.h"
36#include "arcane/materials/MeshMaterialVariableSynchronizerList.h"
38#include "arcane/tests/ArcaneTestGlobal.h"
39#include "arcane/tests/MeshMaterialSyncUnitTest_axl.h"
59:
public ArcaneMeshMaterialSyncUnitTestObject
67 void initializeTest()
override;
68 void executeTest()
override;
77 void _checkVariableSync1();
83#if defined(ARCANE_HAS_ACCELERATOR_API)
91MeshMaterialSyncUnitTest::
93: ArcaneMeshMaterialSyncUnitTestObject(
sbi)
107void MeshMaterialSyncUnitTest::
111 Integer
nb_mat = options()->nbMaterial();
112 info() <<
"Number of wanted materials: " <<
nb_mat;
115 for( Integer i=0; i<
nb_mat; ++i ){
150 mm->endCreate(
false);
157void MeshMaterialSyncUnitTest::
165 info() <<
ostr.str();
174void MeshMaterialSyncUnitTest::
203 info() <<
"Adding cells n=" << ids.size() <<
" to mat " <<
imat <<
" (min_uid="
211 _checkVariableSync1();
217void MeshMaterialSyncUnitTest::
220 info() <<
"Begin phase2";
252 info() <<
"Adding cells n=" <<
add_ids.size() <<
" to mat " <<
imat <<
" (min_uid="
254 info() <<
"Removing cells n=" <<
remove_ids.size() <<
" to mat " <<
imat <<
" (min_uid="
264 _checkVariableSync1();
265 m_variable_is_own_cell.fill(0);
267 m_variable_is_own_cell[
icell] = 1;
271 m_cell_unique_ids[cell] = cell.
uniqueId();
274#if defined(ARCANE_HAS_ACCELERATOR_API)
275 for(
int i=0; i<10; ++i )
284void MeshMaterialSyncUnitTest::
311 error() <<
"VariableSync error mat=" <<
mc.materialId()
325#if defined(ARCANE_HAS_ACCELERATOR_API)
326void MeshMaterialSyncUnitTest::
355 vlist.beginSynchronize();
356 vlist.endSynchronize();
373 error() <<
"VariableSync error mat=" <<
mc
374 <<
" uid_value=" << m_material_uids[
mc]
387ARCANE_REGISTER_SERVICE_MESHMATERIALSYNCUNITTEST(MeshMaterialSyncUnitTest,
388 MeshMaterialSyncUnitTest);
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Types et macros pour gérer les énumérations des matériaux et milieux sur les accélérateurs.
#define RUNCOMMAND_MAT_ENUMERATE(MatItemNameType, iter_name, env_or_mat_vector,...)
Macro pour itérer sur un matériau ou un milieu.
Module de test pour la gestion des matériaux et des milieux.
File d'exécution pour un accélérateur.
Classe utilitaire pour imprimer les infos sur une entité.
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
ItemUniqueId uniqueId() const
Identifiant unique sur tous les domaines.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Maille arcane avec info matériaux et milieux.
Maille arcane d'un milieu.
Vue sur un vecteur sur les entités d'un milieu.
Interface d'un milieu d'un maillage.
Interface du gestionnaire des matériaux et des milieux d'un maillage.
virtual void dumpInfos(std::ostream &o)=0
Ecrit les infos des matériaux et milieux sur le flot o.
virtual void checkMaterialsInCells(Integer max_print=10)=0
Vérifie que les mailles des matériaux sont cohérentes entre les sous-domaines.
virtual Integer synchronizeVariableVersion() const =0
Version de l'implémentation pour la synchronisation des variables matériaux.
virtual bool synchronizeMaterialsInCells()=0
Synchronise les mailles des matériaux.
Interface d'un matériau d'un maillage.
Représente un matériau d'une maille multi-matériau.
Informations pour la création d'un milieu.
Objet permettant de modifier les matériaux ou les milieux.
void synchronize()
Synchronise les valeurs entre les sous-domaines.
Synchronisation d'une liste de variables matériaux.
Flot de sortie lié à une String.
Structure contenant les informations pour créer un service.
Paramètres nécessaires à la construction d'une variable.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
Espace de nom pour l'utilisation des accélérateurs.
RunCommand makeCommand(const RunQueue &run_queue)
Créé une commande associée à la file run_queue.
auto viewIn(RunCommand &cmd, const CellMaterialVariableScalarRef< DataType > &var)
Vue en lecture pour les variables materiaux scalaire.
auto viewOut(RunCommand &cmd, CellMaterialVariableScalarRef< DataType > &var)
Vue en écriture pour les variables materiaux scalaire.
Active toujours les traces dans les parties Arcane concernant les matériaux.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.