← Back to team overview

dolfin team mailing list archive

Re: [Bug 681415] Re: Problem using sub-spaces

 

On Tuesday March 22 2011 00:45:01 Garth Wells wrote:
> On 22/03/11 05:52, Johan Hake wrote:
> > On Monday March 21 2011 13:50:54 Anders Logg wrote:
> >> On Mon, Mar 21, 2011 at 07:42:21PM -0000, Garth Wells wrote:
> >>> This is also a C++ issue, so should be addressed from that side. A
> >>> solution that I thought of a while a ago is to introduce an abstract
> >>> base class
> >>> 
> >>>   GenericFunctionSpace
> >>> 
> >>> and make FunctionSpace and SubSpace sub-classes of
> >>> GenericFunctionSpace. We would the require a FunctionSpace when
> >>> creating a Function. For boundary conditions, we can use a
> >>> GenericFunctionSpace. At the moment, SubSpace is a sub-class of
> >>> FunctionSpace, and this is a cause of difficulty. We can make it
> >>> possible to create a FunctionSpace from a SubSpace, which would
> >>> basically collapse the dofmap.
> >> 
> >> I think that sounds very good. Similar issues as we had before when
> >> the Function class tried to be many things at once (like we can't get
> >> the vector of a subspace but we can for a function space).
> > 
> > Sure, but couldn't this be handled without creating a
> > GenericFunctionSpace. Just feels a bit overkill, when it might be
> > handled with the present interface with some added suger.
> 
> sugar -> 'hack' ;)

Sure, but not nessesary. If we stick to the Function analogy, we have one 
class which handles both cases, i) a full fledged Function or ii) a view into 
another Function.

> I think that a GenericFunctionSpace would ultimately be the simplest and
> most robust solution. 

Ok, but then we might need more time than to the next release for this bug, 
and I might shift assigne to you ;)

Johan

> As Anders wrote, we've gotten into trouble in the
> past by having the function classes be 'more than one thing'.
>
> Garth
> 
> > Johan

-- 
You received this bug notification because you are a member of DOLFIN
Team, which is subscribed to DOLFIN.
https://bugs.launchpad.net/bugs/681415

Title:
  Problem using sub-spaces

Status in DOLFIN:
  Confirmed

Bug description:
  Hi,

  I have trouble using MixedFunctionSpace. Basically I want to project a
  function to a subspace of a MixedFunctionSpace:

     from dolfin import *
     mesh=UnitInterval(10)
     U = FunctionSpace(mesh, "CG", 1)
     V = FunctionSpace(mesh, "CG", 1)
     W=U*V
     f1=Function(W.sub(0))
     f1.vector()[:]=1.0
     #f2=project(f1, V)   # This works!
     f2=project(f1, W.sub(1))  # This doesn't!

  
  The output of that script is attached to the end of this question. Now, the confusing thing is that the projection works fine if one projects to V instead of W.sub(1), although they are mathematically the same spaces. 

  I hope I haven't missed a similar question already reported.

  Best wishes,

  Simon

  
  [0]PETSC ERROR: ------------------------------------------------------------------------
  [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation, probably memory access out of range
  [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
  [0]PETSC ERROR: or see http://www.mcs.anl.gov/petsc/petsc-as/documentation/troubleshooting.html#Signal[0]PETSC ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X to find memory corruption errors
  [0]PETSC ERROR: configure using --with-debugging=yes, recompile, link, and run 
  [0]PETSC ERROR: to get more information on the crash.
  [0]PETSC ERROR: --------------------- Error Message ------------------------------------
  [0]PETSC ERROR: Signal received!
  [0]PETSC ERROR: ------------------------------------------------------------------------
  [0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 3, Fri Jun  4 15:34:52 CDT 2010
  [0]PETSC ERROR: See docs/changes/index.html for recent updates.
  [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
  [0]PETSC ERROR: See docs/index.html for manual pages.
  [0]PETSC ERROR: ------------------------------------------------------------------------
  [0]PETSC ERROR: Unknown Name on a linux-gnu named doodson by sf1409 Thu Nov 25 13:17:44 2010
  [0]PETSC ERROR: Libraries linked from /build/buildd/petsc-3.1.dfsg/linux-gnu-c-opt/lib
  [0]PETSC ERROR: Configure run at Fri Sep 10 04:57:14 2010
  [0]PETSC ERROR: Configure options --with-shared --with-debugging=0 --useThreads 0 --with-clanguage=C++ --with-c-support --with-fortran-interfaces=1 --with-mpi-dir=/usr/lib/openmpi --with-mpi-shared=1 --with-blas-lib=-lblas --with-lapack-lib=-llapack --with-umfpack=1 --with-umfpack-include=/usr/include/suitesparse --with-umfpack-lib="[/usr/lib/libumfpack.so,/usr/lib/libamd.so]" --with-spooles=1 --with-spooles-include=/usr/include/spooles --with-spooles-lib=/usr/lib/libspooles.so --with-hypre=1 --with-hypre-dir=/usr --with-scotch=1 --with-scotch-include=/usr/include/scotch --with-scotch-lib=/usr/lib/libscotch.so --with-hdf5=1 --with-hdf5-dir=/usr
  [0]PETSC ERROR: ------------------------------------------------------------------------
  [0]PETSC ERROR: User provided function() line 0 in unknown directory unknown file
  --------------------------------------------------------------------------
  MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD 
  with errorcode 59.

  NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
  You may or may not see output from other processes, depending on
  exactly when Open MPI kills them.
  --------------------------------------------------------------------------



References