class TullySurfaceHopping_QMMM_Rigid(TullySurfaceHopping):
    
    def __init__(self, mol_qm, mol_mm, pot_qm, pot_mm, pot_qmmm, dt, nstep, tsh_times, restart = False, \
            tsh_ediff_thresh=0.05, tsh_ediff_factor=0.25, check_mdstop_dispersion = False, limit_dispersion = 10.0, \
            tlim = float('inf')):
        self.mol_mm = mol_mm
        self.pot_mm = pot_mm
        self.pot_qmmm = pot_qmmm 
        
        TullySurfaceHopping.__init__(self,mol_qm ,pot_qm, dt, nstep, tsh_times, restart,\
            tsh_ediff_thresh, tsh_ediff_factor, check_mdstop_dispersion, limit_dispersion, tlim)

    def setup_output(self):
        self.woutp = WriteOutputMD_TSH_QMMM()
        if self.restart: self.woutp.restart(self)
        else: self.woutp.start(self)

    def prepare(self):
        self.pot.calc(); self.pot_mm.calc(); self.pot_qmmm.calc()   
        self.pre_judge_tsh()
        self.check_ediff()

    def step(self):
        dt = self.dt
        get_accelerations_save =  self.mol.get_accelerations()
        self.mol.set_positions(self.mol.get_positions() + \
                self.mol.get_velocities() *  dt + 0.5 * \
                get_accelerations_save * dt * dt)
        self.pot.calc(); self.pot_qmmm.calc()   
        self.mol.set_velocities(self.mol.get_velocities() + \
                0.5 * (self.mol.get_accelerations() + \
                get_accelerations_save) * dt)
        self.elaptime += dt 
Exemplo n.º 2
0
class TullySurfaceHopping_QMMM(TullySurfaceHopping):

    def __init__(self, mol_qm, mol_mm, pot_qm, pot_mm, pot_qmmm, dt, nstep, tsh_times= 10, restart = False, \
            tsh_ediff_thresh=0.05, tsh_ediff_factor=0.25, check_mdstop_dispersion = False, \
            limit_dispersion = 10.0, tlim = float('inf')):

        self.mol_mm = mol_mm
        self.pot_mm = pot_mm
        self.pot_qmmm = pot_qmmm

        if self.pot_mm.get_check_pbc:
            self.mol_mm.set_positions(
                self.pot_mm.get_pbc_adjusted(self.mol_mm.get_positions()))

        TullySurfaceHopping.__init__(self,mol_qm ,pot_qm, dt, nstep, tsh_times, restart,\
            tsh_ediff_thresh, tsh_ediff_factor, check_mdstop_dispersion, limit_dispersion, tlim)

    def setup_output(self):
        self.woutp = WriteOutputMD_TSH_QMMM()
        if self.restart: self.woutp.restart(self)
        else: self.woutp.start(self)

    def prepare(self):
        #self.pot.calc(self.count); self.pot_mm.calc(); self.pot_qmmm.calc()
        self.pot.calc()
        self.pot_mm.calc()
        self.pot_qmmm.calc()
        self.pre_judge_tsh()
        self.check_ediff()

    def step(self):
        dt = self.dt
        get_accelerations_save = self.mol.get_accelerations()
        self.mol.set_positions(self.mol.get_positions() + \
                self.mol.get_velocities() *  dt + 0.5 * \
                get_accelerations_save * dt * dt)
        get_accelerations_save_mm = self.mol_mm.get_accelerations()
        self.mol_mm.set_positions(self.mol_mm.get_positions() + \
                self.mol_mm.get_velocities() *  dt + 0.5 * \
                get_accelerations_save_mm * dt * dt)
        if self.pot_mm.get_check_pbc:
            self.mol_mm.set_positions(
                self.pot_mm.get_pbc_adjusted(self.mol_mm.get_positions()))
        #self.pot.calc(self.count); self.pot_mm.calc(); self.pot_qmmm.calc()
        self.pot.calc()
        self.pot_mm.calc()
        self.pot_qmmm.calc()
        self.mol.set_velocities(self.mol.get_velocities() + \
                0.5 * (self.mol.get_accelerations() + \
                get_accelerations_save) * dt)
        self.mol_mm.set_velocities(self.mol_mm.get_velocities() + \
                0.5 * (self.mol_mm.get_accelerations() + \
                get_accelerations_save_mm) * dt)
        self.elaptime += dt
class TullySurfaceHopping_QMMM(TullySurfaceHopping):
    
    def __init__(self, mol_qm, mol_mm, pot_qm, pot_mm, pot_qmmm, dt, nstep, tsh_times= 10, restart = False, \
            tsh_ediff_thresh=0.02, tsh_ediff_factor=0.2, check_mdstop_dispersion = False, \
            limit_dispersion = 10.0, tlim = float('inf'), change_cas_condition = False):

        self.mol_mm = mol_mm
        self.pot_mm = pot_mm
        self.pot_qmmm = pot_qmmm 

        if self.pot_mm.get_check_pbc: 
            self.mol_mm.set_positions(self.pot_mm.get_pbc_adjusted(self.mol_mm.get_positions()))  
        
        TullySurfaceHopping.__init__(self,mol_qm ,pot_qm, dt, nstep, tsh_times, restart,\
            tsh_ediff_thresh, tsh_ediff_factor, check_mdstop_dispersion, limit_dispersion, tlim, change_cas_condition)

    def setup_output(self):
        self.woutp = WriteOutputMD_TSH_QMMM()
        if self.restart: self.woutp.restart(self)
        else: self.woutp.start(self)

    def prepare(self):
        #self.pot.calc(self.count); self.pot_mm.calc(); self.pot_qmmm.calc()   
        self.pot.calc(); self.pot_mm.calc(); self.pot_qmmm.calc()   
        self.pre_judge_tsh()
        self.check_ediff()

    def step(self):
        dt = self.dt
        get_accelerations_save =  self.mol.get_accelerations()
        self.mol.set_positions(self.mol.get_positions() + \
                self.mol.get_velocities() *  dt + 0.5 * \
                get_accelerations_save * dt * dt)
        get_accelerations_save_mm =  self.mol_mm.get_accelerations()
        self.mol_mm.set_positions(self.mol_mm.get_positions() + \
                self.mol_mm.get_velocities() *  dt + 0.5 * \
                get_accelerations_save_mm * dt * dt)
        if self.pot_mm.get_check_pbc: 
            self.mol_mm.set_positions(self.pot_mm.get_pbc_adjusted(self.mol_mm.get_positions()))  
        self.pot.calc(); self.pot_mm.calc(); self.pot_qmmm.calc()   
        self.mol.set_velocities(self.mol.get_velocities() + \
                0.5 * (self.mol.get_accelerations() + \
                get_accelerations_save) * dt)
        self.mol_mm.set_velocities(self.mol_mm.get_velocities() + \
                0.5 * (self.mol_mm.get_accelerations() + \
                get_accelerations_save_mm) * dt)
        self.elaptime += dt 
Exemplo n.º 4
0
 def setup_output(self):
     self.woutp = WriteOutputMD_TSH_QMMM()
     if self.restart: self.woutp.restart(self)
     else: self.woutp.start(self)
 def setup_output(self):
     self.woutp = WriteOutputMD_TSH_QMMM()
     if self.restart: self.woutp.restart(self)
     else: self.woutp.start(self)