The AdResS object is an extension to the integrator. It makes sure that the integrator also processes the atomistic particles and not only the CG particles. Hence, this object is of course only used when performing AdResS or H-AdResS simulations.
In detail the AdResS extension makes sure:
- that also the forces on the atomistic particles are initialized and set to by Adress::initForces
- that also the atomistic particles are integrated and propagated by Adress::integrate1 and Adress::integrate2
Example - how to turn on the AdResS integrator extension:
>>> adress = espressopp.integrator.Adress(system, verletlist, fixedtuplelist) >>> integrator.addExtension(adress)
If KTI is set to True, then the resolution parameters are not updated. This can be used for example for Kirkwood thermodynamic integration, during which one manually sets the whole system on different resolution parameters. KTI = True then prevents overwriting these manually set values. Furthermore, when having moving AdResS regions based on particles, regionupdates specifies the update frequency of the AdResS region in number of steps (or, to be more precise, calls of communicateAdrPositions()). Note that there is a tradeoff: The more frequently the AdResS region is updated, the more gradually and accurately the AdResS region changes and adapts it shape. This could allow for a smaller overall AdResS region and possibly a smoother simulation. However, when having many AdResS region defining particles, these frequent updates can become computationally significant and cost additional simulation time. The optimum is highly system and application dependent.
Finally, when making use of a RESPA Velocity Verlet integrator, then the multistep parameter defines after how many steps of the inner integration loop the slow forces are updated. It should be set consistently with the same parameter in VelocityVerletRESPA.
Adress(_system, _verletlist, _fixedtuplelist, KTI, regionupdates, multistep)¶
- _system (shared_ptr<System>) – system object
- _verletlist (shared_ptr<VerletListAdress>) – verletlist object
- _fixedtuplelist (shared_ptr<FixedTupleListAdress>) – fixedtuplelist object
- KTI (bool) – (default: False) update resolution parameter? (Yes: set False, No: set True)
- regionupdates (int) – (default: 1) after how many steps does the AdResS region needs to be updated?
- multistep (int) – (default: 1) when used with VelocityVerletRESPA (otherwise, ignored), after how many steps of the inner integration loop do we update the slow forces? This parameter should be set consistently with multistep in VelocityVerletRESPA.