Revision 5 src/PathCreate.f90
PathCreate.f90 (revision 5)  

13  13 
use Io_module 
14  14 
use Path_module, only : Nat, NGeomI, NCoord, NGeomF, IGeomRef, NMaxL, IReparam, IReparamT, & 
15  15 
Coord, Frozen, Cart, NCart, NFroz, XyzGeomI, atome, r_cov, fact, & 
16 
IndZmat, Renum, Order, OrderInv, IntCoordI, IntCoordF,Pi, BMat_BakerT, Nom, &


17 
Hess,IntFroz, ISpline, IntTangent, XyzGeomF, NPrim,Xprimitive_t, OptGeom, &


18 
UMatF, UMat_local, XyzTangent, Linear, Align, FrozAtoms 

16 
IndZmat, Renum, Order, OrderInv, IntCoordI, IntCoordF,Pi, Nom, & 

17 
ISpline, IntTangent, NPrim,Xprimitive_t, OptGeom, &


18 
UMatF, UMat_local, XyzTangent, Linear, Align, FrozAtoms,AtName


19  19 
! BMat_BakerT (3*Nat,NCoord), XyzGeomI(NGeomI,3,Nat), IGeomRef=1 (default value) 
20  20 
! IntCoordI(NGeomI,NCoord) 
21  21  
...  ...  
69  69 
integer(KINT) :: na 
70  70 
integer(KINT) :: ind_zmat(Na,5) 
71  71 
END FUNCTION TEST_ZMAT 
72  
73  
74 
SUBROUTINE die(routine, msg, file, line, unit) 

75  
76 
Use VarTypes 

77 
Use io_module 

78  
79 
implicit none 

80  
81 
character(len=*), intent(in) :: routine, msg 

82 
character(len=*), intent(in), optional :: file 

83 
integer(KINT), intent(in), optional :: line, unit 

84  
85 
END SUBROUTINE die 

86  
87 
SUBROUTINE Warning(routine, msg, file, line, unit) 

88  
89 
Use VarTypes 

90 
Use io_module 

91  
92 
implicit none 

93  
94 
character(len=*), intent(in) :: routine, msg 

95 
character(len=*), intent(in), optional :: file 

96 
integer(KINT), intent(in), optional :: line, unit 

97  
98 
END SUBROUTINE Warning 

99  
72  100 
END INTERFACE 
73  101  
74  102  
...  ...  
89  117  
90  118 
Do I=1,NGeomI 
91  119 
XGeom(I)=FLoat(I)1.d0 
120 
if (Print) THEN 

121 
WRITE(*,*) "PathCreate  L121  Initial geometries " 

122 
DO J=1,Nat 

123 
WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(J)),XyzGeomI(I,1:3,J) 

124 
END DO 

125 
END IF 

92  126 
END DO 
93  127  
94  128 
! First iteration of the optimization: 
...  ...  
186  220 
END IF ! matches IF (NCart.GE.2) THEN 
187  221 
! we now calculate the number of fragments. 
188  222 
Call Decomp_frag(nat,liaisons,.NOT.Fcart,nbfrag,Fragment,NbAtFrag,FragAt) 
223 
IF (debug) THEN 

224 
WRITE(*,*) 'Debug PathCreat Line190' 

225 
WRITE(*,*) 'NbFrag, NbFragRef=',NbFrag,NFragRef 

226 
END IF 

227  
189  228 
IF (NbFrag.LT.NFragRef) THEN 
190  229 
NFragRef=NbFrag 
191  230 
! The reference geometry, IGeomRef, is determined based on the least number 
...  ...  
199  238 
END IF ! matches IF (((COORD.EQ."ZMAT").OR.(COORD.EQ."HYBRID").OR.(COORD.EQ."MIXED") 
200  239 
! .OR.(COORD.EQ."BAKER")).AND.(IGeomRef.LE.0)). 
201  240  
241 
IF ((COORD.EQ."CART").AND.(IGeomREF.LE.0)) THEN 

242 
IGeomRef=1 

243 
CALL Warning('PathCreate L209','IGeomRef<=0',UNIT=IOOUT) 

244 
END IF 

245  
202  246 
if (debug) WRITE(*,*) "DBG PathCreate : IGeomRef= ",IGeomRef 
203  247  
204  248 
! we now compute the internal coordinates for this geometry ! 
...  ...  
577  621 
z0=z 
578  622 
END IF ! First 
579  623  
624 
if (Print) THEN 

625 
WRITE(*,*) "PathCreate  L631  geometries " 

626 
DO I=1,NGeomI 

627 
DO J=1,Nat 

628 
If (renum) THEN 

629 
Iat=Order(J) 

630 
WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(J)),XyzGeomI(I,1:3,Iat) 

631 
ELSE 

632 
Iat=OrderInv(J) 

633 
WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),XyzGeomI(I,1:3,J) 

634 
END IF 

635 
END DO 

636 
END DO 

637 
END IF 

638  
639  
580  640 
! Now that we have a zmat, we will generate all the IntCoodI corresponding... 
581  641 
! First one 
582  642 
IF (COORD.EQ.'HYBRID') THEN ! Matches at L680 
...  ...  
746  806  
747  807 
if (debug) WRITE(*,*) "Before interpolation, PathCreate.f90, L740, IOpt=",IOpt, & 
748  808 
"ISpline=", ISpline 
809  
810 
if (Print) THEN 

811 
WRITE(*,*) "PathCreate  L811  geometries " 

812 
DO I=1,NGeomI 

813 
DO J=1,Nat 

814 
If (renum) THEN 

815 
Iat=Order(J) 

816 
WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(J)),XyzGeomI(I,1:3,Iat) 

817 
ELSE 

818 
Iat=OrderInv(J) 

819 
WRITE(*,'(1X,A10,3(1X,F15.8),A)') Trim(AtName(Iat)),XyzGeomI(I,1:3,J) 

820 
END IF 

821 
END DO 

822 
END DO 

823 
END IF 

824  
825  
749  826 
! Now comes the Interpolation: 
750  827 
IF ((NGeomI>2).AND.(IOpt.GE.ISpline)) THEN 
751  828 
Linear=.FALSE. 
Also available in: Unified diff