image thumbnail
from Eckart Inertias by Bryan Wong
A suite of MATLAB codes to calculate effective Eckart inertias for internal rotation

F=eckart_equations(x,guess_matrix,new_mass_weight_gaussian_matrix)
function F=eckart_equations(x,guess_matrix,new_mass_weight_gaussian_matrix)

x_xi=sum(new_mass_weight_gaussian_matrix(:,1).*guess_matrix(:,1));
x_eta=sum(new_mass_weight_gaussian_matrix(:,1).*guess_matrix(:,2));
x_zeta=sum(new_mass_weight_gaussian_matrix(:,1).*guess_matrix(:,3));
y_xi=sum(new_mass_weight_gaussian_matrix(:,2).*guess_matrix(:,1));
y_eta=sum(new_mass_weight_gaussian_matrix(:,2).*guess_matrix(:,2));
y_zeta=sum(new_mass_weight_gaussian_matrix(:,2).*guess_matrix(:,3));
z_xi=sum(new_mass_weight_gaussian_matrix(:,3).*guess_matrix(:,1));
z_eta=sum(new_mass_weight_gaussian_matrix(:,3).*guess_matrix(:,2));
z_zeta=sum(new_mass_weight_gaussian_matrix(:,3).*guess_matrix(:,3));

theta=x(1);
phi=x(2);
chi=x(3);

lambda_x_xi=cos(theta)*cos(phi)*cos(chi)-sin(phi)*sin(chi);
lambda_x_eta=cos(theta)*sin(phi)*cos(chi)+cos(phi)*sin(chi);
lambda_x_zeta=-sin(theta)*cos(chi);
lambda_y_xi=-cos(theta)*cos(phi)*sin(chi)-sin(phi)*cos(chi);
lambda_y_eta=-cos(theta)*sin(phi)*sin(chi)+cos(phi)*cos(chi);
lambda_y_zeta=sin(theta)*sin(chi);
lambda_z_xi=sin(theta)*cos(phi);
lambda_z_eta=sin(theta)*sin(phi);
lambda_z_zeta=cos(theta);

F=[x_xi*lambda_y_xi+x_eta*lambda_y_eta+x_zeta*lambda_y_zeta-y_xi*lambda_x_xi-y_eta*lambda_x_eta-y_zeta*lambda_x_zeta;
    y_xi*lambda_z_xi+y_eta*lambda_z_eta+y_zeta*lambda_z_zeta-z_xi*lambda_y_xi-z_eta*lambda_y_eta-z_zeta*lambda_y_zeta;
    z_xi*lambda_x_xi+z_eta*lambda_x_eta+z_zeta*lambda_x_zeta-x_xi*lambda_z_xi-x_eta*lambda_z_eta-x_zeta*lambda_z_zeta];

Contact us at files@mathworks.com