• Aucun résultat trouvé

Introduction du chapitre 2

2.3 Code de simulation numérique sur réseau

2.3.1 Principe

Nous disposons d'un outil de simulation numérique an d'étudier le comportement des systèmes dipolaires. Le programme que nous utilisons se nomme Champdip, il a été écrit en langage C par Jean Jeener puis modié par François Marion et Pierre-Jean Nacher. Le principe d'origine est décrit en détails dans [2, 68], il consiste à discrétiser l'espace sur un réseau cubique. On calcule ensuite l'évolution classique de l'aimantation dans le référentiel tournant62 sur ce ré-seau grâce à un algorithme de Runge-Kutta. L'utilisation de la transformée de Fourier rapide permet d'accélérer fortement le calcul de champ dipolaire63. Ainsi, à partir d'une distribution d'aimantation dans l'espace réel, le programme calcule par FFT sa transformée, puis le champ dipolaire dans l'espace réciproque, et en fournit les valeurs ensuite dans l'espace réel par FFT inverse.

Malheureusement, l'utilisation de la FFT impose d'utiliser des conditions aux limites pério-diques. De plus l'algorithme de Cooley-Tukey pour la FFT impose un échantillonnage dont le nombre de sites est une puissance de 2 dans toutes les directions de l'espace. Ainsi, lors de la simulation d'un échantillon, le calcul du champ dipolaire fait apparaître des termes cor-62. L'annexe B donne les équations d'évolution de l'aimantation dans le référentiel tournant.

2.3. Code de simulation numérique sur réseau ' & $ % Sites vides Cellule élémentaire

Echantillon de taille finie

Sites aimantés

Figure 2.29  Schéma en coupe du modèle de spin sur réseau employé pour calculer la dynamique complète des eets dipolaires par FFT. Les spins sont placés aux n÷uds d'une cellule élémentaire cubique (ou une partie de celle-ci pour la simulation d'un échantillon de taille nie). Des conditions aux limites périodiques permettent un calcul simple par décomposition en modes de Fourier.

respondant aux couplages avec les répliques de cet échantillon introduites par les conditions périodiques. François Marion a montré par la simulation que l'on peut négliger l'inuence de ces répliques dès lors que des espaces susants sont insérés entre celles-ci64.

La plupart des simulations sont réalisées pour des géométries cubiques de NxNxN sites (N sites dans chaque dimension) entre chaque réplique on place T trous. Ainsi la période P utilisée pour le calcul de la transformée de Fourier est N+T. On dénit la nomenclature N/P pour un tel échantillon cubique qui indique le nombre de sites dans une dimension et la période spatiale utilisée pour le calcul de la transformée de Fourier.

Remarque

L'algorithme de résolution de l'équation diérentielle est un algorithme de Runge-Kutta 4-6 à pas adaptatif : il s'agit d'un algorithme qui fait une estimation de deux solutions (une à l'ordre 4 et une à l'ordre 6) pour un pas de taille donnée et qui en déduit une estimation à l'ordre 7 avec une estimation de l'erreur [69]. Une routine compare cette erreur à l'erreur maximale désirée par l'utilisateur. Si l'erreur est trop importante, le calcul est refait pour un pas plus petit, sinon la routine adapte la taille du pas de manière à minimiser le temps de calcul du programme. Une fonction mathématique permet d'estimer quel est le plus grand pas pour lequel l'erreur estimée sera très sûrement plus faible que l'erreur maximale désirée. Durant la thèse de F. Marion, le terme de diusion était calculé dans l'espace de Fourier dans lequel son expression est locale, en eet T F (D∆ ~M (~r)) = Dk2M

~k. Comme la transformée de Fourier et la transformée de Fourier inverse sont utilisées pour le calcul du champ dipolaire, le calcul du terme de diusion suivant cette technique ne demande pas beaucoup de temps de calcul. Cependant, la validité du terme de diusion calculé est limitée aux échantillons innis périodiques, les eets de bord n'étant pas pris en compte pour des échantillons nis à réplique. Nous avons donc remplacé le calcul du terme de diusion par transformée de Fourier par un calcul réalisé dans l'espace réel en utilisant une version discrétisée du Laplacien, en eet

∆ ~M = ∂2M /∂x~ 2+ ∂2M /∂y~ 2+ ∂2M /∂z~ 2 (2.53) 64. L'annexe G discute cet aspect d'un point de vue théorique.

et, par exemple :

2M /∂x~ 2 ' (2 ~M (~r) − ~M (~r − aˆx) − ~M (~r + aˆx))/a2 (2.54) où a est le pas du réseau.

Les conditions aux limites pour un échantillon ni ne peuvent être utilisées que pour un échan-tillon parallélépipédique dans la version actuelle du programme Champdip. L'approche adaptée consiste à dénir une condition de réexion par rapport au plan de la face du cube considéré pour le calcul du terme de diusion pour un site sur l'un des bords. Ainsi l'aimantation en dehors de l'échantillon prise en compte pour le calcul est l'image par réexion sur ce bord de l'aimantation dans l'échantillon, ce qui force un terme de ux d'aimantation nul à travers ce dernier.

2.3.2 Contributions personnelles au programme Champdip

Le programme au début de cette thèse était constitué d'un chier C et utilisait principalement des routines de Numerical Recipes [69] légèrement modiées par Jean Jeener pour la FFT et l'algorithme de Runge-Kutta.

Durant cette thèse, la majeure partie du programme a été réécrite. Les modications les plus importantes eectuées sont les suivantes :

 Mise en place d'un système de modules pour adapter la complexité de l'algorithme à la tache demandée. Il est ainsi possible d'activer ou de désactiver plusieurs fonctionnalités de calcul, de modélisation, d'achage et d'enregistrement des données. Cette amélioration permet d'apporter de très importants gains de temps (dans les cas où le champ dipolaire n'est pas pris en compte par exemple) et une souplesse dans la modication éventuelle du programme.

 Remplacement de l'algorithme de FFT habituel (dont on peut trouver les sources dans [69]) par l'algorithme FFTW65 développé par le MIT. Cet algorithme est beaucoup plus rapide que l'algorithme FFT usuel (un facteur 10 à 20 peut être gagné) et beaucoup plus souple puisqu'il permet de calculer la transformée de Fourier pour des nombres de sites quelconques (et pas seulement pour des nombre de sites qui sont des puissances de 2 pour l'algorithme de Cooley-Tukey). Par ailleurs, l'utilisation de la transformée de Fourier semi-complexe 3D (transformée de Fourier d'une fonction réelle qui prend en compte la symétrie des coecients dans l'espace réciproque) en lieu et place de la transformée de Fourier 3D usuelle permet de gagner un facteur 8 sur la taille de la transformée à eectuer.

 Modication de la routine du choix du pas de calcul pour prendre en compte les disconti-nuités de l'équation d'évolution introduites par la séquence RMN. Cette modication s'est révélée nécessaire lorsque nous avons observé que le pas de calcul tendait vers 0 lors d'une discontinuité de l'équation diérentielle (car l'erreur estimée par le code explose dans ce cas) ce qui ralentissait beaucoup le programme et était une source d'erreur potentielle. Cette mo-dication a permis de gagner un facteur 10 en vitesse de calcul pendant l'application des sandwiches magiques. On a pu observer des facteurs plus important (jusqu'à 160) lorsque la précision requise du calcul était importante.

 Modication du calcul du terme de diusion (voir le paragraphe précédent).

 Modication de l'interface utilisateur pour la programmation des séquences. Cette modi-cation permet de saisir de manière simple et intuitive n'importe quelle séquence RMN (des séquences adiabatiques ont pu être simulées). Cette modication n'a pas fait gagner de 65. http ://www.tw.org/

2.3. Code de simulation numérique sur réseau temps de calcul mais a évité la perte de temps considérable due aux erreurs engendrées par un mauvais contrôle des séquences programmées. Il s'agit probablement de la modication la plus importante sur le long terme.

 Le code a été intensivement commenté sousDoxygen66et une documentation complète a pu être éditée de manière à permettre aux futurs utilisateurs de compiler et modier le code. De nombreuses options de calculs sont à présent disponibles telles que, par exemple, la prise en compte de l'amortissement cohérent, du facteur de forme des bobines B1, l'inuence du bruit électronique, la possibilité d'implémenter des séquences de rf, de gradients de champ, de rotations instantanées, de champ dipolaires eectifs. Le programme Champdip est désormais versatile et peut être utilisé dans de nombreux contextes. Nous l'avons par exemple adapté pour pouvoir calculer l'évolution RMN dans le Xénon hyperpolarisé [70] pour étudier les expériences réalisées au CEA Saclay par l'équipe d'H. Desvaux.

Chapitre 3