1
General Questions and Answers / Re: Potential for interface
« on: October 24, 2024, 14:44 »
Hello,
I'm aware it's been 8 years almost since the topic was created, but I could not find the solution for a very similar question.
I'm also building an interface composed of elements, which doesn't have build-in potential in QATK (cerium), so automatic calculation of shifting is impossible.
The procedure of adding own potential ( as desrcibed by Daniele ) http://docs.quantumwise.com/tutorials/combining_potentials/combining_potentials.html is not valid for calculations of shifting interfaces, since it can't be send straight to the editor so I can't really see the source code, and finding it by myself is kind of tricky. So i have a two questions:
-> is there a possibility to add own potential somehow (maybe save it in a file and add to a set of prebuild potentials in QuantumATK), and then this potential can be used in Shift Surfaces window;
-> if there is not such an option, I can build the script myself by Iteration, as described in https://www.youtube.com/watch?v=6tL77iZDJsY&ab_channel=SynopsysQuantumATK .
So I have to move the one of the materials from interface (fortunately atoms building the materials are tagged "Left Interface" and "Right Interface") along x, y, z (this can be actually quite easy with moveAtoms() function apllied to tagged atoms) and also rotate them along z-axis ( I don't know how to rotate atoms). So iterating through a set of move_x, move_y, move_z and rotate_z parameters and calculating the total energy with a set potential will do the job, but I'm struggling to do that. Could You help me please?
EDIT: I managed to set up Iterative calculation. I have a variable from generator called move_x, which should move the atoms of one part of the interface along x-axis. I order to do that, I set up script in Custom block : configuration.shiftAtoms([move_x, 0,0]), but it moves all of the atoms in configuration. How to select with this script only these atoms which are tagged "Interface_Left_0"
EDIT: I found it myself in the documentation. You can use
picks the indices of atoms with specific tag, and this indices can be sent to shiftAtoms.
I'm aware it's been 8 years almost since the topic was created, but I could not find the solution for a very similar question.
I'm also building an interface composed of elements, which doesn't have build-in potential in QATK (cerium), so automatic calculation of shifting is impossible.
The procedure of adding own potential ( as desrcibed by Daniele ) http://docs.quantumwise.com/tutorials/combining_potentials/combining_potentials.html is not valid for calculations of shifting interfaces, since it can't be send straight to the editor so I can't really see the source code, and finding it by myself is kind of tricky. So i have a two questions:
-> is there a possibility to add own potential somehow (maybe save it in a file and add to a set of prebuild potentials in QuantumATK), and then this potential can be used in Shift Surfaces window;
-> if there is not such an option, I can build the script myself by Iteration, as described in https://www.youtube.com/watch?v=6tL77iZDJsY&ab_channel=SynopsysQuantumATK .
So I have to move the one of the materials from interface (fortunately atoms building the materials are tagged "Left Interface" and "Right Interface") along x, y, z (this can be actually quite easy with moveAtoms() function apllied to tagged atoms) and also rotate them along z-axis ( I don't know how to rotate atoms). So iterating through a set of move_x, move_y, move_z and rotate_z parameters and calculating the total energy with a set potential will do the job, but I'm struggling to do that. Could You help me please?
EDIT: I managed to set up Iterative calculation. I have a variable from generator called move_x, which should move the atoms of one part of the interface along x-axis. I order to do that, I set up script in Custom block : configuration.shiftAtoms([move_x, 0,0]), but it moves all of the atoms in configuration. How to select with this script only these atoms which are tagged "Interface_Left_0"
EDIT: I found it myself in the documentation. You can use
Code
configuration.shiftAtoms([move_x, 0, 0]*Angstrom, configuration.indicesFromTags(tags="Left Interface 0"))
Code
configuration.indicesFromTags(tags="Left Interface 0")