Les méthodes de simulation moléculaire

Discussion pour un possible tutoriel

a marqué ce sujet comme résolu.

Comme proposé dans le sujet dédié, j'ouvre un sujet pour discuter de la possibilité, du niveau requis et de la manière d'aborder un tutoriel sur les méthodes de simulation moléculaire (Monte-Carlo et dynamique moléculaire), en ayant une approche un peu à cheval entre science et programmation.

Voici un résumé du débat qui a eu lieu:


Python est pas mal utilisé pour le calcul scientifique, et j'aime beaucoup les sujets qui tournent autour de simulations, comme le coup des automates cellulaires pour modéliser un feu de forêt. Je n'ai pas le temps cette année ni l'année prochaine si je fais 5/2, mais vu qu'on a déjà du contenu sur la méthode d'Euler je pense que ça serait cool d'avoir plus de tutos et d'articles sur la programmation scientifique, des techniques de simulation etc.

Je me tâtais à essayer quelque chose sur les techniques de simulation moléculaire (Monte-Carlo et Dynamique moléculaire) à mis chemin entre science et programmation, en Python. Mais je ne sais pas si ça serait lu ou pas, et puis ça demanderai pas mal de temps !

Luthaf

Je me tâtais à essayer quelque chose sur les techniques de simulation moléculaire (Monte-Carlo et Dynamique moléculaire) à mis chemin entre science et programmation, en Python. Mais je ne sais pas si ça serait lu ou pas, et puis ça demanderai pas mal de temps !

Luthaf

Si le public existe effectivement, je me propose comme co-auteur. C'est le genre de sujet que je connais assez bien et qui m'amuse beaucoup. J'ai déjà pas mal de truc de lancé à l'heure actuelle, mais j'imagine que tu ne va de toute façon pas foncer immédiatement dessus. ^^

Gabbro

Ça serait vraiment très sympa. Si en plus vous arrivez à rendre ça accessible à quelqu'un n'ayant pas de grandes connaissances physiques, ça serait un contenu original et intéressant.

J'aime beaucoup cette idée d'avoir un mix entre sciences physiques et info, tout en restant accessible. Si vous trouvez lr temps ça serait super et ça rendrait ZdS plus attractif d'avoir de tels contenus atypiques.

Grimur

Je ne sais pas si avoir des contenus qui ne seront utilisable quasiment que par des étudiants en master serait spécialement attractif. Il y a plusieurs raisons pour laquelle ce genre de chose n'est enseignée qu'à de hauts niveaux d'études, la plus importante d'entre elles étant qu'il faut avoir un problème sur lequel utiliser ces méthodes avant qu'il y ait un quelconque intérêt à se pencher dessus. Or, ce genre de problème demande bien souvent un niveau en physique et mathématiques relativement élevé avant d'être abordable.

Je ne dis pas que ça ne vaut pas le coup d'écrire ce genre de tuto (au contraire même), je dis que va être particulièrement difficile à rendre accessible et intéressant en même temps parce qu'il s'agit tout de même d'outils relativement pointus qui demandent une certaine polyvalence pour être manipulés. Passée la méthode d'Euler et quelques autres schémas très simplistes, on part vite dans des trucs plutôt complexes…

adri1

J'ai jamais fait de simulation moléculaire mais les algorithmes type Monte-Carlo sont souvent plutôt simples, non ? Il faudra que je regarde.

Grimur

Monte-Carlo, c'est pas la mer à boire tout seul, effectivement. En même temps, c'est à peu près la méthode la plus rudimentaire d'exploration stochastique d'un espace de paramètres que tu puisses imaginer. On parle vraiment d'un outil mathématique de base. Maintenant, rajoute la couche "dynamique moléculaire", et tu te retrouves à parler de densité de probabilité de présence d'électrons et de tenseur diélectrique avant d'avoir le temps de dire ouf.

adri1

Monte-Carlo + Metropolis, un simple système d'Ising suffit (ok, ça reste niveau L3, mais ce n'est pas le plus compliqué d'un point de vue modèle).

La dynamique moléculaire peut aussi servir à simuler un mouvement brownien.

