This Page is Under Construction

Please check back soon

🚧
Page under construction
This project page will appear as soon as I have a bit of free time; that is likely not in the near future, but if you would like to learn more about this project or just want to chat, please reach out! The mini-games below should be (somewhat) functional in the meantime.
3 / 5 complete (I didn't give units, could be 3/5 dreams of completing a page before it happens in real life - yes, I do dream about this occasionally)
✦ Mini-Games — playable while you wait (please don't wait until I fix the page, it will likely be a while and these are meant to be 1-minute stops)
Physics & Model Details:

1. Solidification Time (Chvorinov’s Rule)
The code computes total solidification time using: ts = B · (V/A)², where B is a mold-dependent constant and V/A is the casting modulus (volume-to-surface-area ratio). Larger sections (higher modulus) cool more slowly because heat must travel farther to escape through the surface. This value sets the total simulation time and time step (dt = ts/N).

2. Lumped Cooling Model (Transient Energy Balance)
Temperature evolution is solved using a lumped-capacitance approximation: dT/dt = −h · (A/V) · (T − Tmold) / (ρ · cp,eff).
In code, A/V is approximated as 1 / (V/A), assuming uniform geometry. Heat extraction is controlled by the mold heat-transfer coefficient h and temperature difference between metal and mold. Density ρ and heat capacity determine how quickly temperature responds to heat loss.

3. Latent Heat via Apparent Heat Capacity
Instead of explicitly tracking phase change, the model increases heat capacity in the mushy zone: cp,eff = cp + L / ΔTmushy for Tsol ≤ T ≤ Tliq.
This spreads latent heat release uniformly across the freezing range, ensuring energy conservation without a separate source term. Outside this region, cp,eff = cp.

4. Solid Fraction Evolution
The fraction solid is approximated using a linear lever-rule surrogate: fs = (Tliq − T) / ΔTmushy, clamped between 0 and 1. This is used for visualization and to track progression through the mushy zone during cooling.

5. Dendrite Arm Spacing (DAS)
Microstructural scale is estimated from solidification time: DAS = K · ts1/3, where K is alloy-specific. Faster cooling (smaller ts) produces finer dendrites, which generally improve mechanical properties.

6. Mechanical Strength Scaling
Ultimate tensile strength is adjusted based on DAS: UTS = UTSbase · (DASref / DAS)n. This captures the empirical trend that finer microstructures (smaller DAS) increase strength.

7. Defect Risk Models (Heuristic)
Hot tearing: increases with freezing range, thin sections, and superheat.
Shrinkage: estimated using a Niyama-like proxy based on modulus and mold constant to approximate feeding difficulty.
These are simplified, dimensionally motivated indicators rather than full thermomechanical models.

8. Numerical Implementation
The simulation runs over N = 800 time steps. At each step: temperature is updated using forward Euler integration, solid fraction is recalculated, and results are stored. The cooling curve and solid fraction are then rendered in real time on the canvas.

General Overview: This is a lumped, transient solidification model combining heat transfer, phase change (via apparent heat capacity), and empirical microstructure-property relationships to produce physically realistic trends in casting behavior.
Identify the dominant microstructural phase shown above. Pay attention to grain morphology, feature distribution, and brightness.
Microstructure & Phase Transformation Model (WARNING: this basically tells you the answers):

1. Austenite (Base Phase)
Austenite grains are generated using a Voronoi tessellation algorithm to simulate equiaxed grains. Randomly distributed seed points are generated, and each pixel is assigned to the nearest seed, producing polygonal grain regions similar to real metallographic grain structures. Grain boundaries are darkened to mimic etched micrographs.

2. Pearlite Formation
Pearlite is drawn as lamellar colonies inside prior austenite grains. The code generates parallel stripe patterns (ferrite/cementite lamellae) with random orientation in each colony to simulate pearlite packets. Lamellar spacing is controlled by cooling rate, where faster cooling produces finer spacing.

3. Martensite Formation
Martensite is rendered as needle/lath structures. The code draws thin, high-aspect-ratio lines in packets with similar orientation to simulate martensitic laths forming within prior austenite grains. Packet orientation is randomized but grouped, mimicking real martensite variants that form within a single parent grain. Higher cooling rates increase the number density of laths.

4. Bainite Formation
Bainite is drawn as feathery sheaves. The algorithm creates branching line clusters that emanate from nucleation points, representing bainitic ferrite plates growing in a sheaf-like morphology. Density and length of sheaves depend on transformation temperature.

5. Ferrite
Ferrite is represented as large equiaxed grains using Voronoi tessellation, but with smoother boundaries and lighter shading to distinguish it from austenite.

6. Cast Aluminum (Al-Si)
Dendritic structures are generated using a recursive branching algorithm. Primary arms grow first, then secondary branches form at angles, approximating dendritic solidification structures seen in cast alloys.

7. Ti-6Al-4V Widmanstätten Structure
The code draws plate-like colonies growing across prior beta grains, representing Widmanstätten alpha plates that form during slow cooling.

How It Works (Graphics Side):
All microstructures are generated procedurally using HTML canvas drawing: • Voronoi tessellation → grains
• Parallel line fields → pearlite lamellae
• Needle packets → martensite
• Branching fractals → dendrites and bainite
• Noise overlay → etched micrograph appearance

General Overview: The microstructures are not images, they are generated algorithmically based on transformation type, cooling rate, and morphology rules to visually approximate real metallographic structures, so I apologize for the 'basket weave' of which does not at all look like the proper grain structure, amoung many other issues... >