Melting Point
Goal
To determine the thermodynamic melting temperature ($T_m$) of a bulk material by equilibrating a solid-liquid interface in an NVE ensemble.
Instructions
Background Research:
- Search for the approximate melting point ($T_m$) and boiling/evaporation point ($T_{vap}$) of the material.
- Choose a melting temperature $T_{melt}$ where $T_m < T_{melt} \ll T_{vap}$.
- MD Parameters: Refer to the mat-md-monitors skill for best practices on timesteps and monitors. In general, use a 2.0 fs timestep for systems without Hydrogen.
Phase Preparation:
- Solid: Create a supercell using
create_supercell.py.
# Env: base-agent python .agents/skills/mat-melting-point/scripts/create_supercell.py [input_structure.cif] [solid_supercell.cif] --min_length 20.0- Liquid: Melt a block using 1D-NPT (with mask) to ensure matching dimensions.
mcp_mace_run_md( structure_data="solid_supercell.cif", temperature=2000, # REPLACE with T_melt from Step 1 ensemble="npt", steps=5000, timestep=2.0, # Use 2.0 fs for most inorganic systems pressure=1.0, # Apply positive pressure (1-2 bar) to prevent evaporation pressure_mask=[1, 0, 0], # REQUIRED: Must match the stacking axis (e.g., x-axis) output_dir="melt_stage" )- Visual Inspection (CRITICAL): Sometimes the cell does not fully melt within the specified MD steps. You MUST use the
mcp_base_visualize_structuretool to generate an image of the finalliquid.cifstructure (or trajectory) and have the VLM visually inspect the image to confirm that the long-range crystalline order has been destroyed and the cell is completely melted. If it has not, you must run the MD with a higher temperature or for more steps.
- Solid: Create a supercell using
Interface Creation: Use
create_interface.pyto concatenate the two phases.# Env: base-agent python .agents/skills/mat-melting-point/scripts/create_interface.py solid.cif liquid.cif --axis 0 --output interface.cifRelaxation: Perform an ionic relaxation using the
relax_structureMCP tool withrelax_cell=True. This allows the unit cell to adjust (shrink/expand) to match the density, and remove the interface energy created by stacking the two cells.mcp_mace_relax_structure(structure_data="interface.cif", relax_cell=True)Phase Verification: Before running production MD, verify solid-liquid coexistence in all structures.
First, extract reference atomic features:
# Env: mace-agent (or matgl-agent) # Extract from pure solid - use explicit output path mcp_mace_predict_atomic_features( structure_data="solid_supercell.cif", output_path="<research_dir>/solid_features.json" ) # Extract from pure liquid - use explicit output path mcp_mace_predict_atomic_features( structure_data="liquid_supercell.cif", output_path="<research_dir>/liquid_features.json" )Then verify phases:
# Env: base-agent # Solid should be ~100% solid python .agents/skills/mat-melting-point/scripts/check_phase.py <research_dir>/solid_features.json \ --solid_features <research_dir>/solid_features.json \ --liquid_features <research_dir>/liquid_features.json # Liquid should be ~100% liquid python .agents/skills/mat-melting-point/scripts/check_phase.py <research_dir>/liquid_features.json \ --solid_features <research_dir>/solid_features.json \ --liquid_features <research_dir>/liquid_features.json # Interface should show ~50% solid/liquid coexistence # (Requires predicting features for the relaxed interface first) mcp_mace_predict_atomic_features( structure_data="interface_relax/relaxed_structure.cif", output_path="<research_dir>/interface_features.json" ) python .agents/skills/mat-melting-point/scripts/check_phase.py <research_dir>/interface_features.json \ --solid_features <research_dir>/solid_features.json \ --liquid_features <research_dir>/liquid_features.jsonExpected:
- Solid: ≥95% solid
- Liquid: ≥95% liquid
- Interface: 40-60% solid (coexistence maintained)
If interface lost coexistence: Adjust melting temperature or relaxation parameters.
Thermalization (Equilibration): Start from the 0 K relaxed structure and run a short NVT thermalization at the expected $T_m$ to properly distribute kinetic and potential energy.
mcp_mace_run_md( structure_data="interface_relax/relaxed_structure.cif", temperature=933, # Target expected Tm ensemble="nvt", steps=5000, timestep=2.0, output_dir="thermalization_md" )Production: Run an NVE MD simulation starting from the full
.trajfile of the thermalized structure with themonitor=Trueparameter. Passing the.trajfile is critical because it preserves the velocities from the NVT run, providing a continuous MD sequence.bash mcp_mace_run_md( structure_data="thermalization_md/<formula>_<temp>K_nvt.traj", # Pass .traj to preserve velocities temperature=933, ensemble="nve", steps=100000, timestep=2.0, monitor=True, monitor_type="melting", output_dir="production_md" )Auto-Termination: The integrated monitor will:
- Check for temperature and potential energy stability.
- Automatically stop the MD simulation when the melting point is reached.
- Log termination status in the research log.
mcp_mace_run_mdwill return once the simulation stops (either by finishing all steps or by monitor termination).
Phase Validation: Verify that the solid and liquid phases still coexist at the end of the simulation. First, predict the atomic features of the final structure:
mcp_mace_predict_atomic_features( structure_data="production_md/final_structure.cif", output_path="production_md/final_structure_features.json" )Then, classify the phase:
# Env: base-agent python .agents/skills/mat-melting-point/scripts/check_phase.py production_md/final_structure_features.json \ --solid_features solid_features.json \ --liquid_features liquid_features.json- Fully Solidified: The NVE starting temperature was too low.
- Fully Melted: The NVE starting temperature was too high.
Analysis: If coexistence is verified, calculate $T_m$ by averaging the temperature over the last 5 ps of the simulation.
Examples
Creating a solid-liquid interface for Aluminum:
# Env: base-agent
python .agents/skills/mat-melting-point/scripts/create_interface.py Al_solid.cif Al_liquid.cif --axis 0 --output Al_interface.cif
Constraints
- Box Dimensions: The lattice parameters perpendicular to the stacking axis must be identical for both solid and liquid blocks.
- Ensemble: The final production run must be in the NVE ensemble to allow the temperature to evolve to $T_m$.
- Environments: Different MLIPs require specific Conda environments (e.g.,
mace-agent,matgl-agent). Ensure the scripts are run within the correct environment for the chosen model.
Author: Bowen Deng Contact: GitHub @learningmatter-mit