On peut faire plus simple que les tenseurs diélectrique, et plus riche qu'un Monte-Carlo tout bête, quand même. :D

Gabbro

Si tu arrives à présenter le modèle d'Ising de façon accessible au physicien néophyte moyen, Monte-Carlo ou Metropolis sera le cadet de tes soucis de toute façon. ^^ Et c'est bien le problème que j'essaye de soulever, les problèmes physiques seront probablement plus compliqués à présenter (à la fois sur l'aspect physique que mathématique d'ailleurs) que les méthodes numériques qui vont avec.

adri1

Je ne dis pas que ça ne vaut pas le coup d'écrire ce genre de tuto (au contraire même), je dis que va être particulièrement difficile à rendre accessible et intéressant en même temps

C'est ce qui me fait hésiter, parce que parler de symplecticité, de reversibilité ou de l'odre d'un intégrateur n'est pas le plus simple pour attirer des lecteurs. En même temps il doit être possible d'aborder la dynamique moléculaire en mode chocs entre des billes dans une enceinte, et du coup de se reposer sur l'intuition physique des lecteurs. Beaucoup plus qu'avec le Monte-Carlo qui est très cool mais peu intuitif !

J'ai jamais fait de simulation moléculaire mais les algorithmes type Monte-Carlo sont souvent plutôt simples, non ? Il faudra que je regarde.

Les algos sont simples dans tous les cas, la théorie derrière est très complexe dans le cas du Monte-Carlo (on parle de chaines de Markov et de stationarité), et simple pour la dynamique moléculaire (on fait l'hypothèse que notre système a une évolution qui obéit aux lois de Newton).

et tu te retrouves à parler de densité de probabilité de présence d'électrons et de tenseur diélectrique avant d'avoir le temps de dire ouf.

On peut rester sur de la dynamique moléculaire classique, et ne jamais parler d'électrons !

Vous pensez que viser un niveau lycée est jouable ? En passant sous silence toute la partie stabilité, gestion des erreurs, chaines de Markov; et en s'appuyant sur les lois de Newton pour la dynamique moléculaire et sur une exploration d'espace 1D pour le Monte-Carlo ? Je ne sais pas trop quand sont vus les profiles d'énergie interne en fonction d'une coordonnée (je pense en particuliers aux profils type double puits).

Une manière plus simple qu'Ising pour présenter le MC, c'est le sondage de la profondeur du Nil: il est plus "efficace" de chercher la profondeur du Nil en restant dans le Nil et en sondant la valeur en différents endroits avant de se déplacer (Algo de Métropolis), qu'en effectuant la moyenne de profondeur de sondages sur toute l'Égypte.

Luthaf

Y'a du pour et du contre ^^

Effectivement c'est relativement "niche" comme cours. Donc y'a un gros risque d'avoir un public assez restreint.

Après, Monte-Carlo j'en ai de (mauvais) souvenirs en théorie des files d'attente si je ne m'abuse? J'avais du mal à piger, et, à l'époque, les ressources manquaient énormément.

Du coup, ça peut dépanner voire trouver un public dans le secondaire lorsque les cours manquent ou sont mal écrits / sans TP / etc.

Difficile à dire, mais la rédaction présente quand même un petit "risque", c'est évident.

Javier

On peut rester sur de la dynamique moléculaire classique, et ne jamais parler d'électrons !

Mais du coup, c'est pas marrant. :p

Vous pensez que viser un niveau lycée est jouable ? En passant sous silence toute la partie stabilité, gestion des erreurs, chaines de Markov; et en s'appuyant sur les lois de Newton pour la dynamique moléculaire et sur une exploration d'espace 1D pour le Monte-Carlo ? Je ne sais pas trop quand sont vus les profiles d'énergie interne en fonction d'une coordonnée (je pense en particuliers aux profils type double puits).

Plus sérieusement du coup, si je pense à la même chose que toi pour les profils, clairement pas avant l'université. Cela dit, ça reste explicable à un lycéen. Taper sur un niveau lycée, c'est parfaitement jouable, effectivement. Cela dit, on perd beaucoup d'infos au passage, ce qui me fait questionner sur l'intérêt. Avoir un tuto qui dit juste "bah voilà, on dit que le gaz est juste un ensemble de boules rigides et on applique Newton", c'est abordable mais je n'ai pas l'impression que ça apporterait beaucoup au lecteur. Faudrait voir les retours sur un vrai tuto pour être fixé, cela dit.

adri1

Est-ce que c'est jouable de faire ça sous forme d'une série d'articles ? Du genre un premier sur le modèle le plus naïf possible et les suivants seraient plus avancés.

Grimur

En atomistique avec une méthode Monte Carlo, y'a toujours les modèles Lattice Kinetic Monte Carlo. Je suis bien conscient que vous ne parlez pas de ca, mais ca n'en reste pas moins utile, beaucoup plus abordable, et ca pourrait permettre d'introduire pas mal de choses.

Rockaround

Après, Monte-Carlo j'en ai de (mauvais) souvenirs en théorie des files d'attente si je ne m'abuse? J'avais du mal à piger, et, à l'époque, les ressources manquaient énormément.

On parle tous de Monte-Carlo, mais en fait il y a plein d'algorithmes de Monte-Carlo (dès que l'on introduit des nombres aléatoires en fait ^^). Je parle plus spécifiquement de Monte-Carlo Metropolis, où l'on génère des configurations d'un système de particules avec un critère d'acceptation. Du coup pas grand chose à voir avec les files d'attentes …

