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:
- 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,
)
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.