Skip to content
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

Composite boundaries #96

Merged
merged 10 commits into from
Jan 2, 2024
Merged

Composite boundaries #96

merged 10 commits into from
Jan 2, 2024

Conversation

Rohit-Kakodkar
Copy link
Collaborator

Description

Implements composite boundaries for corner elements. Composite boundaries are implemented as variadic templated class which call the underlying boundaries.

Implementation details

    template <typename... BC>
    class composite_boundary;

The templated types could be any of 2 or more boundary conditions. The methods for this class call the underlying BC implementation for enforcing the BCs.

Issue Number

If there is an issue created for these changes, link it here

Checklist

Please make sure to check developer documentation on specfem docs.

  • I ran the code through pre-commit to check style
  • My code passes all the integration tests
  • I have added sufficient unittests to test my changes
  • I have added/updated documentation for the changes I am proposing
  • I have updated CMakeLists to ensure my code builds
  • My code builds across all platforms

This commit implements composite boundary conditions for stacey-dirichlet type. Compile and run tests to see the failing tests.
This commit unifies rmass_inverse tests for elastic and acoustic domains inside within a single run program - similar to how displacement tests are done. This should make it easy to add more add more tests using test-config.yaml
- Composite BCs are implemented as a combition of multiple BCs
	- This type calls the underlying methods for the combining BCs
	  for example -
		composite_boundary<stacey, dirichlet>.method{stacey.method; dirichlet.method}
	- This should let define the BCs in a very modular way

- Code compiles and passes tests
- Composite BCs are of O(1) elements for 2D and O(N) for 3D. Hence, these kernels should be launched first in the queue, to utilize GPU parallelism
Extensive documentation for all the BCs that are implemented.
@Rohit-Kakodkar Rohit-Kakodkar merged commit 202a53e into code-along Jan 2, 2024
2 checks passed
@Rohit-Kakodkar Rohit-Kakodkar deleted the composite-boundaries branch November 12, 2024 18:27
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.

1 participant