atomistics.calculators.lammps.melting.estimate_melting_temperature_using_bisection_CNA

atomistics.calculators.lammps.melting.estimate_melting_temperature_using_bisection_CNA#

atomistics.calculators.lammps.melting.estimate_melting_temperature_using_bisection_CNA(structure: Atoms, potential_dataframe: DataFrame, target_number_of_atoms: int = 4000, temperature_left: float = 0, temperature_right: float = 1000, run: int = 10000, optimization_maxiter: int = 100000, seed: int | None = None) int[source]#

Estimate the melting temperature using bisection and common neighbour analysis (CNA).

The algorithm:

  1. Tiles the unit cell to approximately target_number_of_atoms atoms.

  2. Energy-minimises the supercell.

  3. Identifies the dominant structural motif and sets a solid/liquid threshold.

  4. Iteratively bisects the temperature bracket (via NPT MD + CNA) until the bracket width falls below 10 K.

Parameters:
  • structure (Atoms) – The input unit cell.

  • potential_dataframe (pd.DataFrame) – Interatomic potential DataFrame with "Species" and "Config" columns.

  • target_number_of_atoms (int) – Approximate number of atoms for the supercell. Defaults to 4000.

  • temperature_left (float) – Lower bound of the initial temperature bracket in K. Defaults to 0.

  • temperature_right (float) – Upper bound of the initial temperature bracket in K. Defaults to 1000.

  • run (int) – Number of NPT MD timesteps per bracket evaluation. Defaults to 10000.

  • optimization_maxiter (int) – Maximum iterations for the initial energy minimisation. Defaults to 100000.

  • seed (int | None) – Random seed for MD velocity initialisation. A random seed is chosen if None.

Returns:

Estimated melting temperature in K (rounded to the nearest integer).

Return type:

int