-
Notifications
You must be signed in to change notification settings - Fork 109
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 non-periodic boundaries with P4estMesh #598
Conversation
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 work! I have some questions and remarks, but I can't see any major obstacles. It would be great to also get a look at this from @ranocha if possible.
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! This looks already quite good to me 👍
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, nicely done @efaulhaber ! I agree that at some point we need to reorganize parts of the curved/unstructured solvers into dg_common.jl
. You mention the weak volume integral, but the split form volume integral could go there as well. Also, based on your prolong to boundaries I think I could redo the unstructured boundary container and try to unify the way the boundary fluxes are computed.
* 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]>
Fourth point of #584. I added non-periodic boundary conditions. I can read uncurved, unstructured, conforming Abaqus mesh files now, and I can map the mesh to some curved domain, so I can create unstructured, curved meshes.
Thanks, @andrewwinters5000, for implementing the unstructured boundary stuff. I could reuse most of it, and I added a check to make sure that the BC
Dict
doesn't contain too few or too many keys.