Révision 2
src/Calc_mixed_frag.f90 (revision 2) | ||
---|---|---|
46 | 46 |
real(KREAL) :: vx3,vy3,vz3,norm3 |
47 | 47 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
48 | 48 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
49 |
real(KREAL) :: val,val_d, d12, d13,d23,d
|
|
50 |
Logical PasFini,Debug
|
|
49 |
real(KREAL) :: val, val_d, d
|
|
50 |
Logical Debug |
|
51 | 51 |
LOGICAL, ALLOCATABLE :: DejaFait(:),FCaf(:) !(na) |
52 | 52 |
Logical, ALLOCATABLE :: FrozAt(:) !T if this atom is frozen |
53 |
LOGICAL F1213, F1223,F1323 |
|
54 | 53 |
|
55 | 54 |
|
56 |
INTEGER(KINT) :: I,J,n0,n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax |
|
57 |
INTEGER(KINT) :: IMax, I3,I1,Ip, IFragFroz,IBeg |
|
55 |
|
|
56 |
INTEGER(KINT) :: I, J, n1, n2, n3, n4, IAt, IL, JL, IFrag, ITmp |
|
57 |
INTEGER(KINT) :: I3, I1, Ip, IFragFroz, IBeg |
|
58 | 58 |
INTEGER(KINT) :: I0, Izm, JAt,Izm0,Idx |
59 | 59 |
|
60 |
REAL(KREAL) :: sDihe, Pi, Sang
|
|
60 |
REAL(KREAL) :: Pi, Sang |
|
61 | 61 |
|
62 | 62 |
INTERFACE |
63 | 63 |
function valid(string) result (isValid) |
... | ... | |
938 | 938 |
val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2) |
939 | 939 |
|
940 | 940 |
CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
941 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
941 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
942 | 942 |
vx4,vy4,vz4,norm4) |
943 |
CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
943 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
944 | 944 |
vx5,vy5,vz5,norm5) |
945 | 945 |
|
946 | 946 |
val_d=angle_d(vx4,vy4,vz4,norm4, vx5,vy5,vz5,norm5, & |
src/Header.f90 (revision 2) | ||
---|---|---|
5 | 5 |
|
6 | 6 |
CHARACTER(*) :: String |
7 | 7 |
CHARACTER(70) :: Head1,Sep |
8 |
INTEGER, PARAMETER :: I=70 |
|
9 | 8 |
INTEGER :: LenS,Len1,Pos1 |
10 | 9 |
|
11 | 10 |
Head1="=====================================================================" |
src/Step_GEDIIS.f90 (revision 2) | ||
---|---|---|
22 | 22 |
LOGICAL DEBUG, PRINT, ci_lt_zero |
23 | 23 |
INTEGER(KINT), SAVE :: MSET ! mth Iteration |
24 | 24 |
REAL(KREAL) :: ci(MRESET), ci_tmp(MRESET) ! MRESET = maximum number of iterations. |
25 |
INTEGER(KINT) :: NGEDIIS, MPLUS, INV, ITERA, MM, cis_zero, IXX, JXX, MSET_minus_cis_zero
|
|
26 |
INTEGER(KINT) :: I,J,K, JJ, KJ, JNV, II, IONE, IJ, INK,ITmp, IX, JX, KX, MSET_C_cis_zero
|
|
27 |
INTEGER(KINT) :: current_size_B_mat, MyPointer, Iat
|
|
28 |
REAL(KREAL) :: XMax, XNorm, S, DET, THRES, tmp, ER_star, ER_star_tmp
|
|
25 |
INTEGER(KINT) :: NGEDIIS, MPLUS, INV, ITERA, MM, cis_zero |
|
26 |
INTEGER(KINT) :: I, J, K, JJ, JNV, II, IONE, IJ, IX, JX, KX
|
|
27 |
INTEGER(KINT) :: current_size_B_mat, MyPointer |
|
28 |
REAL(KREAL) :: XMax, XNorm, DET, THRES, tmp, ER_star, ER_star_tmp |
|
29 | 29 |
|
30 | 30 |
DEBUG=.TRUE. |
31 | 31 |
PRINT=.FALSE. |
src/Mixed2cart.f90 (revision 2) | ||
---|---|---|
12 | 12 |
REAL(KREAL), INTENT(IN) :: IntCoord(*) |
13 | 13 |
REAL(KREAL), INTENT(OUT) :: XyzCoord(Nat,3) |
14 | 14 |
|
15 |
INTEGER(KINT) :: I,J,K,L,Idx,IBeg,Iat
|
|
15 |
INTEGER(KINT) :: I, J, Idx, IBeg, Iat
|
|
16 | 16 |
REAl(KREAL), ALLOCATABLE :: ValZmat(:,:),XyzTmp(:,:) |
17 | 17 |
REAL(KREAL) :: d, a_val |
18 | 18 |
|
src/Space_GEDIIS_all.f90 (revision 2) | ||
---|---|---|
17 | 17 |
REAL(KREAL) :: GeomSet(NGeomF,MRESET*NCoord), GradSet(NGeomF,MRESET*NCoord), ESET(NGeomF,MRESET) |
18 | 18 |
! Geom and GRAD for all iterations. |
19 | 19 |
|
20 |
INTEGER(KINT) :: I,J,K,NMK,MI,NI
|
|
20 |
INTEGER(KINT) :: I, K, NMK, MI, NI
|
|
21 | 21 |
INTEGER(KINT), SAVE :: NRESET |
22 | 22 |
|
23 | 23 |
! UPDATE PARAMETER AND GRADIENT SUBSPACE: |
src/minv.f90 (revision 2) | ||
---|---|---|
39 | 39 |
IZ=N*(J-1) |
40 | 40 |
DO 20 I=K,N |
41 | 41 |
IJ=IZ+I |
42 |
10 IF (ABS(BIGA).LT.ABS(A(IJ)))THEN
|
|
42 |
IF (ABS(BIGA).LT.ABS(A(IJ)))THEN
|
|
43 | 43 |
BIGA=A(IJ) |
44 | 44 |
L(K)=I |
45 | 45 |
M(K)=J |
46 | 46 |
ENDIF |
47 |
20 CONTINUE
|
|
47 |
20 CONTINUE
|
|
48 | 48 |
! |
49 | 49 |
! INTERCHANGE ROWS |
50 | 50 |
! |
src/Tensor.f90 (revision 2) | ||
---|---|---|
15 | 15 |
|
16 | 16 |
IMPLICIT NONE |
17 | 17 |
|
18 |
REAL(KREAL), parameter :: zero=0.d0,one=1.d0
|
|
18 |
REAL(KREAL), parameter :: zero=0.d0 |
|
19 | 19 |
|
20 | 20 |
INTEGER(KINT), INTENT(IN) :: Natom |
21 | 21 |
real(KREAL) :: rx(Natom),ry(Natom),rz(Natom),rmass(Natom) |
22 | 22 |
real(KREAL) :: a,b,c,Tinert(3,3),CoordG(3) |
23 | 23 |
|
24 |
INTEGER(KINT) :: jover, I, J
|
|
24 |
INTEGER(KINT) :: jover, J |
|
25 | 25 |
REAL(KREAL) :: Txx, Tyy, Tzz, Txy, Txz, Tyz, Txxi |
26 | 26 |
REAL(KREAL) :: Ryb, Rzc, Rxa, Rmj2, ryb2, rzc2, rxa2, Rmj |
27 | 27 |
|
... | ... | |
48 | 48 |
CoordG(1)=a |
49 | 49 |
CoordG(2)=b |
50 | 50 |
CoordG(3)=c |
51 |
1000 FORMAT(3F15.3) |
|
52 |
!c WRITE(IOOUT,1000) (CoordG(i),i=1,3) |
|
51 |
|
|
53 | 52 |
jover=mod(natom,2) |
54 | 53 |
if(jover.eq.0) then |
55 | 54 |
txx=zero |
src/Step_DIIS_all.f90 (revision 2) | ||
---|---|---|
18 | 18 |
INTEGER(KINT) :: NGeomF,IGeom |
19 | 19 |
INTEGER(KINT), INTENT(IN) :: NCoord |
20 | 20 |
|
21 |
REAL(KREAL) :: Geom_new(NCoord),Geom(NCoord),Grad(NCoord)
|
|
21 |
REAL(KREAL) :: Geom(NCoord), Grad(NCoord)
|
|
22 | 22 |
REAL(KREAL) :: Hess(NCoord*NCoord),Step(NCoord) |
23 | 23 |
REAL(KREAL) :: HEAT,HP |
24 | 24 |
LOGICAL :: allocation_flag |
... | ... | |
67 | 67 |
REAL(KREAL), ALLOCATABLE, SAVE :: GeomSet(:,:),GradSet(:,:),ERR(:,:) ! MRESET*NCoord |
68 | 68 |
REAL(KREAL), SAVE :: ESET(MRESET) |
69 | 69 |
REAL(KREAL), ALLOCATABLE, SAVE :: DXTMP(:,:),GSAVE(:,:) !NCoord, why DXTMP has SAVE attribute?? |
70 |
REAL(KREAL) :: B(M2),BS(M2),BST(M2)
|
|
70 |
REAL(KREAL) :: B(M2), BS(M2)
|
|
71 | 71 |
LOGICAL DEBUG, PRINT |
72 | 72 |
INTEGER(KINT), ALLOCATABLE, SAVE :: MSET(:) |
73 | 73 |
LOGICAL, ALLOCATABLE, SAVE :: FRST(:) |
src/Calc_baker_allGeomF.f90 (revision 2) | ||
---|---|---|
27 | 27 |
REAL(KREAL), ALLOCATABLE :: XPrimRef(:) ! NPrim |
28 | 28 |
INTEGER(KINT) :: IGeom |
29 | 29 |
|
30 |
real(KREAL) :: vx,vy,vz,dist, Norm |
|
31 |
real(KREAL) :: vx1,vy1,vz1,norm1 |
|
32 |
real(KREAL) :: vx2,vy2,vz2,norm2 |
|
33 |
real(KREAL) :: vx3,vy3,vz3,norm3 |
|
34 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
|
35 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
|
36 |
real(KREAL) :: val,val_d, Q, T |
|
37 | 30 |
|
38 |
INTEGER(KINT) :: I,J, n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax |
|
39 |
INTEGER(KINT) :: I0, IOld, IAtTmp, Izm, JAt, Kat, Lat, L, NOUT |
|
31 |
INTEGER(KINT) :: I, J, K |
|
40 | 32 |
|
41 |
REAL(KREAL) :: sAngleIatIKat, sAngleIIatLat |
|
42 |
REAL(KREAL) :: DiheTmp |
|
43 | 33 |
|
44 |
LOGICAL :: debug, bond, AddPrimitiveCoord, FAIL
|
|
34 |
LOGICAL :: debug |
|
45 | 35 |
LOGICAL :: DebugPFL |
46 | 36 |
|
47 | 37 |
INTERFACE |
... | ... | |
120 | 110 |
z(1:Nat) = XyzGeomF(IGeom,3,1:Nat) |
121 | 111 |
XPrimREf=XPrimitiveF(IGeom,:) |
122 | 112 |
Call Calc_XPrim(nat,x,y,z,Coordinate,NPrim,XPrimitiveF(IGeom,:),XPrimRef) |
123 |
! ScanCoord=>Coordinate |
|
124 |
! I=0 ! index for the NPrim (NPrim is the number of primitive coordinates). |
|
125 |
! DO WHILE (Associated(ScanCoord%next)) |
|
126 |
! I=I+1 |
|
127 |
! SELECT CASE (ScanCoord%Type) |
|
128 |
! CASE ('BOND') |
|
129 |
! Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2) |
|
130 |
! XprimitiveF(IGeom,I) = Norm2 |
|
131 |
! CASE ('ANGLE') |
|
132 |
! Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx1,vy1,vz1,Norm1) |
|
133 |
! Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx2,vy2,vz2,Norm2) |
|
134 |
! XprimitiveF(IGeom,I) = angle(vx1,vy1,vz1,Norm1,vx2,vy2,vz2,Norm2)*Pi/180. |
|
135 |
! CASE ('DIHEDRAL') |
|
136 |
! Call vecteur(ScanCoord%At3,ScanCoord%At2,x,y,z,vx2,vy2,vz2,Norm2) |
|
137 |
! Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx1,vy1,vz1,Norm1) |
|
138 |
! Call vecteur(ScanCoord%At3,ScanCoord%At4,x,y,z,vx3,vy3,vz3,Norm3) |
|
139 |
! Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, & |
|
140 |
! vx5,vy5,vz5,norm5) |
|
141 |
! Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, & |
|
142 |
! vx4,vy4,vz4,norm4) |
|
143 |
! DiheTmp= angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
|
144 |
! vx2,vy2,vz2,norm2) |
|
145 |
! XprimitiveF(IGeom,I) = DiheTmp*Pi/180. |
|
146 |
!! We treat large dihedral angles differently as +180=-180 mathematically and physically |
|
147 |
!! but this causes lots of troubles when converting baker to cart. |
|
148 |
!! So we ensure that large dihedral angles always have the same sign |
|
149 |
! if (abs(ScanCoord%SignDihedral).NE.1) THEN |
|
150 |
! ScanCoord%SignDihedral=Int(Sign(1.d0,DiheTmp)) |
|
151 |
! ELSE |
|
152 |
! If ((abs(DiheTmp).GE.170.D0).AND.(Sign(1.,DiheTmp)*ScanCoord%SignDihedral<0)) THEN |
|
153 |
! XprimitiveF(IGeom,I) = DiheTmp*Pi/180.+ ScanCoord%SignDihedral*2.*Pi |
|
154 |
! END IF |
|
155 |
! END IF |
|
156 |
! END SELECT |
|
157 |
! ScanCoord => ScanCoord%next |
|
158 |
! END DO ! matches DO WHILE (Associated(ScanCoord%next)) |
|
159 | 113 |
END DO ! matches DO IGeom=1, NGeomF |
160 | 114 |
|
161 | 115 |
ALLOCATE(BprimT(3*Nat,NPrim)) |
src/egrad_gaussian.f90 (revision 2) | ||
---|---|---|
20 | 20 |
character(LCHARS) :: LINE |
21 | 21 |
|
22 | 22 |
logical :: debug, G03Ok |
23 |
LOGICAL :: fexist, FSim |
|
24 | 23 |
LOGICAL, SAVE :: first=.true. |
25 |
LOGICAL, ALLOCATABLE :: Done(:) |
|
26 | 24 |
|
27 |
REAL(KREAL), SAVE :: Eold=1.e6 |
|
28 |
REAL(KREAL), ALLOCATABLE :: GradTmp(:) |
|
25 |
REAL(KREAL) :: Pi |
|
29 | 26 |
|
30 |
REAL(KREAL) :: d, a_val, Pi |
|
31 |
|
|
32 |
REAL(KREAL) :: coef,x |
|
33 | 27 |
INTEGER(KINT) :: ItG03 |
34 |
INTEGER(KINT) :: iat, jat, kat, i, j, n3at, absidg, absidg2 |
|
35 |
INTEGER(KINT) :: kTmp, Istart,ITmp1,ITmp2, Idx |
|
36 |
INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11 |
|
28 |
INTEGER(KINT) :: iat, i, n3at |
|
29 |
INTEGER(KINT) :: ITmp1, ITmp2 |
|
37 | 30 |
|
38 | 31 |
CHARACTER(132) :: FileIn, FileOut, FileChk |
39 | 32 |
|
40 | 33 |
CHARACTER(3) :: SepIn=' < ', SepOut=' > ' |
41 |
CHARACTER(LCHARS) :: ListName, TitleTmp, CH32SVAR1 |
|
42 |
CHARACTER(VLCHARS), SAVE :: RstrtCopy, RunCommand |
|
43 |
LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False. |
|
44 |
LOGICAL :: FRdyn,FStopNucl, FTmp, Tchk,Tchk1 |
|
45 |
INTEGER(kint) :: NbLists,LastIt,Nat4,NStep, Firstit |
|
46 |
INTEGER(KINT) :: NStepAd,NStepTmp |
|
47 |
INTEGER(KINT) :: IShowTmp |
|
48 |
REAL(KREAL) :: FricPsiMin,FricPsiT, FricNuclTmp |
|
34 |
CHARACTER(VLCHARS), SAVE :: RunCommand |
|
35 |
! LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False. |
|
49 | 36 |
|
50 |
INTEGER(KINT), PARAMETER :: NbExtName=4 |
|
51 |
|
|
52 |
INTEGER(KINT) :: ICouc |
|
53 |
|
|
54 |
INTEGER(KINT) :: ILine |
|
55 |
INTEGER(KINT) :: NPulses, PulseLen, NStepWarm,NStepAv,NStepEq,NStepTot |
|
56 |
REAL(KREAL) :: TempWarm,Mean,Slope,Dev,RTmp1,RTmp2 |
|
57 |
|
|
58 | 37 |
! ====================================================================== |
59 | 38 |
|
60 | 39 |
LOGICAL, EXTERNAL :: valid |
... | ... | |
224 | 203 |
|
225 | 204 |
RETURN |
226 | 205 |
|
227 |
999 CONTINUE |
|
228 |
if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!' |
|
229 |
STOP |
|
206 |
!999 CONTINUE
|
|
207 |
! if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!'
|
|
208 |
! STOP
|
|
230 | 209 |
! ====================================================================== |
231 | 210 |
end subroutine egrad_gaussian |
src/Space_GEDIIS.f90 (revision 2) | ||
---|---|---|
18 | 18 |
REAL(KREAL) :: GeomSet(MRESET*NCoord), GradSet(MRESET*NCoord), ESET(MRESET) |
19 | 19 |
! Geom and GRAD for all iterations. |
20 | 20 |
|
21 |
INTEGER(KINT) :: I,J,K,NMK,MI,NI
|
|
21 |
INTEGER(KINT) :: I, K, NMK, MI, NI
|
|
22 | 22 |
INTEGER(KINT), SAVE :: NRESET |
23 | 23 |
|
24 | 24 |
! UPDATE PARAMETER AND GRADIENT SUBSPACE: |
src/PathCreate.f90 (revision 2) | ||
---|---|---|
24 | 24 |
REAL(KREAL), PARAMETER :: Inf=1e32 |
25 | 25 |
INTEGER(KINT), INTENT(IN) :: IOpt |
26 | 26 |
|
27 |
INTEGER(KINT) :: at,long |
|
28 | 27 |
REAL(KREAL), ALLOCATABLE :: val_zmat(:,:), val_zmatTmp(:,:) ! (3,Nat) |
29 | 28 |
REAL(KREAL), ALLOCATABLE :: X0(:), Y0(:), Z0(:) ! Nat |
30 | 29 |
REAL(KREAL), ALLOCATABLE :: XyzTmp(:,:), XyzTmp2(:,:) ! (Nat,3) |
... | ... | |
35 | 34 |
! NPrim=Number of primitive coordinates. |
36 | 35 |
REAL(KREAL), ALLOCATABLE :: XGeom(:) ! NGeomI |
37 | 36 |
REAL(KREAL), ALLOCATABLE :: XGeomF(:) ! NGeomF |
38 |
REAL(KREAL), ALLOCATABLE :: Hess_int(:,:) ! Hess_int (3*Nat,3*Nat), used for Baker case |
|
39 | 37 |
INTEGER(KINT) :: NGeomS |
40 | 38 |
|
41 |
REAL(KREAL) :: Rmsd,MRot(3,3), Delta, normDeltaX_int
|
|
42 |
REAL(KREAL), PARAMETER :: LimAngle=145.d0,TwoPi=360.d0
|
|
43 |
REAL(KREAL) ::s,ds,dist,a_val,d
|
|
44 |
INTEGER(KINT) :: I,J,K,NbCycle,igeom,nb,ig,iat
|
|
45 |
INTEGER(KINT) :: Itmp, Jat, L
|
|
39 |
REAL(KREAL) :: Rmsd, MRot(3, 3), Delta
|
|
40 |
REAL(KREAL), PARAMETER :: TwoPi=360.d0 |
|
41 |
REAL(KREAL) ::s, dist, a_val, d
|
|
42 |
INTEGER(KINT) :: I, J, igeom, iat
|
|
43 |
INTEGER(KINT) :: Itmp, Jat |
|
46 | 44 |
INTEGER(KINT) :: Idx,IBeg |
47 | 45 |
CHARACTER(LCHARS) :: Title |
48 | 46 |
REAL(KREAL), ALLOCATABLE :: x(:), y(:), z(:) |
src/upcase.f90 (revision 2) | ||
---|---|---|
3 | 3 |
! This subroutine converts a string into its Upcase |
4 | 4 |
! version |
5 | 5 |
|
6 |
IMPLICIT NONE |
|
7 |
|
|
6 | 8 |
integer, parameter :: KINT = kind(1) |
7 |
integer, parameter :: KREAL = kind(1.0d0) |
|
8 | 9 |
|
9 | 10 |
CHARACTER(*), INTENT(INOUT) :: String |
10 | 11 |
INTEGER(KINT) :: i,ic, length |
src/CalcBMat_int.f90 (revision 2) | ||
---|---|---|
1 |
subroutine CalcBmat_int(natoms, xyzatm, indzmat, dzdc, atmass,atome)
|
|
1 |
subroutine CalcBmat_int(natoms, xyzatm, indzmat, dzdc) |
|
2 | 2 |
|
3 | 3 |
use Io_module |
4 |
use Path_module, only : MW,Pi |
|
4 |
use Path_module, only : MW,Pi, atome
|
|
5 | 5 |
|
6 | 6 |
IMPLICIT NONE |
7 | 7 |
|
8 | 8 |
|
9 |
integer(KINT) :: natoms, indzmat(natoms,5),atome(natoms) |
|
10 |
real(KREAL) :: xyzatm(3,natoms), dzdc(3*natoms,3*natoms),atmass(natoms) |
|
9 |
integer(KINT), INTENT(IN) :: natoms, indzmat(natoms,5) |
|
10 |
real(KREAL), INTENT(IN) :: xyzatm(3,natoms) |
|
11 |
real(KREAL), INTENT(OUT) :: dzdc(3*natoms,3*natoms) |
|
11 | 12 |
|
12 | 13 |
|
13 | 14 |
!!!!!!!!!!!!!!!!!!!!! |
src/egrad_test.f90 (revision 2) | ||
---|---|---|
12 | 12 |
REAL(KREAL), INTENT(IN) :: Geom(Nat,3) |
13 | 13 |
|
14 | 14 |
! Bohr --> Angstr |
15 |
real(KREAL), parameter :: BOHR = 0.52917726D+00 |
|
15 |
! real(KREAL), parameter :: BOHR = 0.52917726D+00
|
|
16 | 16 |
! |
17 |
|
|
17 | 18 |
! Parameters to define the surface |
18 | 19 |
INTEGER(KINT), DIMENSION(6), PARAMETER :: IECOEF = (/-1,9,-45,45,-9,1/) |
19 | 20 |
INTEGER(KINT), DIMENSION(6), PARAMETER :: ISCOEF = (/-3,-2,-1,1,2,3/) |
20 | 21 |
REAL(KREAL), PARAMETER :: hh=0.001d0 |
21 | 22 |
|
22 | 23 |
! Variables |
23 |
INTEGER(KINT) :: i,j,iat,jat
|
|
24 |
INTEGER(KINT) :: i, iat, jat
|
|
24 | 25 |
REAL(KREAL), ALLOCATABLE :: Xyztmp(:,:),GradTmp(:,:) |
25 |
REAL(KREAL) :: xp,yp |
|
26 | 26 |
|
27 |
CHARACTER(132) :: Line |
|
28 | 27 |
LOGICAL :: Debug |
29 | 28 |
|
30 |
real(KREAL), parameter :: zero = 0.0_KREAL, one = 1.0_KREAL |
|
31 | 29 |
REAL(KREAL), external :: Exyz |
32 | 30 |
|
33 | 31 |
|
... | ... | |
107 | 105 |
INTEGER(KINT) :: i |
108 | 106 |
REAL(KREAL) :: dCH,dNH,dCN |
109 | 107 |
|
110 |
real(KREAL) :: autoA,autoeV |
|
111 |
parameter (autoA=0.52917715d0) |
|
108 |
! real(KREAL) :: autoA,autoeV |
|
109 |
real(KREAL) :: autoeV |
|
110 |
! parameter (autoA=0.52917715d0) |
|
112 | 111 |
parameter (autoeV=27.21183d0) |
113 | 112 |
|
114 | 113 |
|
115 |
real(KREAL) :: Q(3) |
|
116 |
real(KREAL) :: TT,gR,pR |
|
117 | 114 |
|
118 |
real(KREAL) :: mB,mC,mH |
|
119 |
real(KREAL) :: T,RN,RC,r1,r2,r3 |
|
115 |
real(KREAL) :: r1, r2, r3 |
|
120 | 116 |
|
121 | 117 |
real(KREAL) :: Z1,Z12,V1 |
122 | 118 |
real(KREAL) :: Z2,Z22,V2 |
... | ... | |
228 | 224 |
REAL(KREAL) ,INTENT(IN) :: Xyz(natoms,3) |
229 | 225 |
REAL(KREAL) :: Exyz |
230 | 226 |
|
231 |
INTEGER(KINT) :: i,j,iat,jat
|
|
227 |
INTEGER(KINT) :: iat, jat
|
|
232 | 228 |
REAL(KREAL) :: Exyz2 |
233 | 229 |
|
234 |
real(KREAL) :: autoA,autoeV |
|
235 |
parameter (autoA=0.52917715d0) |
|
236 |
parameter (autoeV=27.21183d0) |
|
230 |
! real(KREAL) :: autoA,autoeV
|
|
231 |
! parameter (autoA=0.52917715d0)
|
|
232 |
! parameter (autoeV=27.21183d0)
|
|
237 | 233 |
|
238 | 234 |
|
239 |
real(KREAL) :: Q(3) |
|
240 |
real(KREAL) :: TT,gR,pR |
|
241 | 235 |
|
242 |
real(KREAL) :: mB,mC,mH |
|
243 |
real(KREAL) :: T,RN,RC,r1,r2,r3 |
|
244 | 236 |
|
245 |
real(KREAL) :: Z1,Z12,V1 |
|
246 |
real(KREAL) :: Z2,Z22,V2 |
|
247 |
real(KREAL) :: Z3,Z32,V3 |
|
248 | 237 |
|
249 |
real(KREAL) :: S1,S2,S3,S12,S22,S32,POLY |
|
250 |
real(KREAL) :: E1,E2,E3,HY1,HY2,HY3,SWITCH,V123 |
|
251 | 238 |
|
252 | 239 |
Exyz=0. |
253 | 240 |
do jat=1,natoms |
src/CalcTangent.f90 (revision 2) | ||
---|---|---|
18 | 18 |
REAL(KREAL), ALLOCATABLE :: PathTan(:,:) ! NGeomF,NCoord |
19 | 19 |
REAL(KREAL), ALLOCATABLE :: DbgTgt(:),GeomTmp(:) ! NCoord |
20 | 20 |
|
21 |
INTEGER(KINT) :: i, j, n3at, Idx, iat,igeom,k
|
|
21 |
INTEGER(KINT) :: i, j, n3at, k |
|
22 | 22 |
INTEGER(KINT), SAVE :: icall=-1 |
23 | 23 |
INTEGER(KINT) :: NMaxPt |
24 |
REAL(KREAL), PARAMETER :: Inf=1e32, h=0.001d0 |
|
24 |
! REAL(KREAL), PARAMETER :: Inf=1e32, h=0.001d0
|
|
25 | 25 |
CHARACTER(120) :: Line,File |
26 | 26 |
CHARACTER(LCHARS) :: TITLE |
27 | 27 |
LOGICAL :: Debug=.False. |
28 |
REAL(KREAL) :: utmp,der
|
|
28 |
REAL(KREAL) :: utmp |
|
29 | 29 |
|
30 | 30 |
LOGICAL, EXTERNAL :: valid |
31 | 31 |
|
src/Step_DIIS.f90 (revision 2) | ||
---|---|---|
59 | 59 |
REAL(KREAL), ALLOCATABLE, SAVE :: XSET(:),GSET(:),ERR(:) ! MRESET*NVAR |
60 | 60 |
REAL(KREAL) :: ESET(MRESET) |
61 | 61 |
REAL(KREAL), ALLOCATABLE, SAVE :: DX(:),GSAVE(:) !NVAR |
62 |
REAL(KREAL) :: B(M2),BS(M2),BST(M2)
|
|
62 |
REAL(KREAL) :: B(M2), BS(M2)
|
|
63 | 63 |
LOGICAL DEBUG, PRINT |
64 | 64 |
INTEGER(KINT), SAVE :: MSET |
65 | 65 |
INTEGER(KINT) :: NDIIS, MPLUS, INV, ITERA, MM |
src/Write_vasp.f90 (revision 2) | ||
---|---|---|
7 | 7 |
|
8 | 8 |
CHARACTER(SCHARS), INTENT(IN) :: poscar |
9 | 9 |
|
10 |
INTEGER(KINT) :: IGeom, Idx, Iat, I,J,NFr
|
|
10 |
INTEGER(KINT) :: IGeom, Idx |
|
11 | 11 |
REAL(KREAL), ALLOCATABLE :: GeomTmpC(:), GeomTmp(:) |
12 |
REAL(KREAL) :: MRot(3,3), Rmsd |
|
13 | 12 |
CHARACTER(SCHARS) :: Line,Line2 |
14 | 13 |
|
15 | 14 |
! For VMD printing |
16 | 15 |
CHARACTER(SCHARS), PARAMETER :: FirstWord="mol " |
17 | 16 |
CHARACTER(LCHARS), PARAMETER :: LastWords=" type POSCAR first 0 last -1 step 1 filebonds 1 autobonds 1 waitfor all" |
18 | 17 |
|
19 |
REAL(KREAL) :: X,Y,Z |
|
20 | 18 |
CHARACTER(LCHARS) :: TITLE |
21 | 19 |
LOGICAL :: Debug |
22 | 20 |
|
src/ZmatBuild.f90 (revision 2) | ||
---|---|---|
14 | 14 |
! after the atom was added to ind_zmat for the three first atoms, |
15 | 15 |
! but before for all others. Now, it starts at zero and it |
16 | 16 |
! is increased before the atom is added to ind_zmat |
17 |
! IMPLICIT NONE |
|
18 | 17 |
|
19 |
use Path_module, only : Nat, NMaxL, max_Z, KINT, KREAL |
|
18 |
use Path_module, only : Nat, NMaxL, max_Z, KINT, KREAL,Pi |
|
19 |
use Io_module |
|
20 | 20 |
|
21 |
IMPLICIT NONE |
|
21 | 22 |
|
22 |
INTEGER(KINT) :: Izm |
|
23 |
integer(KINT) :: na,atome(NAt),at,ind_zmat(NAt,5),long |
|
24 |
real(KREAL) :: x(NAt),y(NAt),z(NAt),fact |
|
23 |
|
|
24 |
INTEGER(KINT) :: Izm,I,IAf,IAt,IAt0,J,Jat |
|
25 |
INTEGER(KINT) :: n1, NMaxCF, NMinCP, VCF |
|
26 |
INTEGER(KINT) :: IAta,IAtd,IAtDh,IAti,IAtv,ICat |
|
27 |
INTEGER(KINT) :: ICP0, IdAt0, IdAtl |
|
28 |
INTEGER(KINT) :: Idx, IIat, IIatDh, IndAFaire, IndFin |
|
29 |
INTEGER(KINT) :: IdxAt0 |
|
30 |
INTEGER(KINT) :: ITmp, IZm0, IZm1, IZm2, IZm3, IZm4, IzmTmp |
|
31 |
integer(KINT) :: na, atome(NAt), ind_zmat(NAt, 5) |
|
32 |
real(KREAL) :: x(NAt), y(NAt), z(NAt) |
|
25 | 33 |
real(KREAL) :: val_zmat(NAt,3) |
26 | 34 |
! ListAt contains the indices of frozen atoms |
27 |
LOGICAL ListAT(NAt),FIzm1,FFirst
|
|
35 |
LOGICAL ListAT(NAt), FFirst
|
|
28 | 36 |
INTEGER(KINT) :: Natreat |
29 | 37 |
|
30 |
real(KREAL) :: vx,vy,vz,dist |
|
31 |
INTEGER(KINT) :: LIAISONS(NAt,0:NMaxL),Nbli,Nblj |
|
32 |
INTEGER(KINT) :: LiaisonsBis(NAt,0:NMaxL) |
|
38 |
real(KREAL) :: dist |
|
39 |
INTEGER(KINT) :: LIAISONS(NAt, 0:NMaxL) |
|
33 | 40 |
INTEGER(KINT) :: CAFaire(NAt) |
34 | 41 |
INTEGER(KINT) :: LieS_CP(NAt,0:NMaxL),LieS_CF(NAt,0:NMaxL) |
35 | 42 |
INTEGER(KINT) :: AtCP0(NAt),NbAt0,NbAt0r |
36 |
Integer(KINT) :: AtTypCycl(Max_Z), NbAt3(NAt,2),CyCleAt(NAt) |
|
37 | 43 |
Integer(KINT) :: NbCycle |
38 | 44 |
real(KREAL) :: vx1,vy1,vz1,norm1 |
39 | 45 |
real(KREAL) :: vx2,vy2,vz2,norm2 |
40 |
real(KREAL) :: vx3,vy3,vz3,norm3 |
|
41 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
|
42 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
|
43 |
real(KREAL) :: val,val_d |
|
44 |
Logical AtTerm,Debug,Done |
|
46 |
real(KREAL) :: val |
|
47 |
Logical Debug, Done |
|
45 | 48 |
Logical DejaFait(NAt) |
46 |
LOGICAL F1213, F1223,F1323,FTmp |
|
47 | 49 |
|
50 |
|
|
51 |
INTERFACE |
|
52 |
FUNCTION angle(v1x,v1y,v1z,norm1,v2x,v2y,v2z,norm2) |
|
53 |
use Path_module, only : Pi,KINT, KREAL |
|
54 |
real(KREAL) :: v1x,v1y,v1z,norm1 |
|
55 |
real(KREAL) :: v2x,v2y,v2z,norm2 |
|
56 |
real(KREAL) :: angle |
|
57 |
END FUNCTION ANGLE |
|
58 |
END INTERFACE |
|
59 |
|
|
60 |
|
|
61 |
|
|
62 |
|
|
63 |
|
|
48 | 64 |
! As we may have to treat only partial molecules, it may happen |
49 | 65 |
! that there are no central atoms... so we first check this by looking |
50 | 66 |
! for the least number of CP atoms |
... | ... | |
809 | 825 |
END IF |
810 | 826 |
IndAFaire=IndAFaire+1 |
811 | 827 |
END DO |
812 |
12345 CONTINUE |
|
828 |
!12345 CONTINUE
|
|
813 | 829 |
END DO |
814 | 830 |
|
815 | 831 |
WRITE(*,*) 'TOTOTOTOTOTOTOTOT' |
src/gaussj.f90 (revision 2) | ||
---|---|---|
27 | 27 |
icol=k |
28 | 28 |
endif |
29 | 29 |
else if (ipiv(k).gt.1) then |
30 |
pause 'singular matrix in gaussj' |
|
30 |
Write(*,*) 'singular matrix in gaussj' |
|
31 |
STOP |
|
31 | 32 |
endif |
32 | 33 |
12 continue |
33 | 34 |
endif |
... | ... | |
47 | 48 |
endif |
48 | 49 |
indxr(i)=irow |
49 | 50 |
indxc(i)=icol |
50 |
if (a(icol,icol).eq.0.d0) pause 'singular matrix in gaussj' |
|
51 |
if (a(icol,icol).eq.0.d0) THEN |
|
52 |
WRITE(*,*) 'singular matrix in gaussj' |
|
53 |
STOP |
|
54 |
END IF |
|
51 | 55 |
pivinv=1.d0/a(icol,icol) |
52 | 56 |
a(icol,icol)=1.d0 |
53 | 57 |
do 16 l=1,n |
src/CalcBMat_mixed.f90 (revision 2) | ||
---|---|---|
1 |
subroutine CalcBMat_mixed (natoms, xyzatm, indzmat, dzdc, atmass,atome)
|
|
1 |
subroutine CalcBMat_mixed (natoms, xyzatm, indzmat, dzdc) |
|
2 | 2 |
|
3 | 3 |
use Io_module |
4 | 4 |
use Path_module, only : MW, NCart |
... | ... | |
6 | 6 |
IMPLICIT NONE |
7 | 7 |
|
8 | 8 |
|
9 |
integer(KINT) :: natoms, indzmat(natoms,5),atome(natoms) |
|
10 |
real(KREAL) :: xyzatm(3,natoms), dzdc(3*natoms,3*natoms),atmass(natoms) |
|
9 |
integer(KINT), INTENT(IN) :: natoms, indzmat(natoms,5) |
|
10 |
real(KREAL), INTENT(IN) :: xyzatm(3,natoms) |
|
11 |
real(KREAL), INTENT(OUT) :: dzdc(3*natoms,3*natoms) |
|
11 | 12 |
|
12 | 13 |
|
13 | 14 |
!!!!!!!!!!!!!!!!!!!!! |
src/egrad_mopac.f90 (revision 2) | ||
---|---|---|
22 | 22 |
logical :: debug |
23 | 23 |
LOGICAL, SAVE :: first=.true. |
24 | 24 |
|
25 |
REAL(KREAL), ALLOCATABLE :: GradTmp(:)
|
|
25 |
REAL(KREAL) :: Pi
|
|
26 | 26 |
|
27 |
REAL(KREAL) :: d, a_val, Pi |
|
28 |
|
|
29 |
REAL(KREAL) :: coef,x |
|
30 |
INTEGER(KINT) :: iat, jat, kat, i, j, k,n3at |
|
27 |
INTEGER(KINT) :: iat, i, j, k, n3at |
|
31 | 28 |
INTEGER(KINT) :: ITmp1,ITmp2, Idx |
32 |
INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11 |
|
33 | 29 |
|
34 | 30 |
CHARACTER(132) :: FileIn, FileOut, FileChk |
35 | 31 |
|
src/Hinvup_DFP.f90 (revision 2) | ||
---|---|---|
46 | 46 |
REAL(KREAL), ALLOCATABLE :: Hup(:,:) |
47 | 47 |
REAL(KREAL), ALLOCATABLE :: Num(:,:), Num2(:,:) |
48 | 48 |
REAL(KREAL) :: Den, Den2,NormDS |
49 |
INTEGER(KINT) :: i,j,k, Idx
|
|
49 |
INTEGER(KINT) :: i, j, Idx
|
|
50 | 50 |
|
51 | 51 |
LOGICAL :: debug |
52 | 52 |
|
src/egrad_ext.f90 (revision 2) | ||
---|---|---|
20 | 20 |
|
21 | 21 |
! ====================================================================== |
22 | 22 |
|
23 |
character(LCHARS) :: LINE |
|
24 | 23 |
|
25 | 24 |
logical :: debug |
26 |
LOGICAL :: fexist, FSim |
|
27 |
LOGICAL, SAVE :: first=.true. |
|
28 |
LOGICAL, ALLOCATABLE :: Done(:) |
|
29 | 25 |
|
30 |
REAL(KREAL), SAVE :: Eold=1.e6 |
|
31 |
REAL(KREAL) :: d, a_val, Pi |
|
26 |
REAL(KREAL) :: Pi |
|
32 | 27 |
|
33 |
REAL(KREAL) :: coef,x |
|
34 |
INTEGER(KINT) :: iat, jat, kat, i, j, n3at, absidg, absidg2 |
|
35 |
INTEGER(KINT) :: kTmp, Istart,ITmp1,ITmp2, Idx |
|
36 |
INTEGER(KINT), PARAMETER :: IOLOG=12, IOCOM=11 |
|
28 |
INTEGER(KINT) :: iat, i, n3at |
|
37 | 29 |
|
38 | 30 |
! |
39 | 31 |
CHARACTER(132) :: FileIn,FileOut |
40 | 32 |
|
41 |
CHARACTER(LCHARS) :: ListName, TitleTmp, CH32SVAR1 |
|
42 |
CHARACTER(VLCHARS), SAVE :: RstrtCopy, RunCommand |
|
43 |
LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False. |
|
44 |
LOGICAL :: FRdyn,FStopNucl, FTmp, Tchk,Tchk1 |
|
45 |
INTEGER(kint) :: NbLists,LastIt,Nat4,NStep, Firstit |
|
46 |
INTEGER(KINT) :: NStepAd,NStepTmp |
|
47 |
INTEGER(KINT) :: IShowTmp |
|
48 |
REAL(KREAL) :: FricPsiMin,FricPsiT, FricNuclTmp |
|
33 |
CHARACTER(VLCHARS), SAVE :: RunCommand |
|
34 |
! LOGICAL, SAVE :: FCopyRstrt=.False., FOrderChecked=.False. |
|
49 | 35 |
|
50 | 36 |
|
51 |
INTEGER(KINT), PARAMETER :: NbExtName=4 |
|
52 | 37 |
|
53 |
INTEGER(KINT) :: ICouc |
|
54 |
|
|
55 |
INTEGER(KINT) :: ILine |
|
56 |
INTEGER(KINT) :: NPulses, PulseLen, NStepWarm,NStepAv,NStepEq,NStepTot |
|
57 |
REAL(KREAL) :: TempWarm,Mean,Slope,Dev,RTmp1,RTmp2 |
|
58 |
|
|
59 | 38 |
! ====================================================================== |
60 | 39 |
|
61 | 40 |
LOGICAL, EXTERNAL :: valid |
... | ... | |
112 | 91 |
|
113 | 92 |
RETURN |
114 | 93 |
|
115 |
999 CONTINUE |
|
116 |
if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!' |
|
117 |
STOP |
|
94 |
!999 CONTINUE
|
|
95 |
! if (.NOT.Ftmp) WRITE(*,*) 'We should not be here !!!!'
|
|
96 |
! STOP
|
|
118 | 97 |
! ====================================================================== |
119 | 98 |
end subroutine egrad_ext |
src/ConvXyzZmat.f90 (revision 2) | ||
---|---|---|
4 | 4 |
|
5 | 5 |
IMPLICIT NONE |
6 | 6 |
|
7 |
integer(KINT) :: i,i1,i2
|
|
7 |
integer(KINT) :: i |
|
8 | 8 |
|
9 | 9 |
integer(KINT) :: n1,n2,n3,n4,nb |
10 | 10 |
real(KREAL) :: x(Nb),y(Nb),z(Nb) |
... | ... | |
106 | 106 |
|
107 | 107 |
! write(*,*) 'Debut procedure Xyz_Zmat43' |
108 | 108 |
CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
109 |
CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
110 |
vx2,vy2,vz2,norm2, & |
|
111 |
vx4,vy4,vz4,norm4) |
|
112 |
CALL produit_vect(vx3,vy3,vz3,norm3, & |
|
113 |
vx2,vy2,vz2,norm2, & |
|
114 |
vx5,vy5,vz5,norm5) |
|
109 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2,vx4,vy4,vz4,norm4) |
|
110 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, vx5,vy5,vz5,norm5) |
|
115 | 111 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
116 | 112 |
vx5,vy5,vz5,norm5, & |
117 | 113 |
vx2,vy2,vz2,norm2) |
118 | 114 |
|
119 | 115 |
! write(*,11) n1,n2,norm1,n3,val,n4,val_d |
120 |
11 format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3)) |
|
116 |
!11 format (2(1x,i3),1x,f8.4,2(1x,i3,1x,f8.3))
|
|
121 | 117 |
|
122 | 118 |
val_zmat(i,1)=norm1 |
123 | 119 |
val_zmat(i,2)=val |
src/Makefile (revision 2) | ||
---|---|---|
5 | 5 |
# You might also have to edit the location of |
6 | 6 |
# some libraries (like mkl for ifort) |
7 | 7 |
|
8 |
Machine=gfortran
|
|
8 |
Machine=arqg
|
|
9 | 9 |
|
10 | 10 |
########################################### |
11 | 11 |
# # |
... | ... | |
135 | 135 |
ifeq ($(Machine),arqP) |
136 | 136 |
# Flags for arq Ifort |
137 | 137 |
COMP=ifort |
138 |
F90=${COMP} -g -check bounds -check format -check uninit -traceback |
|
139 |
#F90=${COMP} -g -check all -traceback
|
|
138 |
#F90=${COMP} -g -check bounds -check format -check uninit -traceback
|
|
139 |
F90=${COMP} -g -check all -traceback |
|
140 | 140 |
F77=${F90} |
141 | 141 |
#F90=${COMP} |
142 | 142 |
LINK=${COMP} -lguide -lpthread -L/usr/lib/ \ |
... | ... | |
148 | 148 |
|
149 | 149 |
ifeq ($(Machine),arqg) |
150 | 150 |
# Flags for arq GFortran |
151 |
COMP=gfortran -fbacktrace -fbounds-check -Wall
|
|
151 |
COMP=gfortran -g -fbacktrace -fbounds-check -Wall -Wextra
|
|
152 | 152 |
F90=${COMP} |
153 | 153 |
F77=${F90} |
154 | 154 |
#F90=${COMP} |
src/Calc_Xprim.f90 (revision 2) | ||
---|---|---|
34 | 34 |
|
35 | 35 |
Type (ListCoord), POINTER :: ScanCoord |
36 | 36 |
|
37 |
real(KREAL) :: vx,vy,vz,dist, Norm |
|
38 | 37 |
real(KREAL) :: vx1,vy1,vz1,norm1 |
39 | 38 |
real(KREAL) :: vx2,vy2,vz2,norm2 |
40 | 39 |
real(KREAL) :: vx3,vy3,vz3,norm3 |
41 | 40 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
42 | 41 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
43 |
real(KREAL) :: val,val_d, Q, T |
|
44 | 42 |
|
45 |
INTEGER(KINT) :: I,J, n1,n2,n3,n4
|
|
43 |
INTEGER(KINT) :: I |
|
46 | 44 |
|
47 |
REAL(KREAL) :: sAngleIatIKat, sAngleIIatLat |
|
48 | 45 |
REAL(KREAL) :: DiheTmp |
49 | 46 |
|
50 | 47 |
LOGICAL :: debug, debugPFL |
... | ... | |
119 | 116 |
Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx1,vy1,vz1,Norm1) |
120 | 117 |
Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx2,vy2,vz2,Norm2) |
121 | 118 |
Call vecteur(ScanCoord%At3,ScanCoord%At4,x,y,z,vx3,vy3,vz3,Norm3) |
122 |
Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
119 |
Call produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
123 | 120 |
vx4,vy4,vz4,norm4) |
124 |
Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
121 |
Call produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
125 | 122 |
vx5,vy5,vz5,norm5) |
126 | 123 |
|
127 | 124 |
DiheTmp= angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
src/Hupdate_Bofill.f90 (revision 2) | ||
---|---|---|
27 | 27 |
REAL(KREAL), ALLOCATABLE :: HupInt(:) |
28 | 28 |
REAL(KREAL), ALLOCATABLE :: HS(:), Num(:,:), Num2(:,:) |
29 | 29 |
REAL(KREAL) :: Phi, Num3, Den, Den2,NormDS |
30 |
CHARACTER(120) :: fmt,fmt2,Line |
|
31 | 30 |
INTEGER(KINT) :: i,j, idx |
32 | 31 |
|
33 | 32 |
LOGICAL debug,valid |
src/bib_oper.f90 (revision 2) | ||
---|---|---|
100 | 100 |
! produit vectoriel |
101 | 101 |
!================================================================ |
102 | 102 |
|
103 |
SUBROUTINE produit_vect(v1x,v1y,v1z,norm1, &
|
|
104 |
v2x,v2y,v2z,norm2, &
|
|
103 |
SUBROUTINE produit_vect(v1x,v1y,v1z, & |
|
104 |
v2x,v2y,v2z, & |
|
105 | 105 |
v3x,v3y,v3z,norm3) |
106 | 106 |
|
107 | 107 |
use Path_module, only : Pi,KINT, KREAL |
108 | 108 |
|
109 |
real(KREAL) :: v1x,v1y,v1z,norm1 ! what do you do with norm1, norm2???
|
|
110 |
real(KREAL) :: v2x,v2y,v2z,norm2
|
|
109 |
real(KREAL) :: v1x,v1y,v1z ! what do you do with norm1, norm2??? |
|
110 |
real(KREAL) :: v2x,v2y,v2z |
|
111 | 111 |
real(KREAL) :: v3x,v3y,v3z,norm3 |
112 | 112 |
|
113 | 113 |
v3x= v1y*v2z-v1z*v2y |
src/Extrapol_mixed.f90 (revision 2) | ||
---|---|---|
25 | 25 |
REAL(KREAL), INTENT(IN) :: Xgeom(NGeomI),Coef(NGeomI,NCoord) |
26 | 26 |
|
27 | 27 |
INTEGER(KINT) :: IdxGeom, I, J, K, Idx |
28 |
REAL(KREAL) :: Rmsd,MRot(3,3), ds, u, v |
|
29 |
REAL(KREAL) :: a_val, d |
|
28 |
REAL(KREAL) :: Rmsd, MRot(3, 3), ds, u |
|
30 | 29 |
|
31 | 30 |
REAL(KREAL), ALLOCATABLE :: XyzTmp(:,:), XyzTmp2(:,:) ! (Nat,3) |
32 | 31 |
REAL(KREAL), ALLOCATABLE :: IntCoordTmp(:),DerInt(:) ! (NCoord) |
src/Calc_zmat_constr_frag.f90 (revision 2) | ||
---|---|---|
45 | 45 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
46 | 46 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
47 | 47 |
real(KREAL) :: val,val_d, d12, d13,d23,d |
48 |
Logical PasFini,Debug
|
|
48 |
Logical Debug |
|
49 | 49 |
LOGICAL, ALLOCATABLE :: DejaFait(:), FCaf(:) !(na) |
50 | 50 |
Logical, ALLOCATABLE :: FrozAt(:) !T if this atom is frozen |
51 | 51 |
LOGICAL F1213, F1223,F1323 |
... | ... | |
492 | 492 |
WRITE(*,*) "Dans le caca car tous les atoms de ce block sont align?s!" |
493 | 493 |
END IF |
494 | 494 |
|
495 |
CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
495 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
496 | 496 |
vx5,vy5,vz5,norm5) |
497 | 497 |
|
498 | 498 |
|
... | ... | |
534 | 534 |
! les autres fragments ne seraient additonn?s que si l'on ne trouve pas notre bonheur dans le premier bloc |
535 | 535 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
536 | 536 |
|
537 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
537 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
538 | 538 |
vx4,vy4,vz4,norm4) |
539 | 539 |
val_d=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
540 | 540 |
vx2,vy2,vz2,norm2) |
... | ... | |
558 | 558 |
if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN |
559 | 559 |
n1=JAt |
560 | 560 |
CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
561 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
561 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
562 | 562 |
vx4,vy4,vz4,norm4) |
563 | 563 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
564 | 564 |
vx5,vy5,vz5,norm5, & |
... | ... | |
578 | 578 |
if (.NOT.DejaFait(JAt)) THEN |
579 | 579 |
n1=JAt |
580 | 580 |
CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
581 |
CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
582 |
vx2,vy2,vz2,norm2, & |
|
581 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, & |
|
583 | 582 |
vx4,vy4,vz4,norm4) |
584 | 583 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
585 | 584 |
vx5,vy5,vz5,norm5, & |
... | ... | |
697 | 696 |
n4=LiaisonsBis(Iat,2) |
698 | 697 |
CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2) |
699 | 698 |
CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
700 |
CALL produit_vect(vx3,vy3,vz3,norm3, & |
|
701 |
vx2,vy2,vz2,norm2, & |
|
699 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, & |
|
702 | 700 |
vx5,vy5,vz5,norm5) |
703 | 701 |
|
704 | 702 |
DO While ((ITmp.LE.FrozBlock(Iat,0)).AND.(sDihe.LE.0.09d0)) |
705 | 703 |
ITmp=ITmp+1 |
706 | 704 |
n1=FrozBlock(Iat,Itmp) |
707 | 705 |
CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
708 |
CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
709 |
vx2,vy2,vz2,norm2, & |
|
706 |
CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, & |
|
710 | 707 |
vx4,vy4,vz4,norm4) |
711 | 708 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
712 | 709 |
vx5,vy5,vz5,norm5, & |
... | ... | |
725 | 722 |
if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN |
726 | 723 |
n1=JAt |
727 | 724 |
CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
728 |
CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
729 |
vx2,vy2,vz2,norm2, & |
|
725 |
CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, & |
|
730 | 726 |
vx4,vy4,vz4,norm4) |
731 | 727 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
732 | 728 |
vx5,vy5,vz5,norm5, & |
... | ... | |
746 | 742 |
if (.NOT.DejaFait(JAt)) THEN |
747 | 743 |
n1=JAt |
748 | 744 |
CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
749 |
CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
750 |
vx2,vy2,vz2,norm2, & |
|
745 |
CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, & |
|
751 | 746 |
vx4,vy4,vz4,norm4) |
752 | 747 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
753 | 748 |
vx5,vy5,vz5,norm5, & |
... | ... | |
889 | 884 |
n4=I1 |
890 | 885 |
CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2) |
891 | 886 |
CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
892 |
CALL produit_vect(vx3,vy3,vz3,norm3, & |
|
893 |
vx2,vy2,vz2,norm2, & |
|
887 |
CALL produit_vect(vx3,vy3,vz3, vx2,vy2,vz2, & |
|
894 | 888 |
vx5,vy5,vz5,norm5) |
895 | 889 |
|
896 | 890 |
! We will look at the other frozen atoms |
... | ... | |
901 | 895 |
if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN |
902 | 896 |
n1=JAt |
903 | 897 |
CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
904 |
CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
905 |
vx2,vy2,vz2,norm2, & |
|
898 |
CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, & |
|
906 | 899 |
vx4,vy4,vz4,norm4) |
907 | 900 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
908 | 901 |
vx5,vy5,vz5,norm5, & |
... | ... | |
922 | 915 |
if (.NOT.DejaFait(JAt)) THEN |
923 | 916 |
n1=JAt |
924 | 917 |
CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
925 |
CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
926 |
vx2,vy2,vz2,norm2, & |
|
918 |
CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, & |
|
927 | 919 |
vx4,vy4,vz4,norm4) |
928 | 920 |
val_d=angle_d(vx4,vy4,vz4,norm4, & |
929 | 921 |
vx5,vy5,vz5,norm5, & |
... | ... | |
1965 | 1957 |
val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2) |
1966 | 1958 |
|
1967 | 1959 |
CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
1968 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
1960 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
1969 | 1961 |
vx4,vy4,vz4,norm4) |
1970 |
CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
1962 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
1971 | 1963 |
vx5,vy5,vz5,norm5) |
1972 | 1964 |
|
1973 | 1965 |
val_d=angle_d(vx4,vy4,vz4,norm4, vx5,vy5,vz5,norm5, & |
src/ConvertZmat_cart.f90 (revision 2) | ||
---|---|---|
17 | 17 |
real(KREAL) :: vvx1,vvy1,vvz1,normv1 |
18 | 18 |
real(KREAL) :: vx2,vy2,vz2,norm2 |
19 | 19 |
real(KREAL) :: vvx2,vvy2,vvz2,normv2 |
20 |
real(KREAL) :: vx3,vy3,vz3,norm3 |
|
21 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
|
22 |
real(KREAL) :: d,a_val,a_dih,c1,c2 |
|
20 |
real(KREAL) :: vx4, vy4, vz4 |
|
21 |
real(KREAL) :: d, a_val, a_dih |
|
23 | 22 |
real(KREAL) :: a11_z1,a12_z1 |
24 | 23 |
real(KREAL) :: a11_z2,a12_z2 |
25 | 24 |
real(KREAL) :: a11_y,a12_y |
src/CalcRmsd.f90 (revision 2) | ||
---|---|---|
60 | 60 |
real(KREAL) :: x0c1,y0c1,z0c1, xc2,yc2,zc2 |
61 | 61 |
|
62 | 62 |
|
63 |
INTEGER(KINT) :: i, j, nd, ia
|
|
63 |
INTEGER(KINT) :: i, j, ia |
|
64 | 64 |
real(KREAL) :: x_norm, y_norm, lambda |
65 | 65 |
real(KREAL) :: Rmatrix(3,3) |
66 |
real(KREAL) :: S(4,4), dS(4,4), q(4)
|
|
67 |
real(KREAL) :: tmp(3),tmp1(4),tmp2(4),EigVec(4,4), EigVal(4)
|
|
66 |
real(KREAL) :: S(4, 4)
|
|
67 |
real(KREAL) :: EigVec(4, 4), EigVal(4)
|
|
68 | 68 |
|
69 | 69 |
INTERFACE |
70 | 70 |
function valid(string) result (isValid) |
src/Path.f90 (revision 2) | ||
---|---|---|
1557 | 1557 |
END IF |
1558 | 1558 |
|
1559 | 1559 |
IOpt=0 |
1560 |
Call EgradPath(IOpt,Flag_Opt_Geom)
|
|
1560 |
Call EgradPath(IOpt) |
|
1561 | 1561 |
|
1562 | 1562 |
if (debug) WRITE(*,*) "Calling Write_path, L1002, Path.f90, IOpt=",IOpt |
1563 | 1563 |
Call Write_path(IOpt) |
... | ... | |
2252 | 2252 |
|
2253 | 2253 |
! We have the new path, we calculate its energy and gradient |
2254 | 2254 |
|
2255 |
Call EgradPath(IOpt,Flag_Opt_Geom)
|
|
2255 |
Call EgradPath(IOpt) |
|
2256 | 2256 |
!IF(IOPT .EQ. 10) Then |
2257 | 2257 |
! Print *, 'Stopping at my checkpoint.' |
2258 | 2258 |
! STOP !This is my temporary checkpoint. |
... | ... | |
2428 | 2428 |
END IF ! If (not.fini.).AND.(IOpt.LE.MaxCyc) |
2429 | 2429 |
END DO ! matches DO WHILE ((IOpt.LT.MaxCyc).AND.(.NOT.Fini)) |
2430 | 2430 |
|
2431 |
IF (PROG=="GAUSSIAN") THEN |
|
2432 |
DEALLOCATE(Gauss_paste) |
|
2433 |
DEALLOCATE(Gauss_root,Gauss_comment,Gauss_end,current) |
|
2434 |
END IF |
|
2431 |
! IF (PROG=="GAUSSIAN") THEN |
|
2432 |
! DEALLOCATE(Gauss_paste) |
|
2433 |
! DEALLOCATE(Gauss_root) |
|
2434 |
! DEALLOCATE(Gauss_comment) |
|
2435 |
! DEALLOCATE(Gauss_end) |
|
2436 |
! END IF |
|
2437 |
|
|
2435 | 2438 |
DEALLOCATE(XyzGeomF, IntCoordF) |
2436 | 2439 |
DEALLOCATE(XyzGeomI, IntCoordI) |
2437 | 2440 |
DEALLOCATE(XyzTangent,IntTangent) |
... | ... | |
2465 | 2468 |
previous => current ! make current point to new head |
2466 | 2469 |
END DO |
2467 | 2470 |
|
2468 |
DEALLOCATE(current) |
|
2471 |
|
|
2469 | 2472 |
END IF |
2470 | 2473 |
|
2471 | 2474 |
DEALLOCATE(GeomTmp, Hess, GradTmp) |
src/Calc_zmat_frag.f90 (revision 2) | ||
---|---|---|
36 | 36 |
|
37 | 37 |
IMPLICIT NONE |
38 | 38 |
|
39 |
CHARACTER(5) :: AtName |
|
40 | 39 |
integer(KINT), INTENT(IN) :: na,atome(na) |
41 | 40 |
real(KREAL), INTENT(IN) :: x(Na),y(Na),z(Na),fact |
42 | 41 |
real(KREAL), INTENT(IN) :: r_cov(0:Max_Z) |
... | ... | |
48 | 47 |
! Frozen contains the indices of frozen atoms |
49 | 48 |
! INTEGER(KINT) Frozen(*),NFroz |
50 | 49 |
! Number of fragment, Index of the current fragment for loops |
51 |
INTEGER(KINT) :: NbFrag,IdxFrag
|
|
50 |
INTEGER(KINT) :: NbFrag |
|
52 | 51 |
! Fragment(I) contains the fragment index to which I belongs |
53 | 52 |
! NbAtFrag(j) contains the number of atoms of fragment j |
54 | 53 |
INTEGER(KINT), ALLOCATABLE :: Fragment(:),NbAtFrag(:) !na |
... | ... | |
75 | 74 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
76 | 75 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
77 | 76 |
real(KREAL) :: val,val_d, d12, d13,d23,d |
78 |
Logical PasFini,Debug, FirstAt, DebugGaussian
|
|
77 |
Logical Debug, FirstAt, DebugGaussian |
|
79 | 78 |
LOGICAL, ALLOCATABLE :: DejaFait(:), FCaf(:) !(na) |
80 | 79 |
! Logical, ALLOCATABLE :: FrozAt(:) !T if this atom is frozen |
81 | 80 |
LOGICAL F1213, F1223,F1323 |
82 | 81 |
|
83 | 82 |
INTEGER(KINT) :: I,J,n0,n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax |
84 |
INTEGER(KINT) :: IMax, I3,I1,Ip, IFragFroz
|
|
85 |
INTEGER(KINT) :: I0, Izm, JAt,Izm0
|
|
83 |
INTEGER(KINT) :: I3, I1, Ip
|
|
84 |
INTEGER(KINT) :: I0, Izm, JAt |
|
86 | 85 |
INTEGER(KINT) :: OrderZmat |
87 | 86 |
|
88 | 87 |
REAL(KREAL) :: sDihe |
... | ... | |
392 | 391 |
STOP |
393 | 392 |
END IF |
394 | 393 |
|
395 |
CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, & |
|
396 |
vx5,vy5,vz5,norm5) |
|
394 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, vx5,vy5,vz5,norm5) |
|
397 | 395 |
|
398 | 396 |
|
399 | 397 |
! We search for the fourth atom while checking that it is not aligned with 1st and 2nd atoms. |
... | ... | |
439 | 437 |
! les autres fragments ne seraient additonn?s que si l'on ne trouve pas notre bonheur dans le premier bloc |
440 | 438 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
441 | 439 |
|
442 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, & |
|
443 |
vx4,vy4,vz4,norm4) |
|
440 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, vx4,vy4,vz4,norm4) |
|
444 | 441 |
val_d=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
445 | 442 |
vx2,vy2,vz2,norm2) |
446 | 443 |
sDihe=abs(sin(val_d*pi/180.d0)) |
... | ... | |
463 | 460 |
! if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN |
464 | 461 |
! n1=JAt |
465 | 462 |
! CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
466 |
! CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, & |
|
467 |
! vx4,vy4,vz4,norm4) |
|
463 |
! CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2,vx4,vy4,vz4,norm4) |
|
468 | 464 |
! val_d=angle_d(vx4,vy4,vz4,norm4, & |
469 | 465 |
! vx5,vy5,vz5,norm5, & |
470 | 466 |
! vx2,vy2,vz2,norm2) |
... | ... | |
484 | 480 |
! if (.NOT.DejaFait(JAt)) THEN |
485 | 481 |
! n1=JAt |
486 | 482 |
! CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
487 |
! CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
488 |
! vx2,vy2,vz2,norm2, & |
|
489 |
! vx4,vy4,vz4,norm4) |
|
483 |
! CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2,vx4,vy4,vz4,norm4) |
|
490 | 484 |
! val_d=angle_d(vx4,vy4,vz4,norm4, & |
491 | 485 |
! vx5,vy5,vz5,norm5, & |
492 | 486 |
! vx2,vy2,vz2,norm2) |
... | ... | |
627 | 621 |
! n4=Liaisons(Iat,2) |
628 | 622 |
! CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2) |
629 | 623 |
! CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
630 |
! CALL produit_vect(vx3,vy3,vz3,norm3, & |
|
631 |
! vx2,vy2,vz2,norm2, & |
|
632 |
! vx5,vy5,vz5,norm5) |
|
624 |
! CALL produit_vect(vx3,vy3,vz3, vx2,vy2,vz2, vx5,vy5,vz5,norm5) |
|
633 | 625 |
! |
634 | 626 |
! DO While ((ITmp.LE.FrozBlock(Iat,0)).AND.(sDihe.LE.0.09d0)) |
635 | 627 |
! ITmp=ITmp+1 |
636 | 628 |
! n1=FrozBlock(Iat,Itmp) |
637 | 629 |
! CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
638 |
! CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
639 |
! vx2,vy2,vz2,norm2, & |
|
640 |
! vx4,vy4,vz4,norm4) |
|
630 |
! CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, vx4,vy4,vz4,norm4) |
|
641 | 631 |
! val_d=angle_d(vx4,vy4,vz4,norm4, & |
642 | 632 |
! vx5,vy5,vz5,norm5, & |
643 | 633 |
! vx2,vy2,vz2,norm2) |
... | ... | |
655 | 645 |
! if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN |
656 | 646 |
! n1=JAt |
657 | 647 |
! CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
658 |
! CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
659 |
! vx2,vy2,vz2,norm2, & |
|
660 |
! vx4,vy4,vz4,norm4) |
|
648 |
! CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, vx4,vy4,vz4,norm4) |
|
661 | 649 |
! val_d=angle_d(vx4,vy4,vz4,norm4, & |
662 | 650 |
! vx5,vy5,vz5,norm5, & |
663 | 651 |
! vx2,vy2,vz2,norm2) |
... | ... | |
676 | 664 |
! if (.NOT.DejaFait(JAt)) THEN |
677 | 665 |
! n1=JAt |
678 | 666 |
! CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
679 |
! CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
680 |
! vx2,vy2,vz2,norm2, & |
|
681 |
! vx4,vy4,vz4,norm4) |
|
667 |
! CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, vx4,vy4,vz4,norm4) |
|
682 | 668 |
! val_d=angle_d(vx4,vy4,vz4,norm4, & |
683 | 669 |
! vx5,vy5,vz5,norm5, & |
684 | 670 |
! vx2,vy2,vz2,norm2) |
... | ... | |
830 | 816 |
! n4=I1 |
831 | 817 |
! CALL vecteur(n2,n3,x,y,z,vx2,vy2,vz2,norm2) |
832 | 818 |
! CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
833 |
! CALL produit_vect(vx3,vy3,vz3,norm3, & |
|
834 |
! vx2,vy2,vz2,norm2, & |
|
835 |
! vx5,vy5,vz5,norm5) |
|
819 |
! CALL produit_vect(vx3,vy3,vz3, vx2,vy2,vz2,vx5,vy5,vz5,norm5) |
|
836 | 820 |
! |
837 | 821 |
! ! We will look at the other frozen atoms |
838 | 822 |
! ! we might improve the search so as to take the atom closest to IAt |
... | ... | |
842 | 826 |
! if (FrozAt(Jat).AND.(.NOT.DejaFait(JAt))) THEN |
843 | 827 |
! n1=JAt |
844 | 828 |
! CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
845 |
! CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
846 |
! vx2,vy2,vz2,norm2, & |
|
847 |
! vx4,vy4,vz4,norm4) |
|
829 |
! CALL produit_vect(vx1,vy1,vz1, vx2,vy2,vz2, vx4,vy4,vz4,norm4) |
|
848 | 830 |
! val_d=angle_d(vx4,vy4,vz4,norm4, & |
849 | 831 |
! vx5,vy5,vz5,norm5, & |
850 | 832 |
! vx2,vy2,vz2,norm2) |
... | ... | |
863 | 845 |
! if (.NOT.DejaFait(JAt)) THEN |
864 | 846 |
! n1=JAt |
865 | 847 |
! CALL vecteur(n2,n1,x,y,z,vx1,vy1,vz1,norm1) |
866 |
! CALL produit_vect(vx1,vy1,vz1,norm1, & |
|
867 |
! vx2,vy2,vz2,norm2, & |
|
868 |
! vx4,vy4,vz4,norm4) |
|
848 |
! CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, vx4,vy4,vz4,norm4) |
|
869 | 849 |
! val_d=angle_d(vx4,vy4,vz4,norm4, & |
870 | 850 |
! vx5,vy5,vz5,norm5, & |
871 | 851 |
! vx2,vy2,vz2,norm2) |
... | ... | |
1175 | 1155 |
val=angle(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2) |
1176 | 1156 |
|
1177 | 1157 |
CALL vecteur(n3,n4,x,y,z,vx3,vy3,vz3,norm3) |
1178 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, & |
|
1179 |
vx4,vy4,vz4,norm4) |
|
1180 |
CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, & |
|
1181 |
vx5,vy5,vz5,norm5) |
|
1158 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2,vx4,vy4,vz4,norm4) |
|
1159 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2,vx5,vy5,vz5,norm5) |
|
1182 | 1160 |
|
1183 | 1161 |
val_d=angle_d(vx4,vy4,vz4,norm4, vx5,vy5,vz5,norm5, & |
1184 | 1162 |
vx2,vy2,vz2,norm2) |
... | ... | |
1238 | 1216 |
INTEGER(KINT), INTENT(IN) :: ind_zmat(Na,5) |
1239 | 1217 |
real(KREAL), INTENT(IN) :: val_zmat(Na,3) |
1240 | 1218 |
|
1241 |
character(6) :: at1,at2,at3,at4,at5,d,a,dh
|
|
1219 |
character(6) :: at1, at2, at3, at4, d, a, dh
|
|
1242 | 1220 |
character(SCHARS), ALLOCATABLE :: tab(:) ! 3*na |
1243 | 1221 |
character(LCHARS) :: ligne |
1244 | 1222 |
|
src/Calc_zmat.f90 (revision 2) | ||
---|---|---|
20 | 20 |
integer(KINT), INTENT(OUT) :: ind_zmat(na,5) |
21 | 21 |
real(KREAL),INTENT(OUT) :: val_zmat(na,3) |
22 | 22 |
|
23 |
character(2) :: ATOM |
|
24 |
integer(KINT) :: at,long |
|
25 | 23 |
|
26 |
real(KREAL) :: vx,vy,vz,dist |
|
27 | 24 |
INTEGER(KINT), ALLOCATABLE :: LIAISONS(:,:) !(na,0:NMaxL |
28 | 25 |
INTEGER(KINT), ALLOCATABLE :: LiaisonsBis(:,:) ! na,0:NMaxL |
29 | 26 |
INTEGER(KINT), ALLOCATABLE :: LieS_CP(:,:),LieS_CF(:,:) ! (na,0:NMaxL) |
30 | 27 |
INTEGER(KINT), ALLOCATABLE :: NbAt3(:,:) !(Na,2) |
31 | 28 |
INTEGER(KINT), ALLOCATABLE :: CycleAt(:) !(Na) |
32 |
INTEGER(KINT) :: Nbli,Nblj |
|
33 | 29 |
INTEGER(KINT), ALLOCATABLE :: CAFaire(:) ! Na |
34 | 30 |
|
35 | 31 |
Integer(KINT) :: AtTypCycl(Max_Z) |
36 | 32 |
Integer(KINT) :: NbCycle |
37 | 33 |
real(KREAL) :: vx1,vy1,vz1,norm1 |
38 | 34 |
real(KREAL) :: vx2,vy2,vz2,norm2 |
39 |
real(KREAL) :: vx3,vy3,vz3,norm3 |
|
40 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
|
41 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
|
42 |
real(KREAL) :: val,val_d |
|
35 |
real(KREAL) :: val |
|
43 | 36 |
Logical PasFini,AtTerm,Debug,Bicycle,FLie3,FirstCycle |
44 | 37 |
LOGICAL, ALLOCATABLE :: Former3(:), DejaFait(:) ! Na |
45 | 38 |
Logical FTmp |
... | ... | |
182 | 175 |
END IF |
183 | 176 |
|
184 | 177 |
|
185 |
1036 FORMAT(I2) |
|
186 |
|
|
187 | 178 |
! Premiere etape : calcul des connectivites |
188 | 179 |
DO I=1,na |
189 | 180 |
DejaFait(I)=.FALSE. |
... | ... | |
958 | 949 |
END IF |
959 | 950 |
IndAFaire=IndAFaire+1 |
960 | 951 |
END DO |
961 |
12345 CONTINUE |
|
952 |
!12345 CONTINUE
|
|
962 | 953 |
END DO |
963 | 954 |
|
964 | 955 |
if (debug) THEN |
src/EgradPath.f90 (revision 2) | ||
---|---|---|
1 |
SUBROUTINE EGradPath(Iopt,Flag_Opt_Geom)
|
|
1 |
SUBROUTINE EGradPath(Iopt) |
|
2 | 2 |
|
3 | 3 |
! This subroutine calculates the energy+gradient for all points of |
4 | 4 |
! the path |
... | ... | |
13 | 13 |
IMPLICIT NONE |
14 | 14 |
|
15 | 15 |
INTEGER(KINT), INTENT(IN) :: Iopt |
16 |
LOGICAL, INTENT(IN) :: Flag_Opt_Geom |
|
17 | 16 |
|
18 | 17 |
INTEGER(KINT) :: IGeom,IGeom0,IGeomF |
19 | 18 |
CHARACTER(LCHARS) :: Line,FileInp,RunCommand |
src/Calc_baker.f90 (revision 2) | ||
---|---|---|
40 | 40 |
REAL(KREAL), ALLOCATABLE :: UMat_tmp(:,:) |
41 | 41 |
INTEGER(KINT) :: NbBonds, NbAngles, NbDihedrals, IGeom |
42 | 42 |
|
43 |
real(KREAL) :: vx,vy,vz,dist, Norm
|
|
43 |
real(KREAL) :: vx, vy, vz, Norm
|
|
44 | 44 |
real(KREAL) :: vx1,vy1,vz1,norm1 |
45 | 45 |
real(KREAL) :: vx2,vy2,vz2,norm2 |
46 | 46 |
real(KREAL) :: vx3,vy3,vz3,norm3 |
47 | 47 |
real(KREAL) :: vx4,vy4,vz4,norm4 |
48 | 48 |
real(KREAL) :: vx5,vy5,vz5,norm5 |
49 |
real(KREAL) :: val,val_d, Q, T |
|
50 | 49 |
|
51 |
INTEGER(KINT) :: I,J, n1,n2,n3,n4,IAt,IL,JL,IFrag,ITmp, K, KMax
|
|
52 |
INTEGER(KINT) :: I0, IOld, IAtTmp, Izm, JAt, Kat, Lat, L, NOUT
|
|
50 |
INTEGER(KINT) :: I, J, IAt, K
|
|
51 |
INTEGER(KINT) :: Kat, Lat, L
|
|
53 | 52 |
|
54 | 53 |
REAL(KREAL) :: sAngleIatIKat, sAngleIIatLat |
55 |
REAL(KREAL) :: DiheTmp |
|
56 | 54 |
|
57 |
LOGICAL :: debug, bond, AddPrimitiveCoord, FAIL
|
|
55 |
LOGICAL :: debug, bond, AddPrimitiveCoord |
|
58 | 56 |
|
59 | 57 |
INTERFACE |
60 | 58 |
function valid(string) result (isValid) |
... | ... | |
124 | 122 |
!!!!!!!! PFL Debug |
125 | 123 |
! |
126 | 124 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
127 |
REAL(KREAL), ALLOCATABLE :: V(:,:) ! (NCoord,NCoord) |
|
128 |
REAL(KREAL) :: tol |
|
129 | 125 |
INTEGER(KINT) :: I1,I2,I3,I4 |
130 |
LOGICAL :: FALOBBT,FALOBPrimt,FAloBBTInv |
|
131 | 126 |
LOGICAL :: debugPFL |
132 | 127 |
REAL(KREAL), ALLOCATABLE :: val_zmat(:,:) |
133 | 128 |
INTEGER(KINT), ALLOCATABLE :: indzmat0(:,:) |
... | ... | |
283 | 278 |
Call vecteur(I2,I1,x_refGeom,y_refGeom,z_refGeom,vx1,vy1,vz1,Norm1) |
284 | 279 |
Call vecteur(I2,I3,x_refGeom,y_refGeom,z_refGeom,vx2,vy2,vz2,Norm2) |
285 | 280 |
Call vecteur(I3,I4,x_refGeom,y_refGeom,z_refGeom,vx3,vy3,vz3,Norm3) |
286 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
281 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
287 | 282 |
vx4,vy4,vz4,norm4) |
288 |
CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
283 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
289 | 284 |
vx5,vy5,vz5,norm5) |
290 | 285 |
! CurrentCoord%value=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
291 | 286 |
! vx2,vy2,vz2,norm2)*Pi/180. |
... | ... | |
519 | 514 |
|
520 | 515 |
! IF (AddPrimitiveCoord) THEN |
521 | 516 |
! NbDihedrals=NbDihedrals+1 |
522 |
! CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
517 |
! CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
523 | 518 |
! vx5,vy5,vz5,norm5) |
524 |
!CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
519 |
!CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
525 | 520 |
! vx4,vy4,vz4,norm4) |
526 | 521 |
! CurrentCoord%value=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
527 | 522 |
! vx2,vy2,vz2,norm2)*Pi/180. |
... | ... | |
598 | 593 |
IF (AddPrimitiveCoord) THEN |
599 | 594 |
NbDihedrals=NbDihedrals+1 |
600 | 595 |
Call vecteur(iat,lat,x_refGeom,y_refGeom,z_refGeom,vx3,vy3,vz3,Norm3) |
601 |
CALL produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
596 |
CALL produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
602 | 597 |
vx5,vy5,vz5,norm5) |
603 |
CALL produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
598 |
CALL produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
604 | 599 |
vx4,vy4,vz4,norm4) |
605 | 600 |
CurrentCoord%value=angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
606 | 601 |
vx2,vy2,vz2,norm2)*Pi/180. |
... | ... | |
702 | 697 |
! Call vecteur(ScanCoord%At2,ScanCoord%At1,x,y,z,vx1,vy1,vz1,Norm1) |
703 | 698 |
! Call vecteur(ScanCoord%At2,ScanCoord%At3,x,y,z,vx2,vy2,vz2,Norm2) |
704 | 699 |
! Call vecteur(ScanCoord%At3,ScanCoord%At4,x,y,z,vx3,vy3,vz3,Norm3) |
705 |
! Call produit_vect(vx1,vy1,vz1,norm1,vx2,vy2,vz2,norm2, &
|
|
700 |
! Call produit_vect(vx1,vy1,vz1,vx2,vy2,vz2, &
|
|
706 | 701 |
! vx4,vy4,vz4,norm4) |
707 |
! Call produit_vect(vx3,vy3,vz3,norm3,vx2,vy2,vz2,norm2, &
|
|
702 |
! Call produit_vect(vx3,vy3,vz3,vx2,vy2,vz2, &
|
|
708 | 703 |
! vx5,vy5,vz5,norm5) |
709 | 704 |
|
710 | 705 |
! DiheTmp= angle_d(vx4,vy4,vz4,norm4,vx5,vy5,vz5,norm5, & |
src/Decomp_frag.f90 (revision 2) | ||
---|---|---|
11 | 11 |
LOGICAL, INTENT(IN) :: ListAt(na) |
12 | 12 |
INTEGER(KINT), INTENT(OUT) :: NbFrag,Fragment(na),NbAtFrag(na),FragAt(na,na) |
13 | 13 |
|
14 |
INTEGER(KINT) :: i,j,k,iat,jat
|
|
14 |
INTEGER(KINT) :: i, j, iat, jat
|
|
15 | 15 |
INTEGER(KINT) :: IdxFrag, IdxtoDo, IFrag,IaFaire |
16 | 16 |
INTEGER(KINT), ALLOCATABLE :: ToDo(:) |
17 | 17 |
|
src/egrad_chamfre.f90 (revision 2) | ||
---|---|---|
22 | 22 |
REAL(KREAL), INTENT(IN) :: Geom(Nat,3) |
23 | 23 |
|
24 | 24 |
! Bohr --> Angstr |
25 |
real(KREAL), parameter :: BOHR = 0.52917726D+00 |
|
25 |
! real(KREAL), parameter :: BOHR = 0.52917726D+00
|
|
26 | 26 |
|
27 | 27 |
!! PFL 2010 Nov. 28 -> |
28 | 28 |
! for now I keep this old F77 scheme. This has to be replaced by ALLOCATABLE |
... | ... | |
30 | 30 |
! <- PFL 2010 Nov 28. |
31 | 31 |
REAL(KREAL) :: xa(100),ya(100),za(100),dvdr(100,3) |
32 | 32 |
REAL(KREAL) :: rshort,rlong,zshort,zlong |
33 |
REAL(KREAL), SAVE :: rnc,rnn,rhh,rch,rnh,ann(100),anc(100),anh(100),ach(100),ahh(100),a(100)
|
|
33 |
REAL(KREAL), SAVE :: rnc, rnn, rhh, rch, rnh, ann(100), anc(100), anh(100), ach(100), ahh(100)
|
|
34 | 34 |
REAL(KREAL) :: dv(100,10,3),df(100,10,3) |
35 | 35 |
REAL(KREAL) :: px(9000),py(9000),pz(9000),tmp,temp,rtemp,yf |
36 | 36 |
INTEGER(KINT) :: ka(9000),kx(9000),ky(9000),itx,ity,nf(100),mf(100,500) |
37 |
REAL(KREAL) :: xi(3),xj(3),xk(3),rij,rik,rjk,rji,rki,er,eb |
|
38 |
REAL(KREAL) :: fcut,tf,bodij,bodji,bod,cost,gtheta,dgdt,xt,t1,t2,t3 |
|
39 |
REAL(KREAL) :: zi,fcut2 |
|
37 |
REAL(KREAL) :: xi(3), xj(3), rij, er, eb |
|
38 |
REAL(KREAL) :: fcut, tf |
|
40 | 39 |
INTEGER(KINT) :: np,nq,nh,nc |
41 | 40 |
INTEGER(KINT) :: i, j, nn, m, n, mid, n1, im, jm, n2,n3,n4, iat |
42 | 41 |
LOGICAL, SAVE :: First=.TRUE. |
... | ... | |
584 | 583 |
subroutine fctNiNi(r2,r,fcut) |
585 | 584 |
|
586 | 585 |
IMPLICIT NONE |
Formats disponibles : Unified diff