program exoZero
implicit integer(i,n)
IS=0
do i=0,9
IS=IS+i
enddo
write(*,*)"somme=",IS
stop
end
program exoUn
implicit integer(i,n)
open(5,file='pro.in',status='old')
open(8,file='pro.out1',status='unknown')
read(5,*) j
IS1=0
IS2=0
do i=0,j-1
l=mod(i,2)
if(l.eq.0) then
IS1=IS1+i
else
IS2=IS2+i
endif
enddo
IS=IS1+IS2
write(8,*)'IS1=',IS1,'; IS2=',IS2
write(8,*)"somme=",IS
write(*,*)'IS1=',IS1,'; IS2=',IS2
write(*,*)"somme=",IS
stop
end
program exoDeux
implicit integer(i,n)
parameter(n=4,nn=n*n)
integer mat(n,n)
open(1,file='pro.out2',status='unknown')
do i=1,n
do j=1,n
l=i+j
k=mod(l,2)
if(k.eq.0) then
mat(i,j)=0
else
mat(i,j)=1
endif
enddo
enddo
!afficharge des Résultats
do i=1,n
write(1,100) (mat(i,j),j=1 ,n)
write(1,*)
enddo
100 Format(6X,4(I3))
! calcul de hbar
ih=0
do i=1,n
do j=1,n
ih=ih+mat(i,j)
enddo
enddo
hbar=ih/nn
!calcul de omega carré
omega2=0
do i=1,n
do j=1,n
omega2=omega2+((mat(i,j)-hbar)**2)
enddo
enddo
omega2=(1/nn)*omega2
omega=omega2**0.5
write(1,*)'Hbar=',hbar
write(1,*)
write(1,*)'Omega=',omega
write(1,*)
stop
end
program exoTrois
implicit integer(i,n)
parameter(n=4)
integer mat(n,n)
open(3,file='pro.out3',status='unknown')
do i=1,n
do j=1,n
l=i+j
k=mod(l,4)
if(k==0) then
mat(i,j)=2
else if(k.eq.2) then
mat(i,j)=0
else
mat(i,j)=1
endif
enddo
enddo
do i=1,n
write(3,98)(mat(i,j),j=1,n)
enddo
98 Format(6X,4(I3))
end
program exoQuatre
implicit integer(i,n)
real ener(1000)
parameter(nt=3)
integer mat(nt,nt),iener(1000)
open(1,file='pro.out10',status='unknown')
icount=0
do i1=-1,1,2
do i2=-1,1,2
do i3=-1,1,2
do i4=-1,1,2
do i5=-1,1,2
do i6=-1,1,2
do i7=-1,1,2
do i8=-1,1,2
do i9=-1,1,2
mat(1,1)=i1
mat(1,2)=i2
mat(1,3)=i3
mat(2,1)=i4
mat(2,2)=i5
mat(2,3)=i6
mat(3,1)=i7
mat(3,2)=i8
mat(3,3)=i9
icount=icount+1
write(1,*)'configuration numero',icount
do i=1,nt
write(1,20)(mat(i,j),j=1,nt)
write(1,*)
enddo
20 Format(4x,3(I3))
write(1,*)
do i=1,nt
do j=1,nt
ivoish=i-1
if(ivoish.eq.0) ivoish=nt
ivoisb=i+1
if(ivoisb.gt.nt) ivoisb=1
jvoisd=j+1
if(jvoisd.gt.nt) jvoisd=1
jvoisg=j-1
if(jvoisg.eq.0) jvoisg=nt
enddo
enddo
!calcul de l'energie et l'aimantation
IM=0
IE=0
do i=1,nt
do j=1,nt
IE=IE-1*mat(i,j)*(mat(ivoish,j)+mat(ivoisb,j)+mat(i,jvoisd)+mat(i,jvoisg))
IM=IM+mat(i,j)
enddo
enddo
erg=IE/2
aim=IM/(nt*nt)
ener(icount)=erg
write(1,*)'Energie:',erg
write(1,*)
write(1,*)'Aimantation moyenne:',aim
write(1,*)
enddo
enddo
enddo
enddo
enddo
enddo
enddo
enddo
enddo
!fonction de partition Z
pZ=0
do i=1,icount
erg=ener(i)
pb=exp(-erg)
pZ=pZ+pb
enddo
write(1,*)'pZ=',pZ
!calcul de la probabilité tout "+" ou tout"-"
p1=(exp(-ener(1)))/pZ
write(1,*)'tout-'
write(1,*)'proba=',p1
write(1,*)
write(1,*)'tout+'
p2=(exp(-ener(icount)))/pZ
write(1,*)'proba=',p2
stop
end
program exoCinq
implicit integer(i,n)
parameter(nt=4)
integer mat(nt,nt)
open(1,file='pro.in5',status='old')
open(2,file='pro.out5',status='unknown')
do i=1,nt
read(1,*)(mat(i,j),j=1,nt)
enddo
icount=0
do i=1,nt
do j=1,nt
ivh=i-1
if(ivh.eq.0) ivh=nt
ivb=i+1
if(ivb.gt.nt) ivb=1
jvg=j-1
if(ivg.eq.0) jvg=nt
jvd=j+1
if(jvd.gt.nt) jvd=1
ih1=mat(ivh,j)
ih2=mat(ivb,j)
ih3=mat(i,jvg)
ih4=mat(i,jvd)
IH=ih1+ih2+ih3+ih4
if(IH.ge.3) then
icount=icount+1
IX=i
IY=j
write(2,*)'Icount=',icount
write(2,*)'IX=',IX
write(2,*)'IY=',IY
write(2,*)'IH',icount,'=',IH
write(*,*)'Icount=',icount
write(*,*)'IX=',IX
write(*,*)'IY=',IY
write(*,*)'IH',icount,'=',IH
endif
enddo
enddo
stop
end
program exoSixCo
implicit integer(i,n)
real t(100)
open(1,file='pro.in6',status='old')
open(2,file='pro.out6corrige',status='unknown')
read(1,*) eps
read(1,*) dmu
i=0
F=0
t(1)=0.1
do j=2,40
t(j)=(t(j-1))+0.1
enddo
do j=1,40
q=exp(dmu/t(j))
v=exp(eps/t(j))
a1=q/(1+v)
a2=a1
a3=a1
a4=a1
a5=q/2
a6=q/(1+v**2)
a7=q/(1+v**(-1))
a8=a7
b1=(6*a5*(a3+a6)+2*a6*a5)*a6*a2
b2=a1*a7*a8*a4
c1=a2*a6*(a3+a6)
c2=2*a5*a6*(a3+a6)
c3=2*a5*a3*a2+a5*a6**2
G=(0.5)*((b1+b2)/(c1+c2+c3))
i=i+1
if(G.gt.F) F=G
write(2,*)'numero:',i
write(2,*)'t=',t(j)
write(2,*)'G=',G
write(*,*)'numero:',i
write(*,*)'t=',t(j)
write(*,*)'G=',G
enddo
write(2,*)'le G maximum est:',F
write(*,*)'le G maximum est:',F
stop
end
program exoSept
implicit integer(i,n)
parameter (nt=4)
integer Mat(nt,nt)
open(1,file='pro.in7',status='old')
open(2,file='pro.out7',status='unknown')
do i=1,nt
read(1,*)(Mat(i,j),j=1,nt)
enddo
do l=1,6
r1=rand(0)
r2=rand(0)
ich=1+r1*nt
ich=min(ich,nt)
jch=1+r2*nt
jch=min(jch,nt)
ih=ich-1
if(ih.eq.0) ih=nt
ib=ich+1
if(ib.gt.nt) ib=1
jg=jch-1
if(jg.eq.0) jg=nt
jd=jch+1
if(jd.gt.nt) jd=1
ivois1=Mat(ih,jch)
ivois2=Mat(ich,jd)
ivois3=Mat(ib,jch)
ivois4=Mat(ich,jg)
itot=ivois1+ivois2+ivois3+ivois4
if(itot.eq.0) then
Mat(ich,jch)=-Mat(ich,jch)
endif
enddo
do i=1,nt
write(2,300) (Mat(i,j),j=1,nt)
write(2,*)
enddo
300 Format(5X,4(I4))
ends
program integralMCun
implicit integer(i,n)
open(2,file='pro.out3',status='unknown')
write(*,*)'donne nsin:'
read(*,*)nsin
pi=3.14159265
ab=pi/6
Xab=0
do i=1,nsin
r=rand(0)
arg=ab*r
Xab=Xab+((sin(arg+pi/6))**2)*cos(arg-pi/6)*ab
enddo
res=Xab/nsin
write(2,*)"integral I=",res
write(*,*)"integral I=",res
stop
end
program mcSimulUN
implicit integer(i,n)
real r,x(100000), y(100000), yy
nsim=1000 ! nbre d'experience
npas=100000 ! temps total
do i=1,npas
x(i)=0
y(i)=0
enddo
do isim=1,nsim
yy=0 !position de depart
do ipas=1,npas
r=rand(0)
if(r.le.0.5) then
istep=1
else
istep=-1
endif
yy=yy+istep
x(ipas)=x(ipas)+yy
y(ipas)=y(ipas)+yy*yy
enddo
enddo
do i=1,npas
write(10,*) i,x(i)/nsim!x(t) bar
write(11,*) i,y(i)/nsim!x(t) carre bar
enddo
end
program depotAleatoire
implicit integer(i,n)
parameter(mt=200)
integer mat(mt,mt)
real rmc(100000)
open(1,file='depo.in',status='old')
open(2,file='depo.out2',status='unknown')
read(1,*)nt
read(1,*)npas
read(1,*)nsim
do i=1,10000
rmc(i)=0
enddo
do isim=1,nsim
icount=0
do i=1,nt
do j=1,nt
mat(i,j)=0
enddo
enddo
do ipas=1,npas
do imc=1,nt*nt
r1=rand(0)
ix=1+r1*nt
ix=min(ix,nt)
r2=rand(0)
iy=1+r2*nt
iy=min(iy,nt)
mat(ix,iy)=mat(ix,iy)+1
enddo
imod=mod(ipas,100)
if(imod.eq.0)then
ih=0
do i=1,nt
do j=1,nt
ih=ih+mat(i,j)
enddo
enddo
hbar=1.*ih/(nt*nt)
omega2=0
do i=1,nt
do j=1,nt
omega2=omega2+(1.*mat(i,j)-hbar)**2
enddo
enddo
omega2moy=omega2/(nt*nt)
omega=omega2moy**0.5
icount=icount+1
rmc(icount)=rmc(icount)+omega
endif
enddo
enddo
do i=1,icount
write(2,*) 100*i,rmc(i)/nsim
enddo
stop
end
Program ising
implicit integer(i,n)
parameter(mt=100,nn=mt*mt)
integer mat(mt,mt)
!
common/mat1/ip(mt),jp(mt)
open(1,file='pro20.in',status='old')
open(2,file='Ising1.out',status='unknown')
open(3,file='Ising2.out',status='unknown')
!
read(1,*)nt
read(1,*)tdebut,tfinal,tpas
read(1,*)npas,nther
read(1,*)nsim
read(1,*)hj
do i=1,nt
ip(i)=i+1
jp(i)=i-1
enddo
ip(nt)=1
jp(1)=nt
do t=tdebut,tfinal,tpas
!
aim=0
ener=0
icount=0
do isim=1,nsim
write(*,*)'exprience numero',isim
! creaction d'une matrice de confiduration initale
do i=1,nt
do j=1,nt
mat(i,j)=-1 ! tous les spin down
enddo
enddo
do ipas=1,npas
do imc=1,nt*nt
r1=rand(0)
r2=rand(0)
ich=1+r1*nt
ich=min(ich,nt)
jch=1+r2*nt
jc=min(jch,nt)
isp=mat(ich,jch)
if(isp.eq.1) then
nisp=-1
else
nisp=1
endif
!calcul du poids de boltzmann
n1=mat(jp(ich),jch)
n2=mat(ich,jp(jch))
n3=mat(ip(ich),jch)
n4=mat(ich,ip(jch))
deltaE=-hj*(nisp-isp)*(n1+n2+n3+n4)
pb=min(1.,esp(-deltaE/a))
r3=rand(0)
if(pb.ge.r3) then
mat(ich,jch)=nisp
endif
enddo !imc
if(ipas.gt.nther) then
ips=0
em=0
do i=1,nt
do j=1,nt
ips=ips+mat(i,j)
m1=mat(jp(i),j)
m2=mat(i,jp(j))
!energie
em=-hj*nisp*(m1+m2)
enddo
enddo
psbar=abs(1.*ips/nn)
embar=em/nn
aim=aim+psbarProgram ising
implicit integer(i,n)
parameter(mt=100,nn=mt*mt)
integer mat(mt,mt)
!
common/mat1/ip(mt),jp(mt)
open(1,file='pro20.in',status='old')
open(2,file='Ising1.out',status='unknown')
open(3,file='Ising2.out',status='unknown')
!
read(1,*)nt
read(1,*)tdebut,tfinal,tpas
read(1,*)npas,nther
read(1,*)nsim
read(1,*)hj
do i=1,nt
ip(i)=i+1
jp(i)=i-1
enddo
ip(nt)=1
jp(1)=nt
do t=tdebut,tfinal,tpas
!
aim=0
ener=0
icount=0
do isim=1,nsim
write(*,*)'exprience numero',isim
! creaction d'une matrice de confiduration initale
do i=1,nt
do j=1,nt
mat(i,j)=-1 ! tous les spin down
enddo
enddo
do ipas=1,npas
do imc=1,nt*nt
r1=rand(0)
r2=rand(0)
ich=1+r1*nt
ich=min(ich,nt)
jch=1+r2*nt
jc=min(jch,nt)
isp=mat(ich,jch)
if(isp.eq.1) then
nisp=-1
else
nisp=1
endif
!calcul du poids de boltzmann
n1=mat(jp(ich),jch)
n2=mat(ich,jp(jch))
n3=mat(ip(ich),jch)
n4=mat(ich,ip(jch))
deltaE=-hj*(nisp-isp)*(n1+n2+n3+n4)
pb=min(1.,esp(-deltaE/a))
r3=rand(0)
if(pb.ge.r3) then
mat(ich,jch)=nisp
endif
enddo !imc
if(ipas.gt.nther) then
ips=0
em=0
do i=1,nt
do j=1,nt
ips=ips+mat(i,j)
m1=mat(jp(i),j)
m2=mat(i,jp(j))
!energie
em=-hj*nisp*(m1+m2)
enddo
enddo
psbar=abs(1.*ips/nn)
embar=em/nn
aim=aim+psbar
ener=ener+embar
icount=icount+1
endif
enddo
enddo
xmag=aim/1.*icount
emag=ener/1.*icount
write(2,*)t,xmag
write(3,*)t,emag
enddo
stop
end program
ener=ener+embar
icount=icount+1
endif
enddo
enddo
xmag=aim/1.*icount
emag=ener/1.*icount
write(2,*)t,xmag
write(3,*)t,emag
enddo
stop
end program
Personne n'est parfait.
Mais il faut bien lire