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[, name])

Create potential from a JSON file.

from_json(data[, name])

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, name=None)#

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.

  • name (str or bool or None) – Name of the potential. If a str, name overrides the value in the file. If True, the name in the file is always preserved. If False, the name in the file is always ignored, and a default name is created. If None, the value in the file is used if it is not taken and does not match the default name pattern; otherwise, a new default name is generated.

classmethod from_json(data, name=None)#

Create potential from JSON data.

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

Parameters:
  • data (dict) – JSON data for potential.

  • name (str or bool or None) – Name of the potential. If a str, name overrides the value in the JSON data. If True, the name in the JSON data is always preserved. If False, the name in the JSON data is always ignored, and a default name is created. If None, the value in the JSON data is used if it is not taken and does not match the default name pattern; otherwise, a new default name is generated.

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