1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//! # materia
//!
//! Chemical composition to physical material properties, from first principles.
//!
//! Define materials by their atomic structure — molecules, crystals, polymers,
//! or amorphous compositions — and get all physical properties derived
//! automatically using established physics models.
//!
//! ## Quick start
//!
//! ```rust
//! use materia::prelude::*;
//!
//! // Define iron as a BCC crystal
//! let iron = compile(&Substance::Crystalline(Crystal::iron()));
//! assert_eq!(iron.phase.state, PhaseState::Solid);
//!
//! // Or use a preset
//! let water = materia::presets::water();
//! assert_eq!(water.phase.state, PhaseState::Liquid);
//! ```
//!
//! ## Architecture
//!
//! ```text
//! Element → Substance → compile() → MaterialDef
//! (atoms) (structure) (physics) (properties)
//! ```
//!
//! The [`compile`] function derives every property from the chemical
//! structure: density from crystallography, melting point from cohesive
//! energy, conductivity from Wiedemann-Franz, color from electron
//! structure. No hardcoded material databases.
//!
//! ## Modules
//!
//! - [`element`] — Periodic table: all 118 elements with atomic data
//! - [`substance`] — [`Substance`] enum: molecular, crystalline, polymer, amorphous
//! - [`molecular`] — [`Molecule`], [`Bond`], bond energies
//! - [`crystal`] — [`Crystal`], [`LatticeType`] (BCC, FCC, HCP, Diamond)
//! - [`polymer`] — [`PolymerChain`] with cross-linking
//! - [`compile`] — [`compile()`] and [`compile_as()`]: substance → material properties
//! - [`material`] — [`MaterialDef`] output type with all property groups
//! - [`reaction`] — Chemical [`Reaction`] with energy balance
//! - [`interaction`] — [`InteractionRule`] for runtime reaction dispatch
//! - [`presets`] — 20 ready-to-use world materials
// -- Primary re-exports -------------------------------------------------------
pub use Element;
pub use Substance;
pub use ;
pub use ;
pub use PolymerChain;
pub use ;
pub use Reaction;
pub use ;
/// Convenience prelude — import everything commonly needed.
///
/// ```rust
/// use materia::prelude::*;
///
/// let iron = compile(&Substance::Crystalline(Crystal::iron()));
/// ```