FAQ¶
This section attempts to address Frequently Asked Questions regarding Environ. If your query does not relate to any of these sections, check out the Q&A section on the website, which has instructions on joining the mailing group where you can chat with one of the developers.
Converge Issues¶
There are physical and/or numerical reasons for why a calculation may explode. The latter is easier to solve, by tuning some of the parameters in the input file. The former is a little more tricky to handle.
Roughly speaking, in a calculation with Environ, one needs to include some extra terms to the Kohn-Sham potential of the system in vacuum. These terms depend on the electronic density itself, in particular due to the fact that the interface between the system and the environment is defined in terms of the electronic density. Moreover, to compute one of these terms (e.g. the electrostatic interaction with the dielectric continuum), Environ uses an iterative approach, so at every SCF step, there is an additional iterative procedure performed by Environ, let’s call this the polarization iteration, in contrast to the SCF iteration.
There are two Environ parameters which are crucial to help convergence of the total SCF calculation,
tol
, which controls the convergence of the polarization iteration, and environ_thr
, which determines
when the polarization iteration starts.
When you decrease tol
, the extra term coming from the interaction with the dielectric will be computed more
accurately, but it will require more time to be computed. On the other hand, if the parameter is not set to
be sufficiently accurate, the SCF procedure may not convergence as quickly, thus slowing the simulation down
noticeably. Furthermore, a low convergence speed in the SCF may leads to oscillation around the SCF threshold,
leading to convergence failure. Due to the fact that in general, the polarization iteration is less expensive
than the SCF iteration, it is recommended that the user opts for a decreased tol
when encountering these
issues. Hence if in doubt, start with a generic value for the tolerance, be it the default or some value taken
from the examples (depending on what you’re trying to simulate), and decrease if necessary.
The existence of environ_thr
allows for better convergence in general, since it is advisable not to add
polarization correction terms in the first few SCF steps, due to the fact the accuracy of these energy terms
will still be poor (although if one is starting from a good set of input parameters, it is probably fine to
enable the polarization correction from the start of the iteration, in which case the
environ_restart = .true.
will enable this). On the other hand, waiting too long to
start adding Environ corrections can lead to poor convergence due to the fact that before the polarization
iteration corrections kick in, the system is converging for vacuum, not a solution. Hence one can analyze the
output file and see when the correction terms begin, in order to judge whether environ_thr
is good or not.
If the SCF accuracy explodes or converges poorly after the polarization iterations begin, it is recommended
that one increases environ_thr
. One rule of thumb to go by would be to make sure that Environ corrections
skip only around 3-5 SCF steps.
A further source of errors may arise due to the use of pseudopotentials for handling core electrons. This
problem is more common in transition metals of halogens, and it comes from the neglect of these core
electrons in the charge density used to build the interface with the environment. In some cases there appears
to be a hole in the charge density on the nuclei, which is then filled with the environment (in fact, a
couple of the examples in the tutorial address this fact and account for it in the input file). The solution
is to use solvent_mode = 'full'
. This option adds additional gaussians centered on each atom, effectively
describing the core electrons and thus not allowing the environment to permeate inside the atoms, while
not compromising the definition of the interface.
Another suggestion is to simplify the physics in the problem. In particular, since in most applications the
most important effects of the environment are the electrostatic ones, you may want to switch off all the other
non-electrostatic terms. This is possible by setting environ_type = 'input'
and manually setting the
parameters that you want. By only setting env_static_permittivity = 78.3
, one only retains the dielectric
continuum in the calculation, since all other contributions are off by default.
When simulating a 2D system, convergence of the polarization potential is made more difficult by the artificial finite electric field coming from periodic boundary conditions. To avoid this, it would be better to use a PBC correction, in particular for slabs in Environ, a parabolic correction is implemented, and alternatively, one can utilize the Quantum ESPRESSO isolated options. See example 3 for a demonstration on isolated systems. Increasing the cellsize perpendicular to the slab will decrease periodic effects but increase convergence times due to the larger cell.
One reason of poor convergence is simply a complex shape of the interface. New releases implement models designed to deal with some of these complex shapes.
Harris-Foulkes Estimate¶
The Harris-Foulkes estimate does not take into account the extra terms coming from Environ, as it would cost more than necessary for a quantity that is only used to have an estimate. As a matter of fact, also the SCF accuracy does not take into full account of the environment, but again it would need a secondary correction that would cost more than its utility.
Environ Total-Energy Sum¶
The energy output in an Environ calculation may be confusing in that the total energy is not the sum of the
reported terms and it is not immediately clear what solvation energy means, but before going into the details
of why, one point should be addressed. dGsol
, and in particular dGel
, are not quantities that you
get from a single calculation in solution, but rather are obtained as the difference in energy from a
calculation fully optimized (nuclei and electrons) in solution minus a calculation fully optimized (nuclei and
electrons) in vacuum. This is explained in Example 1 of the Tutorial. In general, for these values, one needs
two geometry optimization (relax) calculations for these energy values that are typically reported in our
publications. Hence solvation energy requires two calculations.
The different terms do not add to the same energy due to the fact that there is a spurious extra term which is subtracted from the one-electron contribution, but is not reported in the output. The reason is that total energy is computed in pw making use of the secular expression (see for example W. E. Pickett, Computer Physics Reports, 9(3), 115-198, 1989, equations 5.21-5.22 etc.), thus from the sum of occupied states eigenvalues (so called band structure energy, “eband” in pw.x), in which some contributions are included correctly (the kinetic and the electron-nuclei interaction), some are double counted (hartree), some need to be removed and added back with the correct expression (xc term), and some are missing (nuclei-nuclei interaction via ewald sum). What PW reports in the output as the one-electron contribution is in fact ebands minus the double counted hartree and minus the wrong xc term (these spurious terms are summed up in pw.x into a term named “deband”).
Similarly, when performing the solvated calculation, there are some terms which are double counted (the electronic part of the solvation energy), some that are missing (the ionic part of the solvation energy), some that have the wrong expression (pressure and cavitation) and some that need to be removed (for example a term coming from the rho-dependence of the dielectric constant). All these spurious terms are collected in a term named “deenviron”, which has the same meaning as “deband” seen above. To get to the point, what is wrong in the output is the one-electron contribution, which is reported including the spurious deenviron term. As the Environ module was designed not to affect the standard printout of QE, this output was not modified, and consequently, the terms do not sum to the correct total energy. The correction deenviron and deband terms were not reported, due to their insignifance in anything alone. However, this may well change in future Environ releases.