← Back to team overview

ffc team mailing list archive

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

 

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

--
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
>




Follow ups

References