Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - zhangguangping

Pages: 1 2 [3] 4 5 ... 13
31
Future Releases / Re: Reordering for coordinate list
« on: April 13, 2017, 05:18 »
Glad it works for you, however it's good practice, and actually more or less required, that you constrain the electrode copy part of the central region when you optimize the device. Even if your approach works, there is a risk that you don't have a precisely crystalline geometry in the electrodes, which introduces additional scattering.

The procedure I do is as follows.
1) First, I contructed a junction with six layers of, for example Au(111), at each side, and a moleucle sandwiched between in (configuration I).  2) And then, copy configuration I for twice. There, I will have three configuaration I.
3) For the first one, I remove the two outermost Au(111) layers at each side to contructed a "extend molecule" consisting a molecule and four Au(111) layers at each side for the following geometric optimizing (configuration II).
4) For the second one, I remove all the atoms except the two lelftmost layers of Au(111) (configuration III).
5) For the third one, I remove all atoms except the two rightmost layers of Au(111) (configuration IV).
6) During the optimization of configuration II, the two leftmost layers of Au(111) will be fixed and the two rightmost layers of Au(111) will set to be rigid. All other atoms will be fully relaxed, the optimized geometry is called configuration II-opt.
7) After the optimization, I will recover the removed two layers of Au(111) at leftmost using "Drop" function by droping configration III on configuaration II-opt, and get configuration V).
8 ) Figure out the tranlation in xyz directions for the two rightmost layer of Au(111) in configuration II-opt with respect to configuration II.
9) Applied the the tranlation got in step ( 8 ) to configuration IV, and get configuration IV-trans.
10) Recover the two rightmost layers of Au(111) by droping configuration IV-trans on configuration II-opt. Then get configuration VI.

At last, I need to use "Device from bulk" to construct a real two probe system based on configuration VI. But, usually it fails due to the destruction of the peridic condition in C direction from a rearrangement of the atoms (I do not know at which step it occurs, maybe during the "Drop" step). In order to make VNL get the periodic condition in C direction, a reorder of the atoms in configuration VI will be needed. But, the "reorder" in "Coordinate List" will only make a sort for one componet. However, "Sort" function will make it.

I think the procedure above will be simple and quick one for constructing a two probe system in VNL, and is there a risk to have a precisely crystalline geometry in the electrodes, that introduces additional scattering?

With best regards,

/Guangping Zhang

32
Future Releases / Re: Reordering for coordinate list
« on: April 13, 2017, 04:01 »
Oh, I just remembered, there is a separate plugin for sorting! Under Coordinate Tools also, see "Sort" :)

Dear Anders Blom,

That's what I wanted. When I constructe a molecular junction and then remove a fraction of the electrode at each side to do a extend molecule optimization. After the optimization, I usually restore the removed electrode to recover the molecular junction for a basis to contructed a device using "Device From Bulk". However, at this time, VNL almost can not find the "Left electrode length" and "Right electrode length" due to the desctruction of the periodic condition of electrode in C direction. So, a sort of the coordinates according to the same rule will be helpful in this case. And I have tried the "Sort" function, it works in my case to construct a device from a optimized central region.

Thanks very much for your help.

With best regards,

/Guang-Ping Zhang

33
Future Releases / Reordering for coordinate list
« on: April 12, 2017, 08:27 »
Dear developer,

I find the reorder function in coordinate list only order one of the components, but the other two components are out of order (in version 2015.1). However, sometimes, the ordering of the other two components maybe also useful. Therefore, a function that can set a primary order component, a second one and the third one is proposed in the feature version.

With best regards,

/Guangping Zhang

34
You provide the date on which you read the manual (e.g. 3 March 2017)

Maybe, provide the release date of Dec. 1, 2015 for version 2015.1 is better.
http://www.quantumwise.com/about-us/quantumwise-news/item/924-bugfix-update-vnl-atk-2015-1-available

With best regards,

/Guangping Zhang

35
Yes, largest element in the Hamiltonian.

Dear Anders,

Thanks for your kind reply.

By the way, at the moment, in ATK-2015.1, there is only one Mixing variable-HamiltonianVariable, and no DensityMatrixVariable?

Thanks very much.

/Guangping Zhang


36
Dear all,

