| integer*4, PARAMETER :: L = 32 |
| real*8 :: MAGNE, ENERG, TEMP, E, DIFE, DELTA, M, SUMA, W(-8:8), genrand_real2 |
| integer*4 :: PBC(0:L+1), I, J, IMC, MCTOT, IPAS, N, SEED |
| ! Inicialitzem algunes variables sobre el problema |
| ! Inicialitzem variable que ens fa latent la periodicitat |
| ! Cache dels valors de l'exponencial |
| W(I) = exp(-float(I)/TEMP) |
| ! Inicialitzem la matriu d'spins aleatòriament |
| print *, "Energia inicial:", E, "Magnet. inicial:", M |
| ! Iterem amb el mètode de Montecarlo |
| I = INT(genrand_real2()*L) + 1 |
| J = INT(genrand_real2()*L) + 1 |
| SUMA = S(PBC(I - 1), J) + S(PBC(I + 1), J) + S(I, PBC(J - 1)) + S(I, PBC(J + 1)) |
| if (DELTA >= W(int(DIFE))) then |
| print *, "Iter:", IMC, "Energia:", E, "Recalc.:", ENERG(S, L, PBC), "Magn:", INT(M), "Recalc.:", INT(MAGNE(S, L)) |