pyextal.jaxMultipole.maps¶
Static deformation density maps in direct space.
Delta rho = rho_multipole - rho_IAM: the valence shells at the refined
population and kappa minus the neutral spherical atoms, plus every deformation
term, summed over all atoms (orbit images and neighbouring cells) within
cutoff of the plane. No thermal smearing – a static map – and no Fourier
series, so it carries no truncation ripple; with ~30 reflections a Fourier
residual map would be mostly ripple.
Each image of an asymmetric atom at W x + w carries its density rotated by
the Cartesian R = A W A^-1: rho_j(r) = rho_0(R^T (r - r_j)), evaluated in
the asymmetric atom’s local frame F as F R^T (r - r_j).
Functions¶
|
One electron's worth of a shell's spherical density, e/Angstrom^3. |
|
Cartesian points of a plane through |
|
|
|
Atoms lying in a plane (within |
|
Contour plot: solid positive, dashed negative, dotted zero. |
Module Contents¶
- pyextal.jaxMultipole.maps.shell_density(shell, r_A, renormalize=True)¶
One electron’s worth of a shell’s spherical density, e/Angstrom^3.
- pyextal.jaxMultipole.maps.plane_grid(crystal, origin, u, v, extent=(-2.0, 2.0, -2.0, 2.0), n=121)¶
Cartesian points of a plane through
originspanned byuandv.- Parameters:
origin (array-like) – Fractional coordinates of the centre.
u (array-like) – Direct-lattice directions;
vis orthogonalised tou.v (array-like) – Direct-lattice directions;
vis orthogonalised tou.extent (tuple) –
(umin, umax, vmin, vmax)in Angstrom.n (int) – Points per side.
- Returns:
(points (n, n, 3) Cartesian, U, V)withU,Vthe in-plane coordinates in Angstrom.- Return type:
tuple
- pyextal.jaxMultipole.maps.deformation_density(model, p, points, cutoff=6.5, terms='all')¶
rho_model - rho_IAMat Cartesianpoints, e/Angstrom^3.- Parameters:
model (MultipoleModel) – The model (‘cm’ sites contribute nothing).
p (array-like) – Physical parameters (e.g.
FitResult.p).points (np.ndarray) –
(..., 3)Cartesian positions, Angstrom.cutoff (float) – Atom images farther than this from a point are left out at that point. The diffuse shells (Ti 4s, Sr 5s) still carry ~1e-3 e/A^3 at 4 A, which shows as steps where an image crosses the cutoff; at 6.5 A their tails are ~1e-5.
terms (str) –
'all'– the full static deformation density;'spherical'– only the valence shells’ change (population and kappa);'multipole'– only theP_lmterms, the aspherical part. Cores are frozen, so they cancel in every case.
- Returns:
Shape
points.shape[:-1].- Return type:
np.ndarray
- pyextal.jaxMultipole.maps.plane_atoms(crystal, origin, u, v, extent=(-2.0, 2.0, -2.0, 2.0), tol=0.05)¶
Atoms lying in a plane (within
tolAngstrom), as in-plane coordinates.- Returns:
(site label, element, U, V)for every image insideextent(with a small margin).- Return type:
list[tuple]
- pyextal.jaxMultipole.maps.plot_map(U, V, rho, ax=None, step=0.05, vmax=0.4, title=None, atoms=None)¶
Contour plot: solid positive, dashed negative, dotted zero.
Contours stop at
+-vmax(0.4 e/A^3, the range of Friis et al.’s Fig. 5); near the nuclei a deformation map is steep and would otherwise be solid ink.vmax=Nonecontours the full range.