• Aucun résultat trouvé

III.4 Établissement des formulations intégrales dans le cadre de l’approxima-

IV.2.2 Géométries complexes

Nous nous intéressons ici à la mise en œuvre de nos algorithmes pour toutes les géo- métries de particule dont les surfaces projetées et les longueurs de traversées ne sont pas connues analytiquement. Cela concerne les équations paramétriques non quadratiques (par exemple le super-sphéroïde [Gielis,2003] ou l’hélice circulaire, qui ont un intérêt particu- lier en génie des systèmes photoréactifs) ou toutes autres géométries qui ne seraient pas définie par une équation paramétrique (dessin, données directement obtenues par image- rie, etc.). Contrairement à la section précédente, il nous faut donc évaluer numériquement un ensemble de calculs géométriques. Pour ce faire, nous utilisons des librairies de calcul scientifique issues de la recherche en synthèse d’image ainsi que quelques développements algorithmiques spécifiques. Le travail qui suit a été mené dans le cadre du projet ALGUE en collaboration avec Sebastian Weitz, qui a mené un post-doctorat sur la prise en compte des distributions de forme au sein des suspensions. Nous avons également travaillé avec la PME Méso-Star, qui dans le cadre du projet ALGUE, a pris en charge le développement d’un logiciel abouti reprenant nos codes (Financement : projet ATS « ALGUE» de l’Idex de Toulouse).

Données géométriques. Les librairies de calcul pour le suivi de rayon en géométrie complexe reposent sur une description de la géométrie de la particule dans un fichier CAO

(Conception Assistée par Ordinateur). Le domaine géométrique de la particule y est dé- crit par une surface fermée triangulée, c’est-à-dire une surface polyédrique dont les faces sont toutes triangulaires. Dans le cas d’une particule dont le modèle géométrique initial n’est pas un polyèdre (par exemple dans le cas de Arthrospira platensis (spiruline)) se pose alors la question de la triangulation de sa surface. De nombreuses librairies de calcul sont disponibles pour mener à bien ce travail de représentation des données géométriques. Cette question n’a pas été adressée dans le présent travail de thèse (elle a fait l’objet d’une partie de la prestation réalisée par Méso-Star). Nous supposons ici que ce travail a été fait en amont et nous partons d’un fichier CAO fourni par l’utilisateur. Nous faisons ce choix pour deux raisons. Premièrement, la question de la représentation géométrique est com- plètement indépendante de la physique que nous résolvons (l’approximation de Schiff sera résolue exactement pour toute géométrie spécifiée dans le fichier CAO). Deuxièmement, les outils de la synthèse d’image que nous utilisons permettent aujourd’hui de manipuler sans problème des données géométriques extrêmement raffinées contenant des millions de triangles. La question du maillage (à l’aide de surfaces triangulées) se résume donc à celle de la modélisation de la géométrie de la particule, qui est à la charge de l’utilisateur de nos algorithmes (par exemple le spécialiste en génie des systèmes photoréactifs).

Fonctionnalités importantes des librairies de calcul scientifique pour le suivi de rayon en géométrie complexe. Dès lors que l’on s’intéresse à des particules à géométrie complexe, on est amené à utiliser dans nos algorithmes certaines fonctionnali- tés disponibles dans les libraires de calcul scientifique. Parmi elles, on distingue le calcul de la première intersection entre une demi-droite et la géométrie, ainsi que l’échantillon- nage uniforme sur les surfaces. Grâce aux deux fonctionnalités mentionnées ci-dessus, nous sommes en mesure de concevoir des algorithmes qui sont indépendants de la géomé- trie : ils contiennent seulement la physique du problème. On parle alors d’orthogonalité entre la donnée géométrique et la physique du problème. Cette notion d’orthogonalité est très utile puisqu’elle signifie que nous n’avons pas besoin de recoder la physique à chaque changement de géométrie. Par conséquent, nos algorithmes sont capables de ré- soudre l’approximation de Schiff pour n’importe quelle géométrie de particule spécifiée à partir d’un fichier CAO. Par contre, cela implique de construire des algorithmes sous cer- taines contraintes, en particulier, celle d’utiliser seulement les fonctions disponibles dans la librairie de calcul. Cela fait l’objet des paragraphes suivants.

