close all;
clear all;
clc;

% rmdir ('lambda=1_5/Epsilon12_05/Durchlauf/', 's');   %Löschen des Ordners
y=1;                        %Zaehlvariable für Spalte in Matrix
z=1;                        %Zaehlvariable für Durchlaeufe
s = char ('B');             %Zaehlvariable für Spalte in Excell
t = char ('C');              %Zaehlvariable für Spalte in Excell
d=.02;                       %Druckerhoehung pro Durchlauf


for x = (1.17:d:1.17);        %Zaehler für Druck in Einlassbehälter
In{1} = 1500;               %Drehzahl
In{2} = 0.00;                %Kraftstoffeinspritzung
In{3} = 10.15;              %Epsilon
In{4} = x;                  %Druck in Einlassbehaelter
In{5} = 10;                 %Anzahl Arbeitsspiele

%Moeglichkeit unterschiedliche Stroemungsbeiwerte einzulesen
if (x <1.1);       
    In{6} = ('Stroemungsbeiwert\Stroemungsbeiwert_Einlass1.txt');
else In{6} = ('Stroemungsbeiwert\Stroemungsbeiwert_Einlass2.txt');
end

In{7} = ('Stroemungsbeiwert\Stroemungsbeiwert_Auslass.txt');
In{8} = ('Stroemungsbeiwert\Ventilerhebungskurve_Einlass.txt');
In{9} = ('Stroemungsbeiwert\Ventilerhebungskurve_Auslass.txt');  
In{10} = 314,15; %Temperatur Eingangsbehaelter
In{11} = 1000; %Temperatur Zylinder
In{12} = 962,15; %Temperatur Ausgangsbehaelter
In{13} = 1.05; %Druck im Zylinder
In{14} = 1.09; %Druck in Auslassbehaelter

%Gaszusammensetzung in MotorAufbauModell
    %Eingangsbehälter und Zylinder
    In{15} = 0.0541   ; %CH4
    In{16} = 0.2270   ; %O2
    In{17} = 0.7189   ; %N2
    %Ausgangsbehälter
    In{18} = 0.1459  ; %CO2
    In{19} = 0.1193 ; %H2O
    In{20} = 0.0085  ; %O2
    In{21} = 0.7263   ; %N2


mkdir(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/',z));     %Erstellen des Ordners
mkdir(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/'));
% mkdir(sprintf('Durchlauf/Durchlauf%d/',z));
parameterSetzen( ...
    'MTU396.xml', ...
    'Motormodell.xml', ...
    In, ...
    true );

!cDyn

load Ausgabe.mat;

% Matrix.Zaehler{1,y}= x;
Matrix.Grad(1) = {Ausgabe_KW.phi_gradKW};
Matrix.Druck(1,y) = {Ausgabe_KW.Zylinder1.p};
Matrix.Temperatur(1,y) = {Ausgabe_KW.Zylinder1.T};
Matrix.Waerme(1,y) = {Ausgabe_KW.Zylinder1.X}; 

figure(1);
%Druckverlauf
h(1) = subplot(131); 
hold all;
title(h(1), sprintf('Druckverlauf'),...
            'Interpreter', 'none' );
yLabel(h(1), 'Druck [bar]');
xLabel(h(1), 'Kurbelwinkel [°]');
plot( h(1), Matrix.Grad{1,1}, Matrix.Druck{1,y});

%Legende erzeugen
l_str{z} = (sprintf('Durchlauf %d %s bar', z, num2str(x)));
legend(h(1), l_str, 'FontName','Arial',...
            'FontSize',8,...
            'Position',[0.3674 0.5906 0.09453 0.15]);

%Temperaturverlauf
h(2) =subplot(132);   
hold all;
title(h(2), sprintf('Temperaturverlauf'),...
            'Interpreter', 'none' );
yLabel(h(2), 'Temperatur [Kelvin]');
xLabel(h(2), 'Kurbelwinkel [°]');
plot( h(2), Ausgabe_KW.phi_gradKW, Ausgabe_KW.Zylinder1.T);

%Waermeverlauf
h(3) = subplot(133);
hold all;
title(h(3), sprintf('Waermeverlauf'),...
            'Interpreter', 'none' );
yLabel(h(3), 'Q [J]');
xLabel(h(3), 'Kurbelwinkel [°]');
plot( h(3), Ausgabe_KW.phi_gradKW, Ausgabe_KW.Zylinder1.X);
saveas (gcf,'lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe.png')

%Druckverlauf in Excell
k = {'Druck [bar]', num2str(x)};
l = {'Kurbelwinkel [°]' 'Druck [bar]' };
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), k, 'Druck', 'B1');
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), l, 'Druck', 'B2');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z),Matrix.Druck{1,y} , 'Druck', 'C3');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), Matrix.Grad{1,1}, 'Druck', 'B3'  );

