Ces pages constituent l'introduction d'un cours sur la modélisation et la simulation à l'échelle atomique donné aux étudiants du Master 2 de Physique de l'Université Paul Sabatier de Toulouse et aux étudiants de 5ème année de l'INSA de Toulouse pendant plusieurs années.
Seule la partie "Introduction générale" que j'ai assurée est décrite ici.
Quest-ce qu'un chercheur ?
Modélisation et Simulation : comment utiliser un ordinateur ...
Plan du cours
Introduction générale (G. Landa, LAAS)
Calculs ab-initio de la structure électronique des matériaux (L. Calmels, CEMES)
Monte-carlo, croissance, interfaces organiques/inorganiques (M. Djafari-Rouhani, A. Estève, LAAS)
Application de la simulation atomistique à la science des surfaces (H. Tang, CEMES)
Quelles sont les motivations ?
éliminer les approximations souvent nécessaires au traitement analytique d'un problème, lorsqu'il y a une solution ...
systèmes complexes : comportement, on peut aller bien au-delà des possibilités analytiques
possibilité de confrontation de modèles à l'expérience
remplir le "gap" entre théorie et expérience : certaines quantités peuvent être difficilement
mesurables, on peut les calculer par simulation
Point de départ : ingrédients
Important ! Bien prendre en compte les processus physiques sous-jacents lors de la simulation.
Méthode :
Il faut toujours un modèle parfaitement bien défini du système physique
un algorithme de résolution numérique des équations
un langage informatique : FORTRAN ou C ou Python
Les méthodes de simulation
Le Top du Top :
forces interatomiques : que sont-elles ?
on peut répondre à partir des premiers principes (calculs ab initio) en résolvant les éq.
de la mécanique quantique pour les constituants atomiques, les électrons et les noyaux.
Problème : les calculs ab initio sont très gourmands en puissance de calcul, on est limité à quelques centaines d'atomes même
sur les calculateurs les plus puissants.
Plus classique ...
Des modèles plus classiques font intervenir des potentiels interatomiques empiriques qui permettent alors de traiter plusieurs millions d'atomes.
Ceci rend possible la simulation de situations complexes : fusion, croissance, diffusion, déformations plastiques, ...
Méthodes déterministes
On traite de la dynamique classique $\equiv$ les équations du mouvement
Tous les degrés de liberté sont explicitement pris en compte
Pas d'éléments stochastiques
Choix d'un formalisme :
Newton : la deuxième loi de Newton relie la force sur un objet et son accélération
à travers la quantité de mouvement $\vec{p}=m\vec{v}$ :
\[
\vec{F}(\vec{r},\vec{v},t)=\frac{d\vec{p}}{dt}=\frac{d(m\vec{v})}{dt}=m\frac{d\vec{v}}{dt}+
\vec{v}\frac{dm}{dt}\mathop{=}\limits^{m={\rm const}}m\vec{a}
\]
Les méthodes de dynamique moléculaire calculent les trajectoires dans
l'espace des phases d'une collection de molécules qui obéissent individuellement
aux lois classiques du mouvement.
On calcule les propriétés statiques et dynamiques en utilisant les équations du mouvement que l'on va résoudre
numériquement.
Méthode :
on discrétise le problème et donc on introduit une erreur (passage variables continues -> variables discrêtes).
En particulier la discrétisation du temps est arbitraire et dépend du compromis entre la précision et l'échelle que l'on veut atteindre.
cette erreur peut-être aussi petite que souhaitée (dépend de la vitesse et de la mémoire de l'ordinateur).
domaines d'intérêts : physique, chimie et biochimie où elles servent à déterminer les structures de molécules complexes
comme les protéines.
elles reposent sur la résolution numérique de l'équation de la dynamique classique, la résolution des équations du
mouvement est rendue possible par la donnée d'un potentiel représentant les interactions entre les
particules constituant le système étudié.
Méthodes stochastiques
Les méthodes stochastiques sont basées sur les concepts développés dans la théorie des probabilités et dans la physique statistique.
On distingue essentiellement deux cas :
Dynamique Brownienne : Dans cette méthode on calcule les trajectoires, dans l'espace des phases, d'une collection de molélcules qui obéissent individuellement à l'équation de Langevin dans un champ de forces :
$m{{dv}\over{dt} }= R(t) - \beta v$, où R(t) est une force aléatoire (thermostat).
Méthode de Monte-Carlo : on considère les solutions du problème comme les paramètres d'une population, une séquence
aléatoire de nombres permet de construire un exemple de telle population, à partir de laquelle une estimation statistique des paramètres peut être effectuée.
on fait intervenir le hasard dans la recherche de la solution.
Plus on augmente le nombre d'expériences, plus on se rapproche de la solution
exacte.
Exemple : expérience de Buffon
On peut considérer l'expérience de l'aiguille de Buffon (1707-1788) comme l'ancêtre des techniques de Monte Carlo :
il a pu déterminer le nombre $\pi$ à l'aide d'une simple aiguille et d'un parquet.
Ce dernier constitue un réseau de lignes droites équidistantes deux à deux, notons D cette espacement.
L'aiguille, très fine, a une longueur L inférieure à D. L'expérience consiste à laisser tomber un grand
nombre de fois l'aiguille sur le parquet et à compter le nombre de fois où l'aiguille chevauche une des
lignes:
c'est une approche statistique, le caractère chaotique de la chute de l'aiguille rendant l'expérience
parfaitement aléatoire. Par ailleurs, un calcul simple donne la probabilité pour que l'aiguille coupe une
ligne:
\[
P=2\frac{L}{\pi D}
\]
Selon un principe bien connu, si l'on répète l'expérience un grand nombre de fois, le résultat statistique
doit tendre vers la prévision probabiliste et en constitue donc une évaluation.
Connaissant donc P, L et D, on peut ainsi estimer la valeur numérique de $\pi$.
La précision de ce résultat est directement liée au nombre d'expériences réalisées: à l'exclusion des erreurs systématiques (par exemple des fluctuations de L liées à la qualité du plancher), on peut donc à la limite avoir une précision infinie si le nombre d'expériences tend vers l'infini.
D'un point de vue algorithmique, il est intéressant de noter que, comparativement à d'autres méthodes
numériques, l'efficacité d'un calcul Monte-Carlo augmente quand la dimension du problème augmente:
pour une étude à l'échelle mésoscopique, ceci donne un avantage indéniable aux techniques Monte-
Carlo face aux méthodes de dynamique moléculaire.
Algorithmes génétiques
reproduire artifiellement le processus naturel de l'évolution.
On agit sur une poulation d'individus qu'on fait évoluer dans le temps.
Simulation multi-échelle et/ou multi-modèle
systèmes complexes : nécessité de simuler une large gamme d'espace et de temps
Faire travailler coopérativement des programmes qui s'adressent à des échelles différentes
Les paramètres calculés à une échelle servent d'``input'' pour les modèles suivants
Les domaines d'application
Matériaux
Nano- et Bio-nano-technologies
Economie
...
Les moyens et les limites de la simulation
Les outils
récupérer et améliorer le code existant
utiliser du code commercial
cela dépend des contraintes du problème à traiter et du degré d'investissement souhaité !
Quelques principes de base pour attaquer de gros problèmes
Tout problème compliqué doit être découpé en sous-problèmes simples.
le problème à résoudre P est découpé en $P_1, P_2, ...$ plus simples,
chacun des $P_i$ est ensuite découpé en $P_i1, P_i2, P_i3, ...,$ etc
On continue cette découpe jusqu'à ce que l'on n'ait plus qu'à résoudre des
problèmes élémentaires. Chacun traité dans un module, regroupés en modules
plus complexes jusqu'à retrouver le problème initial.
Qu'est-ce qu'un module ?
En FORTRAN, un sous-programme, quasiment étanche du reste du monde, le seul
lien est constitué par les paramètres transmis en arguments et les "common".
L'idée est de pouvoir modifier un sous-programme sans se préoccupet de ce qui
se passe ailleurs !
Combiner des programmes et des instructions unix
une bonne idée est : séparer les parties calculs des parties traitements
faire des fichiers de scripts ...
Déboggage (recherche des bugs)
à la compilation
commencer par les premières erreurs ... en effet une erreur peut en générer beaucoup d'autres
lire les messages d'erreur, souvent plus explicites qu'ils n'y paraissent !
variables mal déclarées, position de caractères dans mauvaise colonnes en FORTRAN (6 et >72), mauvaise tabulation en Python, absence de ";" en C ...
à l'exécution
compiler avec une option de vérification des dimensions de tableaux "range checking" (-C)
utiliser un déboggueur, pour cela il faut compiler le programme avec l'option de déboggage (-g), cela permet l'exécution pas-à-pas et le sondage des variables
débogguer à "l'arrache" : on insère des instructions d'affichage dans des endroits stratégiques
ne pas s'énerver, prendre l'air ou un café
Trivial mais presque jamais fait : vérifier ce que donne le progamme, utiliser un cas où le résultat est connu !
Les limites de la simulation
Vitesse finie : celle du processeur, en général quelques millions de multiplications reelles par seconde
Cadence du processeur : proportionnelle à la vitesse d'exécution des instructions, chaque impulsion déclenche une action de calcul
Précision finie : représentation finie des objets, la solution est d'utiliser des conditions aux limites
Temps d'accès à l'information :
mémoire quelques $10^{-9}~s$
disque quelques $10^{-3}~s$
pb: lenteur d'accès ~ disque dur, compensé par fort parallèlisme
temps d'observation finis
taille finie du système étudié : problèmes de stockage, quelques 10 millions à quelques milliards de mots (1 mot = 4 octets)
Limitations matérielles
une des limitation importante : la cadence du processeur,
proportionnelle à la vitesse d'exécution des instructions
chaque impulsion déclenche une action de calcul
Mesure des performances : quelques dizaines de teraflops !
MIPS : Million d'Instructions Par Seconde - rapidité moyenne d'exécution des
instructions
FLOPS : OPérations en virgule FLottante Par Seconde - capacité à réaliser des
calculs scientifiques
concernant le stockage :
limite physique : 1 bit par atome
disque dur : 1.5 Gbit/cm-2
futur : 10 Gbit /cm-3 (1 jeu de cartes = 1500 CDRoms)