Skip to content
Snippets Groups Projects

WIP: Add anisotropy to the p-adaptive driver

Anisotropy is added to the p-adaptive driver. This is done by applying the same logic in each direction one by one rather than simultaneously.

Edited by Julian Marcon

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
  • Author Contributor

    @dmoxey, this is still very much WIP but the base logic is there, I think. I still need to add the logic for the per-direction order restriction in tris and tets and then I can actually try and see if it works. Does this so far at least make sense to you?

    Edited by Julian Marcon
  • Julian Marcon marked as a Work In Progress

    marked as a Work In Progress

  • Julian Marcon changed title from Add anisotropy in the p-adaptive driver to WIP: Add anisotropy to the p-adaptive driver

    changed title from Add anisotropy in the p-adaptive driver to WIP: Add anisotropy to the p-adaptive driver

109 109 m_session->LoadParameter ("AdaptiveSensorVariable", sensorVar, 0);
110 110 m_session->MatchSolverInfo("Homogeneous", "1D", isHomogeneous1D, false);
111 111
112 bool iso = false;
    • Author Contributor

      @dmoxey, I went back to the code today to try to implement the tri/tet re-orienting. I have no idea where to start though. Any tip?

    • I guess the steps for a very unoptimal but working version would be something like:

      • determine which triangles would need to be flipped
      • recreate the triangle's geometry object by flipping edges 1<->2 and update the meshgraph
      • recreate the ExpList so that you rebuild all the mappings and suchlike
      • copy data back again for unaffected elements and interpolate for the affected
    • Author Contributor

      Thanks, I'll give that a try when I find some free time.

    • Author Contributor

      Ok I think I've managed to code points 1 and 2. I think points 3 and 4 were already there. I'll test this when I get the chance.

    • Please register or sign in to reply
  • Julian Marcon added 3 commits

    added 3 commits

    • 701c0af6 - Check max P for each direction separately
    • a9f34eed - Make list of triangles to invert
    • ac50a030 - Only for triangles!

    Compare with previous version

  • Julian Marcon added 1 commit

    added 1 commit

    Compare with previous version

  • Author Contributor

    @dmoxey, I really want to get back to this at some point. Looking back at it (and our messages), I think I had most of it coded, just hadn't had the chance to test it yet. We could probably get a paper out of this fairly quickly.

  • closed

  • reopened

  • Author Contributor

    @Z.Yan: it seems you've mistakenly closed this MR. I haven't worked on it in ages but am planning to get back to it eventually.

  • Julian Marcon added 1773 commits

    added 1773 commits

    Compare with previous version

  • Author Contributor

    Big update; seems to have gone smoothly. Will work on coding this up soon.

  • Julian Marcon added 1 commit

    added 1 commit

    Compare with previous version

  • Author Contributor

    At least the quads (and I suppose the hexes too) are working. Inkedanisotropy_LI

  • 184 MemoryManager<StdRegions::StdTriExp>::AllocateSharedPtr(
    185 Ba, Bb);
    203 LibUtilities::BasisKey Ba0(LibUtilities::eOrtho_A, P[0],
    204 ptsKey[0]);
    205 LibUtilities::BasisKey Bb0(LibUtilities::eOrtho_B, P[1],
    206 ptsKey[1]);
    207 if (iso)
    208 {
    209 OrthoExp[0] = MemoryManager<
    210 StdRegions::StdTriExp>::AllocateSharedPtr(Ba, Bb);
    211 }
    212 else
    213 {
    214 OrthoExp[0] = MemoryManager<
    215 StdRegions::StdTriExp>::AllocateSharedPtr(Ba, Bb0);
    216 OrthoExp[1] = MemoryManager<
    • Author Contributor

      Hi @dmoxey: I finally came around to testing what I coded. Unfortunately, it doesn't even get to the adaptation part because it fails in the sensor calculation, more specifically here, and I get order in 'a' direction is higher than order in 'b' direction. I coded something to avoid this in the adaptation part by rotating triangles, but I had not thought about the problem of evaluating the sensor. Any thoughts? My only idea is to rotate the triangle around and test the working direction for each of the 3 rotations but I wonder if there is a cleaner way ...

    • Please register or sign in to reply
  • Julian Marcon added 143 commits

    added 143 commits

    Compare with previous version

  • Spencer Sherwin changed milestone to %v5.2.0

    changed milestone to %v5.2.0

  • Chris Cantwell changed milestone to %v5.3.0

    changed milestone to %v5.3.0

  • I think for now this is unlikely to progress much further: I will therefore close this for now, and push up the branch to the archive/nektar repository in case we have chance to develop this further in the future.

  • closed

  • Please register or sign in to reply
    Loading