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)
Sample stages (base first):
Stage |
Axis |
Handedness |
Parent |
|---|---|---|---|
|
transverse (−x in BL) |
left-handed |
base |
|
(cos α)·transverse + (sin α)·vertical = (cos α)·x̂ + (sin α)·ẑ in BL (α = 50°) |
right-handed |
|
|
transverse (−x in BL) |
left-handed |
|
Detector stages (base first):
Stage |
Axis |
Handedness |
Parent |
|---|---|---|---|
|
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:
In the BL basis (T=+x̂, V=+ẑ) at α = 50° this is
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 |
— |
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 |
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 |
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 |
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 |
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.