image thumbnail
from Dielectric resonator antenna (DRA) design and analysis utility by Alexandre Perron
Rapidly analyze and/or design dielectric resonator antennas of various shapes.

dHemi_fr
%--------------------------------------------------------------------------
%                                dHemi_fr.m                                   
%--------------------------------------------------------------------------
%  Conception d'un rsonateur hmisphrique (franais)                                              
%
%    A) ENTRES
%
%    1. 'freq' = frquence de rsonance vise                        
%    2. 'choix_mode' = mode de rayonnement choisi             
%    3. 'er' = constante dilectrique du matriau disponible (facultatif)
%    4. 'BW' = bande passante fractionnelle minimale (ou exacte) dsire         
%    5. 'VSWR' = taux d'ondes stationnaires tolr pour le calcul    
%       de la bande passante d'impdance
%
%    B) SORTIES
%
%    - Rayon du rsonateur, facteur Q, bande passante d'impdance et 
%      constante dilectrique relative (si non spcifie).
%--------------------------------------------------------------------------
%  Rfrence :
%
%  - M. Gastine, L. Courtois et J.J. Dormann, "Electromagnetic resonances
%    of free dielectric spheres", IEEE Transactions on microwave theory
%    and techniques, Vol. 15, Num. 12, dcembre 1967, pp. 694-700.
%--------------------------------------------------------------------------
%  Note : Ce fichier fait partie de l'Outil de conception et d'analyse 
%         des rsonateurs dilectriques (DRA.m). Les quations d'estimation
%         sont tires du livre "Dielectric resonator antenna handbook" de
%         Also Petosa.
%
%  Programmation : Alexandre Perron (perrona@emt.inrs.ca)               
%  Affiliation : Institut national de la recherche scientifique (INRS)  
%  Dernire modification : Le 31 juillet 2008                              
%--------------------------------------------------------------------------

function dHemi_fr

% Entte :
clc
disp(strvcat('===============================================================',...
             ' Outil de conception et d''analyse des rsonateur dilectriques',...
             '==============================================================='));
disp(sprintf('\n--------- Conception d''un rsonateur hmisphrique ------------'));

% Entre des paramtres
freq = [];
while isempty(freq)||(isnumeric(freq) == 0)
   freq = input('\nEntrez la frquence de rsonance dsire (en GHz) : ');
end

choix_mode = [];
while isempty(choix_mode)||(choix_mode ~= 1 && choix_mode ~= 2)
    choix_mode = input(['\nPour quel mode de rayonnement?\n',...
                        '   (1) Mode TE111 (maximum au flanc)\n', ...
                        '   (2) Mode TM101 (zro au flanc)\n', ...
                        'Faites votre choix : ']);
end

er = [];
while isempty(er)||(isnumeric(er) == 0),
   er = input('\nEntrez la constante dilectrique du rsonateur\nou ''0'' si vous ne voulez pas la spcifier : ');
end

BW = [];
if (er ~= 0)
    while isempty(BW)||(isnumeric(BW) == 0)
        BW = input('\nEntrez la bande passante fractionelle minimale (ex.: 0.05 pour 5%) : ');
    end
else
    while isempty(BW)||(isnumeric(BW) == 0)
        BW = input('\nEntrez la bande passante fractionelle dsire (ex.: 0.05 pour 5%) : ');
    end
end    

VSWR = [];
while isempty(VSWR)||(isnumeric(VSWR) == 0)
    VSWR = input('\nEntrez le VSWR pour le calcul de la bande passante (ex.: 2) : ');
end

