<div dir="ltr">Dear CP2K users,<div><br></div><div>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.</div><div><br></div><div>Best regards,</div><div>Pierre</div></div>