Model builder

Model builder. Stores and defines physical properties of a group of atoms.

The model handles two species of atom (one of them can be ignored by setting the correct mole fraction). The first species values are stored in the first part of arrays (lower indices), the second species in what lasts (higher indices). This is meant to facilitate computation of inter-atomic forces and potential energy.

class moldyn.simulation.builder.Model(pos=None, v=None, npart=0, x_a=1.0)[source]
Parameters:
  • pos (np.array) –

    Atoms’ position.

    Note

    If v is not set, it is initialized as an array full of zeros.

  • v (np.array) –

    Atoms’ speed.

    Note

    Taken in account only if pos is set.

  • npart (int) –

    Total number of atoms.

    Note

    Setting pos overrides this.

  • x_a (float) – Mole fraction of species A.
T

Temperature. Is calculated from the average kinetic energy of the atoms. May be set to any positive value, in which case atoms’ speed will be scaled to match the desired temperature.

Type:float
EC

Microscopic kinetic energy.

Note

Cannot be changed as-is, but setting T is one way to do so.

Type:float
total_EC

Total kinetic energy.

Note

Cannot be changed as-is.

Type:float
kB

Boltzmann constant. If changed, will affect the way the model behaves regarding temperature.

Type:float
pos
v

List of atom positions and speeds. First axis represents the atom, second axis the dimension (x or y).

Type:np.array
dt

Timestep used for simulation.

Note

An acceptable value is calculated when species are defined, but it may be set to anything else.

Type:float
npart

Total number of atoms.

Type:int
x_a

Mole fraction of species A.

Type:float
n_a

Atom number for species A, calculated from x_a and npart If set, x_a will be recalculated.

Type:int
epsilon_a
epsilon_b

Epsilon value (J, in Lennard-Jones potential) for species a or b.

Type:float
sigma_a
sigma_b

Sigma value (m, in Lennard-Jones potential) for species a or b.

Type:float
epsilon_ab
sigma_ab

Inter-species epsilon and sigma values.

Note

Cannot be changed as-is. If you want to change these values, modify the corresponding items in the params dictionary.

Type:float
re_a
re_b
re_ab

Estimated radius of minimum potential energy.

Type:float
rcut_fact

When the model is simulated, atoms further than rcut_fact*re do not interact. Defaults to 2.0.

Type:float
params

Model parameters, needed for the simulation.

Warning

Changing directly these values may lead to unpredicted behaviour if not documented.

Type:dict
kong

Kong rules to estimate inter-species sigma and epsilon parameters.

Type:dict
inter_species_rule

Rules to automatically estimate inter-species sigma and epsilon parameters. Defaults to kong.

Type:dict
x_lim_inf
y_lim_inf

Lower x and y position of the box boundaries.

Type:float
x_lim_sup
y_lim_sup

Upper x and y position of the box boundaries.

Type:float
length_x
length_y

Size of the box along x and y axis. Those parameter are tied with *_lim_*** and any change on one of them is correctly taken in account.

Type:float
lim_inf
lim_sup
length

2 elements wide array containing corresponding (x_*, y_*) values.

Note

Cannot be changed as-is.

Type:np.array
x_periodic
y_periodic

Defines periodic conditions for x and y axis. Set to 1 to define periodic boundary condition or 0 to live in an infinite empty space. Defaults to 0.

Type:int
mass

Total mass in the model.

Note

Cannot be changed as-is.

Type:float
m

Mass of each atom. Shape is (npart, 2) in order to facilitate calculations of kinetic energy and Newton’s second law.

Warning

You should not change those values unless you know what you are doing.

Type:np.array
_m()[source]

Constructs m.

Returns:m
Return type:np.array
atom_grid(n_x, n_y, d)[source]

Creates a grid containing n_x*n_y atoms.

Sets npart, pos, dt, v and m.

Parameters:
  • n_x (int) – number of columns
  • n_y (int) – number of rows
  • d (float) – inter-atomic distance
copy()[source]
Returns:Copy of the current model
Return type:builder.Model
random_speed()[source]

Gives a random speed to the atoms, following a normal law, in order to have a strictly positive temperature.

set_a(epsilon, sigma, m)[source]

Sets species a parameters.

Parameters:
  • epsilon (float) – Epsilon in Lennard-Jones potential.
  • sigma (float) – Sigma in Lennard-Jones potential.
  • m (float) – Mass of the atom.
set_ab(a, b)[source]

Sets species a and b parameters, and calculates inter-species parameters.

Parameters:
  • a (tuple) – First species parameters, under the form (epsilon, sigma, mass)
  • b (tuple) – Second species parameters, under the same form.
set_b(epsilon, sigma, m)[source]

Same as set_a.

set_dt(dt=None)[source]

Defines the timestep used for simulation.

Parameters:dt (float) – Desired timestep. If not set, will be calculated from species a’s properties.
set_periodic_boundary(x=1, y=1)[source]

Set periodic boundaries on both axis.

Parameters:
shuffle_atoms()[source]

Shuffle atoms’ position in order to easily create a homogeneous repartition of the two species. Should be called just right after the positions are defined.

Note

Atoms’ speed is not shuffled.