Author: bugman Date: Thu Dec 15 11:16:34 2011 New Revision: 15098 URL: http://svn.gna.org/viewcvs/relax?rev=15098&view=rev Log: Eliminated the full motional eigenframe of the isotropic cone frame order model. To define the frame of this motional model, only the central cone axis is required. Therefore the three Euler angles have been eliminated and replaced by two spherical coordinates of the cone axis. Modified: branches/frame_order_testing/maths_fns/frame_order.py branches/frame_order_testing/specific_fns/frame_order.py Modified: branches/frame_order_testing/maths_fns/frame_order.py URL: http://svn.gna.org/viewcvs/relax/branches/frame_order_testing/maths_fns/frame_order.py?rev=15098&r1=15097&r2=15098&view=diff ============================================================================== --- branches/frame_order_testing/maths_fns/frame_order.py (original) +++ branches/frame_order_testing/maths_fns/frame_order.py Thu Dec 15 11:16:34 2011 @@ -419,12 +419,15 @@ # Unpack the parameters. if self.pivot_opt: self._param_pivot = params[:3] - ave_pos_alpha, ave_pos_beta, ave_pos_gamma, eigen_alpha, eigen_beta, eigen_gamma, cone_theta, sigma_max = params[3:] + ave_pos_alpha, ave_pos_beta, ave_pos_gamma, axis_theta, axis_phi, cone_theta, sigma_max = params[3:] else: - ave_pos_alpha, ave_pos_beta, ave_pos_gamma, eigen_alpha, eigen_beta, eigen_gamma, cone_theta, sigma_max = params - - # Average position rotation. - euler_to_R_zyz(eigen_alpha, eigen_beta, eigen_gamma, self.R_eigen) + ave_pos_alpha, ave_pos_beta, ave_pos_gamma, axis_theta, axis_phi, cone_theta, sigma_max = params + + # Generate the cone axis from the spherical angles. + spherical_to_cartesian([1.0, axis_theta, axis_phi], self.cone_axis) + + # Pre-calculate the eigenframe rotation matrix. + two_vect_to_R(self.z_axis, self.cone_axis, self.R_eigen) # The Kronecker product of the eigenframe rotation. Rx2_eigen = kron_prod(self.R_eigen, self.R_eigen) Modified: branches/frame_order_testing/specific_fns/frame_order.py URL: http://svn.gna.org/viewcvs/relax/branches/frame_order_testing/specific_fns/frame_order.py?rev=15098&r1=15097&r2=15098&view=diff ============================================================================== --- branches/frame_order_testing/specific_fns/frame_order.py (original) +++ branches/frame_order_testing/specific_fns/frame_order.py Thu Dec 15 11:16:34 2011 @@ -111,13 +111,13 @@ param_vect.append(cdp.ave_pos_gamma) # Frame order eigenframe - the full frame. - if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['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 ['free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: + elif cdp.model in ['iso cone', 'free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: param_vect.append(cdp.axis_theta) param_vect.append(cdp.axis_phi) @@ -145,13 +145,13 @@ param_vect = [cdp.ave_pos_alpha_sim[sim_index], cdp.ave_pos_beta_sim[sim_index], cdp.ave_pos_gamma_sim[sim_index]] # Frame order eigenframe - the full frame. - if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: param_vect.append(cdp.eigen_alpha_sim[sim_index]) param_vect.append(cdp.eigen_beta_sim[sim_index]) param_vect.append(cdp.eigen_gamma_sim[sim_index]) # Frame order eigenframe - the isotropic cone axis. - elif cdp.model in ['free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: + elif cdp.model in ['iso cone', 'free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: param_vect.append(cdp.axis_theta_sim[sim_index]) param_vect.append(cdp.axis_phi_sim[sim_index]) @@ -378,6 +378,7 @@ # Fill the structure. for i in range(cdp.sim_number): + # The positive system. euler_to_R_zyz(cdp.eigen_alpha_sim[i], cdp.eigen_beta_sim[i], cdp.eigen_gamma_sim[i], axes_sim[:, i]) # Rotation and inversion. @@ -874,11 +875,11 @@ num += 3 # Frame order eigenframe - the full frame. - if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: num += 3 # Frame order eigenframe - the isotropic cone axis. - elif cdp.model in ['free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: + elif cdp.model in ['iso cone', 'free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: num += 2 # Cone parameters - pseudo-elliptic cone parameters. @@ -1157,13 +1158,13 @@ cdp.params.append('ave_pos_gamma') # Frame order eigenframe - the full frame. - if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['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 ['free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: + elif cdp.model in ['iso cone', 'free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: cdp.params.append('axis_theta') cdp.params.append('axis_phi') @@ -1243,7 +1244,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, eigen_alpha, eigen_beta, eigen_gamma, cone_theta, cone_sigma_max = param_vector + ave_pos_alpha, ave_pos_beta, ave_pos_gamma, axis_theta, axis_phi, cone_theta, cone_sigma_max = param_vector elif cdp.model in ['iso cone, torsionless']: ave_pos_beta, ave_pos_gamma, axis_theta, axis_phi, cone_theta = param_vector ave_pos_alpha = None @@ -1543,13 +1544,13 @@ names.append('ave_pos_gamma%s' % suffix) # Frame order eigenframe - the full frame. - if cdp.model in ['iso cone', 'pseudo-ellipse', 'pseudo-ellipse, torsionless', 'pseudo-ellipse, free rotor']: + if cdp.model in ['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 ['free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: + elif cdp.model in ['iso cone', 'free rotor', 'iso cone, torsionless', 'iso cone, free rotor', 'rotor']: names.append('axis_theta%s' % suffix) names.append('axis_phi%s' % suffix)