root / src / VectorPer.f90 @ 4
Historique | Voir | Annoter | Télécharger (1,42 ko)
1 | 1 | equemene | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
---|---|---|---|
2 | 1 | equemene | ! |
3 | 1 | equemene | ! VectorPer |
4 | 1 | equemene | ! |
5 | 1 | equemene | !!!!!!!!!!!!!!!!!!!!!!! |
6 | 1 | equemene | ! |
7 | 1 | equemene | ! This subroutine caclulates the vector defined by atom i and j |
8 | 1 | equemene | ! with j being displaced to a periodic image of the system. |
9 | 1 | equemene | ! |
10 | 1 | equemene | ! Input: |
11 | 1 | equemene | ! i: (INTEGER) index of the first atom, in the central cell |
12 | 1 | equemene | ! j: (INTEGER) index of the second atom, in a periodic image |
13 | 1 | equemene | ! na,nb,nc: (INTEGER) number of displacement of j atom, in lattice vectors. |
14 | 1 | equemene | ! x(Nat), y(nat), z(nat) : (REAL) Cartesian coordinates of the system. |
15 | 1 | equemene | ! |
16 | 1 | equemene | ! Output: |
17 | 1 | equemene | ! vx,vy,vz: (REAL) Vector i->j |
18 | 1 | equemene | ! Norm: (REAL) Norm of the vector. |
19 | 1 | equemene | ! |
20 | 1 | equemene | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
21 | 1 | equemene | ! |
22 | 1 | equemene | ! Nat and Lattice vectors (lat_a, lat_b, lat_c) are taken from Path_Module |
23 | 1 | equemene | ! |
24 | 1 | equemene | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
25 | 1 | equemene | |
26 | 1 | equemene | SUBROUTINE VectorPer(n1,n2,na,nb,nc,x,y,z,vx,vy,vz,norm) |
27 | 1 | equemene | |
28 | 1 | equemene | use VarTypes |
29 | 1 | equemene | use Path_module, only : NAt,Lat_a,Lat_b,Lat_c |
30 | 1 | equemene | |
31 | 1 | equemene | integer(KINT) :: n1,n2 |
32 | 1 | equemene | INTEGER(KINT) :: na,nb,nc |
33 | 1 | equemene | real(KREAL) :: x(Nat),y(Nat),z(Nat) |
34 | 1 | equemene | real(KREAL) :: vx,vy,vz,norm |
35 | 1 | equemene | |
36 | 1 | equemene | vx=x(n2)-x(n1)+na*Lat_a(1)+nb*Lat_b(1)+nc*Lat_c(1) |
37 | 1 | equemene | vy=y(n2)-y(n1)+na*Lat_a(2)+nb*Lat_b(2)+nc*Lat_c(2) |
38 | 1 | equemene | vz=z(n2)-z(n1)+na*Lat_a(3)+nb*Lat_b(3)+nc*Lat_c(3) |
39 | 1 | equemene | |
40 | 1 | equemene | norm=dsqrt( vx*vx + vy*vy + vz*vz ) |
41 | 1 | equemene | |
42 | 1 | equemene | ! write(6,*) "Dbg VectorPer : n1,n2, na,nb,nc :",n1,n2,na,nb,nc |
43 | 1 | equemene | ! write(6,*) vx,vy,vz,norm |
44 | 1 | equemene | ! write(6,*) |
45 | 1 | equemene | |
46 | 4 | pfleura2 | RETURN |
47 | 1 | equemene | END SUBROUTINE VectorPer |