[CP2K-user] piezoelectric constants

Pierre-André Cazade pierre.a... at gmail.com
Wed Sep 4 10:14:50 UTC 2019

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,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20190904/97ea89ee/attachment.htm>

More information about the CP2K-user mailing list