|
|
||
|---|---|---|
| Dynamique_moleculaire | ||
| Monte_carlo | ||
| .gitignore | ||
| README.md | ||
Nous avons utilisés ces codes pour nos simulations dans le cadre du projet de thermodynamique statistique au département de chimie de l'ENS pendant l'année 2025/2026.
Simulations de type Monte-Carlo
Ici les simulations portent sur le modèle d'ising à deux dimensions, les codes sont généralement suffisamment paramétrés pour pouvoir être utilisés pour beacoup de simulations de ce type.
Code python
Le code python permet de réaliser des simulations de type Monte-Carlo. Il requiert l'utilisation des modules numpy, scipy, matplotlib. Le code a été testé sur python 3.12.7. Deux types de simulations sont proposées :
- Une simulation unique qui exporte dans un fichier tout les états qui ont étés traversés.
- Une simulation qui exporte dans un fichier une liste de magnétisations moyennes pour une température variable.
Les options d'affichage du premier type permette de créer une simulation en modifiant la valeur du booléen
animer = True. Les autres graphiques sont exportés au format.pgfqui peut être importé directement dans un documentLateXavec\input{nom_du_fichier.pgf}. Les résultats des simulations sont exportées dans un dossier séparé nomméResultat_simu/au format.npyce qui permet une exportation efficace pour le modulenumpy.
ATTENTION la simulation qui fait varier la température est assez lente sous python et ne permet pas une grande précision. Nous vous conseillons d'utiliser pour cela le code Fortran.
Code Fortran
Ce code demande une fois exécuté pour la première fois, une valeur pour les variables suivantes :
NpasLe nombre de pas de simulation Monte-Carlo à réaliser.NspaceLe nombre de points d'espace à simuler. C'est à dire la taille de la grille de spin. Cette grille est de tailleNspace x NspaceNtempLe nombre de points pour la température. Des résultats satisfaisants sont obtenus pour des valeurs assez basses. Le code étant assez rapide on peut le faire tourner avecNtemp = 10000.HfixeLa valeur de la constante de champ magnétique extérieur. Elle est donnée en unité dek_Bet reste fixe pendant toute la simulation.JfixeLa valeur de la constante d'interaction entre les spins. Elle est donnée en unité dek_Bet reste fixe pendant toute la simulation.TmaxLa température maximale atteinte lors de la simulation -TminLa valeur minimale de la température. LesNtemppoints de températures sont répartis de manière homogène entreTminetTmax.
Après la première exécution, il crée un fichier param.inp qui contient tout les paramètres dans le bon formatage.
Un fichier param.inp exemple est également sur ce dépôt.
Lors de la modification de ce fichier il est préférable de faire attention au type de variable. C'est à dire qu'un flottant est censé être entré avec le format 2.0 et un entier sans virgules.
Dans l'exécution il y a deux choix : un choix qui réalise une simulation à la température 1 et qui renvoie un tableau qui contient la magnétisation moyenne en fonction du nombre de pas.
Pour utiliser ce mode il faut mettre le paramètre simu_temp= .false..
Un programme python intitulé graphique_Fortran_Convergence.py est fourni qui permet d'afficher ce fichier.
Si l'option simu_temp= .false. est choisie :
Ce code retourne deux fichiers :
- Un fichier qui contient les résultats qui est également mis dans le dossier
Resultat_simu/. Les résultats consistent en une liste de longueurNtempavec les magnétisations moyennes à chaque pas de température. De plus sont ajoutés à chaque pas de température l'incertitude type sur les derniers 10000 pas de Monte-Carlo. La valeur moyenne est calculée à partir de la moyenne de ces 10000 derniers pas de Monte-Carlo. Ce fichier n'est pas formatté parfortran, il contient les données binaires brutes produites par le codefortran. Ce fichier peut être lu par une fonction du modulescipy:fichier = scipy.io.FortranFile("nom_du_fichier.dat"). Les données peuvent alors être extraites en utilisant la méthodefichier.read_record(dtype='f8'). - Un fichier qui contient le nom du dernier fichier de résultats généré.
Ce qui permet une interface efficace avec python. Avec ce code est distribué un script python
graphique_Fortran_Temperature.pyqui permet d'afficher les données produites par la simulation FORTRAN.
ATTENTION Ce code est parallélisé avec OpenMP il nécéssite d'avoir un compilateur compatible (ici le compilateur gfortran a été utilisé). La commande de compilation avec laquelle ce code a été testé est stockée dans le fichier compile.sh il suffit donc d'executer les commandes suivantes :
chmod +x compile.sh
./compile.sh