[CP2K-user] [CP2K:12183] piezoelectric constants

Pierre Cazade pierre.a... at gmail.com
Fri Sep 6 09:22:05 UTC 2019

Dear Juerg,

Thank you for your answer. I noticed that the stress tensor is not 
available when an electric field is applied, therefore I am using the 
"NUMERICAL" option instead of the "ANALYTICAL". Is it in vain? If so, it 
would be fantastic to have piezoelectric and elastic constants 
calculations available in CP2K, though I am well aware it would a lot of 
work. Would the stress tensor calculation be available on a fork 
version? If I can help for implementation or testing, I would be 
delighted to do so.

Regarding PERIODIC_EFIELD, what are the a.u. of the INTENSITY parameter? 
In the context of a constant electric field, does INTENSITY means the 
square of the amplitude as the name of the keyword suggest, or simply 
the amplitude?

Finally, I have tried another approach to obtain piezoelectric constants 
which consists in applying a strain, let the atoms relax and measure the 
polarisation. An easy way to get the polarisation is to use the Berry 
Phase dipole moment. However, the former is only available for localized 
basis sets and not plane waves. Localization is fortunately available in 
CP2K but the BP values I get for my finite differences are not 
monotonous which make it impossible to get  accurate piezo constants. To 
be clear, I apply a strain of 1e-6 for the 6 Voigt components of the 
unit cell (I will spare the linear algebra for the off-diagonal terms). 
Is the strain I apply still too large to perform finite differences or 
is the localization non unequivocal? Please find below the localization 
parameters I am using:


Having both approaches would be great in order to get the direct and 
converse piezoelectric constants, though it is possible to get one from 
the other via the elastic tensor. However, the electric field approach 
looks more robust for plane wave method as it does not require a 

Best regards,

On 06/09/2019 09:35, hut... at chem.uzh.ch wrote:
> Hi
> in the Trunk version of CP2K on github, the stress tensor calculation
> for systems with applied field has been disabled. The implementation needs
> more testing and debugging.
> I put it on the 'TODO' list.
> regards
> Juerg HUtter
> --------------------------------------------------------------
> Juerg Hutter                         Phone : ++41 44 635 4491
> Institut für Chemie C                FAX   : ++41 44 635 6838
> Universität Zürich                   E-mail: hut... at chem.uzh.ch
> Winterthurerstrasse 190
> CH-8057 Zürich, Switzerland
> ---------------------------------------------------------------
> -----cp... at googlegroups.com wrote: -----
> To: "cp2k" <cp... at googlegroups.com>
> From: "Pierre-André Cazade"
> Sent by: cp... at googlegroups.com
> Date: 09/04/2019 12:14PM
> Subject: [CP2K:12180] piezoelectric constants
> Dear CP2K users,
> I am trying to use CP2K to compute piezoelectric constants for systems too large to be treated with VASP for example. Unfortunately, CP2K does not come with an routine to do so, therefore I have to do it myself. I am using finite differences to estimate dn_i/dE_j term where n stands for strain and E for electric field. I am using the PERIODIC_EFIELD routine to try to achieve that. However, it does not work. In the finite difference approach, one applies a perturbation "h" to a function in an incremental way and collects the values  f(x-3h), f(x-2h), f(x-h), f(x+h), f(x+2h), f(x+3h). To get the +/-, I change the direction of the field using the POLARISATION keyword. For example, POLARISATION -1.0 0.0 0.0 for a field pointing in the reverse direction of the x-axis and POLARISATION 1.0 0.0 0.0 to point in the same direction as the x-axis. I get the h, 2h, 3h by increasing the INTENSITY accordingly. The problem is I get the same response whether the field is positive or negative, it is only sensitive to the INTENSITY. Consequently, I get 0 for all my constants. VASP uses, to my understanding, the same procedure and yields excellent results for beta glycine which is the test case I am toying with. In a desperate attempt, I even change the sign of the INTENSITY. I wonder if there is a bug as changing the sign in POLARISATION does not seem to actually change the direction of the electric field. Has anyone ever encountered this issue? If anyone knows how to compute piezoelectric constants and elastic constants with CP2K, I would be grateful for their help.
> Best regards,
> Pierre
>    --
>   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 cp... at googlegroups.com.
>   To view this discussion on the web visit https://groups.google.com/d/msgid/cp2k/9b0947db-d9c7-460e-a45e-efbe87d87bf6%40googlegroups.com.

Dr Pierre Cazade, PhD
AD3-023, Bernal Institute,
University of Limerick,
Plassey Park Road,
Castletroy, co. Limerick,

More information about the CP2K-user mailing list