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

From: Florian Rathgeber <[email-masked]>
Date: Wed, 21 Jul 2010 17:06:35 -0000

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'

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

---

From: "Garth N. Wells" <[email-masked]>
Date: Wed, 21 Jul 2010 18:11:04 +0100

On Wed, 2010-07-21 at 17:06 +0000, Florian Rathgeber wrote:
> 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
> 

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

---

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

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

    Status: Answered => Solved

Florian Rathgeber confirmed that the question is solved:
Thanks, had found it in the user manual in the meantime.

The overhead is pretty significant, that is what I found out, yes.

---

From: "Garth N. Wells" <[email-masked]>
Date: Fri, 23 Jul 2010 10:41:50 +0100

> The overhead is pretty significant, that is what I found out, yes.

Could you post a summary of your results?

Garth

---

From: Florian Rathgeber <[email-masked]>
Date: Sun, 01 Aug 2010 12:27:09 -0000

Florian Rathgeber posted a new comment:
I'll put it together for my thesis, but I can post some results as soon
as I have them in digestible form.

Florian