From: Derek Gaston <derek.gaston@in...>  20090629 20:28:30

As you guys are no doubt aware... we do everything matrix / jacobian free. Unfortunately... even though we don't fill it... the memory for a sparse jacobian gets set aside in ImplicitSystem (check out ImplicitSystem::init_data() and init_matrices() ). What can we do about this? It seems like the assumption (rightly so at the time) was made that every Implicit solve will need a system matrix.... and now we've found a case where that isn't true. We could, of course, derive a new tree of Systems from ExplicitSystem that behaves similarly to the (Nonlinear)ImplicitSystem tree... but that feels like a bad duplication for something that really comes down to a small change in behavior. The other option seems to be something along the lines of setting a bool in ImplicitSystem and putting ifs all over the places to do the correct thing. This gets a bit tricky though because those ifs have to propogate all the way out to the leaves of the tree (for instance the solve() methods for both linear and nonlinear solvers take _references_ to SparseMatrixs.... which means we'll have to do some work to make it possible to _not_ have a matrix). Any ideas here? Obviously I'm asking this question because this is now starting to be a problem. We're looking at solving systems of 50 or more variables.... and allocating a sparse matrix that we never use is pretty sloppy. Derek 