relentless.model.potential.Potential#

class relentless.model.potential.Potential(keys, params, container=None, name=None)#

Abstract base class for interaction potential.

A Potential defines the potential energy abstractly, which can be parametrized on a key (like a type) and that is a function of an arbitrary scalar coordinate x. Concrete energy(), force(), and derivative() methods must be implemented to define the potential energy (and its derivatives).

Parameters:
  • keys (list) – Keys for parametrizing the potential.

  • params (list) – Parameters of the potential.

  • container (object) – Container for storing coefficients. By default, Parameters is used. The constructor of the container must accept two arguments: keys and params.

  • name (str) – Unique name of the potential. Defaults to __u[id], where id is the unique integer ID of the potential.

Methods

derivative(key, var, x)

Evaluate potential parameter derivative.

energy(key, x)

Evaluate potential energy.

force(key, x)

Evaluate force magnitude.

from_file(filename)

Create potential from a JSON file.

from_json(data)

Create potential from JSON data.

save(filename)

Save the potential to file as JSON data.

to_json()

Export potential to a JSON-compatible dictionary.

Attributes

count

names

abstract derivative(key, var, x)#

Evaluate potential parameter derivative.

Parameters:
  • key – Key parametrizing the potential in coeff.

  • var (Variable) – The variable with respect to which the derivative is calculated.

  • x (float or list) – Potential energy coordinate.

Returns:

The potential parameter derivative evaluated at x. The return type is consistent with x.

Return type:

float or numpy.ndarray

abstract energy(key, x)#

Evaluate potential energy.

Parameters:
  • key – Key parametrizing the potential in coeff.

  • x (float or list) – Potential energy coordinate.

Returns:

The pair energy evaluated at x. The return type is consistent with x.

Return type:

float or numpy.ndarray

abstract force(key, x)#

Evaluate force magnitude.

The force is the (negative) magnitude of the x gradient.

Parameters:
  • key – Key parametrizing the potential in coeff.

  • x (float or list) – Potential energy coordinate.

Returns:

The force evaluated at x. The return type is consistent with x.

Return type:

float or numpy.ndarray

classmethod from_file(filename)#

Create potential from a JSON file.

It is assumed that the JSON file is compatible with the potential type.

Parameters:

filename (str) – JSON file to load.

classmethod from_json(data)#

Create potential from JSON data.

It is assumed that the data is compatible with the pair potential.

Parameters:

data (dict) – JSON data for potential.

save(filename)#

Save the potential to file as JSON data.

Parameters:

filename (str) – The name of the file to which to save the data.

to_json()#

Export potential to a JSON-compatible dictionary.

The JSON dictionary will contain the id and name of the potential, along with the JSON representation of its coefficients.

Returns:

Potential.

Return type:

dict