Il faut créer des particules là où la vorticité n'est
pas nulle. A l'instant
la vorticité est non nulle lorsque
et lorsque
Comme initialement dans notre simulation le flux est nul, il suffit
de créer des particules d'intensité
pour les
tels que
NB : pour plus d'efficacité lors du calcul particules/particules,
nous stockons
où
est le support d'une particule (ici
).
Les particules sont distribuées sur la grille par projection de type
spline (nommé M4') sur un support de
points sur la grille.
Soient les sommets de la grille où la projection a lieu
et soient les
les poids associé à chacun de ces sommets
; pour une quantité
transportée par la particule, nous obtenons
les quantités
associées en chacun des sommets
:
avec
et :
et similairement pour les par rapport à
.
Ici les représentent la position relative de la particule
par rapport au sommet
en ``unité de sommets''
: par exemple
,
et
est
la distance entre la particule et le sommet de coordonnées entières
inférieures.
Le but est de résoudre l'équation de Poisson suivante :
Pour ce faire il existe deux méthodes : la première par différences finies et la seconde en passant dans l'espace de Fourier.
Ici nous proposons une résolution de type explicite en partant de l'équation :
En développant à l'ordre 1, nous obtenons les sur la
grille de la manière suivante :
où
La résolution se fait par un schéma itératif avec initialement
nulle en tout point et avec condition d'arrêt
.
Nous partons de l'hypothèse que le flux est périodique dans les deux
directions. Nous pouvons alors résoudre simplement l'équation de Poisson
dans l'espace de Fourier. Pour une fonction nous noterons
sa transformée de Fourier
telle que :
(où ).
Dans l'espace de Fourier, notre équation de Poisson s'écrit donc :
En développant les dérivées secondes :
nous obtenons :
Sur une grille régulière il est donc facile de trouver
de la manière suivante :
où représente la
fréquence dans l'espace de
Fourier définit par la transformée, soit dans notre cas :
Il suffit maitenant d'inverser la transformation pour obtenir
:
Attention : si l'on utilise un package de calcul
de transformées de Fourier (par exemple avec Matlab ou FFTW) il faut
faire attention à bien utiliser les fréquences positives ET négatives
(l'indice du tableau dans l'espace de Fourier permet de définir
les fréquences positives ET négatives) suivant la définition de leur
transformation et la disposition en mémoire des données. De même,
pour gagner en vitesse, la plupart du temps le résultat est non normalisé,
avec FFTW il faudra diviser par
pour obtenir le résultat
correct après transformation inverse.
Par définition, nous avons :
Nous obtenons donc le champ de vitesse par dérivation
de la fonction stream.
La level-set étant transportée par le fluide, nous avons :
où
La tension superficielle est fonction de la courbure déduite
de la fonction level-set
et du paramètre de tension
.
La courbure est définie comme suit :
On peut maintenant définir la tension :
qui grâce à la fonction dirac
a un support limité
aux zéros de la level-set.
Pour plus de stabilité lors de l'advection sur les particules nous
utilisons un schéma de type RK4. Si , alors pour un pas
de temps
, soient :
Nous obtenons :
Ce schméma est adopté notament pour trouver les vitesses en chaque
particule à partir de la grille par distribution de la grille sur
chaque particule (par la méthode (inversée) décrite en (1.2)).
Ensuite les particules sont déplacées et leur vorticité mise-à-jour
selon :
,
-
,
La level-set est simplement transportée (advectée) par le fluide :
Nous supprimons après chaque itération les particules ne transportant
plus de vorticité car elles n'interviendront plus dans les calculs.
Pour ce faire, nous projetons à nouveau les particules sur la grille,
supprimons les anciennes particules et en créons de nouvelles là où
il y a de la vorticité (cf. Initialisation en (1.1)).
Ces nouvelles particules repartent alors des sommets ``entiers''
de la grille.
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 -show_section_numbers doc.tex
The translation was initiated by Mathieu Coquerelle on 2005-02-07