示例#1
0
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
示例#2
0
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
示例#3
0
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