principia_materia.phonon_id.dipole_dipole module

class principia_materia.phonon_id.dipole_dipole.DipoleDipole(structure, zeu=None, epsilon=None, dataset=None, G_ran=5, Lambda=0.2, factor=1.0, tol=1e-06)

Bases: object

Method implemented is descrived in papers Phys. Rev. B 50, 13035(R) (1994) and Phys. Rev. B 55, 10355 (1997).

\[\tilde{C}^{DD}_{\kappa \alpha \kappa^{\prime} \beta} (\textbf{q}) = \hat{C}^{DD}_{\kappa \alpha \kappa^{\prime} \beta} (\textbf{q}) -\delta_{\kappa \kappa^{\prime}} \sum_{\kappa^{\prime\prime}} \hat{C}^{DD}_{\kappa \alpha \kappa^{\prime\prime} \beta} (\textbf{q}=\bf{\Gamma})\]
\[\hat{C}^{DD}_{\kappa \alpha \kappa^{\prime} \beta} (\textbf{q}) = \sum_{\alpha^{\prime} \beta^{\prime}} Z^{\ast}_{\kappa, \alpha\alpha^{\prime}} Z^{\ast}_{\kappa^{\prime}, \beta\beta^{\prime}} \overline{C}^{DD}_{\kappa \alpha^{\prime} \kappa^{\prime} \beta^{\prime}} (\textbf{q})\]
\[\overline{C}^{DD}_{\kappa \alpha \kappa^{\prime} \beta} (\textbf{q}) = \sum_{\textbf{G} \textrm{ with } \textbf{K} = \textbf{q} + \textbf{G}} \frac{4\pi}{\Omega} \frac{K_{\alpha}K_{\beta}}{ \sum_{\gamma\gamma^{\prime}} K_{\gamma}\epsilon_{\gamma\gamma^{\prime}}K_{\gamma^{\prime}} } e^{i \textbf{K} \cdot (\tau_{\kappa} - \tau_{\kappa^{\prime}})} \exp{\left(-\frac{ \sum_{\gamma\gamma^{\prime}} K_{\gamma}\epsilon_{\gamma\gamma^{\prime}}K_{\gamma^{\prime}} }{4\Lambda^2} \right) }\]
Units:

Since the dielectric tensor is unitless, the Born effective charges are in units of e (a.u.) and the unit of distances is in Angstroms in our convention, the unit of our dipole-dipole corrections is \(\frac{e}/{\AA^3}\), to convert it to the unit of the force constants, we take note that \(\frac{e}{a_0^2}=\frac{E_{hartree}}{a_0}\), which means \(\frac{e}{a_0^3}=\frac{E_{hartree}}{a_0^2}\). Then we can convert from \(\frac{e}/{\AA^3}\) to \(\frac{eV}{\AA^2}\) with the factor of ~14.40.

Parameters:
  • structure (str or CrystalFTG instance) – Path to the CrystalFTG structure file or a CrystalFTG instance.

  • dataset (str) – Path to a file that contains all the necessary data. (In the case when zeu and epsilon are absent, this dataset file is required, otherwise it is ignored. If any of optional parameters (i.e. G_ran, Lamda, factor and tol) is missing, the default value will be used.)

  • zeu (array of float, shape(natoms, dim, dim)) – Born effective charge tensor.

  • epsilon (array of float, shape(dim, dim)) – Dielectric constant tensor.

  • G_ran (int, optional, default to 5) – Range of G vectors.

  • Lambda (float, optional, default to 0.20) – Lamda value in the equation.

  • factor (float, optional, default to 1.0) – Overall unit conversion factor for the output matrix.

  • tol (float, optional, default to 1.0E-6) – Tolerence.

property Gvecs

The reciprocal space vectors to sum over.

c_dd(q, q_direction=None)

The dipole dipole contribution term.

\[\tilde{C}^{DD}_{\kappa \alpha \kappa^{\prime} \beta} (\textbf{q}) = \hat{C}^{DD}_{\kappa \alpha \kappa^{\prime} \beta} (\textbf{q}) -\delta_{\kappa \kappa^{\prime}} \sum_{\kappa^{\prime\prime}} \hat{C}^{DD}_{\kappa \alpha \kappa^{\prime\prime} \beta} (\textbf{q}=\bf{\Gamma})\]
Parameters:
  • q (array of Fraction or float) – The q-point.

  • q_direction (array of Fraction or float, optional, default to None) – The direction of q->0 when q is the Gamma point.

c_dd_batch(qs, q_direction=None)

Compute the dipole dipole contribution term for multiple q-points at the same time in parallel.

Parameters:
  • qs (array of Fraction or float) – An array of q-points.

  • q_direction (array of Fraction or float, optional, default to None) – The direction of q->0 when q is the Gamma point.

property c_dd_q0

Compute the \(C^DD(\textbf{t}=0)\) term.

dc_dd_G_dK(q, ideriv, use_q_direction=True)

The core term of the derivative of dipole-dipole contribution with respect to the q-points in Cartesian coordinates.

Parameters:
  • q (array of Fraction or float) – The q-point.

  • ideriv (int, range(i, dim)) – The axis of the derivative.

  • q_direction (array of Fraction or float, optional, default to None) – The direction of q->0 when q is the Gamma point.

dc_dd_dK(q, ideriv, use_q_direction=None)

The derivative of dipole-dipole contribution with respect to the q-points in Cartesian coordinates.

\[\frac{\partial \tilde{C}^{DD}_{\kappa \alpha \kappa^{\prime} \beta} (\textbf{q})}{\partial \textbf{K}}\]

where \(\textbf{K}\) is the q-point \(\textbf{q}\) in Cartesian coordinates.

Parameters:
  • q (array of Fraction or float) – The q-point.

  • ideriv (int, range(i, dim)) – The axis of the derivative.

  • use_q_direction (bool, optional, default to True) – Whether to use q-direction the for derivative.

dc_dd_dK_batch(qs, use_q_direction=True)

Compute the derivative of dipole-dipole contribution with respect to the q-points in Cartesian coordinates for multiple q-points in parallel.

Parameters:
  • qs (array of Fraction or float) – An array of q-points.

  • use_q_direction (bool, optional, default to True) – Whether to use q-direction the for derivative.

get_c_dd_q0()

Compute the \(C^DD(\textbf{t}=0)\) term.

\[\delta_{\kappa \kappa^{\prime}} \sum_{\kappa^{\prime\prime}} \hat{C}^{DD}_{\kappa \alpha \kappa^{\prime\prime} \beta} (\textbf{q}=\bf{\Gamma})\]
get_valid_slice()

Determined the indices to slice out base on the orbitals of the structure.

principia_materia.phonon_id.dipole_dipole.get_DipoleDipole_from_yaml(inp, structure=None, tol=1e-06)
principia_materia.phonon_id.dipole_dipole.get_dipole_dataset_yaml_wrapper(title='Dipole-dipole dataset')
principia_materia.phonon_id.dipole_dipole.save_DipoleDipole_to_yaml(obj, filename='epsilon.yml', system=None, include_structure=False, overwrite=False)