MODELO DE ISING

10
Unidad de Matemática y Física MODELO DE ISING Métodos computacionales Heber E. Andrada

description

modelo de ising en 1D y 2D

Transcript of MODELO DE ISING

Page 1: MODELO DE ISING

Unidad de Matemática y Física

MODELO DE ISING Métodos computacionales

Heber E. Andrada

Page 2: MODELO DE ISING

MODELO DE ISING

Introducción

Uno de los fenómenos más interesantes en física del estado sólido es el ferromagnetismo: en algunos metales como el hierro o el níquel, una fracción finita de los espines asociados con cada núcleo se polariza espontáneamente en determinada dirección, generando un momento magnético macroscopio en ausencia de campo externo. Esto ocurre solo a bajas temperaturas, a temperaturas elevadas los espines se orientan al azar, produciendo una magnetización resultante nula. Consideremos un sistema de N espines inter actuantes dispuestos regularmente en forma de red. En la presencia de un campo magnetico, B, el hamiltoniano del sistema puede ser escrito en una primera aproximación como:

Donde μB es el momento magnético en la dirección del campo y J es la constante de acoplamiento espin – espin. Debe notarse que cuando Jij >0 se dice que el sistema es ferromagnético, mientras que si Jij <0 se dice que el sistema es antiferromagnetico.

Cuando Jij >0 obtenemos la configuración energéticamente mas favorable, que corresponde a una en la cual todos los espines se encuentran alineados. Por ende podemos anticipar que por debajo de una cierta temperatura el sistema presentara un momento magnético resultante distinto de cero. Para comprobar la existencia del mismo se realizan medidas de magnetización donde la misma esta dada por:

N

i

i

vecinosji

jiij HJ1

0

,

02

1H

N

i

iN

Mm

1

0

Page 3: MODELO DE ISING

Resultados de la simulación

Una de las primeras cosas a notar es que a temperaturas mayores de cero la magnetización es nula, pues no existe una magnetización espontánea en la simulación del modelo 1D, como es posible observar a partir de la grafica nro1 que tenemos debajo:

Grafica nro1 Magnetización vs Temperatura

0,0 0,2 0,4 0,6 0,8 1,0 1,2 1,4

-1,0

-0,5

0,0

0,5

1,0

MA

GN

ET

IZA

CIO

N / N

J

TEMPERATURA NJ/K

Grafica nro2 de Energía vs Temperatura en el modelo 1D

En el modelo de ising 1D no se observa un cambio de fase notorio, esto es debido a que este ocurre en las aproximaciones de T=0, en cambio en el modelo 2D el cambio de fase es notorio y se ve el cambio de orden-desorden en los espines.

0,0 0,2 0,4 0,6 0,8 1,0 1,2 1,4 1,6

-1,0

-0,9

-0,8

-0,7

-0,6

EN

ER

GIA

/ N

J

TEMPERATURA NJ/K

NO SE OBSERVA TRANSICION DE FASE

Page 4: MODELO DE ISING

Transición de fase en Modelo de Ising 2D

En el Modelo de Ising 1D, no se observa transición de fase alguna, pero en el modelo 2D es fácil de notar una transición de fase de orden-desorden a bajas temperaturas, cercanas a cero, como puede deducirse de la grafica nro3.

Grafica nro3 Energía vs Temperatura en el Modelo de Ising 2D

0,0 0,2 0,4 0,6 0,8 1,0 1,2 1,4 1,6

-2,00

-1,95

-1,90

-1,85

-1,80

-1,75

EN

ER

GIA

/ N

J

TEMPERATURA NJ/K

TRANSICION DE FASE

Orientación de los espines para las distintas temperaturas

Como podemos ver a T=0 todos los espines están orientados de forma ferromagnética (en forma paralela y con igual espin), mientras que a temperatura mayores comienza a notarse un orden aleatorio de los espines, es decir comienza a haber espines orientados antiparalelamente a otros y mientras mas aumentamos la temperatura la distribución es al azar de los espines (up o down), al principio todos tienen espin=1 y a medida que aumenta T algunos pasaran a tener espin=-1 y viceversa.

0 20 40 60 80 100

-1,5

-1,0

-0,5

0,0

0,5

1,0

1,5

OR

IEN

TA