Avoir un tuto qui dit juste "bah voilà, on dit que le gaz est juste un ensemble de boules rigides et on applique Newton", c'est abordable mais je n'ai pas l'impression que ça apporterait beaucoup au lecteur.

On peut quand même parler de dynamique à température/pression fixée, et de stabilité au long terme vs fluctuations en fonction de l'algorithme d'intégration.

Est-ce qu'un tuto à deux niveaux c'est faisable ? Du style texte principal pour un niveau lycée, et des extraits de compléments plus avancés ? Je crois qu'il y a un bouquin dans le domaine qui fait ça.

Est-ce que c'est jouable de faire ça sous forme d'une série d'articles ? Du genre un premier sur le modèle le plus naïf possible et les suivants seraient plus avancés.

Ça pourrait être intéressant, soit comme ça soit sous la forme d'un tuto que l'on complète au fur et à mesure.

En atomistique avec une méthode Monte Carlo, y'a toujours les modèles Lattice Kinetic Monte Carlo. Je suis bien conscient que vous ne parlez pas de ca, mais ca n'en reste pas moins utile, beaucoup plus abordable, et ca pourrait permettre d'introduire pas mal de choses.

Je ne connais pas, je vais me renseigner ! C'est proche du Lattice-Boltzman en dynamique des fluides ou rien à voir ?

Luthaf

"bah voilà, on dit que le gaz est juste un ensemble de boules rigides et on applique Newton"

On appelle ça la théorie cinétique des gaz. Pour m'y être collé, se restreindre à un niveau lycée est déjà extrêmement compliqué.

Niveau lycée, ça me parait quand même compliqué.

Gabbro

il faut avoir un problème sur lequel utiliser ces méthodes avant qu'il y ait un quelconque intérêt à se pencher dessus

Le problème, il peut très bien être introduit par l'auteur.

Algue-Rythme

il faut avoir un problème sur lequel utiliser ces méthodes avant qu'il y ait un quelconque intérêt à se pencher dessus

Le problème, il peut très bien être introduit par l'auteur.

Algue-Rythme

:-°

Ce n'est pas là qu'est le problème que je soulève, c'est dans la difficulté d'introduire le-dit problème de manière abordable…

adri1

dans mes souvenirs une méthode de monté carlo a été utilisée pour simuler les effets de la bombe A. Sans prétendre que ça sera facile à introduire, cela peut provoquer un attrait important.

Ensuite, on peut se proposer le défi de rendre ça "e-penser like", j'entends par là "on s'en fiche des équations, seul le principe compte". Regardez ce qu'il a fait sur la relativité.

artragis

Ensuite, on peut se proposer le défi de rendre ça "e-penser like", j'entends par là "on s'en fiche des équations, seul le principe compte". Regardez ce qu'il a fait sur la relativité.

