Skip to content

Standalone scheme types - #1443

Open
ole-alb wants to merge 48 commits into
mainfrom
standalone-scheme-types
Open

ole-alb wants to merge 48 commits into
mainfrom
standalone-scheme-types

Conversation

@ole-alb

@ole-alb ole-alb commented Feb 28, 2025 •

Copy link
Copy Markdown
Contributor

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.scp to 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.

@ole-alb
ole-alb changed the base branch from main to standalone-scheme-faces February 28, 2025 10:44
Base automatically changed from standalone-scheme-faces to main March 20, 2025 16:56
@ole-alb
ole-alb marked this pull request as ready for review May 9, 2025 14:31

@Davknapp Davknapp left a comment

Copy link
Copy Markdown
Collaborator

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?

Comment thread src/t8_schemes/t8_standalone/t8_standalone_elements.hxx
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread test/t8_schemes/t8_gtest_element_count_leaves.cxx
Comment thread test/t8_schemes/t8_gtest_element_count_leaves.cxx Outdated
Comment thread test/t8_schemes/t8_gtest_element_count_leaves.cxx Outdated
Comment thread test/t8_schemes/t8_gtest_element_count_leaves.cxx
Comment thread test/t8_schemes/t8_gtest_element_count_leaves.cxx
@ole-alb

ole-alb commented May 21, 2025

Copy link
Copy Markdown
Contributor Author

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.

/* Get the cmesh */
const t8_cmesh_t cmesh = t8_forest_get_cmesh (forest);
#if T8_ENABLE_DEBUG
if (tree_class == T8_ECLASS_TET) {

Copy link
Copy Markdown
Collaborator

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?

Copy link
Copy Markdown
Contributor Author

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;

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
t8_eclass_t eclass = T8_ECLASS_PYRAMID;
const t8_eclass_t eclass = T8_ECLASS_PYRAMID;

@Davknapp Davknapp assigned ole-alb and unassigned Davknapp Jul 11, 2025
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
{
T8_ASSERT (element_is_valid (elem));

if constexpr (TEclass == T8_ECLASS_PYRAMID) {

Copy link
Copy Markdown
Collaborator

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?

Copy link
Copy Markdown
Contributor Author

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?

Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
Comment thread src/t8_schemes/t8_standalone/t8_standalone_implementation.hxx Outdated
@ole-alb ole-alb assigned Davknapp and unassigned ole-alb Aug 19, 2025
@codecov

codecov Bot commented Aug 19, 2025 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 97.00375% with 8 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.99%. Comparing base (eaa4af9) to head (7021775).
⚠️ Report is 6 commits behind head on main.

Files with missing lines Patch % Lines
...mes/t8_standalone/t8_standalone_implementation.hxx 96.89% 8 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1443      +/-   ##
==========================================
+ Coverage   82.76%   82.99%   +0.22%     
==========================================
  Files         139      139              
  Lines       21593    21808     +215     
==========================================
+ Hits        17872    18100     +228     
+ Misses       3721     3708      -13     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Standalone Scheme Types

3 participants