AmorphousLayer

class AmorphousLayer(material_specifications, length, method=None, random_seed=None, melt_temperature=None, melt_time=None, quench_temperature=None, quench_rate=None, time_step=None, max_retries=None)

Class to represent an amorphous layer material in MultilayerBuilder.

The amorphous layer is generated using a melt-quench MD procedure. First the system is melted and equilibrated at a high temperature. Then it is quenched from the melt_temperature to the quench_temperature at a rate of quench_rate. Then the system is quenched to zero Kelvin using a geometry optimization.

Parameters:
  • material_specifications (MaterialSpecifications) – A descriptor of a bulk material, plus the information needed to perform the calculations.

  • length (PhysicalQuantity of type length) – The target length (thickness) of the layer. A length of zero will generate the smallest possible layer.
    Default: 10 * Angstrom.

  • method (MolecularDynamicsMeltQuench | TimeStampedForceBiasMonteCarloMeltQuench) – Technique to perform the amorphization and associated parameters.
    Default: MolecularDynamicsMeltQuench.

  • random_seed (int | array of ints | None) – The random seed for the initial structure generation via packmol. Can be any integer between 0 and 2**32 - 1 inclusive, an array (or other sequence) of such integers, or None.

  • melt_temperature (PhysicalQuantity of type temperature) – Suggested melt temperature.
    Default: 3500 * Kelvin.

  • melt_time (PhysicalQuantity of type time) – The length of the melt MD simulation.
    Default: 40 * ps.

  • quench_temperature (PhysicalQuantity of type temperature) – The target temperature during the quenching MD simulation.
    Default: 300 * Kelvin.

  • quench_rate (PhysicalQuantity of type temperature per time) – The rate of temperature change during the quenching. This rate will be used to calculate the length of the quenching MD simulation.
    Default: 64 * Kelvin / ps.

  • time_step (PhysicalQuantity of type time) – Time step per iteration.
    Default: 1.0 * fs.

  • max_retries (int) – Maximum number of tries to satisfy amorphous quality.
    Default: 30.

amorphousDensity()
Returns:

The mass density of the amorphous material.

Return type:

PhysicalQuantity of type mass / volume

length()
Returns:

The target length (thickness) of the layer.

Return type:

PhysicalQuantity of type length

materialSpecifications()
Returns:

The descriptor of a bulk material, plus the information needed to perform the calculations.

Return type:

MaterialSpecifications

method()
Returns:

The method to perform amorphization

Return type:

TimeStampedForceBiasMonteCarloMeltQuench | MolecularDynamicsMeltQuench

stoichiometry()
Returns:

The dict to map element to stoichiometric number.

Return type:

dict

uniqueString()

Return a unique string representing the state of the object.

Usage Example

Example of a customized AmorphousLayer object to generate an amorphous silica layer.

custom_layer = AmorphousLayer(
    MaterialSpecificationsDatabase.MULTILAYER_MATERIALS['Silica'],
    length=10.0*Angstrom,
    melt_temperature=6000*Kelvin,
    melt_time=60*picosecond,
    quench_temperature=1000*Kelvin,
    quench_rate=60*Kelvin/picosecond,
    time_step=0.5*femtosecond,
)

amorphous_layer_example.py

Notes

The AmorphousLayer class defines how an amorphous layer should be generated by the MultilayerBuilder. The amorphous structure is generated using runPackmol based on material_specifications.amorphousDensity() and material_specifications.elementsWithStoichiometry(). A melt quench procedure is carried out starting from the optimized packmol configuration. The parameters in the melt-quench protocol can be specified via the method parameter, which can take a MolecularDynamicsMeltQuench, TimeStampedForceBiasMonteCarloMeltQuench, or EmpiricalAmorphizationMethod object.

Note

An initial optimization is done on the configuration obtained from runPackmol using material_specifications.quickOptimizerCalculator(). This is usually a robust force-field calculator. Another geometry optimization is performed using material_specifications.amorphizationCalculator(). The MD simulations and final optimization of the amorphous configuration are performed using the material_specifications.amorphizationCalculator() calculator. This is normally a machine-learned moment tensor potential (MTP) force-field calculator.

The first step is to melt the structure. This is done by running a NVT MD simulation at a temperature of melt_temperature for time of melt_time. This temperature should be hot enough to ensure that the material can thoroughly melt.

The second step is quenching. A NVT MD simulation is run starting at a temperature of melt_time and cooling at a rate of quench_rate until the temperature is equal to the quench_temperature.

Note

A slower quenching rate may give more realistic amorphous structures, but it is not often possible to simulate experimental cooling rates due to the number of MD steps that would be required.

The final step is geometry optimization, which represents instantaneous quenching from the quench_temperature to zero Kelvin.

The melt-quench protocol is repeated for up to max_retries iterations, specified in the amorphous method, until a final configuration without coordination defects is obtained.