From 9e066118f6fe04e715adde79ef6492cd5ff90acb Mon Sep 17 00:00:00 2001 From: Michael Jackson Date: Thu, 9 Apr 2026 13:21:54 -0400 Subject: [PATCH] BUG: Ensure phases are ordered correctly in the PhaseVector container --- Data/EbsdTestFiles/out_of_order_phase.ang | 481 ++++++++++++++++++++++ Source/EbsdLib/IO/TSL/AngReader.cpp | 27 +- Source/Test/AngImportTest.cpp | 14 + Source/Test/TestFileLocations.h.in | 1 + 4 files changed, 522 insertions(+), 1 deletion(-) create mode 100644 Data/EbsdTestFiles/out_of_order_phase.ang diff --git a/Data/EbsdTestFiles/out_of_order_phase.ang b/Data/EbsdTestFiles/out_of_order_phase.ang new file mode 100644 index 0000000..a4d4205 --- /dev/null +++ b/Data/EbsdTestFiles/out_of_order_phase.ang @@ -0,0 +1,481 @@ +# HEADER: Start +# TEM_PIXperUM 1.000000 +# x-star 0.507000 +# y-star 0.534900 +# z-star 0.657600 +# WorkingDistance 25.000000 +# SampleTiltAngle 70.000000 +# CameraElevationAngle 2.000000 +# CameraAzimuthalAngle 0.000000 +# +# Phase 2 +# MaterialName Ti (Titanium, beta) +# Formula Ti +# Info +# Symmetry 43 +# PointGroupID 131 +# LatticeConstants 3.310 3.310 3.310 90.000 90.000 90.000 +# NumberFamilies 100 +# hklFamilies 0 -1 1 1 6.689197 1 +# hklFamilies 0 -2 0 1 4.647529 1 +# hklFamilies 1 -2 -1 1 3.676836 1 +# hklFamilies 0 -2 2 0 3.063804 0 +# hklFamilies 0 -3 1 1 2.628516 1 +# hklFamilies 2 -2 -2 0 2.308226 0 +# hklFamilies 1 -3 -2 0 2.050676 0 +# hklFamilies 0 -4 0 0 1.840713 0 +# hklFamilies 0 -3 3 0 1.673577 0 +# hklFamilies 1 -4 -1 0 1.673577 0 +# hklFamilies 0 -4 2 0 1.534913 0 +# hklFamilies 2 -3 -3 0 1.416775 0 +# hklFamilies 2 -4 -2 0 1.323520 0 +# hklFamilies 0 -5 1 0 1.234076 0 +# hklFamilies 1 -4 -3 0 1.234076 0 +# hklFamilies 1 -5 -2 0 1.087964 0 +# hklFamilies 0 -4 4 0 1.030439 0 +# hklFamilies 0 -5 3 0 0.974686 0 +# hklFamilies 3 -4 -3 0 0.974686 0 +# hklFamilies 0 -6 0 0 0.924103 0 +# hklFamilies 2 -4 -4 0 0.924103 0 +# hklFamilies 2 -5 -3 0 0.885359 0 +# hklFamilies 1 -6 -1 0 0.885359 0 +# hklFamilies 0 -6 2 0 0.847621 0 +# hklFamilies 1 -5 -4 0 0.810816 0 +# hklFamilies 2 -6 -2 0 0.775638 0 +# hklFamilies 1 -6 -3 0 0.749065 0 +# hklFamilies 4 -4 -4 0 0.723063 0 +# hklFamilies 0 -7 1 0 0.697598 0 +# hklFamilies 3 -5 -4 0 0.697598 0 +# hklFamilies 0 -5 5 0 0.697598 0 +# hklFamilies 0 -6 4 0 0.672637 0 +# hklFamilies 1 -7 -2 0 0.650963 0 +# hklFamilies 3 -6 -3 0 0.650963 0 +# hklFamilies 2 -5 -5 0 0.650963 0 +# hklFamilies 2 -6 -4 0 0.632631 0 +# hklFamilies 0 -7 3 0 0.614623 0 +# hklFamilies 1 -6 -5 0 0.579516 0 +# hklFamilies 2 -7 -3 0 0.579516 0 +# hklFamilies 0 -8 0 0 0.563909 0 +# hklFamilies 1 -8 -1 0 0.550419 0 +# hklFamilies 1 -7 -4 0 0.550419 0 +# hklFamilies 4 -5 -5 0 0.550419 0 +# hklFamilies 4 -6 -4 0 0.537131 0 +# hklFamilies 0 -8 2 0 0.537131 0 +# hklFamilies 3 -6 -5 0 0.524037 0 +# hklFamilies 2 -8 -2 0 0.511129 0 +# hklFamilies 0 -6 6 0 0.511129 0 +# hklFamilies 0 -7 5 0 0.498400 0 +# hklFamilies 1 -8 -3 0 0.498400 0 +# hklFamilies 3 -7 -4 0 0.498400 0 +# hklFamilies 2 -6 -6 0 0.487867 0 +# hklFamilies 2 -7 -5 0 0.477538 0 +# hklFamilies 0 -8 4 0 0.467341 0 +# hklFamilies 3 -8 -3 0 0.457270 0 +# hklFamilies 0 -9 1 0 0.457270 0 +# hklFamilies 2 -8 -4 0 0.447322 0 +# hklFamilies 5 -6 -5 0 0.437593 0 +# hklFamilies 1 -7 -6 0 0.437593 0 +# hklFamilies 1 -9 -2 0 0.437593 0 +# hklFamilies 4 -6 -6 0 0.429819 0 +# hklFamilies 1 -8 -5 0 0.422133 0 +# hklFamilies 0 -9 3 0 0.422133 0 +# hklFamilies 4 -7 -5 0 0.422133 0 +# hklFamilies 2 -9 -3 0 0.407013 0 +# hklFamilies 3 -7 -6 0 0.407013 0 +# hklFamilies 4 -8 -4 0 0.399574 0 +# hklFamilies 1 -9 -4 0 0.392212 0 +# hklFamilies 0 -7 7 0 0.392212 0 +# hklFamilies 3 -8 -5 0 0.392212 0 +# hklFamilies 0 -8 6 0 0.385770 0 +# hklFamilies 2 -7 -7 0 0.379758 0 +# hklFamilies 2 -8 -6 0 0.373804 0 +# hklFamilies 0 -9 5 0 0.367908 0 +# hklFamilies 3 -9 -4 0 0.367908 0 +# hklFamilies 6 -6 -6 0 0.362066 0 +# hklFamilies 5 -7 -6 0 0.356279 0 +# hklFamilies 2 -9 -5 0 0.356279 0 +# hklFamilies 4 -7 -7 0 0.345373 0 +# hklFamilies 1 -8 -7 0 0.345373 0 +# hklFamilies 5 -8 -5 0 0.345373 0 +# hklFamilies 4 -8 -6 0 0.340302 0 +# hklFamilies 1 -9 -6 0 0.335275 0 +# hklFamilies 3 -8 -7 0 0.325346 0 +# hklFamilies 4 -9 -5 0 0.325346 0 +# hklFamilies 3 -9 -6 0 0.315579 0 +# hklFamilies 0 -8 8 0 0.311475 0 +# hklFamilies 0 -9 7 0 0.307751 0 +# hklFamilies 2 -8 -8 0 0.304055 0 +# hklFamilies 2 -9 -7 0 0.300388 0 +# hklFamilies 6 -7 -7 0 0.300388 0 +# hklFamilies 6 -8 -6 0 0.296747 0 +# hklFamilies 5 -8 -7 0 0.293134 0 +# hklFamilies 5 -9 -6 0 0.285984 0 +# hklFamilies 4 -8 -8 0 0.282447 0 +# hklFamilies 1 -9 -8 0 0.278935 0 +# hklFamilies 4 -9 -7 0 0.278935 0 +# hklFamilies 3 -9 -8 0 0.265119 0 +# hklFamilies 0 -9 9 0 0.252565 0 +# hklFamilies 7 -8 -7 0 0.252565 0 +# Phase 1 +# MaterialName Ti (Titanium, alpha) +# Formula Ti +# Info +# Symmetry 62 +# PointGroupID 126 +# LatticeConstants 2.943 2.943 4.698 90.000 90.000 120.000 +# NumberFamilies 8 +# hklFamilies 1 0 0 1 0.000000 1 +# hklFamilies 0 0 2 1 0.000000 1 +# hklFamilies 1 0 1 1 0.000000 1 +# hklFamilies 1 0 2 1 0.000000 1 +# hklFamilies 1 1 0 1 0.000000 1 +# hklFamilies 1 0 3 1 0.000000 1 +# hklFamilies 1 1 2 1 0.000000 1 +# hklFamilies 2 0 1 1 0.000000 1 +# +# Phase 4 +# MaterialName Magnesium +# Formula Mg +# Info +# Symmetry 62 +# LatticeConstants 3.200 3.200 5.200 90.000 90.000 120.000 +# NumberFamilies 100 +# hklFamilies 0 -1 0 1 2.185637 1 +# hklFamilies 0 0 -2 1 4.087538 1 +# hklFamilies 0 -1 1 1 3.307773 1 +# hklFamilies 0 -1 2 1 1.406529 1 +# hklFamilies 1 -2 0 1 2.311954 1 +# hklFamilies 0 -1 3 1 1.814241 1 +# hklFamilies 0 -2 0 0 0.984594 0 +# hklFamilies 1 -2 -2 1 1.919068 1 +# hklFamilies 0 -2 1 1 1.624808 1 +# hklFamilies 0 0 -4 0 1.817538 0 +# hklFamilies 0 -2 2 0 0.853248 0 +# hklFamilies 0 -1 4 0 0.807431 0 +# hklFamilies 0 -2 3 0 1.268847 0 +# hklFamilies 1 -3 0 0 0.695632 0 +# hklFamilies 1 -3 -1 0 1.199466 0 +# hklFamilies 1 -2 -4 1 1.349050 1 +# hklFamilies 0 -1 5 1 1.121533 1 +# hklFamilies 1 -3 -2 0 0.635669 0 +# hklFamilies 0 -2 4 0 0.630455 0 +# hklFamilies 0 -3 0 0 1.210179 0 +# hklFamilies 1 -3 -3 0 1.013054 0 +# hklFamilies 0 -3 2 0 1.121479 0 +# hklFamilies 0 0 -6 0 1.115077 0 +# hklFamilies 0 -2 5 0 0.910171 0 +# hklFamilies 0 -1 6 0 0.521177 0 +# hklFamilies 1 -3 -4 0 0.506206 0 +# hklFamilies 2 -4 0 0 1.000921 0 +# hklFamilies 1 -4 0 0 0.481044 0 +# hklFamilies 2 -4 -2 0 0.938406 0 +# hklFamilies 1 -2 -6 0 0.934227 0 +# hklFamilies 1 -4 -1 0 0.801721 0 +# hklFamilies 0 -3 4 0 0.919099 0 +# hklFamilies 1 -3 -5 0 0.777251 0 +# hklFamilies 1 -4 -2 0 0.453844 0 +# hklFamilies 0 -2 6 0 0.446958 0 +# hklFamilies 0 -1 7 0 0.742272 0 +# hklFamilies 1 -4 -3 0 0.716043 0 +# hklFamilies 0 -4 0 0 0.402148 0 +# hklFamilies 0 -4 1 0 0.701558 0 +# hklFamilies 2 -4 -4 0 0.797112 0 +# hklFamilies 0 -4 2 0 0.382791 0 +# hklFamilies 1 -3 -6 0 0.381306 0 +# hklFamilies 1 -4 -4 0 0.388441 0 +# hklFamilies 0 -2 7 0 0.648482 0 +# hklFamilies 0 0 -8 0 0.742000 0 +# hklFamilies 0 -4 3 0 0.634855 0 +# hklFamilies 2 -5 0 0 0.348458 0 +# hklFamilies 0 -1 8 0 0.353429 0 +# hklFamilies 0 -3 6 0 0.707900 0 +# hklFamilies 2 -5 -1 0 0.616537 0 +# hklFamilies 1 -4 -5 0 0.588011 0 +# hklFamilies 2 -5 -2 0 0.332438 0 +# hklFamilies 0 -4 4 0 0.331265 0 +# hklFamilies 1 -3 -7 0 0.577192 0 +# hklFamilies 1 -5 0 0 0.661255 0 +# hklFamilies 1 -2 -8 0 0.657040 0 +# hklFamilies 2 -5 -3 0 0.565906 0 +# hklFamilies 1 -5 -2 0 0.634332 0 +# hklFamilies 0 -2 8 0 0.319002 0 +# hklFamilies 2 -4 -6 0 0.632258 0 +# hklFamilies 0 -4 5 0 0.532605 0 +# hklFamilies 0 -1 9 0 0.512898 0 +# hklFamilies 0 -5 1 0 0.486503 0 +# hklFamilies 1 -5 -4 0 0.560790 0 +# hklFamilies 2 -5 -5 0 0.481650 0 +# hklFamilies 1 -4 -7 0 0.463168 0 +# hklFamilies 3 -6 0 0 0.536655 0 +# hklFamilies 0 -2 9 0 0.463627 0 +# hklFamilies 0 -3 8 0 0.533847 0 +# hklFamilies 0 -5 3 0 0.454230 0 +# hklFamilies 3 -6 -2 0 0.518309 0 +# hklFamilies 2 -6 -1 0 0.442517 0 +# hklFamilies 0 -4 7 0 0.426707 0 +# hklFamilies 1 -3 -9 0 0.425510 0 +# hklFamilies 2 -4 -8 0 0.486298 0 +# hklFamilies 2 -6 -3 0 0.412050 0 +# hklFamilies 1 -5 -6 0 0.471907 0 +# hklFamilies 1 -6 -1 0 0.411514 0 +# hklFamilies 3 -6 -4 0 0.468053 0 +# hklFamilies 0 -5 5 0 0.397279 0 +# hklFamilies 2 -5 -7 0 0.394709 0 +# hklFamilies 1 -6 -3 0 0.388247 0 +# hklFamilies 2 -6 -5 0 0.366161 0 +# hklFamilies 0 -6 0 0 0.416894 0 +# hklFamilies 1 -4 -9 0 0.358809 0 +# hklFamilies 0 -6 2 0 0.404353 0 +# hklFamilies 3 -6 -6 0 0.403452 0 +# hklFamilies 3 -7 -1 0 0.353151 0 +# hklFamilies 1 -6 -5 0 0.345637 0 +# hklFamilies 0 -5 7 0 0.334551 0 +# hklFamilies 2 -7 0 0 0.387890 0 +# hklFamilies 0 -4 9 0 0.337551 0 +# hklFamilies 1 -5 -8 0 0.386392 0 +# hklFamilies 3 -7 -3 0 0.335762 0 +# hklFamilies 2 -7 -2 0 0.378116 0 +# hklFamilies 0 -6 4 0 0.374674 0 +# hklFamilies 2 -7 -4 0 0.349595 0 +# hklFamilies 3 -6 -8 0 0.337848 0 +# hklFamilies 0 -6 6 0 0.331173 0 +# hklFamilies 4 -8 0 0 0.319899 0 +# ElasticConstants 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +# ElasticConstants 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +# ElasticConstants 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +# ElasticConstants 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +# ElasticConstants 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +# ElasticConstants 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +# +# +# Phase 3 +# MaterialName Iron (Alpha) +# Formula Fe +# Info +# Symmetry 43 +# LatticeConstants 2.870 2.870 2.870 90.000 90.000 90.000 +# NumberFamilies 4 +# hklFamilies 1 1 0 20 0.000000 20 +# hklFamilies 2 0 0 1 0.000000 1 +# hklFamilies 2 1 1 0 0.000000 0 +# hklFamilies 3 1 0 263185528 38668294940524544.000000 263185528 +# Categories1 1 1 1 1 +# +# Phase 5 +# MaterialName Steel Austenitic +# Formula Ni2.9 Cr0.7 Fe0.36 +# Info +# Symmetry 43 +# LatticeConstants 3.554 3.554 3.554 90.000 90.000 90.000 +# NumberFamilies 4 +# hklFamilies 1 1 1 20 0.000000 20 +# hklFamilies 2 0 0 1 0.000000 1 +# hklFamilies 2 2 0 0 0.000000 0 +# hklFamilies 3 1 1 263185528 38668294940524544.000000 263185528 +# Categories1 1 1 1 1 +# GRID: SqrGrid +# XSTEP: 0.250000 +# YSTEP: 0.250000 +# NCOLS_ODD: 40 +# NCOLS_EVEN: 40 +# NROWS: 4 +# +# OPERATOR: +# +# SAMPLEID: +# +# SCANID: +# +# VERSION 7 +# NOTES: Start +# Version 1: phi1, PHI, phi2, x, y, iq (x*=0.1 & y*=0.1) +# Version 2: phi1, PHI, phi2, x, y, iq, ci +# Version 3: phi1, PHI, phi2, x, y, iq, ci, phase +# Version 4: phi1, PHI, phi2, x, y, iq, ci, phase, sem +# Version 5: phi1, PHI, phi2, x, y, iq, ci, phase, sem, fit +# Version 6: phi1, PHI, phi2, x, y, iq, ci, phase, sem, fit, PRIAS Bottom Strip, PRIAS Center Square, PRIAS Top Strip, Custom Value +# Version 7: phi1, PHI, phi2, x, y, iq, ci, phase, sem, fit. PRIAS, Custom, EDS and CMV values included if valid +# Phase index: 0 for single phase, starting at 1 for multiphase +# CMV = Correlative Microscopy value +# EDS = cumulative counts over a specific range of energies +# SEM = any external detector signal but usually the secondary electron detector signal +# NOTES: End +# COLUMN_COUNT: 13 +# COLUMN_HEADERS: phi1, PHI, phi2, x, y, IQ, CI, Phase index, SEM, Fit, PRIAS Bottom Strip, PRIAS Center Square, PRIAS Top Strip +# COLUMN_UNITS: radians, radians, radians, microns, microns, , , , , degrees, , , +# COLUMN_NOTES: Start +# Column 1: phi1 [radians] +# Column 2: PHI [radians] +# Column 3: phi2 [radians] +# Column 4: x [microns] +# Column 5: y [microns] +# Column 6: IQ +# Column 7: CI +# Column 8: Phase index +# Column 9: SEM +# Column 10: Fit [degrees] +# Column 11: PRIAS Bottom Strip +# Column 12: PRIAS Center Square +# Column 13: PRIAS Top Strip +# COLUMN_NOTES: End +# HEADER: End + 12.56637 12.56637 12.56637 0.00000 0.00000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 0.25000 0.00000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 0.50000 0.00000 0.0 -1.000 0 -784 180.000 + 12.56637 12.56637 12.56637 0.75000 0.00000 0.0 -1.000 0 -784 180.000 + 12.56637 12.56637 12.56637 1.00000 0.00000 0.0 -1.000 0 -800 180.000 + 12.56637 12.56637 12.56637 1.25000 0.00000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 1.50000 0.00000 0.0 -1.000 0 -832 180.000 + 12.56637 12.56637 12.56637 1.75000 0.00000 0.0 -1.000 0 -912 180.000 + 12.56637 12.56637 12.56637 2.00000 0.00000 0.0 -1.000 0 -736 180.000 + 12.56637 12.56637 12.56637 2.25000 0.00000 0.0 -1.000 0 -640 180.000 + 12.56637 12.56637 12.56637 2.50000 0.00000 0.0 -1.000 0 -976 180.000 + 12.56637 12.56637 12.56637 2.75000 0.00000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 3.00000 0.00000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 3.25000 0.00000 0.0 -1.000 0 -1088 180.000 + 12.56637 12.56637 12.56637 3.50000 0.00000 0.0 -1.000 0 -752 180.000 + 12.56637 12.56637 12.56637 3.75000 0.00000 0.0 -1.000 0 -640 180.000 + 12.56637 12.56637 12.56637 4.00000 0.00000 0.0 -1.000 0 -512 180.000 + 12.56637 12.56637 12.56637 4.25000 0.00000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 4.50000 0.00000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 4.75000 0.00000 0.0 -1.000 0 -736 180.000 + 12.56637 12.56637 12.56637 5.00000 0.00000 0.0 -1.000 0 -1104 180.000 + 12.56637 12.56637 12.56637 5.25000 0.00000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 5.50000 0.00000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 5.75000 0.00000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 6.00000 0.00000 0.0 -1.000 0 -736 180.000 + 12.56637 12.56637 12.56637 6.25000 0.00000 0.0 -1.000 0 -752 180.000 + 12.56637 12.56637 12.56637 6.50000 0.00000 0.0 -1.000 0 -688 180.000 + 12.56637 12.56637 12.56637 6.75000 0.00000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 7.00000 0.00000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 7.25000 0.00000 0.0 -1.000 0 -752 180.000 + 12.56637 12.56637 12.56637 7.50000 0.00000 0.0 -1.000 0 -672 180.000 + 12.56637 12.56637 12.56637 7.75000 0.00000 0.0 -1.000 0 -688 180.000 + 12.56637 12.56637 12.56637 8.00000 0.00000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 8.25000 0.00000 0.0 -1.000 0 -720 180.000 + 12.56637 12.56637 12.56637 8.50000 0.00000 0.0 -1.000 0 -704 180.000 + 12.56637 12.56637 12.56637 8.75000 0.00000 0.0 -1.000 0 -992 180.000 + 12.56637 12.56637 12.56637 9.00000 0.00000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 9.25000 0.00000 0.0 -1.000 0 -736 180.000 + 12.56637 12.56637 12.56637 9.50000 0.00000 0.0 -1.000 0 -576 180.000 + 12.56637 12.56637 12.56637 9.75000 0.00000 0.0 -1.000 0 -832 180.000 + 12.56637 12.56637 12.56637 0.00000 0.25000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 0.25000 0.25000 0.0 -1.000 0 -800 180.000 + 12.56637 12.56637 12.56637 0.50000 0.25000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 0.75000 0.25000 0.0 -1.000 0 -1024 180.000 + 12.56637 12.56637 12.56637 1.00000 0.25000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 1.25000 0.25000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 1.50000 0.25000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 1.75000 0.25000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 2.00000 0.25000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 2.25000 0.25000 0.0 -1.000 0 -944 180.000 + 12.56637 12.56637 12.56637 2.50000 0.25000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 2.75000 0.25000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 3.00000 0.25000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 3.25000 0.25000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 3.50000 0.25000 0.0 -1.000 0 -1072 180.000 + 12.56637 12.56637 12.56637 3.75000 0.25000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 4.00000 0.25000 0.0 -1.000 0 -912 180.000 + 12.56637 12.56637 12.56637 4.25000 0.25000 0.0 -1.000 0 -896 180.000 + 12.56637 12.56637 12.56637 4.50000 0.25000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 4.75000 0.25000 0.0 -1.000 0 -1104 180.000 + 12.56637 12.56637 12.56637 5.00000 0.25000 0.0 -1.000 0 -784 180.000 + 12.56637 12.56637 12.56637 5.25000 0.25000 0.0 -1.000 0 -832 180.000 + 12.56637 12.56637 12.56637 5.50000 0.25000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 5.75000 0.25000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 6.00000 0.25000 0.0 -1.000 0 -976 180.000 + 12.56637 12.56637 12.56637 6.25000 0.25000 0.0 -1.000 0 -720 180.000 + 12.56637 12.56637 12.56637 6.50000 0.25000 0.0 -1.000 0 -720 180.000 + 12.56637 12.56637 12.56637 6.75000 0.25000 0.0 -1.000 0 -832 180.000 + 12.56637 12.56637 12.56637 7.00000 0.25000 0.0 -1.000 0 -896 180.000 + 12.56637 12.56637 12.56637 7.25000 0.25000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 7.50000 0.25000 0.0 -1.000 0 -976 180.000 + 12.56637 12.56637 12.56637 7.75000 0.25000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 8.00000 0.25000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 8.25000 0.25000 0.0 -1.000 0 -1088 180.000 + 12.56637 12.56637 12.56637 8.50000 0.25000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 8.75000 0.25000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 9.00000 0.25000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 9.25000 0.25000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 9.50000 0.25000 0.0 -1.000 0 -704 180.000 + 12.56637 12.56637 12.56637 9.75000 0.25000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 0.00000 0.50000 0.0 -1.000 0 -784 180.000 + 12.56637 12.56637 12.56637 0.25000 0.50000 0.0 -1.000 0 -752 180.000 + 12.56637 12.56637 12.56637 0.50000 0.50000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 0.75000 0.50000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 1.00000 0.50000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 1.25000 0.50000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 1.50000 0.50000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 1.75000 0.50000 0.0 -1.000 0 -912 180.000 + 12.56637 12.56637 12.56637 2.00000 0.50000 0.0 -1.000 0 -1088 180.000 + 12.56637 12.56637 12.56637 2.25000 0.50000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 2.50000 0.50000 0.0 -1.000 0 -992 180.000 + 12.56637 12.56637 12.56637 2.75000 0.50000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 3.00000 0.50000 0.0 -1.000 0 -1104 180.000 + 12.56637 12.56637 12.56637 3.25000 0.50000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 3.50000 0.50000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 3.75000 0.50000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 4.00000 0.50000 0.0 -1.000 0 -768 180.000 + 12.56637 12.56637 12.56637 4.25000 0.50000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 4.50000 0.50000 0.0 -1.000 0 -896 180.000 + 12.56637 12.56637 12.56637 4.75000 0.50000 0.0 -1.000 0 -688 180.000 + 12.56637 12.56637 12.56637 5.00000 0.50000 0.0 -1.000 0 -1024 180.000 + 12.56637 12.56637 12.56637 5.25000 0.50000 0.0 -1.000 0 -448 180.000 + 12.56637 12.56637 12.56637 5.50000 0.50000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 5.75000 0.50000 0.0 -1.000 0 -1008 180.000 + 12.56637 12.56637 12.56637 6.00000 0.50000 0.0 -1.000 0 -720 180.000 + 12.56637 12.56637 12.56637 6.25000 0.50000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 6.50000 0.50000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 6.75000 0.50000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 7.00000 0.50000 0.0 -1.000 0 -1136 180.000 + 12.56637 12.56637 12.56637 7.25000 0.50000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 7.50000 0.50000 0.0 -1.000 0 -784 180.000 + 12.56637 12.56637 12.56637 7.75000 0.50000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 8.00000 0.50000 0.0 -1.000 0 -1072 180.000 + 12.56637 12.56637 12.56637 8.25000 0.50000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 8.50000 0.50000 0.0 -1.000 0 -576 180.000 + 12.56637 12.56637 12.56637 8.75000 0.50000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 9.00000 0.50000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 9.25000 0.50000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 9.50000 0.50000 0.0 -1.000 0 -848 180.000 + 12.56637 12.56637 12.56637 9.75000 0.50000 0.0 -1.000 0 -784 180.000 + 12.56637 12.56637 12.56637 0.00000 0.75000 0.0 -1.000 0 -896 180.000 + 12.56637 12.56637 12.56637 0.25000 0.75000 0.0 -1.000 0 -800 180.000 + 12.56637 12.56637 12.56637 0.50000 0.75000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 0.75000 0.75000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 1.00000 0.75000 0.0 -1.000 0 -1072 180.000 + 12.56637 12.56637 12.56637 1.25000 0.75000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 1.50000 0.75000 0.0 -1.000 0 -1056 180.000 + 12.56637 12.56637 12.56637 1.75000 0.75000 0.0 -1.000 0 -608 180.000 + 12.56637 12.56637 12.56637 2.00000 0.75000 0.0 -1.000 0 -944 180.000 + 12.56637 12.56637 12.56637 2.25000 0.75000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 2.50000 0.75000 0.0 -1.000 0 -864 180.000 + 12.56637 12.56637 12.56637 2.75000 0.75000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 3.00000 0.75000 0.0 -1.000 0 -1104 180.000 + 12.56637 12.56637 12.56637 3.25000 0.75000 0.0 -1.000 0 -912 180.000 + 12.56637 12.56637 12.56637 3.50000 0.75000 0.0 -1.000 0 -1088 180.000 + 12.56637 12.56637 12.56637 3.75000 0.75000 0.0 -1.000 0 -672 180.000 + 12.56637 12.56637 12.56637 4.00000 0.75000 0.0 -1.000 0 -1120 180.000 + 12.56637 12.56637 12.56637 4.25000 0.75000 0.0 -1.000 0 -688 180.000 + 12.56637 12.56637 12.56637 4.50000 0.75000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 4.75000 0.75000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 5.00000 0.75000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 5.25000 0.75000 0.0 -1.000 0 -928 180.000 + 12.56637 12.56637 12.56637 5.50000 0.75000 0.0 -1.000 0 -1056 180.000 + 12.56637 12.56637 12.56637 5.75000 0.75000 0.0 -1.000 0 -1072 180.000 + 12.56637 12.56637 12.56637 6.00000 0.75000 0.0 -1.000 0 -1168 180.000 + 12.56637 12.56637 12.56637 6.25000 0.75000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 6.50000 0.75000 0.0 -1.000 0 -1008 180.000 + 12.56637 12.56637 12.56637 6.75000 0.75000 0.0 -1.000 0 -912 180.000 + 12.56637 12.56637 12.56637 7.00000 0.75000 0.0 -1.000 0 -1040 180.000 + 12.56637 12.56637 12.56637 7.25000 0.75000 0.0 -1.000 0 -720 180.000 + 12.56637 12.56637 12.56637 7.50000 0.75000 0.0 -1.000 0 -960 180.000 + 12.56637 12.56637 12.56637 7.75000 0.75000 0.0 -1.000 0 -880 180.000 + 12.56637 12.56637 12.56637 8.00000 0.75000 0.0 -1.000 0 -1024 180.000 + 12.56637 12.56637 12.56637 8.25000 0.75000 0.0 -1.000 0 -896 180.000 + 12.56637 12.56637 12.56637 8.50000 0.75000 0.0 -1.000 0 -912 180.000 + 12.56637 12.56637 12.56637 8.75000 0.75000 0.0 -1.000 0 -800 180.000 + 12.56637 12.56637 12.56637 9.00000 0.75000 0.0 -1.000 0 -816 180.000 + 12.56637 12.56637 12.56637 9.25000 0.75000 0.0 -1.000 0 -1040 180.000 + 12.56637 12.56637 12.56637 9.50000 0.75000 0.0 -1.000 0 -976 180.000 + 12.56637 12.56637 12.56637 9.75000 0.75000 0.0 -1.000 0 -720 180.000 \ No newline at end of file diff --git a/Source/EbsdLib/IO/TSL/AngReader.cpp b/Source/EbsdLib/IO/TSL/AngReader.cpp index bfd6640..eb27b09 100644 --- a/Source/EbsdLib/IO/TSL/AngReader.cpp +++ b/Source/EbsdLib/IO/TSL/AngReader.cpp @@ -320,6 +320,16 @@ int AngReader::readHeaderOnly() ostr << buf << "\n"; } } + // Update Phase Vector + std::vector phaseVector; + for(const auto& phase : m_PhaseVector) + { + if(phase != nullptr) + { + phaseVector.push_back(phase); + } + } + m_PhaseVector = phaseVector; // Update the Original Header variable setOriginalHeader(origHeader); return err; @@ -359,6 +369,17 @@ int AngReader::readFile() parseHeaderLine(buf); } } + // Update Phase Vector + std::vector phaseVector; + for(const auto& phase : m_PhaseVector) + { + if(phase != nullptr) + { + phaseVector.push_back(phase); + } + } + m_PhaseVector = phaseVector; + // Update the Original Header variable setOriginalHeader(origHeader); @@ -689,7 +710,11 @@ void AngReader::parseHeaderLine(std::string& buf) std::cout << e.what() << std::endl; } // Parsing the phase is complete, now add it to the vector of Phases - m_PhaseVector.push_back(m_CurrentPhase); + if(m_PhaseVector.size() < m_CurrentPhase->getPhaseIndex() + 1) + { + m_PhaseVector.resize(m_CurrentPhase->getPhaseIndex() + 1); + } + m_PhaseVector.at(m_CurrentPhase->getPhaseIndex()) = m_CurrentPhase; } else if(word == ebsdlib::Ang::MaterialName && m_CurrentPhase.get() != nullptr) { diff --git a/Source/Test/AngImportTest.cpp b/Source/Test/AngImportTest.cpp index bbaffce..f0ade01 100644 --- a/Source/Test/AngImportTest.cpp +++ b/Source/Test/AngImportTest.cpp @@ -131,3 +131,17 @@ TEST_CASE("ebsdlib::AngImportTest-TestShortFile", "[EbsdLib][AngImportTest]") std::cout << reader.getErrorMessage(); REQUIRE(err < 0); } + +TEST_CASE("ebsdlib::AngImportTest-TestOutOfOrderPhase", "[EbsdLib][AngImportTest]") +{ + AngReader reader; + reader.setFileName(ebsdlib::unit_test::AngImportTest::OutOfOrderPhase); + int err = reader.readFile(); + REQUIRE(err == 0); + + auto phaseVector = reader.getPhaseVector(); + for(size_t i = 0; i < phaseVector.size(); i++) + { + REQUIRE(phaseVector[i]->getPhaseIndex() == i + 1); + } +} diff --git a/Source/Test/TestFileLocations.h.in b/Source/Test/TestFileLocations.h.in index fff5175..b88869a 100644 --- a/Source/Test/TestFileLocations.h.in +++ b/Source/Test/TestFileLocations.h.in @@ -68,6 +68,7 @@ const std::string MissingHeader3("@EbsdLibProj_SOURCE_DIR@/Data/EbsdTestFiles/Mi const std::string HexHeader("@EbsdLibProj_SOURCE_DIR@/Data/EbsdTestFiles/HexHeader.ang"); const std::string ShortFile("@EbsdLibProj_SOURCE_DIR@/Data/EbsdTestFiles/ShortFile.ang"); const std::string EdaxOIMH5File("@EbsdLibProj_SOURCE_DIR@/Data/EbsdTestFiles/EdaxAngOnly.h5"); +const std::string OutOfOrderPhase("@EbsdLibProj_SOURCE_DIR@/Data/EbsdTestFiles/out_of_order_phase.ang"); } // namespace AngImportTest namespace AngleFileLoaderTest