Standalone scheme types
Describe your changes here: Closes #1574
Add support for the remaining eclasses (tri, tet, prism & pyramid) to the standalone scheme.
All these boxes must be checked by the reviewers before merging the pull request:
As a reviewer please read through all the code lines and make sure that the code is fully understood, bug free, well-documented and well-structured.
General
-
[ ] The reviewer executed the new code features at least once and checked the results manually
-
[ ] The code follows the t8code coding guidelines
-
[ ] New source/header files are properly added to the Makefiles
-
[ ] The code is well documented
-
[ ] All function declarations, structs/classes and their members have a proper doxygen documentation
-
[ ] All new algorithms and data structures are sufficiently optimal in terms of memory and runtime (If this should be merged, but there is still potential for optimization, create a new issue)
Tests
- [ ] The code is covered in an existing or new test case using Google Test
Github action
-
[ ] The code compiles without warning in debugging and release mode, with and without MPI (this should be executed automatically in a github action)
-
[ ] All tests pass (in various configurations, this should be executed automatically in a github action)
If the Pull request introduces code that is not covered by the github action (for example coupling with a new library):
- [ ] Should this use case be added to the github action?
- [ ] If not, does the specific use case compile and all tests pass (check manually)
Scripts and Wiki
- [ ] If a new directory with source-files is added, it must be covered by the
script/find_all_source_files.scpto check the indentation of these files. - [ ] If this PR introduces a new feature, it must be covered in an example/tutorial and a Wiki article.
License
- [ ] The author added a BSD statement to
doc/(or already has one)
Tag Label
- [ ] The author added the patch/minor/major label in accordance to semantic versioning.
This is a first batch of review comments.
A general comment / question: A lot of functions have an if/else block with if(!T8_ELEMENT_NUM_EQUATIONS) or if(T8_ELEMENT_NUM_EQUATIONS) to implement line/quad/hex specific stuff.
Wouldn't it be faster to provide the LUT for these eclasses, too? We could avoid if/else blocks slowing down the computation. Or does the compiler optimize it out?
To my understanding the if/else should not have an impact on the runtime as we use if constexpr and as you suggested the compiler optimizes it out.
Codecov Report
:x: Patch coverage is 95.48872% with 12 lines in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 76.15%. Comparing base (8d06ad1) to head (1aff0a3).
| Files with missing lines | Patch % | Lines |
|---|---|---|
| ...mes/t8_standalone/t8_standalone_implementation.hxx | 95.33% | 12 Missing :warning: |
Additional details and impacted files
@@ Coverage Diff @@
## main #1443 +/- ##
==========================================
+ Coverage 75.86% 76.15% +0.28%
==========================================
Files 103 103
Lines 19200 19423 +223
==========================================
+ Hits 14566 14791 +225
+ Misses 4634 4632 -2
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.