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 077d0899b6675b35f1e3d535b86ffcf57ad15169
parent 4954cee602921079d6d3f9cae665a641d8414d83
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed,  2 Nov 2022 17:29:17 +0100

Relecture de l'introduction à la section MC

Diffstat:
Msrc/sgs_compute_sensitivity_translation.nw | 47++++++++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 19 deletions(-)

diff --git a/src/sgs_compute_sensitivity_translation.nw b/src/sgs_compute_sensitivity_translation.nw @@ -261,7 +261,7 @@ couplage du modèle de sensibilité avec le modèle de transfert radiatif et le modèle de la dérivée spatiale (voir \citep{papier_sensib} qui considère les dérivées spatiale et angulaire de la luminance comme des quantités de la physique, au même titre que la sensibilité géométrique, et qui en décrit les -modèles). Nous concluons alors que de résoudre ce problème de sensibilité +modèles). Nous concluons alors que résoudre ce problème de sensibilité géométrique dans la boite revient à résoudre un problème de transport couplé qui dépend à la fois des source radiatives (à travers $L_{spec}$), des sources de dérivées spatiales dans la direction $\vec{u}$ (à travers @@ -269,9 +269,9 @@ $\partial_{1,\vec{u}} L_{spec}$) et des sources de dérivées spatiales dans la direction $\vec{\chi}$ (à travers $\partial_{1,\vec{\chi}} L_{spec}$). \paragraph{Les sources du problème couplé} -Les sources radiatives ont été décrites dans la figure \ref{configuration} +Les sources radiatives ont été décrites dans la figure \ref{fig:configuration} (seule la paroi de droite est émettrice) et nous devons à présent donner les -sources des dérivées spatiales. Dans \citep{papier_sensib} il est déterminé +sources des dérivées spatiales. Dans \citep{papier_sensib} il est déterminé que les sources de dérivées spatiales peuvent être volumiques, surfaciques et linéiques (pour les géométries facétisées - non différentiables). Nous n'entrerons pas dans les développements qui explicitent comment trouver les @@ -285,7 +285,7 @@ Concernant les sources surfacique: le milieu étant transparent, les parois noires et froides ne seront pas sources de dérivée spatiale; seules les parois de droites seront des sources pour les dérivées spatiales et ces sources sont données par les conditions aux limites décrites par les équations -\ref{eq:cl_duL_haut}, \ref{eq:cl_duL_droite}, \ref{eq:cl_dchiL_haut}, +\ref{eq:cl_duL_haut}, \ref{eq:cl_duL_droite}, \ref{eq:cl_dchiL_haut} et \ref{eq:cl_dchiL_droite}. \begin{equation} @@ -333,7 +333,9 @@ par un échantillonnage des sources et des chemins qui les propageront vers le récepteur. \paragraph{} -La mise en oeuvre proposée est particulière dans le sens où le chemin du +Dans cette section nous écrivons la fonction [[realisation]] en charge +d'échantillonner un chemin et d'en calculer le poids Monte-Carlo. +La mise en oeuvre ici proposée est particulière dans le sens où le chemin du problème couplé est d'abord échantillonné et conservé en totalité (section~\ref{subsec:chemin}). Son poids n'est calculé qu'a posteriori à partir du chemin ainsi construit (section~\ref{subsec:poids}). Cette proposition @@ -342,13 +344,6 @@ courante du chemin ne sont que des données locales à chaque étape de la construction du chemin; son poids étant mis à jour si nécessaire à chacune de ces étapes. -\paragraph{} -La fonction en charge d'échantillonner un chemin et d'en calculer le poids est -la fonction [[realisation]] qui a 3 arguments: une liste de poids Monte-Carlo -renvoyés par la fonction ([[weights]]), un générateur de nombres aléatoires -([[rng]]), et un pointeur vers les données qui décrivent notre système -([[scene]]). - <<réalisation>>= /* TODO move me */ @@ -359,20 +354,36 @@ struct sgs_scene { static res_T realisation - (double weights[WEIGHTS_COUNT__], - struct rng* rng, - const struct sgs_scene* scene) + (struct rng* rng, + const struct sgs_scene* scene, + double weights[WEIGHTS_COUNT__]) { <<variables locales>> res_T res = RES_OK; - <<échantilloner un chemin>> - <<calculer le poid du chemin>> + <<échantilloner un chemin du problème couplé>> + <<calculer le poids du chemin>> exit: return res; error: goto exit; +} +@ + +\paragraph{} +Notre fonction de réalisation prends en entrée un générateur de nombres +aléatoires ([[rng]]) et un pointeur vers les données du système ([[scene]]). +Dans la variable [[weights]] seront renvoyés la liste des poids Monte-Carlo +calculés par la fonction, à savoir le poids du chemin échantillonné et sa +sensibilité à $\PI$. + +<<définition des constantes>>= +enum { + WEIGHT /*0*/, + SENSIB /*1*/, + WEIGHTS_COUNT__ /*2*/ +}; @ \subsection{Le chemin} @@ -444,8 +455,6 @@ de la direction d'émission $\vec{\omega}$ ([[dir_emit_s]]) avant de suivre un chemin dans cette direction jusqu'à l'intersection avec une surface stockée dans [[hit1]]. -POUET - <<échantillonner un chemin de dérivée spatiale>>= /* Compute the specular direction */ reflect(dir_spec_s, dir_emit_s, normal_s);