2000-08-10 22:33:19 +00:00
|
|
|
start basopt3
|
|
|
|
|
|
|
|
|
|
# Optimize an even tempered set of primitive s functions
|
|
|
|
|
# for Be.
|
|
|
|
|
|
|
|
|
|
# exponent[i] = alpha*beta^i, i=0..n-1
|
|
|
|
|
|
|
|
|
|
# In order to enforce the positive definite constraint on alpha
|
|
|
|
|
# and beta perform an unconstrained minimization on the variables
|
|
|
|
|
# z[] with alpha = 0.001 + z[0]^2, beta = 0.001 + z[1]^2
|
|
|
|
|
|
|
|
|
|
geometry
|
|
|
|
|
Be 0 0 0
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
scf
|
|
|
|
|
thresh 1e-8
|
|
|
|
|
tol2e 1e-12
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
set lindep:n_dep 0
|
|
|
|
|
|
|
|
|
|
set int:acc_std 1e-25
|
|
|
|
|
|
|
|
|
|
print none
|
|
|
|
|
|
|
|
|
|
python
|
2018-10-08 12:34:53 -07:00
|
|
|
from __future__ import print_function
|
2000-10-13 18:09:21 +00:00
|
|
|
from mathutil import *
|
2000-08-10 22:33:19 +00:00
|
|
|
|
|
|
|
|
n = 6
|
|
|
|
|
alpha = 0.2
|
|
|
|
|
beta = 3
|
|
|
|
|
|
|
|
|
|
def make_alpha_beta(z):
|
|
|
|
|
alpha = z[0]*z[0] + 0.001
|
|
|
|
|
beta = z[1]*z[1] + 0.001
|
|
|
|
|
return (alpha, beta)
|
|
|
|
|
|
|
|
|
|
def make_exp(z):
|
|
|
|
|
(alpha, beta) = make_alpha_beta(z)
|
|
|
|
|
exponents = zerovector(n)
|
|
|
|
|
ee = alpha
|
|
|
|
|
for i in range(n):
|
|
|
|
|
exponents[i] = ee
|
|
|
|
|
ee = ee * beta
|
|
|
|
|
return exponents
|
|
|
|
|
|
|
|
|
|
def energy(z):
|
|
|
|
|
exponents = make_exp(z)
|
|
|
|
|
basis = 'basis noprint;'
|
|
|
|
|
for i in range(n):
|
|
|
|
|
basis = basis + ("Be s; %f 1;" % exponents[i])
|
|
|
|
|
basis = basis + "end\n"
|
|
|
|
|
input_parse(basis)
|
|
|
|
|
return task_energy('scf')
|
|
|
|
|
|
|
|
|
|
def printexp(z):
|
|
|
|
|
exponents = make_exp(z)
|
2018-10-08 12:34:53 -07:00
|
|
|
print('\n alpha %f beta %f' % (z[0]*z[0],z[1]*z[1]))
|
|
|
|
|
print(' Exponents:')
|
2000-08-10 22:33:19 +00:00
|
|
|
for i in range(n):
|
2018-10-08 12:34:53 -07:00
|
|
|
print(" %14.8f" % exponents[i],)
|
2000-08-10 22:33:19 +00:00
|
|
|
if ((i+1)%5) == 0:
|
2018-10-08 12:34:53 -07:00
|
|
|
print("")
|
|
|
|
|
print(" ")
|
2000-08-10 22:33:19 +00:00
|
|
|
|
|
|
|
|
z = zerovector(2)
|
|
|
|
|
z[0] = sqrt(alpha - 0.001)
|
|
|
|
|
z[1] = sqrt(beta - 0.001)
|
|
|
|
|
|
|
|
|
|
results = {}
|
|
|
|
|
for n in range(2,21):
|
|
|
|
|
(value,z) = quasinr(energy, z, 1e-4, 1e-9, printexp)
|
|
|
|
|
(alpha, beta) = make_alpha_beta(z)
|
|
|
|
|
results[n] = (alpha, beta, value)
|
2018-10-08 12:34:53 -07:00
|
|
|
print('\n\n Results\n')
|
|
|
|
|
print(' n alpha beta energy error ')
|
|
|
|
|
print(' --- --------- --------- ------------ -----------')
|
2000-08-10 22:33:19 +00:00
|
|
|
(alpha, beta, limit) = results[20]
|
|
|
|
|
for n in range(2,21):
|
|
|
|
|
(alpha, beta, value) = results[n]
|
2018-10-08 12:34:53 -07:00
|
|
|
print('%4i %10.6f %10.6f %12.6f %12.6f' % (n, alpha, beta, value, value-limit))
|
2000-08-10 22:33:19 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
task python
|