← Back to team overview

dolfin team mailing list archive

Re: [Question #101686]: cell.intersects() functionality in 0.9.7? (i.e. GTS dependencies)

 


Andre Massing wrote:
> Question #101686 on DOLFIN changed:
> https://answers.launchpad.net/dolfin/+question/101686
> 
>     Status: Open => Answered
> 
> Andre Massing proposed the following answer:
> On Friday 19. February 2010 18.33.47 marc spiegelman wrote:
>  > New question #101686 on DOLFIN:
>  > https://answers.launchpad.net/dolfin/+question/101686
>  >
>  > Hi All,
>  >    I've implemented a rather nifty semi-lagrangian advection scheme in
>  >  dolfin that requires rapid checking to see if a point intersects a
>  >  cell
>  >  (without necessarily firing up the full intersection operator).  Pre 
>  >  0.9.7
>  >  this was implemented as cell.intersects(point).
>  >
>  > Everything works fine in 0.9.6   with the new CGAL intersection
>  > operator
>  > replacing the GTS intersection operator (with about a 20% speedup).
> 
> Did you only use the intersection between meshentities and points or did 
> you
> use also the new mesh intersection operator? Just curious, because the 
> former
> code for intersection between points og e.g. triangles did not change.
> 
>  >  However, in 0.9.7 the code breaks because  cell.intersects() has been
>  >  removed as a GTS dependency (actually, looking at
>  >  TriangleCell.intersects(point), it looks like it simply reproduces
>  >  GTS
>  >  code but wasn't actually dependent on GTS)
> 
> Yep that's true, the intersection functions was removed and there is a new
> PrimitiveIntersector class in C++ with two static functions. These computes
> the intersection between rather arbitrary mesh entities (exact or only 
> using
> doubling precision). The functions are exposed as do_intersect and
> do_intersect_exact in the python interface. But you are right, a point -
> meshentity intersection is not provided. I attached a patch against the 
> recent
> 0.9.7 release. Could you can apply to you sources and see whether it 
> works for
> you?
>

Andre: Did you forget to attach it?

>  >
>  > The question is... is there is any equivalent functionality in CGAL 
> and is
>  > anyone interested in implementing it (either as cell.intersects(??)
>  > or some other interface).  The functionality should be straightforward
>  > (and I'd be surprised if it didn't exist), given a *known cell* and a
>  >  point, does the cell intersect the point.  This would be useful for
>  >  particle based methods as well.
>  >
>  > On a related note...are there any plans for a parallel implementation 
>  > of Function::eval(Array<double>& values, const Array<double>& x) by
>  > release 1.0?

I've just pushed a change for this, although it won't work for
off-process points.

Garth

>  >
>  > All assistance greatly appreciated
> 
> Any feedback as well :)
> 
>  > marc
>  >
> 





Follow ups

References