This thread is locked.Only browsing is available.
Top Page > Browsing
Using openmx with external pseudopotentials
Date: 2016/04/30 22:15
Name: Daniil

Dear developers,
I am trying to use external PPs in my openmx calculations. For this, I convert a semilocal PP into Blochl form, and write it in the openmx format. I tested this with trial adpack calculation and closely reproduced .vps file from .nsvps and .vpao.
Then, I repeated this process for semilocal PP which I need to use (with corresponding basis set) and made some test calculations. At first sight, everything seems to be fine for single calcium atom, but for Ca2 molecule I got very strange errors.
With minimal basis set (s2p1) scf populates my system with 16 electrons instead of 20:
Sum of MulP: up = 8.00000 down = 8.00000
total= 16.00000 ideal(neutral)= 20.00000
And with extended basis set (s6p5d3) populations are right, but orbital and total energies are unphysical.
Pseudopotentials which I use have singular behavior at the nucleus (~ -z/r), and I suspect that this is the cause of problems, because default openmx PPs have smooth form.
If so, what criterion of "smoothness" do I need to met for PPs to use them in openmx? Or, maybe, there are some more requirements?
My input and output files, vps and pao can be found at https://www.dropbox.com/sh/jrrrz45xcxk4gxl/AAB34_ewHnsv2B0V3qcwm_Eha?dl=0
Thanks.
メンテ
Page: [1]

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
メンテ

Page: [1]