Aimantation et modèle d'Ising

Le magnétisme est un domaine de la physique pratiquement ignoré au lycée. En première S, une très rapide incursion dans les champs magnétiques (champ magnétique terrestre, aimants, courants électriques). En terminale, rien, pas plus dans l'enseignement spécifique que dans l'enseignement de spécialité, alors qu'on y trouve tout un chapitre sur la résonance magnétique nucléaire ! Il s'agit pourtant d'un phénomène passionnant, sous bien des aspects assez exotique. Par exemple, l'origine du magnétisme n'est pas explicable en électromagnétisme classique : la prédiction de la théorie classique sur la valeur du rapport gyromagnétique est le double de la valeur mesurée expérimentalement. Il faut utiliser la physique quantique et le concept de spin pour retrouver la bonne valeur du rapport gyromagnétique. Dirac a même été plus loin en démontrant que la théorie du spin relève de la physique quantique relativiste !
Sans aller dans ces hautes sphères, je vous propose d'aborder ici quelques notions, qui nous permettront, à travers d'une simulation de transition de phase, d'utiliser nos connaissances sur les automates cellulaires et l'algorithme de Metropolis.

Champ magnétique et aimantation

Notion d'aimantation

Nous connaissons deux sources de champ magnétique : les aimants, naturels (la magnétite par exemple) ou artificiels, et le courant électrique qui circule dans un fil (l'expérience d'Orsted). Quel rapport entre un courant électrique et le caractére magnétique d'un matériau ? Examinons d'abord le cas des aimants.

L'aimantation d'un milieu est une caractéristique vectorielle, notée habituellement \( \vec{M}\) et d'unité l'Ampère par mètre (A/m). Par définition, c'est le moment dipôlaire magnétique par unité de volume d'un matériau. Rien que la définition est déjà curieuse. Pour parler de "moment dipôlaire", il faut déjà supposer que nous avons affaire à deux charges de signe opposé qui seraient distantes et formeraient un dipôle magnétique. Le problème, c'est qu'on jamais pu isoler une charge magnétique, un monopôle magnétique ! C'est la différence fondamentale entre l'électrostatique et la magnétostatique : il n'existe pas de charge magnétique, ce qui fait que ce sont deux parties de la physique assez différentes. Leur union au sein de l'électromagnétisme ne fut pas triviale... Si vous vous en souvenez, l'équation de Maxwell-Thomson, une des 4 équations de Maxwell, conceptualise cette inexistence de charges magnétiques libres en disant \( \vec{\nabla} . \vec{B} = div(\vec{B}) = 0 \)

Il existe en fait deux modèles de description du dipôle magnétique :

On sait passer d'un modèle à l'autre pour obtenir les mêmes résultats confirmés par l'expérience. Dans l'enseignement, le modèle privilégié est le modèle Ampérien, qui suppose donc des courants électriques permanents, qui soit dit en passant, sont impossibles selon les lois de l'électromagnétisme classique...

Vecteurs \( \vec{B} \) et \( \vec{H} \)

Autre difficulté de la physique de l'aimantation et des champs magnétiques, l'existence de deux champs différents : le champ magnétique \( \vec{B}\) ou plus précisément le champ d'induction magnétique et le champ d'excitation magnétique \( \vec{H} \).

Il existe une relation simple entre \( \vec{B}\) et \( \vec{H}\) : \( \vec{H} = \dfrac{ \vec{B}}{\mu_0} - \vec{M} \) où l'on retrouve notre aimantation. En dehors d'un milieu aimanté, on a  \( \vec{B} = \mu_0 \vec{H} \), avec \( \mu_0 \) la perméabilité magnétique du vide.

La littérature est assez confuse concernant la dénomination de ces deux champs, dont les méthodes de calcul sont différentes. On trouve souvent dans les cours le nom d'induction magnétique pour \( \vec{B}\) et de champ magnétique pour \( \vec{H} \), ce qui ne simplifie pas les choses. Vous aurez noté que \( \vec{H} \) a la même unité que \( \vec{M} \).

L'origine du magnétisme

