Author: bugman Date: Fri Aug 6 15:12:56 2010 New Revision: 11431 URL: http://svn.gna.org/viewcvs/relax?rev=11431&view=rev Log: The isotropic cone frame order model now uses the full eigenframe. This is necessary to define the torsion angle restriction. Modified: 1.3/maths_fns/frame_order.py 1.3/maths_fns/frame_order_matrix_ops.py 1.3/specific_fns/frame_order.py Modified: 1.3/maths_fns/frame_order.py URL: http://svn.gna.org/viewcvs/relax/1.3/maths_fns/frame_order.py?rev=11431&r1=11430&r2=11431&view=diff ============================================================================== --- 1.3/maths_fns/frame_order.py (original) +++ 1.3/maths_fns/frame_order.py Fri Aug 6 15:12:56 2010 @@ -220,10 +220,10 @@ """ # Unpack the parameters. - ave_pos_alpha, ave_pos_beta, ave_pos_gamma, axis_theta, axis_phi, cone_theta, sigma_max = params - - # Generate the 2nd degree Frame Order super matrix. - frame_order_2nd = compile_2nd_matrix_iso_cone(self.frame_order_2nd, self.rot, self.z_axis, self.cone_axis, axis_theta, axis_phi, cone_theta, sigma_max) + ave_pos_alpha, ave_pos_beta, ave_pos_gamma, eigen_alpha, eigen_beta, eigen_gamma, cone_theta, sigma_max = params + + # Generate the 2nd degree Frame Order super matrix. + frame_order_2nd = compile_2nd_matrix_iso_cone(self.frame_order_2nd, self.rot, eigen_alpha, eigen_beta, eigen_gamma, cone_theta, sigma_max) # Reduce and rotate the tensors. self.reduce_and_rot(ave_pos_alpha, ave_pos_beta, ave_pos_gamma, frame_order_2nd) 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=11431&r1=11430&r2=11431&view=diff ============================================================================== --- 1.3/maths_fns/frame_order_matrix_ops.py (original) +++ 1.3/maths_fns/frame_order_matrix_ops.py Fri Aug 6 15:12:56 2010 @@ -60,7 +60,7 @@ matrix[2, 2] = fact * quad(part_int_daeg1_pseudo_ellipse_zz, -pi, pi, args=(theta_x, theta_y, sigma_max), full_output=1)[0] -def compile_2nd_matrix_iso_cone(matrix, R, z_axis, cone_axis, theta_axis, phi_axis, cone_theta, sigma_max): +def compile_2nd_matrix_iso_cone(matrix, R, eigen_alpha, eigen_beta, eigen_gamma, cone_theta, sigma_max): """Generate the rotated 2nd degree Frame Order matrix for the isotropic cone. The cone axis is assumed to be parallel to the z-axis in the eigenframe. @@ -69,28 +69,23 @@ @type matrix: numpy 9D, rank-2 array @param R: The rotation matrix to be populated. @type R: numpy 3D, rank-2 array - @param z_axis: The molecular frame z-axis from which the cone axis is rotated from. - @type z_axis: numpy 3D, rank-1 array - @param cone_axis: The storage structure for the cone axis. - @type cone_axis: numpy 3D, rank-1 array - @param theta_axis: The cone axis polar angle. - @type theta_axis: float - @param phi_axis: The cone axis azimuthal angle. - @type phi_axis: float + @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 cone_theta: The cone opening angle. @type cone_theta: float @param sigma_max: The maximum torsion angle. @type sigma_max: float """ - # Generate the cone axis from the spherical angles. - spherical_to_cartesian([1.0, theta_axis, phi_axis], cone_axis) - # Populate the Frame Order matrix in the eigenframe. populate_2nd_eigenframe_iso_cone(matrix, cone_theta, sigma_max) # Average position rotation. - two_vect_to_R(z_axis, cone_axis, R) + euler_to_R_zyz(eigen_alpha, eigen_beta, eigen_gamma, R) # Rotate and return the frame order matrix. return rotate_daeg(matrix, R) Modified: 1.3/specific_fns/frame_order.py URL: http://svn.gna.org/viewcvs/relax/1.3/specific_fns/frame_order.py?rev=11431&r1=11430&r2=11431&view=diff ============================================================================== --- 1.3/specific_fns/frame_order.py (original) +++ 1.3/specific_fns/frame_order.py Fri Aug 6 15:12:56 2010 @@ -91,13 +91,13 @@ param_vect = [cdp.ave_pos_alpha, cdp.ave_pos_beta, cdp.ave_pos_gamma] # Frame order eigenframe - the full frame. - if cdp.model in ['pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: param_vect.append(cdp.eigen_alpha) param_vect.append(cdp.eigen_beta) param_vect.append(cdp.eigen_gamma) # Frame order eigenframe - the isotropic cone axis. - elif cdp.model in ['iso cone', 'iso cone, torsionless', 'iso cone, free rotor']: + elif cdp.model in ['iso cone, torsionless', 'iso cone, free rotor']: param_vect.append(cdp.axis_theta) param_vect.append(cdp.axis_phi) @@ -505,13 +505,13 @@ cdp.params.append('ave_pos_gamma') # Frame order eigenframe - the full frame. - if cdp.model in ['pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: cdp.params.append('eigen_alpha') cdp.params.append('eigen_beta') cdp.params.append('eigen_gamma') # Frame order eigenframe - the isotropic cone axis. - elif cdp.model in ['iso cone', 'iso cone, torsionless', 'iso cone, free rotor']: + elif cdp.model in ['iso cone, torsionless', 'iso cone, free rotor']: cdp.params.append('axis_theta') cdp.params.append('axis_phi') @@ -575,7 +575,7 @@ elif cdp.model in ['pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: ave_pos_alpha, ave_pos_beta, ave_pos_gamma, eigen_alpha, eigen_beta, eigen_gamma, cone_theta_x, cone_theta_y = param_vector elif cdp.model == 'iso cone': - ave_pos_alpha, ave_pos_beta, ave_pos_gamma, axis_theta, axis_phi, cone_theta, cone_sigma_max = param_vector + ave_pos_alpha, ave_pos_beta, ave_pos_gamma, eigen_alpha, eigen_beta, eigen_gamma, cone_theta, cone_sigma_max = param_vector elif cdp.model in ['iso cone, torsionless', 'iso cone, free rotor']: ave_pos_beta, ave_pos_gamma, axis_theta, axis_phi, cone_s1 = param_vector ave_pos_alpha = 0.0 @@ -790,13 +790,13 @@ names.append('ave_pos_gamma%s' % suffix) # Frame order eigenframe - the full frame. - if cdp.model in ['pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: names.append('eigen_alpha%s' % suffix) names.append('eigen_beta%s' % suffix) names.append('eigen_gamma%s' % suffix) # Frame order eigenframe - the isotropic cone axis. - elif cdp.model in ['iso cone', 'iso cone, torsionless', 'iso cone, free rotor']: + elif cdp.model in ['iso cone, torsionless', 'iso cone, free rotor']: names.append('axis_theta%s' % suffix) names.append('axis_phi%s' % suffix)