star-gs

Literate program for a geometric sensitivity calculation
git clone git://git.meso-star.fr/star-gs.git
Log | Files | Refs | README | LICENSE

commit 1800cfa83842618f00890aeaf5a0b5088ca2fdfa
parent 7aa7f1bcfb24462fbeb864415ec6b4ef5c9184fe
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 12 Apr 2023 21:32:40 +0200

Débute la rédaction du texte qui accompagne les scripts

Dans cette validation, seul le script mc.sh est (partiellement)
accompagné d'un texte qui le décrit. Le script fd.sh ne dispose encore
que de son seul listing de sources shell.

Diffstat:
Msrc/sgs_compute_sensitivity_translation.nw | 103++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 100 insertions(+), 3 deletions(-)

diff --git a/src/sgs_compute_sensitivity_translation.nw b/src/sgs_compute_sensitivity_translation.nw @@ -1396,18 +1396,115 @@ code. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Script d'exécution du calcul et résultats} +Nous écrivons ici les scripts \textit{shell} qui exécutent notre +programme de calcul de sensibilité en vue de sa validation croisée +par différences finies. Le premier script [[<<mc.sh>>]] lance +plusieurs fois le programme dont le présent document décrit la +fonction de réalisation; l'objet étant de calculer à différentes +valeur de $\PI$ la sensibilité du flux $\varphi$ reçu par le capteur +(équation~\ref{eq:flux}) ainsi que la fraction de ce même flux qui +dépend de $\PI$ (annexe~\ref{flux}). + <<mc.sh>>= #!/bin/sh -e +# Estimation par Monte Carlo de la sensibilité et de la fraction du +# flux qui dépend de pi + +<<configuration géométrique>> +<<paramètres des calculs Monte Carlo>> + +<<pour différentes valeurs de pi>> do + <<lancer un calcul Monte Carlo>> +<<post traiter le résultat>> + <<passer à la valeur de pi suivante>> +done +@ + +Chaque calcul Monte Carlo se résume à exécuter ledit programme nommé +[[sgs]] (acronyme de \textit{Star Geometric Sensitivity}) pour une +valeur de $\PI$ considérée. On notera que la configuration +géométrique décrite en figure~\ref{fig:configuration} est +indépendante de ses dimensions réelles. Dans notre script ces +dimensions sont fixées via deux variables qui définissent le coin +inférieur ([[lower]]) et le coin supérieur ([[upper]]) d'un +parallélépipède aligné aux axes, deux variables passées en arguments +du programme via l'option [[-b]]. +<<lancer un calcul Monte Carlo>>= +out=$(./sgs \ + -n "${nrealisations}" \ + -b low="${lower}":upp="${upper}":pi="${pi}") +@ + +avec [[nrealisations]] le nombre de réalisations utilisées par le +calcul Monte Carlo. Si ce document décrit en détail les sources C de +sa [[<<fonction de réalisation>>]], nous renvoyons le lecteur vers +les autres fichiers C et l'aide du programme [[sgs]] (affichée via +l'option [[-h]]) pour plus d'informations quant aux fonctionnement +et options du programme. + +Une fois le calcul terminé, en post-traiter le résultat se résume à +afficher sur la sortie standard la valeur $\PI$ courante suivie de +l'estimation et de l'écart type de la sensibilité et du flux que +nous venons d'estimer. Ci-après nous utilisons la commande [[sed]] +pour extraire et afficher ces valeurs stockées dans la variable +[[out]] à l'issu de notre calcul Monte Carlo. + +<<post traiter le résultat>>= + printf "%s " "${pi}" + echo "${out}" | sed -n '1{N;s/^'\ +'[^~]\{1,\}~ \([^[:blank:]]\{1,\}\) +\/- \([^\n]\{1,\}\)\n'\ +'[^~]\{1,\}~ \([^[:blank:]]\{1,\}\) +\/- \([^$]\{1,\}\)$'\ +'/\1 \2 \3 \4/p}' +@ + +Ces deux étapes, à savoir le calcul Monte Carlo et son +post-traitement, sont lancées [[nsteps]] fois pour différentes +valeurs de $\PI$, la valeur de $\PI$ à chaque itération étant +simplement sa valeur précédente incrémentée d'un pas constant égal à +[[pi_step]]. + +<<pour différentes valeurs de pi>>= +i=0 +pi=0 +while [ "${i}" -lt "${nsteps}" ]; +@ +<<passer à la valeur de pi suivante>>= +i=$((i + 1)) +pi=$(printf "%s + %s\n" "${pi}" "${pi_step}" | bc) +@ + +Pour compléter le script, ne reste plus qu'à définir les variables +qui caractérisent notre configuration géométrique ainsi que les +paramètres qui pilotent nos différents calculs, tels que le nombre +de calculs à lancer ou encore le nombre de réalisations par calcul. + +<<configuration géométrique>>= +h=1 # Hauteur du parallélépipède +lower="0,0,0" +upper="1,1,${h}" +@ +<<paramètres des calculs>>= +nrealisations=100000000 +nsteps=14 +pi_step=0.1 +@ + +\paragraph{TODO} Ajouter cette ligne pendant la description du +script [[<<fd.sh>>]]. +<<paramètres des calculs Monte Carlo>>= +printf "%s %s\n" "${h}" "${pi_step}" +@ + +<<mc2.sh>>= +#!/bin/sh -e + # Estimation par Monte Carlo de la sensibilité et de la fraction de # la luminance qui dépend de pi h=1 # Hauteur de la boîte -pi_step="0.1" lower="0,0,0" upper="1,1,${h}" -nrealisations=100000000 -nsteps=14 pi="0" i="0"