fourch — Eulerian Four-Circle (Laboratory)#

Busing & Levy (1967) four-circle Eulerian diffractometer, horizontal scattering plane. ω and 2θ rotate about the vertical axis. Standard laboratory convention.

Walko (2016) designation: S3D1

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

Quick start#

import ad_hoc_diffractometer as ahd

g = ahd.presets.fourch()
g.wavelength = 1.0  # Å
print(g.summary())

Pre-built geometry definition#

This geometry is defined by the fourch() 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)

fourch stage layout

Sample stages (base first):

Stage

Axis

Handedness

Parent

omega

−vertical (−z BL)

left-handed

base

chi

+longitudinal (+y BL)

right-handed

omega

phi

−vertical (−z BL)

left-handed

chi

Detector stages (base first):

Stage

Axis

Handedness

Parent

ttheta

−vertical (−z BL)

left-handed

base

Diffraction modes#

Set the active mode with g.mode_name = "<mode>". 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)#

BisectConstraint: omega = ttheta / 2. Places the sample symmetrically between the incident and diffracted beams.

Stages

Computed

omega, chi, phi, ttheta

Constant during forward()

fixed_chi#

SampleConstraint: chi is held at the value declared in the constraint (factory default: 90°). The caller chooses the value by constructing a ConstraintSet; the constraint persists until replaced — see Work with Constraints and Diffraction Modes.

Computed

omega, phi, ttheta

Constant during forward()

chi

fixed_phi#

SampleConstraint: phi is held at the value declared in the constraint (factory default: 0°). The caller chooses the value by constructing a ConstraintSet.

Computed

omega, chi, ttheta

Constant during forward()

phi

fixed_omega#

SampleConstraint: omega is held at the value declared in the constraint (factory default: 0°). The caller chooses the value by constructing a ConstraintSet.

Computed

chi, phi, ttheta

Constant during forward()

omega

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.

Extras (input)

n̂ (reference vector), ψ (target, 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

omega, chi, phi, ttheta

Extras (input)

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

API reference#

References#

  • Busing & Levy, Acta Cryst. 22, 457–464 (1967). DOI: 10.1107/S0365110X67000970

  • Walko, Ref. Module Mater. Sci. Mater. Eng. (2016).