[CP2K-user] [CP2K:21500] Questions regarding pseudopotential and basis set generation.
Michael LaCount
lacount.mi at gmail.com
Tue May 27 20:54:11 UTC 2025
I've done some more work and have made a pseudopotential and basis for
Ga-q3 for PBE and r2SCAN (r2SCAN basis is still in progress). The PBE as
far as I can tell looks good, however I'd welcome a second opinion:
Reference configuration 1 Method number
1
L N Occupation Eigenvalue [eV] dE [eV]
dCharge
0 1 2.00 -8.9070605411 VA 0.000151[ X]
-0.000937[ 3]
0 2 0.00 0.2814465422 U1 -0.000229[ X]
0.000607[ X]
0 3 0.00 5.9015708838 U2 -0.014841[ X]
0.003233[ 0]
1 1 1.00 -2.5412387531 VA 0.000300[ X]
-0.000789[ 2]
1 2 0.00 1.9032645357 U1 0.000696[ X]
0.000142[ X]
1 3 0.00 8.3552326430 U2 -0.008647[ X]
0.002687[ 0]
2 1 0.00 1.7060736638 U1 -0.000850[ X]
0.000903[ X]
2 2 0.00 5.8730820280 U2 -0.021470[ X]
0.006085[ 0]
3 1 0.00 3.7199308846 U1 0.001920[ X]
-0.000056[ X]
s-states N= 1 Wavefunction at r=0:
-0.005687[ 0]
s-states N= 2 Wavefunction at r=0:
0.011672[ 0]
s-states N= 3 Wavefunction at r=0:
0.024741[ 0]
Number of target values reached: 13
of 15
After creating a basis set I did a small test. My target system is c-GaN,
so I did a geometry optimization using Ga-q13 and my new Ga-q3 for a GaN
molecule, I also did an energy calculation of Ga, N, Ga3+ and N3-. Combined
I looked at the equilibrium bond length, ionization energy of Ga -> Ga3+,
and the energy to break the bond (creating either atoms or ions).
Using TZV2P sized basis sets I get:
q13 q3
Bond-length 1.707428637 1.682732901
Ga-ionization 1.804359228 1.766611429
Bond-Strength (to ions) -2.544873412 -2.505056579
Bond-Strength (to atoms) -0.047600299 -0.045531265
Using DZVP sized basis sets I get similar results. Setting aside the actual
numbers I get, the results seem reasonably in agreement considering I
pseudized the d-electrons (I'm aware that this is a large approximation so
I shouldn't expect perfect agreement).
The r2SCAN I'm less happy with, I tried adding an extra coefficient to the
potential for both the local and d nonlocal terms (1 3 2 2 total
coefficients i.e. the 2nd column in the pseudopotential). I've tried
everything I can think of to further optimize the function but can't get it
to improve further. Maybe more coefficients could improve it further, but
I'm not sure which to increase.
Reference configuration 1 Method number
1
L N Occupation Eigenvalue [eV] dE [eV]
dCharge
0 1 2.00 -9.2192607955 VA 0.000310[ 0]
0.007449[62]
0 2 0.00 0.8410517459 U1 -0.006498[ 2]
0.001620[ X]
0 3 0.00 6.5410088683 U2 -0.070940[ 0]
0.007503[ 0]
1 1 1.00 -2.5061195817 VA 0.000315[ 0]
0.005716[36]
1 2 0.00 2.3929875226 U1 -0.000019[ X]
0.001701[ X]
1 3 0.00 9.2406249709 U2 -0.050517[ 0]
0.006367[ 0]
2 1 0.00 2.2546026016 U1 0.003000[ X]
0.002766[ 0]
2 2 0.00 6.4924159716 U2 -0.017151[ X]
-0.004616[ 0]
s-states N= 1 Wavefunction at r=0:
0.000646[ 0]
s-states N= 2 Wavefunction at r=0:
0.013822[ 0]
s-states N= 3 Wavefunction at r=0:
0.027648[ 0]
Number of target values reached: 5
of 13
After I make a matching basis I plan to do the same tests with this PP, but
I think it may be insufficiently accurate. Any further ideas on how to
improve this would be welcomed.
On Wednesday, May 7, 2025 at 8:04:38 AM UTC-7 Jürg Hutter wrote:
Hi
final evaluation of PP can only be done on your target systems.
During PP optimization I would go for low functional values with a special
look at the
values for the orbital energies (valence orbitals, semicore orbitals,
virtual orbitals, in that order).
You can find those values for all the PP in the POTENTIAL_UZH file as a
reference.
In this specific case I would aim for near perfect values for all orbital
energies (VA and U1).
U1 for s will be hardest to get down. dCharge values will be hard to get
and will probably
dominate the function value in the end.
For the reference basis in the MOLOPT procedure I would go for an optimized
Geometrical basis.
You can get those easily with the atom code (don't use a confinement
potential). Play with the number
of primitives until you get a 'converged' energy.
regards
JH
________________________________________
From: cp... at googlegroups.com <cp... at googlegroups.com> on behalf of Michael
LaCount
Sent: Tuesday, May 6, 2025 11:04 PM
To: cp2k
Subject: [CP2K:21447] Questions regarding pseudopotential and basis set
generation.
I have been working on generating a 3 valence electron Gallium
pseudopotential and basis (for r2SCAN). Acknowledging that pseudizing the
d-electrons is questionable, it may become necessary for what I am trying
to do.
I was tempted to email Jürg Hutter directly, but am posting it here in case
it is of use to future users.
With regards to the ATOM code, I tried a few variations in optimizing the
pseudopotential based on the PBE pseudopotential, SCAN pseudopotential and
SCAN but with an additional local contraction term. I understand that the
optimization is 90% trial and error with the POWELL settings (STEP_SIZE,
STEP_SIZE_SCALING, MAX_INIT, and MAX_FUN). What is not clear to me though
is how to evaluate whether I have made a good or bad pseudopotential. From
my runs I have 3 candidates:
PBE:
Final value of function 0.1530340305
Reference configuration 1 Method number 1
L N Occupation Eigenvalue [eV] dE [eV] dCharge
0 1 2.00 -9.2192459546 VA 0.000325[ 0] 0.008127[26]
0 2 0.00 0.8396512255 U1 -0.007898[ 8] 0.001720[ X]
0 3 0.00 6.5350291666 U2 -0.076920[ 0] 0.008006[ 0]
1 1 1.00 -2.5060816724 VA 0.000353[ 0] 0.006282[15]
1 2 0.00 2.3918661427 U1 -0.001140[ X] 0.001833[ X]
1 3 0.00 9.2353950765 U2 -0.055747[ 0] 0.006591[ 0]
2 1 0.00 2.2546328512 U1 0.003031[ 0] 0.004738[ 0]
2 2 0.00 6.4400471697 U2 -0.069520[ 0] 0.011434[ 0]
3 1 0.00 4.2413610819 U1 0.014969[50] -0.000072[ X]
s-states N= 1 Wavefunction at r=0: 0.005050[ 0]
s-states N= 2 Wavefunction at r=0: 0.016265[ 0]
s-states N= 3 Wavefunction at r=0: 0.032084[ 0]
Number of target values reached: 4 of 15
SCAN:
Final value of function 587.1874144433
Reference configuration 1 Method number 1
L N Occupation Eigenvalue [eV] dE [eV] dCharge
0 1 2.00 -9.2169294346 VA 0.002641[ 2] 0.006948[ 0]
0 2 0.00 0.8283557076 U1 -0.019194[ 0] 0.002138[ X]
0 3 0.00 6.5240034385 U2 -0.087945[ 0] 0.008142[ 0]
1 1 1.00 -2.4873044888 VA 0.019130[98] 0.000623[ 0]
1 2 0.00 2.3990344827 U1 0.006028[ 0] 0.001717[ X]
1 3 0.00 9.2663576926 U2 -0.024784[ X] 0.006565[ 0]
2 1 0.00 2.2541499839 U1 0.002548[ X] 0.001125[ X]
2 2 0.00 6.4898896260 U2 -0.019678[ X] 0.004534[ 0]
3 1 0.00 4.2330247834 U1 0.006633[ 0] -0.000068[ X]
s-states N= 1 Wavefunction at r=0: 0.010116[ 0]
s-states N= 2 Wavefunction at r=0: 0.018885[ 0]
s-states N= 3 Wavefunction at r=0: 0.036626[ 0]
Number of target values reached: 7 of 15
and SCAN (2nd local contraction):
Final value of function 2.2705690182
Reference configuration 1 Method number 1
L N Occupation Eigenvalue [eV] dE [eV] dCharge
0 1 2.00 -9.2192585449 VA 0.000312[ 0] 0.007863[49]
0 2 0.00 0.8401648110 U1 -0.007385[ 3] 0.001685[ X]
0 3 0.00 6.5372420030 U2 -0.074707[ 0] 0.007822[ 0]
1 1 1.00 -2.5061070718 VA 0.000328[ 0] 0.006045[28]
1 2 0.00 2.3923327908 U1 -0.000674[ X] 0.001777[ X]
1 3 0.00 9.2375753924 U2 -0.053566[ 0] 0.006499[ 0]
2 1 0.00 2.2546302822 U1 0.003028[ 0] 0.004673[ 0]
2 2 0.00 6.4410410581 U2 -0.068526[ 0] 0.011278[ 0]
3 1 0.00 4.2412241163 U1 0.014832[20] -0.000072[ X]
s-states N= 1 Wavefunction at r=0: 0.003682[ 0]
s-states N= 2 Wavefunction at r=0: 0.015481[ 0]
s-states N= 3 Wavefunction at r=0: 0.030640[ 0]
Number of target values reached: 4 of 15
Some of these might be improved with more iterations, but I am unsure how I
should evaluate each of the pseudopotentials against the others. Is it
better to have a lower "Final value of function", or to have a greater
number of target values reached. Is there a rule of thumb for knowing when
I have reached a reasonable PP?
Next, I have a small question about the generation of MOLOPT style basis
sets. I have gone through Jürg Hutter's github and get 90% of the workflow
for that. I just don't quite understand the uncontracted basis set
generation. I can use the ATOM code to generate an uncontracted 'complete'
basis set, but the results seem very dependent on the initial guess. Is
there a general rule for how many basis functions I should use and/or the
range of the exponential terms? Other than taking more time, can I just
make an overkill basis (something like 12 functions per orbital type with
value ranging from 100 to .01) set for the purposes of making the final
basis?
--
You received this message because you are subscribed to the Google Groups
"cp2k" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to cp2k+uns... at googlegroups.com<mailto:cp2k+uns... at googlegroups.com>.
To view this discussion visit
https://groups.google.com/d/msgid/cp2k/0ade320f-1a54-439a-8c59-12c0d916f1c6n%40googlegroups.com
<
https://groups.google.com/d/msgid/cp2k/0ade320f-1a54-439a-8c59-12c0d916f1c6n%40googlegroups.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups "cp2k" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cp2k+unsubscribe at googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/cp2k/5a2bfe4b-25d4-4d23-8307-76104a6a5167n%40googlegroups.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20250527/798a43c3/attachment-0001.htm>
More information about the CP2K-user
mailing list