Exercise 6
Part of the course Computational Chemistry.
When interpolating between potentials during a Molecular Dynamics run, it is crucial to do so gently as to not suddenly disrupt the collective behavior of the system and efficiently such that the total runtime is reduced. Here, we explore interpolation such that key phyiscal properties of a potential change smoothly.
Task 6.1: Effectiveness
Usually, each atom type or element has its own model parameters for the Lennard-Jones potential. When atoms of different elements interact, the corresponding distinct parameters have to be combined into one potential. This is done using so-called combination rules. Implement a class LennardJonesParticle
which stores the two parameters \(\sigma\) and \(\epsilon\) for such a particle and a function get_energy(particle1, particle2)
which (given two particles) applies the following Loretz-Berthelot combination rules:
Task 6.2: Efficacy
Write a function that interpolates between one bond and another: it takes four particles and a mixing value between 0 and 1, which denotes how far the bond has been interpolated between the first two particles (mixing parameter is 0) and the last two particles (mixing parameter is 1). The functions shall return a set of parameters \(\sigma\) and \(\epsilon\) such that both the minimum energy position and the well depth are changed linearly in the mixing parameter, i.e. when the mixing parameter is 0.5, both well depth and minimum distance is the average of the corresponding value of the initial and final bonds.
Task 6.3: Efficiency
Which challenges do you see in applying this or a similar strategy for large and complex systems? Is there a clearly preferable interpolation path?