Longueur de traversée l(~r0). La longueur de traversée l d’un chemin en ligne droite intersectant la surface projetée P de la particule au point ~r0 (voir Fig.IV.11) est ici évaluée en utilisant la fonction Intersect de la librairie que nous utilisons pour le suivi de rayon

en géométrie complexe. Cette fonction prend en entrée une demi-droite, définie par son origine et un vecteur direction, et elle renvoie la position de la première intersection de cette demi-droite avec la surface de la particule. Pour toutes positions ~r0de P, l’algorithme donnant la longueur de traversée est le suivant :

Algorithme 10: Longueur de traversée

n Étape 1 : la longueur de traversée l est initialisée à 0.

n Étape 2 : la position d’entrée ~yin du chemin dans la particule est obtenue en

appelant la fonction Intersect pour la demi-droite d’origine ~r0et de direction

~ei (la direction d’incidence).

n Étape 3 : la position de sortie ~yout du chemin est obtenue en appelant la

fonction Intersect pour la demi-droite d’origine ~yin et de direction ~ei.

n Étape 4 : la distance |~yout− ~yin| est ajoutée à l.

n Étape 5 : dans le cas des particules à géométrie concave, le chemin peut à

nouveau intersecter la particule (voir Fig.IV.11). On appelle donc la fonction Intersect pour la demi-droite d’origine ~yout et de direction ~ei :

n si aucune intersection avec la particule n’est trouvée, le chemin est défi-

nitivement sortie de la particule et l’algorithme s’arrête,

n sinon l’algorithme boucle à l’Étape 2 en remplaçant ~r0 par ~yout.

Échantillonnage sur la surface projetée P. L’obtention de la surface projetée d’une géométrie tridimensionnelle triangulée (y compris son aire) est une problématique à part entière que nous allons ici contourner. Plutôt que d’échantillonner une position directe- ment sur la surface projetée P comme dans le cas d’un cylindre ou d’un sphéroïde (voir Sec. IV.2.1), nous échantillonnons ici une position ~r0 sur une surface englobante Peng contenant P. Puis, nous testons si cette position ~r0 appartient à P en appelant la fonc- tion Intersect pour la demi-droite d’origine ~r0 et de direction ~ei : si une intersection

est trouvée, alors ~r0 ∈ P et les fonctions poids sont calculées selon les équations données dans Sec. IV.1 dans lesquelles l’aire P de P est remplacée par l’aire Peng de Peng; sinon

~

r0 6∈ P et les fonctions poids sont prises égales à zéro.

Pour illustrer ce qui vient d’être dit, nous allons détailler cette procédure sur la section efficace d’extinction ˆσext d’une particule isolée. Nous avons vu dans Sec. IV.1.1.1 que la

formulation intégrale correspondante est donnée par Eq. IV.5, que nous rappelons ci- dessous : ˆ σext(~eo, req) = ˆ P(~eo,req) d~r0pR0(~r0)wext(~r0, ~eo, req) (IV.154)

Chapitre IV : Approximation de Schiff 170 ~r0 ~ei ~yin ~yout l(~r0, ~ei) ~r00 ~ei ~y10 in ~y1 0 out ~y2 0 in ~y2 0 out l1(~r00, ~ei) l2(~r00, ~ei)

~r0

~ei

~y

in

~y

out l(~r0, ~ei)

~r00

~ei

~y

in10

~y

out10

~y

in20

~y

out20 l1(~r00, ~ei) l2(~r00, ~ei)

~ei

~y

in

~y

out l(~r0, ~ei)

~r00

~ei

~y

in10

~y

out10

~y

in20

~y

out20 l1(~r00, ~ei) l2(~r00, ~ei)

~ei

~y

in

~y

out l(~r0, ~ei)

~r00

~ei

~y

in10

~y

out10

~y

in20

~y

out20 l1(~r00, ~ei) l2(~r00, ~ei)

