ffc team mailing list archive
-
ffc team
-
Mailing list archive
-
Message #03942
Re: [Branch ~ffc-core/ffc/main] Rev 1498: Added support for CellVolume from UFL.
On Wed, Jul 07, 2010 at 10:34:39PM +0100, Kristian Oelgaard wrote:
> On 7 July 2010 20:22, Garth N. Wells <gnw20@xxxxxxxxx> wrote:
> >
> >
> > On 07/07/10 20:14, Anders Logg wrote:
> >>
> >> 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?
> >>
> >
> > . . . or call it 'volume'.
>
> It can be whatever we want, I just followed what was already there.
> Should we then rename 'd', 'n' and 'x' to 'geometric_dimension',
> 'facet_normal', and 'spatial_coordinate' while we're at it?
I think d, n, x are fine, but v does not necessarily look like a
volume to me (it looks like a test function).
--
Anders
> Kristian
>
> > Garth
> >
> >>
> >>
> >>> 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
> >>>
> >>>
> >>> _______________________________________________
> >>> 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