← Back to team overview

dolfin team mailing list archive

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