Author Topic: Interface builder from ATK python  (Read 3802 times)

0 Members and 1 Guest are viewing this topic.

Offline Fabian Ducry

  • Regular QuantumATK user
  • **
  • Posts: 10
  • Country: ch
  • Reputation: 0
    • View Profile
Interface builder from ATK python
« on: June 13, 2018, 13:34 »
Dear Quantumwise Team

I would like to use the Interface Matching algorithm from a python script. But I could not find any documentation about how to do that.
Is it possible to access these routines from atkpython or do I HAVE to go through the interface?

Kind regards,
Fabian Ducry

Offline Ulrik G. Vej-Hansen

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 425
  • Country: dk
  • Reputation: 8
    • View Profile
Re: Interface builder from ATK python
« Reply #1 on: June 13, 2018, 16:10 »
I think this tutorial is what you are looking for: https://docs.quantumwise.com/tutorials/interfaces_via_geometric_matching/interfaces_via_geometric_matching.html

Does it cover your questions?

Offline Fabian Ducry

  • Regular QuantumATK user
  • **
  • Posts: 10
  • Country: ch
  • Reputation: 0
    • View Profile
Re: Interface builder from ATK python
« Reply #2 on: June 13, 2018, 17:24 »
Perfect, that's exactly what I was looking for. Thank you!

Offline Fabian Ducry

  • Regular QuantumATK user
  • **
  • Posts: 10
  • Country: ch
  • Reputation: 0
    • View Profile
Re: Interface builder from ATK python
« Reply #3 on: June 13, 2018, 18:09 »
It's giving me weird information though. Looking at two hexagonal cells (111 of the first and 001 of the second material): the area of the interface is constant, even though the number of atoms increases. Is this a bug or intended?

Here is an excerpt of the output:
|     A                     B            Strain     Atoms    Area    Aspect    Angle    Rotation     |
[ 1  1  1] >-< [ 0  0  1]   0.000050     1750     69.0         1.0         60.0          19.1
[ 1  1  1] >-< [ 0  0  1]   0.000070      1705     69.0        1.0         60.0          19.1
[ 1  1  1] >-< [ 0  0  1]   0.000110        232     69.0         1.0         60.0          19.1
[ 1  1  1] >-< [ 0  0  1]   0.000560        151     69.0         1.0         60.0          19.1
[ 1  1  1] >-< [ 0  0  1]   0.000640       142     69.0         1.0         60.0          19.1
[ 1  1  1] >-< [ 0  0  1]   0.001490         88     69.0         1.0         60.0          19.1
[ 1  1  1] >-< [ 0  0  1]   0.007410          29     69.0         1.0         60.0          19.1
[ 1  1  1] >-< [ 0  0  1]   0.011550           16     69.0         1.0         60.0          19.1

I am using the version "Atomistix ToolKit 2017.1 [Build ce08f12] "

Offline Petr Khomyakov

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 1290
  • Country: dk
  • Reputation: 25
    • View Profile
Re: Interface builder from ATK python
« Reply #4 on: June 13, 2018, 23:35 »
Please post the script you have used to get this output. 

Offline Fabian Ducry

  • Regular QuantumATK user
  • **
  • Posts: 10
  • Country: ch
  • Reputation: 0
    • View Profile
Re: Interface builder from ATK python
« Reply #5 on: June 14, 2018, 13:59 »
I used: atkpython match_au_mose2.py | grep '0  0  1' With the files: match_au_mose2.py
Code
configuration_1 = nlread('au.cif',BulkConfiguration)[-1]
configuration_2 = nlread('MoSe2.cif',BulkConfiguration)[-1]

generalized_lattice_match = GeneralizedLatticeMatch(
                            configuration_1,
                            configuration_2,
                            max_strain=0.02,
                            maximum_miller_index=1,
                            longest_surface_lattice_vector=100*Angstrom,
                            max_surface_area=10000.0*Angstrom**2,
                            user_given_miller_index=(1,1,1)
                            )
With au.cif:
Code
data_global
_cell_length_a 2.97513963
_cell_length_b 2.97513963
_cell_length_c 2.97513963
_cell_angle_alpha 60.00000000
_cell_angle_beta 60.00000000
_cell_angle_gamma 60.00000000
_symmetry_space_group_name_H-M 'P -1'
loop_
_symmetry_equiv_pos_as_xyz
  'x,y,z'
