Arcane  v3.14.11.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
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

<options>
<service-instance name="st-output" type="Arcane::ISimpleTableOutput">
<description>ST Output</description>
</service-instance>
<service-instance name="st-comparator" type="Arcane::ISimpleTableComparator">
<description>ST Comparator</description>
</service-instance>
</options>

On peut constater la présence des deux services.

Fichier .arc – Partie option du module

Voici le .arc correspondant :

SimpleTableComparatorExample2.arc

<simple-table-comparator-example2>
<st-output name="SimpleCsvOutput">
<tableDir>example2</tableDir>
<tableName>Results_Example2</tableName>
</st-output>
<st-comparator name="SimpleCsvComparator">
</st-comparator>
</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

void SimpleTableComparatorExample2Module::
initModule()
{
srand(1234);
options()->stOutput()->init();
}

Point d'entrée loop

Le point d'entrée compute-loop :

SimpleTableComparatorExample2Module.cc

void SimpleTableComparatorExample2Module::
loopModule()
{
options()->stOutput()->addColumn("Iteration " + String::fromNumber(m_global_iteration()));
Integer nb_fissions = rand()%99;
Integer nb_collisions = rand()%99;
options()->stOutput()->addElementInRow("Nb de Fissions", nb_fissions);
options()->stOutput()->addElementInRow("Nb de Collisions", nb_collisions);
if (m_global_iteration() == 3)
subDomain()->timeLoopMng()->stopComputeLoop(true);
}

Point d'entrée exit

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

SimpleTableComparatorExample2Module.cc

void SimpleTableComparatorExample2Module::
endModule()
{
options()->stComparator()->init(options()->stOutput());
if(!options()->stComparator()->isReferenceExist()){
info() << "Écriture du fichier de référence";
options()->stComparator()->writeReferenceFile();
}
else {
if(options()->stComparator()->compareWithReference()){
info() << "Mêmes valeurs !!!";
}
else{
error() << "Valeurs différentes :(";
IArcaneMain::arcaneMain()->setErrorCode(1);
}
}
options()->stOutput()->writeFile();
}

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