Go-model native contacts potential

namespace mdk
class NativeContacts : public mdk::NonlocalForce
#include <NativeContacts.hpp>

Go model potential. It is somewhat special as it interferes with the Verlet list and with the quasi-adiabatic potential. It should go first in the list of nonlocal forces added to the simulation object.

Public Functions

virtual void bind(Simulation &simulation) override

Bind the force to the simulation, and also to the Verlet list.

Parameters

simulationSimulation to bind to.

virtual void asyncPart(Dynamics &dynamics) override

Asynchronous part of the force computation.

Parameters

dynamicsDynamics object to add potential energy and forces to.

virtual void vlUpdateHook() override

Action to perform when the Verlet list is updated. We want to (a) retrieve the pairs that are in native contact into a list (curPairs), (b) remove those pairs from the global Verlet list.

Private Functions

virtual vl::Spec spec() const override

Generate a spec for the Verlet list.

Returns

Generated spec.

Private Members

Pairs newVL

A “copy” of the global Verlet list to be swapped with it when we update it; we want to do the swap so as to avoid excessive allocation of memory when the program runs.

std::vector<Contact> allContacts

List of all native contacts.

std::vector<Contact> curPairs

List of native contacts that are within the cutoff distance.

double depth = 1.0 * eps

Depth of the Lennard-Jones potential, with which the natively connected residues interact.

struct Contact
#include <NativeContacts.hpp>

A struct with contact data.

Public Members

int i1

First residue.

int i2

Second residue.

double r_min

Lennard-Jones potential minimal distance.