loop_
_atom_site_label
_atom_site_fract_x
_atom_site_fract_y
_atom_site_fract_z
Au 0.00000000 0.00000000 0.00000000
and MoSe2.cif
Code
data_global
_cell_length_a 3.32910723
_cell_length_b 3.32910723
_cell_length_c 13.06127836
_cell_angle_alpha 90.00000000
_cell_angle_beta 90.00000000
_cell_angle_gamma 120.00000000
_symmetry_space_group_name_H-M 'P -1'
loop_
_symmetry_equiv_pos_as_xyz
  'x,y,z'
loop_
_atom_site_label
_atom_site_fract_x
_atom_site_fract_y
_atom_site_fract_z
Mo 0.33333300 0.66666700 0.25000000
Se 0.66666700 0.33333300 0.12100000
Se 0.66666700 0.33333300 0.37900000

Offline Petr Khomyakov

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 1290
  • Country: dk
  • Reputation: 25
    • View Profile
Re: Interface builder from ATK python
« Reply #6 on: June 15, 2018, 15:48 »
I am not able to reproduce your issue on my Windows 10 machine, using version 2017.2, i.e., it seems to work, see a log-file enclosed. Could you update 2017.1 to 2017.2 (it should work with your 2017.1 version license) to see if the issue is resolved?   
« Last Edit: June 15, 2018, 15:52 by Petr Khomyakov »

Offline Fabian Ducry

  • Regular QuantumATK user
  • **
  • Posts: 10
  • Country: ch
  • Reputation: 0
    • View Profile
Re: Interface builder from ATK python
« Reply #7 on: June 21, 2018, 16:01 »
I disagree, your log-file shows exactly the same numbers. The first three matchings are:
Code
+----------------------------------------------------------------------------------------+
|    A              B        Strain     Atoms    Area    Aspect    Angle    Rotation     |
+----------------------------------------------------------------------------------------+
[ 1  1  1] >-< [ 0  0  1]   0.000050     1750     69.0      1.0      60.0       19.1
[ 1  1  1] >-< [ 0  0  1]   0.000070     1705     69.0      1.0      60.0       19.1
[ 1  1  1] >-< [ 0  0  1]   0.000110      232     69.0      1.0      60.0       19.1
Which have differing numbers of atoms (1750, 1705 and 232) but apparently the same Area (69.0). I would assume that collumn "Area" shows the area of the cross-section. Is that wrong, what does "Area" refer to? EDIT: Is there an easy way of actually assemble this interface? I have not managed to get the same interfaces through the Interface Builder in VNL and the output of GeneralizedLatticeMatch is not sufficient to create it manually.
« Last Edit: June 21, 2018, 17:01 by Fabian Ducry »

Offline Daniele Stradi

  • Supreme QuantumATK Wizard
  • *****
  • Posts: 286
  • Country: dk
  • Reputation: 3
    • View Profile
Re: Interface builder from ATK python
« Reply #8 on: June 26, 2018, 12:47 »
Hi,

Fabian, you are right, it looks like there is something weird. We have filed a bug for this, and will let you know when the bug is  solved.

Regards,
Daniele

Offline Petr Khomyakov

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 1290
  • Country: dk
  • Reputation: 25
    • View Profile
Re: Interface builder from ATK python
« Reply #9 on: June 26, 2018, 14:38 »
Is there an easy way of actually assemble this interface? I have not managed to get the same interfaces through the Interface Builder in VNL and the output of GeneralizedLatticeMatch is not sufficient to create it manually.

I have managed to create this (111)|(001) interface with Area=69,  Aspect=1.0,  Angle=60,  Rotation =19.1 in the Interface Builder, see a png-file enclosed. The number of atoms do not match so. But this is what needs to be sorted out in bug-fixing.   

Offline Fabian Ducry

  • Regular QuantumATK user
  • **
  • Posts: 10
  • Country: ch
  • Reputation: 0
    • View Profile
Re: Interface builder from ATK python
« Reply #10 on: June 27, 2018, 14:16 »
Thank you Daniele and Petr

That pic helped, I managed to create the same interface. But creating the larger interfaces is almost impossible because there are too many possibilities (i.e. blue dots). It would be nice to incorporate some filtering into the VNL interface builder or enable the assembly of interfaces directly through the GeneralizedMatching method.

Fabian