ffc team mailing list archive
-
ffc team
-
Mailing list archive
-
Message #03939
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