# Converted from Vau.m - London-Eyring-Polanyi-Sato (LEPS) potentialimportnumpyasnpdefVau(r1,r2,p):r3=r1+r2r=[r1,r2,r3]E1=np.zeros(3)E3=np.zeros(3)Q=np.zeros(3)J=np.zeros(3)forxinrange(3):E1[x]=p['D1'][x]*(np.exp(-2*p['B1'][x]*(r[x]-p['r10'][x]))-2*np.exp(-p['B1'][x]*(r[x]-p['r10'][x])))E3a=p['D3'][x]*(np.exp(-2*p['B3'][x]*(r[x]-p['r30'][x]))+2*np.exp(-p['B3'][x]*(r[x]-p['r30'][x])))E3b=p['C'][x]*(r[x]+p['A'][x])*np.exp(-p['Si'][x]*r[x])E3[x]=E3aifr[x]<=p['R_1'][x]elseE3bQ[x]=(E1[x]+E3[x])/2J[x]=(E1[x]-E3[x])/2retval=(Q[0]+Q[1]+Q[2]-np.sqrt(0.5*((J[0]-J[1])**2+(J[1]-J[2])**2+(J[0]-J[2])**2)))returnretvalif__name__=='__main__':# Simple test - no file output for helper modulepass
rder.py
1 2 3 4 5 6 7 8 91011
# Converted from rder.m - derivative dr2/dr1 along reaction path# [depends] lder.pyimportosfromlderimportlderdefrder(r1,r2,p):return1.0/lder(r2,r1,p)if__name__=='__main__':pass
# Converted from hfs.m - surface data for LEPS potential# [depends] inittrace.py Vau.pyimportnumpyasnpimportosfrominittraceimportinittracefromVauimportVau# Parameters inline (same as initdata but hfs.m sets them directly)p={}p['D1']=np.array([129.3,94.8,129.3])p['B1']=np.array([2.316,2.047,2.316])p['r10']=np.array([0.931,0.753,0.931])p['D3']=np.array([51.83,34.56,51.83])p['B3']=np.array([2.229,1.522,2.229])p['r30']=np.array([0.931,0.753,0.931])p['R_1']=np.array([1.217,0.443,1.217])p['C']=np.array([1174.9,388.8,1174.9])p['Si']=np.array([3.090,1.929,3.090])p['A']=np.array([1.315,0.762,1.315])an1,en1=0.,3.an2,en2=0.,3.n1,n2=31,31step1=(en1-an1)/(n1-1)step2=(en2-an2)/(n2-1)# Build d3table: shape (n2, 3*n1)d3table=np.zeros((n2,3*n1))forp1inrange(n1):r1=p1*step1+an1forp2inrange(n2):r2=p2*step2+an2tmp=Vau(r1,r2,p)idx0=p1*3d3table[p2,idx0:idx0+3]=[r1,r2,tmp]s,V,d3trace,num=inittrace(en1,en2,p)withopen('hfs.dat','w')asfid:fid.write('# [min]\n')foriinrange(num):j=i*3fid.write(f'{d3trace[j]:f}{d3trace[j+1]:f}{d3trace[j+2]:f}\n')fid.write('\n# [surface]\n')forp2inrange(n2):row=d3table[p2,:]# Write triplets: r1, r2, V for each p1forp1inrange(n1):idx0=p1*3fid.write(f'{row[idx0]:f}{row[idx0+1]:f}{row[idx0+2]:f}\n')fid.write('\n')