commit 271838f150ff3b8c8daf999bfe22158a8e759754
parent 9d66dd9100100b7bb1a17e8605115071568c4c82
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Sat, 22 Apr 2023 18:32:59 +0200
Modification du script mc.sh
Une référence vers l'annexe contenant les sources des scripts est
ajoutée dans la section résultats. Par ailleurs, le post-traitement des
résultats Monte Carlo du script mc.sh a été retravaillé afin de ne pas
se retrouver avec une commande sed sur plusieurs lignes nous obligeant à
renoncer à toute indentation du bloc de code correspondant. On notera
que cette modification améliore la lisibilité de cette commande.
Cette validation contient également quelques retouche mineures de la
mise en page des sources noweb.
Diffstat:
1 file changed, 55 insertions(+), 54 deletions(-)
diff --git a/src/sgs_compute_sensitivity_translation.nw b/src/sgs_compute_sensitivity_translation.nw
@@ -26,7 +26,6 @@
\usepackage{amsfonts} % \mathbb
\usepackage{amsmath}
\usepackage{graphicx}
-%\usepackage{natbib} % \citep
\usepackage{noweb}
\usepackage{tikz}
\usepackage{pgfplots} % \begin{axis}
@@ -61,7 +60,7 @@ d'un calcul de sensibilité géométrique sur l'exemple simple d'un
parallélépipède (figure~\ref{fig:configuration}). Nous nous intéressons ici à
la déformation géométrique liée à la translation de sa paroi supérieure et
étudions l'impact de cette translation sur le flux reçu par un récepteur situé
-sur sa paroi inférieure.
+sur sa paroi inférieure.
Dans cet exercice, la sensibilité du flux est estimée par un algorithme de
Monte Carlo analogue à la physique du transport de la sensibilité géométrique.
Cette pratique des algorithmes de Monte Carlo est largement utilisée en
@@ -136,9 +135,9 @@ et à leurs propriétés physiques.
%(figure~\ref{fig:configuration}). Nous nous intéressons ici à la déformation
%géométrique liée à la translation de sa paroi supérieure et étudions l'impact
%de cette translation sur le flux reçu par un récepteur situé sur sa paroi
-%inférieure.
-L'observable radiative de notre problème est le flux $\varphi$
-perçu par le récepteur et s'exprime comme ci-dessous:
+%inférieure.
+L'observable radiative de notre problème est le flux $\varphi$ perçu par le
+récepteur et s'exprime comme ci-dessous:
\begin{equation}
\varphi = \int_{A_r} dS \int_{\mathcal{H}^-} d\vec{\omega}
\ (\vec{\omega} \cdot \vec{n}) L(\vec{x},\vec{\omega},\PI)
@@ -318,7 +317,7 @@ transparent et toutes les autres conditions aux limites de sensibilité sont
nulles. Il n'y a donc pas de sensibilité géométrique incidente à la paroi du
haut spéculaire.
%On se contente donc d'ignorer la sensibilité incidente à la paroi. On
-%rappelle par ailleurs que la paroi du haut est spéculaire.
+%rappelle par ailleurs que la paroi du haut est spéculaire.
La source de sensibilité $S_{b,\PI}$ est donc définie comme ci-dessous en
renvoyant le lecteur à l'annexe \ref{ann:cl_sensib} pour les développements qui
mènent à cette expression:
@@ -817,8 +816,11 @@ résultats par le calcul de différences finies. La différentiation est effectu
à partir des estimations du flux $\varphi(\PI)$ reçu par le capteur pour
différentes valeurs du paramètre géométrique $\PI$, soit pour différentes
hauteurs de la paroi spéculaire. Le calcul du poids associé au calcul du flux
-est décrit en annexe \ref{flux}. La figure \ref{fig:resultats} présente les
+est décrit en annexe \ref{annex:flux}. La figure \ref{fig:resultats} présente les
estimations de la sensibilité du flux et des différences finies correspondantes.
+Les paramètres des simulations Monte Carlo et des calculs en différences finies,
+et plus généralement le code source des scripts à l'origine de ces résultats
+sont données en annexe~\ref{annex:scripts}.
\begin{figure}[h!]
\centering
@@ -875,7 +877,7 @@ estimations de la sensibilité du flux et des différences finies correspondante
\frac{\partial_{\PI} \varphi}{\varphi_{max}} h$ avec $\varphi_{max} =
\varphi_{spec}(\PI=0)$. Dans cette expression, $\varphi_{spec}$ correspond
uniquement à la partie du flux qui arrive au récepteur après avoir été
- réfléchie sur la paroi spéculaire (voir annexe \ref{flux}). Le nombre
+ réfléchie sur la paroi spéculaire (voir annexe~\ref{annex:flux}). Le nombre
d'échantillonnage du poids de Monte Carlo nécessaire à la reproduction de ce
résultat est $10^{8}$.}
\label{fig:resultats}
@@ -1062,7 +1064,7 @@ decomposition
% Annexe "luminance"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Calcul de la contribution de la luminance qui dépend de $\PI$}
-\label{flux}
+\label{annex:flux}
Le flux reçu par le capteur est décrit par l'équation \ref{eq:flux}. Dans notre
problème, la luminance $L(\vec{x},\vec{\omega},\PI)$ incidente au récepteur
@@ -1461,15 +1463,15 @@ code.
% Annexe script de résultat
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Script d'exécution du calcul et résultats}
+\label{annex:scripts}
-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}).
+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{annex:flux}).
<<mc.sh>>=
#!/bin/sh -e
@@ -1482,53 +1484,52 @@ dépend de $\PI$ (annexe~\ref{flux}).
<<pour différentes valeurs de pi>> do
<<lancer un calcul Monte Carlo>>
-<<post traiter le résultat>>
+ <<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]].
+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.
+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.
+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}'
+prompt="[^~]\{1,\}~ "
+estimation="[^[:blank:]]\{1,\}"
+error="[^\n$]\{1,\}"
+line0="${prompt}\(${estimation}\) +/- \(${error}\)\n" # Sensibilité
+line1="${prompt}\(${estimation}\) +/- \(${error}\)$" # Flux
+printf "%s " "${pi}"
+echo "${out}" | sed -n "1{N;s#^${line0}${line1}#\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]].
+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
@@ -1540,17 +1541,17 @@ 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.
+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>>=
+<<paramètres des calculs Monte Carlo>>=
nrealisations=100000000
nsteps=14
pi_step=0.1