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 72a6d923727ee7ca79a37870773e597fee9d1c88
parent 077d0899b6675b35f1e3d535b86ffcf57ad15169
Author: Paule Lapeyre <paule.lapeyre@yahoo.fr>
Date:   Wed,  2 Nov 2022 17:31:37 +0100

Débute l'écriture du poids MC

Diffstat:
Msrc/sgs_compute_sensitivity_translation.c | 14++++++++++----
Msrc/sgs_compute_sensitivity_translation.nw | 56++++++++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 64 insertions(+), 6 deletions(-)

diff --git a/src/sgs_compute_sensitivity_translation.c b/src/sgs_compute_sensitivity_translation.c @@ -203,7 +203,7 @@ compute_grad_I } static void -projection +decomposition (const double chi[3], const double normal[3], const double omega[3], @@ -299,9 +299,9 @@ realisation d3_set(normal_e, hit.normal); d3_minus(dir_spec_e, dir_spec_s); - projection(V, normal_e, dir_spec_e, &proj_V_e); - projection(V, normal_s, dir_emit_s, &proj_V_s); - projection(proj_V_s.u, normal_e, dir_spec_e, &proj_u_e); + decomposition(V, normal_e, dir_spec_e, &proj_V_e); + decomposition(V, normal_s, dir_emit_s, &proj_V_s); + decomposition(proj_V_s.u, normal_e, dir_spec_e, &proj_u_e); pos_emit_s_2d[X] = pos_emit_s[X]; pos_emit_s_2d[Y] = pos_emit_s[Y]; @@ -328,6 +328,12 @@ realisation - rho * proj_V_s.beta * proj_u_e.beta * d3_dot(grad_I, proj_u_e.u) + rho * proj_V_e.beta * d3_dot(grad_I, proj_V_e.u); + /* A retravailler + S = + - beta * d3_dot(grad_rho, u) * I + - rho * beta * beta_u * d3_dot(grad_I, u_e) + + rho * beta_X * d3_dot(grad_I, u_ce); */ + w = I*scn.emit_s_sz[X]*scn.emit_s_sz[Y]*PI; /* Weight */ s = S*scn.emit_s_sz[X]*scn.emit_s_sz[Y]*PI; /* Sensib */ diff --git a/src/sgs_compute_sensitivity_translation.nw b/src/sgs_compute_sensitivity_translation.nw @@ -462,6 +462,59 @@ dans [[hit1]]. TRACE_RAY(pos_emit_s, dir_spec_s, surf_emit_s, &hit1); @ +\subsection{Le poids} +\label{subsec:poids} + +\paragraph{} +Dans le problème couplé la contribution du chemin (poids MC) va s'exprimer à +travers la condition à la limite de sensibilité (équation \ref{eq:clsensib}) et +des sources de chacun de ses couplages. Dans notre cas, la sensibilité est +couplée à deux dérivées spatiales (selon $\vec{\chi}$ et $\vec{u}$) dont les +sources sont données par les équations \ref{eq:cl_duL_haut}, +\ref{eq:cl_duL_droite}, \ref{eq:cl_dchiL_haut} et \ref{eq:cl_dchiL_droite}. La +direction $\vec{u}$ est donnée par la décomposition de $\vec{\chi}$ selon la +normale de la source de sensibilité (ici la normale de la paroi du haut stockée +dans la variable [[normal_s]]) et selon la direction de propagation +$\vec{\omega}$ ([[dir_emit_s]]). + +<<???>>= + decomposition(chi, normal_s, dir_emit_s, &beta, u); +@ + +<<decomposition>>= +static void +decomposition + (const double chi[3], + const double normal[3], + const double omega[3], + double* beta, + double u[3]) +{ + double alpha; + ASSERT(chi && normal && omega && beta && u); + ASSERT(d3_is_normalized(normal)); + ASSERT(d3_is_normalized(omega)); + + alpha = d3_dot(chi, normal) / d3_dot(omega, normal); + u[X] = chi[X] - alpha*omega[X]; + u[Y] = chi[Y] - alpha*omega[Y]; + u[Z] = chi[Z] - alpha*omega[Z]; + *beta = d3_normalize(u, u); +} +@ + +Que ce soit pour la sensibilité (dont la déformation est donnée par +$\vec{\chi}$) ou pour les dérivée spatiales (dans les directions $\vec{\chi}$ et +$\vec{u}$), plusieurs étapes de décomposition de $\vec{\chi}$ et de $\vec{u}$ +sont nécessaire pour déterminer $\beta$, $\vec{u}$ (concernant la source de +sensibilité) et $\beta_{\chi}$, $\vec{u}_{ce}$, $\vec{u}_{cs}$ (pour la dérivée +spatiale selon $\chi$) $\beta_u$, $\vec{u}_e$, $\vec{u}_s$ (pour la dérivée +spatiale selon $\vec{u}$. + +<<calcul du poids>>= +@ + +\subsection{Optimisation \& co} \paragraph{} Décrire [[TRACE_RAY]] dans un moment plus info <<???>>= @@ -496,8 +549,7 @@ TODO if(!hit_source(&scn, pos_emit_s, dir_spec_s, &hit, pos_emit_e)) goto exit; @ -\subsection{Le poids} -\label{subsec:poids} + % TODO mettre le schéma