Yes, those were 2D objects embedded in 3D, and yes it can do 3D objects
in 3D space (in general, N-D objects in M-D space). I spent a few hours
today trying to get 3D visualization working on my computer again (I had
it working before). Fortunately, I got it. I attached a triangulated
sphere and (solid) torus.
I skimmed through the article you mentioned, "Efficient Representation
of Computational Meshes" and it looked very interesting--and indeed very
relevant to the types of approaches I take. I have only begun to look at
the paper since I spent so much time nearly crashing my computer to get
my graphics drivers working again for the 3D visualization.
As for eigenvalue problem solvers--I've just discretized the laplacian
and used standard linear algebra packages to diagonalize the resulting
matrices. I've used scipy and pycula for that.
At least in finite element exterior calculus, the discrete laplacian
looks like d.T.dot(mass_matrix).dot(d), where "d" is an incidence matrix
between edges and vertices for scalar fields, triangles and edges for
vector fields, etc (for higher dimensional arbitrary rank antisymmetric
tensor fields), and "mass_matrix" is some symmetric matrix that is
vaguely analogous to an inner product. You then solve a generalized
eigenvalue problem of the form
>> eigh(laplacian, other_mass_matrix)
I think this is similar to how finite elements works in practice--but
I'm more familiar the problem from this angle. I noticed the "Efficient
Representation of Computational Meshes" seems to store meshes in a way
in which this perspective would be very natural--which I why I thought
it looked very relevant to my usual approach.
So far, I've solved for normal modes of scalar and vector fields in
simple domains (such as rectangular and circular) with Dirichlet,
Neumann, and periodic boundary conditions just to benchmark my software
against known results. But the process looks exactly the same for any
domain once you set up the mesh.
Hopefully some of this might be useful for sfepy.
Thanks,
Alex