ffc team mailing list archive
-
ffc team
-
Mailing list archive
-
Message #01521
Re: bug in simplify?
Quoting Anders Logg <logg@xxxxxxxxx>:
> On Tue, Mar 18, 2008 at 02:37:49PM -0400, Marie Rognes wrote:
> > Kristian Oelgaard wrote:
> > > Quoting Marie Rognes <meg@xxxxxxxxxxx>:
> > >
> > >
> > >>
> > >> However, this time it is actually not simplify that is the main
> culprit:
> > >>
> > >> After index reassignment:
> > >>
> > >> 0.5 | vi0[0]*vi1[0]*dX(0) + 0.5 | vi0[0]*vi1[0]*dX(0) + 0.5 |
> > >> vi0[1]*vi1[1]*dX(0) + 0.5 | vi0[1]*vi1[2]*dX(0) + 0.5 |
> > >> vi0[2]*vi1[2]*dX(0) + 0.5 | vi0[2]*vi1[1]*dX(0) + 0.5 |
> > >> vi0[3]*vi1[3]*dX(0) + 0.5 | vi0[3]*vi1[3]*dX(0)
> > >>
> > >> After simplification:
> > >>
> > >> 0.5 | vi0[b0]*vi1[b0]*dX(0) + 0.5 | vi0[b0]*vi1[b0]*dX(0) +
> > >> 0.5 | vi0[1]*vi1[2]*dX(0) + 0.5 | vi0[2]*vi1[1]*dX(0)
> > >>
> > >>
> > >> where the index b0 has range [0, 1, 2, 3] in the first term and [0, 3]
> > >> in the second term. This makes sense.
> > >>
> > >
> > > Maybe, on a side note: the fact that 'b0' can have a different range in
> each
> > > monomial makes it pretty difficult to debug/understand what is going on
> by just
> > > looking at the pretty print version of the form. The index should be
> different
> > > in my opinion.
> > >
> > >
> >
> > Agree. Maybe we could have two versions of printing indices, one with
> > the ranges (if set) ala
> >
> > b0 (0, 1, 2, 3)
> >
> > for debug purposes and a denser one for non-debug purposes?
> >
> > Actually, that would be a starting point for an accurate factorization
> > check too.
>
> See if it works now. It was a simple fix (assuming it works) to
> include the index range in the computation of signatures (see
> signature.py).
Yes, it works, but the output could be optimised:
// Compute geometry tensors
const double G0_ = det;
const double G1_ = det;
const double G2_ = det;
const double G3_ = det;
// Compute element tensor
A[0] = 0.25*G0_ + 0.25*G1_;
A[1] = 0;
A[2] = 0;
A[3] = 0;
A[4] = 0;
A[5] = 0.25*G0_;
A[6] = 0.25*G2_;
A[7] = 0;
A[8] = 0;
A[9] = 0.25*G3_;
A[10] = 0.25*G0_;
A[11] = 0;
A[12] = 0;
A[13] = 0;
A[14] = 0;
A[15] = 0.25*G0_ + 0.25*G1_;
So something in factorization should change.
And it would be nice to include some information about the range of the indices
in the form signature:
After simplification:
0.5 | vi0[b0]*vi1[b0]*dX(0) + 0.5 | vi0[b0]*vi1[b0]*dX(0) + 0.5 |
vi0[1]*vi1[2]*dX(0) + 0.5 | vi0[2]*vi1[1]*dX(0)
b0 in first product 0-3, in second 0-1.
Kristian
>
> --
> Anders
> _______________________________________________
> FFC-dev mailing list
> FFC-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/ffc-dev
>
Follow ups
References