Esempio n. 1
0
File: cost.py Progetto: boegel/yaff
 def run(self, ff):
     from yaff import CartesianDOF, QNOptimizer, OptScreenLog
     #prevpos = ff.system.pos[:].copy()
     #energy0 = ff.compute()
     #ff.system.pos[:] = self.refpos
     #energy1 = ff.compute()
     #if energy1 > energy0:
     ff.system.pos[:] = self.refpos#*np.random.uniform(0.99, 1.01, ff.system.pos.shape)
     dof = CartesianDOF(ff, gpos_rms=1e-8)
     sl = OptScreenLog(step=20)
     self.opt = QNOptimizer(dof, hooks=[sl], hessian0=self.hessian0)
     self.opt.run(5000)
     return {
         'energy': ff.energy,
         'pos': ff.system.pos.copy(),
         'gpos': ff.gpos.copy(),
     }
Esempio n. 2
0
File: cost.py Progetto: boegel/yaff
class GeoOptSimulation(Simulation):
    def __init__(self, name, system, **kwargs):
        self.refpos = system.pos.copy()
        self.hessian0 = kwargs.pop('hessian0', None)
        Simulation.__init__(self, name, system, **kwargs)

    def run(self, ff):
        from yaff import CartesianDOF, QNOptimizer, OptScreenLog
        #prevpos = ff.system.pos[:].copy()
        #energy0 = ff.compute()
        #ff.system.pos[:] = self.refpos
        #energy1 = ff.compute()
        #if energy1 > energy0:
        ff.system.pos[:] = self.refpos#*np.random.uniform(0.99, 1.01, ff.system.pos.shape)
        dof = CartesianDOF(ff, gpos_rms=1e-8)
        sl = OptScreenLog(step=20)
        self.opt = QNOptimizer(dof, hooks=[sl], hessian0=self.hessian0)
        self.opt.run(5000)
        return {
            'energy': ff.energy,
            'pos': ff.system.pos.copy(),
            'gpos': ff.gpos.copy(),
        }