initialization this is a mess and a source of bugs
super lu matrix
continuous memory make malloc allocation continuous - iso seq line structures are now malloced in separate places - memory is not continuous - better would be to malloc total space needed at one time and use functions to access within arrays
redundant ionization solvers remove specific different routines and use only one code for nelem - then have all within one loop over nelem - this would be easier to make parallel
