---
# System prepended metadata

title: Untitled

---

AtomicBase.jl --- trash draft

### Abstract types

###### Basically, collection of coordinates of the system. `D` specifies dimensionality of space, `T` specifies the type to stored coordinates.
abstract type AbstractNodeCollection{D,T} end

###### The structure that is used to store useful physical data.
abstract type Atom end

###### Would contain a node collection and a list of atoms
abstract type AbstractSystem{D,T} end

### Interface

###### Returns position of atom with index I
function get_position(system::AbstractSystem, I) end

##### We can also define here `set_position!` and `shift_position!` to update coordinates. 


###### Returns the atom struct with index I
function get_atom(system::AbstractSystem, I) end

###### Returns both position and atom struct at index I
Base.getindex(system::AbstractSystem, I) = get_position(system, I), get_atom(system, I)