Topology type and associated function

type Topology

A Topology describes the organisation of the particles in the system: what are there names, how are they bonded together, etc. A Topology is a list of Atom in the system, together with the list of bonds between the atoms.

function Topology(ptr::Ptr{lib.CHFL_TOPOLOGY})
A Topology describes the organisation of the particles in the system: what are there names, how are they bonded together, etc. A Topology is a list of Atom in the system, together with the list of bonds between the atoms.
function Topology()
Create an empty Topology.
function Topology(frame::Frame)
Get a copy of the Topology of the given frame.
function deepcopy(topology::Topology)
Make a deep copy of a topology.
function size(topology::Topology)
Get the Topology size, i.e. the current number of atoms.
function add_atom!(topology::Topology, atom::Atom)
Add an atom at the end of a topology.
function remove!(topology::Topology, index::Integer)
Remove the atom at the given index from a topology.
function bonds_count(topology::Topology)
Get the number of bonds in the topology.
function angles_count(topology::Topology)
Get the number of angles in the topology.
function dihedrals_count(topology::Topology)
Get the number of dihedral angles in the topology.
function impropers_count(topology::Topology)
Get the number of improper angles in the topology.
function bonds(topology::Topology)
Get the bonds in the topology, in a 2 x bonds_count(topology) array.
function angles(topology::Topology)
Get the angles in the topology, in a 3 x angles_count(topology) array.
function dihedrals(topology::Topology)
Get the dihedral angles in the topology, in a 4 x dihedrals_count(topology) array.
function impropers(topology::Topology)
Get the improper angles in the topology, in a 4 x impropers_count(topology) array.
function add_bond!(topology::Topology, i::Integer, j::Integer)
Add a bond between the atoms i and j in the topology.
function remove_bond!(topology::Topology, i::Integer, j::Integer)
Remove any existing bond between the atoms i and j in the topology.
function add_residue!(topology::Topology, residue::Residue)

Add a copy of residue to this topology.

The residue id must not already be in the topology, and the residue must contain only atoms that are not already in another residue.

function count_residues(topology::Topology)
Get the number of residues in the topology.
function are_linked(topology::Topology, first::Residue, second::Residue)
Check if the two residues first and second from the topology are linked together. i.e. if there is a bond between one atom in the first residue and one atom in the second one.
function resize!(topology::Topology, size::Integer)

Resize the topology to hold natoms atoms. If the new number of atoms is bigger than the current number, new atoms will be created with an empty name and type.

If it is lower than the current number of atoms, the last atoms will be removed, together with the associated bonds, angles and dihedrals.