BUG: Fix EMsampler to FZ-reduce quaternions before averaging and store EM parameters#15
Merged
marcdegraef merged 1 commit intodevelopfrom Apr 3, 2026
Merged
Conversation
…e EM parameters
The sampler_ subroutine had two issues:
1. Local variables seed1/seed2 were never assigned from enl%seed1/enl%seed2,
leaving them uninitialized. They are now properly initialized from the
namelist parameters before use.
2. Sampled quaternions were passed directly to EMforDS for averaging without
first being reduced to the Rodrigues Fundamental Zone (RFZ). This produced
reference averages that disagreed with EMorav (which does FZ-reduce) and
with EbsdLib's C++ port of the same algorithm. Both vMF and Watson sampling
loops now FZ-reduce via ReduceOrientationtoRFZ before averaging.
Additionally, NumEM and NumIter are now written as scalar integer datasets
in the HDF5 output (/EMData/Sampler/) so that downstream consumers can read
the exact EM iteration parameters used to generate the reference data.
This file contains hidden or 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
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.
The sampler_ subroutine had two issues:
Local variables seed1/seed2 were never assigned from enl%seed1/enl%seed2, leaving them uninitialized. They are now properly initialized from the namelist parameters before use.
Sampled quaternions were passed directly to EMforDS for averaging without first being reduced to the Rodrigues Fundamental Zone (RFZ). This produced reference averages that disagreed with EMorav (which does FZ-reduce) and with EbsdLib's C++ port of the same algorithm. Both vMF and Watson sampling loops now FZ-reduce via ReduceOrientationtoRFZ before averaging.
Additionally, NumEM and NumIter are now written as scalar integer datasets
in the HDF5 output (/EMData/Sampler/) so that downstream consumers can read
the exact EM iteration parameters used to generate the reference data.