CIO

N

SPINES

SPINES T=0 J/K

Page 5: MODELO DE ISING

0 20 40 60 80 100

-1,0

-0,5

0,0

0,5

1,0

T=10 NJ/K

OR

IEN

TA

CIO

N

SPINES

Los programas que me simula el Modelo de Ising en 1D y 2D son:

Programa del Modelo de Ising 1D

!(MONTE CARLO MODELO DE ISING 1D) PARAMETER (n=100) DIMENSION is(n) REAL*8 dseed,mag,magnetizacion,energia,ener,npasos,nblock,ip,de,T DATA dseed /142761d0/

!NUMERO DE PASOS DE MONTECARLOS npasos = 20000 nblock=100 OPEN(1,file="SALIDA1.dat") OPEN(2,file="SALIDA2.dat") !VARIACION DE TEMPERATURA DO nT=1,30 T=0.05D0*nT ! DATOS DE ENERGIA Y MAGNETIZACION DE ENTRADA mag =0.D0 magnetizacion=0.D0 ener =0.D0 energia=0.D0

!COMIENZO DE PROGRAMACION DEL MODELO DE ISING UNIDIMENSIONAL DO i = 1, n is(i)=1.d0 !LLAMO AL GENERADOR DE NUMEROS ALEATORIOS CALL RAN (dseed,random) IF(random.lt.0.5D0) is(i)=-1.D0 mag = mag + is(i) END DO magnetizacion= 0.D0 energia= 0.D0 DO i = 1, n ip = i + 1.D0 IF (ip .gt. n) ip = 1.D0 ener = ener - is(i)*is(ip) END DO DO k = 1, npasos/nblock DO l = 1, nblock DO m = 1, 200 ! LLAMO AL GENERADOR DE NUMEROS ALEATORIOS CALL RAN (DSEED,RANDOM) i=INT((n)*random+1.D0) si = is(i) ip = i + 1.d0 IF (ip.gt.n) ip=1.D0

Page 6: MODELO DE ISING

im = i - 1.D0 IF(im.lt.1.D0) im=n de = 2.D0*si*(is(ip)+is(im)) !LLAMO AL GENERADOR DE NUMEROS ALEATORIOS RAN CALL RAN (dseed,random) IF (DEXP(-de/T) .gt. random) THEN is(i) = -si mag = mag - 2.D0*si ener = ener + de END IF END DO END DO energia = energia + ener magnetizacion = magnetizacion + mag END DO !TEMPERATURA (NJ/K)VS MAGNETIZACION/N WRITE(1,*)T,magnetizacion/(npasos/nblock*n) !TEMPERATURA (NJ/K) VS ENERGIA/NJ WRITE(2,*)T,energia/(npasos/nblock*n) !TEMPERATURA (NJ/K) VS SPINES !DO ii=1,n !write(*,*)ii,is(ii) !end do END DO END

C SUBRUTINA DE NUMEROS ALEATORIOS SUBROUTINE RAN(dseed,r) DOUBLE PRECISION z,d2p31m,d2pn31,dseed DATA d2p31m/2147483647./,d2pn31/4.65661288D-10/ z = dseed z = DMOD(16807.*z,d2p31m) r = z * d2pn31 dseed = z END

Programa de Modelo de Ising 2D

!MONTE CARLO PARA EL MODELO DE ISING 2D parameter (n=30) dimension is(n,n) real*8 dseed data dseed /142761d0/ OPEN(1,FILE="SALIDA1.DAT") OPEN(2,FILE="SALIDA2.DAT")

!NUMERO DE PASOS DE MONTECARLO npasos= 20000 !TAMAÑO DE LA CAJA DE SIMULACION nblock=100 n2 = n*n T=1.0d0 !HAGO VARIAR LA TEMPERATURA HASTA 10 EN FORMA DE NJ/K do NT=1,30 T=0.05D0*NT !DATOS DE MAGNETIZACION Y ENERGIA DE ENTRADA MAG = 0.D0 MAGNETIZACION = 0.D0 ENER = 0.D0 ENERGIA = 0.D0

