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})\]
- c_dd_batch(qs, q_direction=None)
Compute the dipole dipole contribution term for multiple q-points at the same time in parallel.
- 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.
- 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)