from QuantumATK import *
from ExampleConfigurations import configurations

# Create Interfaces instance.
interfaces = Interfaces(configurations=configurations)

# Set up Layer 0.
interfaces.modifyLayer(
    layer_index=0,
    cleave_plane=(0, 0, 1),
    plane_indices=(0, 3),
    tolerance=-10,
    displacement=(0.0, 0.0, 0.0) * Angstrom,
)

# Set up Layer 1.
interfaces.modifyLayer(
    layer_index=1,
    cleave_plane=(0, 0, 1),
    plane_indices=(0, 8),
    tolerance=-10,
    displacement=(0.0, 0.0, 0.4) * Angstrom,
)

# Set up Layer 2.
interfaces.modifyLayer(
    layer_index=2,
    cleave_plane=(1, 1, 1),
    plane_indices=(0, 2),
    tolerance=-10,
    displacement=(0.0, 0.0, 0.0) * Angstrom,
)

# Set up the match parameters.
interfaces.setMatchParameters(
    max_strain=0.08,
    max_surface_area=300.0 * Angstrom**2,
    min_surface_vector_length=1.0 * Angstrom,
    max_surface_vector_length=20.0 * Angstrom,
    min_surface_vector_angle=30.0 * Degrees,
)

# Generate matches.
interfaces.calculateMatches(
    fixed_strain_layer_index=0
)

# Create the interfaces configuration.
configuration = interfaces.makeConfiguration(
    match_index=12,
    strip_vacuum=False,
    optimize=False
)
