Skip to content

VV: Compute IPF Colors fully V&V'ed#1666

Merged
imikejackson merged 1 commit into
BlueQuartzSoftware:developfrom
imikejackson:vv/compute_ipf_colors
Jul 13, 2026
Merged

VV: Compute IPF Colors fully V&V'ed#1666
imikejackson merged 1 commit into
BlueQuartzSoftware:developfrom
imikejackson:vv/compute_ipf_colors

Conversation

@imikejackson

Copy link
Copy Markdown
Contributor

Summary

Full V&V of ComputeIPFColorsFilter (SIMPLNX UUID 64cb4f27-6e5e-4dd2-8a03-0c448cb8f5e6; legacy DREAM3D 6.5.171 GenerateIPFColors, SIMPL UUID a50e6532-8075-5de5-ab63-945feb0de7f7).

ComputeIPFColors is a thin orchestration layer over EbsdLib's LaueOps::generateIPFColor(). The color math is covered by EbsdLib's own suite (TSLColorKeyTest / PUCMColorKeyTest / NolzeHielscherColorKeyTest / ColorKeyKindTest), so this V&V targets only the SIMPLNX value-add: per-cell dispatch/indexing, masking, reference-direction normalization, phase-bounds handling, and output packing.

What changed

  • Retired a circular oracle. The old main test compared filter output against the legacy-produced IPFColors array inside so3_cubic_high_ipf_001.dream3d ("our results should match SIMPL/DREAM3D"). Replaced with an inline C++ analytical dataset — no golden file, no archive. (so3_cubic_high_ipf_001.tar.gz stays in CMakeLists.txt because CreateEnsembleInfoTest still uses it.)
  • Oracle: Class 1 (Analytical) + Class 4 (Invariant) for orchestration, Class 2 (in-process EbsdLib reference) for per-cell dispatch, Class 3 (standard IPF corner: identity cubic down [001] = red). 8 test cases, pass in-core and OOC. SIMPLNX matched the oracle on the first run — no filter bugs.
  • Algorithm review fixes: removed a dead GetAllOrientationOps() allocation; made the parallel-written phase-warning counter std::atomic_int32_t (was a data race in the ParallelDataAlgorithm worker).
  • Terminology: renamed GoodVoxelsMask in the InputValues struct and algorithm internals to match sibling filters (legacy SIMPL JSON keys kept verbatim for backward-compat).
  • Docs: documented the Color Key schemes (TSL / PUCM / Nolze-Hielscher).

Legacy 6.5.171 comparison

Run on so3_cubic_high_ipf_001 (343,963 single-phase cubic cells, TSL, refDir [001]):

  • Byte-identical to the stored legacy IPF Colors (0/343,963).
  • vs a fresh 6.5.171 run: 14 cells (0.004%) differ by exactly ±1/255 in one channel → deviation D1 (precision + library quantization jitter; either acceptable, no legacy patch warranted).

Deliverables

  • vv/ComputeIPFColorsFilter.md (report, Status: READY FOR REVIEW)
  • vv/deviations/ComputeIPFColorsFilter.md (D1)

The vv/comparisons/ working set (pipelines + diff) is archived to OneDrive, not committed.

Note: this PR review constitutes the second-engineer sign-off; approving it flips the report Status to COMPLETE.

🤖 Generated with Claude Code

Summary:
- Confirmed no filter bugs (clean Port); fixed 2 algorithm-review warnings (removed dead GetAllOrientationOps() allocation; phase-warning counter is now std::atomic_int32_t, fixing a data race in the ParallelDataAlgorithm worker);
- documented 1 deviation from DREAM3D 6.5.171 (D1 precision+library: +/-1/255 TSL quantization jitter on 14/343963 cells; byte-identical to the stored legacy reference);
- retired 1 test (circular oracle that compared filter output against the legacy-produced IPFColors array inside so3_cubic_high_ipf_001.dream3d);
- unit tests replaced with inlined Class 1 (Analytical) + Class 4 (Invariant) fixtures plus Class 2 (EbsdLib reference) and Class 3 (standard IPF corner) cross-checks (8 test cases, pass in-core and OOC);
- added V&V source-tree deliverables (report + deviations; no provenance sidecar since the oracle dataset is inline with no archive);
- renamed GoodVoxels->Mask in the InputValues struct and algorithm internals to match sibling filters, and documented the new Color Key schemes (TSL/PUCM/Nolze-Hielscher) in the user doc.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@imikejackson imikejackson force-pushed the vv/compute_ipf_colors branch from 36f8018 to a33f67a Compare July 13, 2026 14:03
@imikejackson imikejackson merged commit ce6b67b into BlueQuartzSoftware:develop Jul 13, 2026
6 checks passed
@imikejackson imikejackson deleted the vv/compute_ipf_colors branch July 13, 2026 14:04
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.

2 participants