<commit_before>example files are at 
https://github.com/SpinWaveGenie/SpinWaveGenie/tree/master/examples/FMChain

Dispersion.cpp
```cpp
#define _USE_MATH_DEFINES
#include <cmath>
#include <string>
#include "SpinWaveGenie/SpinWaveGenie.h"

using namespace std;
using namespace SpinWaveGenie;

int main()
{
    Cell cell;
    cell.setBasisVectors(1.0,10.0,10.0,90.0,90.0,90.0);
    
    Sublattice spin0;
    string name0 = "Spin0";
    spin0.setName(name0);
    spin0.setType("NONE");
    spin0.setMoment(1.0,0.0,0.0);
    cell.addSublattice(spin0);
    cell.addAtom(name0,0.0,0.0,0.0);

    SpinWaveBuilder builder(cell);
    
    InteractionFactory interactions;
    
    builder.addInteraction(interactions.getExchange("J",1.0,name0,name0,0.9,1.1));

    SpinWave test = builder.createElement();
    
    PointsAlongLine Line;
    Line.setFirstPoint(0.0,0.0,0.0);
    Line.setFinalPoint(3.0,0.0,0.0);
    Line.setNumberPoints(61);
    ThreeVectors<double> kPoints = Line.getPoints();
    
    SpinWaveDispersion dispersion;
    dispersion.setFilename("FMChain.txt");
    dispersion.setGenie(test);
    dispersion.setPoints(kPoints);
    
    dispersion.save();
    return 0;<commit_msg>add comments to Ferromagnetic chain example<commit_after>example files are at 
https://github.com/SpinWaveGenie/SpinWaveGenie/tree/master/examples/FMChain

Dispersion.cpp
```cpp
#include <cmath>
#include <string>
#include "SpinWaveGenie/SpinWaveGenie.h"

using namespace std;
using namespace SpinWaveGenie;

int main(int argc, const char* argv[])
{
    // Cell object stores the basis vectors and Sublattice objects
    Cell cell;
    // set a,b,c,alpha,beta,gamma in units of Angstroms, Degrees
    cell.setBasisVectors(1.0,10.0,10.0,90.0,90.0,90.0);

    Sublattice spin0;
    // each Sublattice contains:
    //   a unique name,
    string name0 = "Spin0";
    spin0.setName(name0);
    //   type (used to calculate the magnetic form factor)
    spin0.setType("NONE");
    //  magnetic moment (magnitude,theta (radians), phi (radians))
    spin0.setMoment(1.0,0.0,0.0);
    //  add sublattice to Cell cell.
    cell.addSublattice(spin0);
    // add atom to sublattice name1 at position (0,0.5,0) in reduced lattice units.
    cell.addAtom(name0,0.0,0.0,0.0);

    // add Cell cell to the builder
    SpinWaveBuilder builder(cell);
    
    // defining interactions.
    InteractionFactory interactions;
    
    // Get exchange interaction named "J" with value "1.0" between sublattices name0 and name0.
    // limit atoms to those between 0.9 and 1.1 angstroms.
    // pass this interaction to the builder.
    builder.addInteraction(interactions.getExchange("J",1.0,name0,name0,0.9,1.1));

    //return SpinWave object containing the cell, sublattices and interactions.
    SpinWave test = builder.createElement();
    
    PointsAlongLine Line;
    Line.setFirstPoint(0.0,0.0,0.0);
    Line.setFinalPoint(3.0,0.0,0.0);
    Line.setNumberPoints(61);
    ThreeVectors<double> kPoints = Line.getPoints();
    
    SpinWaveDispersion dispersion;
    dispersion.setFilename("FMChain.txt");
    dispersion.setGenie(test);
    dispersion.setPoints(kPoints);
    
    dispersion.save();
    return 0;
{'fraction_non_alphanumeric': 0.12523540489642185, 'fraction_numerical': 0.0423728813559322, 'mean_word_length': 3.501412429378531, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4990149', 'n_tokens_mistral': 1185, 'n_tokens_neox': 1105, 'n_words': 224}