-
Notifications
You must be signed in to change notification settings - Fork 53
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
Develop update #642
Merged
Merged
Develop update #642
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…t it in the project root
… parameters were already reported as Warnings
cast vector size immediately to `unsigned int` which is the type needed for the launch configuration. There is still an additional conversion to CUDAs `dim3` vector-type, but its initializer uses `unsigned int`.
This improves readability of the function signature of the constructor. The long term goal is modularizing the Hamiltonian in terms of all of the energy contributions in order to reuse parts for the spin-lattice Hamiltonian.
this structure is commonly used in the Hamiltonian classes to describe the different energy contributions. I gave it a name to make these occurrences more readable.
combine the implementations in `engine/Hamiltonian_Heisenberg.cpp` and `engine/Hamiltonian_Heisenberg.cu` into one, avoiding the code duplication that was present before. This commit should not change any existing behaviour.
The `Hamiltonian_Heisenberg.cpp` file needs to know about the CUDA kernels through a CUDA header. I overlooked that the doubling of pairs also applies to the CUDA build, not just to the OpenMP build.
…test_solvers to the end, because it takes the longest
The step is needed to prepare for modularity. The new interaction files should all be created inside the `engine/interaction` subdirectory.
Lift the splitting of the Hamiltonian class into a `Hamiltonian_Heisenberg` and a `Hamiltonian_Gaussian` in favor of a unified `Hamiltonian` class. The `Gaussian` part will be reintroduced as an Interaction class that is stored inside the new `Hamiltonian` class if needed. The code for this implementation is already present, but the `Gaussian` functionality is neutered in this commit.
Introduces the data structure for storing interactions. It is of type: `std::vector<std::unique_ptr<Engine::Interaction::ABC>>` This vector marks the `Hamiltonian` as the owner of the interactions and necessitates the creation of constructors according to the rule of five. For setting and getting the interactions a set of templated member functions is used which can also be used at run time given the name of the interaction. The Gaussian interaction is not usable with this commit.
Reintroduces the effects of `Interaction::Gaussian` on the Hamiltonian. The current mechanism isn't yet optimal, but designed to interoperate with the old one. Later on the lookups should be replaced by loops and the shape of `energy_contributions_per_spin` is fully determined by the `interactions` vector.
note: There is currently no test for the Anisotropy with a Hamiltonian that is initialized from a config file.
…olated_Energy_Contributions() This simplification is enabled by the modularization of the Hamiltonian. It makes the public accessors for the component indices obsolete.
The default `gcc-11` produces a failing test (`test_physics`) for the single precision build which newer versions of `gcc` don't.
The `test_physics` test case has either a precision issue or a race condition for the dephasing test when compiling with `gcc-12`. This issue isn't present with `gcc-13` and `gcc-14`.
…s build hangs indefinitely during that test
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
thrust
implementation.TableParser
to parse more tables than just the pair interaction one: cac53c6Biaxial Anisotropy
interaction extending the uniaxial and cubic anisotropy terms: c171861ImGUI
build.Spin_System
andSpin_System_Chain
implementation.