I am trying to compute the effective molecular polarizability for individual water molecules in a periodic system of 64 water molecules. I am using the following procedure based off the documentation found at http://qboxcode.org/doc/html/usage/vari ... larization:
- Apply a small electric field perturbation in one direction to the system.
- Compute the MLWFs using this perturbation.
- Map the centers of the MLWFs onto the nearest water molecules, keeping in mind the periodic boundary conditions of the system (4 per molecule).
- Compute, for each water molecule, a rough proxy to the dipole as mu = -2 * \sum_i w_i, where w_i are the positions of the MLWF centers. I do not factor in the positions of the O and H atoms weighted by their atomic numbers since these positions do not change between perturbation calculations and so they cancel out when computing a dipole difference.
- Repeat this procedure six times, with a +/- perturbation in each direction.
- Compute the finite centered difference in the dipole components and divide by the electric field perturbation to get the individual elements of the polarizability tensor.
Code: Select all
# Frame 0 polarizability
species oxygen O_HSCV_PBE-1.0.xml
species hydrogen H_HSCV_PBE-1.0.xml
atom O1 oxygen 6.135376 49.088181 12.041645
... #More atom lines ...
set cell 23.470398 0 0 0 23.470398 0 0 0 23.470398
set ecut 85.000000
set wf_dyn PSDA
set xc PBE
set scf_tol 1.e-8
randomize_wf 0.01
set polarization MLWF
set e_field 0.000100 0.000000 0.000000
run 0 40 10
compute_mlwf
My questions are as follows:
- Is there a more direct method within Qbox to compute the polarizability tensors of individual molecules and not just the entire system? Specifically, something like what was done in this communications paper: https://doi.org/10.1063/1.5044636
- Am I applying the electric field perturbation correctly by using the set e_field variable?
- Would it be correct to specify six separate e-field perturbations and calling the run command six separate times in one file (i.e., in one file doing set e_field, then run, then compute_mlwf, and repeating that six times)? Or is it better to have six separate files with a different perturbation each time?
- For the method of computing the system polarizability tensor specified at http://qboxcode.org/doc/html/usage/vari ... larization, how small are the perturbations to the electric field?
Thank you very much!
Frank