31 lines
808 B
Python
31 lines
808 B
Python
from math import pi as M_PI
|
|
theta0 = [0.0, 110.1, 111.0, 120.0, 108.5]
|
|
k = [0.0, 75.0, 45.0, 50.0, 100.0]
|
|
|
|
def compute(itype,theta):
|
|
dtheta = theta-theta0[itype]
|
|
tk = k[itype]*dtheta*M_PI/180.0*M_PI/180.0
|
|
phi = tk*dtheta
|
|
force = -2.0*tk
|
|
return (phi,force)
|
|
|
|
fp = open("angle_table.txt","w")
|
|
fp.write("# generated by gen_angle.py\n")
|
|
num = 72
|
|
fac = 180.0/num
|
|
|
|
for i in [1,2,3,4]:
|
|
fp.write("\nharmonic_%d\n" % i)
|
|
if i > 2:
|
|
fp.write("N %d EQ %g\n\n" % (num+1,theta0[i]))
|
|
else:
|
|
grad=2.0*k[i]*M_PI/180.0*M_PI/180.0
|
|
fp.write("N %d FP %g %g EQ %g\n\n" % (num+1,grad, grad, theta0[i]))
|
|
|
|
for j in range(num+1):
|
|
theta = fac*j
|
|
(phi,force) = compute(i,theta)
|
|
fp.write("%d %.15g %.15g %.15g\n" % (j+1,theta,phi,force))
|
|
|
|
fp.close()
|