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

Adjoint simulations #112

Merged
merged 202 commits into from
Oct 11, 2024
Merged

Adjoint simulations #112

merged 202 commits into from
Oct 11, 2024

Conversation

Rohit-Kakodkar
Copy link
Collaborator

Description

Full adjoint simulations capabilities (major changes)

  • Added adjoint simulation capabilites
  • Misfit kernel capabilites
  • Added SIMD capabilities
  • Added data containers / data access functions
  • Added policies
  • Added datatypes

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.

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

Rohit-Kakodkar and others added 30 commits January 18, 2024 12:39
Major changes going into this commit
	- The properties are broken down into individual structs for every material type
		- This should let us reference the material directly inside the kernels
	- Material structs are templated on material type and material property (isotropic, anisotropic)
	- Implemented point property method

Changes to the testing methods for properties
	- The properties views are now compacted by removing zero values where the property doesnt apply. This makes me update testing routine so binary read properties can be compacted before comparison
- Reimplemented sources
- Restructed compute sources routine
- Encapsulated algorithms
- Added fields within the compute namespace
	- This follows the idea that all simulation data should be owned by compute namespace
	- The operating kernels can have a reference to this data

- Advantages of new implementation
	- Lower memory footprint through compressed field storage
	- Lower RangePolicy kernel time since kernel will only iterate though non-zero nglobs
- Moved fortranio to IO namespace
- Compiling version of HDF5 wrapper
- Developed a singular interface for IO writers
- Wrappers for HDF5 library based on the interface
- Defined wavefield format - working implementation for HDF5 format
- HDF5 implementation takes in an operator template to configure IO to read/write
- Modified SPECFEM config file format to account for adjoint simulations
- Modifying the enum namespace
@Rohit-Kakodkar Rohit-Kakodkar merged commit 9ca7f27 into devel Oct 11, 2024
5 checks passed
@Rohit-Kakodkar Rohit-Kakodkar deleted the adjoint-simulations branch October 11, 2024 20:23
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