[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