Ampère fit l'hypothèse dès 1821 que le magnétisme pouvait avoir pour origine des courants électriques circulant sur des boucles microscopiques à l'intérieur des aimants. Il assimilait le dipôle magnétique à une spire microscopique. Avec l'apparition de la théorie atomique et sa confirmation, les physiciens ont très vite assimilé ces courants électriques à la "révolution" des électrons autour des noyaux atomiques. Hélas, il est vite apparu que cette théorie ne tenait pas la route, en contradiction avec des résultats théoriques (le théorème de Bohr-Van Leewen en 1919) et expérimentaux (la mesure du rapport gyromagnétique). Le magnétisme ne devrait pas exister selon la physique classique !

Avec la physique quantique est apparue la notion de spin (en 1925 par Uhlenbeck et Goudsmit), un moment cinétique intrinsèque. Le spin d'une particule peut prendre une valeur entière, dans ce cas la particule est un boson. Il peut prendre des valeurs demi-entières, et dans ce cas, c'est un fermion. La théorie quantique associe le moment de spin \( \vec{\sigma} \) au moment magnétique de l'électron \( \vec{\mu} \) selon l'équation \( \vec{\mu} = -\dfrac{e}{m_e} \vec{\sigma} \). On sait calculer le moment magnétique d'un atome à partir du moment magnétique de ses électrons et donc établir une explication de l'origine de l'aimantation.

Les différents magnétismes

Lorsqu'on plonge un matériau dans un champ magnétique, il acquière une aimantation, plus ou moins forte et plus ou moins permanente. C'est l'aimantation induite. Les deux caractéristiques force et permanence de cette aimantation induite permet de classer les matériaux en plusieurs familles dont les principales : diamagnétiques, paramagnétiques et ferromagnétiques.

Le diamagnétisme

Tous les matériaux sont diamagnétiques. Lorsqu'on plonge un matériau dans un champ magnétique, celui-ci perturbe les caractéristiques orbitales des électrons atomiques. En réponse, le matériau acquière un champ magnétique induit antagoniste. On peut calculer les caractéristiques de ce champ en physique classique avec la loi de Lenz, avec une précision suffisante pour les applications courantes. Et l'on constate que le champ magnétique extérieur produit une précession de l'ensemble des orbitales atomiques autour de la direction du champ.

Le calcul montre que le moment magnétique induit est très faible et qu'il dépend de la température pour les gaz, très peu pour les liquides et les solides.

Le paramagnétisme

Le paramagnétisme résulte de l'alignement naturel des dipôles magnétiques dans le sens du champ magnétique extérieur. Une aimantation induite dite paramagnétique apparaît, bien plus importante que l'aimantation diamagnétiques.

Le paramagnétisme d'un matériau est très dépendant de la température, l'agitation thermique des électrons perturbant l'alignement des dipôles magnétiques. Il existe une loi, la loi de Curie, qui formalise la dépendance de l'aimantation acquise en fonction de la température.

Exemples de matériaux paramagnétiques : l'aluminium, le platine, le manganèse.

Le ferromagnétisme

Un corps ferromagnétique acquière une aimantation forte lorsqu'il est plongé dans un champ magnétique et cette aimantation perdure après disparition du champ extérieur. On produit les aimants permanents de cette façon, en immergeant un matériau ferromagnétique comme du fer, du cobalt ou un alliage de ces métaux dans un champ magnétique.

Le ferromagnétisme dépend de la température. Pour les matériaux ferromagnétiques, il existe une température dépendante du matériau au deça de laquelle il est ferromagnétique et au delà de laquelle il devient paramagnétique. On appelle ce phénomène une transition de phase et la température en question est la température de Curie ferromagnétique du matériau. La transition de phase est, sous certaines conditions, réversible : en augmentant la température le materiau perd son aimantation, qu'il retrouve lorsque la température diminue et passe sous la température de Curie du matériau.

