Skip to content

Feature multilevel - #1106

Closed
sandro-elsweijer wants to merge 7 commits into
mainfrom
feature-multilevel
Closed

Feature multilevel#1106
sandro-elsweijer wants to merge 7 commits into
mainfrom
feature-multilevel

Conversation

@sandro-elsweijer

@sandro-elsweijer sandro-elsweijer commented Jun 28, 2024

Copy link
Copy Markdown
Member

Describe your changes here:
Implements multilevel capabilities into t8code. Needs a major release.

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.

Licence

  • The author added a BSD statement to doc/ (or already has one)

@sandro-elsweijer sandro-elsweijer self-assigned this Jun 28, 2024
@sandro-elsweijer sandro-elsweijer added New feature Adds a new feature to the code draft labels Jun 28, 2024
Comment on lines +103 to +141
t8_dquad_successor (const p4est_quadrant_t *elem, p4est_quadrant_t *succ, const int level, const int multilevel)
{
T8_ASSERT (p4est_quadrant_is_extended (elem));
T8_ASSERT (0 <= elem->level && succ->level <= P4EST_QMAXLEVEL);
T8_ASSERT (0 <= level && level <= P4EST_QMAXLEVEL);
T8_ASSERT (elem->level <= level);
/* If level not reached, construct child */
if (elem->level < level) {
t8_dquad_child (elem, 0, succ);
}
else {
/* If level reached, construct sibling */
const int num_siblings = 4;
int child_id = p4est_quadrant_child_id (elem);
T8_ASSERT (0 <= child_id && child_id < num_siblings);
if (child_id < num_siblings - 1) {
t8_dquad_sibling (elem, child_id + 1, succ);
}
else {
/* elem is last sibling, go up until elem is not last sibling */
t8_dquad_parent (elem, succ);
child_id = p4est_quadrant_child_id (succ);
T8_ASSERT (0 <= child_id && child_id < num_siblings);
while (child_id == num_siblings - 1) {
t8_dquad_parent (succ, succ);
child_id = p4est_quadrant_child_id (succ);
T8_ASSERT (0 <= child_id && child_id < num_siblings);
}
/* Construct next sibling */
t8_dquad_sibling (succ, child_id + 1, succ);
}
}
if (!multilevel) {
/* If not multilevel, traverse down the tree */
while (succ->level < level) {
t8_dquad_child (succ, 0, succ);
}
}
}

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 function can also be implemented in default_common, as no actual element attributes need to be accessed here directly. You can replace elem->level by t8_element_level(elem) and all t8_dquad_*
calls by their respective t8_element_* and this functionality could be available directly for all element types

@sandro-elsweijer

Copy link
Copy Markdown
Member Author

Will be continued here: #1342

@sandro-elsweijer
sandro-elsweijer deleted the feature-multilevel branch April 22, 2025 08:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

New feature Adds a new feature to the code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants