<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hi.<br>
      I think all your problems boil down to the last one: implementing
      the method local.<br>
      If you have local then a point is a global point x is within an
      element if local(x) is within the<br>
      reference element. That is what we use for the hoerarchicSearch
      class (a utility class in<br>
      dune grid which should then be directly useable for your second
      point).<br>
      I don't think I understand your first problem since you are still
      using the same reference element, right?<br>
      So a condition for a point being inside the reference element has
      nothing to do with your global mapping,<br>
      be it straight faced or not.<br>
      Best<br>
      Andreas<br>
      <br>
      On 28/07/14 16:55, Aleksejs Fomins wrote:<br>
    </div>
    <blockquote cite="mid:53D67266.1060201@lspr.ch" type="cite">
      <pre wrap="">Dear Dune,

I am currently implementing curvilinear tetrahedral grid for dune.

The following functionality will be required:

1) dune/geometry/genericreferenceelements.hh has function isinside()
which checks whether the point is inside of the tetrahedron. This
functionality will not be valid for curvilinear tetrahedrons.

Where should I implement the new functionality? Should I directly edit
the genericreferenceelements.hh or should I define a new method inside
my new version of multilineargeometry.hh, or sth else?

Where is this functionality used?

Also, if you have suggestions on how to mathematically check this,
please advise me. I have a conjecture that the point is inside if it is
on the correct side of each face, and it is on the correct side of the
face if det(d, v1, v2) has the right sign, where d is the distance
vector between this point and the closest point on the surface, and v1
and v2 are the surface tangential unit vectors given by the parametric
coordinates.

2) We personally would really need the functionality of finding the
tetrahedron to which a given global coordinate belongs. Extending this
to curvilinear is trivial - first find the element to which it would
have belonged to if the tetrahedrons were straight-sided, then check
whether it is actually inside this tetrahedron or one of its neighbors
using the isinside() method.

Is this (straight-sided) functionality already implemented in dune
somewhere? Is it efficient? I mean, whether it loops over all elements
and checks isinside(), or whether it uses something more sophisticated
like octrees.

3) Another mathematics-related question. To map from local to global
coordinates within an element I simply evaluate the linear combination
of lagrange polynomials.

How do I map from global to local?

The best thing that comes to my mind is to write an iterative
optimization algorithm minimizing the distance between given local
coordinate and the expected one. It will have to be random like MCMC
because the problem will have local minima. Please comment if you have
good ideas :)

Thank you,
Aleksejs

</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Dune mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Dune@dune-project.org">Dune@dune-project.org</a>
<a class="moz-txt-link-freetext" href="http://lists.dune-project.org/mailman/listinfo/dune">http://lists.dune-project.org/mailman/listinfo/dune</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>