Grain Boundary Modeling
# Grain Boundary Modeling
## Introduction & Motivation
Predicting grain boundary properties and segregation enables design of materials with optimized microstructure and mechanical properties. ML models learn grain boundary energies and properties from computational and experimental data.
Motivation: Predict grain boundary properties and segregation.
Applications: Grain boundary energy, segregation prediction, microstructure design, mechanical property optimization.
---
## Core Concepts & Theory
### Grain Boundaries
Interface between grains.
### Misorientation
Crystallographic relationship.
### Boundary Energy
Interfacial tension.
### Segregation
Impurity accumulation.
---
## Mathematical Formulation
Grain Boundary Energy:
$$\gamma_{GB} = \frac{E_{ ext{GB}} - E_{ ext{bulk}}}{A}$$
Coincident Site Lattice:
$$\Sigma = \frac{V_{ ext{unit cell}}}{V_{ ext{CSL}}}$$
Segregation Energy:
$$E_{ ext{seg}} = E_{ ext{solute at GB}} - E_{ ext{solute in bulk}}$$
---
## Advanced Theory & Extensions
### Dislocation Content
Structural elements.
### Boundary Kinetics
Migration rates.
### Complexion Phases
Interfacial phases.
---
## Computational Considerations
Boundary Construction: O(N_atoms·D) complexity.
Energy Model: O(D²) network.
Prediction: O(D) per boundary.
---
## Practical Implementation Strategies
### Misorientation Encoding
Euler angles representation.
### Interface Descriptors
Local atomic environment.
### Segregation Features
Solute-matrix interaction.
---
## Benchmark Datasets & Evaluation
Computational Database: GBDB simulations.
Literature Data: Published values.
Experimental Measurements: Property data.
---
## Key Challenges & Limitations
### Boundary Complexity
Large structural space.
### Kinetic Barriers
Migration barriers.
### Temperature Dependence
Thermal effects.
---
## Hyperparameter Tuning
Hidden units: 128-256 neurons.
Dropout: 0.2-0.4 regularization.
Learning rate: 1e-4 to 1e-2 schedule.
---
## Real-World Applications & Case Studies
Steels: Grain boundary strengthening.
Aluminum: Mechanical properties.
Ceramics: Fracture behavior.
---
## Integration with Other Methods
GB ML + DFT; + experiments; + microstructure simulation.
---
## Summary & Key Takeaways
ML models grain boundary properties efficiently.
Principles:
1. Misorientation: Crystallographic encoding.
2. Structure: Boundary configuration.
3. Energy: Thermodynamic prediction.
4. Segregation: Impurity behavior.
5. Properties: Mechanical effects.
---
## Appendix: Practical Labs
### Lab 1: Misorientation Encoding
import numpy as np
def encode_misorientation(euler_angles):
"""Encode grain boundary misorientation"""
# Euler angles to rotation descriptor
descriptor = np.array([
np.cos(euler_angles[0]),
np.sin(euler_angles[0]),
np.cos(euler_angles[1]),
np.sin(euler_angles[1])
])
assert len(descriptor) == 4, "Descriptor dimension error"
return descriptor
angles = np.array([np.pi/4, np.pi/6, np.pi/3])
descriptor = encode_misorientation(angles)
assert descriptor.shape == (4,), "Encoding failed"
print(f"✓ Misorientation descriptor: {descriptor}")### Lab 2: Grain Boundary Energy
import numpy as np
class GBEnergyPredictor:
def __init__(self, descriptor_dim=10):
self.weights = np.random.randn(descriptor_dim) * 0.01
self.bias = 1.0
def predict_gb_energy(self, descriptor):
"""Predict grain boundary energy"""
energy = descriptor @ self.weights + self.bias
return energy
descriptor = np.random.randn(10)
predictor = GBEnergyPredictor()
energy = predictor.predict_gb_energy(descriptor)
assert isinstance(energy, (float, np.ndarray)), "Prediction failed"
print(f"✓ GB energy: {energy:.3f} J/m²")### Lab 3: Segregation Prediction
import numpy as np
def predict_segregation_energy(solute, matrix, gb_type):
"""Predict segregation energy"""
# Interaction energy model
interaction = np.sin(solute) * np.cos(matrix)
gb_factor = 1.5 if gb_type == 'high_angle' else 1.0
seg_energy = -2.0 * interaction * gb_factor
return seg_energy
seg_e = predict_segregation_energy(1.0, 0.5, 'high_angle')
assert isinstance(seg_e, (float, np.ndarray)), "Prediction failed"
print(f"✓ Segregation energy: {seg_e:.3f} eV")### Lab 4: Boundary Property Optimization
import numpy as np
class GBOptimizer:
def __init__(self, target_energy=1.0):
self.target = target_energy
def optimize_misorientation(self, n_iterations=20):
"""Optimize misorientation for target GB energy"""
best_angles = np.random.randn(3)
best_error = float('inf')
for _ in range(n_iterations):
angles = best_angles + np.random.randn(3) * 0.1
energy = 1.5 + 0.5 * np.sum(np.cos(angles))
error = abs(energy - self.target)
if error < best_error:
best_error = error
best_angles = angles
return best_angles
opt = GBOptimizer(target_energy=1.2)
optimal = opt.optimize_misorientation()
assert optimal.shape == (3,), "Optimization failed"
print(f"✓ Optimized misorientation angles: {optimal}")---