Figure IV.11 – Illustration du calcul de la longueur de traversée d’une particule à géométrie complexe (ici spiruline). Un premier cas est représenté : un chemin traversant une seule fois la particule sur une distance l(~r0, ~ei) est obtenu suite au calcul d’intersection entre la frontière de la particule et la demi-droite

d’origine ~r0(appartenant à la surface projetée P de la particule (non représentée ici)) et dirigée suivant la

direction d’incidence ~ei. Indépendamment du premier cas, un second cas est également représenté. Cette

fois-ci le chemin traversant la particule est obtenu en faisant la somme des deux chemins de longueurs

l1(~r00, ~ei) et l2(~r00, ~ei) obtenus suite aux calculs des intersections entre la frontière de la particule et la

demi-droite d’origine ~r00 ∈ P et dirigée suivant la direction d’incidence ~ei.

Cette formulation fait intervenir une intégrale sur la surface projetée P de la particule. Comme nous l’avons déjà mentionné, dès lors que la particule est à géométrie complexe, l’échantillonnage d’une position sur P est une difficulté. Afin d’utiliser la démarche propo- sée au début de ce paragraphe, nous reformulons l’intégrale Eq.IV.154de sorte à intégrer sur une surface englobante Peng connue contenant P. Pour ce faire, nous augmentons le

domaine d’intégration en introduisant une fonction de Heaviside H(~r0 ∈P):

ˆ σext(~eo, req) = ˆ Peng(~e o,req) d~r0pR0(~r0)  H(~r0 ∈P)× wext(~r0, ~eo, req) +H(~r0 ∈/ P)× 0  (IV.155) où wext(~r0, ~eo, req) est donné par Eq. IV.23. Cette écriture est bien équivalente à celle

donnée par Eq. IV.154 puisque la fonction de Heaviside permet de conserver seulement les positions qui appartiennent à la surface projetée P. Ensuite, on choisit d’échantillonner uniformément une position ~r0 sur la surface englobante Peng, ce qui conduit à définir une fonction densité de probabilité pR~0(~r0) donnée par :

pR~0(~r0) = 1 Peng(~e o, req) (IV.156) où Peng(~e

o, req) est l’aire de la surface englobante Pengqui est entièrement connue. Compte

notée ˚wext≡ ˚wext(~r0, ~eo, req), s’écrit : ˚ wext=    wext= 2Peng(~eo, req)  1 − e−keκrl(~r0,~eo,req)cos(k e(nr− 1)l(~r0, ~eo, req))  si ~r0 ∈ P 0 si ~r0 ∈ P/ (IV.157) L’algorithme de Monte Carlo s’énonce de la façon suivante :

Algorithme 11: Section efficace d’extinction - particule isolée - géométrie complexe

n Étape 1 : une position ~r0 est échantillonnée sur la surface englobante

Peng(~e

o, req) contenant la surface projetée P(~eo, req) de la particule, selon la

fonction densité de probabilité pR~0(~r0) (Eq. IV.156).

n Étape 2 : la fonction poids ˚wext(~r0, ~eo, req) pour cette réalisation de l’algo-

rithme est calculée via Eq. IV.157. Plus précisément :

n si ~r0 ∈ P, alors ˚wext= wext n si ~r0 ∈ P, alors ˚/ wext= 0

La démarche qui vient d’être présentée est applicable aux autres grandeurs étudiées dans ce manuscrit. En particulier, les fonctions poids sont égales à celles obtenues initia- lement à condition de remplacer l’aire P de la surface projetée P par l’aire Peng de la

surface englobante Peng lorsque la condition d’appartenance à P est vérifiée et sont prises

égales à 0 dans le cas échéant. À noter que dans le cas de la section efficace différentielle de diffusion, il faut que les deux positions échantillonnées se trouvent dans la surface projetée P pour que la fonction poids soit non nulle.

L’utilisation d’une surface englobante Peng nous a permis de contourner une difficulté

majeure puisque nous n’avons pas besoin de connaître la surface projetée de la particule. Toutefois, l’utilisation d’une telle surface Peng est une source de variance dès lors qu’elle