Les physiciens proposent depuis longtemps (plus d'un siècle) un modèle pour expliquer le ferromagnétisme. Imaginez une mousse de savon ou de bière aplatie entre deux vitres de verre. Vous distinguerez des bulles de taille plus ou moins semblable, séparées par des parois très fines. C'est une image assez bonne du modèle physique d'un matériau ferromagnétique. Le modèle découpe le matériau en une multitude de petits domaines (les domaines de Weiss) semblables à nos bulles, de taille très petite, entre 10 et 100 microns. Ces domaines sont séparés par des parois très fines, de l'ordre de 0.1 micron. Dans chaque domaine, les moments dipôlaires magnétiques, je vais les nommer 'spin' par commodité, sont tous orientés dans la même direction. Mais l'orientation de chaque domaine est différente, plus ou moins. Sur le plan macroscopique, l'aimantation est nulle, les différentes orientations s'annulant en moyenne. A proximité des parois, les spins des domaines adjacents s'influent mutuellement en fonction de leur distance.

Lorsque un matériau ferromagnétique est immergé dans un champ magnétique extérieur, les spins de tous les domaines tendent à s'orienter dans la même direction, celle du champ extérieur. Les domaines dont l'orientation était proche de celle du champ extérieur grossisent au détriment des autres, les parois se modifient. Si le champ extérieur n'est pas trop fort et si le matériau ne présente pas trop de défauts, cette transformation est réversible, les domaines retrouvent leur place et dimension lorsque le champ disparait. Si ce n'est pas le cas, un champ trop fort par exemple, alors la transformation devient irréversible et l'aimantation du matériau perdure, elle ne revient pas à une valeur nulle, on dit qu'elle est rémanente. On créé un aimant permanent.

La transition de phase ferromagnétique - paramagnétique

Considérons maintenant un matériau ferromagnétique doté d'une aimantation rémanente. Chauffons le au dessus de sa température de Curie. L'agitation thermique désorganise complétement l'agencement des domaines de Weiss, l'aimantation disparaît. Cela se vérifie très facilement : prenez un clou, aimantez-le avec un aimant permanent. Puis chauffez-le à 800°C (la température de Curie du fer est de 1043 K) et laissez-le refroidir lentement : l'aimantation rémanente disparaît. Les spins ne se sont pas réalignés dans des domaines de Weiss, notre clou est devenu paramagnétique.

Le modèle d'Ising

Ce modèle va nous permettre de simuler la transition de phase ferromagnétique-paramagnétique autour de la température de Curie d'un matériau fictif.

Pour simuler les propriétés magnétiques de mon matériau ferrromagnétique, je vais le modéliser par un réseau maillé carré de spins. L'orientation de chaque spin sera notée 1 (up) ou -1 (down). Deux spins de même signe seront parallèles et anti-parallèles s'ils sont de signe opposé. Pour simplifier, j'applique des conditions périodiques de bords à mon réseau, c'est à dire que ce n'est pas un plan mais un tore.

A une température T supérieure à la température de Curie Tc, les spins sont désordonnés, notre matériau est paramagnétique. Plaçons notre réseau dans un thermostat et diminuons progressivement la température. Si notre modèle est bon, nous devrions observer une transition de phase, une réorganisation des spins autour de Tc.

L'interaction entre deux spins voisins \( \sigma_i \) et \( \sigma_j \) dont nous avons parlé ci-dessus produit une énergie d'interaction que l'on quantifie par \(E_{ij} = -2J_{i,j} \sigma_i \sigma_j \) où J est l'intégrale d'échange (on l'appelle souvent constante d'échange), qui caractérise le recouvrement des fonctions d'onde des deux particules portant les spins. L'énergie de notre réseau est donc minimale quand tous les spins sont parallèles, donc une aimantation maximale.

Dans le modèle d'Ising, nous considérons qu'un spin subit l'influence de ses voisins immédiats (4 voisins), ce qui doit vous rappeler certaines règles de gestion des automates cellulaires... Nous avons donc \( J_{i,j} = J \) si les spins \( \sigma_i \) et \( \sigma_j \) sont voisins et \( J_{i,j} = 0  \) dans le cas contraire. L'énergie totale de notre réseau est égale à \( E = -J\sum_{i=1}^N  \sigma_i  \sigma_j \). L'aimantation totale du réseau est égale à \( M = \dfrac{1}{N} \sum_{i=1}^N \sigma_i \).

Dans notre modélisation, nous ferons un changement d'unité pour adimensionner l'équation et nous poserons J=1 et \( k_B \) = 1. L'unité de température ne sera donc plus le Kelvin mais \( \dfrac{J}{ k_B }\).

Il est possible de calculer théoriquement la température de Curie pour un réseau de spins carré hors champ magnétique extérieur. Lars Onsager l'a fait en 1944 et il a obtenu \( T_c = \dfrac{2J}{k_B \ln(1 + \sqrt(2)} \) soit avec nos hypothèses J=1 et \( k_B \) = 1 une température de Curie égale à 2,269 unités.


Simulation de la transition de phase ferromagnétique-paramagnétique

Principe de la simulation

Nous utiliserons le principe des automates cellulaires et l'algorithme de Monte-Carlo avec une condition de Métropolis, exactement comme dans l'algorithme de recuit simulé. Je ne détaillerai donc pas tout le code des scripts Python. J'utiliserai deux scripts, l'un pour étudier l'évolution de l'énergie du réseau et de son aimantation à une température donnée (AimantationIsing.py) et l'autre pour étudier la transition de phase et estimer la température de Curie du réseau (AimantationIsing_1.py). Une grande partie du code est commune aux deux scripts.

L'initialisation du réseau

La fonction InitReseau() permet de créer un réseau carré de N spins de coté. Dans ce code, j'ai choisi une configuration initiale où tous les spins sont parallèles et égaux à 1. C'est purement arbitraire. Il est possible de choisir une configuration de spins aléatoire. Il suffira de modifier le code de InitReseau, en faisant attention à modifier également l'énergie et l'aimantation initiale du réseau...

Le code d'InitReseau est très simple:

def InitReseau(N):

    Res = ones([N,N],int)  # tous les spins sont à 1

    return Res

Les conditions initiales

Dans cette première manipulation, pour étudier l'évolution de l'énergie et de l'aimantation, je fixe les conditions initiales suivantes:

Kb = 1. # constante de Boltzmann

Je = 1. # constante d'échange

T = 5.0 # température initiale

Er = [-2*N**2] # énergie initiale du réseau

Ai = [1.0] # aimantation initiale du réseau

Attention, les valeurs initiales de l'énergie totale du réseau (son hamiltonien) et son aimantation sont calculées dans l'hypothèse d'un réseau de spins dont la valeur de tous les spins est 1. J'ai ajouté au code du script deux fonctions qui calculent l'hamiltonien et l'aimantation du réseau.

Le calcul de dE et dM

La variation d'énergie totale du réseau, lorsque on applique une inversion de spin sur une cellule (i,j) du réseau est calculée par la fonction DeltaE :

def DeltaE(nw,i,j,n):

    # calcul de l'énergie du voisinage aux conditions de bord périodiques

    Ev = nw[i-1][j] + nw[(i+1)%n][j] + nw[i][j-1] + nw[i][(j+1)%n]

    # calcul et retour de la variation d'énergie du réseau

    return 2.*Je*Ev*nw[i][j]

Il s'agit d'une application de la définition de l'énergie donnée plus haut, en prenant en compte l'influence de l'inversion de spin de la cellule (i,j) sur ses voisins. Vous noterez également la prise en compte des conditions de bords périodiques.

Le calcul de la variation de l'aimantation due à une inversion locale de spin est effectué par la fonction DeltaM :

def DeltaM(nw,i,j,n):

    # calcul et retour de la variation d'aimantation

    return -2.*nw[i][j]/n**2

Là aussi, j'applique la définition donnée ci-dessus.

L'algorithme de Monte-Carlo

On retrouve le code bien connu de l'algorithme de Monte-Carlo avec la condition de Métropolis, que j'ai rassemblé dans la fonction EvolSpin :

def EvolSpin(nw,n,Temp):

    # choix aléatoire du spin à faire varier

    i = randint(0,n-1)

    j = randint(0,n-1)

    # calcul des variations d'énergie et d'aimantation

    dE = DeltaE(nw,i,j,n)

    dM = DeltaM(nw,i,j,n)

    # application de l'algorithme de Metropolis

    if random() < exp(-dE/(Kb*Temp)):

       nw[i][j] = -nw[i][j] # inversion du spin

    else:

       dE = dM = 0

    return[nw, dE, dM]

On y retrouve les opérations habituelles : choix aléatoire d'un spin à traiter, calcul de dE et dM en cas d'inversion du spin et application de la condition de Métropolis.

Evolution de l'énergie et de l'aimantation du réseau

Le principe consiste à mettre notre réseau dans un thermostat à une température T donnée puis à surveiller son évolution jusqu'à l'équilibre thermique. Pour étudier l'évolution de l'énergie et de l'aimantation de notre réseau de spins, j'utilise la boucle suivante:

for i in xrange(Gen):

    Reseau,dE,dM = EvolSpin(Reseau,N,T)

    Er.append(Er[i]+dE)

    Ai.append(Ai[i]+dM)

Rien de plus simple ! Le nombre Gen (pour  Générations, une scorie des automates cellulaires) est fixé à 300 000. Vous pourrez le faire varier en fonction de votre machine, mais le nombre de génération doit être suffisant pour atteindre l'équilibre thermique du réseau. Pour Gen = 300 000 sur mon Mac i5, le temps de calcul est d'environ 7 secondes. Les données sont stockées pour affichage dans deux listes Er et Ai.

Je vous fais grâce des instructions d'affichage...

La courbe d'évolution de l'énergie

Voici la courbe obtenue avec T = 5.0 K et Gen = 300 000 :

Evolution de l'énergie du reseau de spins

La courbe tend vers une asymptote à l'équilibre thermique. On peut calculer la limite asymptotique qui théoriquement égale à \( -\dfrac{N^2}{2}\) lorsque la température est supérieure à la température de Curie. Soit avec nos valeurs initiales, E = -20 000. Nous n'en sommes pas loin...

La courbe d'évolution de l'aimantation

Voici la courbe obtenue avec les mêmes valeurs :

Evolution de l'aimantation du reseau de spins

La température est supérieure à la température de Curie. L'aimantation globale du réseau se réduit pour tendre vers 0. Vous pourrez le vérifier en augmentant le nombre Gen, par exemple le porter à 900 000, ce qui favorise l'équilibre thermique. Notre réseau est donc paramagnétique, ce qui n'est pas étonnant sachant que T > Tc.

Mise en évidence de la transition de phase

Le principe est de porter notre réseau à différentes températures décroissantes, de le laisser atteindre l'équilibre thermique à la température donnée puis de mesurer son énergie et son aimantation à cette température. Pour quelques températures sélectionnées autour de la température de Curie, j'afficherai le réseau, comme je le fais pour les automates cellulaires afin de mieux visualiser la transition de phase.

Le code du script est très semblable à deux ajouts près : une boucle de variation de température entre T et 0.1 K par pas de 0.05 K et la sauvegarde du réseau lorsque la température atteint une des températures sélectionnées T, 4.0, 3.0, 2.5, 2.0, 0.5 K. Cette sauvegarde me permettra d'afficher l'état du réseau avant et après la transition de phase.

Variation de l'énergie totale en fonction de la température

Voici la courbe d'évolution de l'énergie totale du réseau en fonction de la température:

Evolution de l'énergie en fonction de T

On retrouve la forme sigmoïdale des courbes de transition de phase, comme pour la transition de percolation. La pente pourrait être accentuée en augmentant le nombre de générations à chaque calcul, afin d'obtenir un meilleur équilibre thermique à chaque palier de température. Mais ce serait au détriment du temps de calcul, dejà très long (plusieurs minutes). D'après cette courbe, on peut estimer que le point d'inflexion, la température de Curie, est compris entre 2 et 2.5 unités, ce qui est un bon encadrement de la valeur théorique.

Variation de l'aimantation en fonction de la température

Voici la courbe d'évolution de l'aimantation totale du réseau en fonction de la température:

Evolution de l'aimantation en fonction de T

L'aimantation initiale de l'état ferromagnétique chute rapidement pour devenir pratiquement nulle au dessus de la température de Curie.

Etat du réseau en fonction de la température

Voici l'évolution de l'état du réseau pour quelques températures varaint autour de la température de Curie (2,269 unité) :

Etat du réseau à la transition de phase

Vous notez une forte réorganisation du réseau avec l'augmentation massive des clusters de spins "down" (-1, en bleu) entre 2.5 et 2.0 unités. On retrouve la formation des domaines d'aimantation de l'état ferromagnétique de notre matériau.

Les scripts Python

Les scripts Python étudiés dans cette page sont disponibles dans le package ModeleIsing.zip :


Contenu et design par Dominique Lefebvre - www.tangenteX.com mai 2017  Licence Creative Commons   Contact : PhysiqueX ou

Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France.