Author: bugman Date: Wed Jul 21 13:36:52 2010 New Revision: 11327 URL: http://svn.gna.org/viewcvs/relax?rev=11327&view=rev Log: Modified compile_2nd_matrix_pseudo_ellipse() to rotate and return the frame order matrix. Modified: 1.3/maths_fns/frame_order_matrix_ops.py Modified: 1.3/maths_fns/frame_order_matrix_ops.py URL: http://svn.gna.org/viewcvs/relax/1.3/maths_fns/frame_order_matrix_ops.py?rev=11327&r1=11326&r2=11327&view=diff ============================================================================== --- 1.3/maths_fns/frame_order_matrix_ops.py (original) +++ 1.3/maths_fns/frame_order_matrix_ops.py Wed Jul 21 13:36:52 2010 @@ -34,7 +34,7 @@ from maths_fns import order_parameters from maths_fns.kronecker_product import kron_prod, transpose_23 from maths_fns.pseudo_ellipse import pec -from maths_fns.rotation_matrix import two_vect_to_R +from maths_fns.rotation_matrix import euler_to_R_zyz, two_vect_to_R def compile_2nd_matrix_iso_cone(matrix, R, z_axis, cone_axis, theta_axis, phi_axis, s1): @@ -109,11 +109,19 @@ matrix[2, 2] = fact * quad(part_int_daeg1_pseudo_ellipse_zz, -pi, pi, args=(theta_x, theta_y, sigma_max))[0] -def compile_2nd_matrix_pseudo_ellipse(matrix, theta_x, theta_y, sigma_max): +def compile_2nd_matrix_pseudo_ellipse(matrix, R, eigen_alpha, eigen_beta, eigen_gamma, theta_x, theta_y, sigma_max): """Generate the 2nd degree Frame Order matrix for the pseudo ellipse. @param matrix: The Frame Order matrix, 2nd degree to be populated. @type matrix: numpy 9D, rank-2 array + @param R: The rotation matrix to be populated. + @type R: numpy 3D, rank-2 array + @param eigen_alpha: The eigenframe rotation alpha Euler angle. + @type eigen_alpha: float + @param eigen_beta: The eigenframe rotation beta Euler angle. + @type eigen_beta: float + @param eigen_gamma: The eigenframe rotation gamma Euler angle. + @type eigen_gamma: float @param theta_x: The cone opening angle along x. @type theta_x: float @param theta_y: The cone opening angle along y. @@ -146,6 +154,24 @@ matrix[2, 6] = matrix[6, 2] = fact * quad(part_int_daeg2_pseudo_ellipse_26, -pi, pi, args=(theta_x, theta_y, sigma_max))[0] matrix[5, 7] = matrix[7, 5] = fact * quad(part_int_daeg2_pseudo_ellipse_57, -pi, pi, args=(theta_x, theta_y, sigma_max))[0] + # Average position rotation. + euler_to_R_zyz(eigen_alpha, eigen_beta, eigen_gamma, R) + + # The outer product of R. + R_kron = kron_prod(R, R) + + # Perform the T23 transpose to obtain the Kronecker product matrix! + transpose_23(matrix) + + # Rotate. + matrix = dot(R_kron, dot(matrix, transpose(R_kron))) + + # Perform T23 again to return back. + transpose_23(matrix) + + # Return the matrix. + return matrix + def daeg_to_rotational_superoperator(daeg, Rsuper): """Convert the frame order matrix (daeg) to the rotational superoperator.