kappa4cv — Kappa Four-Circle (vertical)#

Four-circle kappa diffractometer, vertical scattering plane. The chi circle is replaced by a kappa arm tilted at α = 50° from the transverse axis toward the vertical axis, lying entirely in the transverse–vertical plane (see How the kappa axis is defined below).

Walko (2016) designation: S3D1 (kappa)

Coordinate basis: Busing & Levy (BASIS_BL): transverse=+x, longitudinal=+y, vertical=+z.

Quick start#

import ad_hoc_diffractometer as ahd

g = ahd.make_geometry("kappa4cv")
g.wavelength = 1.0  # Å
print(g.summary())

Demo geometry definition#

This geometry is defined by the kappa4cv — Kappa Four-Circle (vertical) factory function — see the source for the complete stage and mode configuration.

Stage layout#

Static fallback (click to expand if the interactive figure above is blank)

kappa4cv stage layout

Sample stages (base first):

Stage

Axis

Handedness

Parent

komega

transverse (−x in BL)

left-handed

base

kappa

(cos α)·transverse + (sin α)·vertical = (cos α)·x̂ + (sin α)·ẑ in BL (α = 50°)

right-handed

komega

kphi

transverse (−x in BL)

left-handed

kappa

Detector stages (base first):

Stage

Axis

Handedness

Parent

ttheta

transverse (−x in BL)

left-handed

base

How the kappa axis is defined#

The kappa rotation axis is inclined by α from the omega axis, lying in the plane that contains both omega and the equivalent-Eulerian chi axis, and tilted from omega toward that chi direction (Walko 2016 §4.1; ITC Vol. C §2.2.6.2: “the κ axis is inclined at 50° to the ω axis”).

For kappa4cv the omega axis lies along the transverse line and the equivalent-Eulerian chi axis lies along the vertical direction. The kappa arm therefore lies in the transverse– vertical plane, tilted by α from the transverse line toward +V:

\[ \hat{n}_{\kappa} \;=\; \cos\alpha \cdot \hat{T} \;+\; \sin\alpha \cdot \hat{V}. \]

In the BL basis (T=+x̂, V=+ẑ) at α = 50° this is

\[ \hat{n}_{\kappa} \;=\; \cos 50° \cdot \hat{x} \;+\; \sin 50° \cdot \hat{z} \;=\; (0.643,\, 0,\, 0.766). \]

The longitudinal component is exactly zero: the kappa arm rises upward and outward in the vertical plane perpendicular to the incident beam.

Published reference figures. The kappa-arm orientation described above matches Walko (2016) Figure 3 directly and the canonical κ-goniostat axes in Thorkildsen et al. (2006) Table 1 and equation (3). Wyckoff (1985) Figure 2(b) on p. 334 shows the analogous 90° rotation onto the horizontal scattering plane (the kappa4ch convention).

The omega axis sense (komega = −transverse = left-handed rotation about +T) follows Walko’s left-handed sign convention. ITC Vol. C §2.2.6.2 prefers a right-handed sign convention for omega/chi/phi; the two are equivalent up to motor-angle sign flips. See the geometries module docstring for further discussion.

Virtual Eulerian angles omega, chi, phi are mapped to / from the real motors via the geometry-aware decomposition in eulerian_to_kappa_axes() and kappa_to_eulerian_axes(). The older Walko-textbook helpers eulerian_to_kappa() and kappa_to_eulerian() are retained as reference implementations of the published closed form but are not used inside the solver.

Diffraction modes#

Each mode is a ConstraintSet of 1 constraint (N − 3 = 1 for N = 4 DOF). See Switch Diffraction Modes for usage and Work with Constraints and Diffraction Modes for changing constraint values at run time.

bisecting (default)#

VirtualBisectConstraint: omega_virtual = ttheta / 2 enforced on the virtual Eulerian omega pseudoangle. The kappa motor triple (komega, kappa, kphi) satisfies this constraint via the geometry-aware eulerian_to_kappa_axes() decomposition.

Computed

komega, kappa, kphi, ttheta

Constant during forward()

fixed_kphi#

SampleConstraint: kphi held at declared value (default 0°) — real stage, no kappa inversion needed. The caller chooses the value by constructing a ConstraintSet.

Computed

komega, kappa, ttheta

Constant during forward()

kphi

fixed_omega#

SampleConstraint: Fix the virtual Eulerian omega at declared value (default 0°). Solved analytically via the equivalent-Eulerian dispatch — the caller chooses the value by constructing a ConstraintSet.

Computed

komega, kappa, kphi, ttheta

Constant during forward()

omega (virtual)

fixed_chi#

SampleConstraint: Fix the virtual Eulerian chi at declared value (default 90°). The caller chooses the value by constructing a ConstraintSet.

Computed

komega, kappa, kphi, ttheta

Constant during forward()

chi (virtual)

fixed_phi#

SampleConstraint: Fix the virtual Eulerian phi at declared value (default 0°). The caller chooses the value by constructing a ConstraintSet.

Computed

komega, kappa, kphi, ttheta

Constant during forward()

phi (virtual)

fixed_psi#

ReferenceConstraint: azimuthal angle ψ validation filter. Set g.azimuthal_reference = (h, k, l) before calling forward(). Returns bisecting solutions only when the natural ψ for (h,k,l) matches the stored target. See Surface Geometry and the Reference Vector.

Computed

komega, kappa, kphi, ttheta

Extras (input)

n̂ (reference vector), ψ (target azimuth, degrees)

Extras (output)

psi (computed azimuth)

double_diffraction#

Full 4D simultaneous solver: finds motor angles where both the primary (h₁,k₁,l₁) and secondary (h₂,k₂,l₂) reflections satisfy the Ewald sphere condition. Set mode.extras['h2'], ['k2'], ['l2'] before calling forward().

Computed

komega, kappa, kphi, ttheta

Extras (input)

h₂, k₂, l₂ (secondary reflection Miller indices)

API reference#

References#

  • D.A. Walko, Multicircle Diffractometry Methods, in Reference Module in Materials Science and Materials Engineering (Elsevier, 2016), §4.1, Figure 3, equation [16]. DOI: 10.1016/B978-0-12-803581-8.01215-7.

  • G. Thorkildsen, H.B. Larsen & J.A. Beukes, Angle calculations for a three-circle goniostat, J. Appl. Cryst. 39, 151–157 (2006), Table 1 and equation (3) (canonical κ-goniostat axes). DOI: 10.1107/S0021889805041877.

  • W.R. Busing & H.A. Levy, Angle calculations for 3- and 4-circle X-ray and neutron diffractometers, Acta Cryst. 22, 457–464 (1967) (BL coordinate basis). DOI: 10.1107/S0365110X67000970.

  • International Tables for Crystallography, Vol. C, §2.2.6 (2006), p. 36 (α = 50° convention; cites Wyckoff 1985 for the schematic picture). DOI: 10.1107/97809553602060000577.