SUBROUTINE DiatomicPES_SplineFit(r,vpot, vpotp, vpotpp) USE Numeric_Kinds_Module USE Numbers_Module IMPLICIT NONE SAVE LOGICAL, PARAMETER :: DBug=.True. LOGICAL FirstCall/.True./ CHARACTER(LEN=200), PARAMETER :: FileLoc='D:\Input_Data\Diatomic\H2_CollinearConstantRho\DiatomicPES_SplineFit_Plt.csv' INTEGER, PARAMETER :: NPoints=601, Pot_File_Unit=635, IOP(2)=(/5,5/) INTEGER IPoint REAL(KIND=WP_Kind) r, vpot, vpotp, vpotpp, v2,v3,v6,v20 REAL(KIND=WP_Kind) X(NPoints), PotVal(NPoints), W(NPoints), AT(NPoints), BT(NPoints), CT(NPoints), TAB(3) IF(FirstCall)THEN OPEN(UNIT=Pot_File_Unit, FILE=TRIM(FileLoc)) READ(Pot_File_Unit,*) DO IPoint=1,NPoints READ(Pot_File_Unit,'(1PE14.6,2x,1PE14.6,2x,1PE14.6,2x,1PE14.6,2x,1PE14.6)')X(IPoint),PotVal(IPoint), v2,v3, v20 IF(DBug)WRITE(*,*)X(IPoint), PotVal(IPoint) ENDDO CLOSE(UNIT=Pot_File_Unit) OPEN(UNIT=6,FILE='E:\ParkerE\APH3D\H3\APH3D_H3_PKH3\GraphicsOut\CollinearFixedRhoOut.csv') ENDIF IF(rX(NPoints))THEN WRITE(*,*)'ERROR: (rX(NPoints):', r, X(1), X(NPoints) ENDIF IF(FirstCall)THEN CALL spl1d1(NPoints, X, PotVal, W, IOP, 1, AT, BT, CT) FirstCall=.false. ENDIF CALL spl1d2(NPoints, X, PotVal, W, 1, r, TAB) vpot =TAB(1) vpotp =TAB(2) vpotpp=TAB(3) IF(DBug)THEN WRITE(6,'(4(E15.7,","))')r, vpot, vpotp, vpotpp ENDIF RETURN ENDSUBROUTINE DiatomicPES_SplineFit