Update topology datastructures
To make sure that later work can be performed on the analysis tools and core library, certain datastructures used in the topology still need updating.
Mainly, the old t_atoms struct (and its underlying datastructures) need to be transformed into C++ styles, to allow easier access to the underlying elements, while ensuring that they can not be accidentally modified by calling code. In addition to this, the current way of handling the string database (t_symtab) are not optimal to allow a smooth transition to new file types and object serialization.
To do this, a number of underlying tasks need to be performed to allow the changes to happen.
- Update old C-style typedef of atom properties and residue search to C++
- Update some of the gmx_mtop_t atom loops to C++ to be able to use new definitions (may be able to change to native C++ range based loops later)
- Change allocations of datastructures using t_atoms to use new/unique_ptr
- Split out residue information out of atom information
RFC Please let me know if there are any older issues that should be referenced.
- Update atomprop typedef
- Update residuetype typedef
- Update atom loops in gmx_mtop_t
- Update allocations for datastructures that use t_atoms
- Change t_atoms to C++
- Update preprocessing datastructures to C++
Change one gmx_mtop_t atom loop to C++
Changed C style struct to C++ class.
Preparation for modernizing atoms datastructure.
Removed a useless gmxassert.h
Refactor t_hack to MoleculePatches
Replaced raw allocations with std::containers. Changed loops and
dependent functions to use new format.
Used hopefully better names for types and variables.
Part of preprocessing clean up.
Replaced raw allocations with std::containers.
Refactor t_rbonded and t_rbondeds
Again, replaced raw allocations with std::container and changed function
signatures and loops to use new behaviour.
Refactor special bonds
Refactor rtp renaming
Refactor vsite topology
Fix memory issues in preprocess