Do you get the same error if you don't use arrays? Say that you do
#include "Stokes12.h";
#include "Stokes23.h";
MyFunction f;
MyBC bc;
Stokes12::BilinearForm bform0;
Stokes23::BilinearForm bform1;
Stokes12::LinearForm(f) lform0(f);
Stokes23::LinearForm(f) lform1(f);
UnitSquare mesh(8,8);
Matrix A;
Vector x, b;
FEM::assemble(bform0, lform1, A, b, mesh, bc);
FEM::assemble(bform1, lform1, A, b, mesh, bc);
The only thing I can think of is that f is used in both forms. That
should be ok, but it could be the cause.
/Anders
On Wed, Nov 09, 2005 at 08:45:52AM -0600, Andy Ray Terrel wrote:
Recently I have had some trouble putting LinearForm pointers into an
array and trying to work on them. Basically if I have more than one in
the array I either get a segfault or numbers that don't match up to when
I am doing things without the array. The code looks something like this:
---------------------------------------------------------------------------------------------------
include "Stokes12.h";
include "Stokes23.h";
MyFunction f;
MyBC bc;
BilinearForm* bforms[2]={new Stokes12::BilinearForm(), new
Stokes23::BilinearForm()};
LinearForm* lforms[2]={new Stokes12::LinearForm(f), new
Stokes23::LinearForm(f)};
for(int i=0; i<2; i++){
...
UnitSquare mesh(8,8);
Matrix A;
Vector x, b;
FEM::assemble(*(bforms[i]), *(lforms[i]), A, b, mesh, bc);
...
}
------------------------------------------------------------------------------------------------
So I have gotten around the problem by using python to just write the
different files and running them, but I thought someone might want to
know about the problem I was having.