def _refineTS(pot, coords, tsSearchParams=dict(), eigenvec0=None): """ find nearest transition state to NEB climbing image. Then fall off the transition state to find the associated minima. This would naturally be a part of DoubleEndedConnect. I separated it to make it more easily parallelizable. """ #run ts search algorithm kwargs = dict(defaults.tsSearchParams.items() + tsSearchParams.items()) ret = findTransitionState(coords, pot, eigenvec0=eigenvec0, **kwargs) #check to make sure it is a valid transition state coords = ret.coords if not ret.success: print "transition state search failed" return False, None if ret.eigenval >= 0.: print "warning: transition state has positive lowest eigenvalue, skipping:", ret.eigenval, ret.energy, ret.rms print " not adding transition state" return False, None #find the minima which this transition state connects print "falling off either side of transition state to find new minima" ret1, ret2 = minima_from_ts(pot.getEnergyGradient, coords, n = ret.eigenvec, \ displace=1e-3, quenchParameters={"tol":1e-7, "iprint":-1}) return True, ret, ret1, ret2
def _refineTS(pot, coords, tsSearchParams=dict(), eigenvec0=None, pushoff_params=dict()): """ find nearest transition state to NEB climbing image. Then fall off the transition state to find the associated minima. This would naturally be a part of DoubleEndedConnect. I separated it to make it more easily parallelizable. """ #run ts search algorithm kwargs = dict(tsSearchParams.items()) ret = findTransitionState(coords, pot, eigenvec0=eigenvec0, **kwargs) #check to make sure it is a valid transition state coords = ret.coords if not ret.success: logger.info("transition state search failed") return False, ret, None, None if ret.eigenval >= 0.: logger.info("transition state has positive lowest eigenvalue, skipping: %s %s %s", ret.eigenval, ret.energy, ret.rms) logger.info( " not adding transition state") return False, ret, None, None #find the minima which this transition state connects logger.info("falling off either side of transition state to find new minima") ret1, ret2 = minima_from_ts(pot, coords, n = ret.eigenvec, \ **pushoff_params) # print "testing", ret1.energy return True, ret, ret1, ret2
def _refineTS(pot, coords, tsSearchParams=dict(), eigenvec0=None, pushoff_params=dict()): """ find nearest transition state to NEB climbing image. Then fall off the transition state to find the associated minima. This would naturally be a part of DoubleEndedConnect. I separated it to make it more easily parallelizable. """ #run ts search algorithm kwargs = dict(tsSearchParams.items()) ret = findTransitionState(coords, pot, eigenvec0=eigenvec0, **kwargs) #check to make sure it is a valid transition state coords = ret.coords if not ret.success: logger.info("transition state search failed") return False, ret, None, None if ret.eigenval >= 0.: logger.info( "transition state has positive lowest eigenvalue, skipping: %s %s %s", ret.eigenval, ret.energy, ret.rms) logger.info(" not adding transition state") return False, ret, None, None #find the minima which this transition state connects logger.info( "falling off either side of transition state to find new minima") ret1, ret2 = minima_from_ts(pot, coords, n = ret.eigenvec, \ **pushoff_params) # print "testing", ret1.energy return True, ret, ret1, ret2