/*************************************************************************************************************************************/ /* */ /* 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. */ /* */ /* */ /*************************************************************************************************************************************/