-
Notifications
You must be signed in to change notification settings - Fork 63
Standalone scheme types #1443
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
base: main
Are you sure you want to change the base?
Standalone scheme types #1443
Conversation
Davknapp
left a comment
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.
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?
|
|
||
| constexpr uint8_t T8_ELEMENT_NUM_EQUATIONS[T8_ECLASS_COUNT] = { 0, 0, 0, 1, 0, 3, 1, 2 }; | ||
|
|
||
| /**PARENT CHILD BIJECTION*/ |
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.
All of the following look up tables are basically undocumented. Please improve that.
| else { | ||
| compare_value *= 1 << t8_eclass_to_dimension[eclass]; | ||
| forest = t8_forest_new_adapt (forest, adapt_all, 0, 0, NULL); | ||
| t8_gloidx_t num_leaves = t8_forest_get_local_num_elements (forest); |
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.
| t8_gloidx_t num_leaves = t8_forest_get_local_num_elements (forest); | |
| const t8_gloidx_t num_leaves = t8_forest_get_local_num_elements (forest); |
| forest = t8_forest_new_adapt (forest, adapt_all, 0, 0, NULL); | ||
| t8_gloidx_t num_leaves = t8_forest_get_local_num_elements (forest); | ||
|
|
||
| compare_value = num_leaves; |
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.
| compare_value = num_leaves; |
To my understanding the if/else should not have an impact on the runtime as we use |
| /* Get the cmesh */ | ||
| const t8_cmesh_t cmesh = t8_forest_get_cmesh (forest); | ||
| #if T8_ENABLE_DEBUG | ||
| if (tree_class == T8_ECLASS_TET) { |
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.
Can we Assert for something fo rthe other tree_classes, too?
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.
I'm not sure if we need that
|
|
||
| const t8_scheme *scheme; | ||
| scheme = t8_scheme_new_default (); | ||
| t8_eclass_t eclass = T8_ECLASS_PYRAMID; |
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.
| t8_eclass_t eclass = T8_ECLASS_PYRAMID; | |
| const t8_eclass_t eclass = T8_ECLASS_PYRAMID; |
| { | ||
| T8_ASSERT (element_is_valid (elem)); | ||
|
|
||
| if constexpr (TEclass == T8_ECLASS_PYRAMID) { |
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.
Can we avoid these magic numbers?
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.
Maybe @lukasdreyer can help here?
Codecov Report❌ Patch coverage is
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 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
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
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):
Scripts and Wiki
script/find_all_source_files.scpto check the indentation of these files.License
doc/(or already has one)Tag Label