← Back to team overview

dolfin team mailing list archive

Re: Fw: [FEniCS-dev] Dimension of function space too large for application to linear system

 





________________________________
From: Anders Logg <logg@xxxxxxxxx>
To: dolfin-dev@xxxxxxxxxx
Sent: Sunday, March 1, 2009 3:21:21 PM
Subject: Re: [DOLFIN-dev] Fw: [FEniCS-dev] Dimension of function space too large for application to linear system

On Sun, Mar 01, 2009 at 01:03:54PM -0800, Chong Luo wrote:
> I sent the email before I subscribed to the mailing list, so I try again.
> 
> Best,
> Chong
> ----- Forwarded Message ----
> From: Chong Luo <luo.chong@xxxxxxxxx>
> To: dolfin-dev@xxxxxxxxxx
> Sent: Sunday, March 1, 2009 2:58:46 PM
> Subject: Re: [FEniCS-dev] Dimension of function space too large for application
> to linear system
> 
> Yes, I'm sure I have 4 levels of nested sub spaces. The function space is
> defined as follows:
> 
> vector = VectorElement("Lagrange", "triangle", 2)
> scalar = FiniteElement("Lagrange", "triangle", 1)
> mixed = vector+vector+scalar+scalar                         #
> displacement+orientation+pressure+lambda

What does this last line do? It just adds stuff. Do you use it for
anything?

That last line is supposed to go with the line above, and is a comment explaining the components of the mixed space.

Also, lambda is not a good name as it is in conflict with a Python
keyword. I'm surprised it compiles at all.

> v = TestFunction(mixed) u = TrialFunction(mixed)
> 
> Thus u12 corresponds to the subspace of displacement, and n12 corresponds to
> the subspace of the orientation.

The way you write it above, the mixed space will actually have 4 levels:

mixed = ((vector + vector) + scalar) + scalar

In particular, the first component of the original vector space will
be subspace (0, 0, 0, 0). Is this what you intend? Note the order of
nesting from left to right above.

In my understanding, the first 0 gives  "((vector + vector) + scalar)", 
the second 0 gives "(vector + vector)", the third 0 gives the first "vector".
Thus (0,0,0) is enough, right? My u12 means the first "vector", not the first component of the first vector.

If this is what you intend, can you post a minimal example that breaks?
With minimal, I mean less than 10 lines of code. The simpler it is,
the greater the chance that someone will find time to track down the
bug.

I'll try to do it during next week. Thank you for your time.

-- 
Anders



      

References