Files
dev/script/__Lib/diffcalc_old/startup/i13.py
2019-03-20 13:52:00 +01:00

185 lines
4.2 KiB
Python

from diffcalc.util import x_rotation, y_rotation, z_rotation, TORAD, TODEG
import startup._demo
from startup._common_imports import *
if '_fivec' in globals() and 'en' in globals():
# Assume we are running in a live GDA deployment with a _fivec ScannableGroup
# with axes named: delta, gam, eta, chi, phi.
# Ensure that these five Scannables exist.
# There must also be Scannable en for moving and reading the energy
print "Diffcalc using predefined _fivec and en Scannables"
else:
### Create dummy scannables ###
print "Diffcalc creating dummy Scannables as _fivec and en were not found"
delta = Dummy('delta')
gam = Dummy('gam')
eta = Dummy('eta')
chi = Dummy('chi')
phi = Dummy('phi')
_fivec = ScannableGroup('_fivec', (delta, gam, eta, chi, phi))
en = Dummy('en')
en.level = 3
### Configure and import diffcalc objects ###
ESMTGKeV = 1
settings.hardware = ScannableHardwareAdapter(_fivec, en, ESMTGKeV)
settings.geometry = diffcalc.hkl.you.geometry.FiveCircle()
settings.energy_scannable = en
settings.axes_scannable_group = _fivec
settings.energy_scannable_multiplier_to_get_KeV = ESMTGKeV
from diffcalc.gdasupport.you import * # @UnusedWildImport
if GDA:
print "Running in GDA --- aliasing commands"
alias_commands(globals())
# Load the last ub calculation used
lastub()
#
# setmax(delta, 28)
# setmin(delta, -1)
# setmin(gam, 0)
# setmax(gam, 16)
# setmin(eta, -10)
# setmax(eta, 10)
# setmin(chi, 90 - 12)
# setmax(chi, 90 + 12)
# setmin(phi, -88)
# setmax(phi, 88)
# setcut(phi, -90)
# hardware()
setmax(delta, 90)
setmin(delta, -1)
setmin(gam, 0)
setmax(gam, 90)
setmin(eta, -90)
setmax(eta, 90)
setmin(chi, -10)
setmax(chi, 100)
setmin(phi, -88)
setmax(phi, 88)
setcut(phi, -90)
hardware()
def X(th_deg):
return x_rotation(th_deg * TORAD)
def Y(th_deg):
return y_rotation(th_deg * TORAD)
def Z(th_deg):
return z_rotation(th_deg * TORAD)
WEDGE = X(15)
if not GDA:
demo = startup._demo.Demo(globals(), 'fivec')
"""
Fivec, no real limits, working out U matrix
===========================================
U = xyz_rotation([-0.70711, 0.70711, 0.00000], 54.73561 * TORAD)
setu U
pos en 20
con qaz 90
con a_eq_b
UBCALC
name: 2017-03-07-i13
n_phi: -0.00000 -0.00000 1.00000
n_hkl: 0.57735 0.57735 0.57735 <- set
miscut:
angle: 0.00003
axis: 0.70711 -0.70711 0.00000
CRYSTAL
name: Si111
a, b, c: 5.43000 5.43000 5.43000
90.00000 90.00000 90.00000
B matrix: 1.15712 0.00000 0.00000
0.00000 1.15712 0.00000
0.00000 0.00000 1.15712
UB MATRIX
U matrix: 0.78868 -0.21133 -0.57735
-0.21132 0.78867 -0.57735
0.57735 0.57735 0.57735
angle: 54.73564
axis: 0.70711 -0.70711 0.00000
UB matrix: 0.91260 -0.24453 -0.66807
-0.24453 0.91259 -0.66807
0.66807 0.66807 0.66807
REFLECTIONS
ENERGY H K L DELTA GAM ETA CHI PHI TAG
1 20.000 1.00 1.00 1.00 11.3483 0.0000 5.6741 90.0000 45.0000
2 20.000 4.00 0.00 0.00 26.3978 0.0000 13.1989 35.2644 -15.0000
In [80]: listub
UB calculations in: /Users/zrb13439/.diffcalc/i13
0) 2017-03-07-i13 14 Mar 2017 (14:35)
1) test 07 Mar 2017 (11:38)
In [81]: hardware
-1.0 <= delta <= 90.0 (cut: -180.0)
0.0 <= gam <= 90.0 (cut: -180.0)
-90.0 <= eta <= 90.0 (cut: -180.0)
-10.0 <= chi <= 100.0 (cut: -180.0)
-180.0 <= phi <= 180.0 (cut: -90.0)
Note: When auto sector/transforms are used,
cuts are applied before checking limits.
Add in delta and gamma constraintss:
In [85]: atan(28/16)*TODEG
Out[85]: 45.0
In [86]: atan(28/16.)*TODEG
Out[86]: 60.25511870305777
In [87]: con qaz 60
qaz : 60.0000
a_eq_b
mu : 0.0000
In [88]: sim hkl [4 0 0]
_fivec would move to:
delta : 22.6459
gam : 13.9379
eta : 59.2132
chi : 8.8270
phi : -63.0717
alpha : 7.5752
beta : 7.5752
naz : 4.5446
psi : 90.0000
qaz : 60.0000
tau : 54.7356
theta : 13.1989
""""