!COMIENZO DEL PROGRAMA DE ISING BIDIMENSIONAL do i = 1, n do j = 1, n is(i,j)=1.D0 !LLAMO A LA SUBRUTINA RAN DE NUMEROS ALEATORIOS call ran (dseed,random) if(random.lt.0.5D0) is(i,j)=-1.D0 MAG = MAG + is(i,j)

Page 7: MODELO DE ISING

end do end do MAGNETIZACION = 0.D0 ENERGIA = 0.D0 do i = 1, n ip = i + 1.D0 if (ip .gt. n) ip = 1.D0 do j = 1, n jp = j + 1.D0 if (jp .gt. n) jp = 1.D0 ENER = ENER - is(i,j)*(is(ip,j)+is(i,jp)) end do end do do k = 1, npasos/nblock do l = 1, nblock do i = 1, n do j = 1, n sij = is(i,j) ip = i + 1.D0 if (ip.gt.n) ip=1.D0 im = i - 1.D0 if (im.lt.1) im=n jp = j + 1.D0 if (jp.gt.n) jp=1.D0 jm = j - 1.D0 if (jm.lt.1) jm=n de = 2*sij*(is(ip,j)+is(im,j)+is(i,jp)+is(i,jm)) !LLAMO A LA SUBRUTINA RAN DE NUMEROS ALEATORIOS call ran (dseed,random) if (exp(-de/T).gt. random) then is(i,j) = -sij MAG = MAG - 2.D0*sij ENER = ENER + de end if end do end do end do ENERGIA = ENERGIA + ENER MAGNETIZACION = MAGNETIZACION + MAG end do !GRAFICO TEMPERATURA (NJ/K) VS MAGNETIZACION/N write(1,*) T, MAGNETIZACION/(npasos/nblock*n2) !GRAFICO TEMPERATURA (NJ/K) VS ENERGIA/NJ write(2,*)T,ENERGIA/(npasos/nblock*n2) END DO end

!SUBRUTINA RAN GENERADORA DE NUMEROS ALEATORIOS subroutine ran(dseed,r) double precision z,d2p31m,d2pn31,dseed data d2p31m/2147483647./,d2pn31/4.65661288D-10/ z = dseed z = dmod(16807.*z,d2p31m) r = z * d2pn31 dseed = z end

Page 8: MODELO DE ISING

Función de correlación de espines

La función de correlación de espines nos da una idea de cómo afecta un espin a los de su entorno, Este efecto es muy apreciable para distancias relativamente pequeñas, pues es donde la interacción entre espines es importante.Es de esperarse un decaimiento exponencial la correlación con la distancia entre los espines y también se puede predecir que el efecto de la temperatura será disminuir la correlación, pues al aumentar la temperatura la interacción espin-espin es menos significativa en comparación con la energía total del sistema.Este comportamiento se puede ver a través de las graficas que se encuentran debajo:

Graficas de correlación vs distancia para distintas temperaturas

0 20 40 60 80 100

0,0

0,2

0,4

0,6

0,8

1,0

CO

RR

EL

AC

ION

J

0,4 J/K

0 20 40 60 80 100

0,0

0,2

0,4

0,6

0,8

1,0

CO

RR

EL

AC

ION

J

0,6 J/K

Page 9: MODELO DE ISING

0 20 40 60 80 100

0,0

0,1

0,2

0,3

0,4

0,5

CO

RR

EL

AC

ION

J

1,8 J/K

El cuerpo del programa para simular la correlación entre espines en el Modelo de Ising fue:

Programa de simulación de correlación de espines

! CALCULO DE LA FUNCION DE CORRELACION PARA EL MODELO DE ISING 1D PARAMETER (N=100) DIMENSION is(n),CORRELACION(N-1) REAL*8 dseed DATA dseed /142761d0/

!NUMERO DE PASOS DE MONTECARLO npasos =20000 nblock=100 OPEN(1,FILE="correlacion.dat") !INGRESO LA TEMPERATURA POR PANTALLA CON ALGUN VALOR ENTRE 0.4 Y 3, !ME BASTA PARA VER LOS CAMBIOS EN LA CURVA WRITE(*,*)"TEMPERATURA NJ/K" READ(*,*)T