%Druckverlauf aller Durchgänge in einem Sheet
k = { num2str(x)};
l = {'Druck [bar]' };
m = {'Kurbelwinkel [°]'};
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), k, 'Druck', [t '1']);
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), l, 'Druck', 'B1');
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), m, 'Druck', 'B2');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'),Matrix.Druck{1,y} , 'Druck', [t '3']);
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), Matrix.Grad{1,1}, 'Druck', 'B3');

% Temperaturverlauf in Excell
k = {'Druck [bar]', num2str(x)};
l = {'Kurbelwinkel [°]' 'Temperatur [K]'};
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), k, 'Temperatur', 'B1');
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), l, 'Temperatur', 'B2');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), Matrix.Temperatur{1,y}, 'Temperatur', 'C3');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), Matrix.Grad{1,1}, 'Temperatur', 'B3'  );

%Temperaturverlauf aller Durchgänge in einem Sheet
k = { num2str(x)};
l = {'Druck [bar]' };
m = {'Kurbelwinkel [°]'};
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), k, 'Temperatur', [t '1']);
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), l, 'Temperatur', 'B1');
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), m, 'Temperatur', 'B2');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'),Matrix.Temperatur{1,y} , 'Temperatur', [t '3']);
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), Matrix.Grad{1,1}, 'Temperatur', 'B3');

% Waermeverlauf in Excell
k = {'Druck [bar]', num2str(x)};
l = {'Kurbelwinkel [°]' 'Waerme [KW]'};
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), k, 'Waerme', 'B1');
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), l, 'Waerme', 'B2');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), Matrix.Waerme{1,y}, 'Waerme', 'C3');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/Verlauf%d', z, z), Matrix.Grad{1,1}, 'Waerme', 'B3'  );

%Waermeverlauf aller Durchgänge in einem Sheet
k = { num2str(x)};
l = {'Druck [bar]' };
m = {'Kurbelwinkel [°]'};
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), k, 'Waerme', [t '1']);
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), l, 'Waerme', 'B1');
xlswrite (sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), m, 'Waerme', 'B2');
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'),Matrix.Waerme{1,y} , 'Waerme', [t '3']);
xlswrite(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Verlaeufe'), Matrix.Grad{1,1}, 'Waerme', 'B3');


%einzelne Dateien Speichern

druck = Ausgabe_KW.Zylinder1.p;                 %Variable des zu speichernden Datei
temp = Ausgabe_KW.Zylinder1.T;                  %Variable des zu speichernden Datei
waerme = Ausgabe_KW.Zylinder1.X;                %Variable des zu speichernden Datei
save(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/druck', z), 'druck');  %Speichern der Datei
save(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/temp',  z), 'temp');   %Speichern der Datei  
save(sprintf('lambda=1_5/Epsilon10_15/Durchlauf/Durchlauf%d/waerme', z), 'waerme');%Speichern der Datei 


y=y+1;                      %Zaehlvariable für Spalte in Matrix
z=z+1;                      %Zaehlvariable für Durchlaeufe
s=s+1;                      %Zaehlvariable für Spalte in Excell
t=t+1;
end
