Hi Miles,
Currently outputting a const value is enough as I'm not changing the args, only reading them.
I can explain myself a bit better. At the moment, I want to create a class named Generator which, given some instructions (aka args), generates and stores the gates necessary for TEBD. It receives a siteset Z4 and some Args
Generator(Z4 const& st, Args const& args = Args::global())
The args contain all the info about the Hamiltonian in an easy to read fashion. Say you want the XXZ chain, then you would add
{"Sx.Sx|all",t,"Sy.Sy|all",t,"Sz.Sz|all",delta}
where t would be the strength of the hopping. In case you also want to add a next-to-nearest interaction at the second site of the chain with strength 4, you just need to do
{"Sx.Sx|all",t,"Sy.Sy|all",t,"Sz.Sz|all",delta,"Sz.Id.Sz|{2}",4}
Constructing the Generator from an Args system is quite practical but I need to loop over the Args. At the moment, I loop over them, extract the operator and where it applies by reading arg.name() and then retrieve the strength by reading arg.realVal().
Maybe I'm doing this is in the worst possible way, feel free to suggest alternatives. I also thought about using the input file but I don't know how to make it so clean.