Statistiques globales et en temps réel de la totalité des serveurs d'Urban Terror. Suivez l'évolution du nombre de joueurs sur Urban Terror !
Statistiques globales et en temps réel de la totalité des serveurs d'Urban Terror. Suivez l'évolution du nombre de joueurs sur Urban Terror !
Guide rapide concernant l'inscription sur le site officiel du jeu. Créez ainsi votre compte joueur qui permet d'être authentifié sur les serveurs de jeu de la 4.2 !
Envie de parler avec les autres membres de la communauté ? Alors venez vous connecter, vous vous sentirez moins seul !
Rejoignez-nous sur le discord Urban Terror France !
Code : Tout sélectionner
implicit none
integer a, b, droite, gauche, nord, sud, i, N
REAL*8 alea, kT, j, Ho, Hf, t
character*32 ising
character*32 energie
integer, dimension(50,50) :: spin
write(*,*)'Entrez le nom du fichier.xyz'
read(5,*) ising
write(*,*)'Entrez le nom du fichier.dat de stockage d energie'
read(5,*) energie
write(*,*)'Entrez le nombre d iteration'
read(5,*) N
write(*,*)'Entrez la valeur de kT'
read(5,*) kT
write(*,*)'Entrez la constante de couplage'
read(5,*) j
a = 0
b = 0
droite = 0
gauche = 0
nord = 0
sud = 0
alea = 0.0
Hf = 0.0
Ho = 0.0
!initialisation des spins, ‚tat initial
open(1, file=ising)
write(1,*) 50*50 !rien
write(1,*) ising !rien
do a = 1,50
do b = 1,50
call random_number(alea)
if (alea <= 0.5) then
spin(a,b) = +1
!write(1,'(A4,3i12.6)')'O ', a, b, 0
else
spin(a,b) = -1 !mettre +1 pour spin up et ainsi avoir tout les atomes en up
!write(1,'(A4,3i12.6)')'Ar', a, b, 0
end if
enddo
enddo
!spin des 4 premiers voisins
do i = 1, N
do a=1,50
do b=1,50
droite = a+1
gauche = a+1
nord = b+1
sud = b+1
if (a == 1) then
gauche = 50
endif
if (a == 50) then
droite = 1
endif
if (b == 1) then
nord = 50
endif
if (b == 50) then
sud = 1
endif
enddo
enddo
!calcul de l'energie
open(21, file = energie)
do a=1,50
do b=1,50
Ho = -j*(spin(a,b) * spin(droite,b)
*+ spin(a,b) * spin(gauche,b)
*+ spin(a,b) * spin(a,nord)
*+ spin(a,b) * spin(a,sud))
Hf = -j*((-spin(a,b)) * spin(droite,b)
*+ (-spin(a,b)) * spin(gauche,b)
*+ (-spin(a,b)) * spin(a,nord)
*+ (-spin(a,b)) * spin(a,sud))
write(21,*)Ho, Hf
!Algorithme de Metropolis
if (Hf < Ho) then
spin(a,b) = -spin(a,b)
else
call random_number(alea)
t = exp(-(Hf-Ho)/kT)
endif
if (alea < t) then
spin(a,b) = -spin(a,b)
end if
!‚tat final
if (spin(a,b) == -1) then
write(1,'(A4,3i12.6)')'O ', a, b, 0
else
write(1,'(A4,3i12.6)')'Ar', a, b, 0
end if
enddo
enddo
!write(*,*)'Energie Ho=',Ho
enddo
write(*,*)'Energie H=',Ho + hf
end