# Cut off convergence with Hubbard and long-range interactions on VASP

I have a multilayer structure formed by C,O,H,N and Cu, for a total of 174 atoms. I am thus using U+J Hubbard methodology as well as Grimme corrections within VASP code.

I am doing some convergence studies on the cut-off energy, however by enhancing the ENCUT I don't seem to observe an asymptotic behaviour:

500 -1276.831952
600 -1277.155878
700 -1277.796961
800 -1278.072343
900 -1278.145255
1000    -1278.162641
1100    -1278.204966
1200    -1278.212487
1300    -1278.220382
1400    -1278.255053
1500    -1278.371105
1600    -1278.873485


Moreover, I noticed that after 1000eV, I have in the OUTCAR the warning:

WARNING: PSMAXN for non-local potential too small


Does anyone have a suggestion? Am I missing something?

It seems to be converged. I don't think you will ever get the exact asymptotic behaviour but I assume the criteria for convergence is around 1 meV in total energy per 1 eV in ENCUT. I plotted the convergence with respect to ENCUT from your data and obtained this following plot. Personally, I would choose 900 eV or 1000 eV as the converged ENCUT. I think after 1300-1400 eV, the accuracy doesn't improve due to diminishing returns or the numerical error gets much larger. But this is typical for any set of pseudopotentials. There is some high energy cutoff after which the accuracy doesn't improve and instead gets worse.

The python code I used is:

import matplotlib.pyplot as plt

cutoffs = []
convergence_values = []

with open('data.txt', 'r') as file:
for i in range(1, len(lines)):
prev_cutoff, prev_energy = map(float, lines[i-1].split())
cutoff, energy = map(float, lines[i].split())

convergence = abs((energy - prev_energy) / (cutoff - prev_cutoff)) * 1000

cutoffs.append(cutoff)
convergence_values.append(convergence)

plt.plot(cutoffs, convergence_values, marker='o', markersize=10, markerfacecolor='blue', linestyle=':', linewidth=2, color='black')
plt.xlabel('ENCUT (eV)', fontsize=20)
plt.ylabel(r'$$\Delta E\,$$ (meV)', fontsize=20)
plt.title('Kinetic energy cutoff convergence test', fontsize=20)
plt.xticks(fontsize=12)
plt.yticks(fontsize=12)
plt.grid(False)
plt.show()

• Thanks a lot. I think I missed the information about the high cut-off energies and consequently, I couldn't see it converged. Thanks! One last thing: do you have any reference for '1meV in total energy per 1eV of ENCUT'? Normally, I have seen either converged over the total energy (eV) or total energy/total atoms (eV/atom) Commented Apr 17 at 14:49
• @Laura does this answer your question? Commented Apr 17 at 16:40
• Yes and no. Generally, I've always been told that the convergence should be achieved in comparison to the asymptotic value and not with the previous value of total energy. That's why I asked for a reference, if you have it (publication or more 'official' studies). Thanks again! Commented Apr 17 at 17:07
• @Laura Maybe you should ask a new question about it then! Also, I am not quite getting what you meant by asymptotic value. When you increase ENCUT, the total energy will ALWAYS increase no matter how small the increments are. That's why you should have some convergence criteria. And convergence always means it is referenced with the previous steps energy. Without referencing to the previous value of total energy, how will you define 'convergence'? Commented Apr 17 at 19:21
• As far as I know, you should refer to an asymptotic value of your total energy. Because, if you refer to the step before, you can have a small difference between the two steps, but still very far from the asymptotic value! You can see as example here: dannyvanpoucke.be/vasp-tutor-convergence-testing-en . In this case, the asymptotic value is referred as 'reference' in the graph Commented Apr 18 at 8:15