Re: Using openmx with external pseudopotentials ( No.1 ) |
- Date: 2016/05/06 15:37
- Name: T. Ozaki
- Hi,
I tested your pseudopotential (PP) and reproduced the same problem. The problem actually comes from the singularity of the PP at the origin. It turned out that the numerical instability comes from the 1178th line in 'SetParaDFT.c'. If you provide more basis functions in the pao file (larger than scf.RadialF.VNA), the problem may disappear. Also, I noticed that your basis functions for the s-state have incorrect asymptotic behavior at the origin. The basis functions for the s-state should be finite, but your basis functions approach to zero.
Since the PP is not usual one as OpenMX assumes by default setting for numerical parameters, you should carefully check the convergency of the total energy with respect to the following parameters:
scf.ProExpn.VNA on scf.BufferL.VNA 6 scf.RadialF.VNA 12 1DFFT.NumGridK 900 1DFFT.NumGridR 900 1DFFT.EnergyCutoff 3600
which are related to the projector expansion of the neutral atom potential described in PRB 72, 045121 (2005).
If you have any more questions, please let me know.
Regards,
TO
|
Re: Using openmx with external pseudopotentials ( No.2 ) |
- Date: 2016/05/10 23:30
- Name: Daniil
- Hi,
thank you for answer!
About s-orbitals: I forgot to mention that their form is rather unusual, but not actually incorrect. They must be finite for Coulomb potential and majority of PPs, but with appropriate semilocal PP they can be of any reasonable form in the core area, and this PP corresponds to zero-at-origin pseudo-functions. I am not the creator of PP, and I cannot distinctly explain the purpose of such choice.
So, I should use more basis functions than scf.RadialF.VNA. Did you mean not only providing them in pao file, but also adding to actual basis in input? Does it cover all Ls or only some? In other words, can I use less d-functions, while providing enough s- and p-functions? I know I can test this, but maybe there is a theoretical answer.
Thanks for the list of parameters, I'll try to increase them.
Best regards, Daniil
|
Re: Using openmx with external pseudopotentials ( No.3 ) |
- Date: 2016/05/11 10:03
- Name: T. Ozaki
- Hi,
> Did you mean not only providing them in pao file, but also adding to actual basis in input?
The basis functions stored in a pao file is used as basis to expand the neutral atom potential. So, you do not need to add basis functions in your input file to expand the KS orbitals.
> Does it cover all Ls or only some? In other words, can I use less d-functions, > while providing enough s- and p-functions? I know I can test this, but maybe there > is a theoretical answer.
You need to provide more basis functions to all Ls including s-, p-, and d-states.
With the pao and vps you provided and the following input,
------ Species.Number 1 <Definition.of.Atomic.Species Ca ca-s2p2d1 ca Definition.of.Atomic.Species>
# # Atoms #
Atoms.Number 2 Atoms.SpeciesAndCoordinates.Unit AU # Ang|AU <Atoms.SpeciesAndCoordinates 1 Ca 0 0 0 5 5 2 Ca 4 0 0 5 5 Atoms.SpeciesAndCoordinates> Atoms.UnitVectors.Unit AU # Ang|AU
# # SCF or Electronic System #
scf.XcType GGA-PBE # LDA|LSDA scf.SpinPolarization off # On|Off scf.SpinOrbit.Coupling off scf.maxIter 100 # default=40 scf.EigenvalueSolver cluster # DC|GDC|Cluster|Band scf.Kgrid 1 1 1 # means n1 x n2 x n3 scf.Mixing.Type rmm-diisk # Simple|Rmm-Diis|Gr-Pulay|Kerker|Rmm-Diisk
scf.ProExpn.VNA on scf.BufferL.VNA 6 scf.RadialF.VNA 6 1DFFT.NumGridK 900 1DFFT.NumGridR 900 1DFFT.EnergyCutoff 3600 --------
I obtained the following result:
-------- Uele. -17.953458526658
Ukin. 29.185513926027 UH0. -79.574262251334 UH1. 0.080901785963 Una. -51.583506088099 Unl. 14.676401841005 Uxc0. -5.172999349136 Uxc1. -5.172999349136 Ucore. 25.000000000000 Uhub. 0.000000000000 Ucs. 0.000000000000 Uzs. 0.000000000000 Uzo. 0.000000000000 Uef. 0.000000000000 UvdW 0.000000000000 Utot. -72.560949484710
Chemical Potential (Hartree) = -0.08999879347211 Number of States = 20.00000000000000 HOMO = 10 Eigenvalues Up-spin Down-spin 1 -1.68429132149360 -1.68429132149360 2 -1.38974576163668 -1.38974576163668 3 -1.00190985060590 -1.00190985060590 4 -0.96884060436313 -0.96884060436313 5 -0.96884053252333 -0.96884053252333 6 -0.94114795877745 -0.94114795877745 7 -0.94114788614233 -0.94114788614233 8 -0.85682435786345 -0.85682435786345 9 -0.13398219645059 -0.13398219645059 --------
Compared to a result with the OpenMX's pao and vps, it seems that the splitting of the 3s state is too large, suggesting that the calculation does not converge with respect to some parameters. Also, I noticed that your basis functions are very close to overcompleness, which can be guessed from the eigenvalues of overlap matrix. I would say that from the observation about the overcompleness, when you calculate higher coordinated systems, the calculation will become very erratic.
I am wondering why you want to use such a vps and pao.
Regards,
TO
|
Re: Using openmx with external pseudopotentials ( No.4 ) |
- Date: 2016/05/11 22:08
- Name: Daniil
- Hi,
>The basis functions stored in a pao file is used as basis to expand the neutral atom potential. >So, you do not need to add basis functions in your input file to expand the KS orbitals.
Thanks, that was not obvious.
I created subfolder 12pao in my dropbox, containing calculations with 12 paos for each L. Results are rather close to yours. Though, I do not understand why two upper non-occupied states have energy of 10000 hartrees, which seems to be a substitute of infinity. Their pao expansion is also strange.
These PPs were optimized for precise calculations of some electronic energetic properties of heavy d- and f-elements. Calcium is just a preliminary test. There also will be a separable addition for subvalent shells (3s and 3p for calcium), and I hope it will fix that splitting problem.
Basis functions can be improved, but I don't understand what do you mean by overcompleness. Functions were orthonormed before writing in pao file, and I checked eigenvalues of overlap matrices for different Ls, and got following numbers: --------L=0 1.0 0.999999776898 0.999999999684 1.00000000001 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 --------L=1 0.999470184757 0.999992951033 0.999999882258 1.00000000004 1.0 0.999999999998 1.0 1.0 1.0 1.0 1.0 1.0 --------L=2 0.999998188444 0.999999991795 0.999999999947 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
Best regards, Daniil
|
Re: Using openmx with external pseudopotentials ( No.5 ) |
- Date: 2016/05/11 23:19
- Name: Artem Pulkin
- "Basis functions can be improved, but I don't understand what do you mean by overcompleness. Functions were orthonormed before writing in pao file, and I checked eigenvalues of overlap"
I guess these are overlaps for an isolated atomic-like basis. In a solid you are going to have overlaps between PAOs of different (coordinated) atoms. The more coordinated system is the less predictive the eigenvalues of overlap matrix are. Once some of the eigenvalues become negative you are likely to end up with wrong electronic structure.
|
Re: Using openmx with external pseudopotentials ( No.6 ) |
- Date: 2016/05/12 09:42
- Name: T. Ozaki
- Hi,
With your pao (ca-s2p2d1), the eigenvalues of the overlap matrix for a Ca dimer (r=4 a.u.) are
-------- Eigenvalues of OLP 1 0.004139084350727 Eigenvalues of OLP 2 0.188405918038244 Eigenvalues of OLP 3 0.188405918038339 Eigenvalues of OLP 4 0.390713214843684 Eigenvalues of OLP 5 0.671365519471135 Eigenvalues of OLP 6 0.789591042348827 Eigenvalues of OLP 7 0.789591042348844 Eigenvalues of OLP 8 0.871155866352737 Eigenvalues of OLP 9 0.871155866352770 Eigenvalues of OLP 10 0.929913266728999 Eigenvalues of OLP 11 0.929913266729099 Eigenvalues of OLP 12 0.938033257394950 Eigenvalues of OLP 13 0.959283034677133 Eigenvalues of OLP 14 1.039833236398056 Eigenvalues of OLP 15 1.060932360731415 Eigenvalues of OLP 16 1.068508272247237 Eigenvalues of OLP 17 1.068508272247329 Eigenvalues of OLP 18 1.127902108701658 Eigenvalues of OLP 19 1.127902108701707 Eigenvalues of OLP 20 1.208490721277828 Eigenvalues of OLP 21 1.208490721277936 Eigenvalues of OLP 22 1.327419684964429 Eigenvalues of OLP 23 1.608277787745180 Eigenvalues of OLP 24 1.810338912611498 Eigenvalues of OLP 25 1.810338912611506 Eigenvalues of OLP 26 1.994356122793647 --------
The first eigenvalue is found to be small even for the dimer, suggesting near the overcompleteness. For the case, OpenMX tries to eliminate the vector in the spanned space which can be confirmed in lines 638-644 in Cluster_DFT.c:
if (1.0e+3<C[spin][i1][i1]){ for (j1=1; j1<=n; j1++){ C[spin][i1][j1] = 0.0; C[spin][j1][i1] = 0.0; } C[spin][i1][i1] = 1.0e+4; }
The treatment is the reason why you got the occupied states having energy of 10000 hartree. When I commented out the lines and re-performed the calculation, I found that the the splitting of the 3s states is comparable to that calculated by OpenMX's pao and vps. However, it would be better to use well optimized and numerically stable basis functions instead of the current ones, if you still stick to the pseudopotential.
Regards,
TO
P.S. Could you let us know reference papers about the generation of this type of pseudopotentials?
|
Re: Using openmx with external pseudopotentials ( No.7 ) |
- Date: 2016/05/12 22:34
- Name: Daniil
- Hi,
Now I see the problem, thanks. Perhaps it is because of large radius of functions (~25 for calcium). We have not yet prepared functions restricted by a spherical potential well, as in openmx, instead I just took a cutoff radius large enough to contain 99,99% of all functions. Anyway, current basis definitely needs improvements.
I created 'papers' directory in dropbox. Main paper is 16-Mosyagin_GRECPs4An_10.1002_qua.24978.pdf , and others are applications.
Best regards, Daniil
|
Re: Using openmx with external pseudopotentials ( No.8 ) |
- Date: 2016/05/13 01:03
- Name: Daniil
- I limited basis set to s2p1 to get rid of overcompleteness. Small eigenvalue disappeared, but once again, I got wrong electron number, despite providing 12 paos for neutral atom potential.
-------- Eigenvalues of OLP 1 0.264606267487554 Eigenvalues of OLP 2 0.906994912245378 Eigenvalues of OLP 3 0.946105773624548 Eigenvalues of OLP 4 0.977482251850150 Eigenvalues of OLP 5 0.977482251850218 Eigenvalues of OLP 6 1.021205410720706 Eigenvalues of OLP 7 1.021205410720722 Eigenvalues of OLP 8 1.053337730940116 Eigenvalues of OLP 9 1.091788082055263 Eigenvalues of OLP 10 1.733985737273381 Eigenvalues of Kohn-Sham 1 -1.861859989440 Eigenvalues of Kohn-Sham 2 -1.861859989440 Eigenvalues of Kohn-Sham 3 -1.815594082209 Eigenvalues of Kohn-Sham 4 -1.815594082209 Eigenvalues of Kohn-Sham 5 -1.179046502248 Eigenvalues of Kohn-Sham 6 -1.179046502248 Eigenvalues of Kohn-Sham 7 -1.127721893859 Eigenvalues of Kohn-Sham 8 -1.127721893859 Eigenvalues of Kohn-Sham 9 -1.118449100239 Eigenvalues of Kohn-Sham 10 -1.118449100239 Eigenvalues of Kohn-Sham 11 -1.100369851010 Eigenvalues of Kohn-Sham 12 -1.100369851010 Eigenvalues of Kohn-Sham 13 -1.091829921281 Eigenvalues of Kohn-Sham 14 -1.091829921281 Eigenvalues of Kohn-Sham 15 -1.058110695433 Eigenvalues of Kohn-Sham 16 -1.058110695433 Eigenvalues of Kohn-Sham 17 5.093708567343 Eigenvalues of Kohn-Sham 18 5.093708567343 Eigenvalues of Kohn-Sham 19 30.322649580591 Eigenvalues of Kohn-Sham 20 30.322649580591 ChemP= 5.000000000000 HOMO = 16 Eele0=-20.705964071437 Eele1=-20.705964071437 Sum of MulP: up = 8.00000 down = 8.00000 total= 16.00000 ideal(neutral)= 20.00000 ------ (directory 's2p1' in dropbox)
Best regards, Daniil
|
Re: Using openmx with external pseudopotentials ( No.9 ) |
- Date: 2016/05/15 10:40
- Name: T. Ozaki
- Hi,
In this case, OpenMX could not find the proper chemical potential which maintains the number of electrons, since the distribution of eigenvalues for Kohn-Sham equation is out of the range in searching the chemical potential. This is caused by a fact that matrix elements for the non-local potential does not converge, and are rather erratic. When I changed the corresponding parameters as
1DFFT.NumGridK 4000 1DFFT.NumGridR 4000 1DFFT.EnergyCutoff 6000
I could recover the number of electrons.
I also noticed a problem for your pao: Though the cutoff radius is 25.41833395, the radius defined ranges up to 140.968357865437895. So, the numerical integration is found to be very inefficient, because the integration is taken into account for the wide range of radius with the contributions of zero.
Please remind that the efficient implementation of DFT largely depends on a sort of vps and pao.
Regards,
TO
P.S. Thank you very much for letting us know your papers.
|
Re: Using openmx with external pseudopotentials ( No.10 ) |
- Date: 2016/05/15 22:27
- Name: Daniil
- Hi,
Thanks a lot for all your answers! I hope now I have enough information for further actions. One more question, however: In Blochl expansion |vf(i)>1/c(i)<vf(i)|, basis f(i) is chosen for <f(i)|v|f(j)> to be zero, and it is ensured in current separabilization of semilocal part of pseudopotential. I am going to add a separable part for subvalent shells as additional projector for each required L. These projectors will "overlap" with semilocal projectors, and above-mentioned condition will not be met. So, could this lead to problems? By physical meaning it is correct, as it is implied that separable part is added to semilocal PP for subvalent shells, but maybe there are some restrictions in openmx code.
Best regards, Daniil
|
Re: Using openmx with external pseudopotentials ( No.11 ) |
- Date: 2016/05/17 04:00
- Name: Daniil
- It turned out that generating numeric DFT basis with a cutoff is more complex task than I thought. But it is already implemented in of ADPACK.
Is it possible to somehow pass external pseudopotential to 'Multiple_PAO' module? Data is passed there through global variables, so it is rather difficult to understand code without deep study. And of course, problems can arouse from singularity of potential and unusual behavior of S-functions.
Best regards, Daniil
|
Re: Using openmx with external pseudopotentials ( No.12 ) |
- Date: 2016/05/17 20:57
- Name: T. Ozaki
- Hi,
> but maybe there are some restrictions in openmx code.
OpenMX just assumes that the pseudopotential takes the form of |vf(i)>1/c(i)<vf(i)|, never care about how it has been generated. Users should be responsible for use of such a pseudopotential which is far from the conventional pseudopotentials stored in the database 2013.
> Is it possible to somehow pass external pseudopotential to 'Multiple_PAO' module?
If you figure out the structure of ADPACK, it would be possible by passing your pseudopotential in Multiple_PAO.c.
Regards,
TO
|
Re: Using openmx with external pseudopotentials ( No.13 ) |
- Date: 2016/06/05 00:13
- Name: Daniil
- Hi again!
Recently I received a more suitable (yet still not perfect) basis, and made some calculations for Ca and Ca2, considering all your remarks. Results were noticeably better, however there some unclear things. I used three basises: minimal - s2p1, small - s2p2d1, and medium - s6p6d6. In all cases I got too high energy (but not 1e4 as in previous calculations) for two or more uppermost orbitals. There is some overcompleteness, as can be seen from overlap eigenvalues and AO decomposition of problematic orbitals, but it has same order as in calculations with default openmx VPS and PAO. Moreover, for s2p1 and s2p2d1 orbital decompositions of upper orbitals with default and mine PAO and VPS are very similar (high orbitals in my basis seem to have different nature than in openmx, so it is not the same in s6p6d6). So, it looks like openmx can somehow compensate overcompleteness with its common PAO and VPS, but fails in case of different ones. If it only influences energies of upper virtual orbital orbitals, it will not be a serious problem, but I am afraid this can have some other "hidden" effects.
I used following parameters for DFT: 1DFFT.NumGridK 6000 1DFFT.NumGridR 6000 1DFFT.EnergyCutoff 9000 If ever increasing them can fix this problem, what max values are reasonable to test? Or the problem has different origin? My calculations of Ca and Ca2, and also comparative calculations of Ca2 with original VPS and PAO are located in same dropbox folder, in a 'newbasis' subdirectory.
Best regards, Daniil
|
|