Prise en main de la commande schiff

Aperçu

Parcourir rapidement l'aide courte et la documentation de référence afin d'avoir un aperçu de leur contenu ; vous êtes encouragé(e)s à y revenir dès que vous sentirez le besoin de clarifier le sens de certains appels à la commande schiff que nous ferons :

schiff -h
man schiff
man schiff-geometry
man schiff-output

Premier calcul pour une sphère monodisperse

Pour une longueur d'onde de 0.7 micron, on souhaite évaluer les sections efficaces d'une particule sphérique de rayon 6 microns et d'indice de réfraction 1.1 -i 5.0e-03, dans un milieu non absorbant d'indice de réfraction 1.

Fichier spécifiant les indices de réfraction.

Un exemple de fichier respectant la grammaire décrite dans man schiff (section DESCRIPTION) est fourni avec ce TP, dans le dossier data. Lire ce fichier :

Copier le fichier dans le répertoire courant (TP1) et le lire :
cp ../data/index.txt index.txt
more index.txt    

Dans ce premier exemple, les indices de réfraction sont gris, dans la gamme de longueur d'ondes allant de 0.1 à 0.8 microns.

Fichier spécifiant la géométrie du diffuseur

Un exemple de fichier respectant la grammaire décrite dans man schiff-geometry est fourni avec ce TP, dans le dossier data. Copier le fichier dans le répertoire courant (TP1) et le lire :

cp ../data/case1.yaml sphere-cas1.yaml
more sphere-cas1.yaml

Lancer le calcul pour une longueur d'onde

Vous pouvez utiliser les options suivantes pour la commande schiff (il est conseillé de consulter le documentation man schiff pour voir à quoi ces options correspondent) :

schiff -i sphere-cas1.yaml -g 10000 -d 9 -D -l 150 -a 181 -A 181 -w 0.7 \ 
-o results.txt index.txt

Les résultats écrits dans le fichier results.txt suivent les spécifications décrites dans la documentation man schiff-output. On peut utiliser le script schiff_pretty_results.sh mis à disposition dans le dossier schiff-tools afin de les mettre en forme dans différents fichiers. C'est le fichier xsections.txt qui va nous intéresser dans ce TP : lire son contenu.

../schiff-tools/schiff_pretty_results.sh results.txt
more xsections.txt

Reprendre les étapes précédentes en modifiant les valeurs des options -g et -d pour observer comment le calcul converge en fonction du nombre de réalisations de l'algorithme de Monte Carlo (option -g) et du nombre de chemins échantillonnés pour chaque réalisation (option -d).

Sauvegarder ce fichier de résultats pour la suite :

cp xsections.txt xsections-cas1.txt

Analyse des résultats : bilan d'énergie

Les sections efficaces représentent la répartition de la puissance véhiculée par une onde plane incidente suite à son interaction avec une particule. On notera I la densité surfacique de puissance véhiculée par l'onde plane ([I] = [W/m^2]). La puissance absorbée par la particule s'exprime en fonction de la section efficace d'absorption C_A comme : P_A = I C_A [W], si C_A est exprimé en m^2. De même la puissance diffusée par la particule s'exprime en fonction de la section efficace de diffusion C_S comme : P_S = I C_S [W]. La section efficace d'extinction représente la puissance retirée à l'onde plane, c'est-à-dire la somme des puissances absorbées et diffusées : P_A + P_S = I C_E. La section efficace d'extinction est donc la somme des sections efficaces d'absorption et de diffusion : C_E = C_A + C_S.

Vérifier que cette relation est bien vérifiée dans vos résultats, à l'incertitude statistique près :

more xsections-cas1.txt  

Invariance d'échelle : le paramètre de taille

Les résultats du problème de diffusion d'une onde électromagnétique par une particule ne dépend que des indices de réfraction et du rapport "taille sur longueur d'onde". Il est d'usage d'utiliser le paramètre de taille pour représenter ce rapport : $x = 2\pi r/\lambda$, où $r$ est le rayon de la particule et $\lambda$ la longueur d'onde. Dans le cas étudié ci-dessus, x = 53.86.

Comparer des résultats correspondant au même paramètre de taille

