← Back to team overview

dolfin team mailing list archive

Re: [PETSC #13198] Re: trouble with FeNiCS

 

  This is not correct.

  Regardless, with PETSc 2.3 and higher you do not need to provide this
flag. PETSc itself keeps track of whether the extern "C" is needed or not.

   Barry


On Tue, 14 Jun 2005, Matthew Knepley wrote:

> Anders Logg <logg@xxxxxxxxx> writes:
> 
>        This flag says:
> 
>   1) You configured with --with-clanguage=C++ so that the C++ compiler is used to
>      compile the libraries.
> 
>   2) The PETSc symbols are NOT mangled when using PETSC_USE_EXTERN_CXX so C code
>      can call these symbols.
> 
> This is not are normal mode. We believe if you want to compile with C++, then you
> want mangled symbols.
> 
>      Thanks,
> 
>         Matt
> 
> > I think we added a
> >
> > PETSC_CFLAGS="$PETSC_CFLAGS -DPETSC_USE_EXTERN_CXX"
> >
> > just below the definition of PETSC_CFLAGS in configure.ac.  You need
> > to add this, then run scripts/preconfigure and then ./configure again.
> >
> > We get PETSC_CFLAGS by
> >
> > PETSC_CFLAGS=`make -s -C $PETSC_DIR getincludedirs PETSC_DIR=$PETSC_DIR BOPT=$BOPT`
> >
> > which I think should be enough. I don't know why the extra
> > -DPETSC_USE_EXTERN_CXX helps on some systems or why it's not included
> > with getincludedirs.
> >
> > /Anders
> >
> > On Tue, Jun 14, 2005 at 01:38:05PM -0500, Andy Ray Terrel wrote:
> >> Sorry to bother you again.  But when I tried to run some things with 
> >> dolfin I just got a PETSc Error.  So I tried to rebuild but remembered 
> >> that when I built the first time I had to add some linker to PETSc 
> >> somewhere.  Well I have forgotten what it was we added to get PETSc to 
> >> link.  Do you remember?
> >> 
> >> Andy
> >> 
> >> Anders Logg wrote:
> >> 
> >> >You need to do A and B separately, as two different forms in two
> >> >different files.
> >> >
> >> >In the first file, do something like
> >> >
> >> >   vector = FiniteElement("Vector Lagrange", "triangle", 1)
> >> >
> >> >   v = BasisFunction(vector)
> >> >   u = BasisFunction(vector)
> >> >
> >> >   a = v.dx(i)*u.dx(i)*dx
> >> >
> >> >In the second file, do something like
> >> >
> >> >   vector = FiniteElement("Vector Lagrange", "triangle", 1)
> >> >   scalar = FiniteElement("Lagrange", "triangle", 1)
> >> >   
> >> >   q = BasisFunction(scalar)
> >> >   u = BasisFunction(vector)
> >> >
> >> >   a = q*u[i].dx(i)*dx
> >> >
> >> >Compile each form and then assemble separately in DOLFIN to get A and B.
> >> >You can then either combine A and B to get the full matrix, or you can
> >> >do fixed-point iteration, or you can create something called a
> >> >"VirtualMatrix" in DOLFIN which implements the matrix-vector product
> >> >for the full matrix in terms of A and B.
> >> >
> >> >Hope this helps. Ask me again when you need more help.
> >> >
> >> >/Anders
> >> >
> >> >On Tue, Jun 14, 2005 at 09:48:43AM -0500, Andy Terrel wrote:
> >> > 
> >> >
> >> >>Hey Anders,
> >> >>
> >> >>I am having some trouble figuring out how to write some stokes equations 
> >> >>up for my project.  So I have the forms:
> >> >>
> >> >>a = v.dx(j) *u.dy(j)
> >> >>b= q*r*dx
> >> >>
> >> >>and I want to construct the matrix C s.t.
> >> >>   [ A   B^t  ]
> >> >>C=[ B    0     ]
> >> >>
> >> >>This is so I can call some mixed methods for the solving of the problem 
> >> >>to get the benchmarking results.
> >> >>
> >> >>If you have time can you help me?
> >> >>
> >> >>Andy
> >> >>
> >> >>PS This is to solve (grad(u), grad(v)) - (p, div(v)) = 0,
> >> >>                           (div(u), w) = 0.
> >> >>
> >> >>   
> >> >>
> >> >
> >> > 
> >> >
> >> 
> >
> > -- 
> > Anders Logg
> > Research Assistant Professor
> > Toyota Technological Institute at Chicago
> > http://www.tti-c.org/logg/
> >
> >
> >
> 
> 



Follow ups

References