
/*************************************************************************************************************************************/
/* */
/* M O D E L E D E I S I N G B I D I M E N S I O N N E L : */
/* */
/* */
/* Definition : */
/* */
/* Considerons un ensemble de points */
/* 'P(i)' porteurs chacun d'un spin 'S(i)' */
/* (valant en general -1/2 ou +1/2) */
/* et disposes sur un reseau carre. */
/* A chaque pas de temps, on choisira */
/* aleatoirement quelques points pour */
/* lesquels on evalue la quantite : */
/* */
/* _____ */
/* \ */
/* \ */
/* dE(i) = f.J. / S(i).S(j) */
/* /____ */
/* j */
/* */
/* ou l'indice 'j' parcourt les 4 premiers */
/* voisins de 'P(i)' et ou 'J' designe la constante */
/* de couplage (c'est-a-dire la force de celui-ci) et */
/* 'f' une constante (positive en general, une valeur */
/* negative simulant l'anti-ferromagnetisme). Alors : */
/* */
/* si dE(i) <= 0, 'S(i)' est inverse : S(i) = -S(i) */
/* */
/* dE(i) */
/* - ------- */
/* k.T */
/* sinon, 'S(i)' n'est inverse que si : p < e */
/* */
/* ou 'p' est un nombre aleatoire (dans [0,1]), 'k' */
/* designe la constante de Boltzmann (dont la valeur est */
/* 1.38066e-23 J^1K^-1 mais qui sera en general remplacee */
/* par 1 dans les simulations effectuees) et enfin 'T' */
/* est la temperature "locale". */
/* */
/* Il existe une temperature critique (valable pour */
/* le cas bidimensionnel uniquement) en faisant */
/* f=k=J=1 (pour simplifier) et avec des spins {-1/2,+1/2} : */
/* */
/* 1 */
/* Tc = ------------------- */
/* ___ */
/* 2.A.ln(1 + \/ N ) */
/* */
/* (le facteur 2 au denominateur compense le fait */
/* qu'habituellement la constante 'f' vaut 2...) */
/* avec A=2 (ou 1), suivant que les paires {S(i),S(j)} */
/* et {S(j),S(i)} sont considerees comme identiques (A=2) */
/* (ce qui est le cas dans l'implementation suivante...) */
/* ou differentes (A=1) ; le parametre 'N' donne le nombre */
/* d'etats du spin (en general N=2). On notera au passage */
/* qu'avec des spins {-1,+1}, la temperature critique est */
/* a diviser par (1/2)x(1/2). Enfin, la formule donnant 'Tc' */
/* est demontree pour le cas N=2 et conjecturee en ce qui */
/* concerne les cas N>2. Cette valeur theorique de 'Tc' */
/* correspond a un reseau infini ; pour les reseaux finis */
/* (ce qui est evidemment le cas dans ces simulations), */
/* la valeur de 'Tc' est inferieure... */
/* */
/* Il s'agit d'un systeme auto-organise, ainsi qu'il */
/* possible de le voir dans les simulations. */
/* */
/* Appelons "noyau" (ou "voisinage") la matrice */
/* 3x3 definie comme suit : */
/* */
/* ------- */
/* | 0 1 0 | */
/* | 1 0 1 | */
/* | 0 1 0 | */
/* ------- */
/* */
/* et qui sert a ponderer les spins des (3x3)-1=8 points */
/* voisins d'un point donne (represente par l'element */
/* central de cette matrice). La configuration */
/* ci-dessus correspond effectivement a la recherche */
/* des 4 premiers voisins. Il est alors possible de */
/* generaliser cela et de definir ainsi des noyaux */
/* de dimensions quelconques et contenant des valeurs */
/* arbitraires. Une application de cela est la generation */
/* de certains types de textures bidimensionnelles. */
/* */
/* */
/*************************************************************************************************************************************/