No description
Find a file
durban 8af6128aaf Ajout de la fin du programme de MD
Il n'a pas encore été testé
2025-12-31 19:53:08 +01:00
Dynamique_moleculaire Ajout de la fin du programme de MD 2025-12-31 19:53:08 +01:00
Monte_carlo Code rendu plus lisible et modif graphique 2025-12-28 14:51:44 +01:00
.gitignore Ajout moyenne + incertitude sur les derniers pas MC 2025-12-19 15:03:11 +01:00
README.md MàJ README 2025-12-25 14:09:57 +01:00

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 .pgf qui peut être importé directement dans un document LateX avec \input{nom_du_fichier.pgf}. Les résultats des simulations sont exportées dans un dossier séparé nommé Resultat_simu/ au format .npy ce qui permet une exportation efficace pour le module numpy.

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 :

  • Npas Le nombre de pas de simulation Monte-Carlo à réaliser.
  • Nspace Le nombre de points d'espace à simuler. C'est à dire la taille de la grille de spin. Cette grille est de taille Nspace x Nspace
  • Ntemp Le 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 avec Ntemp = 10000.
  • Hfixe La valeur de la constante de champ magnétique extérieur. Elle est donnée en unité de k_B et reste fixe pendant toute la simulation.
  • Jfixe La valeur de la constante d'interaction entre les spins. Elle est donnée en unité de k_B et reste fixe pendant toute la simulation.
  • Tmax La température maximale atteinte lors de la simulation -Tmin La valeur minimale de la température. Les Ntemp points de températures sont répartis de manière homogène entre Tmin et Tmax.

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 longueur Ntemp avec 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é par fortran, il contient les données binaires brutes produites par le code fortran. Ce fichier peut être lu par une fonction du module scipy : fichier = scipy.io.FortranFile("nom_du_fichier.dat"). Les données peuvent alors être extraites en utilisant la méthode fichier.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.py qui 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