devient grande devant la surface projetée P de la particule. En pratique, ceci se traduit par une augmentation significative de l’écart type : la fonction poids est égale à zéro la plupart du temps et non nulle seulement de temps en temps. Par conséquent, il est nécessaire de choisir une surface englobante Peng qui soit une bonne approximation de la

surface projetée P. Notre choix pour Pengest donné dans le paragraphe suivant et pour les

géométries que nous avons traitées jusqu’à présent nous n’avons pas détecté de difficultés de convergence particulières liées à ce choix.

Échantillonnage de l’orientation de la particule. Redéfinir la représentation de la géométrie mise en mémoire vive5 à chaque nouvelle orientation de la particule (i.e. à

Vp ~r ~ei ∂Vp∩ D~r D~r ∂Vp P Vp Aucune intersection ~r ~ei P

Figure IV.12 – Illustration de l’échantillonnage d’une position sur la surface projetée P. Une position ~r

est uniformément échantillonnée sur une surface englobante Peng contenant la surface projetée P de la

particule. Puis, on cherche l’intersection entre la demi-droite D~rd’origine ~r et dirigée suivant la direction

incidente ~ei. Si une intersection est trouvée, alors la position ~r appartient à la surface projetée P (figure

de gauche) ; sinon ~r /∈ P (figure de droite).

chaque réalisation de l’algorithme) est très couteux en temps de calcul. Or nous avons vu dans Sec. IV.1.4 que les expressions des fonctions poids sont indépendantes de l’angle d’orientation φsca. On constate alors qu’échantillonner une orientation ~eo est strictement

équivalent à échantillonner une direction d’incidence ~ei. Par conséquent, pour tenir compte

de la distribution des orientations, il n’y a plus besoin d’aller modifier le fichier contenant la géométrie de la particule : l’orientation ~eo y sera fixée une fois pour toutes. Pour échan-

tillonner de façon isotrope une orientation, on procède de la façon suivante : on définit une sphère englobante Sengde rayon Reng contenant la particule, puis on échantillonne unifor- mément une position ~s sur la surface de Seng. On définit alors ~e

i comme étant le vecteur

unité qui depuis la position ~s pointe vers le centre de la sphère Seng (voir Fig.IV.13). On

vient ainsi d’échantillonner de façon isotrope la direction ~ei qui permet d’échantillonner

l’orientation de la particule. Par suite, la surface projetée de la particule correspondante à cette orientation est définie comme étant le disque tangent à la sphère à la position ~s et de

rayon Reng. On peut alors se reporter au paragraphe précédent afin d’échantillonner une position ~r0 sur ce disque. En tenant compte de la remarque mentionnée au paragraphe précédent, il est préférable de choisir la sphère englobante la plus petite possible afin d’éviter une augmentation de l’incertitude sur l’estimation de la grandeur considérée.

Échantillonnage de la taille de la particule. Comme mentionné précédemment, re- définir la représentation de la géométrie mise en RAM à chaque nouvelle taille de particule est couteux en temps de calcul. Par conséquent, en pratique, il n’est pas envisageable de modifier le fichier comportant la géométrie à chaque réalisation de l’algorithme de Monte Carlo afin de prendre en compte la distribution de taille des particules. Pour contourner ce problème, une astuce consiste à définir les dimensions de la géométrie considérée (don- née par une CAO) une fois pour toutes dans le fichier comportant la géométrie. Ceci fixe en particulier le volume de la particule que l’on notera VCAO

~ei Reng Reng Seng Peng ~s

Figure IV.13 – Illustration de l’échantillonnage de l’orientation d’une particule. Pour échantillonner de façon isotrope une orientation, on définit une sphère englobante Seng de rayon Reng contenant la particule, puis on échantillonne uniformément une position ~s sur la surface de Seng. On définit alors ~e

i

comme étant le vecteur unité qui depuis la position ~s pointe vers le centre de la sphère Seng, permettant

ainsi de définir l’orientation de la particule.

l’on souhaite étudier l’interaction entre un rayonnement incident de longueur d’onde λe

