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.
Merge request reports
Activity
@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@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
@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.
@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.
added 1773 commits
-
70a4af85...21dc3e13 - 1772 commits from branch
master
- 7f46c845 - Merge branch 'master' into feature/anisotropic-p
-
70a4af85...21dc3e13 - 1772 commits from branch
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< 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 ...
added 143 commits
-
feb4cdcd...f94e6cc5 - 142 commits from branch
master
- 7a3ad6ea - Merge branch 'master' into feature/anisotropic-p
-
feb4cdcd...f94e6cc5 - 142 commits from branch
changed milestone to %v5.2.0
changed milestone to %v5.3.0