|[eigen] question on mapping of fields to equation systems|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
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
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
Regards, Martin Beeger