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 83fc75c863221e73a260293a813ad4ef9c91b8a3
parent 5617122c2f38e1e7a2e51850b0eb1f916c419cb0
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Sun, 23 Apr 2023 14:16:23 +0200

Encore une relecture de l'annexe des résultats

En cohérence avec la légende des résultats du document, le verbe
adimensionner est remplacé par adimensionnaliser. Parmis les autres
modifications mineures on notera l'utilisation dans les intitulés des
blocs de code du symbole latex "$\PI$" à la place du nom de sa variable
dans le code à savoir "pi".

Diffstat:
Msrc/sgs_compute_sensitivity_translation.nw | 68+++++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 35 insertions(+), 33 deletions(-)

diff --git a/src/sgs_compute_sensitivity_translation.nw b/src/sgs_compute_sensitivity_translation.nw @@ -1429,13 +1429,14 @@ code. \section{Script d'exécution du calcul et résultats} \label{annex:scripts} -Nous écrivons ici les scripts \textit{shell} qui exécutent le 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 valeurs 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{annex:flux}). +Nous écrivons ici les scripts \textit{shell} qui calculent la sensibilité du +flux à $\PI$ d'abord par Monte Carlo puis par différences finies en vue d'une +validation croisée des résulats. 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 valeurs 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{annex:flux}). <<mc.sh>>= #!/bin/sh -e @@ -1446,11 +1447,11 @@ dépend de $\PI$ (annexe~\ref{annex:flux}). <<Configuration géométrique>> <<Paramètres des calculs Monte Carlo>> -<<Pour différentes valeurs de pi>> +<<Pour différentes valeurs de $\PI$>> do <<Lancer un calcul Monte Carlo>> <<Post traiter le résultat>> - <<Passer à la valeur de pi suivante>> + <<Passer à la valeur de $\PI$ suivante>> done @ @@ -1496,12 +1497,12 @@ 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>>= +<<Pour différentes valeurs de $\PI$>>= i=0 pi=0 while [ "${i}" -lt "${nsteps}" ] @ -<<Passer à la valeur de pi suivante>>= +<<Passer à la valeur de $\PI$ suivante>>= i=$((i + 1)) pi=$(printf "%s + %s\n" "${pi}" "${pi_step}" | bc) @ @@ -1529,9 +1530,9 @@ comparer les résultats, ce second script recopie en sortie les sensibilités estimées par Monte Carlo ([[sen_mc]]) en plus d'écrire ces mêmes sensibilités calculées cette fois par différences finies ([[sen_fd]]). Leur écarts types respectif ([[err_mc]] et [[err_fd]]) sont également des données de sortie. On -notera enfin que l'ensemble des résultats seront adimentionnés aux dimensions -de la configuration géométrique et seront par conséquent donnés pour une valeur -de $\PI$ indépendante de la hauteur du parallélépipède ([[pi_over_h]]). +notera enfin que l'ensemble des résultats sont adimentionnalisés et sont par +conséquent donnés pour une valeur de $\PI$ indépendante de la hauteur du +parallélépipède ([[pi_over_h]]). <<fd.sh>>= #!/bin/sh -e @@ -1546,12 +1547,12 @@ printf "pi_over_h sen_mc err_mc sen_fd err_fd\n" <<Lire les paramètres d'entrée>> -<<Pour chaque valeur de pi considérée>> +<<Pour chaque valeur de $\PI$ considérée>> do - <<Lire la valeur du flux autour de pi>> - <<Calculer par différences finies la sensibilité du flux à pi>> - <<Lire l'estimation Monte Carlo de la sensibilité du flux à pi>> - <<Écrire les résultats adimensionner aux dimensions du système>> + <<Lire la valeur du flux autour de $\PI$>> + <<Calculer par différences finies la sensibilité du flux à $\PI$>> + <<Lire l'estimation Monte Carlo de la sensibilité du flux à $\PI$>> + <<Écrire les résultats adimensionnaliser>> <<Passer au calcul suivant>> done @ @@ -1559,9 +1560,10 @@ done Pour les calculs en différences finies nous avons besoin de connaître les paramètres utilisés par les estimations Monte Carlo, comme le $\delta$ entre chaque valeur de $\PI$ ([[pi_step]]) ou encore la hauteur du parallélépipède -nécessaire pour adimensionner les résultats ([[h]]). Pour passer ces données -d'un script à l'autre, on ajoute aux sorties de [[mc.sh]] un en-tête contenant -ces paramètres, en-tête qui peut alors être lu par le script [[fd.sh]]. +nécessaire pour adimensionnaliser les résultats ([[h]]). Pour passer ces +données d'un script à l'autre, on ajoute aux sorties de [[mc.sh]] un en-tête +contenant ces paramètres, en-tête qui peut alors être lu par le script +[[fd.sh]]. <<Paramètres des calculs Monte Carlo>>= printf "%s %s\n" "${h}" "${pi_step}" @@ -1572,12 +1574,12 @@ h=$(echo "${header}" | cut -d' ' -f1) pi_step=$(echo "${header}" | cut -d' ' -f2) @ -Autre donnée nécessaire pour adimensionner les résultats, la valeur maximale du -flux. Celle-ci correspond à la valeur de $\varphi$ lorsque la boîte est fermée, -c'est à dire lorsque $\PI$ vaut $0$, soit la valeur de $\PI$ du premier calcul -Monte Carlo lancé par [[mc.sh]]. Après avoir lu l'en-tête de ses sorties nous -lisons donc ce premier résultat que l'on stocke dans la variable [[p]] avant -d'en extraire la valeur $\varphi$ ([[phi_max]]). +Autre donnée nécessaire par l'adimensionnement, la valeur maximale du flux. +Celle-ci correspond à la valeur de $\varphi$ lorsque la boîte est fermée, c'est +à dire lorsque $\PI$ vaut $0$, soit la valeur de $\PI$ du premier calcul Monte +Carlo lancé par [[mc.sh]]. Après avoir lu l'en-tête de ses sorties nous lisons +donc ce premier résultat que l'on stocke dans la variable [[p]] avant d'en +extraire la valeur $\varphi$ ([[phi_max]]). <<Lire les paramètres d'entrée>>= read -r p @@ -1590,7 +1592,7 @@ résultat Monte Carlo pour la valeur de $\PI$ courante est stocké dans la variable [[c]] tandis que le résultat précédent et suivant sont respectivement stockés dans les variables [[p]] et [[n]]. -<<Pour chaque valeur de pi considérée>>= +<<Pour chaque valeur de $\PI$ considérée>>= read -r c while read -r n @ @@ -1603,13 +1605,13 @@ Il suffit alors d'extraire le flux ([[phi]]) et son erreur ([[err]]) aux valeurs de $\PI$ précédente ([[p]]) et suivante ([[n]]) pour calculer par différences finies la sensibilité et l'erreur associée pour la valeur de $\PI$ courante: -<<Lire la valeur du flux autour de pi>>= +<<Lire la valeur du flux autour de $\PI$>>= phi_p=$(echo "${p}" | cut -d' ' -f4 | float_to_bc) err_p=$(echo "${p}" | cut -d' ' -f5 | float_to_bc) phi_n=$(echo "${n}" | cut -d' ' -f4 | float_to_bc) err_n=$(echo "${n}" | cut -d' ' -f5 | float_to_bc) @ -<<Calculer par différences finies la sensibilité du flux à pi>>= +<<Calculer par différences finies la sensibilité du flux à $\PI$>>= sen_fd=$(echo "(${phi_n}-${phi_p})/(2*${pi_step})" | bc_cmd) err_fd=$(echo "(${err_n}+${err_p})/(2*${pi_step})" | bc_cmd) @ @@ -1618,7 +1620,7 @@ On utilise alors le résultat Monte Carlo au $\PI$ considéré pour retrouver non seulement la valeur de $\PI$ mais aussi pour extraire l'estimation Monte Carlo de la sensibilité de $\varphi$ à $\PI$: -<<Lire l'estimation Monte Carlo de la sensibilité du flux à pi>>= +<<Lire l'estimation Monte Carlo de la sensibilité du flux à $\PI$>>= pi=$(echo "${c}" | cut -d' ' -f1 | float_to_bc) sen_mc=$(echo "${c}" | cut -d' ' -f2 | float_to_bc) err_mc=$(echo "${c}" | cut -d' ' -f3 | float_to_bc) @@ -1626,7 +1628,7 @@ err_mc=$(echo "${c}" | cut -d' ' -f3 | float_to_bc) Ne reste plus qu'à écrire l'ensemble des résultats attendus: -<<Écrire les résultats adimensionner aux dimensions du système>>= +<<Écrire les résultats adimensionnaliser>>= pi_over_h=$(echo "${pi}/${h}" | bc_cmd) sen_mc=$(echo "${sen_mc}/${phi_max}*${h}" | bc_cmd) err_mc=$(echo "${err_mc}/${phi_max}*${h}" | bc_cmd)