CustomHelper#
- class optking.opt_helper.CustomHelper(mol_src, params={}, **kwargs)[source]#
Bases:
HelperClass allows for easy setup of OptKing. Accepts custom forces, energies, and hessians from user. User will need to write a loop to perform optimization.
Examples
>>> import qcengine as qcng >>> from qcelemental.models import Molecule, OptimizationInput >>> from qcelemental.models.common_models import Model >>> from qcelemental.models.procedures import QCInputSpecification >>> opt_input = { ... "initial_molecule": { ... "symbols": ["O", "O", "H", "H"], ... "geometry": [ ... 0.0000000000, ... 0.0000000000, ... 0.0000000000, ... -0.0000000000, ... -0.0000000000, ... 2.7463569188, ... 1.3013018774, ... -1.2902977124, ... 2.9574871774, ... -1.3013018774, ... 1.2902977124, ... -0.2111302586, ... ], ... "fix_com": True, ... "fix_orientation": True, ... }, ... "input_specification": { ... "model": {"method": "hf", "basis": "sto-3g"}, ... "driver": "gradient", ... "keywords": {"d_convergence": "1e-7"}, ... }, ... "keywords": {"g_convergence": "GAU_TIGHT", "program": "psi4"}, ... } >>> for step in range(30): ... # Compute one's own energy and gradient ... E, gX = optking.lj_functions.calc_energy_and_gradient(opt.geom, 2.5, 0.01, True) ... # Insert these values into the 'user' computer. ... opt.E = E ... opt.gX = gX ... opt.compute() # process input. Get ready to take a step ... opt.take_step() ... conv = opt.test_convergence() ... if conv is True: ... print("Optimization SUCCESS:") ... break ... else: ... print("Optimization FAILURE:") >>> json_output = opt.close() # create an unvalidated OptimizationOutput like object >>> E = json_output["energies"][-1]
Notes
Overrides.
gX,HX, andEto allow for user input.Attributes Summary
Methods Summary
Assume gradient is always needed.
from_dict(d)Construct as far as possible the helper.
Attributes Documentation
Methods Documentation