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 ... 5 6 [7] 8 9 ... 13
91
Dear sweta,

I think the reason that you got Au-Au bond varying from 2.68-2.88 Angstrom is that you optimzed a supercell of Au lattice. The one 2.88 is obtained from the unitcell.
In principal, even if you use a supercell to do the optimization, the Au-Au bond should be the same, since every Au atom has the very same environment. However, in numerical calcualtions, the program do not consider the symmetry of the system. So, you got your results.

With best regards,

Guangping

92
Dear Daniele,

Thanks for your reply. I see your point. If the rectangle box large enough in one direction of AB plane, then the periodical boundary will extend the rectangle box to an infinite slab.

Thanks so much for your kind reply.

93
Dear Daniele,

Can ATK use the *psf format PPs? SIESTA use *psf format.

As far as I know, the code atom can generate PPs of *psf format not the *upf format that is why I use APE to generate the PPs.

If you have a revised version of atom code, would you like to send me a copy?

With best regards,

Guangping Zhang

94
Dear all,

I now have been learning using the BoxRegion in ATK, which can used to simulate the gate voltage etc. However, I find the region box only can be defined to a rectangle one by specify the
Code
xmin, xmax,
ymin, ymax,
zmin, zmax

Since the lattice vector of the electrode usually not orthogonal in xy plane, such as

Code
vector_a = [8.65127, 0.0, 0.0]*Angstrom
vector_b = [-4.32564, 7.49222, 0.0]*Angstrom
vector_c = [0.0, 0.0, 7.06373620597]*Angstrom

 so a rectangle box usually does not match the unit cell in the xy plane.

Is there a method that like vector specfication to define the RegionBox which could easily solve this problem.

With best regards,

Guangping Zhang

95
Dear Daniele,

Thanks for your reply.

I have attached all the PPs and the *.py  file at the 3rd floor.
Also, I attached them again here.

Here, I just want to use the same PPs for ATK and TranSIESTA, as well as a as similar as possible a basis set.
In TranSIESTA, I use PAO.EnergyShift or FilterCutoff to set the basis set, or even I can use a PAO.Basis block to define the basis set like

%block PAO.Basis           
H                     1     
 n=1   0   2 P   1         
   4.767      3.782   
   1.000      1.000   
C                     2     
 n=2   0   2               
   4.129      3.361   
   1.000      1.000   
 n=2   1   2 P   1         
   4.868      3.467   
   1.000      1.000   
S                     2     
 n=3   0   2               
   4.127      3.480   
   1.000      1.000   
 n=3   1   2 P   1         
   4.987      3.789   
   1.000      1.000   
Ag                    2     
 n=5   0   1 P   1         
   6.879   
   1.000   
 n=4   2   1               
   3.942   
   1.000   
%endblock PAO.Basis

With best regards,

Guangping Zhang

96
Dear Jess,

I do not think so. Because I change the radial_cutoff_radius of Ag to 10 Bhor, the error persists. It was that " the mesh does not extend sufficiently beyond projectors ".

With best regards,

/Guangping Zhang

97
Dear Anders,

Thanks very much for your reply. It is useful of the "Show default" feature. I was not aware of this.

However, I yet can not make the executable run.

When the code gave errors,
Code
Traceback (most recent call last):
  File "Ag-C6H4S2-Ag-Own-PPs.py", line 485, in <module>
    device_configuration.update()
  File "./zipdir/NL/CommonConcepts/Configurations/AtomicConfiguration.py", line 1072, in update
  File "./zipdir/NL/Calculators/DeviceCalculatorInterface.py", line 325, in _update
Exception: The compact_support_radius, 3.942 Bohr, is shorter than the longest projector which is 5.72208 Bohr

I changed the radial_cutoff_radius for Ag 4d orbital to .73 Bohr,

Code
silver_4d = ConfinedOrbital(
    principal_quantum_number=4,
    angular_momentum=2,
    radial_cutoff_radius=5.73*Bohr,
    confinement_start_radius=3.71562127585*Bohr,
    additional_charge=0,
    confinement_strength=21.5307196457*Hartree,
    confinement_power=1,
    radial_step_size=0.001*Bohr,
    )

However. the executable gave error like this
Code
** Back Engine Exception : mesh does not extend sufficiently beyond projectors
** Location of Exception : radialschrodinger.cpp:920

atkpython: line 11: 12293 Aborted                 $EXEC_DIR/atkpython_exec "$@"

Does this mean the mesh range of my PPs are not sufficient? But they can be used without any problem by TranSIESTA.

With best regards,

Guangping Zhang

