示例#1
0
 def __init__(self, stepSize, loops, temperature, timeScale,
              frictionConstant, **kwargs):
     L = kwargs.pop('L', 1)
     isoF = propagators.MassiveIsokineticPropagator(temperature,
                                                    timeScale,
                                                    L,
                                                    forceDependent=True)
     isoN = propagators.MassiveIsokineticPropagator(temperature,
                                                    timeScale,
                                                    L,
                                                    forceDependent=False)
     v1 = ['v1_{}'.format(i) for i in range(L)]
     v2 = ['v2_{}'.format(i) for i in range(L)]
     DOU = propagators.OrnsteinUhlenbeckPropagator(
         temperature,
         frictionConstant,
         v2[0],
         'Q2',
         'Q1*{}^2 - kT'.format(v1[0]),
         Q2=kB * temperature * timeScale**2)
     for i in range(1, L):
         New = propagators.OrnsteinUhlenbeckPropagator(
             temperature,
             frictionConstant,
             v2[i],
             'Q2',
             'Q1*{}^2 - kT'.format(v1[i]),
             Q2=kB * temperature * timeScale**2)
         DOU = propagators.ChainedPropagator(DOU, New)
     bath = propagators.TrotterSuzukiPropagator(DOU, isoN)
     super().__init__(stepSize, loops, None, isoF, bath, **kwargs)
示例#2
0
 def __init__(self, stepSize, loops, temperature, timeScale,
              frictionConstant, **kwargs):
     L = kwargs.pop('L', 1)
     self._massive = kwargs.pop('massive', True)
     newF = propagators.NewMethodPropagator(temperature,
                                            timeScale,
                                            L,
                                            forceDependent=True)
     newN = propagators.NewMethodPropagator(temperature,
                                            timeScale,
                                            L,
                                            forceDependent=False)
     mass = 'Q_eta' if self._massive else 'NDOF*Q_eta'
     force = ('{}*m*v*v - kT'
              if self._massive else '{}*mvv - NDOF*kT').format((L + 1) / L)
     DOU = propagators.OrnsteinUhlenbeckPropagator(
         temperature,
         frictionConstant,
         'v_eta',
         mass,
         force,
         overall=(not self._massive),
         Q_eta=L * kB * temperature * timeScale**2)
     bath = propagators.TrotterSuzukiPropagator(DOU, newN)
     super().__init__(stepSize, loops, None, newF, bath, **kwargs)
示例#3
0
 def __init__(self, stepSize, loops, temperature, frictionConstant,
              **kwargs):
     bath = propagators.OrnsteinUhlenbeckPropagator(temperature,
                                                    frictionConstant,
                                                    'v',
                                                    'm',
                                                    kT=kB * temperature)
     super().__init__(stepSize, loops, None, None, bath, **kwargs)
示例#4
0
 def __init__(self, stepSize, loops, temperature, timeScale,
              frictionConstant, **kwargs):
     scaling = propagators.GenericScalingPropagator('v', 'v2')
     DOU = propagators.OrnsteinUhlenbeckPropagator(temperature,
                                                   frictionConstant,
                                                   'v2',
                                                   'Q2',
                                                   'm*v^2 - kT',
                                                   Q2=kB * temperature *
                                                   timeScale**2,
                                                   kT=kB * temperature)
     bath = propagators.TrotterSuzukiPropagator(DOU, scaling)
     super().__init__(stepSize, loops, None, None, bath, **kwargs)