%------------------------------------------------------------------------
%Steuerfile für Parameterstudie 2 Massenschwinger
%Dominik Marquardt/ TI-F/ 17.11.2010
%Zwei/drei versch. ungefederte Massen werden Simuliert
%------------------------------------------------------------------------
%------------------------------------------------------------------------
%----------------HINWEIS---HINWEIS---HINWEIS---HINWEIS-------------------

% 1. Werden andere Massen z.B. mr_=[30 60] zur Simulation vorgegeben
%  muss dies manuel im File erg_matrix_2.m geändert werden.
% 2. Wird ein Plotfile vom Steuerfile aus geplottet sollte darauf geachtet werden
% dass die Forschleife z.B im plotzeit_2_massen.m File an die gewünschte Anregung angepasst wird.
% for x= 1:3 würde alle Anregungen plotten. Für for x=1:1 nur die Sweep-
% Anregung. Gleiches gilt für den File plotfreq_2_massen.m
% 3. Wird ein neuer Auswerteparameter hinzugefügt, muss dieser im auch im
% File erg_matrix_2.m, plotfreq(Funktionsaufruf) sowie
% plotzeit(Funktionsaufruf) eingebunden werden.
% 4. Im File define_parfzg.m werden Werte ins Steuerfile geladen.
% Will man mit anderen Ausgangsgrößen Simulieren, müssen die Anderungen dort eingetragen werden.
% 5. Wenn drei Massen mr simuliert werden sollen, kann man einfach den Vektor mr um eine Größe erweitern.
% 6. Wenn die zu simulierenden Massen geändert werden muss dies im Plotfile
% auch geändert werden. Der .mat- File muss z.B von ...46.0_kg.mat in
% ...24.0_kg.mat geändert werden.

%--------------------------------------------------------------------------
clc;clear all;
%delete *.mat;
%--------------------------Load Fahrzeugparameter--------------------------

define_parfzg;    % Ausgangsparameter konventionelles Fahrzeug

%-----------------------Vektor-der-ungefederten-Radmasse-------------------

mr_=[46 60 80];           % 46.5 kg Referenz, 60 kg eCID, 80 kg Direktantrieb

% mr_=[24 62];              % Mietschkewerte-für-validierung->erg_matrix
% muss im file erg_matrix_2.m händisch geändert werden
%mr_=[46 80];              % Extremwerte

%-----------------------Simulationsparameter-------------------------------

TS = 0.005;           % Sample Time wichtig für den file plotfreq_2_massen.m
% fend=60;    % Endwert der Sweepanregung.Um Achsenskallierung der Plotfiles schneller zu variieren
% z=0;

%----------------------------- Anregungsfälle------------------------------

for Anregung=1:1        % von Sweep(1) bis FB(3)

    define_man;     %load Anregungsfall-----%(1=Sweep=sw, 2=Stepup=sw, 3=FB Profil=sw)

    for l = 1:length(mr_)    %Automatische Variation der ungefederten Radmasse mr


        mr = mr_(l) ;    % Vector der ungefederten Masse

        %-------------------------Anpassung der Parameter------------------
              
%               cr=(wer^2*mr)-ca               % angepasste Federsteifigkeit des Reifens
                ka=((sqrt((ca+cr)*mr))*2*Drd)-kr
%               ca=(((2*pi*fer)^2)*mr)-cr;
%               kr=(2*(ca+cr)*Drr)/wer;                % Berechnung Reifendämpfung über angenommenes Teildämpfungsmaß des Reifens [-]
%               Drr=(ka+kr)/(2*(sqrt((ca+cr)*mr)))     % angepasste Federsteifigkeit des
%               fer_g=fer*(sqrt(1-Dr^0.5))

%         fertest=(sqrt((ca+cr)/mr))/(2*pi);           % Eigenfrequenz Reifen
%         featest=(sqrt(((ca*cr)/(ca+cr))/ma))/(2*pi); % Eigenfrequenz Aufbau wird aus Genauigkeitsgründen mit ceff=((ca*cr)/(ca+cr)) berechnet
                                                       % da sonst die Frequenz um mehrere Herz abweichen kann 
                                                          
                                                                
       %------------------------Aufruf des Simulationsmodells-------------

        sim('zweimassenschwinger_aktuell'); %Simulinkmodell wird aufgerufen und simuliert


        %------------Zuweisung der Structur-Werte zu einer Masse-----------

        legname = ['mr = ', num2str(mr,'%4.1f'),' kg'];

        x(l).fer = fer;         %Eigenradfrequenz
        x(l).fea= fea;          %Eigenaufbaufrequenz
        x(l).sww = sw;          %Anregungsfall
        x(l).leg = legname;     %Legende
        x(l).mr = mr;           %Aktuelle Masse
        x(l).cr = cr;           %FedersteifigkeitReifen
        x(l).ca = ca;           %FedersteifigkeitReifen
        x(l).kr = kr;           %Dämpferwert
        x(l).t = t;             %Zeit über welche geplottet wird
        x(l).a_auf = a_auf;     %Vertikalbeschleunigung Aufbau
        x(l).a_rad = a_rad;     %Vertikalbeschleunigung Rad
        x(l).f_ca = f_ca;       %Federkraft Aufbau
        x(l).f_ka = f_ka;       %Dämpferkraft Aufbau
        x(l).s_auf = s_auf;     %Weg vertikal Aufbau
        x(l).s_ca = s_ca;       %Weg vertikal Feder Aufbau
        x(l).s_er = s_er;       %Weg vertikal Strassenerregung
        x(l).s_ka = s_ka;       %Weg vertikal Dämpfer Aufbau
        x(l).s_rad = s_rad;     %Weg vertikal Rad
        x(l).F_N = F_N;         %Radaufstandskraft
        x(l).v_er = v_er;       %Geschwindigkeit Erregung
        x(l).TS = TS;           %Sample Zeit


        %------------------------Strukt-Werte Sweep------------------------

        if x(l).sww==1;      % Anregung Sweep

            teilergebnis1 = ['erg1_',num2str(x(l).mr,'%3.0f')];  %bilde Ergebnisname erg_...

            fname_prefix = 'Zweimassen_1_mr_';
            fname = [fname_prefix,num2str(x(l).mr,'%4.1f'),'_kg'];

            eval([teilergebnis1 ' =  x(l)']);clear x(l);  %weise erg_...den aktuellen Inhalt von Struct x zu
            eval(['save ' fname '.mat ' teilergebnis1]);  %Ergebnisse werden in ein Matfile gespeichert

        end

        %------------------------Strukt- Werte StepUp- Anregung------------
        if x(l).sww==2;      % Anregung StepUp (Sprung)

            teilergebnis2 = ['erg2_',num2str(x(l).mr,'%3.0f')];     %bilde Name erg_...

            fname_prefix = 'Zweimassen_2_mr_';
            fname = [fname_prefix,num2str(x(l).mr,'%4.1f'),'_kg'];

            eval([teilergebnis2 ' =  x(l)']); clear x(l);        %weise erg_... den aktuellen Inhalt von Struct x zu
            eval(['save ' fname '.mat ' teilergebnis2]);

        end

        %------------------------Strukt- Werte FB- Anregung----------------
%         if x(l).sww==3;
% 
%             teilergebnis3 = ['erg3_',num2str(x(l).mr,'%3.0f')];     %bilde Name erg_...
% 
%             fname_prefix = 'Zweimassen_3_mr_';
%             fname = [fname_prefix,num2str(x(l).mr,'%4.1f'),'_kg'];
% 
%             eval([teilergebnis3 ' =  x(l)']); clear x(l);          %weise erg_... den aktuellen Inhalt von Struct x zu
%             eval(['save ' fname '.mat ' teilergebnis3]);
% 
%         end

    end                   % Schleife für Variable mr

end

%------------------Aufruf-der-Plot-Files-----------------------------------

%  plotfreq_2_massen;
% plotzeit_2_massen;     %Aufruf Plots im Zeitverlauf















