Skip to content

Commit

Permalink
Update geometric_solver output msg
Browse files Browse the repository at this point in the history
  • Loading branch information
sunqm committed Apr 24, 2019
1 parent d341c8b commit 51a148f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 3 deletions.
10 changes: 8 additions & 2 deletions pyscf/geomopt/__init__.py
Expand Up @@ -17,5 +17,11 @@
from .addons import as_pyscf_method

def optimize(method, *args, **kwargs):
from . import berny_solver
return berny_solver.optimize(method, *args, **kwargs)
try:
from . import geometric_solver as geom
except ImportError as e1:
try:
from . import berny_solver as geom
except ImportError as e2:
raise e1
return geom.optimize(method, *args, **kwargs)
7 changes: 6 additions & 1 deletion pyscf/geomopt/geometric_solver.py
Expand Up @@ -49,6 +49,7 @@ def __init__(self, scanner):

self.scanner = scanner
self.cycle = 0
self.e_last = 0
self.callback = None
self.maxsteps = 100
self.assert_convergence = False
Expand All @@ -60,15 +61,19 @@ def calc_new(self, coords, dirname):

g_scanner = self.scanner
mol = self.mol
lib.logger.note(g_scanner, '\nGeometry optimization step %d', self.cycle)
self.cycle += 1
lib.logger.note(g_scanner, '\nGeometry optimization cycle %d', self.cycle)

# geomeTRIC requires coords and gradients in atomic unit
coords = coords.reshape(-1,3)
if g_scanner.verbose >= lib.logger.NOTE:
dump_mol_geometry(mol, coords*lib.param.BOHR)
mol.set_geom_(coords, unit='Bohr')
energy, gradients = g_scanner(mol)
lib.logger.note(g_scanner,
'cycle %d: E = %.12g dE = %g norm(grad) = %g', self.cycle,
energy, energy - self.e_last, numpy.linalg.norm(gradients))
self.e_last = energy

if callable(self.callback):
self.callback(locals())
Expand Down

0 comments on commit 51a148f

Please sign in to comment.