1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| %------------------ Constants and initialisation ------------------%
warning off MATLAB:divideByZero;
% warning off MATLAB:fzero:UndeterminedSyntax;
options = optimset('TolFun',1e-12);
Lamb_mean = 630e-9;
%************ Calcul de la frequence, du nombre de mode et du groupe de mode******************%
V = (2 * pi / Lamb_mean) * (d_co / 2) * sqrt(n_co^2 - n_cl^2)
N_modes = 0.5 * V^2
M_modes = sqrt(N_modes)
k0 = k0_mean;
%******************************************************************%
%************ Sauvegarde du fichier FibreData******************%
repertoire = strcat ('..\Results\',date,'\FibreData_', num2str(V),'.mat');
repertoire2 = strcat ('..\Results\',date,'\FibreData_', num2str(V),'.txt');
save (repertoire, 'd_co', 'd_cl', 'd_ct', 'ON', 'n_co', 'n_cl', 'Lamb_mean', 'k0_mean');
save (repertoire2, 'd_co', 'd_cl', 'd_ct', 'ON', 'n_co', 'n_cl', 'Lamb_mean', 'k0_mean', '-ASCII', '-DOUBLE','-TABS');
%******************************************************************%
%------------------ Search for cut off normalised frequencies -----%
dBeta = (n_co - n_cl) * k0 / (20 * floor(N_modes * 1.2));
Interv = [];
Beta_array = [];
save(['Intervals_',num2str(V),'.mat'],'Interv');
BetaMin = k0 * n_cl
BetaMax = k0 * n_co
BetaLength = BetaMax - BetaMin;
nu = 0;
ZeroFound = 1;
Beta = BetaMin;
h0 = waitbar(0,['% of orders processed']);
BarPosit = get(h0,'Position');
while ZeroFound == 1
i = 1;
ZeroFound = 0;
waitbar(nu/M_modes,h0);
h1 = waitbar(0,['Order ',num2str(nu),' : search of root segments in progress'],'Position',(BarPosit + [100 -100 0 0]));
while Beta <= BetaMax
waitbar((Beta-BetaMin)/BetaLength,h1);
Disp1 = gDispersion(Beta,nu,k0,n_co,n_cl,d_co,J_bess,K_bess);
Disp2 = gDispersion(Beta + dBeta,nu,k0,n_co,n_cl,d_co,J_bess,K_bess);
Disp3 = gDispersion((Beta + 2 * dBeta),nu,k0,n_co,n_cl,d_co,J_bess,K_bess);
if (isfinite(Disp1) & isfinite(Disp2) & isfinite(Disp3)) & (sign(Disp2) ~= sign(Disp1)) & (sign(Disp3 - Disp2) == sign(Disp2 - Disp1))
Interv((nu+1),i,1) = Beta;
Interv((nu+1),i,2) = Beta + dBeta;
i = i + 1;
ZeroFound = 1;
end
Beta = Beta + dBeta;
end
close(h1);
Beta = BetaMin;
if ZeroFound == 1
save(['Intervals_',num2str(V),'.mat'],'Interv','-APPEND');
nu = nu + 1;
end
end
close(h0);
nu
h = waitbar(0,'Roots search in progress');
Betas = [];
Size2 = length(Interv(1,:,1))
for i = 1:nu
waitbar(i/(nu + 1));
for j = 1:nnz(Interv(i,:,1))
Betas(i,(Size2 - j + 1)) = fzero(@gDispersion,[Interv(i,j,1) Interv(i,j,2)],options,(i-1),k0,n_co,n_cl,d_co,J_bess,K_bess);
end
end
close(h);
Betas
%************ Sauvegarde des valeurs de Beta***********************%
beta = strcat ('..\Results\',date,'\Betas_', num2str(V),'.mat');
beta2 = strcat ('..\Results\',date,'\Betas_', num2str(V),'.txt');
save (beta, 'Betas');
save (beta2, 'Betas','-ASCII', '-DOUBLE','-TABS');
%******************************************************************% |