I am now wondering what is the toerance object of the interation control in two-probe system calculation. Say, I set 0.0001 Hartree in Tolerance, then I see when the dE of the self-consistent cyc reach 0.0001, then the convergence is achieved. What is dE? Is it the difference of the max difference between an element of the Hamiltonian or the total energy? I guess it is the former from the manual (http://www.quantumwise.com/documents/manuals/latest/ReferenceManual/index.html/ref.iterationcontrolparameters.html), but I am not sure.

With best regards,

Guangping Zhang

37
Yes, the Green's function is calculated and iterated for the full central region, not only the scattering region. The only difference between the scattering region and an electrode extension is that the former can be different from the electrodes (thereby providing electron scattering), while the latter must be periodic images of the neighboring electrode.

Thanks for your kind reply.

With best regards,

/Guangping Zhang

38
Dear Anders Blom,

As seen in the attachment, the Green function G_M needs to be iterated self-consistent. In ATK 2015, the left electrode extension and right electrode extension both contribute to the screening. So, does the G_M now contains them? That is, the G_M now is for the central region not only the scattering region, am I right?

With best regards,

/Guangping Zhang

39
Hi,

You are right that the HamiltonianDerivatives and DynamicalMatrix calculations could share the same scf results. This is something we have planned to implement, but we have not done it yet.

Regarding the k-point sampling for HamiltonianDerivatives and DynamicalMatrix: This does not have to be the same as for the device calculation, step (1). In fact, if the system is repeated in any direction (either set manually or done automatically) you should always reduce the number of k-point in that direction correspondingly. Otherwise the calculations will become too heavy. So you are right, that you should setup a separate calculator for the HamiltonianDerivatives and DynamicalMatrix calculations.

Note that you can get the automatically detected repetition with the function
(nA,nB,nC) = checkNumberOfRepetitions(configuration)
before you run the HamiltonianDerivatives and DynamicalMatrix calculations.

Troels

Dear Troels,

Thanks for your kind reply.

By the way, I think you should belong to the "QuantumWise Staff" group, not "New ATK user". The explicit indication would make your answer more convincing.

With best.

/Guangping

40
Well, now you have the opposite problem, you have atoms with fractional coordinates > 1. Using wrap would have gotten rid of these also.

Thanks for your reply. Aha, I get your point! Now it seems working.
Good to have you in the forum to guide ATK users.

I saw for IETS calculation, there are 4 main calculations:
(1) a two probe junction calculation: DeviceLCAOCalculator;
(2) force constant calculation: DynamicalMatrix;
(3) derivative of Hmiltonian: HamiltonianDerivatives;
(4) last, the IETS calculation based on (1)-(3): InelasticTransmissionSpectrum.

I find the steps (2) and (3) are time demanding.  And I think these two calcuations can share the same SCF consistent results for each displacement of degree. For example, if there are 26 atoms not constrained in the system, there will be 26*3*2=156 SCF consistent steps of electronic structure. For each step, the DynamicalMatrix uses total enegy and HamiltonianDerivatives uses Hamiltonian to do a finite difference. Therefore, they can share the SCF process. But, As I inspect from the out file, I see they do their own  SCF consistent calcuations respectively, which will nearly double the calcuation time. Is there any method or flag to combined them together since they are both needed in IETS calculation? In inelastica code, the code save each Hamiltonian files on the disk, and then do a read in, which is much fast than calculation from scratch. Maybe, ATK can give such flags in DynamicalMatrix Class that indicates the code save Hamiltonian into nc files or so.

However, for steps (2) and (3), I can not find entry for k-point sampling. I guess they use the same k-sampling as in (1), that is use the one for the device equivlent bulk.
Code
device_numerical_accuracy_parameters = NumericalAccuracyParameters(
    k_point_sampling=(4, 4, 20),

Is it possible that I use only Gamma point in steps (2) and (3) to save computaional time? Or they must be the exactly same as that in (1) for (2) and (3)?

If the answer is yes, I must sepertate the calculation of (2) and (3) from (1), where there is only a Gamma k-point sampling for (1) in the *py file for (2) and (3) since (2) and (3) do not have their own entry for k-point sampling and use the one as in (1).

Thanks very much.

/Guangping

41
No, that's not what I mean. Before you construct the device, you need to ensure that all atoms have positive fractional positions. So, go back to the Builder, remove the electrodes (convert to bulk, by the button) and use Bulk Tools>Wrap. Then again make electrodes, and you should have a configuration that does not give this error.

Dear Blom,

As I have attached the input file, I am sure there is no atoms with negative fractional coordinates. But the code gave the very same errors.

Can you please inspect this?

With best regards,

/Guangping

42
No, it will be fixed in 2016.2 (or maybe 2016.1). But you don't have to wait for that, just wrap the atoms so there are no negative fractional coordinates for any atoms, and you should be fine.

You mean, when I do the "HamiltonianDerivatives", I can remove the electrode atoms I constrained. And the results will match thoes of ”DynamicalMatrix“ and DeviceConfiguration as well as can give a correct IETS results?

I tried to tanslate my system by a bit to aviod negative fractional coordinates for all the atoms (although there are some fractional coordindates larger than 1). and rerun this job, but it still failed. Any suggestion?

Thanks so much.

/Guangping

43
No, it will be fixed in 2016.2 (or maybe 2016.1). But you don't have to wait for that, just wrap the atoms so there are no negative fractional coordinates for any atoms, and you should be fine.

You mean, when I do the "HamiltonianDerivatives", I can remove the electrode atoms. And the results will match thoes of ”DynamicalMatrix“ and DeviceConfiguration as well as can give a correct IETS results?

Thanks so much.

/Guangping

44
Lots of questions, I got a bit lost. Let's treat them one by one, rather :)

Yes, it's enough to do 1x1 for a molecule like this. Also for the repetitions.

The problem about "outside the cell" seems to be a bug, of sorts. But I think a better solution is to not use a hexagonal cell in A/B. When you cleave the gold, make a supercell so that the surface cell is rectangular instead. That should get rid of this problem, and you can proceed (without the need for repetitions).

Good to know that this is bug. I think hard to understand this, but failed.

Does this bug fixed in 2006.0? I now use 2005.1.

Thanks very much.

/Guangping

45
See http://quantumwise.com/publications/tutorials/item/877-inelastic-electron-spectroscopy-of-h-molecule-between-1d-au-chains

Dear Anders,

Before, I have used inelastica to repeat the theoretical results in PRL 104,077801(2010). And can get a very comparable result with one in that paper (please see blow).

Now I want to use ATK to repeat this result since I can fllow the tutorial you suggest me (please see the input *py file in the attachment). However, I was stucked in the step of "HamiltonianDerivatives" while the steps of "DynamicalMatrix" can be done sucessfully with a reasonable computing time.

As seen, the junction consists of a CH3-C7 molecule sandwiched bwetween to Au(111) electrodes. And periodic boundary condictions are used in x and y directions.

In the "HamiltonianDerivatives", the following settings are first used, and repetitions=(1, 1, 1) is used to save computational time.

Code
# -------------------------------------------------------------
# Hamiltonian Derivatives
# -------------------------------------------------------------
hamiltonian_derivatives = HamiltonianDerivatives(
    configuration=device_configuration,
    repetitions=(1, 1, 1),
    atomic_displacement=0.01*Angstrom,
    constraints=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169],
    use_equivalent_bulk=True,
    )
nlsave('CH3-C7-Au-IETS.nc', hamiltonian_derivatives)

However, errors occur. And it suggests me increase the unit cell repetition in the direction.

Code
Traceback (most recent call last):
  File "/tmp/1366.node00/CH3-C7-Au-IETS.py", line 463, in <module>
Traceback (most recent call last): 
  File "/tmp/1366.node00/CH3-C7-Au-IETS.py", line 463, in <module>
Traceback (most recent call last):
  File "/tmp/1366.node00/CH3-C7-Au-IETS.py", line 463, in <module>
Traceback (most recent call last):
  File "/tmp/1366.node00/CH3-C7-Au-IETS.py", line 463, in <module>
    use_equivalent_bulk=True,
  File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 132, in __init__
    use_equivalent_bulk=True,
  File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 132, in __init__
    use_equivalent_bulk=True,
  File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 132, in __init__
    use_equivalent_bulk=True,

  File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 978, in setAndCheckAtomsDisplacedWithinSuperCell
  File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 978, in setAndCheckAtomsDisplacedWithinSuperCell
  File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 978, in setAndCheckAtomsDisplacedWithinSuperCell
  File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 978, in setAndCheckAtomsDisplacedWithinSuperCell
NL.ComputerScienceUtilities.Exceptions.NLValueError:   File "./zipdir/NL/Analysis/HamiltonianDerivatives.py", line 978, in setAndCheckAtomsDisplacedWithinSuperCell
NL.ComputerScienceUtilities.Exceptions.NLValueError: Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.
NL.ComputerScienceUtilities.Exceptions.NLValueError: Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.
Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.
NL.ComputerScienceUtilities.Exceptions.NLValueError: Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.
NL.ComputerScienceUtilities.Exceptions.NLValueError: Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.
NL.ComputerScienceUtilities.Exceptions.NLValueError: Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.
NL.ComputerScienceUtilities.ExceptionsNL.ComputerScienceUtilities.Exceptions.NLValueError: Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.
.NLValueError: Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3. Please increase the unit cell repetition in the direction(s): A.

I can not understand this note "Atoms are being displaced out of the unit cell in directions where the cell repetition is less that 3." As is seen in the .py file, only the CH3-C7 molecule is not constrainedin the "HamiltonianDerivatives" calculation. And displacement of atoms of CH3-C7 by 0.01 Angstrom will not move the atom out of the unit cell. So, what does the note really mean?

As I understand, "HamiltonianDerivatives" calculation is very similar with "DynamicalMatrix" calcualtion in numerical technique. Anyway, I increase the unit cell repetition in x and y directions to 3

Code
# -------------------------------------------------------------
# Hamiltonian Derivatives
# -------------------------------------------------------------
hamiltonian_derivatives = HamiltonianDerivatives(
    configuration=device_configuration,
    repetitions=(3, 3, 1),
    atomic_displacement=0.01*Angstrom,
    constraints=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169],
    use_equivalent_bulk=True,
    )
