← Back to team overview

ffc team mailing list archive

Re: Arbitraryness in code generated by quadrature representation?

 

On 01/20/2011 03:20 PM, Kristian Ølgaard wrote:
On 20 January 2011 14:59, Marie E. Rognes<meg@xxxxxxxxx>  wrote:
On 01/20/2011 02:55 PM, Kristian Ølgaard wrote:

On 20 January 2011 14:32, Marie E. Rognes<meg@xxxxxxxxx>  wrote:

Repeated runs of the dolfin generate-form-files scripts seems to generate
different code. For instance for the forms defined in

     /demo/undocumented/dg-advection-diffusion/cpp/AdvectionDiffusion.ufl

I get differences of the type

-    G[1] = 0.500000000000000*det*n1;
-    G[2] = 0.500000000000000*det;
+    G[1] = 0.500000000000000*det;
+    G[2] = 0.500000000000000*det*n1;

in tabulate_tensor and corresponding differences for the tensor terms. The
code seems equivalent, but this behaviour makes it tedious to check for
changes in the generated code. Has anyone else experienced this?

Not lately, but I haven't been looking for it either. The quadrature
generator uses dicts heavily, so somewhere we need to throw in a
sorted(.keys()) to get rid of this behaviour but I don't know where
exactly.

Do you have any guesses (other than in quadrature/*)? I can fix if you point
me in the right direction.
Yes, in quadraturegenerator.py the dictionary geo_consts from the ir
is already created, and since the randomness only appears when
optimisations are on, the 'random' geo_consts dictionary must be
generated in quadratureoptimization.py. Expressions are added to the
dictionary by the function optimise_code from quadrature.symbolics but
the problem might have something to do with the order by which this
function is called (the loops in the _*() functions in
quadratureoptimization.py).


Ok, thanks! I'll take a look a little later.

--
Marie


Follow ups

References