Author: bugman Date: Mon Jun 29 10:25:13 2009 New Revision: 9163 URL: http://svn.gna.org/viewcvs/relax?rev=9163&view=rev Log: Expansion of frame order to both the forward and reverse rotations. reduce_alignment_tensor() was renamed to reduce_alignment_tensor_reverse(), and the new function reduce_alignment_tensor() added. Modified: branches/frame_order/maths_fns/frame_order_matrix_ops.py Modified: branches/frame_order/maths_fns/frame_order_matrix_ops.py URL: http://svn.gna.org/viewcvs/relax/branches/frame_order/maths_fns/frame_order_matrix_ops.py?rev=9163&r1=9162&r2=9163&view=diff ============================================================================== --- branches/frame_order/maths_fns/frame_order_matrix_ops.py (original) +++ branches/frame_order/maths_fns/frame_order_matrix_ops.py Mon Jun 29 10:25:13 2009 @@ -161,6 +161,8 @@ def reduce_alignment_tensor(D, A, red_tensor): """Calculate the reduction in the alignment tensor caused by the Frame Order matrix. + This is the forward rotation notation. + @param D: The Frame Order matrix, 2nd degree to be populated. @type D: numpy 9D, rank-2 array @param A: The full alignment tensor in {Axx, Ayy, Axy, Axz, Ayz} notation. @@ -171,6 +173,56 @@ """ # The reduced tensor element A0. + red_tensor[0] = (D[0,0] - D[2,2])*A[0] + red_tensor[0] = red_tensor[0] + (D[1,1] - D[2,2])*A[1] + red_tensor[0] = red_tensor[0] + 2.0*D[0,1]*A[2] + red_tensor[0] = red_tensor[0] + 2.0*D[0,2]*A[3] + red_tensor[0] = red_tensor[0] + 2.0*D[1,2]*A[4] + + # The reduced tensor element A1. + red_tensor[1] = (D[3,3] - D[5,5])*A[0] + red_tensor[1] = red_tensor[1] + (D[4,4] - D[5,5])*A[1] + red_tensor[1] = red_tensor[1] + 2.0*D[3,4]*A[2] + red_tensor[1] = red_tensor[1] + 2.0*D[3,5]*A[3] + red_tensor[1] = red_tensor[1] + 2.0*D[4,5]*A[4] + + # The reduced tensor element A2. + red_tensor[2] = (D[0,3] - D[2,5])*A[0] + red_tensor[2] = red_tensor[2] + (D[1,4] - D[2,5])*A[1] + red_tensor[2] = red_tensor[2] + (D[0,4] + D[1,3])*A[2] + red_tensor[2] = red_tensor[2] + (D[0,5] + D[2,3])*A[3] + red_tensor[2] = red_tensor[2] + (D[1,5] + D[2,4])*A[4] + + # The reduced tensor element A3. + red_tensor[3] = (D[0,6] - D[2,8])*A[0] + red_tensor[3] = red_tensor[3] + (D[1,7] - D[2,8])*A[1] + red_tensor[3] = red_tensor[3] + (D[0,7] + D[1,6])*A[2] + red_tensor[3] = red_tensor[3] + (D[0,8] + D[2,6])*A[3] + red_tensor[3] = red_tensor[3] + (D[1,8] + D[2,7])*A[4] + + # The reduced tensor element A4. + red_tensor[4] = (D[3,6] - D[5,8])*A[0] + red_tensor[4] = red_tensor[4] + (D[4,7] - D[5,8])*A[1] + red_tensor[4] = red_tensor[4] + (D[3,7] + D[4,6])*A[2] + red_tensor[4] = red_tensor[4] + (D[3,8] + D[5,6])*A[3] + red_tensor[4] = red_tensor[4] + (D[4,8] + D[5,7])*A[4] + + +def reduce_alignment_tensor_reverse(D, A, red_tensor): + """Calculate the reduction in the alignment tensor caused by the Frame Order matrix. + + This is the reverse rotation notation. + + @param D: The Frame Order matrix, 2nd degree to be populated. + @type D: numpy 9D, rank-2 array + @param A: The full alignment tensor in {Axx, Ayy, Axy, Axz, Ayz} notation. + @type A: numpy 5D, rank-1 array + @param red_tensor: The structure in {Axx, Ayy, Axy, Axz, Ayz} notation to place the reduced + alignment tensor. + @type red_tensor: numpy 5D, rank-1 array + """ + + # The reduced tensor element A0. red_tensor[0] = (D[0,0] - D[6,6])*A[0] red_tensor[0] = red_tensor[0] + (D[3,3] - D[6,6])*A[1] red_tensor[0] = red_tensor[0] + 2.0*D[0,3]*A[2]