Repository navigation
Process maps
A map shows a process over two variables at once. extensions/chemistry/maps.mojo scans constraints over temperature and pressure, and draws Ellingham diagrams and predominance maps from the data.
This page is a reference. For the rest of the library, see Process chemistry.

scan evaluates a list of constraints on a grid. The temperature is on a linear scale, and the pressure is on a logarithmic scale. A Grid gives holds(column, row) and share(), the part of the nodes where every constraint holds.
boundary traces the edge of that region by marching squares. Each Segment joins two points of temperature and pressure. A side of a grid has 2 to MAX_SIDE nodes.
ellingham(reaction, temperature) gives the standard Gibbs energy change of an oxidation per mole of O2. The reaction must have O2 gas as a reactant, such as 2 Fe + O2 = 2 FeO.
-
oxygen_pressureis the O2 pressure in balance with the oxidation. Below it, the oxide gives up its oxygen. -
reducing_ratiois the CO/CO2 or H2/H2O ratio in balance with it, through a couple such as 2 CO + O2 = 2 CO2. -
ellingham_crossingfinds where two lines cross by bisection.
A lower line is a more stable oxide. Its metal, or carbon where the carbon line is lower, can take the oxygen from an oxide above it. The figure shows that carbon reduces FeO above 1044 K in this data.

predominance labels each point of a plane of two gas pressures with the most stable compound of a base element. This is a Kellogg diagram. The axes are log10 of each pressure in bar.
oxide_map labels each point of a plane of temperature and the fraction of a reducing gas. This is the Baur-Glaessner diagram of iron. The gas is a reducing gas and its oxidized form, such as CO and CO2.
Both maps compare the candidates per atom of the base element, with the gases at the pressures of the point. A condensed candidate is pure. A gaseous candidate of the base element is at a fixed partial pressure, one bar by default.
The left map shows why the chlorinator burns carbon with the ore. Rutile turns into TiCl4 only where the O2 pressure is very low. Carbon and CO at one bar hold the O2 pressure near 1e-21 bar, the dashed line.
examples/ellingham.mojo and examples/predominance.mojo draw these figures with the Axes of Crystals and figures:
make out/ellingham.png out/predominance.pngThe FeO in the NASA data is stoichiometric, and real wustite is Fe(1-x)O. That moves the iron map's edges. The Fe/FeO edge comes out near 80 % CO, where the handbook gives about 70 %. The Fe3O4/FeO edge comes out near 3 % CO, where the handbook gives about 20 % at 1000 degC. In this data, wustite is stable from about 430 K, where the real value is 843 K.
Use the iron map to see the method, not to set a furnace gas.
Tutorials
How-to
- Install
- Run the checks
- GPU backend
- Coverage
- Measure examples
- Add a feature
- Add a scanned building
- Write documentation
Reference
- Scene graph
- Rotations
- Cameras
- Geometry
- Geometry addons
- Lofts and clipping groups
- Sculptor
- Procedural generators
- Meshes and assets
- Lines
- Points and sprites
- Helpers
- Scene objects
- Animated objects
- Raycasting
- Curves and paths
- Animation
- Skinning
- Materials
- Node materials
- TSL functions
- Lights
- Lighting addons
- Fog
- Textures
- Renderer
- Renderer hooks and material flags
- Rasterization
- GPU backend
- Render target
- Post-processing
- GPU computation
- Compute nodes
- Progressive light map
- Gaussian splats
- Voxel global illumination
- SVG renderer
- Image files
- Image decode queue
- Model files
- More model files
- Exporters
- Scene JSON
- Windowing and controls
- C ABI and hosts
- Math
- Norm consumers
- Math addons
- Units
- Coverage tool
- Commands
- Examples
- Benchmarks
- Extensions
- Shared physics
- Physics query snapshots
- Continuous collision
- Tick force restoration
- Water
- Warp drives
- Vegetation
- Village
- Streamline
- Animals
-
Buildings
- Numerics
- Building topology
- Building model
- IFC exchange
- Procedural towers
- Floor plans and interiors
- Frame analysis
- Shell analysis
- Building energy
- Construction kits
- Bearing walls
- Scanned buildings
- SOG files
- Compressed PLY files
- Scan parts
- Cleaning and orienting scans
- Walking through a scan
- Virtual scans
- Castle
- CARLA
- Femur
- Tibia
- Fibula
- Patella
- Knee
- Muscles
- Vessels
- Lymph
- Nerves
- Integument
- Leg
- Foot
- Pelvis
- Torso
- Arm
- Hand
- Head
- Genome
- Game humanoid
- Humanoid fidelity
- Mixamo animations
- Audio-aligned game faces
- Converted assets
- Mesh quality
- Garments
- Outfits and armor
- Cloth and spring bones
- Attire estimates
- Segment inertia
- Process chemistry
- Thermochemical data
- Chemical equilibrium
- Process maps
- Rates and transport
- Electrolysis and film color
- Binary solutions
- Flowsheets and routes
- Materials and coatings
- Crystals and figures
Explanation
- Software rasterizer
- Scene graph as an array
- Linear color
- Normals are not colors
- Perspective correction
- Fixed-point coverage
- Per-fragment shading
- Mipmaps
- Sorted transparency
- Types and checks
- Render hooks as a trait
- Shared CPU and GPU code
- Bands and threads
- PNG structure
- Extensions beside the port
- Process temperatures
- Scans as building models
- CUDA teardown hang
- Mojo compiler hang