-
Notifications
You must be signed in to change notification settings - Fork 52
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
Feature: C-API for Geometry Analytic #892
Conversation
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.
The changes look good and the example works fine 👍
src/t8_geometry/t8_geometry_implementations/t8_geometry_analytic.h
Outdated
Show resolved
Hide resolved
…ic.h Co-authored-by: Jakob Fußbroich <71825121+jfussbro@users.noreply.github.com>
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.
One last small change :)
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.
Why move all the functions from the hxx header to the new h header? All the other geometries just provide a new
and destroy
function in their c interface. I think we should keep everything in the hxx header, since we want to move to cpp anyway.
@sandro-elsweijer |
@jmark I understand your problem here. But it bugs me, that the cpp interface would be removed even though we want to have an explicit cpp interface. Maybe we can discuss defining these functions twice in the next developer meeting |
If you want a real C++ API for this then I suggest to offer a geometry analytic base class from which you derive and implement the analytical evaluate and Jacobian member functions. The actual evaluate and Jacobian function (wrapping around the analytical callbacks) should be finalized in the analytical geometry base class, of course. BTW: The C++ interface is not removed. The |
@jmark Then let's keep this in mind for our cpp interface t8code week. Do you mind writing an issue for that so that we do not forget it? |
Done. #904 @jfussbro @sandro-elsweijer Anything else to do? |
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.
Approved! :)
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.
Just minor comments
src/t8_geometry/t8_geometry_implementations/t8_geometry_analytic.cxx
Outdated
Show resolved
Hide resolved
src/t8_geometry/t8_geometry_implementations/t8_geometry_analytic.h
Outdated
Show resolved
Hide resolved
Thank you very much! Refactored as you suggested. |
Describe your changes here:
Also added an 11th example to geometry examples to test the C API.
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.scp
to check the indentation of these files.Licence
doc/
(or already has one)