Le problème c'est que ça empêcherai de mettre du code (le-dit code étant une transcription assez directe des équations).

Luthaf

Après comme on est en mode texte on peut tout à fait rendre ça en mode"tp".

artragis

il faut avoir un problème sur lequel utiliser ces méthodes avant qu'il y ait un quelconque intérêt à se pencher dessus

Le problème, il peut très bien être introduit par l'auteur.

Algue-Rythme

On peut pas avoir une approche de type Monte-Carlo "Metropolis" pour résoudre le problème du voyageur de commèrce ? Monte-Carlo, c'est jamais que générer des configs aléatoires puis d'en évaluer la probabilité, non ? (je résume très mal). Sinon, l'approche Monte-Carlo, l'exemple typique (et idiot), c'est d'évaluer $\pi$. Et ça niveau collège, ça passe nickel. L'atelier des feux de foret s'y prête relativement bien aussi.

Pour la dynamique moléculaire, pas besoin d'aller au fond des choses : un set de boules avec un potentiel type Morse (attractif à longue portée, répulsif à courte portée) permet déjà de faire des simulation intéressante (même en se limitant à 2 dimensions) en présentant la méthode sans se casser la tête à rajouter tout les termes des champs de forces classiques. En tunant un peu le potentiel, on peut même imaginer représenter grossièrement des cristaux (2 types de boules, 2 sets de paramètres, et zou).

Puis présenter brièvement des "vraies" applications sans entrer dans le détail des équations une fois ça fait, ça permettrait probablement de faire le lien qui faut, et pas besoin de présenter les équations des champs de forces ultra-complexes ou tout les trucs qu'on peut retrouver en mécanique des fluides …

pierre_24

+4 -0

Concernant la dynamique moléculaire, je continue de penser que le plus simple reste mouvement brownien/théorie cinétique des gaz. Ça se fait avec les lois de Newton, et les équations en jeu sont abordables. En plus, on a un cadre théorique simple pour comparer les résultats. Mais soyons clair, mettre ça au niveau lycée, c'est déjà dure, sachant qu'il fut rajouter toute la couche simulation dessus, je taperai plutôt sur une fin de lycée, début licence.

