Subject: Re: [Ufl] [Question #118493]: How can I specify a constant vector as form coefficient in UFL?

From: Garth Wells <[email-masked]>
Date: Wed, 21 Jul 2010 17:15:38 -0000

Question #118493 on UFL changed:
https://answers.launchpad.net/ufl/+question/118493

    Status: Open => Answered

Garth Wells proposed the following answer:
On Wed, 2010-07-21 at 17:06 +0000, Florian Rathgeber wrote:
> New question #118493 on UFL:
> https://answers.launchpad.net/ufl/+question/118493
> 
> I want to evaluate the overhead for coefficient evaluation and with a form like this:
> 
> scalar = FiniteElement("Lagrange", "triangle", 1)
> vector = VectorElement("Lagrange", "triangle", 1)
> 
> v  = TestFunction(scalar)
> u  = TrialFunction(scalar)
> u0 = Coefficient(scalar)
> b  = Coefficient(vector)
> f  = Coefficient(scalar)
> 
> c = 0.05
> k = 0.1
> alpha = 1.0
> 
> a = v*u*dx + k*alpha*u*v*dx + k*c*dot(grad(v), grad(u))*dx L = v*u0*dx
>  - k*v*dot(b, grad(u0))*dx + k*v*f*dx
> 
> My question is how to set the vector coefficient to a UFL form compilation time constant (i.e. they won't show up as coefficients in the generated code).
> 
> For u0 and f I can just set them to a float value, but what is the syntax for b? If possible at all.
> 
> I tried
> tuple: b = (-1.0, 0.0)
> list: b = [-1.0, 0.0]
> which both give an AttributeError: 'float' object has no attribute 'cell'
> 

b = as_vector([-1.0, 0.0])

I expect that you'll find that the overhead is not insignificant when a
lot of coefficients are present.

Garth

-- 
You received this question notification because you are a member of UFL
Team, which is an answer contact for UFL.

---

From: Florian Rathgeber <[email-masked]>
Date: Fri, 23 Jul 2010 08:47:37 -0000

Florian Rathgeber confirmed that the question is solved:
Thanks Garth Wells, that solved my question.

---

From: Garth Wells <[email-masked]>
Date: Fri, 23 Jul 2010 09:45:38 -0000

Garth Wells posted a new comment:
On Fri, 2010-07-23 at 08:47 +0000, Florian Rathgeber wrote:
>     Status: Answered => Solved
> 
> Thanks, had found it in the user manual in the meantime.
> 
> The overhead is pretty significant, that is what I found out, yes.
> 

Could you post a summary of your results?

Garth