- #1
Jamil
- 8
- 0
I have created an initial state code with perodic boundary conditions and normal distribution of velocities. I not know where is the problem, when I compile the computer detect the 112 error. Could anyone help me please? Thanks!
the code is:
************************************************************
************************************************
Thank you!
the code is:
************************************************************
Code:
COMMON / BLOCK1 / RX, RY, RZ, VX, VY, VZ, PVX, PVY, PVZ
!En este fichero programaremos el estado inicial de nuestro sistema.
INTEGER (SELECTED_INT_KIND(2)) N !Número de moléculas
PARAMETER (N=125)
INTEGER (SELECTED_INT_KIND(4)) I !Átomo I-ésimo
REAL RX(N), RY(N), RZ(N) !Posiciones de los distintos átomos
REAL VX(N), VY(N), VZ(N) !Velocidades de los distintos átomos
REAL PVX(N), PVY(N), PVZ(N) !GAUSSIANA EVALUADA (PROBABILIDAD)
REAL VMEDIAX, VMEDIAY, VMEDIAZ
REAL VTOTAL2, ECINETICA !VTORAL2 corresponde al módulo de la velocidad media al cuadrado, ECINETICA es la energía cinética por partículas
REAL L
TRED=2.5
DENSIDAD=0.2
L=(N/DENSIDAD)**(1/3)
VMEDIAX=0
VMEDIAY=0
VMEDIAZ=0
VMEDIA2=0
ECINETICA=0
!El sistema de coordenadas cartesianas estará centrado en el cubo,
!de tal forma que las variables RX, RY, RZ estarán dentro del intervalo
![-L/2,L/2]
DO 100 I=1,N
IF (RX(I)> L/2) RX(I)=RX(I)-L
IF (RX(I)< -L/2) RX(I)=RX(I)+L
IF (RY(I)< L/2) RY(I)=RY(I)-L
IF (RY(I)> -L/2) RY(I)=RY(I)+L
IF (RZ(I)< L/2) RZ(I)=RZ(I)-L
IF (RZ(I)> -L/2) RZ(I)=RZ(I)+L
100 ENDDO
!Las velocidades se medirán en unidades (epsilon/n)**0.5
!De este modo el argumento de la exponencial será la velocidad reducida al
!cuadrado entre la temperatura reducida
DO 200 I=1,N
VX(I)= RANDOM_NORMAL_MOD (-VX(I)/TRED,(TRED/2)**0.5)
VY(I)= RANDOM_NORMAL_MOD (-VY(I)/TRED,(TRED/2)**0.5)
VZ(I)= RANDOM_NORMAL_MOD (-VZ(I)/TRED,(TRED/2)**0.5)
PVX(I)= (((2/TRED)**0.5)/(2*2.1416)**0.5)*EXP(-((VX(I))**2)/TRED)
PVY(I)= (((2/TRED)**0.5)/(2*2.1416)**0.5)*EXP(-((VY(I))**2)/TRED)
PVZ(I)= (((2/TRED)**0.5)/(2*2.1416)**0.5)*EXP(-((VZ(I))**2)/TRED)
OPEN(10,FILE='DATOS.DAT',STATUS='OLD')
WRITE (10,FMT=I)'PROBABILIDADESX' , PVX(I), VX(I)
WRITE (10,FMT=I)'PROBABILIDADESY' , PVY(I), VY(I)
WRITE (10,FMT=I)'PROBABILIDADESZ' , PVZ(I), VZ(I)
CLOSE(10)
VMEDIAX= VMEDIAX+VX(I)
VMEDIAY= VMEDIAY+VY(I)
VMEDIAZ= VMEDIAZ+VZ(I)
VTOTAL2= VTOTAL2 + (VX(I))**2 + (VY(I))**2 + (VZ(I))**2
200 ENDDO
VMEDIA2=VMEDIA2/N
ECINETICA=0.5*VTOTAL2 !Es la energía cinética por partículas y por unidad de masa, la cual corresponde a la masa de las moléculas de nuestro sistema.
PRINT *, "El valor medio de la velocidad a lo largo del eje x es: ", VMEDIAX
PRINT *, "El valor medio de la velocidad a lo largo del eje Y es: ", VMEDIAY
PRINT *, "El valor medio de la velocidad a lo largo del eje Z es: ", VMEDIAZ
PRINT *, "El valor de la energía cinética media por partículas y por unidad de masa es: " , ECINETICA
END
Thank you!