nlsave('CH3-C7-Au-IETS.nc', hamiltonian_derivatives)

However, the calcualtion can be go further, but the self-consistent calcualtion is very slow. One cycle needs more than 24 hours with 4 cores.

As I guess, the "HamiltonianDerivatives" is equivalent to the PHrun in inelastica calcualtion. And as I remember, the whole PHrun needs less than 4 hours with one core for this system.

For a similar system, I think the PHrun in inelastica read the *TSHS file generated in FCrun and does the "HamiltonianDerivatives" in the following step,
Code
Phonons.Analyze: Reading (H0,S0,dH) from .TSHS and .onlyS files:
SiestaIO.HS.__init__: Reading ../FCrun/M1-Au-FC 151   0.TSHS
Found 324 atoms, (11792, 2948) orbitals in super-, unit-cell
SiestaIO.HS.setkpoint: ../FCrun/M1-Au-FC 151   0.TSHS k = [ 0.  0.  0.]
SiestaIO.HS.__init__: Reading ../FCrun/M1-Au-FC 151   1.TSHS
Found 324 atoms, (11792, 2948) orbitals in super-, unit-cell
SiestaIO.HS.setkpoint: ../FCrun/M1-Au-FC 151   1.TSHS k = [ 0.  0.  0.]
SiestaIO.HS.__init__: Reading ../FCrun/M1-Au-FC 151   2.TSHS
Found 324 atoms, (11792, 2948) orbitals in super-, unit-cell
...
...
...
SiestaIO.HS.setkpoint: ../FCrun/M1-Au-FC 151 143.TSHS k = [ 0.  0.  0.]
SiestaIO.HS.__init__: Reading ../FCrun/M1-Au-FC 151 144.TSHS
Found 324 atoms, (11792, 2948) orbitals in super-, unit-cell
SiestaIO.HS.setkpoint: ../FCrun/M1-Au-FC 151 144.TSHS k = [ 0.  0.  0.]
Phonons.CorrectdH: Applying correction to dH...

I guess the repetitions=(3, 3, 1) leads to the huge increase in the computational effort.

Also, I see there will be k-points sampling in the "HamiltonianDerivatives" calculation if use_equivalent_bulk is set to True. However, I did not find where to set the k-points sampling in Class HamiltonianDerivatives. Does it share the same with "DeviceLCAOCalculator"? If yes, can I have different k-points sampling for them?

Finally, I saw "use_equivalent_bulk" parameters in "HamiltonianDerivatives" and "DynamicalMatrix" to decide whether the DeviceConfiguration should be treated as a BulkConfiguration. As I understand, if it is set to True, the number of atoms in "HamiltonianDerivatives"  should equal to that of central region in DeviceConfiguration. But in my case, the number in the output file equals to central region + two electrodes. That is, the number of atoms in two electrode are counted by twice, which would increase the computational burden.

Did I  make some misunderstanding of the calcualtions or give wrong settings in ATK for IEST.

Can you please give me some suggesions?

With best regards.

/Guangping

Pages: 1 2 [3] 4 5 ... 13