• Aucun résultat trouvé

Algorithme d’implémentation de la méthode

5.4.1 Principe général de l’implémentation

Dans Phoebe, les différents processus de transport des photons sont gérés par la classe StdPhotonProcesses . Notamment, elle définit les fonctions jump et interact qui échantillonnent respectivement le pas parcouru par un photon et ses interactions. Le transport pseudo-déterministe est implémenté via l’ajout d’une classe spécialisée, basée sur StdPhotonProcesses , qui vient remplacer cette dernière lorsque la demande en est faite dans le fichier d’initialisation.

Cette classe possède, en particulier, une fonction supplémentaire ayant pour rôle de créer la particule déterministe. Le reste des modifications se trouve dans les fonctions jump et interact . Plus précisément, un système de statut est utilisé pour différencier les particules déterministes, complémentaires et analogues. Les fonctions jump et interact agissent alors différemment suivant le statut de la particule, de manière à correctement produire l’algorithme du transport pseudo-déterministe sans impacter le transport des photons analogues.

Lorsqu’une diffusion se produit hors de la sphère pseudo-déterministe, une particule déterministe est créée et sa direction est échantillonnée vers la sphère. Son poids peut alors être corrigé du facteur lié à l’échantillonnage non-analogue de la direction. En revanche, la probabilité de non-interaction jusqu’à son arrivée à la sphère est encore inconnue à ce stade. La particule devra d’abord être transportée pas à pas jusqu’à la sphère, sans interagir, de manière à connaître les différents matériaux traversés et les distances parcourues dans chacun d’entre eux. Pour cela, elle est stockée dans la pile de particules secondaires avec le statut Déterministe, qui indiquera aux fonctions jump et interact que cette particule doit être transportée en ligne droite jusqu’à la sphère sans aucune interaction. L’exponentielle correspondant à la probabilité de non-interaction sera calculée à la fin du trajet jusqu’à la sphère. La particule ayant subi la diffusion, quant à elle, voit son statut devenir Complémentaire. Ce dernier indique aux fonctions de transport que cette particule doit être tuée si elle entre dans la sphère durant le pas suivant l’interaction pseudo-déterministe. Finalement, les particules analogues sont transportées de la même manière qu’en l’absence de transport pseudo-déterministe.

La création de la particule déterministe nécessite de connaître l’énergie et la direction du photon d’origine. Puisque le transport pseudo-déterministe est appliqué à la suite d’une interaction, ces valeurs ont éventuellement pu être modifiées. Il est donc nécessaire d’enregistrer l’énergie et la direction de la particule analogue avant chaque interaction, même s’il ne s’agit en définitive pas d’une diffusion.

Les deux sections suivantes détaillent respectivement l’algorithme de transport de la particule déterministe, destiné à l’amener à la surface de la sphère sans interaction, puis celui

de la particule complémentaire, chargé de s’assurer qu’elle n’entre pas dans la sphère à la suite d’une diffusion.

5.4.2 Transport de la particule déterministe

Les différentes grandeurs utilisées dans cette partie sont spécifiées ci-dessous sur la figure

40, et illustrées avec une géométrie de calcul comportant trois modules. L’interaction pseudo-déterministe a lieu dans le module 1, et la sphère pseudo-pseudo-déterministe se trouve entièrement dans le module 3.

Figure 40 – Représentation des différentes grandeurs utilisées durant le transport de la particule déterministe et de la particule complémentaire.

La distance𝐷𝑃 (Diffusion - Particule) correspond à la distance entre la diffusion donnant lieu à un transport pseudo-déterministe et la particule complémentaire, ici représentée en bleu. 𝐷𝑆 (Diffusion - Sphère) est la distance entre la diffusion et le point d’arrivée (éventuel) sur la sphère de la particule complémentaire.𝑃 𝑆 (Particule - Sphère) est la distance qui sépare la particule déterministe (ici en rouge, arrêtée à une interface) de son point d’arrivée sur la sphère. Finalement, une variable lastPS représente la dernière distance calculée entre la particule déterministe et son point d’arrivée, en l’occurence lorsqu’elle était arrêtée à la première interface. La différence lastPS − 𝑃𝑆 donne la distance parcourue par la particule entre les deux interfaces, c’est-à-dire dans le dernier module traversé. L’algorithme de transport d’une particule déterministe est donné par la suite sur la figure41. La correspondance avec les différentes étapes de l’algorithme est à nouveau donnée entre parenthèses.

Figure 41 – Diagramme de la boucle de transport pour une particule déterministe.

Le transport de la particule déterministe jusqu’à la sphère a deux objectifs : le premier est de la placer à sa surface dans la direction échantillonnée, et le second est de connaître tous les matériaux traversés et la distance parcourue dans chacun d’entre eux pour calculer le chemin

optique parcouru. Pour une particule traversant𝑖 modules, on le définit comme

𝑖

𝜇𝑖𝑑𝑖 (176)

où 𝜇𝑖 est le coefficient d’atténuation linéique du module 𝑖 et 𝑑𝑖 la distance parcourue dans ce module. Cette valeur est nécessaire au calcul du poids de la particule. Elle est représentée par la variable opticalPath , qui est mise à jour au fur et à mesure du transport de la particule jusqu’à la sphère.

Le parcours d’une particule de statutDéterministe débute ainsi dans jump par le calcul

de la distance 𝑃 𝑆 qui la sépare de la sphère (1). Lors du premier jump de la particule, la