avec une particule de volume Vp caractérisée par son rayon req correspondant au rayon

équivalent de la sphère en volume. Puisque nous disposons seulement d’une particule de volume VCAO

p , nous réalisons un changement d’échelle en adaptant la longueur d’onde.

En notant δg =

VCAO

p

Vp

1/3

le rapport de changement d’échelle, la longueur d’onde que l’on doit prendre en compte dans le code est non pas λe mais λeδg. Le problème est

ainsi équivalent (voir Fig. IV.14). En particulier, le paramètre de taille est bien conservé :

xCAO = 2πreqCAO

δgλe =

2πreq

λe = x.

Échantillonnage de la forme des particules. Comme nous l’avons mentionné pour les distributions de taille et d’orientation, la prise en compte de la distribution des formes des particules nécessite également de modifier la représentation de la géométrie mise en mémoire vive à chaque réalisation de l’algorithme, ce qui est très couteux en temps de calcul. Mais cette fois-ci, contrairement aux paragraphes précédents, il n’y a pas d’astuce pour contourner ce problème. Par exemple, si une suspension est composée d’un mélange de particules de formes hélicoïdales et super-sphéroïdales, alors il faudra nécessairement modifier le fichier de géométrie à chaque réalisation de l’algorithme. Pour illustrer un tel algorithme prenons l’exemple de la section efficace différentielle Wsca donnée par la

Vp VCAO p rCAO eq req δg= VCAO p Vp 1 3 = r CAO eq req λe δgλe

Figure IV.14 – Schématisation de l’adaptation de la longueur d’onde du rayonnement incident en fonc- tion de la taille de la géométrie fixée. Soit une particule de volume Vp caractérisée par un rayon req,

correspondant au rayon équivalent de la sphère en volume, et soumise à un rayonnement incident de lon- gueur d’onde λe. La résolution du problème de diffusion pour une telle particule est équivalent à résoudre

le problème de diffusion pour une particule de volume VCAO caractérisée par un rayon rCAO

eq , et qui est

soumise à un rayonnement incident de longueur d’onde δgλe. La quantité δg étant le rapport entre les

deux rayons équivalents, soit δg =

rCAOeq req . de forme : Wsca(ϑsca) = ˆ DG~ d~gpG~(~g) ˆ 2 d~eopE~o(~eo) ˆ +∞ 0 dreqpReq(req) × ˆ P(~eo,req) d~r1pR~1(~r1) ˆ P(~eo,req) d~r2pR~2(~r2) ˇw(~r1, ~r2, ~eo, req, ϑsca) (IV.158)

que l’on choisit de réécrire sous une forme plus compacte suivante :

Wsca(ϑsca) = ˆ DG~ d~gpG~(~g) ˆ DY~ d~ypY~(~y) ˇw(~g, ~y) (IV.159)

où l’on a introduit la variable aléatoire ~Y = (~eo, req, ~r1, ~r2). L’algorithme correspondant à la formulation intégrale précédente s’énonce :

Algorithme 12: Échantillonnage d’une forme à chaque réalisation de l’al- gorithme

n Étape 1 : une forme ~g est échantillonnée selon pG~(~g).

n Étape 2 : un vecteur ~y (regroupant l’orientation ~eo, la taille req et deux

positions ~r1 et ~r2) est échantillonné selon pY~(~y).

n Étape 3 : la fonction poids ˇw(~g, ~y) pour cette réalisation de l’algorithme est

calculée.

Cet algorithme est coûteux en temps de calcul puisque l’on génère à chaque réalisation de l’algorithme une nouvelle géométrie qui implique de modifier le fichier contenant la

