-
Notifications
You must be signed in to change notification settings - Fork 114
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement AMR with p4est #618
Conversation
Codecov Report
@@ Coverage Diff @@
## dev #618 +/- ##
==========================================
- Coverage 93.46% 93.26% -0.20%
==========================================
Files 138 154 +16
Lines 13998 15310 +1312
==========================================
+ Hits 13083 14279 +1196
- Misses 915 1031 +116
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
8757a43
to
1579c17
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot for working on this! I had a first look at this nice PR and it looks already quite good to me 👍 Please find below some comments/questions. I will look into the performance problems later.
#627 (performance of AMR with p4est) shouldn't block this. "Make it work, then make it fast". You did the first part, I can do the second one in another PR later. This one is already quite large and self-contained. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! LGTM and can be merged (moving the discussion on a keyword constructor somewhere else).
Co-authored-by: Hendrik Ranocha <[email protected]>
Co-authored-by: Hendrik Ranocha <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great stuff! I have a few question, but nothing that seems to be a show stopper! Thanks a lot for the good work and the reviews by @ranocha!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
* Implement P4estMesh with periodic boundaries in 2D (#578) * Add P4estMesh and implement unstructured calc_interface_flux! * Comment indexfunction_reduced * Save cell geometry in interpolation nodes instead of a mapping function * Use P4est to compute node coordinates * Extract interface information from p4est * Make indexfunction_surface type stable * Downgrade P4est_jll to 2.2 * Add P4est_jll as dependency * Update Project.toml * Update Project.toml * Fix node_coordinates interpolation * Add kwarg initial_refinement_level * Add documentation of P4estMesh * Remove trees_per_dimension to make P4estMesh truly unstructured * Add proper show function * Remove P4est_jll from dependencies * Improve comments * Destroy p4est data structures on exit * Add test case for P4estMesh * Implement suggestions * Implement suggestions * Revise constructor of P4estMesh to use kwargs * Improve performance of indices2direction * Fix mesh polydegs and stepsize for non-constant speeds * Implement suggestions * Implement save/restart with P4estMesh (#596) * Replace @timeit_debug with @timed * Implement save/restart for P4estMesh * Return node_coordinates * Change parameter basis to nodes to reuse function in Trixi2Vtk * Add Trixi2Vtk dev tips to docs * Fix docs * Update docs/src/visualization.md Co-authored-by: Michael Schlottke-Lakemper <[email protected]> * Update src/mesh/mesh_io.jl Co-authored-by: Michael Schlottke-Lakemper <[email protected]> * Implement suggestions Co-authored-by: Michael Schlottke-Lakemper <[email protected]> * Implement non-periodic boundaries with P4estMesh (#598) * Replace @timeit_debug with @timed * Extract orientation from face info * Reuse code from UnstructuredQuadMesh to implement non-periodic boundaries * Fix save/restart * Add nonperiodic example * Add assertion * Remove periodicity from P4estMesh * Fix loading meshes from different paths * Add constructor to build P4estMeshes from ABAQUS files * Allow initial_refinement_level > 1 * Add mapping as additional parameter to P4estMesh from file * Rename calc_node_coordinates! to avoid ambiguity * Add curved p4est Euler FSP example * Add documentation to new constructor * Check BCs for integrity * Add EOC test for non-periodic Euler on unstructured mesh * Implement suggestions * Implement suggestions * Fix tests * Implement suggestions * Fix spacing * Update P4est [compat] version to pass Windows/macOS tests (#619) * Add support for static non-conforming P4estMeshes (no AMR) (#621) * Prepare data structures for non-conforming meshes * Implement prolong2mortars * Implement mortar flux (not working yet) * Fix mortar flux calculation * Use global number of quadrants * Include tests for P4estMesh * Implement suggestions * Add test for non-conforming P4estMesh * Use Downloads.download * Implement suggestions * Fix tests * Fix CI tests on macOS * Implement AMR with p4est (#618) * Implement AMR with p4est (needs debugging) * Fix TreeMesh AMR * Fix print_amr_information * Fix refinement * Fix CurvedMesh * Fix AMR with p4est * Add general print_amr_information for non-AMR meshes * Fix boundary conditions with AMR * Fix AMR on unstructured meshes * Add tests for AMR with p4est * Use Downloads: download * Improve performance of P4estMesh * Prepare PR * Fix 2279806 * Remove some allocations from count_required functions * Remove more allocations * Implement suggestions * Implement more suggestions * Fix polydeg in show(P4estMesh) * Destroy p4est data structures in inner constructor * Update examples/2d/elixir_advection_amr_p4est_unstructured_flag.jl Co-authored-by: Hendrik Ranocha <[email protected]> * Update examples/2d/elixir_advection_p4est_non_conforming_flag.jl Co-authored-by: Hendrik Ranocha <[email protected]> * Make AMR controllers independent of the mesh * Implement suggestions * Fix e71913f * Implement suggestions * Fix 6a6a183 Co-authored-by: Hendrik Ranocha <[email protected]> * Add test with different geometry and solver polydeg (#634) * Increase coverage with `P4estMesh` (#635) * Add test for non-periodic structured P4estMesh * Add Euler gravity test with P4estMesh * Remove nboundaries(UnstructuredQuadSortedBoundaryTypes) * Move p4est Euler gravity tests to other p4est tests * Add news entry for P4estMesh * Fix a85c087 (#636) Co-authored-by: Erik Faulhaber <[email protected]> Co-authored-by: Hendrik Ranocha <[email protected]> Co-authored-by: Hendrik Ranocha <[email protected]>
Sixth point of #584.
AMR now works as usual by replacing
TreeMesh
withP4estMesh
, and it produces pretty much the same results.Additionally, it works with unstructured and curved meshes.
Convergence analysis with
elixir_advection_amr_solution_independent
(polydeg=3
):