Concernant Monte-Carlo, la méthode pour déterminer pi est certes simple, mais est prodigieusement sans intérêt. Si on s’arrête là, ça ne motivera personne. Un système pas mal1, c'est un Potts simplifié2. On considère deux types, une énergie qui dépend uniquement de la taille de l'interface (donc localement du nombre de voisin d'un type différent), et on fait un Metropolis avec E = J * nb de voisin de l'autre type. C'est simple, et physiquement, c'est une minimisation de surface, donc on peut parler des bulles de savon (côté intuitif) et des processus de démixtion (côté appliqué, en métallurgie par exemple). L'idée étant qu'en deçà d'une certaine température, il a y démixtion, et mélange au-delà. Ça ne résout pas le problème de la complexité de la théorie derrière (Markov, bilan détaillé et compagnie), mais ça reste plus intuitif qu'Ising.

Markov et compagnie, justement. Je pense que Markov n'est pas indispensable pour appliquer Metropolis. Je suis persuadé que le bilan détaillé, si. J'ai des cas concret de gens qui font mal du Metropolis (alors que c'est leur boulot3), car il n'applique pas correctement le bilan détaillé (mauvaise pondération dans le choix du type cible, je peux donner des détail si ça intéresse quelqu'un).

Finalement, je pense qu'un tel tuto pourrait être découpé en une partie assez simple (même si je reste dubitatif pour le niveau lycée), et une autre un peu plus propre. Il faut prendre garde à donner un minimum de théorie, sans quoi ce genre de modèle reste inutilisable correctement.

Édit : je manque un peu de temps en ce moment, je formaliserai ça un peu mieux ce week-end, mais je voulais essayer de relancer le débat. ^^


  1. Ayant travaillé sur un système proche, je perd ici toute objectivité. 

  2. Oui, Potts est un Ising généralisé, mais le système traité est beaucoup plus simple à appréhender d'un point de vue physique. 

  3. Ce sont des biologistes, donc j'adore critiquer leur manque de rigueur. C'est un passe-temps courant dans les labo de physique. :D 

+0 -0

Concernant la dynamique moléculaire, je continue de penser que le plus simple reste mouvement brownien/théorie cinétique des gaz. Ça se fait avec les lois de Newton, et les équations en jeu sont abordables. En plus, on a un cadre théorique simple pour comparer les résultats. Mais soyons clair, mettre ça au niveau lycée, c'est déjà dure, sachant qu'il fut rajouter toute la couche simulation dessus, je taperai plutôt sur une fin de lycée, début licence.

Je suis d'accord avec toi. Ceci étant dit, autant Ising et dérivé, j'y vois un minimum d'intérêt (bien expliqué, bien entendu) autant simuler le mouvement brownien ou le comportement d'un gaz, c'est marrant 2 minutes mais ça perd vite son intérêt (c'est jamais que des mouvements aléatoires), ou bien c'est peut-être que c'est pas ma tasse de thé. Si jamais, dans le même ordre d'idée, on peut simuler le comportement de molécules/chaines de polymères/protéines uniquement à l'aide de ressort, donc la loi de Hooke (qu'on voit en lycée). Faut rendre la chose un minimum sexy (bon, d'accord, c'est peut être pas forcément très sexy non plus) pour que le lecteur s'accroche, avantage indéniable de l'estimation de $\pi$ (mais effectivement prodigieusement sans intérêt, donc voilà).

Je suis persuadé que le bilan détaillé, si. J'ai des cas concret de gens qui font mal du Metropolis (alors que c'est leur boulot3), car il n'applique pas correctement le bilan détaillé (mauvaise pondération dans le choix du type cible, je peux donner des détail si ça intéresse quelqu'un).

Yep, ça m'intéresse ;)

Je fais pas de simulation à ce niveau là pour le moment, mais comme je devrais en faire un jour prochain, autant que je fasse ça un minimum bien (tout ce que je sais, c'est d'un cours que j'ai eu en master, ceci dit relativement correct).

Mais soyons clair, mettre ça au niveau lycée, c'est déjà dure, sachant qu'il fut rajouter toute la couche simulation dessus, je taperai plutôt sur une fin de lycée, début licence.

Oui, c'est plus ce que j'avais en tête en fait. On peut toujours tenter d'avoir une partie code accessible pour tous et une partie théorie plus complexe.

Un système pas mal[obj], c'est un Potts simplifié[isi]. On considère deux types, une énergie qui dépend uniquement de la taille de l'interface (donc localement du nombre de voisin d'un type différent), et on fait un Metropolis avec E = J * nb de voisin de l'autre type. C'est simple, et physiquement, c'est une minimisation de surface, donc on peut parler des bulles de savon (côté intuitif) et des processus de démixtion (côté appliqué, en métallurgie par exemple).

Je ne suis vraiment pas fan du modèle d'Ising et dérivés. C'est peut-être que je ne suis pas physicien ^^. Mais autant ce modèle ou celui de Potts sont beaux et simples, autant je ne pense pas que ça va passionner les foules. Si je ne trompe pas, le lien entre Potts et minimisation de surface n'est qu'une analogie, comme les physiciens les aiment. Ces analogies font la beauté de la physique (on peut utiliser les mêmes raisonnements pour des phénomènes très différents); mais ne sont pas un point de vente pour des non-physiciens.

Comme système pour aborder le Monte-Carlo, il y a aussi les fluides de sphères dures (en 2D) qui sont triviaux à implémenter et facile à étendre vers des sphères molles (Lennard-Jones/Morse). Et on peut s'en servir pour voir des changements de phases ou des structures de nano-particules.

Markov et compagnie, justement. Je pense que Markov n'est pas indispensable pour appliquer Metropolis. Je suis persuadé que le bilan détaillé, si.

Je ne vois pas comment tu peut parler de bilan détaillé sans parler de la chaine de Markov. Donc ça m'intéresse !

+0 -0

Si je ne trompe pas, le lien entre Potts et minimisation de surface n'est qu'une analogie

J'ai utilisé un modèle de ce type (un Potts avec une énergie tordu à 400 types différents) pour simuler des mousses liquides. Donc on peut aller au-delà de la simple analogie. Des systèmes extrêmement proches du mien servent à simuler des cellules biologiques. Potts est aussi une manière efficace de simuler les démixtion. Je trouve ça extrêmement vendeur (surtout par rapport à un simple Ising, qui ne permet rien de plus que la paramagnétisme), mais je suis physicien.

Je ne vois pas comment tu peut parler de bilan détaillé sans parler de la chaine de Markov. Donc ça m'intéresse !

De la même manière qu'on peut faire le ménage en mettant la poussière sous le tapis. :-° Je veux dire qu'il faudrait à mon sens dire que le bilan détaillé doit être respecté, le décrire, quitte à ne pas dire d'où il vient. Ça revient à écrire :

En toute circonstance, on devra avoir $e^{-E_1\beta}p_{1\to2} = e^{-E_2\beta}p_{2\to1}$.

Et donner quelques exemples.

autant simuler le mouvement brownien ou le comportement d'un gaz, c'est marrant 2 minutes mais ça perd vite son intérêt

Je comprend tout à fait. On peut l'utiliser comme première approche (au même titre que le calcul de $\pi$) si nécessaire, mais si on peut l'éviter, pourquoi pas.

Yep, ça m'intéresse ;)

Je rédige ça un peu proprement (c'est quand même un brin subtil), et je le met ici.

+0 -0

Mon propos est donc le suivant : il est nécessaire de savoir appliquer le bilan détaillé pour faire du Metropolis, sans quoi on le fait mal très facilement.

Le système en question est un système de Potts cellulaire (pdf ici), qui sert à faire des simulations d'écoulement de cellule biologique (ou de bulle, au choix). Le hamiltonien du système est typiquement un truc qui ne dépend que du nombre de voisin ayant un état différent (mais ça ne joue pas ici), c'est-à-dire faisant parti d'une cellule différente (on a plein de cellule, donc plein d'état possible, de l'ordre de la centaine).


Parenthèse : chaque site porte un état et a des voisins. Mais pas forcement 4. Afin d'avoir un système isotrope, on considère un voisinage à 8, voir 20 voisins. Ce faisant, comme chaque site voit les autres sur une plus grande distance, l'isotropie est mieux respectée. De savants calculs ont été faits, et 20 est suffisant.

20 voisins


(On repart sur 4 voisins par simplicité) Donc, si on a un site de type $i$ entouré par 3 types, on doit avant de pouvoir un Metropolis choisir l'un des types. Et ce, sans pondération. C'est là la subtilité : si on choisit un voisin au hasard, les types les plus présents dans le voisinage auront plus de chance d'être choisis, ça parait bien, mais ça ne respecte plus le bilan détaillé.

cas typique

Nommons le type cible $c$, possédant $N_c$ représentant parmi le voisinage de la case choisie, et le type original $i$, avec $N_i$ représentant dans son voisinage. Si l’énergie du type cible est supérieur, Metropolis donne :

$$ p_{i \to c} = \frac{N_c}{4} e^{\beta \Delta E_{i \to c}} \text{ et } p_{c \to i} = \frac{N_i}{4}$$

Le bilant détaillé n'est pas vérifié, à cause de ce terme $\frac{N_c}{4}$ qui n'a rien à faire là, mais surtout qui n'est pas forcement égale à $\frac{N_i}{4}$. Or, cette subtilité est mal implémentée dans certains code de simulation de cellule, on (mon directeur de stage de l'époque) a vérifié.

La bonne solution consiste à choisir un état au hasard parmi ceux présents autour du site choisi, puis de faire un Metropolis standard. Ainsi, le terme désagréable devient simplement $\frac{1}{\text{nombre de type présent dans le voisinage}}$, donc le bilan détaillé est bien vérifié.

L'application, bête et méchante, mais non trivial, du bilan détaillé, permet d'éviter une erreur. On a bel et bien un Metropolis mal fait dans certain code, ce qui est vérifiable (et donc évitable) grâce au bilan détaillé.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte