← Back to team overview

ffc team mailing list archive

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

 

On Thu, 2010-07-08 at 08:22 +0100, Garth N. Wells wrote:
> On Jul 8 2010, Anders Logg wrote:
> 
> >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).
> >
> 
> I agree - d, n and x are all commonly used, but v for volume isn't.
> 
> Garth

I have another request related to geometric computation inside UFL. Is
it possible to add a class called SurfaceNormal to geometry.py?

Mehdi

> 
> >--
> >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
> >> >
> >
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~ffc
> Post to     : ffc@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~ffc
> More help   : https://help.launchpad.net/ListHelp




Follow ups

References