dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #17173
Re: Plot a constant Expression with different values in the x and y directions
Hi,
We have solved the problem. I needed to interpolate before plotting in
version 0.9.4. It wasn't necessary in 0.9.3.
Thank's for all help:)
-----------------------
f = Constant(mesh, (0, 9.82))
V = VectorFunctionSpace(mesh, "CG", 1)
f_int = interpolate(f,V)
plot(f_int)
--------------------
Anna
>> Hi,
>>
>> Anna Blechingberg wrote:
>>> Hi,
>>>
>>> I have difficulties with plotting a constant function in dolfin version
>>> 0.9.4. I can do it in version 0.9.3, but need it to work in 0.9.4 too.
>>>
>>> The problem is that I have different values in the x and y directions,
>>> 0
>>> and 9.82 respectively.
>>>
>>> The code is as follows:
>>>
>>> ------------
>>>
>>> mesh = Mesh("circle.xml.gz")
>>>
>>> # Define function space
>>> V = VectorFunctionSpace(mesh, "CG", 1)
>>> W = FunctionSpace(mesh, "CG", 1)
>>>
>>> # I have tried with two different definitions of the function, but
>>> don't
>>> know which one is correct:
>>>
>>> # Expression for acceleration force
>>> class Acceleration(Expression):
>>> def eval(self, value, x):
>>> value[0] = 0.0
>>> value[1] = -9.82 # 1g acceleration downwards
>>>
>>> f = Acceleration(V=W)
>>>
>>> g = Constant(mesh,(0, 9.82)) # I can plot g in dolfin version 0.9.3 and
>>> it works correctly there
>>>
>>> -----------------------------------------
>>>
>>> Do the Constant definition of g also work in dolfin version 0.9.4 even
>>> if I can't plot it?
>>
>> The function interface has changed a bit in 0.9.4, such that you don't
>> define Constant function any longer with a mesh, you just pass in the
>> desired value.
>>
>> If you want to plot it, just used the mesh argument of the plot
>> function, e.g.
>>
>> c = Constant((0,1))
>> m = UnitSquare(3,3)
>> plot(c,mesh=m)
>
> I'm sorry, but it doesn't work. I have tried with your and several other
> different versions of defining a Constant:
>
>
> simula@SRL0427:~/annablec/Elasticity/LinearElProgrammes$ python
> Quasistatic_1g.py
> Traceback (most recent call last):
> File "Quasistatic_1g.py", line 190, in <module>
> f = Constant((0,-9.82))
> TypeError: Constant() takes exactly 2 arguments (1 given)
> simula@SRL0427:~/annablec/Elasticity/LinearElProgrammes$ python
> Quasistatic_1g.py
> Traceback (most recent call last):
> File "Quasistatic_1g.py", line 190, in <module>
> f = Constant((0,-9.82), mesh)
> File "/usr/lib/python2.6/dist-packages/dolfin/constant.py", line 42, in
> Constant
> cpp.error("Unable to create constant from expression, must be an int,
> float, tuple or list: " + str(value) + " (of type " + str(type(value))
> + ")")
> File "/usr/lib/python2.6/dist-packages/dolfin/cpp.py", line 989, in
> error
> return _cpp.error(*args)
> RuntimeError: *** Error: Unable to create constant from expression, must
> be an int, float, tuple or list: <Mesh of topological dimension 2
> (triangles) with 1366 vertices and 2606 cells, ordered> (of type <class
> 'dolfin.cpp.Mesh'>)
> simula@SRL0427:~/annablec/Elasticity/LinearElProgrammes$ python
> Quasistatic_1g.py
> Object cannot be plotted directly, projecting to piecewise linears.
> Traceback (most recent call last):
> File "Quasistatic_1g.py", line 191, in <module>
> plot(f,mesh=mesh)
> File "/usr/lib/python2.6/dist-packages/dolfin/plot.py", line 76, in
> dolfin_plot
> raise RuntimeError, ("Don't know how to plot given object and
> projection failed: " + str(object))
> RuntimeError: Don't know how to plot given object and projection failed:
> <Expression in <Mixed element: (<DG0 on a <triangle of degree 1>>, <DG0 on
> a <triangle of degree 1>>)>>
> simula@SRL0427:~/annablec/Elasticity/LinearElProgrammes$ python
> Quasistatic_1g.py
> Traceback (most recent call last):
> File "Quasistatic_1g.py", line 190, in <module>
> f = Constant(0,-9.82)
> File "/usr/lib/python2.6/dist-packages/dolfin/constant.py", line 26, in
> Constant
> V = FunctionSpace(mesh, "Discontinuous Lagrange", 0)
> File "/usr/lib/python2.6/dist-packages/dolfin/functionspace.py", line
> 178, in __init__
> cpp.error("Illegal mesh for creation of function space, not a mesh: "
> + str(mesh))
> File "/usr/lib/python2.6/dist-packages/dolfin/cpp.py", line 989, in
> error
> return _cpp.error(*args)
> RuntimeError: *** Error: Illegal mesh for creation of function space, not
> a mesh: 0
> simula@SRL0427:~/annablec/Elasticity/LinearElProgrammes$ python
> ConstantFunctionTest.py
> Traceback (most recent call last):
> File "ConstantFunctionTest.py", line 5, in <module>
> f = Constant((0, -9.82))
> TypeError: Constant() takes exactly 2 arguments (1 given)
> ------------------------------
>
> So I tried to do exactly what the Constant doc-string says:
>
> -------------
> Help on function Constant in module dolfin.constant:
>
> Constant(mesh, value)
> Create constant-valued function with given value on mesh.
>
> The value may be either a single scalar value or a tuple/list of
> values for vector-valued functions.
> -------------
>
> Program:
> ------------
> from dolfin import *
> import sys
>
> # Load mesh
> mesh = Mesh("circle.xml.gz")
>
> # Scale mesh according to real size of head (diameter 11 cm)
> scaling_factor = 0.11/2/0.5
> mesh.coordinates()[:] = mesh.coordinates()*scaling_factor
>
> # Defining acceleration
> f = Constant(mesh, (0, 9.82))
>
> # Plots acceleration force
> plot(f,mesh=mesh)
> interactive()
> --------------
>
> Gives:
> -----
> simula@SRL0427:~/annablec/Elasticity/LinearElProgrammes$ python
> ConstantFunctionTest.py
> Object cannot be plotted directly, projecting to piecewise linears.
> Traceback (most recent call last):
> File "ConstantFunctionTest.py", line 17, in <module>
> plot(f,mesh=mesh)
> File "/usr/lib/python2.6/dist-packages/dolfin/plot.py", line 76, in
> dolfin_plot
> raise RuntimeError, ("Don't know how to plot given object and
> projection failed: " + str(object))
> RuntimeError: Don't know how to plot given object and projection failed:
> <Expression in <Mixed element: (<DG0 on a <triangle of degree 1>>, <DG0 on
> a <triangle of degree 1>>)>>
> --------
>
>
> So I believe that the problem is in the plot module.
>
> Regards, Anna
>
>
>> HTH,
>> Andre
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dolfin
>> Post to : dolfin@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~dolfin
>> More help : https://help.launchpad.net/ListHelp
>>
>
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dolfin
> Post to : dolfin@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dolfin
> More help : https://help.launchpad.net/ListHelp
>
References