Here is a short listing of some things I know could be improved.
Which features have or have not been added to
Sundance is largely a function of what is needed for my various research projects and those of my Sandia collaborators. If you need something that isn't there, please contact me; if there is demand for something I am more likely to justify to Sandia the effort required to add it. And it's open source, so you can always add things yourself!
Documentation and Diagnostics
-
The documentation is probably incomplet, inackurate, and is very much a work in progress trying to keep up with a rapidly-evolving code.
-
The error messages are sometimes cryptic, even when translated from the original Etruscan. To provide better diagnostics, I'll need to get some sense of what kinds of errors people make, which will take some time and pain.
Performance
-
Meshes always identify intermediate cells regardless of whether they are needed for a particular discretization. This causes an increase in mesh construction time in 3D.
-
The system for determining matrix graphs is suboptimal. This won't be important in problems where a single matrix structure is used many times (such as a nonlinear problem).
Equation and discretization types
-
Parameter
expressions can't be used as unknowns.
-
Block equations aren't supported.
-
The ability to use symbolic expressions in cell filters isn't ready yet.
-
All fields must be defined throughout the domain. It is thus not possible to define a design variable on a subset of the domain, or to set up a fluid-structure interaction problem.
-
All fields must have the same basis function. Thus, mixed discretizations are not allowed.
Version 1.0 supported all of the features in the above list, so I can confidently say it won't be hard to add them. If you have a need for them, please let me know.
Element types
-
You can use any element you like, provided that it is Lagrange order one or two. This will change soon: Rob Kirby (U. Chicago) and I have funding to add his very general FIAT element-generation code to Sundance in the summer of 2005.
-
Simplexes only. Hexes and quads would be easy to add, but I have little reason to do so.
Solvers
-
While the Trilinos solvers are well-tested and robust, the TSF high-level interface to them hasn't been tested extensively, so some of the options might not work.
Some more fundamental limitations
These are features that are quite possible to do in Sundance, would take some significant effort to add. They weren't present in version 1.0, and so I probably don't fully understand all the design issues.
-
There is no support for multi-domain contact. Most of my research involves problems in fluid mechanics, so I've had no need to implement contact.
-
There is no support for non-local boundary conditions. To do non-local BCs with Sundance as is, you'd need to go in and hack them into the system matrix, using the Sundance DOF map as a guide to where entries should go. Note that in many problems such as non-reflecting boundaries there is a good local approximation to a nonlocal BC.
-
Sundance doesn't do any static condensation to eliminate internal degrees of freedom.