98
Dear Anders and Jess,

Thanks for your reply.

Yes, the script should be like this,

Code
from NL.Calculators.LCAOCalculator.BasisSet import confinementRadiusFromEnergyShift

P = NormConservingPseudoPotential('/home/zhanggp/globe/ATK-TranSIESTA/ATK-own-PPs/PPs/H.upf')
P.load()
N = P._valenceCharge()
rc = confinementRadiusFromEnergyShift(P,6,0,200*Rydberg,GGA.PBE._radialBackEngine(),0.00)*Units.Bohr

nlprint(rc)

It could give me the rc in output file. However, this is not what I want. Because function confinementRadiusFromEnergyShift is not decribed in the manual. Now I want to compare the results from ATK-2015.1 and TranSIESTA.

And for Ag-C6H4S2-Ag junction as attached below, I can set as much parameters as possible the same. At the moment, only pesudopotentials and basis set are maybe largely different. So, I use APE to generate the same pesudopotentials. But the ATK-2015 complains about the basis.

The basis set in TranSIESTA I use is:

PAO.EnergyShift       100 meV or FilterCutoff  200.0 Ry. So, I wonder, whether I can give a very close basis set in ATK.

With best regards,

Guangping Zhang


99
The new error is hopefully quite obvious to you.

There is a function in the code to compute the confinement radius from the energy shift - see attached example.

Dear Anders,

Thanks very much for your kind reply.

I did not understand the warning given by ATK, and searched much without any hints.
Code
Traceback (most recent call last):
  File "Ag-C6H4S2-Ag-Own-PPs.py", line 335, in <module>
    device_configuration.update()
  File "./zipdir/NL/CommonConcepts/Configurations/AtomicConfiguration.py", line 1072, in update
  File "./zipdir/NL/Calculators/DeviceCalculatorInterface.py", line 325, in _update
Exception: The compact_support_radius, 4.64453 Bohr, is shorter than the longest projector which is 5.72208 Bohr

So, can you please give some instruction information?

Also, I used the script you give to see the  confinement radius from the energy shift.

I write in the test.py the following,

Code
from NL.Calculators.DensityFunctionalTheory.LCAOCalculator.BasisSet import confinementRadiusFromEnergyShift

P = NormConservingPseudoPotential('/home/zhanggp/globe/ATK-TranSIESTA/ATK-own-PPs/PPs/H.upf')
P.load()
N = P._valenceCharge()
rc = confinementRadiusFromEnergyShift(P,6,0,0.001*Rydberg,GGA.PBE._radialBackEngine(),0.00)*Units.Bohr

print rc

and execute atkpython like

atkpython test.py > test.out

but I get errors.

Code
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from NL.Calculators.DensityFunctionalTheory.LCAOCalculator.BasisSet import confinementRadiusFromEnergyShift
ImportError: No module named DensityFunctionalTheory.LCAOCalculator.BasisSet

Can you please give some instructions? I not faimilar with the behavior of new version of ATK.

Thanks very much.

/Guangping Zhang

100
Should be quite easy to use a user-defined pseudopotential without sysadmin privileges. I am attaching an example where a custom Ga potential is used. I simply point to the absolute path of the upf file, and make sure that I have access to it at run-time. Be aware that you may need to adjust settings such as occupations and number of valence electrons to match your pseudopotential.

Dear Jess,

Thanks very much for your reply.

However, problem persists. It reports that:
Code
Traceback (most recent call last):
  File "Ag-C6H4S2-Ag-Own-PPs.py", line 335, in <module>
    device_configuration.update()
  File "./zipdir/NL/CommonConcepts/Configurations/AtomicConfiguration.py", line 1072, in update
  File "./zipdir/NL/Calculators/DeviceCalculatorInterface.py", line 325, in _update
Exception: The compact_support_radius, 4.64453 Bohr, is shorter than the longest projector which is 5.72208 Bohr
This time, it seems the executable can find my own PPs, but the basis set seems to be problematic.

Please find the attached py file and my own PPs. By the way, is there a method to define the size of the basis set use a EnergyShift of each basis orbital due to the confinement like in SIESTA.

With best regards,

/Guangping Zhang

101
Dear QW supporters,

As I know, it is possible for users to use their own norm conserving pseduopotentials in the calcualtions. And I searched this forum, and find the following way can be used to defined the users' pseduopotentials,

