← Back to team overview

ffc team mailing list archive

Re: [Branch ~ffc-core/ffc/main] Rev 1498: Added support for CellVolume from UFL.

 

On Wed, Jul 07, 2010 at 06:26:20PM +0100, Kristian Oelgaard wrote:
> Supporting CellVolume makes it possible to do:
>
> CG = FiniteElement("Lagrange", triangle, 2)
> DG = FiniteElement("DG", triangle, 0)
> v = TestFunction(DG)
> f = Coefficient(CG)
> vol = triangle.v

Would it be better to call it vol or volume instead of v? Or does it
have to be a one-letter word?

--
Anders


> L = 1.0/vol*v*f*dx
>
> instead of using a Coefficient for 'vol' and then defining an
> Expression in DOLFIN.
>
> Currently, it will use the absolute value of the determinant of the
> Jacobian in tabulate_tensor ( std::abs(detJ) ).
>
> Kristian
>
> On 7 July 2010 18:19,  <noreply@xxxxxxxxxxxxx> wrote:
> > ------------------------------------------------------------
> > revno: 1498
> > committer: Kristian B. Ølgaard <k.b.oelgaard@xxxxxxxxx>
> > branch nick: ffc
> > timestamp: Wed 2010-07-07 18:17:07 +0100
> > message:
> >  Added support for CellVolume from UFL.
> > modified:
> >  ChangeLog
> >  ffc/quadrature/optimisedquadraturetransformer.py
> >  ffc/quadrature/quadraturetransformer.py
> >  ffc/quadrature/quadraturetransformerbase.py
> >
> >
> >
> > Your team FFC Core Team is subscribed to branch lp:ffc.
> > To unsubscribe from this branch go to https://code.launchpad.net/~ffc-core/ffc/main/+edit-subscription
> >
> > === modified file 'ChangeLog'
> > --- ChangeLog   2010-07-01 17:43:36 +0000
> > +++ ChangeLog   2010-07-07 17:17:07 +0000
> > @@ -1,3 +1,4 @@
> > + - Added support for new geometric quantity CellVolume in UFL.
> >  0.9.3 [2010-07-01]
> >  - Make global_dimension for Real return an int instead of double, bug # 592088
> >  - Add support for facet normal in 1D.
> >
> > === modified file 'ffc/quadrature/optimisedquadraturetransformer.py'
> > --- ffc/quadrature/optimisedquadraturetransformer.py    2010-07-01 17:41:40 +0000
> > +++ ffc/quadrature/optimisedquadraturetransformer.py    2010-07-07 17:17:07 +0000
> > @@ -187,7 +187,7 @@
> >         return {():new_val}
> >
> >     # -------------------------------------------------------------------------
> > -    # FacetNormal (geometry.py).
> > +    # FacetNormal, CellVolume (geometry.py).
> >     # -------------------------------------------------------------------------
> >     def facet_normal(self, o,  *operands):
> >         #print("Visiting FacetNormal:")
> > @@ -216,6 +216,17 @@
> >
> >         return {(): create_symbol(normal_component, GEO)}
> >
> > +    def cell_volume(self, o,  *operands):
> > +        # Safety check.
> > +        ffc_assert(not operands, "Didn't expect any operands for FacetNormal: " + repr(operands))
> > +
> > +        # FIXME: KBO: This has to change for higher order elements
> > +        detJ = format["det(J)"](self.restriction)
> > +        volume = format["absolute value"](detJ)
> > +        self.trans_set.add(detJ)
> > +
> > +        return {():create_symbol(volume, GEO)}
> > +
> >     def create_argument(self, ufl_argument, derivatives, component, local_comp,
> >                   local_offset, ffc_element, transformation, multiindices):
> >         "Create code for basis functions, and update relevant tables of used basis."
> >
> > === modified file 'ffc/quadrature/quadraturetransformer.py'
> > --- ffc/quadrature/quadraturetransformer.py     2010-06-30 09:59:49 +0000
> > +++ ffc/quadrature/quadraturetransformer.py     2010-07-07 17:17:07 +0000
> > @@ -262,7 +262,7 @@
> >         return {():f_abs(operands[0][()])}
> >
> >     # -------------------------------------------------------------------------
> > -    # FacetNormal (geometry.py).
> > +    # FacetNormal, CellVolume (geometry.py).
> >     # -------------------------------------------------------------------------
> >     def facet_normal(self, o,  *operands):
> >         #print("Visiting FacetNormal:")
> > @@ -291,6 +291,18 @@
> >
> >         return {():normal_component}
> >
> > +    def cell_volume(self, o,  *operands):
> > +        # Safety check.
> > +        ffc_assert(not operands, "Didn't expect any operands for CellVolume: " + repr(operands))
> > +
> > +        # FIXME: KBO: This has to change for higher order elements
> > +        detJ = format["det(J)"](self.restriction)
> > +        volume = format["absolute value"](detJ)
> > +        self.trans_set.add(detJ)
> > +
> > +        return {():volume}
> > +
> > +
> >     def create_argument(self, ufl_argument, derivatives, component, local_comp,
> >                   local_offset, ffc_element, transformation, multiindices):
> >         "Create code for basis functions, and update relevant tables of used basis."
> >
> > === modified file 'ffc/quadrature/quadraturetransformerbase.py'
> > --- ffc/quadrature/quadraturetransformerbase.py 2010-07-01 17:41:40 +0000
> > +++ ffc/quadrature/quadraturetransformerbase.py 2010-07-07 17:17:07 +0000
> > @@ -250,12 +250,16 @@
> >         error("This object should be implemented by the child class.")
> >
> >     # -------------------------------------------------------------------------
> > -    # FacetNormal (geometry.py).
> > +    # FacetNormal, CellVolume (geometry.py).
> >     # -------------------------------------------------------------------------
> >     def facet_normal(self, o,  *operands):
> >         print "\n\nVisiting FacetNormal: ", repr(o)
> >         error("This object should be implemented by the child class.")
> >
> > +    def cell_volume(self, o,  *operands):
> > +        print "\n\nVisiting CellVolume: ", repr(o)
> > +        error("This object should be implemented by the child class.")
> > +
> >     # -------------------------------------------------------------------------
> >     # Things that can be handled by the base class.
> >     # -------------------------------------------------------------------------
> >
> >
> >
>
> _______________________________________________
> Mailing list: https://launchpad.net/~ffc
> Post to     : ffc@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~ffc
> More help   : https://help.launchpad.net/ListHelp

Attachment: signature.asc
Description: Digital signature


Follow ups

References