From 6a4500b6e84695e5f86deecfde5e71890860eebf Mon Sep 17 00:00:00 2001 From: Erick Date: Sun, 10 Apr 2022 23:58:09 +0200 Subject: [PATCH] upload test file --- test/aero.m | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100644 test/aero.m diff --git a/test/aero.m b/test/aero.m new file mode 100644 index 0000000..ed9d21b --- /dev/null +++ b/test/aero.m @@ -0,0 +1,146 @@ +clear all; + +%% Initializing VI files +addpath_vicrt_20; +cfg = createCfg('vicrt_cdb.cfg'); +systemFile = 'file://C:/Users/ashwi/Desktop/VIgrade/MMRtestVehicle.xml'; +modelDirFiles='crtWork'; +systemStruct = generateSystemStruct(systemFile,cfg,modelDirFiles); +baseFingerprint='fingerprintSLT.xml'; + +%% Inputs +aeroBalF = .2:0.01:.32; +aeroBalR = ones(size(aeroBalF)) - aeroBalF; +df = 495.4; +aeroFile = 'C:\Program Files\VI-grade\VI-CarRealTime 20\acarrt\MMR_2019.cdb\aero_forces.tbl\MMR_2019_aero.aer'; + +%% Output arrays +laptime = NaN(size(aeroBalF)); +pitchAng = NaN(size(aeroBalF)); +u = cell(size(aeroBalF)); +Faf = cell(size(aeroBalF)); +Far = cell(size(aeroBalF)); +gear = cell(size(aeroBalF)); + +%% Batch Simulations +for i = 1:length(aeroBalF) + fdf = df .* aeroBalF(i); + rdf = df .* aeroBalR(i); + Parse_aero(aeroFile,fdf, rdf); + [successFlag, outputNameList]=runViCrt(baseFingerprint,systemStruct,'work',modelDirFiles); + + split = regexp(outputNameList{1, 1} , '\', 'split'); + ResFile = strcat(split{1,2},'.csv'); + + OUT{i} = readtable(ResFile); + laptime(i) = OUT{i}.xTime(end); + pitchAng(i) = mean(OUT{i}.Chassis_Pospitch); + u{i} = OUT{i}.Speed; + Faf{i} = OUT{i}.Aero_DownForceF; + Far{i} = OUT{i}.Aero_DownForceR; + gear{i} = OUT{i}.Driver_Gear; + X{i} = OUT{i}.X; + Y{i} = OUT{i}.Y; + s(i) = OUT{i}.S(end); + +end + +%% Plots + +% Laptime +figure(1) +clf +b = bar(aeroBalF,laptime,'BarWidth',0.7 ); +text(b.XEndPoints,b.YEndPoints,string(b.YEndPoints),'HorizontalAlignment','center',... + 'VerticalAlignment','bottom'); +ylim([min(laptime)-1 max(laptime)+1]); +title('Laptime') +xlabel('Aero balance- Front [*100%]') +ylabel('Laptime [s]') +grid on; + +% Speed map +figure(2) +clf + +for i = 1:length(aeroBalF) + ax(i) = subplot(round(length(aeroBalF)/2),2,i); + h = surf([X{i} X{i}],[Y{i} Y{i}],zeros(size([Y{i} Y{i}])),[u{i} u{i}],'EdgeColor','interp'); + title(strjoin({'Velocity maps | Front aero distribution=', sprintf('%d',aeroBalF(i)*100),'%'})); + hold on + plot(X{i}(1),Y{i}(1),'+') + hold on + idx = find(abs(diff(OUT{i}.Driver_Gear))) + 1; % gear change index + plot(X{i}(idx),Y{i}(idx),'d') + + gearNum = cellstr(num2str(OUT{i}.Driver_Gear(idx))); + text(X{i}(idx)+0.1,Y{i}(idx)+3, gearNum,'FontSize',8); + + [maxu(i),idxu] = max(u{i}); + maxuc = cellstr(num2str(maxu(i))); + %text(X{i}(idxu),Y{i}(idxu), maxuc,'FontSize',14,'Color','r'); + + h.LineWidth = 2; + %h.DisplayName = 'Front aero dist: %.3f %',aeroBalF(i)*100; + colormap('turbo') + colorbar; + view(2) +end +linkaxes(ax,'xy') + + +% Brake maps +figure(3) +clf +for i = 1:length(aeroBalF) + ax(i) = subplot(round(length(aeroBalF)/2),2,i); + h = surf([X{i} X{i}],[Y{i} Y{i}],zeros(size([Y{i} Y{i}])),[OUT{i}.Driver_Brake OUT{i}.Driver_Brake],'EdgeColor','interp'); + title(strjoin({'Brake % | Front aero distribution=', sprintf('%d',aeroBalF(i)*100),'%'})); + view(2) + h.LineWidth = 2; + colorbar; + colormap('turbo') +end +linkaxes(ax,'xy') + +% Throtle maps +figure(4) +clf +for i = 1:length(aeroBalF) + ax(i) = subplot(round(length(aeroBalF)/2),2,i); + h = surf([X{i} X{i}],[Y{i} Y{i}],zeros(size([Y{i} Y{i}])),[OUT{i}.Driver_Brake OUT{i}.Driver_Throttle],'EdgeColor','interp'); + title(strjoin({'Throttle % | Front aero distribution=', sprintf('%d',aeroBalF(i)*100),'%'})); + view(2) + h.LineWidth = 2; + colorbar; + colormap('turbo') +end +linkaxes(ax,'xy') + + + +%% Functions +function Parse_aero(aeroFile,fdf, rdf) +A = fileread(aeroFile); +C = regexp(A, '\n', 'split'); +C{1, 39} = sprintf('0 %.3f %.3f %.3f %.3f %.3f %.3f', fdf, fdf ,fdf ,fdf ,fdf, fdf); +C{1, 40} = sprintf('25 %.3f %.3f %.3f %.3f %.3f %.3f', fdf, fdf ,fdf ,fdf ,fdf, fdf); +C{1, 41} = sprintf('50 %.3f %.3f %.3f %.3f %.3f %.3f', fdf, fdf ,fdf ,fdf ,fdf, fdf); +C{1, 42} = sprintf('75 %.3f %.3f %.3f %.3f %.3f %.3f', fdf, fdf ,fdf ,fdf ,fdf, fdf); +C{1, 43} = sprintf('100 %.3f %.3f %.3f %.3f %.3f %.3f', fdf, fdf ,fdf ,fdf ,fdf, fdf); + +C{1, 55} = sprintf('0 %.3f %.3f %.3f %.3f %.3f %.3f', rdf, rdf ,rdf ,rdf ,rdf, rdf); +C{1, 56} = sprintf('25 %.3f %.3f %.3f %.3f %.3f %.3f', rdf, rdf ,rdf ,rdf ,rdf, rdf); +C{1, 57} = sprintf('50 %.3f %.3f %.3f %.3f %.3f %.3f', rdf, rdf ,rdf ,rdf ,rdf, rdf); +C{1, 58} = sprintf('75 %.3f %.3f %.3f %.3f %.3f %.3f', rdf, rdf ,rdf ,rdf ,rdf, rdf); +C{1, 59} = sprintf('100 %.3f %.3f %.3f %.3f %.3f %.3f', rdf, rdf ,rdf ,rdf ,rdf, rdf); + +combinedStr = strjoin(C,'\n'); + +fprintf(1,'fdf = %.3f\trdf = %.3f\n',fdf,rdf) + +% Save file +fid = fopen(aeroFile, 'w+'); +fprintf(fid, combinedStr); +fclose(fid); +end \ No newline at end of file