valeur de lastPS vaut zéro. Celle-ci étant initialisée à zéro lorsque la particule est créée, cela signifie pour jump que la particule ne s’est pas encore déplacée après sa création. Le

chemin optique parcouru opticalPath ne nécessite alors pas encore d’être mis à jour (2).

La variable lastMu est utilisée pour garder en mémoire le coefficient d’atténuation du module actuel (3), qui sera nécessaire pour mettre à jour le chemin optique après son prochain pas, puisque la particule pourra éventuellement être placée dans un nouveau module. La variable lastPS permet de conserver la distance Particule-Sphère qui vient d’être calculée (4). La fonction renvoie ensuite la valeur du pas dS = 𝑃 𝑆 (5). Cela signifie que la particule sera ensuite déplacée exactement à la surface de la sphère par step , sauf si elle rencontre

une interface (6, 7). Dans ce cas, elle est placée sur cette interface et la fonction jump est à nouveau appelée.

La nouvelle distance 𝑃 𝑆 est alors calculée (1). Cette fois-ci, lastPS est non-nulle et le chemin optique est donc mis à jour (2). La valeur de lastPS − 𝑃𝑆 donne la distance parcourue dans le module qui vient d’être traversé, et lastMu donne le coefficient d’atténuation correspondant. Le chemin optique est alors incrémenté de ( lastPS − 𝑃𝑆) × lastMu , et les valeurs de lastMu et lastPS sont mises à jour (3, 4) avant de renvoyer la nouvelle distance 𝑃 𝑆 (5). Cette opération est répétée jusqu’à ce que la particule atteigne la surface de la sphère, c’est-à-dire lorsqu’aucune interface n’est rencontrée.

Au moment où la particule atteint la sphère, lastPS est la dernière distance parcourue dans le dernier module rencontré. Le chemin optique peut être mis à jour une dernière fois en y ajoutant lastPS × lastMu (8). Le poids de la particule est finalement multiplié par la probabilité de non-interaction le long de son trajet (9) :

exp( − ∑

𝑖

𝜇𝑖𝑑𝑖) (177)

La particule récupère ensuite le statut Analogue (10) et la fonction renvoie une valeur d’énergie déposée dE nulle (11) : aucune interaction n’a eu lieu à la surface de la sphère, la particule reprend simplement un transport normal à son arrivée.

5.4.3 Transport de la particule complémentaire

L’algorithme du transport de la particule complémentaire est donné ci-dessous sur la figure

Pour la particule complémentaire, qui obtient son statut à la suite d’une diffusion, la prochaine étape est également l’échantillonnage du pas à parcourir. Précisons ici que cette particule n’obtient le statutComplémentaire que si elle est dirigée vers la sphère à la suite de la diffusion : elle ne peut, en effet, pas y entrer dans le cas contraire.

La distance𝐷𝑃 , séparant la particule de sa dernière diffusion pseudo-déterministe, est alors calculée (1) puis comparée à la distance𝐷𝑆 (2). La particule se déplace en ligne droite depuis la diffusion et est dirigée vers la sphère. Alors, si 𝐷𝑃 > 𝐷𝑆, elle a nécessairement dépassé la surface de la sphère et elle doit être tuée (3.2). On notera qu’il serait également possible, pour déterminer si la particule est entrée dans la sphère, de calculer la distance séparant la particule du centre de la sphère, puis de la comparer à son rayon. Cette méthode ne permet cependant pas de prendre en compte le cas où la particule dépasse la sphère sans s’y arrêter (soit à une interface soit pour une interaction). Dans ce cas, la distance calculée serait tout de même supérieure au rayon alors que la particule n’est plus dirigée vers la sphère. Elle serait alors suivie sans interaction jusqu’à sa sortie de la géométrie de calcul.

Si la particule a été tuée, la fonction renvoie un pas dS = 0 (4.2) pour une entrée immédiate dans interact . Sinon, le pas est échantillonné normalement à l’aide de la fonction jump analogue (3.1). Cette opération est répétée à chaque interface si nécessaire, jusqu’à l’interaction de la particule (5, 6).

À l’entrée de la fonction interact , l’énergie de la particule est contrôlée. Elle est nulle lorsque la particule a été tuée par jump : dans ce cas, la fonction s’arrête et renvoie une valeur d’énergie déposée nulle (7). Cette particule ne sera ensuite plus suivie.

Dans le cas contraire, une interaction doit avoir lieu et une dernière vérification de position est réalisée (8, 9). Si la particule a dépassé la sphère, elle est tuée et la fonction interact renvoie dE = 0 (10.2, 11.2). Si elle n’a pas dépassé la sphère, son statut redevientAnalogue (10.1), et une interaction est réalisée (12). S’il s’agit d’une diffusion, le transport pseudo-déterministe pourra à nouveau être appliqué (13.1, 13.2).

On notera que l’interaction (12) est susceptible de modifier l’énergie et la direction de la particule. Ces valeurs étant nécessaires à la création de la particule déterministe, elles sont auparavant sauvegardées (11.1). La fonction renvoie finalement l’énergie déposée par l’interaction (14).

La partie suivante donne le détail de la fonction chargée de la création de la particule déterministe. Plus précisément, elle réalise l’échantillonnage de sa direction, puis le calcul de son poids initial (facteur correctif lié à la direction d’émission) et de son énergie avant de l’inclure dans la pile de particules avec le statutDéterministe. Ce photon suivra ensuite le parcours de transport décrit précédemment en5.4.2.