[eigen] question on mapping of fields to equation systems

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]

Hello everyone!

First of all, congratulations for your great work on Eigen, I just use it for everything!

But as I'm doing so and as I'm relatively new to computational science, one question keeps coming up to to my mind. Even though this is slighty out of Eigens scope, most of you most likely had to deal with it and it would be great of you could share some of your insight about your solution with me.

When solving PDEs, you always have some kind of spatial distribution of your indepentent variables, let it be points, elements or volumina, depending on what your are doing. You always have to store the scalars and vectors you are solving for in this spatial field. By using some differentiation schemes, you end up with a big linear equation system, and that is where Eigen comes into play.

The question is: how do you store you scalar fields and vector fields in c++? Is mostly used a std:vector<MyPoint/Element> where the MyPoint/Element class holds all the indep. variables and positions. I also tried having a separate vectors for each quantity, but this got really messy very quickly. This leads me to the problem, that for every step, I have to calculate the respective matrix entries from them, then solve and copy them back. While these operation is O(n) while solving is mostly O(n²) or even O(n³), it is often a ton actual coding effort required.

Are there any high-level c++ libraries which are doing just this abstraction level, but not directly are full-featured solvers? Which provide a convenient data structures to have a bunch of point/elements in space and allow you so simplify the mapping to the linear equation system?

Regards, Martin Beeger

Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/