Diffusion Analysis
Goal
To accurately calculate the ionic diffusivity ($D$) and activation energy ($E_a$) of specific atomic species in a material using Molecular Dynamics (MD) trajectories and the Arrhenius relation: $D(T) = D_0 \exp\left(-\frac{E_a}{k_B T}\right)$.
Instructions
MD Preparation: Run NVT or NPT MD simulations at multiple temperatures (typically 4-6 points between 600K and 1200K).
- Use the
run_mdtool from a relevant potential skill (e.g., mace or matgl). - Batch Processing: You can pass a directory or a list of CIF paths to
structure_datato run multiple MD simulations concurrently via the MCP tool. - Supercell Expansion: Ensure supercells are sufficiently large (> 10 Å in all dimensions). The
run_mdtool natively supports this via thesupercell_min_lengthargument (defaults to 10.0 Å) which performs orthogonal expansion automatically. - Optimization: Use the
diffusionmonitor (see mat-md-monitors) to automatically stop simulations once the transport properties have converged.
Note: If themace.run_md( structure_data=["candidates/A.cif", "candidates/B.cif"], temperature=600, supercell_min_length=10.0, monitor=True, monitor_type="diffusion", monitor_params={"specie": "Li", "threshold": 0.05, "check_interval_ps": 5.0} )diffusionmonitor triggers an early stop, it will automatically save thediffusion_{specie}.jsonandmsd_{specie}.pngdirectly into the trajectory output directory. You can skip Step 2 and proceed directly to Step 3 for any trajectories that converged early.
- Use the
Individual Diffusivity Analysis: For each temperature directory that did not hit the early stopping criteria, run the analysis script to extract the diffusivity and Mean Square Displacement (MSD).
# Env: base-agent python .agents/skills/mat-diffusion-analysis/scripts/analyze_diffusion.py \ results/md_600K/trajectory.traj \ --species Li \ --temperature 600 \ --ignore_ps 5.0 \ --output_dir results/md_600K--ignore_ps: Time to skip for equilibration. Default is 5.0 ps.- The script automatically detects the frame interval from the
.logfile if present.
Activation Energy Fitting: Once all individual results are generated, use the fitting script to combine data and perform a weighted Arrhenius fit.
# Env: base-agent python .agents/skills/mat-diffusion-analysis/scripts/calculate_activation_energy.py results/- The script looks for
md_*K/diffusion_results.jsonpatterns. - It performs error propagation to calculate uncertainty in $E_a$ and extrapolated room-temperature conductivity.
- The script looks for
Examples
- Superionic Conductor (LGPS): A complete workflow demonstration including supercell preparation, multi-temperature MD, and final Arrhenius plotting for $Li_{10}GeP_2S_{12}$ is available in the LGPS Example.
Constraints
- Trajectory Format: Trajectories MUST be in ASE
.trajformat. - Environments: All analysis scripts require the base-agent conda environment.
- Linearity: The diffusivity calculation assumes a linear diffusive regime. Always inspect the generated MSD plots to ensure linearity after the
ignore_psperiod. - Atom Count: To ensure statistical significance, the system should contain a sufficient number of mobile ions (> 20 recommended).
- Paths: Always use relative paths from the project root when executing scripts.
See Also
- mat-md-monitors: Real-time monitoring tools for MD simulations.
Author: Bowen Deng Contact: GitHub @learningmatter-mit