Skip to content
Snippets Groups Projects

WIP: (feature) add anisotropic meshing to LearnerND

Open Jorn Hoofwijk requested to merge 74--add-anisotropicity-to-learnerND into master

Closes #74

Depends on !86 (merged) and #80 and therefore it has the corresponding branches included as well

Still has a few to-do's:

  • let LearnerND.ip() make use of our triangulation rather than building a new one
  • make it work in arbitrary dimensions
  • verify that it is beneficial
  • let the user configure the parameters (maximum stretch factor and number of points to take into account) Use one simplex and it's neighbours
  • make test pass
    • add rtree as install requirement No more RTree anymore :)
    • raise exception if anistropic=True and rtree not installed, pass if anisotropic=False
  • refactor code to be human-readable
  • let's make it fast :) #80

As it seems it doesn't work that well with the ring, since this ring has a relative low average gradient and very high second derivative. So maybe this second derivative might be a more useful property to determine the

Sneak peek: anisotropic

Edited by Jorn Hoofwijk

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • In my trial runs the triangulation stays isotropic in the ring, regardless of the resolution. It doesn't look like this is working as expected.

  • Anton Akhmerov
  • Anton Akhmerov
  • Anton Akhmerov changed the description

    changed the description

  • In hindsight, I do have a hard time to produce an example where the anisotropic learner does not produce good results.

  • Jorn Hoofwijk added 2 commits

    added 2 commits

    • 97104309 - out-comment the maximum shape factor of two
    • 1df1216a - remove dependence on RTree

    Compare with previous version

  • Jorn Hoofwijk resolved all discussions

    resolved all discussions

  • Jorn Hoofwijk changed the description

    changed the description

  • Jorn Hoofwijk marked the checklist item make test pass as completed

    marked the checklist item make test pass as completed

  • let LearnerND.ip() make use of our triangulation rather than building a new one

    This point is going to be a lot harder than I thought. Scipy does not support this and I couldn't find a lib that does. Also when I would just use Triangulation.locate_point(p) it would be an O(N) operation per requested point.

  • For plotting you could consider this approach:

    • precompute an array of values at each pixel
    • loop over all triangles, updating every pixel belonging to a triangle.

    Otherwise you'd need an rtree and searching over point's neighbors.

  • actually, @basnijholt pointed out yesterday that I was mistaken and that scipy does allow you to provide a triangulation to the linearNDinterpolator. However, I am not completely sure as to what methods must be implemented on the provided triangulation. Depending on what it is, we can either do it efficiently or it may be pretty inefficient.

  • Jorn Hoofwijk added 133 commits

    added 133 commits

    • 1df1216a...bc5de332 - 131 commits from branch master
    • 2439803c - Merge branch 'master' into 74--add-anisotropicity-to-learnerND
    • 672247c3 - enable plotting of custom triangulations

    Compare with previous version

  • Jorn Hoofwijk marked the checklist item let LearnerND.ip() make use of our triangulation rather than building a new one as completed

    marked the checklist item let LearnerND.ip() make use of our triangulation rather than building a new one as completed

  • Jorn Hoofwijk changed the description

    changed the description

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading