support the user
This commit is contained in:
parent
a314e63ed2
commit
c7b512a94e
|
@ -27,6 +27,276 @@ lattice_symmetries: Dict[CrystalLattice, CrystalFamily] = {
|
||||||
'cF': 'cubic',
|
'cF': 'cubic',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
orientation_relationships: Dict[str, Dict[CrystalLattice,np.ndarray]] = {
|
||||||
|
'KS': {
|
||||||
|
'cF': np.array([
|
||||||
|
[[-1, 0, 1],[ 1, 1, 1]],
|
||||||
|
[[-1, 0, 1],[ 1, 1, 1]],
|
||||||
|
[[ 0, 1,-1],[ 1, 1, 1]],
|
||||||
|
[[ 0, 1,-1],[ 1, 1, 1]],
|
||||||
|
[[ 1,-1, 0],[ 1, 1, 1]],
|
||||||
|
[[ 1,-1, 0],[ 1, 1, 1]],
|
||||||
|
[[ 1, 0,-1],[ 1,-1, 1]],
|
||||||
|
[[ 1, 0,-1],[ 1,-1, 1]],
|
||||||
|
[[-1,-1, 0],[ 1,-1, 1]],
|
||||||
|
[[-1,-1, 0],[ 1,-1, 1]],
|
||||||
|
[[ 0, 1, 1],[ 1,-1, 1]],
|
||||||
|
[[ 0, 1, 1],[ 1,-1, 1]],
|
||||||
|
[[ 0,-1, 1],[-1, 1, 1]],
|
||||||
|
[[ 0,-1, 1],[-1, 1, 1]],
|
||||||
|
[[-1, 0,-1],[-1, 1, 1]],
|
||||||
|
[[-1, 0,-1],[-1, 1, 1]],
|
||||||
|
[[ 1, 1, 0],[-1, 1, 1]],
|
||||||
|
[[ 1, 1, 0],[-1, 1, 1]],
|
||||||
|
[[-1, 1, 0],[ 1, 1,-1]],
|
||||||
|
[[-1, 1, 0],[ 1, 1,-1]],
|
||||||
|
[[ 0,-1,-1],[ 1, 1,-1]],
|
||||||
|
[[ 0,-1,-1],[ 1, 1,-1]],
|
||||||
|
[[ 1, 0, 1],[ 1, 1,-1]],
|
||||||
|
[[ 1, 0, 1],[ 1, 1,-1]],
|
||||||
|
],dtype=float),
|
||||||
|
'cI': np.array([
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
[[-1,-1, 1],[ 0, 1, 1]],
|
||||||
|
[[-1, 1,-1],[ 0, 1, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
},
|
||||||
|
'GT': {
|
||||||
|
'cF': np.array([
|
||||||
|
[[ -5,-12, 17],[ 1, 1, 1]],
|
||||||
|
[[ 17, -5,-12],[ 1, 1, 1]],
|
||||||
|
[[-12, 17, -5],[ 1, 1, 1]],
|
||||||
|
[[ 5, 12, 17],[ -1, -1, 1]],
|
||||||
|
[[-17, 5,-12],[ -1, -1, 1]],
|
||||||
|
[[ 12,-17, -5],[ -1, -1, 1]],
|
||||||
|
[[ -5, 12,-17],[ -1, 1, 1]],
|
||||||
|
[[ 17, 5, 12],[ -1, 1, 1]],
|
||||||
|
[[-12,-17, 5],[ -1, 1, 1]],
|
||||||
|
[[ 5,-12,-17],[ 1, -1, 1]],
|
||||||
|
[[-17, -5, 12],[ 1, -1, 1]],
|
||||||
|
[[ 12, 17, 5],[ 1, -1, 1]],
|
||||||
|
[[ -5, 17,-12],[ 1, 1, 1]],
|
||||||
|
[[-12, -5, 17],[ 1, 1, 1]],
|
||||||
|
[[ 17,-12, -5],[ 1, 1, 1]],
|
||||||
|
[[ 5,-17,-12],[ -1, -1, 1]],
|
||||||
|
[[ 12, 5, 17],[ -1, -1, 1]],
|
||||||
|
[[-17, 12, -5],[ -1, -1, 1]],
|
||||||
|
[[ -5,-17, 12],[ -1, 1, 1]],
|
||||||
|
[[-12, 5,-17],[ -1, 1, 1]],
|
||||||
|
[[ 17, 12, 5],[ -1, 1, 1]],
|
||||||
|
[[ 5, 17, 12],[ 1, -1, 1]],
|
||||||
|
[[ 12, -5,-17],[ 1, -1, 1]],
|
||||||
|
[[-17,-12, 5],[ 1, -1, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
'cI': np.array([
|
||||||
|
[[-17, -7, 17],[ 1, 0, 1]],
|
||||||
|
[[ 17,-17, -7],[ 1, 1, 0]],
|
||||||
|
[[ -7, 17,-17],[ 0, 1, 1]],
|
||||||
|
[[ 17, 7, 17],[ -1, 0, 1]],
|
||||||
|
[[-17, 17, -7],[ -1, -1, 0]],
|
||||||
|
[[ 7,-17,-17],[ 0, -1, 1]],
|
||||||
|
[[-17, 7,-17],[ -1, 0, 1]],
|
||||||
|
[[ 17, 17, 7],[ -1, 1, 0]],
|
||||||
|
[[ -7,-17, 17],[ 0, 1, 1]],
|
||||||
|
[[ 17, -7,-17],[ 1, 0, 1]],
|
||||||
|
[[-17,-17, 7],[ 1, -1, 0]],
|
||||||
|
[[ 7, 17, 17],[ 0, -1, 1]],
|
||||||
|
[[-17, 17, -7],[ 1, 1, 0]],
|
||||||
|
[[ -7,-17, 17],[ 0, 1, 1]],
|
||||||
|
[[ 17, -7,-17],[ 1, 0, 1]],
|
||||||
|
[[ 17,-17, -7],[ -1, -1, 0]],
|
||||||
|
[[ 7, 17, 17],[ 0, -1, 1]],
|
||||||
|
[[-17, 7,-17],[ -1, 0, 1]],
|
||||||
|
[[-17,-17, 7],[ -1, 1, 0]],
|
||||||
|
[[ -7, 17,-17],[ 0, 1, 1]],
|
||||||
|
[[ 17, 7, 17],[ -1, 0, 1]],
|
||||||
|
[[ 17, 17, 7],[ 1, -1, 0]],
|
||||||
|
[[ 7,-17,-17],[ 0, -1, 1]],
|
||||||
|
[[-17, -7, 17],[ 1, 0, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
},
|
||||||
|
'GT_prime': {
|
||||||
|
'cF' : np.array([
|
||||||
|
[[ 0, 1, -1],[ 7, 17, 17]],
|
||||||
|
[[ -1, 0, 1],[ 17, 7, 17]],
|
||||||
|
[[ 1, -1, 0],[ 17, 17, 7]],
|
||||||
|
[[ 0, -1, -1],[ -7,-17, 17]],
|
||||||
|
[[ 1, 0, 1],[-17, -7, 17]],
|
||||||
|
[[ 1, -1, 0],[-17,-17, 7]],
|
||||||
|
[[ 0, 1, -1],[ 7,-17,-17]],
|
||||||
|
[[ 1, 0, 1],[ 17, -7,-17]],
|
||||||
|
[[ -1, -1, 0],[ 17,-17, -7]],
|
||||||
|
[[ 0, -1, -1],[ -7, 17,-17]],
|
||||||
|
[[ -1, 0, 1],[-17, 7,-17]],
|
||||||
|
[[ -1, -1, 0],[-17, 17, -7]],
|
||||||
|
[[ 0, -1, 1],[ 7, 17, 17]],
|
||||||
|
[[ 1, 0, -1],[ 17, 7, 17]],
|
||||||
|
[[ -1, 1, 0],[ 17, 17, 7]],
|
||||||
|
[[ 0, 1, 1],[ -7,-17, 17]],
|
||||||
|
[[ -1, 0, -1],[-17, -7, 17]],
|
||||||
|
[[ -1, 1, 0],[-17,-17, 7]],
|
||||||
|
[[ 0, -1, 1],[ 7,-17,-17]],
|
||||||
|
[[ -1, 0, -1],[ 17, -7,-17]],
|
||||||
|
[[ 1, 1, 0],[ 17,-17, -7]],
|
||||||
|
[[ 0, 1, 1],[ -7, 17,-17]],
|
||||||
|
[[ 1, 0, -1],[-17, 7,-17]],
|
||||||
|
[[ 1, 1, 0],[-17, 17, -7]],
|
||||||
|
],dtype=float),
|
||||||
|
'cI' : np.array([
|
||||||
|
[[ 1, 1, -1],[ 12, 5, 17]],
|
||||||
|
[[ -1, 1, 1],[ 17, 12, 5]],
|
||||||
|
[[ 1, -1, 1],[ 5, 17, 12]],
|
||||||
|
[[ -1, -1, -1],[-12, -5, 17]],
|
||||||
|
[[ 1, -1, 1],[-17,-12, 5]],
|
||||||
|
[[ 1, -1, -1],[ -5,-17, 12]],
|
||||||
|
[[ -1, 1, -1],[ 12, -5,-17]],
|
||||||
|
[[ 1, 1, 1],[ 17,-12, -5]],
|
||||||
|
[[ -1, -1, 1],[ 5,-17,-12]],
|
||||||
|
[[ 1, -1, -1],[-12, 5,-17]],
|
||||||
|
[[ -1, -1, 1],[-17, 12, -5]],
|
||||||
|
[[ -1, -1, -1],[ -5, 17,-12]],
|
||||||
|
[[ 1, -1, 1],[ 12, 17, 5]],
|
||||||
|
[[ 1, 1, -1],[ 5, 12, 17]],
|
||||||
|
[[ -1, 1, 1],[ 17, 5, 12]],
|
||||||
|
[[ -1, 1, 1],[-12,-17, 5]],
|
||||||
|
[[ -1, -1, -1],[ -5,-12, 17]],
|
||||||
|
[[ -1, 1, -1],[-17, -5, 12]],
|
||||||
|
[[ -1, -1, 1],[ 12,-17, -5]],
|
||||||
|
[[ -1, 1, -1],[ 5,-12,-17]],
|
||||||
|
[[ 1, 1, 1],[ 17, -5,-12]],
|
||||||
|
[[ 1, 1, 1],[-12, 17, -5]],
|
||||||
|
[[ 1, -1, -1],[ -5, 12,-17]],
|
||||||
|
[[ 1, 1, -1],[-17, 5,-12]],
|
||||||
|
],dtype=float),
|
||||||
|
},
|
||||||
|
'NW': {
|
||||||
|
'cF' : np.array([
|
||||||
|
[[ 2, -1, -1],[ 1, 1, 1]],
|
||||||
|
[[ -1, 2, -1],[ 1, 1, 1]],
|
||||||
|
[[ -1, -1, 2],[ 1, 1, 1]],
|
||||||
|
[[ -2, -1, -1],[ -1, 1, 1]],
|
||||||
|
[[ 1, 2, -1],[ -1, 1, 1]],
|
||||||
|
[[ 1, -1, 2],[ -1, 1, 1]],
|
||||||
|
[[ 2, 1, -1],[ 1, -1, 1]],
|
||||||
|
[[ -1, -2, -1],[ 1, -1, 1]],
|
||||||
|
[[ -1, 1, 2],[ 1, -1, 1]],
|
||||||
|
[[ 2, -1, 1],[ -1, -1, 1]],
|
||||||
|
[[ -1, 2, 1],[ -1, -1, 1]],
|
||||||
|
[[ -1, -1, -2],[ -1, -1, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
'cI' : np.array([
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
[[ 0, -1, 1],[ 0, 1, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
},
|
||||||
|
'Pitsch': {
|
||||||
|
'cF' : np.array([
|
||||||
|
[[ 1, 0, 1],[ 0, 1, 0]],
|
||||||
|
[[ 1, 1, 0],[ 0, 0, 1]],
|
||||||
|
[[ 0, 1, 1],[ 1, 0, 0]],
|
||||||
|
[[ 0, 1, -1],[ 1, 0, 0]],
|
||||||
|
[[ -1, 0, 1],[ 0, 1, 0]],
|
||||||
|
[[ 1, -1, 0],[ 0, 0, 1]],
|
||||||
|
[[ 1, 0, -1],[ 0, 1, 0]],
|
||||||
|
[[ -1, 1, 0],[ 0, 0, 1]],
|
||||||
|
[[ 0, -1, 1],[ 1, 0, 0]],
|
||||||
|
[[ 0, 1, 1],[ 1, 0, 0]],
|
||||||
|
[[ 1, 0, 1],[ 0, 1, 0]],
|
||||||
|
[[ 1, 1, 0],[ 0, 0, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
'cI' : np.array([
|
||||||
|
[[ 1, -1, 1],[ -1, 0, 1]],
|
||||||
|
[[ 1, 1, -1],[ 1, -1, 0]],
|
||||||
|
[[ -1, 1, 1],[ 0, 1, -1]],
|
||||||
|
[[ -1, 1, -1],[ 0, -1, -1]],
|
||||||
|
[[ -1, -1, 1],[ -1, 0, -1]],
|
||||||
|
[[ 1, -1, -1],[ -1, -1, 0]],
|
||||||
|
[[ 1, -1, -1],[ -1, 0, -1]],
|
||||||
|
[[ -1, 1, -1],[ -1, -1, 0]],
|
||||||
|
[[ -1, -1, 1],[ 0, -1, -1]],
|
||||||
|
[[ -1, 1, 1],[ 0, -1, 1]],
|
||||||
|
[[ 1, -1, 1],[ 1, 0, -1]],
|
||||||
|
[[ 1, 1, -1],[ -1, 1, 0]],
|
||||||
|
],dtype=float),
|
||||||
|
},
|
||||||
|
'Bain': {
|
||||||
|
'cF' : np.array([
|
||||||
|
[[ 0, 1, 0],[ 1, 0, 0]],
|
||||||
|
[[ 0, 0, 1],[ 0, 1, 0]],
|
||||||
|
[[ 1, 0, 0],[ 0, 0, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
'cI' : np.array([
|
||||||
|
[[ 0, 1, 1],[ 1, 0, 0]],
|
||||||
|
[[ 1, 0, 1],[ 0, 1, 0]],
|
||||||
|
[[ 1, 1, 0],[ 0, 0, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
},
|
||||||
|
'Burgers' : {
|
||||||
|
'cI' : np.array([
|
||||||
|
[[ -1, 1, 1],[ 1, 1, 0]],
|
||||||
|
[[ -1, 1, -1],[ 1, 1, 0]],
|
||||||
|
[[ 1, 1, 1],[ 1, -1, 0]],
|
||||||
|
[[ 1, 1, -1],[ 1, -1, 0]],
|
||||||
|
|
||||||
|
[[ 1, 1, -1],[ 1, 0, 1]],
|
||||||
|
[[ -1, 1, 1],[ 1, 0, 1]],
|
||||||
|
[[ 1, 1, 1],[ -1, 0, 1]],
|
||||||
|
[[ 1, -1, 1],[ -1, 0, 1]],
|
||||||
|
|
||||||
|
[[ -1, 1, -1],[ 0, 1, 1]],
|
||||||
|
[[ 1, 1, -1],[ 0, 1, 1]],
|
||||||
|
[[ -1, 1, 1],[ 0, -1, 1]],
|
||||||
|
[[ 1, 1, 1],[ 0, -1, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
'hP' : np.array([
|
||||||
|
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
||||||
|
|
||||||
|
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
||||||
|
|
||||||
|
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
||||||
|
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
||||||
|
],dtype=float),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
class Crystal():
|
class Crystal():
|
||||||
"""
|
"""
|
||||||
|
@ -200,6 +470,15 @@ class Crystal():
|
||||||
return _immutable[self.family]
|
return _immutable[self.family]
|
||||||
|
|
||||||
|
|
||||||
|
@property
|
||||||
|
def orientation_relationships(self):
|
||||||
|
"""Return labels of orientation relationships."""
|
||||||
|
labels = []
|
||||||
|
for k,v in orientation_relationships.items():
|
||||||
|
if list(v.items())[1][0] == self.lattice: labels.append(k)
|
||||||
|
return labels
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def standard_triangle(self) -> Union[Dict[str, np.ndarray], None]:
|
def standard_triangle(self) -> Union[Dict[str, np.ndarray], None]:
|
||||||
"""
|
"""
|
||||||
|
@ -768,280 +1047,10 @@ class Crystal():
|
||||||
https://doi.org/10.1016/j.actamat.2004.11.021
|
https://doi.org/10.1016/j.actamat.2004.11.021
|
||||||
|
|
||||||
"""
|
"""
|
||||||
_orientation_relationships: Dict[str, Dict[CrystalLattice,np.ndarray]] = {
|
my_relationships = {k:v for k,v in orientation_relationships.items() if self.lattice in v}
|
||||||
'KS': {
|
if model not in my_relationships:
|
||||||
'cF' : np.array([
|
|
||||||
[[-1, 0, 1],[ 1, 1, 1]],
|
|
||||||
[[-1, 0, 1],[ 1, 1, 1]],
|
|
||||||
[[ 0, 1,-1],[ 1, 1, 1]],
|
|
||||||
[[ 0, 1,-1],[ 1, 1, 1]],
|
|
||||||
[[ 1,-1, 0],[ 1, 1, 1]],
|
|
||||||
[[ 1,-1, 0],[ 1, 1, 1]],
|
|
||||||
[[ 1, 0,-1],[ 1,-1, 1]],
|
|
||||||
[[ 1, 0,-1],[ 1,-1, 1]],
|
|
||||||
[[-1,-1, 0],[ 1,-1, 1]],
|
|
||||||
[[-1,-1, 0],[ 1,-1, 1]],
|
|
||||||
[[ 0, 1, 1],[ 1,-1, 1]],
|
|
||||||
[[ 0, 1, 1],[ 1,-1, 1]],
|
|
||||||
[[ 0,-1, 1],[-1, 1, 1]],
|
|
||||||
[[ 0,-1, 1],[-1, 1, 1]],
|
|
||||||
[[-1, 0,-1],[-1, 1, 1]],
|
|
||||||
[[-1, 0,-1],[-1, 1, 1]],
|
|
||||||
[[ 1, 1, 0],[-1, 1, 1]],
|
|
||||||
[[ 1, 1, 0],[-1, 1, 1]],
|
|
||||||
[[-1, 1, 0],[ 1, 1,-1]],
|
|
||||||
[[-1, 1, 0],[ 1, 1,-1]],
|
|
||||||
[[ 0,-1,-1],[ 1, 1,-1]],
|
|
||||||
[[ 0,-1,-1],[ 1, 1,-1]],
|
|
||||||
[[ 1, 0, 1],[ 1, 1,-1]],
|
|
||||||
[[ 1, 0, 1],[ 1, 1,-1]],
|
|
||||||
],dtype=float),
|
|
||||||
'cI' : np.array([
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
[[-1,-1, 1],[ 0, 1, 1]],
|
|
||||||
[[-1, 1,-1],[ 0, 1, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
},
|
|
||||||
'GT': {
|
|
||||||
'cF' : np.array([
|
|
||||||
[[ -5,-12, 17],[ 1, 1, 1]],
|
|
||||||
[[ 17, -5,-12],[ 1, 1, 1]],
|
|
||||||
[[-12, 17, -5],[ 1, 1, 1]],
|
|
||||||
[[ 5, 12, 17],[ -1, -1, 1]],
|
|
||||||
[[-17, 5,-12],[ -1, -1, 1]],
|
|
||||||
[[ 12,-17, -5],[ -1, -1, 1]],
|
|
||||||
[[ -5, 12,-17],[ -1, 1, 1]],
|
|
||||||
[[ 17, 5, 12],[ -1, 1, 1]],
|
|
||||||
[[-12,-17, 5],[ -1, 1, 1]],
|
|
||||||
[[ 5,-12,-17],[ 1, -1, 1]],
|
|
||||||
[[-17, -5, 12],[ 1, -1, 1]],
|
|
||||||
[[ 12, 17, 5],[ 1, -1, 1]],
|
|
||||||
[[ -5, 17,-12],[ 1, 1, 1]],
|
|
||||||
[[-12, -5, 17],[ 1, 1, 1]],
|
|
||||||
[[ 17,-12, -5],[ 1, 1, 1]],
|
|
||||||
[[ 5,-17,-12],[ -1, -1, 1]],
|
|
||||||
[[ 12, 5, 17],[ -1, -1, 1]],
|
|
||||||
[[-17, 12, -5],[ -1, -1, 1]],
|
|
||||||
[[ -5,-17, 12],[ -1, 1, 1]],
|
|
||||||
[[-12, 5,-17],[ -1, 1, 1]],
|
|
||||||
[[ 17, 12, 5],[ -1, 1, 1]],
|
|
||||||
[[ 5, 17, 12],[ 1, -1, 1]],
|
|
||||||
[[ 12, -5,-17],[ 1, -1, 1]],
|
|
||||||
[[-17,-12, 5],[ 1, -1, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
'cI' : np.array([
|
|
||||||
[[-17, -7, 17],[ 1, 0, 1]],
|
|
||||||
[[ 17,-17, -7],[ 1, 1, 0]],
|
|
||||||
[[ -7, 17,-17],[ 0, 1, 1]],
|
|
||||||
[[ 17, 7, 17],[ -1, 0, 1]],
|
|
||||||
[[-17, 17, -7],[ -1, -1, 0]],
|
|
||||||
[[ 7,-17,-17],[ 0, -1, 1]],
|
|
||||||
[[-17, 7,-17],[ -1, 0, 1]],
|
|
||||||
[[ 17, 17, 7],[ -1, 1, 0]],
|
|
||||||
[[ -7,-17, 17],[ 0, 1, 1]],
|
|
||||||
[[ 17, -7,-17],[ 1, 0, 1]],
|
|
||||||
[[-17,-17, 7],[ 1, -1, 0]],
|
|
||||||
[[ 7, 17, 17],[ 0, -1, 1]],
|
|
||||||
[[-17, 17, -7],[ 1, 1, 0]],
|
|
||||||
[[ -7,-17, 17],[ 0, 1, 1]],
|
|
||||||
[[ 17, -7,-17],[ 1, 0, 1]],
|
|
||||||
[[ 17,-17, -7],[ -1, -1, 0]],
|
|
||||||
[[ 7, 17, 17],[ 0, -1, 1]],
|
|
||||||
[[-17, 7,-17],[ -1, 0, 1]],
|
|
||||||
[[-17,-17, 7],[ -1, 1, 0]],
|
|
||||||
[[ -7, 17,-17],[ 0, 1, 1]],
|
|
||||||
[[ 17, 7, 17],[ -1, 0, 1]],
|
|
||||||
[[ 17, 17, 7],[ 1, -1, 0]],
|
|
||||||
[[ 7,-17,-17],[ 0, -1, 1]],
|
|
||||||
[[-17, -7, 17],[ 1, 0, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
},
|
|
||||||
'GT_prime': {
|
|
||||||
'cF' : np.array([
|
|
||||||
[[ 0, 1, -1],[ 7, 17, 17]],
|
|
||||||
[[ -1, 0, 1],[ 17, 7, 17]],
|
|
||||||
[[ 1, -1, 0],[ 17, 17, 7]],
|
|
||||||
[[ 0, -1, -1],[ -7,-17, 17]],
|
|
||||||
[[ 1, 0, 1],[-17, -7, 17]],
|
|
||||||
[[ 1, -1, 0],[-17,-17, 7]],
|
|
||||||
[[ 0, 1, -1],[ 7,-17,-17]],
|
|
||||||
[[ 1, 0, 1],[ 17, -7,-17]],
|
|
||||||
[[ -1, -1, 0],[ 17,-17, -7]],
|
|
||||||
[[ 0, -1, -1],[ -7, 17,-17]],
|
|
||||||
[[ -1, 0, 1],[-17, 7,-17]],
|
|
||||||
[[ -1, -1, 0],[-17, 17, -7]],
|
|
||||||
[[ 0, -1, 1],[ 7, 17, 17]],
|
|
||||||
[[ 1, 0, -1],[ 17, 7, 17]],
|
|
||||||
[[ -1, 1, 0],[ 17, 17, 7]],
|
|
||||||
[[ 0, 1, 1],[ -7,-17, 17]],
|
|
||||||
[[ -1, 0, -1],[-17, -7, 17]],
|
|
||||||
[[ -1, 1, 0],[-17,-17, 7]],
|
|
||||||
[[ 0, -1, 1],[ 7,-17,-17]],
|
|
||||||
[[ -1, 0, -1],[ 17, -7,-17]],
|
|
||||||
[[ 1, 1, 0],[ 17,-17, -7]],
|
|
||||||
[[ 0, 1, 1],[ -7, 17,-17]],
|
|
||||||
[[ 1, 0, -1],[-17, 7,-17]],
|
|
||||||
[[ 1, 1, 0],[-17, 17, -7]],
|
|
||||||
],dtype=float),
|
|
||||||
'cI' : np.array([
|
|
||||||
[[ 1, 1, -1],[ 12, 5, 17]],
|
|
||||||
[[ -1, 1, 1],[ 17, 12, 5]],
|
|
||||||
[[ 1, -1, 1],[ 5, 17, 12]],
|
|
||||||
[[ -1, -1, -1],[-12, -5, 17]],
|
|
||||||
[[ 1, -1, 1],[-17,-12, 5]],
|
|
||||||
[[ 1, -1, -1],[ -5,-17, 12]],
|
|
||||||
[[ -1, 1, -1],[ 12, -5,-17]],
|
|
||||||
[[ 1, 1, 1],[ 17,-12, -5]],
|
|
||||||
[[ -1, -1, 1],[ 5,-17,-12]],
|
|
||||||
[[ 1, -1, -1],[-12, 5,-17]],
|
|
||||||
[[ -1, -1, 1],[-17, 12, -5]],
|
|
||||||
[[ -1, -1, -1],[ -5, 17,-12]],
|
|
||||||
[[ 1, -1, 1],[ 12, 17, 5]],
|
|
||||||
[[ 1, 1, -1],[ 5, 12, 17]],
|
|
||||||
[[ -1, 1, 1],[ 17, 5, 12]],
|
|
||||||
[[ -1, 1, 1],[-12,-17, 5]],
|
|
||||||
[[ -1, -1, -1],[ -5,-12, 17]],
|
|
||||||
[[ -1, 1, -1],[-17, -5, 12]],
|
|
||||||
[[ -1, -1, 1],[ 12,-17, -5]],
|
|
||||||
[[ -1, 1, -1],[ 5,-12,-17]],
|
|
||||||
[[ 1, 1, 1],[ 17, -5,-12]],
|
|
||||||
[[ 1, 1, 1],[-12, 17, -5]],
|
|
||||||
[[ 1, -1, -1],[ -5, 12,-17]],
|
|
||||||
[[ 1, 1, -1],[-17, 5,-12]],
|
|
||||||
],dtype=float),
|
|
||||||
},
|
|
||||||
'NW': {
|
|
||||||
'cF' : np.array([
|
|
||||||
[[ 2, -1, -1],[ 1, 1, 1]],
|
|
||||||
[[ -1, 2, -1],[ 1, 1, 1]],
|
|
||||||
[[ -1, -1, 2],[ 1, 1, 1]],
|
|
||||||
[[ -2, -1, -1],[ -1, 1, 1]],
|
|
||||||
[[ 1, 2, -1],[ -1, 1, 1]],
|
|
||||||
[[ 1, -1, 2],[ -1, 1, 1]],
|
|
||||||
[[ 2, 1, -1],[ 1, -1, 1]],
|
|
||||||
[[ -1, -2, -1],[ 1, -1, 1]],
|
|
||||||
[[ -1, 1, 2],[ 1, -1, 1]],
|
|
||||||
[[ 2, -1, 1],[ -1, -1, 1]],
|
|
||||||
[[ -1, 2, 1],[ -1, -1, 1]],
|
|
||||||
[[ -1, -1, -2],[ -1, -1, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
'cI' : np.array([
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
[[ 0, -1, 1],[ 0, 1, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
},
|
|
||||||
'Pitsch': {
|
|
||||||
'cF' : np.array([
|
|
||||||
[[ 1, 0, 1],[ 0, 1, 0]],
|
|
||||||
[[ 1, 1, 0],[ 0, 0, 1]],
|
|
||||||
[[ 0, 1, 1],[ 1, 0, 0]],
|
|
||||||
[[ 0, 1, -1],[ 1, 0, 0]],
|
|
||||||
[[ -1, 0, 1],[ 0, 1, 0]],
|
|
||||||
[[ 1, -1, 0],[ 0, 0, 1]],
|
|
||||||
[[ 1, 0, -1],[ 0, 1, 0]],
|
|
||||||
[[ -1, 1, 0],[ 0, 0, 1]],
|
|
||||||
[[ 0, -1, 1],[ 1, 0, 0]],
|
|
||||||
[[ 0, 1, 1],[ 1, 0, 0]],
|
|
||||||
[[ 1, 0, 1],[ 0, 1, 0]],
|
|
||||||
[[ 1, 1, 0],[ 0, 0, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
'cI' : np.array([
|
|
||||||
[[ 1, -1, 1],[ -1, 0, 1]],
|
|
||||||
[[ 1, 1, -1],[ 1, -1, 0]],
|
|
||||||
[[ -1, 1, 1],[ 0, 1, -1]],
|
|
||||||
[[ -1, 1, -1],[ 0, -1, -1]],
|
|
||||||
[[ -1, -1, 1],[ -1, 0, -1]],
|
|
||||||
[[ 1, -1, -1],[ -1, -1, 0]],
|
|
||||||
[[ 1, -1, -1],[ -1, 0, -1]],
|
|
||||||
[[ -1, 1, -1],[ -1, -1, 0]],
|
|
||||||
[[ -1, -1, 1],[ 0, -1, -1]],
|
|
||||||
[[ -1, 1, 1],[ 0, -1, 1]],
|
|
||||||
[[ 1, -1, 1],[ 1, 0, -1]],
|
|
||||||
[[ 1, 1, -1],[ -1, 1, 0]],
|
|
||||||
],dtype=float),
|
|
||||||
},
|
|
||||||
'Bain': {
|
|
||||||
'cF' : np.array([
|
|
||||||
[[ 0, 1, 0],[ 1, 0, 0]],
|
|
||||||
[[ 0, 0, 1],[ 0, 1, 0]],
|
|
||||||
[[ 1, 0, 0],[ 0, 0, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
'cI' : np.array([
|
|
||||||
[[ 0, 1, 1],[ 1, 0, 0]],
|
|
||||||
[[ 1, 0, 1],[ 0, 1, 0]],
|
|
||||||
[[ 1, 1, 0],[ 0, 0, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
},
|
|
||||||
'Burgers' : {
|
|
||||||
'cI' : np.array([
|
|
||||||
[[ -1, 1, 1],[ 1, 1, 0]],
|
|
||||||
[[ -1, 1, -1],[ 1, 1, 0]],
|
|
||||||
[[ 1, 1, 1],[ 1, -1, 0]],
|
|
||||||
[[ 1, 1, -1],[ 1, -1, 0]],
|
|
||||||
|
|
||||||
[[ 1, 1, -1],[ 1, 0, 1]],
|
|
||||||
[[ -1, 1, 1],[ 1, 0, 1]],
|
|
||||||
[[ 1, 1, 1],[ -1, 0, 1]],
|
|
||||||
[[ 1, -1, 1],[ -1, 0, 1]],
|
|
||||||
|
|
||||||
[[ -1, 1, -1],[ 0, 1, 1]],
|
|
||||||
[[ 1, 1, -1],[ 0, 1, 1]],
|
|
||||||
[[ -1, 1, 1],[ 0, -1, 1]],
|
|
||||||
[[ 1, 1, 1],[ 0, -1, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
'hP' : np.array([
|
|
||||||
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
|
||||||
|
|
||||||
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
|
||||||
|
|
||||||
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, 2, -1, 0],[ 0, 0, 0, 1]],
|
|
||||||
[[ -1, -1, 2, 0],[ 0, 0, 0, 1]],
|
|
||||||
],dtype=float),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
orientation_relationships = {k:v for k,v in _orientation_relationships.items() if self.lattice in v}
|
|
||||||
if model not in orientation_relationships:
|
|
||||||
raise KeyError(f'unknown orientation relationship "{model}"')
|
raise KeyError(f'unknown orientation relationship "{model}"')
|
||||||
r = orientation_relationships[model]
|
r = my_relationships[model]
|
||||||
|
|
||||||
sl = self.lattice
|
sl = self.lattice
|
||||||
ol = (set(r)-{sl}).pop()
|
ol = (set(r)-{sl}).pop()
|
||||||
|
|
|
@ -823,7 +823,7 @@ class Orientation(Rotation,Crystal):
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
N_slip|N_twin : '*' or iterable of int
|
N_slip|N_twin : '*' or sequence of int
|
||||||
Number of deformation systems per family of the deformation system.
|
Number of deformation systems per family of the deformation system.
|
||||||
Use '*' to select all.
|
Use '*' to select all.
|
||||||
|
|
||||||
|
@ -871,8 +871,34 @@ class Orientation(Rotation,Crystal):
|
||||||
"""
|
"""
|
||||||
Orientations derived from the given relationship.
|
Orientations derived from the given relationship.
|
||||||
|
|
||||||
One dimension (length according to number of related orientations)
|
Parameters
|
||||||
is added to the left of the Rotation array.
|
----------
|
||||||
|
model : str
|
||||||
|
Model for orientation relationship.
|
||||||
|
Must be out of self.orientation_relationships.
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
Orientations with crystal structure according to
|
||||||
|
the selected model for the orienation relationship.
|
||||||
|
|
||||||
|
Examples
|
||||||
|
--------
|
||||||
|
Rotations of the Bain orientation relationship (cI -> cF)
|
||||||
|
of a crystal in "Cube" orientation.
|
||||||
|
|
||||||
|
>>> import numpy as np
|
||||||
|
>>> import damask
|
||||||
|
>>> np.set_printoptions(3,suppress=True,floatmode='fixed')
|
||||||
|
>>> damask.Orientation(lattice='cI').related('Bain')
|
||||||
|
Crystal family: cubic
|
||||||
|
Bravais lattice: cF
|
||||||
|
a=1 m, b=1 m, c=1 m
|
||||||
|
α=90°, β=90°, γ=90°
|
||||||
|
Quaternions of shape (3,)
|
||||||
|
[[0.924 0.383 0.000 0.000]
|
||||||
|
[0.924 0.000 0.383 0.000]
|
||||||
|
[0.924 0.000 0.000 0.383]]
|
||||||
|
|
||||||
"""
|
"""
|
||||||
lattice,o = self.relation_operations(model)
|
lattice,o = self.relation_operations(model)
|
||||||
|
|
|
@ -102,3 +102,11 @@ class TestCrystal:
|
||||||
assert [len(s) for s in crystal.kinematics('twin')['direction']] == length
|
assert [len(s) for s in crystal.kinematics('twin')['direction']] == length
|
||||||
assert [len(s) for s in crystal.kinematics('twin')['plane']] == length
|
assert [len(s) for s in crystal.kinematics('twin')['plane']] == length
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('crystal', [Crystal(lattice='cF'),
|
||||||
|
Crystal(lattice='cI'),
|
||||||
|
Crystal(lattice='hP'),
|
||||||
|
Crystal(lattice='tI',c=1.2)])
|
||||||
|
def test_related(self,crystal):
|
||||||
|
for r in crystal.orientation_relationships:
|
||||||
|
crystal.relation_operations(r)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue