Generate a list of boundary-plane vectors¶
In this code, we determine the list of boundary-plane orientation vectors, represented using the Miller indices in the primitve Coincidence Site Lattice. These boundary-plane vectors fall in the fundamental zone of boundary-plane orientations.
[1]:
import byxtal.tools as gbt
import byxtal.lattice as gbl
import pickle as pkl
import numpy as np
import numpy.linalg as nla
import byxtal.misorient_fz as mfz
import gbpy.generate_hkl_indices as ghi
l1
: The lattice object.l_p_po
: \(\Lambda_p^{po}\)sig_mats
: The \(\Sigma\)-miorientation in the primitive \(p\) reference frame. For example, we use the variableT_p1top2_p1
csl_mats
: The CSL lattice basis vectors in the primitive \(p\) reference frame. For example, we use the variablel_csl_p
denoting \(\Lambda_{csl}^p\)dsc_mats
: The DSC lattice basis vectors in the primitive \(p\) reference frame. For example, we use the variablel_dsc_p
denoting \(\Lambda_{dsc}^p\)bxt_symm_props
: The symmetry aspects of the \(\Sigma\)-miorientationbxt_symm_grp
: The point-group symmetry of the bicrystal. This is the symmetry for the Boundary-plane orientations.symm_grp_ax
: The axes of the symmetry point-group.
num1
: Refinement of the grid on the 2-sphere for determining boundary-plane orientations. For example,num1=3
will produce approximately (of the order of)num1^3 (=27)
vectors.The number of boundary-plane orientations will depend on the bicrystal symmetry of the \(\Sigma\) misorientation.
[2]:
######################################################################
###### Boundary-plane matrix properties with A_cut
#####################################################################
l1=gbl.Lattice('Al')
pkl_name = l1.elem_type+'_byxtal_props.pkl'
jar = open(pkl_name,'rb')
s1=pkl.load(jar)
jar.close()
sig_mats = s1['sig_mats']
csl_mats = s1['csl_mats']
dsc_mats = s1['dsc_mats']
bxt_symm_props = s1['csl_symm_props']
l_p_po = l1.l_p_po
num1 = 3
s1_keys
: The “string” keys for the variablessig_mats
,csl_mats
,dsc_mats
,bxt_symm_props
hkl_sig_inds
: Dictionary for saving boundary-plane orientations for each \(\Sigma\)-misorientationhkl_inds
: Indices of boundary-plane orientation for a given \(\Sigma\)-misorientation
[3]:
s1_keys = list(bxt_symm_props.keys())
hkl_sig_inds = {}
for sig_id in s1_keys:
# sig_id = s1_keys[0]
# for ct1 in range(10):
# sig_id = s1_keys[ct1]
print(sig_id)
l_p_po = l1.l_p_po
l_po_p = nla.inv(l_p_po)
bp_symm_grp = bxt_symm_props[sig_id]['bxt_symm_grp']
symm_grp_ax = bxt_symm_props[sig_id]['symm_grp_ax']
l_csl_p = csl_mats[sig_id]
l_csl_po = l_p_po.dot(l_csl_p)
l_csl_props = {}
l_csl_props['l_csl_po'] = l_csl_po
l_csl_props['symm_grp_ax'] = symm_grp_ax
l_csl_props['bp_symm_grp'] = bp_symm_grp
hkl_inds = ghi.gen_hkl_props(l_csl_props, num1)
hkl_sig_inds[sig_id] = hkl_inds
3_1
5_1
7_1
9_1
11_1
13_1
13_2
15_1
17_1
17_2
19_1
19_2
Save the list of boundary-plane orientations in hkl_sig_inds
dictionary.
[5]:
########################################################################
pkl_name = 'bp_list_' + l1.elem_type + '.pkl'
jar = open(pkl_name, 'wb')
bp_list = {}
bp_list['l_p_po'] = l_p_po
bp_list['miller_inds'] = hkl_sig_inds
pkl.dump(bp_list, jar)
jar.close()
########################################################################
[5]:
# l_CSLbpb_CSLp = {}
# l_CSLbpbSig_CSLp = {}
# lat_par = l1.lat_params['a']
# rCut = lat_par*3
# A_cut = (rCut+lat_par)**2
# l_CSLbpb_CSLp[sig_id] = l_CSLbpb_CSLp_mat
# l_CSLbpbSig_CSLp_mat = ghi.gen_Acut_bpb(l_CSLbpb_CSLp_mat, l_csl_po, rCut, A_cut)
# l_CSLbpbSig_CSLp[sig_id] = l_CSLbpbSig_CSLp_mat
# gb_props['l_CSLbpb_CSLp'] = l_CSLbpb_CSLp
# gb_props['l_CSLbpbSig_CSLp'] = l_CSLbpbSig_CSLp
[6]:
bp_list
[6]:
{'l_p_po': array([[0. , 2.025, 2.025],
[2.025, 0. , 2.025],
[2.025, 2.025, 0. ]]),
'miller_inds': {'3_1': array([[ 0., -1., 2.],
[ 1., -2., 1.],
[ 0., 0., 1.],
[ 1., -1., 2.],
[ 2., -2., 1.],
[ 1., -3., 0.],
[ 2., -3., 2.],
[ 2., -3., 3.],
[ 0., -3., 2.],
[ 2., -3., 0.],
[ 1., -2., 0.],
[ 0., -1., 3.],
[ 2., -3., 1.],
[ 1., -2., 3.],
[ 1., -1., 1.],
[ 2., -2., 3.],
[ 1., -3., 1.],
[ 3., -3., 2.],
[ 0., -3., 1.],
[ 1., -1., 0.],
[ 1., -2., 2.],
[ 1., -3., 3.],
[ 0., -1., 0.],
[ 1., -3., 2.],
[ 0., -1., 1.],
[ 3., -3., 1.],
[ 1., -1., 3.],
[ 0., -2., 1.],
[ 0., -2., 3.]]),
'5_1': array([[ 1., 0., 2.],
[ 1., 0., 1.],
[ 2., 0., 3.],
[ 1., 0., 2.],
[ 1., 0., 3.],
[ 0., 0., 1.],
[ 1., -2., -1.],
[ 1., -2., 0.],
[ 5., -3., 2.],
[ 2., -1., 2.],
[ 2., -2., 3.],
[ 1., -1., 1.],
[ 2., -1., 1.],
[ 3., -2., 2.],
[ 3., -3., 2.],
[ 1., -2., 2.],
[ 3., -1., 2.],
[ 1., -1., 3.],
[ 3., -2., 3.],
[ 1., -1., 0.],
[ 2., -3., 1.],
[ 1., -2., 1.],
[ 4., -3., 3.],
[ 4., -2., 3.],
[ 2., -3., 3.],
[ 2., -2., 1.],
[ 3., -2., 1.],
[ 5., -3., 3.],
[ 1., -2., 3.],
[ 4., -1., 3.],
[ 3., -3., 1.],
[ 4., -3., 1.],
[ 2., -3., 2.],
[ 3., -1., 3.],
[ 2., -1., 3.],
[ 4., -3., 2.],
[ 2., -3., -1.],
[ 1., -1., 2.],
[ 5., -2., 3.],
[ 2., -3., 0.]]),
'7_1': array([[-2., -1., 1.],
[-3., 0., 1.],
[-2., -1., -1.],
[-3., -3., 2.],
[-3., -1., 1.],
[-1., 1., 1.],
[-2., -1., 2.],
[-1., 0., 1.],
[-3., -2., 2.],
[-3., 1., 3.],
[-3., 2., 2.],
[-2., 0., 1.],
[-2., -3., 2.],
[-2., -3., 1.],
[-1., -2., 1.],
[-2., -1., 0.],
[-3., 2., 3.],
[-3., -2., 3.],
[-1., 0., 0.],
[-2., 1., 2.],
[-1., -1., 1.],
[-3., 1., 2.],
[-3., -2., -1.],
[-3., -1., 3.],
[-1., -1., 0.],
[-3., -2., 1.],
[-2., 1., 1.],
[-3., -1., 2.],
[-3., -1., -1.],
[-2., -1., 1.],
[-3., 1., 1.],
[-3., -1., 0.],
[-2., -2., 1.],
[-3., -2., 0.],
[-3., 0., 2.],
[-3., -3., 1.]]),
'9_1': array([[ 2., 1., 3.],
[ 1., 2., 5.],
[ 1., 1., 1.],
[ 1., 1., 2.],
[ 3., 1., 3.],
[-1., 1., 3.],
[ 1., 0., 2.],
[ 2., 3., 4.],
[ 0., 0., 1.],
[ 1., 1., 3.],
[ 1., 2., 3.],
[-2., 0., 3.],
[ 5., 3., 5.],
[-1., 0., 2.],
[ 5., 2., 5.],
[ 4., 3., 5.],
[ 0., 1., 4.],
[ 2., 3., 2.],
[ 4., 3., 6.],
[-1., 2., 4.],
[-1., 2., 5.],
[ 5., 3., 6.],
[ 0., 3., 4.],
[ 1., 3., 6.],
[ 2., 1., 4.],
[ 2., 3., 6.],
[ 3., 3., 5.],
[ 2., 3., 3.],
[ 2., 0., 3.],
[ 1., 0., 3.],
[ 2., 3., 5.],
[ 1., 2., 2.],
[-2., 1., 4.],
[ 0., 1., 3.],
[ 0., 1., 1.],
[ 2., 2., 3.],
[-1., 1., 4.],
[ 1., 2., 1.],
[ 1., 3., 3.],
[ 1., 3., 5.],
[ 1., 1., 4.],
[ 3., 3., 4.],
[ 3., 2., 5.],
[ 0., 1., 2.],
[ 0., 3., 5.],
[ 4., 1., 4.],
[ 3., 2., 3.],
[ 3., 1., 4.],
[ 2., 2., 5.],
[-1., 0., 1.],
[ 0., 2., 3.],
[-1., 0., 3.],
[ 4., 3., 4.],
[-1., 2., 3.],
[-1., 1., 2.],
[ 1., 0., 1.],
[ 0., 2., 5.],
[ 3., 2., 4.],
[ 1., 3., 4.],
[-2., 1., 3.],
[ 2., 1., 2.],
[ 1., 3., 2.],
[ 1., 2., 4.],
[ 4., 2., 5.]]),
'11_1': array([[ 1., -1., 2.],
[ 3., -2., 2.],
[ 3., 1., 2.],
[ 1., -3., 2.],
[ 0., -1., 1.],
[ 3., -1., 1.],
[ 1., 0., 0.],
[ 3., -1., 3.],
[ 0., -2., 3.],
[ 1., -1., 3.],
[ 2., 1., 1.],
[ 3., 0., 1.],
[ 3., 1., 3.],
[ 2., -2., 1.],
[ 1., -1., 0.],
[ 0., -3., 2.],
[ 0., -3., 1.],
[ 0., -1., 3.],
[ 3., -3., 2.],
[ 2., -3., 3.],
[ 3., -3., 1.],
[ 0., 0., 1.],
[ 2., 0., 3.],
[ 3., -1., 2.],
[ 3., -2., 0.],
[ 1., -2., 2.],
[ 0., -2., 1.],
[ 2., 1., 0.],
[ 1., 0., 3.],
[ 3., -2., 3.],
[ 2., -2., 3.],
[ 2., 1., 2.],
[ 3., 0., 2.],
[ 2., -1., 2.],
[ 1., -2., 1.],
[ 2., -3., 1.],
[ 2., 1., 3.],
[ 0., -1., 0.],
[ 1., -3., 0.],
[ 2., -3., 2.],
[ 2., 0., 1.],
[ 3., -1., 0.],
[ 1., -2., 0.],
[ 1., -1., 1.],
[ 1., -1., 2.],
[ 3., 1., 0.],
[ 2., -1., 1.],
[ 1., 0., 2.],
[ 2., -1., 3.],
[ 1., -2., 3.],
[ 2., -3., 0.],
[ 2., -1., 0.],
[ 3., -2., 1.],
[ 1., -3., 3.],
[ 0., -1., 2.],
[ 1., -3., 1.],
[ 1., 0., 1.],
[ 3., 1., 1.]]),
'13_1': array([[-1., 0., 3.],
[ 0., 1., 3.],
[-1., -1., 3.],
[ 1., 1., 1.],
[-3., 2., 2.],
[-3., 1., 2.],
[ 1., 2., 3.],
[ 1., 3., 3.],
[-1., -1., 2.],
[-2., 1., 2.],
[-3., 2., 3.],
[-1., 0., 1.],
[-2., 1., 3.],
[ 1., 1., 3.],
[-1., 2., 3.],
[-1., 1., 1.],
[ 1., 2., 2.],
[ 0., 1., 2.],
[-1., 1., 3.],
[ 0., 0., 1.],
[-2., 3., 3.],
[ 0., 1., 1.],
[-1., 1., 2.],
[-2., 2., 3.],
[ 0., 2., 3.],
[-1., 0., 2.],
[-1., 2., 2.],
[-2., 1., 1.],
[ 2., 2., 3.],
[ 1., 1., 2.],
[-3., 1., 3.],
[-2., -1., 3.],
[-1., 3., 3.],
[-2., 0., 3.],
[ 2., 3., 3.]]),
'13_2': array([[ 1., 0., -2.],
[ 0., 0., -1.],
[ 1., 0., -1.],
[ 1., 0., -3.],
[ 2., 0., -3.],
[ 1., 2., 1.],
[ 2., 3., -3.],
[ 1., 1., -2.],
[ 3., 3., -2.],
[ 1., 1., -1.],
[ 4., 3., -2.],
[ 4., 3., -3.],
[ 1., 2., -3.],
[ 4., 2., -3.],
[ 2., 3., 1.],
[ 2., 1., -2.],
[ 1., 1., 0.],
[ 1., 2., -1.],
[ 2., 1., -3.],
[ 1., 2., 0.],
[ 2., 2., -3.],
[ 2., 3., 0.],
[ 1., 1., -3.],
[ 3., 1., -2.],
[ 3., 2., -2.],
[ 2., 2., -1.],
[ 5., 3., -2.],
[ 3., 2., -1.],
[ 4., 1., -3.],
[ 5., 3., -3.],
[ 2., 3., -2.],
[ 4., 3., -1.],
[ 1., 2., -2.],
[ 2., 1., -1.],
[ 3., 2., -3.],
[ 3., 1., -3.],
[ 3., 3., -1.],
[ 5., 2., -3.],
[ 2., 3., -1.]]),
'15_1': array([[ 1., 3., -2.],
[ 3., -1., -2.],
[ 1., 2., -2.],
[ 3., 3., 1.],
[ 1., 3., 3.],
[ 2., 1., -2.],
[ 0., 3., 1.],
[ 2., 0., -3.],
[ 1., 3., 1.],
[ 2., 1., 0.],
[ 0., 0., -1.],
[ 2., -2., -3.],
[ 1., 2., 0.],
[ 0., 1., -2.],
[ 1., -1., -2.],
[ 2., 3., 1.],
[ 1., -2., -3.],
[ 1., 1., 0.],
[ 2., 3., 3.],
[ 1., 3., -3.],
[ 1., 2., 1.],
[ 2., 3., -3.],
[ 3., 2., 1.],
[ 1., 0., 0.],
[ 3., 0., -2.],
[ 3., 2., -3.],
[ 0., -1., -2.],
[ 1., -2., -2.],
[ 1., 1., -3.],
[ 2., -1., -2.],
[ 0., -2., -3.],
[ 3., -1., -3.],
[ 3., 2., 0.],
[ 1., 2., -1.],
[ 0., 1., 0.],
[ 1., 0., -2.],
[ 3., 3., -1.],
[ 1., 0., -1.],
[ 3., 2., 2.],
[ 0., 3., 2.],
[ 3., 1., 0.],
[ 3., 0., -1.],
[ 3., 3., -2.],
[ 1., 0., -3.],
[ 1., -1., -1.],
[ 1., 3., 0.],
[ 2., 1., 1.],
[ 2., 1., -3.],
[ 3., 1., -1.],
[ 1., 2., 2.],
[ 0., -1., -3.],
[ 3., 1., -2.],
[ 2., 2., -1.],
[ 0., 1., 1.],
[ 0., -1., -1.],
[ 0., 1., -3.],
[ 2., 3., 2.],
[ 2., 3., -2.],
[ 3., 2., -1.],
[ 3., 2., -2.],
[ 0., 3., -2.],
[ 1., -3., -3.],
[ 0., 2., -1.],
[ 1., 1., -1.],
[ 3., -2., -3.],
[ 3., 3., 2.],
[ 2., 2., 1.],
[ 2., -3., -3.],
[ 1., 1., -2.],
[ 0., 1., -1.],
[ 2., 3., -1.],
[ 1., 2., -3.],
[ 0., 3., -1.],
[ 2., -1., -3.],
[ 2., 3., 0.],
[ 1., -1., -3.],
[ 3., 1., 1.],
[ 1., 1., 1.],
[ 2., 2., -3.],
[ 0., 2., -3.],
[ 1., 3., 2.],
[ 2., 1., -1.],
[ 2., -1., -1.],
[ 3., 1., -3.],
[ 0., 2., 1.],
[ 1., 3., -1.],
[ 2., 0., -1.],
[ 3., -1., -1.],
[ 3., -2., -2.]]),
'17_1': array([[ 0., -1., 1.],
[ 0., 0., 1.],
[ 0., -1., 3.],
[ 0., -2., 3.],
[ 0., -1., 2.],
[ 2., 1., 1.],
[ 3., -1., 6.],
[ 2., 1., 3.],
[ 2., -2., 5.],
[ 3., -2., 5.],
[ 1., -1., 3.],
[ 2., 1., 2.],
[ 2., 0., 3.],
[ 2., -3., 5.],
[ 3., 0., 5.],
[ 1., 0., 2.],
[ 1., -1., 4.],
[ 1., -2., 4.],
[ 3., 1., 2.],
[ 3., 1., 3.],
[ 2., 0., 5.],
[ 2., 1., 4.],
[ 3., 1., 6.],
[ 2., 1., 5.],
[ 2., -1., 4.],
[ 2., -1., 5.],
[ 3., 1., 4.],
[ 1., 0., 3.],
[ 3., -1., 5.],
[ 1., 0., 1.],
[ 1., -1., 2.],
[ 1., 0., 4.],
[ 1., -2., 3.],
[ 3., -2., 6.],
[ 3., -1., 4.],
[ 3., 1., 5.],
[ 2., -1., 3.],
[ 1., -3., 4.],
[ 3., 0., 4.]]),
'17_2': array([[-1., 3., 0.],
[-1., 3., 0.],
[-3., 2., 1.],
[-2., -1., 1.],
[-1., 0., 1.],
[-2., 2., 1.],
[-3., 1., 2.],
[-2., 1., 1.],
[ 0., 3., -2.],
[-2., 3., 3.],
[ 0., 3., 2.],
[-3., 2., 2.],
[-1., 0., 0.],
[ 0., 3., -1.],
[-2., 3., 2.],
[-1., 1., 2.],
[-2., 1., -1.],
[ 0., 1., -1.],
[-3., 2., 0.],
[ 0., 1., 0.],
[-3., 2., -2.],
[-3., 3., -2.],
[-1., 1., -1.],
[-3., 2., 3.],
[-2., 3., -1.],
[ 0., 2., -1.],
[-3., 0., 1.],
[-3., -1., 1.],
[-2., 3., -3.],
[-1., 2., -2.],
[-2., 3., 1.],
[-2., 2., 3.],
[-2., 3., -2.],
[-2., 0., 1.],
[-1., 2., 3.],
[-1., 2., -1.],
[-3., 2., -1.],
[-3., 3., -1.],
[-1., 3., 3.],
[-1., 2., 1.],
[-3., 3., 2.],
[-1., 3., -2.],
[ 0., 2., 1.],
[-2., 1., 0.],
[-3., 1., 3.],
[-3., -1., 2.],
[-2., 2., -1.],
[-1., 2., 2.],
[-1., 3., -3.],
[-3., 1., -1.],
[-2., 1., 3.],
[-1., 1., 0.],
[-3., 1., 1.],
[-2., 3., 0.],
[-1., 2., 0.],
[ 0., 1., 1.],
[-3., 1., 0.],
[-1., 3., -1.],
[-1., 3., 1.],
[-2., 1., 2.],
[-3., 3., 1.],
[-1., 1., 1.],
[-3., 0., 2.],
[-1., 3., 2.],
[ 0., 3., 1.]]),
'19_1': array([[ 2., 0., -1.],
[ 3., 0., -1.],
[ 3., -1., -2.],
[ 1., 0., -1.],
[ 0., -1., -2.],
[ 2., 1., -3.],
[ 2., -3., -2.],
[ 3., -1., -3.],
[ 0., -1., -1.],
[ 0., -1., 0.],
[ 2., -3., -1.],
[ 1., -2., -2.],
[ 1., -2., 0.],
[ 3., 1., -2.],
[ 1., -3., -1.],
[ 3., -2., -1.],
[ 0., -3., -1.],
[ 3., -2., -2.],
[ 3., 0., -2.],
[ 1., -3., 0.],
[ 2., -2., -1.],
[ 3., -2., 0.],
[ 2., -1., 0.],
[ 0., -2., -3.],
[ 2., -1., -2.],
[ 1., -1., 0.],
[ 0., -1., -3.],
[ 1., -3., -2.],
[ 3., -1., 0.],
[ 0., -2., -1.],
[ 2., 1., -2.],
[ 1., -1., -2.],
[ 2., -2., -3.],
[ 2., 1., 0.],
[ 2., -3., 0.],
[ 0., -3., -2.],
[ 3., 1., 0.],
[ 1., 0., -3.],
[ 2., -3., -3.],
[ 1., -3., -3.],
[ 1., 0., -2.],
[ 1., -2., -3.],
[ 1., -2., -1.],
[ 2., -1., -1.],
[ 2., 0., -3.],
[ 3., 1., -3.],
[ 3., 1., -1.],
[ 1., -1., -3.],
[ 1., 0., 0.],
[ 0., 0., -1.],
[ 3., -1., -1.],
[ 1., -1., -1.],
[ 3., -3., -2.],
[ 2., 1., -1.],
[ 3., -2., -3.],
[ 2., -1., -3.],
[ 3., -3., -1.]]),
'19_2': array([[-3., 2., 2.],
[-1., 1., 0.],
[-4., 3., 3.],
[-7., 3., 3.],
[-7., 3., 2.],
[-4., 3., 1.],
[-2., 1., 3.],
[-1., 3., -1.],
[-2., 0., 1.],
[-3., 1., 1.],
[-2., 1., 2.],
[-8., 2., 3.],
[-3., 2., 3.],
[-7., 1., 3.],
[-8., 3., 3.],
[-4., 0., 3.],
[-5., 1., 3.],
[-1., 2., 0.],
[-2., 3., 1.],
[-4., 3., 2.],
[-5., 2., 2.],
[-1., 0., 2.],
[-3., 1., 4.],
[-2., 3., 0.],
[-7., 2., 3.],
[-2., 1., 1.],
[-4., 1., 3.],
[-3., 2., 1.],
[-5., 3., 2.],
[-5., 3., 1.],
[-2., 2., 1.],
[-3., 3., 1.],
[-5., 0., 3.],
[-3., 1., 2.],
[-3., 1., 3.],
[-3., 0., 4.],
[-2., 0., 3.],
[-4., 1., 2.],
[-5., 2., 3.],
[-3., 0., 5.],
[-1., 0., 1.],
[-1., 1., 1.],
[-4., 2., 1.],
[-5., 1., 2.],
[-4., 2., 3.],
[-6., 2., 3.],
[-3., 1., 5.],
[-6., 1., 3.],
[-3., 0., 2.],
[-3., 2., 4.],
[-5., 3., 3.],
[-6., 3., 2.],
[-3., 3., 2.]])}}
[ ]: