/* Monte-Carlo simulation code for statistical physics Copyright (C) 2001-2004 Sylvain Reynal Département de Physique Ecole Nationale Supérieure de l'Electronique et de ses Applications (ENSEA) 6, avenue du Ponceau, F-95014 CERGY CEDEX et Laboratoire de Physique Théorique et Modélisation (LPTM) Université de Cergy-Pontoise - Site de Neuville F-95031 CERGY CEDEX Tel : 00 +33 130 736 245 Fax : 00 +33 130 736 667 e-mail : reynal@ensea.fr web page : http://www.ensea.fr/staff/reynal/ */ package fr.ensea.montecarlo.canonical; import fr.ensea.montecarlo.data.*; import java.io.*; import java.awt.Color; /** * Superclass for canonical MC algorithms */ public abstract class Montecarlo { protected static final boolean DEBUG = false; protected SamplesBag samplesBag; // data bag to store thermal averages protected double kT; // current value of kT/J (here J=1) /** * Initialize a new MC algorithm * @param lattice the lattice to be simulated * @param kT default temperature */ public Montecarlo(SamplesBag bag, double kT) { this.samplesBag = bag; setTemperature(kT); // default value } /** * Modifie la température courante */ public abstract void setTemperature(double kT); public double getTemperature(){ return kT; } /** * Réinitialise les compteurs (ex : mises-à-jours acceptées ou taille de cluster) */ public abstract void reinitCounters(); /** * Retourne le taux de comptage (e.g. taux d'acceptance, taille de cluster) dans une chaîne de caractère. */ public abstract String getCountersRateLabel(); /** * Génère un nouveau nombre aléatoire distribué uniformément dans l'intervalle [0,1), et le retourne. */ public abstract double createRandomNumber(); /** * Réalise un sweep de l'ensemble du réseau, i.e. tente de mettre à jour L*L spins. */ public abstract void sweep(); ///////////////////////////////////////////////////////////////////////////////// // Utilities ///////////////////////////////////////////////////////////////////////////////// protected void pause(){ try { System.in.read(); } catch (IOException e){} } }