@@ -26,7 +26,7 @@ Un symbole est une chaîne de caractères entourée d'arrobases.
26
26
27
27
Exemple : ` @UneValeur@ `
28
28
29
- Si on met ce symbole dans un jeu de données, on aurait , par exemple :
29
+ Si on met ce symbole dans un jeu de données, on pourrait avoir , par exemple :
30
30
31
31
``` xml
32
32
<!-- Fichier ARC-->
@@ -165,8 +165,8 @@ de commande, le symbole est simplement remplacé par une chaîne de caractères
165
165
\warning Dans %Arcane, une différence est faite entre une option
166
166
vide ` <deltat-cp></deltat-cp> ` et une option absente du jeu de données. Dans
167
167
le premier cas, la valeur de l'option est ** vide** (` String("") ` )
168
- mais présente donc n'est pas remplacé par la valeur par défaut.
169
- Dans le second cas, la valeur de l'option est ** null** (` String() ` ) donc est remplacé
168
+ mais présente donc n'est pas remplacée par la valeur par défaut.
169
+ Dans le second cas, la valeur de l'option est ** null** (` String() ` ) donc est remplacée
170
170
par la valeur par défaut.
171
171
172
172
@@ -210,7 +210,7 @@ lancer l'application comme ceci :
210
210
dataset.arc
211
211
```
212
212
213
- Il est nécessaire d'avoir l'adresse de l'option. Pour la retrouver, il faut
213
+ Il est nécessaire d'avoir l'adresse (XPath) de l'option. Pour la retrouver, il faut
214
214
dérouler les éléments XML. Ici, l'option ` deltat-cp ` est à l'adresse :
215
215
` //case/simple-hydro/deltat-cp ` .
216
216
Ensuite, on retire le ` case/ ` au début (ou ` cas/ ` pour les jeux de données en français).
@@ -222,6 +222,12 @@ Comme pour le remplacement de symboles, on peut ajouter des guillemets :
222
222
223
223
` -A,//simple-hydro/simple-real-array="3.1 3.11 3.12" `
224
224
225
+ Dans le cas des attributs, ils sont désignés par un ` @ ` (pour l'attribut ` name ` , on
226
+ doit mettre ` @name ` dans l'adresse).
227
+ Si l'on souhaite modifier l'attribut ` name ` d'un service, on peut le faire comme ceci :
228
+
229
+ ` -A,//simple-hydro/post-processor/@name=VtkHdfV2PostProcessor `
230
+
225
231
### Les options multiples {#arcanedoc_execution_commandlineargs_addr_multi}
226
232
227
233
Mais un problème apparait assez vite : comment faire si on a des options multiples ?
@@ -250,7 +256,7 @@ Ainsi, pour les trois valeurs de `deltat-cp`, on les adresse comme ceci :
250
256
` //simple-hydro/deltat-cp[3] `
251
257
252
258
\warning Il n'y a pas d'erreur au niveau des indices. En XML, les indices commencent
253
- à 1, et non 0 !
259
+ à 1, et non 0.
254
260
255
261
On peut aussi les écrire comme ceci :
256
262
@@ -275,6 +281,84 @@ Ou bien :
275
281
dataset.arc
276
282
```
277
283
284
+ ### L'ajout d'options {#arcanedoc_execution_commandlineargs_addr_add_option}
285
+
286
+ Une chose que l'on peut faire aussi est d'ajouter des options.
287
+
288
+ Si l'on souhaite ajouter une quatrième option ` deltat-cp ` , il est possible d'ajouter l'argument :
289
+
290
+ ` -A,//simple-hydro/deltat-cp[4]=9.0 `
291
+
292
+ Il est aussi possible d'ajouter des options non présentes dans le jeu de données (mais présentes dans l'AXL) :
293
+
294
+ ``` xml
295
+ <!-- Fichier ARC-->
296
+ <?xml version =" 1.0" ?>
297
+ <case codename =" ArcaneTest" codeversion =" 1.0" >
298
+ <arcane />
299
+ <meshes />
300
+
301
+ <simple-hydro >
302
+ </simple-hydro >
303
+
304
+ </case >
305
+ ```
306
+
307
+ On pourrait ajouter les options via les arguments de la ligne de commande :
308
+
309
+ ``` sh
310
+ ./app \
311
+ -A,//simple-hydro/deltat-cp[1]=3.0 \
312
+ -A,//simple-hydro/deltat-cp[2]=6.0 \
313
+ -A,//simple-hydro/deltat-cp[3]=7.0 \
314
+ dataset.arc
315
+ ```
316
+
317
+ Ça fonctionne aussi pour les * options services* . Dans ce cas, il est nécessaire d'ajouter au moins l'attribut ` name ` :
318
+
319
+ ``` sh
320
+ ./app \
321
+ -A,//simple-hydro/post-processor/@name=VtkHdfV2PostProcessor \
322
+ dataset.arc
323
+ ```
324
+
325
+ Puis, on peut, par exemple, modifier les * options simples* de ce service ou l'attribut ` mesh-name ` :
326
+
327
+ ``` sh
328
+ ./app \
329
+ -A,//simple-hydro/post-processor/@name=VtkHdfV2PostProcessor \
330
+ -A,//simple-hydro/post-processor/@mesh-name=Mesh1 \
331
+ -A,//simple-hydro/post-processor/max-write-size=50 \
332
+ dataset.arc
333
+ ```
334
+
335
+ \warning Il n'est pas encore possible d'ajouter des * options complexes* .
336
+
337
+ #### Et si on commence à l'indice 2 ? {#arcanedoc_execution_commandlineargs_addr_add_option_default}
338
+
339
+ Si, au lieu de lancer notre application avec ces arguments :
340
+
341
+ ``` sh
342
+ ./app \
343
+ -A,//simple-hydro/deltat-cp[1]=3.0 \
344
+ -A,//simple-hydro/deltat-cp[2]=6.0 \
345
+ -A,//simple-hydro/deltat-cp[3]=7.0 \
346
+ dataset.arc
347
+ ```
348
+
349
+ on lançait ceci :
350
+
351
+ ``` sh
352
+ ./app \
353
+ -A,//simple-hydro/deltat-cp[2]=6.0 \
354
+ -A,//simple-hydro/deltat-cp[3]=7.0 \
355
+ dataset.arc
356
+ ```
357
+
358
+ Dans ce cas, l'option ` //simple-hydro/deltat-cp[1] ` , qui n'est ni présente dans le jeu de
359
+ données, ni présente dans les arguments de la ligne de commande, sera ajouté avec la valeur
360
+ par défaut.
361
+
278
362
### Les syntaxes spéciales {#arcanedoc_execution_commandlineargs_addr_multi_special_syntax}
279
363
280
364
#### L'indice ANY {#arcanedoc_execution_commandlineargs_addr_multi_special_syntax_index_any}
@@ -295,21 +379,25 @@ Exemple de lancement :
295
379
dataset.arc
296
380
```
297
381
298
- Et dans ce cas, les trois options ` simple-hydro/deltat-cp ` auront la valeur ` 2.0 ` .
382
+ Et dans ce cas, les trois options ` simple-hydro/deltat-cp ` auraient la valeur ` 2.0 ` .
299
383
384
+ #### La balise ANY {#arcanedoc_execution_commandlineargs_addr_multi_special_syntax_tag_any}
300
385
301
- #### Le tag ANY {#arcanedoc_execution_commandlineargs_addr_multi_special_syntax_tag_any}
386
+ La balise ANY permet de changer la valeur d'une option présente à plusieurs endroits.
387
+ Elle est représentée par une partie d'adresse vide (deux ` / ` sans rien entre)
388
+ (donc ` //module1/option1/option11 ` , si on veut remplacer ` option1 ` par ANY, on fait ` //module1//option11 ` ).
302
389
303
- Le tag ANY permet de traiter plusieurs options ayant des adresses différentes en une fois.
304
- Il est représenté par une partie d'adresse vide (donc ` //module1/option1/option11 ` ,
305
- si on veut remplacer ` option1 ` par ANY, on fait ` //module1//option11 ` ).
306
-
307
- \warning Le tag ANY ne remplace qu'une seule partie de l'adresse. Pour remplacer
390
+ \note La balise ANY ne remplace qu'une seule partie de l'adresse. Pour remplacer
308
391
plusieurs parties, il faut en mettre plusieurs. Reprenons l'exemple du dessus en
309
392
remplaçant ` module1 ` par ANY : ` ////option11 `
310
393
394
+ \todo Doit-on garder cette syntaxe ou préférer utiliser ` * ` ? (exemple : ` //*/*/option11 ` )
395
+ Le ` * ` pouvant prêter à confusion (ça pourrait sous-entendre que l'on pourrait
396
+ faire ` //*/option*/option11 ` (comme une regex) alors que non), et la partie d'adresse vide
397
+ paraissant plus claire, ce dernier fut choisi.
398
+
311
399
En reprenant l'exemple au-dessus, si l'on souhaite modifier toutes les options ` deltat-cp[2] ` ,
312
- on peut utiliser l'adresse :
400
+ quelque soit le module dans lequel cette option apparait, on peut utiliser l'adresse :
313
401
314
402
` ///deltat-cp[2] `
315
403
@@ -321,7 +409,8 @@ Exemple de lancement :
321
409
dataset.arc
322
410
```
323
411
324
- \warning Le tag ANY ne peut pas être présent à la fin de l'adresse.
412
+ \warning La balise ANY ne peut pas être présente à la fin de l'adresse
413
+ (l'adresse ` //module1/option11/ ` est invalide).
325
414
326
415
327
416
#### Le mélange des deux ANY {#arcanedoc_execution_commandlineargs_addr_multi_special_syntax_mix_any}
@@ -335,19 +424,47 @@ Admettons que l'on ait le jeu de données :
335
424
<meshes />
336
425
337
426
<simple-hydro >
338
- <deltat-cp >3.0</deltat-cp >
339
- <deltat-cp >6.0</deltat-cp >
427
+ <checkpoint >
428
+ <deltat-cp >3.0</deltat-cp >
429
+ <print-details-before-cp >true</print-details-before-cp >
430
+ </checkpoint >
431
+
432
+ <checkpoint >
433
+ <deltat-cp >6.0</deltat-cp >
434
+ <print-details-before-cp >true</print-details-before-cp >
435
+ </checkpoint >
436
+
340
437
<final-time >10.2</final-time >
438
+
341
439
<post-processor name =" Ensight7PostProcessor" >
342
440
<fileset-size >10</fileset-size >
343
441
<binary-file >false</binary-file >
344
442
</post-processor >
443
+
444
+ <noidea-service name =" StillNoIdea" >
445
+ <duration >-1</duration >
446
+ <rewrite >false</rewrite >
447
+ </noidea-service >
345
448
</simple-hydro >
346
449
347
450
<pas-simple-hydro >
348
- <deltat-cp >1.0</deltat-cp >
349
- <deltat-cp >3.0</deltat-cp >
350
- <final-time >9.9</final-time >
451
+ <checkpoint >
452
+ <deltat-cp >1.0</deltat-cp >
453
+ <print-details-before-cp >true</print-details-before-cp >
454
+ </checkpoint >
455
+
456
+ <checkpoint >
457
+ <deltat-cp >3.0</deltat-cp >
458
+ <print-details-before-cp >true</print-details-before-cp >
459
+ </checkpoint >
460
+
461
+ <checkpoint >
462
+ <deltat-cp >7.0</deltat-cp >
463
+ <print-details-before-cp >true</print-details-before-cp >
464
+ </checkpoint >
465
+
466
+ <final-time >8.9</final-time >
467
+
351
468
<post-processor name =" Ensight7PostProcessor" >
352
469
<fileset-size >10</fileset-size >
353
470
<binary-file >false</binary-file >
@@ -357,23 +474,54 @@ Admettons que l'on ait le jeu de données :
357
474
</case >
358
475
```
359
476
360
- TODO Continuer ici
477
+ On pourrait commencer par vouloir modifier l'option ` deltat-cp ` du second
478
+ checkpoint du module ` pas-simple-hydro ` .
479
+ Pour cela, on peut utiliser l'argument : <br >
480
+ ` -A,//pas-simple-hydro/checkpoint[2]/delta-cp=4.0 ` .
481
+
482
+ Puis, on pourrait modifier le premier ` deltat-cp ` des deux modules : <br >
483
+ ` -A,///checkpoint[1]/delta-cp=2.0 ` .
484
+
485
+ Ensuite, on pourrait ne pas vouloir d'écriture entre les checkpoints : <br >
486
+ ` -A,///checkpoint[]/print-details-before-cp=false ` .
361
487
488
+ Enfin, les services du module ` simple-hydro ` doivent agir sur le ` Mesh0 `
489
+ et les services ` pas-simple-hydro ` sur le ` Mesh1 ` : <br >
490
+ ` -A,//simple-hydro//@mesh-name=Mesh0 ` <br >
491
+ ` -A,//pas-simple-hydro//@mesh-name=Mesh1 `
492
+
493
+ Finalement, on se retrouve avec la commande :
494
+
495
+ ``` sh
496
+ ./app \
497
+ -A,//pas-simple-hydro/checkpoint[2]/delta-cp=4.0 \
498
+ -A,///checkpoint[1]/delta-cp=2.0 \
499
+ -A,///checkpoint[]/print-details-before-cp=false \
500
+ -A,//simple-hydro//@mesh-name=Mesh0 \
501
+ -A,//pas-simple-hydro//@mesh-name=Mesh1 \
502
+ dataset.arc
503
+ ```
362
504
363
505
### Les syntaxes invalides {#arcanedoc_execution_commandlineargs_addr_invalid_syntax}
364
506
365
507
Pour cette partie, quelques containtes d'utilisations ont été mises en places :
366
508
367
509
- Les arguments commençants par ` -A,// ` sont réservés à cet usage.
368
510
- Les adresses ne peuvent pas terminer par un ` / ` .
369
- Exemple invalide :
511
+ Exemple invalide :
370
512
``` sh
371
513
./app \
372
514
-A,//simple-hydro/deltat-cp/=3.1 \
373
515
dataset.arc
374
516
```
375
517
- Les indices doivent être des entiers supérieurs ou égals à 1.
376
-
518
+ - Lorsqu'un indice est présent (y compris l'indice ANY), une balise doit aussi être présente.
519
+ Exemple invalide :
520
+ ``` sh
521
+ ./app \
522
+ -A,//simple-hydro/[2]/option=3.1 \
523
+ dataset.arc
524
+ ```
377
525
378
526
379
527
0 commit comments