dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #20090
Re: Problems overloading eval for vector valued Expression
After upgrading to the newest version the error repeats with value_shape but
is indeed fixed with the replacement pointed out by Stepan. After making
sure dim() was used I get two different errors, depending on if I use the
demo posted in the documentation, or if I use the demo from the installation
(which used the dim() method already).
Thanks,
Nathan
##the error in the demo from the web documentation
$ python cahn.py
Got expression dimension = 2
Starting Newton solve.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Traceback (most recent call last):
File "cahn.py", line 90, in <module>
solver.solve(problem, u.vector())
File "cahn.py", line 22, in F
assemble(self.L, tensor=b)
File "/usr/lib/python2.6/dist-packages/dolfin/fem/assemble.py", line 100,
in assemble
common_cell=common_cell)
File "/usr/lib/python2.6/dist-packages/dolfin/fem/form.py", line 34, in
__init__
(self._compiled_form, module, self.form_data) = jit(form,
form_compiler_parameters, common_cell)
File "/usr/lib/python2.6/dist-packages/dolfin/compilemodules/jit.py", line
47, in mpi_jit
return local_jit(*args, **kwargs)
File "/usr/lib/python2.6/dist-packages/dolfin/compilemodules/jit.py", line
114, in jit
return jit_compile(form, parameters=p, common_cell=common_cell)
File "/usr/lib/python2.6/dist-packages/ffc/jitcompiler.py", line 64, in
jit
return jit_form(object, parameters, common_cell)
File "/usr/lib/python2.6/dist-packages/ffc/jitcompiler.py", line 122, in
jit_form
compile_form(preprocessed_form, prefix=jit_object.signature(),
parameters=parameters)
File "/usr/lib/python2.6/dist-packages/ffc/compiler.py", line 145, in
compile_form
oir = optimize_ir(ir, parameters)
File "/usr/lib/python2.6/dist-packages/ffc/optimization.py", line 38, in
optimize_ir
oir_integrals = [_optimize_integral_ir(ir) for ir in ir_integrals]
File "/usr/lib/python2.6/dist-packages/ffc/optimization.py", line 56, in
_optimize_integral_ir
oir = r.optimize_integral_ir(ir)
File "/usr/lib/python2.6/dist-packages/ffc/tensor/tensoroptimization.py",
line 42, in optimize_integral_ir
ir["AK"][k] = (A0, GK, _optimize_tensor_contraction(A0.A0, rank))
File "/usr/lib/python2.6/dist-packages/ffc/tensor/tensoroptimization.py",
line 80, in _optimize_tensor_contraction
return optimize(A0)
File "/usr/lib/python2.6/dist-packages/ferari/binary.py", line 390, in
optimize_action
p = process( Adict )
File "/usr/lib/python2.6/dist-packages/ferari/binary.py", line 188, in
process
G = get_graph( vecs , rho )
File "/usr/lib/python2.6/dist-packages/ferari/binary.py", line 72, in
get_graph
(w,l) = dist( vecs[u] , vecs[v] )
File "/usr/lib/python2.6/dist-packages/ferari/binary.py", line 58, in rho
c = colinear( u , v )
File "/usr/lib/python2.6/dist-packages/ferari/binary.py", line 44, in
colinear
uhat = util.unit_vector( u )
File "/usr/lib/python2.6/dist-packages/ferari/util.py", line 25, in
unit_vector
raise RuntimeError, "divide by zero"
RuntimeError: divide by zero
##and the error in the demo from the install
/FEniCS/dolfin-doc/demo/pde/cahn-hilliard/python$ python demo.py
*** Warning: The meaning of operator '+' has changed (no longer creating a
mixed function space).
Traceback (most recent call last):
File "demo.py", line 49, in <module>
q, v = TestFunctions(ME)
ValueError: need more than 1 value to unpack
##after fixing this and similar subsequent errors with q, v =
TestFunctions(ME), TestFunctions(ME) we get another error:
$ python demo.py
*** Warning: The meaning of operator '+' has changed (no longer creating a
mixed function space).
Traceback (most recent call last):
File "demo.py", line 62, in <module>
mu = factor*(2.0*c*(1.0-c)*(1.0-c) - 2.0*c*c*(1.0-c))
TypeError: can't multiply sequence by non-int of type 'float'
Thanks,
Nathan
On Wed, Nov 10, 2010 at 2:29 PM, Stepan Roucka <stepan@xxxxxxxxx> wrote:
> I think you use dim() method instead:
>
> class InitialConditions(Expression):
> def __init__(self):
> random.seed(2 + MPI.process_number())
> def eval(self, values, x):
> values[0] = 0.63 + 0.02*(0.5 - random.random())
> values[1] = 0.0
> def dim(self):
> return 2
>
> The documentation of demos seems to be outdated?
> The demos in the ppa packages use dim(), but in the
> sources
>
> http://bazaar.launchpad.net/~dolfin-core/dolfin/main/annotate/head%3A/demo/pde/cahn-hilliard/python/demo.py<http://bazaar.launchpad.net/%7Edolfin-core/dolfin/main/annotate/head%3A/demo/pde/cahn-hilliard/python/demo.py>
> value_shape is still used, I don't understand why.
>
> Stepan
>
> On 10 November 2010 18:48, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
> >
> >
> > On 10/11/10 17:44, N.A. Borggren wrote:
> >>
> >> Hello,
> >> I am having some issues overloading eval for the class Expression
> >> when I try to use vector valued functions. For example the error occurs
> >> for me in the Cahn-Hilliard demo copied directly from
> >> http://www.fenicsproject.org/doc/demos/pde/cahn-
> >> hilliard/python/documentation.html
> >>
> >> $ python cahn.py
> >>
> >> Got expression dimension = 0
> >> Traceback (most recent call last):
> >> File "cahn.py", line 56, in<module>
> >> u.interpolate(u_init)
> >> File "cahn.py", line 10, in eval
> >> values[1] = 0.0
> >> IndexError: index out of bounds
> >>
> >> the problematic definition is:
> >>
> >> class InitialConditions(Expression):
> >> def __init__(self):
> >> random.seed(2 + MPI.process_number())
> >> def eval(self, values, x):
> >> values[0] = 0.63 + 0.02*(0.5 - random.random())
> >> values[1] = 0.0
> >> def value_shape(self):
> >> return (2,)
> >>
> >> What is this value_shape accomplishing? The expression dimension seems
> >> to still be zero. How do I resolve this?
> >>
> >
> > Which version of DOLFIN are you using?
> >
> > Garth
> >
> >> Thank you very much,
> >> Nathan Borggren
> >
> > _______________________________________________
> > Mailing list: https://launchpad.net/~dolfin<https://launchpad.net/%7Edolfin>
> > Post to : dolfin@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~dolfin<https://launchpad.net/%7Edolfin>
> > More help : https://help.launchpad.net/ListHelp
> >
> >
>
Follow ups
References