[CP2K-user] Problem in calculating liquid static dielectric constant/relative permittivity

Nt ant... at gmail.com
Wed Nov 13 21:19:51 UTC 2019


Dear all,

I am using this link to learn how to calculate the static dielectric 
constant/relative permittivity from CP2K "moments" output files:

https://www.cp2k.org/exercises:2014_ethz_mmm:monte_carlo_ice#task_1calculate_the_dielectric_constant
("Task 1: Calculate the dielectric constant")

I have started by trying to calculate the dielectric constant of water at 
20 C so that I know I am doing things correctly.  I'm using CP2K "moments" 
output files from classical (SPC/E) simulations.  I have written my own 
Python script to deal with the equation at the link that is based on the 
Python script at the link (I can't figure out how to make the script 
provided there to work with my CP2K dipole moment output files).

I have tried using two versions of the equation at the link--the one shown 
and the and one without the epsilon_0 term in the denominator (which is 
identical to a publication I'm interested in).  Neither gives me anything 
like the right answer.  I'm pretty new to this and wonder if maybe there's 
something I don't understand about the CP2K moments output or units.  Here 
is a brief summary of what I have done.  I would be extremely appreciative 
of any advice on possible mistakes:

- CP2K SPC/E simulations of water at 20 C give me: "moments.traj" files. 
Here is a snippet:

     MM DIPOLE [BERRY PHASE](A.U.)|                    -3.333675    0.611131 
  1.550260
     MM DIPOLE [BERRY PHASE](Debye)|                   -8.473356    1.553341 
  3.940367
     MM DIPOLE [BERRY PHASE] DERIVATIVE(A.U.)|          0.000767   -0.000211 
  0.001268
     MM DIPOLE [BERRY PHASE](A.U.)|                    -3.600074    0.921496 
  1.793125
     MM DIPOLE [BERRY PHASE](Debye)|                   -9.150475    2.342208 
  4.557669
     MM DIPOLE [BERRY PHASE] DERIVATIVE(A.U.)|          0.000754   -0.000212 
  0.001278

- I keep the lines in [Debye] units and dump everything else.  
- I then calculate a "total moment" for each line by summing the squares of 
each of the three components and taking the square root:

M = np.sqrt(np.sum(np.square(M_vec), axis=1)) # Take norm of dipole moment (from link above)


*- *I then convert the total moment in Debye units to SI units [C*m] by 
multiplying the total moment in Debye by 3.335641e-30.
- I then execute the following line from the link: 

s = (e*e*4*np.pi)/(3*V*kb*T*angstrom2meter)


Note: 
* I don't know where the "e" terms come from--they are not part of the Task 
1 equation and I have also not seen them anywhere else in publications.  I 
tried both excluding them and including them and excluding and including 
the "epsilon_0" term in the denominator; nothing works to give me a result 
like "80."  
* Also, I think the "angstrom2meter" term should be "1e-30" instead of 
"1e-10" as shown at the link because it is meant to operate on the volume 
term.  I did try using 1e-10 in case I misunderstood something and the 
result is still wrong.
* Finally, here is how I calculated variance.  I don't understand what 
"weights" in the code at the link is, so left that term out:

var = np.average(np.square(totalMoment)) - np.square(np.average(totalMoment
))

I also tried Python's variance and it seemed to generate a similar result:

var  = [np.var(totalMoment[:i+1]) for i in range(len(totalMoment))] 

Thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20191113/921079c9/attachment.htm>


More information about the CP2K-user mailing list