repeter = 1;
while (repeter == 1)
    
    % Calcul du facteur Q  partir de la bande passante spcifie :
    facteurQ_max = (VSWR-1)/(sqrt(VSWR)*BW);
    facteurQ = [];

    % Si la constante dilectrique est spcifie par l'utilisateur, il faut
    % vrifier s'il est possible d'obtenir la bande passante dsire pour le
    % mode de rayonnement choisi :
    if(er ~= 0)
        switch choix_mode
            case 1
                facteurQ = 0.08+0.796*er+0.01226*er^2-3e-5*er^3;
                ka = 2.8316*er^-0.47829;
            case 2
                if (er <= 20)
                    facteurQ = 0.723+0.9324*er-0.0956*er^2+0.00403*er^3-5e-5*er^4;
                else
                    facteurQ = 2.621-0.574*er+0.02812*er^2+2.59e-4*er^3;
                end
                ka = 4.47226*er^-0.505;
        end
        
        % Si ce n'est pas possible, il faut que l'utilisateur change certaines spcifications :
        if (facteurQ_max < facteurQ)
            choix = [];
            while isempty(choix)||(choix ~= 1 && choix ~= 2 && choix ~= 3 && choix ~= 4)
                choix = input(['\nLa bande passante minimale ne peut tre atteinte pour ce mode pour la\n',...
                               'constante dilectrique choisie. Dsirez-vous :\n', ...
                               '   (1) Modifier la constante dilectrique du rsonateur?\n', ...
                               '   (2) Modifier la bande passante minimale?\n', ...
                               '   (3) Choisir un autre mode de rayonnement?\n', ...
                               '   (4) Retourner au menu principal?\n', ...
                               'Faites votre choix : ']);
            end
            
            switch choix
                case 1
                    er = [];
                    while isempty(er)||(isnumeric(er) == 0)
                        er = input('\nEntrez la nouvelle constante dilectrique du rsonateur\nou ''0'' si vous ne voulez pas la spcifier : ');
                    end
                case 2
                    BW = [];
                    while isempty(BW)||(isnumeric(BW) == 0)
                        BW = input('\nEntrez la nouvelle bande passante fractionnelle minimale (ex.: 0.05 pour 5%) : ');
                    end
                case 3
                    choix_mode = [];
                    while isempty(choix_mode)||(choix_mode ~= 1 && choix_mode ~= 2)
                        choix_mode = input(['\nPour quel mode de rayonnement?\n',...
                                            '   (1) Mode TE111 (maximum au flanc)\n', ...
                                            '   (2) Mode TM101 (zro au flanc)\n', ...
                                            'Faites votre choix : ']);
                    end
                case 4    
                    return
            end

        
        else
            repeter = 0;
        end    

    else
        switch choix_mode
        case 1
            er_calc = fsolve(@(x)0.08+0.796*x+0.01226*x^2-3e-5*x^3-facteurQ_max,50);
            ka = 2.8316*er_calc^-0.47829;
        case 2
            if (facteurQ_max <= 5.371)
                er_calc = fsolve(@(x)0.723+0.9324*x-0.0956*x^2+0.00403*x^3-5e-5*x^4-facteurQ_max,10);
            else
                er_calc = fsolve(@(x)2.621-0.574*x+0.02812*x^2+2.59e-4*x^3-facteurQ_max,60);
            end
            ka = 4.47226*er_calc^-0.505;
        end

        % Un message d'erreur est affich si le constante dilectrique
        % calcule est plus petite que 1 :
        if (er_calc < 1)
            choix = [];
            while isempty(choix)||(choix ~= 1 && choix ~= 2 && choix ~= 3 && choix ~= 4)
                choix = input(['\nLa bande passante dsire ne peut tre atteinte pour ce mode car la constante\n',...
                               'dilectrique requise est physiquement irralisable (er < 1). Dsirez-vous :\n', ...
                               '   (1) Spcifier une constante dilectrique?\n', ...
                               '   (2) Modifier la bande passante dsire?\n', ...
                               '   (3) Choisir un autre mode de rayonnement?\n', ...
                               '   (4) Retourner au menu principal?\n', ...
                               'Faites votre choix : ']);
            end
            
            switch choix
                case 1
                    er = [];
                    while isempty(er)||(isnumeric(er) == 0)
                        er = input('\nEntrez la constante dilectrique du rsonateur : ');
                    end
                case 2
                    BW = [];
                    while isempty(BW)||(isnumeric(BW) == 0)
                        BW = input('\nEntrez la nouvelle bande passante fractionnelle dsire (ex.: 0.05 pour 5%) : ');
                    end
                case 3
                    choix_mode = [];
                    while isempty(choix_mode)||(choix_mode ~= 1 && choix_mode ~= 2)
                        choix_mode = input(['\nPour quel mode de rayonnement?\n',...
                                            '   (1) Mode TE111 (maximum au flanc)\n', ...
                                            '   (2) Mode TM101 (zro au flanc)\n', ...
                                            'Faites votre choix : ']);
                    end
                case 4    
                    return
            end
        else
            repeter = 0;
        end    
    end
    
    if (repeter == 0)
        
        % Lorsque tous les paramtres sont corrects, le rayon du rsonateur est calcul :
        a = 4.7713*ka/freq;
        
        % Calcul de la bande passante obtenue (si une constante dilectrique est spcifie) :
        if (er ~= 0)
            BW_reelle = (VSWR-1)/(sqrt(VSWR)*facteurQ)*100;
        end    
          
        % Entte :
        clc
        disp(strvcat('===============================================================',...
                     ' Outil de conception et d''analyse des rsonateur dilectriques',...
                     '==============================================================='));
        disp(sprintf('\n--------- Conception d''un rsonateur hmisphrique ------------\n'));

        % Affichage des paramtres d'entre :
        disp(sprintf('Frquence de rsonance dsire (en GHz) = %5.4f',freq));
    
        if (choix_mode == 1)
            disp(sprintf('Mode de rayonnement = TE111'));
        else
            disp(sprintf('Mode de rayonnement = TM101'));
        end

        if (er ~= 0)
            disp(sprintf('Bande passante fractionnelle minimale = %5.4f',BW));
        else
            disp(sprintf('Bande passante fractionnelle dsire = %5.4f',BW));
        end
        
        disp(sprintf('VSWR pour le calcul de la bande passante = %5.4f',VSWR));
        
        if (er ~= 0)
            disp(sprintf('Constante dilectrique du rsonateur = %5.4f',er));
        end
        
        % Affichage des rsultats :
        disp(sprintf('\n'));
        disp(strvcat('       Rsultats pour le mode choisi        ', ...
                     '--------------------------------------------'));
        disp(sprintf('     Rayon (a) du rsonateur (en cm) = %5.4f',a));
        if (er == 0)
            disp(sprintf('Constante dilectrique du rsonateur = %5.4f',er_calc));
            disp(sprintf('                           Facteur-Q = %5.4f',facteurQ_max));
        else
            disp(sprintf('                           Facteur-Q = %5.4f',facteurQ));
            disp(sprintf('     Bande passante (en pourcentage) = %5.4f',BW_reelle));
        end
    end
end

end

Contact us at files@mathworks.com