Source code for litxbench.core.enums

"""Enum definitions for the experiment extraction framework."""

from enum import Enum


[docs] class ValueQualifier(str, Enum): """Indicates the relationship between a reported value and its true value (e.g., exact, approximate, upper/lower bound).""" EXACT = "exact" APPROXIMATE = "approximate" ABOVE = "above" BELOW = "below" ABOVE_OR_EQUAL = "above_or_equal" BELOW_OR_EQUAL = "below_or_equal" MUCH_ABOVE = "much_above" MUCH_BELOW = "much_below"
[docs] class MeasurementMethod(str, Enum): """Characterization instruments and techniques used to measure material properties or composition.""" XRD = "xray_diffractometer" DSC = "differential_scanning_calorimeter" TensileTest = "tensile_test" CompressionTest = "compression_test" VickersHardnessTest = "vickers_hardness_test" NanoindentTest = "nanoindent_test" ArchimedesMethod = "archimedes_method" OpticalMicroscope = "optical_microscope" SEM = "scanning_electron_microscope" TEM = "transmission_electron_microscope" STEM = "scanning_transmission_electron_microscope" EBSD = "electron_backscatter_diffraction" UniversalTestingMachine = ( "universal_testing_machine" # measures tons of mechanical properties (tensile, compression, bending, etc.) ) ResonanceUltrasoundSpectroscopy = "resonance_ultrasound_spectroscopy" FractureToughnessTest = "fracture_toughness_test" # Composition measurement methods Balance = "balance" EDS = "energy_dispersive_xray_spectroscopy" TEM_EDS = "tem_energy_dispersive_xray_spectroscopy" WDS = "wavelength_dispersive_xray_spectroscopy" EPMA = "electron_probe_microanalysis" # uses WDS - but it's better to have a separate enum value for this LIBS = "laser_induced_breakdown_spectroscopy" ED_XRF = "energy_dispersive_xray_fluorescence" WD_XRF = "wavelength_dispersive_xray_fluorescence" Spark_OES = "spark_optical_emission_spectroscopy" ICP_OES = "inductively_coupled_plasma_optical_emission_spectroscopy" ICP_MS = "inductively_coupled_plasma_mass_spectroscopy" Unspecified = "unspecified"
# This is stuff you can never see from an SEM image.
[docs] class CrysStruct(str, Enum): """Crystal structure types including basic lattices, ordered intermetallics, and compound structures.""" # Pure Metals / Basic FCC = "FCC" BCC = "BCC" HCP = "HCP" DHCP = "DHCP" Diamond = "Diamond" # Ordered Intermetallics L12 = "L12" # Ordered FCC (e.g., Ni3Al) L10 = "L10" # Tetragonal FCC (e.g., FePt) B2 = "B2" # Ordered BCC (e.g., NiAl) D019 = "D019" # Ordered HCP (e.g., Ti3Al) D03 = "D03" # Ordered BCC variant (e.g., Fe3Al) Heusler = "Heusler" # Common Compounds / Laves Rocksalt = "B1" # NaCl-type (e.g., TiC, TiN) Zincblende = "B3" # e.g., GaAs C14 = "C14" # Laves phase (Hexagonal) C15 = "C15" # Laves phase (Cubic) Perovskite = "E21" # Disorder / Meta Amorphous = "Amorphous" Unknown = "Unknown"
[docs] class ConfigTag(str, Enum): """Microstructural features and morphological tags describing a phase's configuration within the material.""" # Growth & Solidification Dendrite = "dendrite" Interdendritic = "interdendritic" Equiaxed = "equiaxed" Columnar = "columnar" Eutectic = "eutectic" Coring = "coring" # Transformation Products Lath = "lath" Martensite = "martensite" # there's precipitates within grains Acicular = "acicular" Lamellar = "lamellar" # lamellar -> looks like waves Widmanstatten = "widmanstatten" # Locations & Interfaces Matrix = "matrix" Precipitate = "precipitate" Intragranular = "intragranular" # Inside grains Intergranular = "intergranular" # At boundaries # Chemistry/Defects Segregation = "segregation" Twin = "twin" Subgrain = "subgrain" # Meta Structure = "structure" Unknown = "unknown"
[docs] class ProcessKind(str, Enum): """Processing steps in the fabrication pipeline, from synthesis and melting through thermal treatment to finishing.""" # --- Synthesis & Melting --- Mixing = "Mixing" MechanicalAlloying = "Mechanical Alloying" PlanetaryMilling = "Planetary Milling" GasAtomization = "Gas Atomization" ArcMelting = "Arc Melting" InductionMelting = "Induction Melting" CastingUnspecified = "Casting Unspecified" AsCast = "As Cast" GravityCasting = "Gravity Casting" DropCasting = "Drop Casting" SuctionCasting = "Suction Casting" DirectionalSolidification = "Directional Solidification" # --- Sintering --- # cooling is implied after sintering so we don't have a dedicated Cooling kind SparkPlasmaSintering = "Spark Plasma Sintering" HotPressingSintering = "Hot Pressing Sintering" # --- Thermal Treatment --- VacuumFurnace = "Vacuum Furnace" Homogenization = "Homogenization" Annealing = "Annealing" NonIsothermalAnnealing = "Non-Isothermal Annealing" IsothermalHolding = "Isothermal Holding" WaterQuenching = "Water Quenching" SolutionHeatTreatment = "Solution Heat Treatment" # --- Mechanical Working --- HotExtrusion = "Hot Extrusion" HotRolling = "Hot Rolling" ColdRolling = "Cold Rolling" CrossRolling = "Cross Rolling" ColdForging = "Cold Forging" Press = "Press" FrictionStirProcessing = "Friction Stir Processing" # --- Finishing & Preparation --- ElectricalDischargeMachining = "Electro-Discharge Machining" Cut = "Cut" Grinding = "Grinding" Polishing = "Polishing" Etching = "Etching" AquaRegia = "AquaRegia" SandBlasting = "Sand Blasting" Degreased = "Degreased" UltrasonicBath = "Ultrasonic Bath" AirDrying = "Air Drying"
MELTING_KINDS = {ProcessKind.ArcMelting, ProcessKind.InductionMelting} CASTING_KINDS = { ProcessKind.CastingUnspecified, ProcessKind.AsCast, ProcessKind.GravityCasting, ProcessKind.DropCasting, ProcessKind.SuctionCasting, ProcessKind.DirectionalSolidification, }
[docs] class RawMaterialKind(str, Enum): """Physical form of the starting material used in the fabrication process.""" Ingot = "ingot" Powder = "powder" Plate = "plate" Unspecified = "unspecified" Other = "other"