!COMIENZO A PROGRAMAR LA FUNCION DE CORRELACION ENTRE SPINES VECINOS DO R=1,n-1 CORRELACION(R)=0.D0 ENDDO DO i = 1, n is(i)=1.D0 CALL RAN (dseed,random) if(random.lt.0.5D0) is(i)=-1.D0 R=1.D0 !LAS SENTENCIAS EN EL CUERPO SERAN REPETIDAS MIENTRAS LA CONDICION EN EL CICLO WHILE SE CUMPLA DO WHILE (I+R.LE.N) !EN LA CORRELACION TOMO PRIMEROS SEGUNDOS Y TERCEROS VECINOS YA QUE ESTA SERA APRECIABLE !PARA DISTANCIAS PEQUEÑAS PUES ES DONDE LA INTERACCION ENTRE ESPINES ES RELEVANTE CORRELACION(R) = CORRELACION(R)+(IS(I)*IS(I+R)) R=R+1.D0 END DO END DO !DO R=1,N-1 !SPINI=0.D0 !SPINJ=0.D0 !SPINIJ=0.D0 !NUM=0.D0 !I=1.D0 !DO WHILE(I+R.LE.N) !NUN=NUN+1.D0 !SPINI=SPINI+IS(I) !SPINJ=SPINJ+IS(I+R) !SPINIJ=SPINIJ+(IS(I)*IS(I+R) !I=I+1.D0 !END DO

Page 10: MODELO DE ISING

!CORRELACION(R)=(1.D0/NUM)*(SPINIJ-SPINI*SPINJ) DO k = 1, npasos/nblock DO l = 1, nblock DO m = 1, 200 !LLAMO AL GENERADOR DE NUMEROS ALEATORIOS RAN CALL RAN (DSEED,RANDOM) i=INT((n)*random+1.d0) si = is(i) ip = i + 1.D0 IF (ip.gt.n) ip=1.D0 im = i - 1.D0 IF (im.lt.1.D0) im=n de = 2.D0*si*(is(ip)+is(im)) !LLAMO AL GENERADOR DE NUMEROS ALEATORIOS RAN CALL RAN (dseed,random) IF (EXP(-de/T).gt. random) THEN is(i) = -si END IF R=1.D0 !APLICO UN DO CONDICIONADO DO WHILE (I+R.LE.N) CORRELACION(R) = CORRELACION(R)+(IS(I)*IS(I+R)) R=R+1.D0 END DO END DO END DO END DO DO R=1,n-1 !PARA QUE ME DEN BIEN LAS GRAFICAS AGRANDO EL SISTEMA DANDOLE MAS BLOCKS(200) !ASI NO ME VUELVE A DAR EL MISMO VALOR QUE CON EL PRIMER SPIN WRITE(1,*)R,(1.D0/(npasos*200))*CORRELACION(R) END DO END

!GENERADOR DE NUMEROS ALEATORIOS SUBROUTINE RAN(dseed,r) DOUBLE PRECISION z,d2p31m,d2pn31,dseed DATA d2p31m/2147483647./,d2pn31/4.65661288D-10/ z = dseed z = DMOD(16807.*z,d2p31m) r = z * d2pn31 dseed = z END

Cuestiones sobre la programación del Modelo de Ising:

Durante el desarrollo del programa me tope con la difícil tarea de programar el modelo y llegar a entender que es lo que esta pasando entre los espines al variar la temperatura, arme un proyecto que me mostrara la magnetización y la energía de los espines para una cadena de espines (modelo 1D) y para una red cuadrada(modelo 2D),el problema principal es que el programa necesita para darme mayor precisión un gran numero de pasos de Montecarlo, lo cual me exigió mucho demanda de tiempo computacional, me limite a usar el mínimo de 20000 pasos ya que mas pasos involucraban muchísimo tiempo, las graficas con esta cantidad de pasos dan una aproximación buena de lo que es el Modelo de Ising , por otro lado me empeñe en armar otro programa en el modelo 1D que mostrara lo que ocurría con la orientación de los espines al a variar T desde cero a T mayores e ir viendo que ocurría con los mismos. La otra parte de mi proyecto consistió en desarrollar un programa que me diera una idea de cómo era la correlación entre estos espines y como varia esta con la temperatura. Tengo la idea de haber aprendido muchos detalles de programación durante el desarrollo del mismo, cosas que quizás no me daba cuenta de cómo funcionaban al programarlas y me costaba entenderlas.