géométrie. Toutefois, suite aux travaux de Sebastian WEITZ, nous avons pu proposer une technique afin de mieux gérer la prise en compte des formes des particules [Weitz et al.,

2016]. L’idée est la suivante : pour chaque forme considérée au sein de la suspension, on échantillonne plusieurs chemins (au lieu d’échantillonner un chemin par forme comme dans l’algorithme précédent). Pour montrer l’intérêt de la technique, imaginons que l’on souhaite faire N réalisations de l’algorithme et que nous avons une suspension constituée de M formes (M < N voire même M  N ). Par conséquent, une même forme peut-être échantillonnée à plusieurs reprises, ce qui est couteux en temps de calcul. L’idée technique proposée par Sebastian WEITZ consiste à échantillonner plusieurs chemins pour chacune des M formes considérées (l’avantage est que l’on ne chargera jamais deux fois la même géométrie). L’algorithme correspondant devient :

Algorithme 13: Échantillonnage d’une forme - optimisation

n Étape 1 : une forme ~g est échantillonnée selon pG~(~g).

n Étape 2 : pour cette forme, on répète NY~ fois la procédure suivante :

n Étape 2.1 : un vecteur ~y (regroupant l’orientation ~eo, la taille req et

deux positions ~r1 et ~r2) est échantillonné selon pY~(~y). n Étape 2.2 : le poids de Monte Carlo ˇw(~g, ~y) est calculé.

On répète cet algorithme autant de fois qu’il y a de formes. À l’issue de cette procédure, on peut calculer une estimation de la grandeur considérée ainsi que son écart type. De plus, on est en mesure de fournir le nombre de réalisations NY~ optimal pour chacune des

formes [Weitz et al., 2016].

L’algorithme complet pour la section efficace d’extinction. Ce paragraphe a pour objectif de récapituler les étapes de l’algorithme pour la section efficace d’extinction (par exemple) en précisant les procédures d’échantillonnage qui viennent d’être détaillées.

Algorithme 14: Algorithme complet

n Étape 1 : une forme ~g est échantillonnée selon pG~(~g).

n Étape 2 : pour cette forme, on répète NY~ fois la procédure suivante :

n Étape 2.1 : une orientation ~ei est échantillonnée sur 4π suivant la fonc-

tion densité de probabilité pE~i(~ei).

n Étape 2.2 : un rayon req de la sphère équivalente en volume est échan-

n Étape 2.3 : une position ~r0 est échantillonnée sur la surface englobante

Peng(~e

o, req) contenant la surface projetée P(~eo, req) de la particule, selon

la fonction densité de probabilité pR~0(~r0) (Eq.IV.156).

n Étape 2.4 : la fonction poids ˚wext(~r0, ~eo, req) pour cette réalisation de

l’algorithme est calculée via Eq. IV.157. Plus précisément :

n Étape 2.4.1 si ~r0 ∈ P, alors on calcule la longueur de traversée ;

sinon l’algorithme boucle à l’étape 2.4.2 :

n Étape 2.4.1.1 : la longueur de traversée l est initialisée à 0. n Étape 2.4.1.2 : la position d’entrée ~yin du chemin dans la par-

ticule est obtenue en appelant la fonction Intersect pour la demi-droite d’origine ~r et de direction ~ei.

n Étape 2.4.1.3 : la position de sortie ~yout du chemin est obtenue

en appelant la fonction Intersect pour la demi-droite d’origine

~

yin et de direction ~ei.

n Étape 2.4.1.4 : la distance |~yout− ~yin| est ajoutée à l.

n Étape 2.4.1.5 : dans le cas des particules à géométrie concave, le

chemin peut à nouveau intersecter la particule (voir Fig. IV.11). On appelle donc la fonction Intersect pour la demi-droite d’ori- gine ~yout et de direction ~ei : si aucune intersection avec la parti-

cule n’est trouvée, le chemin est définitivement sortie de la parti- cule et l’algorithme s’arrête ; sinon l’algorithme boucle à l’étape

2.4.1.2 en remplaçant ~r0 par ~yout.

n Étape 2.4.1.6 : le poids de Monte Carlo ˚wext = wext est calculé

par Eq. IV.157.

n Étape 2.4.2 : si ~r0 ∈ P, alors ˚/ wext= 0

Le logiciel StarSchiff. C’est un logiciel libre, disponible à l’adresse suivante https:// gitlab.com/meso-star/schiff, développé, dans le cadre du projetALGUE, par la société

Documents relatifs