1   
 2   
 3   
 4   
 5   
 6   
 7   
 8   
 9   
10   
11   
12   
13   
14   
15   
16   
17   
18   
19   
20   
21   
22   
23  """Module for the handling of Frame Order.""" 
24   
25   
26  from math import cos 
27   
28   
29  from lib.order import order_parameters 
30  from lib.frame_order.matrix_ops import rotate_daeg 
31   
32   
34      """Generate the rotated 2nd degree Frame Order matrix for the free rotor isotropic cone. 
35   
36      The cone axis is assumed to be parallel to the z-axis in the eigenframe.  In this model, the three order parameters are defined as:: 
37   
38          S1 = S2, 
39          S3 = 0 
40   
41   
42      @param matrix:      The Frame Order matrix, 2nd degree to be populated. 
43      @type matrix:       numpy 9D, rank-2 array 
44      @param Rx2_eigen:   The Kronecker product of the eigenframe rotation matrix with itself. 
45      @type Rx2_eigen:    numpy 9D, rank-2 array 
46      @param s1:          The cone order parameter. 
47      @type s1:           float 
48      """ 
49   
50       
51      populate_2nd_eigenframe_iso_cone_free_rotor(matrix, s1) 
52   
53       
54      return rotate_daeg(matrix, Rx2_eigen) 
 55   
56   
58      """Populate the 2nd degree Frame Order matrix in the eigenframe for the free rotor isotropic cone. 
59   
60      The cone axis is assumed to be parallel to the z-axis in the eigenframe.  In this model, the three order parameters are defined as:: 
61   
62          S1 = S2, 
63          S3 = 0 
64   
65      This is in the Kronecker product form. 
66   
67   
68      @param matrix:  The Frame Order matrix, 2nd degree. 
69      @type matrix:   numpy 9D, rank-2 array 
70      @param s1:      The cone order parameter. 
71      @type s1:       float 
72      """ 
73   
74       
75      for i in range(9): 
76          for j in range(9): 
77              matrix[i, j] = 0.0 
78   
79       
80      matrix[0, 0] = matrix[4, 4] = (s1 + 2.0) / 6.0 
81      matrix[0, 4] = matrix[4, 0] = matrix[0, 0] 
82   
83       
84      matrix[8, 8] = (2.0*s1 + 1.0) / 3.0 
85   
86       
87      matrix[0, 8] = matrix[8, 0] = (1.0 - s1) / 3.0 
88      matrix[4, 8] = matrix[8, 4] = matrix[0, 8] 
89   
90       
91      theta = order_parameters.iso_cone_S_to_theta(s1) 
92   
93       
94      matrix[1, 1] = matrix[3, 3] = (cos(theta) + 1.0) / 4.0 
95      matrix[1, 3] = matrix[3, 1] = -matrix[1, 1] 
 96