ebsdsim 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ebsdsim/__init__.py +29 -0
- ebsdsim/_pg_ops_data.py +92 -0
- ebsdsim/_sg_ops_data.py +9 -0
- ebsdsim/api.py +478 -0
- ebsdsim/binning.py +133 -0
- ebsdsim/cif.py +425 -0
- ebsdsim/data/__init__.py +1 -0
- ebsdsim/data/goldens/kgrid_rasterize_golden.json +1 -0
- ebsdsim/data/lightweight_hist_surrogate.npz +0 -0
- ebsdsim/data/preset_cifs/GaN.cif +44 -0
- ebsdsim/data/preset_cifs/Ni.cif +222 -0
- ebsdsim/elements.py +60 -0
- ebsdsim/golden.py +46 -0
- ebsdsim/gpu/__init__.py +14 -0
- ebsdsim/gpu/buffers.py +104 -0
- ebsdsim/gpu/device.py +54 -0
- ebsdsim/gpu/dynamical.py +1045 -0
- ebsdsim/gpu/limits.py +34 -0
- ebsdsim/gpu/lu.py +209 -0
- ebsdsim/gpu/monte_carlo.py +392 -0
- ebsdsim/gpu/pipelines.py +174 -0
- ebsdsim/gpu/rasterize.py +376 -0
- ebsdsim/integrate.py +305 -0
- ebsdsim/kgrid.py +224 -0
- ebsdsim/lookup.py +585 -0
- ebsdsim/material.py +96 -0
- ebsdsim/mploader.py +601 -0
- ebsdsim/pg_ops.py +92 -0
- ebsdsim/prescan.py +126 -0
- ebsdsim/rasterize.py +324 -0
- ebsdsim/runner.py +341 -0
- ebsdsim/save.py +214 -0
- ebsdsim/sgh.py +68 -0
- ebsdsim/spacegroup.py +62 -0
- ebsdsim/structure.py +216 -0
- ebsdsim/surrogate.py +296 -0
- ebsdsim/types.py +77 -0
- ebsdsim/wgsl/ebsd_assemble_geff_q.wgsl +98 -0
- ebsdsim/wgsl/ebsd_bethe_weight_vws_c64.wgsl +50 -0
- ebsdsim/wgsl/ebsd_excitation_score.wgsl +90 -0
- ebsdsim/wgsl/ebsd_gather_diagonal_c64.wgsl +47 -0
- ebsdsim/wgsl/ebsd_gather_sgh_site_c64.wgsl +32 -0
- ebsdsim/wgsl/ebsd_gemm_c64_batched.wgsl +64 -0
- ebsdsim/wgsl/ebsd_gemv_c64_batched.wgsl +69 -0
- ebsdsim/wgsl/ebsd_hash_diff_u32.wgsl +45 -0
- ebsdsim/wgsl/ebsd_intensity_contract.wgsl +87 -0
- ebsdsim/wgsl/ebsd_lambert_fill.wgsl +71 -0
- ebsdsim/wgsl/ebsd_lookup_submatrix_c64.wgsl +56 -0
- ebsdsim/wgsl/ebsd_output_writeback_f32.wgsl +29 -0
- ebsdsim/wgsl/ebsd_pack_w_c64.wgsl +39 -0
- ebsdsim/wgsl/ebsd_prescan_counts.wgsl +122 -0
- ebsdsim/wgsl/ebsd_topk_indices.wgsl +134 -0
- ebsdsim/wgsl/lu_factor_complex64.wgsl +1 -0
- ebsdsim/wgsl/lu_factor_lead_complex64.wgsl +1 -0
- ebsdsim/wgsl/lu_factor_trailing_complex64.wgsl +1 -0
- ebsdsim/wgsl/lu_factor_upper_complex64.wgsl +1 -0
- ebsdsim/wgsl/lu_solve_large_complex64.wgsl +1 -0
- ebsdsim/wgsl/lu_solve_shared_complex64.wgsl +1 -0
- ebsdsim/wgsl/mc_boundary_modes.wgsl +237 -0
- ebsdsim/wk.py +455 -0
- ebsdsim/wk_params.py +8 -0
- ebsdsim-0.1.0.dist-info/METADATA +359 -0
- ebsdsim-0.1.0.dist-info/RECORD +66 -0
- ebsdsim-0.1.0.dist-info/WHEEL +5 -0
- ebsdsim-0.1.0.dist-info/licenses/LICENSE +21 -0
- ebsdsim-0.1.0.dist-info/top_level.txt +1 -0
ebsdsim/__init__.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""GPU-accelerated dynamical EBSD master-pattern simulation."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from importlib.metadata import PackageNotFoundError, version
|
|
6
|
+
|
|
7
|
+
from ebsdsim.api import Atom, Cell, Material, MasterPattern, master_pattern, master_pattern_from_cif
|
|
8
|
+
from ebsdsim.mploader import LoadedMasterPattern, load_master_pattern, save_png_gray, to_uint8
|
|
9
|
+
from ebsdsim.save import save_master_pattern
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
__version__ = version("ebsdsim")
|
|
13
|
+
except PackageNotFoundError:
|
|
14
|
+
__version__ = "0.0.0+dev"
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"Atom",
|
|
18
|
+
"Cell",
|
|
19
|
+
"LoadedMasterPattern",
|
|
20
|
+
"Material",
|
|
21
|
+
"MasterPattern",
|
|
22
|
+
"__version__",
|
|
23
|
+
"load_master_pattern",
|
|
24
|
+
"master_pattern",
|
|
25
|
+
"master_pattern_from_cif",
|
|
26
|
+
"save_master_pattern",
|
|
27
|
+
"save_png_gray",
|
|
28
|
+
"to_uint8",
|
|
29
|
+
]
|
ebsdsim/_pg_ops_data.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""AUTO-GENERATED from pg-ops-data.ts — do not edit by hand."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import numpy as np
|
|
5
|
+
|
|
6
|
+
PG_NUM_TO_SYMBOL = ['1', '-1', '2', 'm', '2/m', '222', 'mm2', 'mmm', '4', '-4', '4/m', '422', '4mm', '-42m', '4/mmm', '3', '-3', '32', '3m', '-3m', '6', '-6', '6/m', '622', '6mm', '-6m2', '6/mmm', '23', 'm-3', '432', '-43m', 'm-3m']
|
|
7
|
+
PG_OPERATORS = {
|
|
8
|
+
'-1': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
9
|
+
'-3': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
10
|
+
'-31m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
11
|
+
'-3m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
12
|
+
'-3m1': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
13
|
+
'-4': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
14
|
+
'-42m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
15
|
+
'-43m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
16
|
+
'-4m2': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
17
|
+
'-6': np.array([-0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
18
|
+
'-62m': np.array([-0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
19
|
+
'-6m2': np.array([-1, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
20
|
+
'1': np.array([1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
21
|
+
'112': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
22
|
+
'112/m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
23
|
+
'11m': np.array([1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
24
|
+
'12/m1': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
25
|
+
'121': np.array([-1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
26
|
+
'1m1': np.array([1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
27
|
+
'2': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
28
|
+
'2/m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
29
|
+
'2/m11': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
30
|
+
'211': np.array([1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
31
|
+
'222': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
32
|
+
'23': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
33
|
+
'2mm': np.array([1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
34
|
+
'3': np.array([-0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
35
|
+
'312': np.array([-1, 0, 0, 0, 1, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
36
|
+
'31m': np.array([-0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
37
|
+
'32': np.array([-0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
38
|
+
'321': np.array([-0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
39
|
+
'3m': np.array([-1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
40
|
+
'3m1': np.array([-1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
41
|
+
'4': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
42
|
+
'4/m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
43
|
+
'4/mmm': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
44
|
+
'422': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
45
|
+
'432': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
46
|
+
'4mm': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
47
|
+
'6': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
48
|
+
'6/m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
49
|
+
'6/mmm': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
50
|
+
'622': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, -1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, -1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
51
|
+
'6mm': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, -0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, -0.5, -0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, -0.5, 0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, -0.8660254038, -0.5, 0, 0, 0, 1, 0.5, -0.8660254038, 0, 0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, -0.8660254038, 0.5, 0, 0, 0, 1, 0.5, 0.8660254038, 0, 0.8660254038, -0.5, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
52
|
+
'm': np.array([1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
53
|
+
'm-3': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
54
|
+
'm-3m': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 0, -1, 0, -1, 0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
55
|
+
'm11': np.array([-1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
56
|
+
'm2m': np.array([-1, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
57
|
+
'mm2': np.array([-1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
58
|
+
'mmm': np.array([-1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0, 0, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 0, 0, -1, -1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, -1, 1, 0, 0, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
59
|
+
}
|
|
60
|
+
FS_NORMALS = {
|
|
61
|
+
'-1': np.array([0, 0, 1], dtype=np.float64),
|
|
62
|
+
'-3': np.array([0, 0, 1, 0, 1, 0, 0.8660254038, 0.5, 0], dtype=np.float64),
|
|
63
|
+
'-3m': np.array([0, 0, 1, 0.5, 0.8660254038, 0, 0.5, -0.8660254038, 0], dtype=np.float64),
|
|
64
|
+
'-4': np.array([0, 0, 1, 0, 1, 0, 0, 1, 0], dtype=np.float64),
|
|
65
|
+
'-42m': np.array([0, 0, 1, 0.7071067812, 0.7071067812, 0, 0.7071067812, -0.7071067812, 0], dtype=np.float64),
|
|
66
|
+
'-43m': np.array([1, -1, 0, 1, 1, 0, -1, 0, 1], dtype=np.float64),
|
|
67
|
+
'-6': np.array([0, 0, 1, 0, 1, 0, 0.8660254038, 0.5, 0], dtype=np.float64),
|
|
68
|
+
'-6m2': np.array([0, 0, 1, 0.5, 0.8660254038, 0, 0.5, -0.8660254038, 0], dtype=np.float64),
|
|
69
|
+
'2': np.array([0, 1, 0], dtype=np.float64),
|
|
70
|
+
'2/m': np.array([0, 0, 1, 0, 1, 0], dtype=np.float64),
|
|
71
|
+
'222': np.array([0, 0, 1, 0, 1, 0, 0, 1, 0], dtype=np.float64),
|
|
72
|
+
'23': np.array([1, 1, 0, 1, -1, 0, 0, -1, 1, 0, 1, 1], dtype=np.float64),
|
|
73
|
+
'3': np.array([0, 1, 0, 0.8660254038, 0.5, 0], dtype=np.float64),
|
|
74
|
+
'32': np.array([0, 0, 1, 0, 1, 0, 0.8660254038, 0.5, 0], dtype=np.float64),
|
|
75
|
+
'3m': np.array([0.5, 0.8660254038, 0, 0.5, -0.8660254038, 0], dtype=np.float64),
|
|
76
|
+
'4': np.array([0, 1, 0, 1, 0, 0], dtype=np.float64),
|
|
77
|
+
'4/m': np.array([0, 0, 1, 0, 1, 0, 1, 0, 0], dtype=np.float64),
|
|
78
|
+
'4/mmm': np.array([0, 0, 1, 0, 1, 0, 0.7071067812, -0.7071067812, 0], dtype=np.float64),
|
|
79
|
+
'422': np.array([0, 0, 1, 0, 1, 0, 1, 0, 0], dtype=np.float64),
|
|
80
|
+
'432': np.array([1, 0, 0, 0, -1, 1, -1, 0, 1, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
81
|
+
'4mm': np.array([0, 1, 0, 0.7071067812, -0.7071067812, 0], dtype=np.float64),
|
|
82
|
+
'6': np.array([0, 1, 0, 0.8660254038, -0.5, 0], dtype=np.float64),
|
|
83
|
+
'6/m': np.array([0, 0, 1, 0, 1, 0, 0.8660254038, -0.5, 0], dtype=np.float64),
|
|
84
|
+
'6/mmm': np.array([0, 0, 1, 0, 1, 0, 0.5, -0.8660254038, 0], dtype=np.float64),
|
|
85
|
+
'622': np.array([0, 0, 1, 0, 1, 0, 0.8660254038, -0.5, 0], dtype=np.float64),
|
|
86
|
+
'6mm': np.array([0, 1, 0, 0.5, -0.8660254038, 0], dtype=np.float64),
|
|
87
|
+
'm': np.array([0, 0, 1], dtype=np.float64),
|
|
88
|
+
'm-3': np.array([1, 0, 0, 0, -1, 1, -1, 0, 1, 0, 1, 0, 0, 0, 1], dtype=np.float64),
|
|
89
|
+
'm-3m': np.array([1, -1, 0, -1, 0, 1, 0, 1, 0], dtype=np.float64),
|
|
90
|
+
'mm2': np.array([1, 0, 0, 0, 1, 0], dtype=np.float64),
|
|
91
|
+
'mmm': np.array([0, 0, 1, 0, 1, 0, 1, 0, 0], dtype=np.float64),
|
|
92
|
+
}
|