← Back to team overview

ufl team mailing list archive

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

 

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




Follow ups

References