Source code for ase.utils.deltacodesdft

import numpy as np

from ase.eos import birchmurnaghan


[docs]def delta(v1: float, B1: float, Bp1: float, v2: float, B2: float, Bp2: float, symmetric=True) -> float: """Calculate Delta-value between two equation of states. .. seealso:: https://github.com/molmod/DeltaCodesDFT Parameters ---------- v1,v2: float Volume per atom. B1,B2: float Bulk-modulus (in eV/Ang^3). Bp1,Bp2: float Pressure derivative of bulk-modulus. symmetric: bool Default is to calculate a symmetric delta. Returns ------- delta: float Delta value in eV/atom. """ if symmetric: va = 0.94 * (v1 + v2) / 2 vb = 1.06 * (v1 + v2) / 2 else: va = 0.94 * v2 vb = 1.06 * v2 npoints = 100 dv = (vb - va) / npoints v = np.linspace(va + dv / 2, vb - dv / 2, npoints) e1 = birchmurnaghan(v, 0.0, B1, Bp1, v1) e2 = birchmurnaghan(v, 0.0, B2, Bp2, v2) return (((e1 - e2)**2).sum() * dv / (vb - va))**0.5