[Dune] centerUnitOuterNormal() in UGGrid

Eike Mueller e.mueller at bath.ac.uk
Mon Sep 16 17:30:09 CEST 2013


Hi Oliver,

thanks a lot for the confirmation. I will try to put together a small 
test case and if this still produces the strange behaviour I will submit 
a bug report.

Cheers,

Eike

On 16/09/13 16:24, Oliver Sander wrote:
> Hi Eike,
> that sounds like a bug.  You are right in expecting a method call 
> '*OuterNormal'
> to return an outer normal.  Can you send a complete test case that 
> reproduces
> the problem?
> Cheers,
> Oliver
>
> Am 16.09.2013 16:30, schrieb Eike Mueller:
>> Dear DUNE-list,
>>
>> is centerUnitOuterNormal() for the (3d-) UGGrid guaranteed to give 
>> the OUTER normal in all cases?
>> in other word, should the following code, which calculates the scalar 
>> product of the outer normal and the distance between the center of 
>> the cell and center of its the intersection with the
>> neighbouring cell always print out positive values? [Ok, of course 
>> one could construct some weird mapping from the reference elements to 
>> 3d such that this is not the case, but for the grid I'm looking
>> at the cells are approximately prisms].
>>
>> iend = gv.template end<0,Dune::Interior_Partition>()
>> for (Iterator it =gv.template 
>> begin<0,Dune::Interior_Partition>();it!=;++it) {
>>      Entity &en = *it;
>>      typename Entity::Geometry::GlobalCoordinate    centerEn = 
>> en.geometry().center();
>>      IntersectionIterator isend = gv.iend()
>>      for (IntersectionIterator is = gv.ibegin(en);is!=isend; ++is)
>>      {
>>          typename Entity::Geometry::GlobalCoordinate    normal = 
>> is.centerUnitOuterNormal();
>>          typename Entity::Geometry::GlobalCoordinate    centerIs = 
>> is.geometry().center();
>>          centerIs -= centerEn;
>>          std::cout << " Normal * (centerIs - centerEn)" << 
>> normal*centerIs << std::endl;
>>      }
>> }
>>
>> I found that I sometimes get negative values in a cell (and all it's 
>> children which share the same boundary).
>> In my case, I actually need the dot product between the outer normal 
>> and the distance between the cell and it's neighbours, and I can fix 
>> the problem by just adding an fabs(), but I was slightly
>> surprised by this behaviour which I did not see in ALUGrid.
>>
>> Thanks a lot,
>>
>> Eike
>>
>> _______________________________________________
>> Dune mailing list
>> Dune at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune
>
>
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune





More information about the Dune mailing list