Arcane  v3.16.3.0
Documentation utilisateur
Tout Classes Espaces de nommage Fichiers Fonctions Variables Définitions de type Énumérations Valeurs énumérées Amis Macros Groupes Pages Concepts
Exemple n°2

Cet exemple 2 est identique à l'exemple 1, sans l'utilisation de singletons.

Fichier .axl – Partie <options>

Pour commencer, voici les options du fichier axl :

SimpleTableComparatorExample2.axl

1 <options>
2 <service-instance name="st-output" type="Arcane::ISimpleTableOutput">
3 <description>ST Output</description>
4 </service-instance>
5 <service-instance name="st-comparator" type="Arcane::ISimpleTableComparator">
6 <description>ST Comparator</description>
7 </service-instance>
8 </options>

On peut constater la présence des deux services.

Fichier .arc – Partie option du module

Voici le .arc correspondant :

SimpleTableComparatorExample2.arc

1 <simple-table-comparator-example2>
2 <st-output name="SimpleCsvOutput">
3 <tableDir>example2</tableDir>
4 <tableName>Results_Example2</tableName>
5 </st-output>
6
7 <st-comparator name="SimpleCsvComparator">
8 </st-comparator>
9 </simple-table-comparator-example2>

Ce que l'on peut voir ici est que le comparator n'a pas d'option.

Point d'entrée initial

Voici le point d'entrée start-init :

SimpleTableComparatorExample2Module.cc

1void SimpleTableComparatorExample2Module::
2initModule()
3{
4 srand(1234);
5 options()->stOutput()->init();
6}

Point d'entrée loop

Le point d'entrée compute-loop :

SimpleTableComparatorExample2Module.cc

1void SimpleTableComparatorExample2Module::
2loopModule()
3{
4 options()->stOutput()->addColumn("Iteration " + String::fromNumber(m_global_iteration()));
5
6 Integer nb_fissions = rand()%99;
7 Integer nb_collisions = rand()%99;
8
9 options()->stOutput()->addElementInRow("Nb de Fissions", nb_fissions);
10 options()->stOutput()->addElementInRow("Nb de Collisions", nb_collisions);
11
12 if (m_global_iteration() == 3)
13 subDomain()->timeLoopMng()->stopComputeLoop(true);
14}

Point d'entrée exit

Enfin, voici le point d'entrée exit :

SimpleTableComparatorExample2Module.cc

1void SimpleTableComparatorExample2Module::
2endModule()
3{
4 options()->stComparator()->init(options()->stOutput());
5
6 if(!options()->stComparator()->isReferenceExist()){
7 info() << "Écriture du fichier de référence";
8 options()->stComparator()->writeReferenceFile();
9 }
10
11 else {
12 if(options()->stComparator()->compareWithReference()){
13 info() << "Mêmes valeurs !!!";
14 }
15
16 else{
17 error() << "Valeurs différentes :(";
18 IArcaneMain::arcaneMain()->setErrorCode(1);
19 }
20 }
21
22 options()->stOutput()->writeFile();
23}

Pas de surprises, c'est la même utilisation.