// ********************
// Initialisation
// ********************
clear;
clc;
// ********************
// Fonctions
// ********************
// Saisie des paramètres géométriques
function [A]=param_geo()
A(1) = input("grand diamètre : D = ");
A(2) = input("petit diamètre : d = ");
A(3) = input("rayon : r = ");
endfunction
// Calcul en flexion
function [Kt] = Kt_flexion(Alpha, Beta)
drapeau = Beta <= 2;
select drapeau
case %t then
coefs = [0.947, 1.206, -0.131;
0.022, -3.405, 0.915;
0.869, 1.777, -0.555;
-0.810, 0.422, -0.260];
case %f then
coefs = [1.232, 0.832, -0.008;
-3.813, 0.968, -0.260;
7.423, -4.868, 0.869;
-3.839, 3.070, -0.600];
end
C = coefs(:,1) + coefs(:,2)*sqrt(Beta) + coefs(:,3)*Beta;
polynome = poly(C', "x", "c") ;
Kt = horner(polynome, Alpha);
endfunction
// ********************
// Programme principal
// ********************
// Accueil
disp("Facteurs de concentration de contrainte d''un arbre épaulé")
disp("W. D. Pilkey, Peterson''s Stress Concentraiton factors, Wiley & sons (1997)")
// A(1) = D ; A(2) = d ; A(3) = r
A = param_geo();
t = 0.5*(A(1) - A(2)); // hauteur de filet
Beta = t/A(3); // t/r
Alpha = 2*t/A(1);
Kt_fl = Kt_flexion(Alpha, Beta);
if (Beta < 0.1) | (Beta > 20) then
disp("Torsion : attention, valeur extrapolée");
end
disp('Kt flexion = '+string(Kt_fl));
if (Beta < 0.1) | (Beta > 20) then
disp("Attention, valeur extrapolée");
end