Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2196 +/- ##
=======================================
Coverage 78.30% 78.30%
=======================================
Files 114 114
Lines 19117 19117
=======================================
Hits 14969 14969
Misses 4148 4148 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| @@ -0,0 +1,121 @@ | |||
| #include <fstream> | |||
There was a problem hiding this comment.
Please include the license statement and file documentation
| #include <fstream> | ||
| #include <iostream> | ||
| #include <string> | ||
| #include <algorithm> | ||
| #include <t8_cmesh/t8_cmesh.h> | ||
| #include <t8_cmesh/t8_cmesh.hxx> | ||
| #include <t8_cmesh/t8_cmesh_vertex_connectivity/t8_cmesh_vertex_connectivity.hxx> | ||
| #include <t8_cmesh/t8_cmesh_mesh_deformation/t8_cmesh_mesh_deformation.hxx> | ||
| #include <t8_schemes/t8_default/t8_default.hxx> | ||
| #include <t8_cmesh/t8_cmesh_io/t8_cmesh_readmshfile.h> | ||
| #include <t8_cad/t8_cad_handle.hxx> | ||
| #include <t8_vtk/t8_vtk_writer.h> | ||
| #include <vector> | ||
| #include <array> | ||
| #include <mpi.h> | ||
| #include <unordered_set> | ||
| #include <sc_options.h> |
There was a problem hiding this comment.
Do you really need all those includes?
Can you also split them between t8code and std includes?
| SC_CHECK_MPI (mpiret); | ||
|
|
||
| /* Initialize the sc library, has to happen before we initialize t8code. */ | ||
| sc_init (sc_MPI_COMM_WORLD, 1, 1, NULL, SC_LP_PRODUCTION); |
There was a problem hiding this comment.
| sc_init (sc_MPI_COMM_WORLD, 1, 1, NULL, SC_LP_PRODUCTION); | |
| sc_init (sc_MPI_COMM_WORLD, 1, 1, NULL, SC_LP_ESSENTIAL); |
| /** Update the CAD manager with a new one. | ||
| * \param[in] new_cad_handle The new CAD handle to be used. | ||
| */ |
There was a problem hiding this comment.
| /** Update the CAD manager with a new one. | |
| * \param[in] new_cad_handle The new CAD handle to be used. | |
| */ | |
| /** Update the CAD handle with a new one. | |
| * \param[in] new_cad_handle The new CAD handle to be used. | |
| */ |
src/CMakeLists.txt
Outdated
| t8_forest/t8_forest_partition_for_coarsening.cxx | ||
| t8_forest/t8_forest_pfc_helper.cxx | ||
| t8_forest/t8_forest.cxx | ||
| t8_forest/t8_forest.cxx |
There was a problem hiding this comment.
| t8_forest/t8_forest.cxx | |
| t8_forest/t8_forest.cxx |
| /* Moving plane loop */ | ||
| while (adapt_data.t < steps) { | ||
| /* Adapt and balance the forest. | ||
| /* Adapt and balance the forest. |
There was a problem hiding this comment.
| /* Adapt and balance the forest. | |
| /* Adapt and balance the forest. |
| #include <t8_geometry/t8_geometry_implementations/t8_geometry_cad.hxx> /* Curved geometry calculation of trees */ | ||
| #include <t8_cmesh/t8_cmesh_mesh_deformation/t8_cmesh_mesh_deformation.hxx> /* Mesh deformation struct */ | ||
| #include <t8_cad/t8_cad_handle.hxx> /* CAD data structure */ |
There was a problem hiding this comment.
| #include <t8_geometry/t8_geometry_implementations/t8_geometry_cad.hxx> /* Curved geometry calculation of trees */ | |
| #include <t8_cmesh/t8_cmesh_mesh_deformation/t8_cmesh_mesh_deformation.hxx> /* Mesh deformation struct */ | |
| #include <t8_cad/t8_cad_handle.hxx> /* CAD data structure */ | |
| #include <t8_geometry/t8_geometry_implementations/t8_geometry_cad.hxx> /* Curved geometry calculation of trees */ |
| @@ -0,0 +1,156 @@ | |||
|
|
|||
| sc_options_destroy (opt); | ||
|
|
||
| #else | ||
| t8_global_productionf ("\n\t ERROR: This example requires OpenCASCADE support to be enabled in t8code.\n\n"); |
There was a problem hiding this comment.
| t8_global_productionf ("\n\t ERROR: This example requires OpenCASCADE support to be enabled in t8code.\n\n"); | |
| t8_global_errorf ("ERROR: This example requires OpenCASCADE support to be enabled in t8code.\n"); |
| /* Cleanup. */ | ||
| t8_forest_unref (&forest); | ||
|
|
||
| std::cout << "Mesh deformation completed." << std::endl; |
There was a problem hiding this comment.
| std::cout << "Mesh deformation completed." << std::endl; | |
| t8_global_productionf ("Mesh deformation completed."); |
| /* The usage string or help message was truncated */ | ||
| /* Note: gcc >= 7.1 prints a warning if we | ||
| * do not check the return value of snprintf. */ | ||
| t8_debugf ("Warning: Truncated usage string and help message to '%s' and '%s'\n", usage, help); |
There was a problem hiding this comment.
| t8_debugf ("Warning: Truncated usage string and help message to '%s' and '%s'\n", usage, help); | |
| t8_debugf ("WARNING: Truncated usage string and help message to '%s' and '%s'\n", usage, help); |
| /* Initialize t8code with log level SC_LP_ESSENTIAL. See sc.h for more info on the log levels. */ | ||
| t8_init (SC_LP_ESSENTIAL); | ||
|
|
||
| #ifdef T8CODE_ENABLE_OCC |
There was a problem hiding this comment.
| #ifdef T8CODE_ENABLE_OCC | |
| #if T8CODE_ENABLE_OCC |
| int dim = 0; | ||
| int level = 2; |
There was a problem hiding this comment.
The default values are assigned by the options
| int dim = 0; | |
| int level = 2; | |
| int dim, level; |
| #if T8CODE_ENABLE_OCC | ||
| #include <t8_cad/t8_cad_handle.hxx> | ||
| #include <t8_cmesh/t8_cmesh_mesh_deformation/t8_cmesh_mesh_deformation.hxx> | ||
| #endif |
There was a problem hiding this comment.
| #endif | |
| #endif /* T8CODE_ENABLE_OCC */ |
| mpiret = sc_MPI_Finalize (); | ||
| SC_CHECK_MPI (mpiret); | ||
|
|
||
| #else |
There was a problem hiding this comment.
| #else | |
| #else /* !T8CODE_ENABLE_OCC */ |
|
|
||
| #else | ||
| t8_global_errorf ("ERROR: This example requires OpenCASCADE support to be enabled in t8code.\n\n"); | ||
| #endif |
There was a problem hiding this comment.
| #endif | |
| #endif /* T8CODE_ENABLE_OCC */ |
| SC_CHECK_MPI (mpiret); | ||
|
|
||
| #else | ||
| t8_global_errorf ("ERROR: This example requires OpenCASCADE support to be enabled in t8code.\n\n"); |
There was a problem hiding this comment.
| t8_global_errorf ("ERROR: This example requires OpenCASCADE support to be enabled in t8code.\n\n"); | |
| t8_global_errorf ("ERROR: This example requires OpenCASCADE support to be enabled in t8code.\n"); |
| #if T8_ENABLE_DEBUG | ||
| /* Iterate over all trees and compare to the reference tree. */ | ||
| for (const auto &[tree_id, local_corner_index] : tree_list) { | ||
|
|
||
| const int *geom_attribute = static_cast<const int *> ( | ||
| t8_cmesh_get_attribute (associated_cmesh, t8_get_package_id (), T8_CMESH_NODE_GEOMETRY_ATTRIBUTE_KEY, tree_id)); | ||
|
|
||
| const int entity_dim = geom_attribute[2 * local_corner_index]; | ||
| const int entity_tag = geom_attribute[2 * local_corner_index + 1]; | ||
|
|
||
| /* Check if the attribute of the vertex is the same in all trees. */ | ||
| if (!(entity_dim == first_tree_entity_dim && entity_tag == first_tree_entity_tag)) { | ||
| t8_errorf ( | ||
| "Error: Inconsistent entity info for global vertex %li: tree %d: dim=%d tag=%d, expected dim=%d tag=%d\n", | ||
| global_vertex_id, tree_id, entity_dim, entity_tag, first_tree_entity_dim, first_tree_entity_tag); | ||
| SC_ABORTF ("Inconsistency in vertex info.\n"); | ||
| } | ||
| } | ||
| #endif /*T8_ENABLE_DEBUG */ |
There was a problem hiding this comment.
Can you add a comment at the start explaining what this check does?
Closes #2197
Describe your changes here:
Added mesh deformation support using the new t8_cmesh_mesh_deformation files. This allows moving mesh vertices to new positions defined by a CAD geometry.
The calculation is currently done by focusing on surface vertices and comparing their current locations with the target CAD shape. The displacement for internal vertices is not yet included. A new example, t8_cmesh_mesh_deformation_example.cxx, was added to show how the deformation works.
All these boxes must be checked by the AUTHOR before requesting review:
Documentation:,Bugfix:,Feature:,Improvement:orOther:.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
Tests
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).