Comparer les résultats obtenus pour deux configurations correspondant au même paramètre de taille et aux mêmes indices de réfraction. Pour cela, on définit une configuration dans laquelle la sphère fait 3 microns de rayon et on calcule ses sections efficaces pour une longueur d'onde de 0.35 microns : ici encore x = 53.86. En utilisant les mêmes indices de réfraction que dans l'exercice précédent, on pourra observer l'invariance d'échelle liée au paramètre de taille.

printf "sphere:\n    radius: 3" > sphere-cas2.yaml
schiff -i sphere-cas2.yaml -g 10000 -d 9 -D -l 150 -a 181 -A 181 -w 0.35 \
-o results.txt index.txt
../schiff-tools/schiff_pretty_results.sh results.txt
cp xsections.txt xsections-cas2.txt
more xsections-cas2.txt

Bien que les paramètres de taille soient égaux, les sections efficaces obtenues dans ce cas sont différentes de celles obtenues dans le cas précédent. En effet, ce ne sont pas les sections efficaces qui sont invariantes, mais les efficacités d'extinction, de diffusion et d'absorption. Nous allons travailler ces grandeurs dans la partie suivante.

Efficacités d'extinction, de diffusion, d'absorption

L'efficacité est définie comme le rapport de la section efficace divisée par la section géométrique de la particule (l'aire du disque de même rayon que la sphère dans le cas présent). On peut construire l'efficacité d'extinction à partir des résultats précédents, en divisant la colonne 2 du fichier xsections.txt par la colonne 8. En comparant le contenu des fichiers xsections-cas1.txt et xsections-cas2.txt, on constate bien que les efficacités sont égales.

Vous pouvez faire cela en affichant le contenu des fichiers et en évaluant les efficacités avec une calculatrice :

more xsections-cas1.txt
more xsections-cas2.txt

Vous pouvez aussi directement évaluer l'efficacité d'extinction dans dans le terminal :

echo "scale=4 ; $(grep -v '#' xsections-cas1.txt | cut -d ' ' -f 2)/\
$(grep -v '#' xsections-cas1.txt | cut -d ' ' -f 8)" | bc
echo "scale=4 ; $(grep -v '#' xsections-cas2.txt | cut -d ' ' -f 2)/\
$(grep -v '#' xsections-cas2.txt | cut -d ' ' -f 8)" | bc

Il en va de même pour les efficacités d'absorption :

echo "scale=4 ; $(grep -v '#' xsections-cas1.txt | cut -d ' ' -f 4)/\
$(grep -v '#' xsections-cas1.txt | cut -d ' ' -f 8)" | bc
echo "scale=4 ; $(grep -v '#' xsections-cas2.txt | cut -d ' ' -f 4)/\
$(grep -v '#' xsections-cas2.txt | cut -d ' ' -f 8)" | bc

Et pour l'efficacité de diffusion :

echo "scale=4 ; $(grep -v '#' xsections-cas1.txt | cut -d ' ' -f 6)/\
$(grep -v '#' xsections-cas1.txt | cut -d ' ' -f 8)" | bc
echo "scale=4 ; $(grep -v '#' xsections-cas2.txt | cut -d ' ' -f 6)/\
$(grep -v '#' xsections-cas2.txt | cut -d ' ' -f 8)" | bc

Tout comme la section efficace d'extinction est la somme des sections efficaces d'absorption et de diffusion, l'efficacité d'extinction est la somme des efficacités d'absorption et de diffusion. Vous devriez retrouver cette propriété dans les résultats précédents, à l'incertitude statistique près.

Limite aux grands paramètres de taille : paradoxe de l'extinction

Un résultat bien connu de la diffusion des ondes électromagnétiques par une particule est que l'efficacité d'extinction tend asymptotiquement vers 2 lorsque la taille de la particule devient très grande devant la longueur d'onde ($x \to +\infty$). Ce résultat est communément appelé "paradoxe de l'extinction" car il peut paraître surprenant que, dans la limite des grandes particules pour lesquelles l'optique géométrique s'applique, la particule retire à l'onde plane incidente le double de la puissance qu'elle reçoit. En effet, dans la limite des grands paramètres de taille il n'y a plus d'effets de résonance. La particule reçoit donc simplement la densité surfacique de puissance véhiculée par l'onde plane, multipliée par sa surface projetée : comment peut-elle retirer 2 fois cette puissance à l'onde plane ? C'est l'objet de la partie suivante.

Calcul d'un spectre

On peut lancer le calcul d'un spectre en une ligne de commande. Par exemple pour les longueurs d'ondes 0.1, 0.3 et 0.5 micron (voir man schiff) :

schiff -i sphere-cas1.yaml -g 10000 -d 10 -D -l 150 -a 181 -A 181 \
-w 0.1:0.3:0.5 -o results.txt index.txt
../schiff-tools/schiff_pretty_results.sh results.txt
more xsections.txt

Pour toutes les longueurs d'ondes comprises entre 0.1 micron et 0.8 micron par pas de 0.01 microns, on peut au choix lister toutes les valeurs "à la main" derrière l'option -w, ou utiliser la commande seq (voir man seq) :

schiff -i sphere-cas1.yaml -g 10000 -d 10 -D -l 150 -a 181 -A 181 \
-w $(LANG=en_US seq -s ":" 0.1 0.01 0.8) -o results.txt index.txt
../schiff-tools/schiff_pretty_results.sh results.txt
cp xsections.txt xsections-spectre.txt
more xsections-spectre.txt

Les indices de réfraction définis dans le fichier index.txt étant indépendants de la longueur d'onde, le résultat produit peut s'analyser comme la variation des efficacités en fonction du paramètre de taille. Pour cela, à chaque ligne du fichier xsections-spectre.txt il faut construire la valeur du paramètre de taille à partir de la première colonne et de la taille de la particule (voir "more sphere-cas1.yaml"), puis construire la valeur des efficacités comme précédemment, par division des colonnes 2, 4 et 6 par la colonne 8.

Le script gnuplot nommé efficacite.plot est une proposition produisant un tracé des efficacités en fonction du paramètre de taille :

gnuplot -p efficacite.plot

On observe bien que l'efficacité d'extinction tend vers 2 lorsque x devient grand. Plus précisément, l'efficacité d'absorption tend vers 1 et l'efficacité de diffusion tend elle aussi vers 1. On observe aussi des oscillations de l'efficacité de diffusion (et d'extinction) avant d'atteindre ces asymptotes : ce sont les résonances au sein de la particule qui peuvent mener à des valeurs de section efficace tantôt élevées, tantôt faibles, en fonction du rapport taille sur longueur d'onde.

Fonction de phase

Mais alors comment comprendre le paradoxe de l'extinction ? Une manière se rassurer est d'observer la fonction de phase dans la limite des grands paramètres de taille : celle-ci est de plus en plus piquée et tend vers une distribution delta de Dirac centrée sur la direction d'incidence. Ainsi, même si l'efficacité de diffusion tend vers 1, le rayonnement diffusé ne l'est pas vraiment : il continue à se propager dans la même direction que celle de l'onde plane incidente. Il n'y a donc pas d'effet de la diffusion (voir aussi le concept d'algorithme à collisions nulles en transfert de rayonnement). L'efficacité d'absorption tendant vers 1, la particule retire donc bien à l'onde plane exactement la puissance qu'elle reçoit.

Exécuter la commande schiff après avoir renseigné les options liées au calcul de la fonction de phase (voir man schiff). Nous allons comparer les fonctions de phase pour une longueur d'onde de 0.3, 0.4 et 0.8 microns ; soit x = 126, 94 et 47. Après mise en forme des résultats, les fonctions de phase correspondantes sont tabulées dans les fichiers func_0.3.txt, func_0.4.txt et func_0.8.txt, respectivement. Lire l'entête d'un de ces fichiers, par exemple celui pour une longueur d'onde de 0.8 micron, afin d'en comprendre la structure :

schiff -i sphere-cas1.yaml -g 10000 -d 1000 -D -l 3 -a 1000 -A 1000 \
-w 0.3:0.4:0.8 -o results.txt index.txt
../schiff-tools/schiff_pretty_results.sh results.txt
more func_0.8.txt

On peut en suite tracer les trois fonctions de phase obtenues pour les petits angles de diffusion (entre 0 et 0.1 radians par exemple) et constater comment celle-ci devient de plus en plus piquée vers l'avant à mesure que le paramètre de taille augmente (donc que la longueur d'onde diminue, pour une taille de particule donnée) :

echo -e "set xrange [0:0.1]\n plot 'func_0.8.txt' with errorbars, \
'func_0.4.txt' with errorbars, 'func_0.3.txt' with errorbars" | gnuplot -p