Code
basis_set = [
    GGABasis.Hydrogen_DoubleZetaPolarized(element=Hydrogen,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/H.upf')),
    GGABasis.Carbon_DoubleZetaPolarized(element=Carbon,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/C.upf')),
    GGABasis.Sulfur_DoubleZetaPolarized(element=Sulfur,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/S.upf')),
    GGABasis.Silver_SingleZetaPolarized(element=Silver,filter_mesh_cutoff=200*Rydberg,
                                            pseudopotential = NormConservingPseudoPotential('/xxx/xxx/Ag.upf')),
    ]

However, the atkpython executable can not find my upf pseduopotential. Here the pseduopotentials are give by their absolute path. Must the users' pseduopotentials be put in the directory /xxx/xxx/xxx/share/pseudopotentials? If so, this will need a root privilege since the VNL-ATK is installed by the  administrator. Can I put my own pseduopotentials in a directory that can be avaiable to the executable when the job is running, and specify my own pseduopotentials in the basis_set above ?

Thanks so much.

With best regards,

Guangping Zhang

102
Dear Anders Blom,

As mentioned in the manual, there is control option for the density matrix in electrode copy in DeviceAlgorithmParameters class. That is, ElectrodeConstraint.Off or ElectrodeConstraint.DensityMatrix. If the ElectrodeConstraint.DensityMatrix option is used, one has to set an electrode_constraint_length, over which the atoms in the electrode copy within the central region will be initialized with a linear combination of the converged density matrix of the electrodes and the equivalent bulk density matrix. The weight of the electrode density matrix is 1 at the boundary and 0 at the distance electrode_constraint length from the boundary.

Here it use the word "initialized" NOT constrain. So the question is, since in new setup of device in new version of ATK as we discussed above, the quantities in the whole interaction region is fully self-consistent, the  density matrix in the electrode copy will also be fully self-consistent. Therefore, what is the differnece beweent ElectrodeConstraint.Off or ElectrodeConstraint.DensityMatrix to  the reuslts, except they give two different initial guesses for the density matrix at the begining of the NEGF self-consistent calcualtion?

With best regards,

Guangping Zhang

103
Thanks a lot.

Guangping Zhang

104
The short answer is, that if you have a heterogeneous system (different left/right electrodes) you should simply avoid using the equivalent bulk (EB) step. The EB method is also quite bad for scaling in parallel, because it's a large bulk calculation, so often going for the two-probe solution immediately can be faster, even if it needs a bit more steps in the device calculation to converge, but it parallelizes a lot better.

Note however that the computational effort is exactly the same in the old and new approaches. In the old code, the electrodes were "secretly" added to the configuration just like you have the electrode copies explicitly in the central region configuration today.

Dear Anders,

Thanks for your reply.

You mean if I use a heterogeneous system, the caculation should be conducted directly to the NEGF sefl-consistent after the calculations of the electrodes?

Thanks so much.

With best regards,

Guangping Zhang

105
Dear Anders,

Thanks for your reply. It greatly helps.

However, I have yet a question on the new setup in new versions of ATK (2010.8 and later).

As seen in Fig1 and Fig2 the old and new setups of the two probe configuration. The webpage given illustrates the changes between old and new setups in terms of periodic systems in XY directions, and the left and right electrode are the same material and surface direction.

The problem is that if the two electrodes are made of two different materials or although the same material but with different surface directions, e.g. (111) and (100), there should be same vacumm space in the leftmost or rightmost of the interaction region to aviod a direction interaction of the left electrode copy and the right electrode copy in the equivalent bulk calculation. This would give a better initial guess for the density matrix to the NEGF calculation from an equivalent bulk calculation. To be much better, some buffer layers may be used outside the electrode copy to simulate the electrodes to give faster convergence in the subsequent NEGF self-consistent. And the enssential different between old and new setups are whether the electrodes (or electrode copies) in the interaction region enter the self-consistent: (1) the system in the NEGF self-consistent cycles are both interaction regions (i.e., the same atom numbers); (2) the left and right electrodes in the interaction region for old setup in Fig1 do not update their quantities while the left and right electrode copies in the interaction region for new setup in Fig2 update, indeed we can consider this as a different boundary positions where the electrochemical potentials match with the bulk like electrode. If more screening layers used in the old setup in Fig 1, it will give the exactly result with that of the new setup, while bring an obviously increased compuational burden compared with the extra compuation in new setup in Fig2.

Therefore, back to the question, how to add a vacumm at the leftmost or rightmost in the interaction region, or even more, buffer layers in case of two different electrodes?
For the first attempt, is it enough to enlarge the z component of vector_c  for central_region_lattice? If so, is there problem for the matching between the interaction region and the electrodes?

With best regards,

Guangping Zhang

Pages: 1 ... 5 6 [7] 8 9 ... 13