%=============================================================
% Uma introdução à modelagem quase-estática de automóveis
% Capítulo 6 - Diagramas de desempenho
% Exemplo página 137 da edição de Fevereiro de 2012
%=============================================================
clear all
close all
clc

graficos='s';
%-------------------------------------------------------------------------
% dados do veículo
%-------------------------------------------------------------------------
% relações das marchas
ic=[4.703;2.842;1.909;1.382;1.000;0.808;0.699;0.580;0.480];
% relação do diferencial
id=3.83;
% rendimento da transmissão
etam=0.90;
% dados dos pneus
rd=0.32;        % raio dinâmico (m)
escorr=0.02;    % escorregamento
f=0.015;        % coeficiente de atrito de rolamento
% carroceria
A=2.0;          % área frontal (m^2)
Cx=0.42;
% peso do veículo (N)
G=16503;
% pressão atmosférica (mmHg)
patm=760;    
% temperatura ambiente (K)
Tamb=15+273.15;
% densidade do ar
ro=0.4647*patm/Tamb;
% aclive
alfa=0*pi/180;
% número de pontos nos gráficos
NP=15;
%% curva de potência do motor
% potência (W)
%PeW= [20;80;126;163;180;190;185;169]*736;
%nrpm1=linspace(1000,4500,size(PeW,1)).';
% p=polyfit(nrpm1,PeW,6);
% fprintf('A0=%e;\nA1=%e;\nA2=%e;\nA3=%e;\nA4=%e;\nA5=%e;\nA6=%e;\n',...
%     p(7),p(6),p(5),p(4),p(3),p(2),p(1))
% A0=p(7);
% A1=p(6);
% A2=p(5);
% A3=p(4);
% A4=p(3);
% A5=p(2);
% A6=p(1);
A0=-1.278493e+05;
A1=2.195991e+02;
A2=-1.248258e-01;
A3=6.622842e-05;
A4=-2.172773e-08;
A5=3.559221e-12;
A6=-2.289778e-16;
nrpm=linspace(1000,4500,NP).';
PeW=A0+A1*nrpm+A2*nrpm.^2+A3*nrpm.^3+A4*nrpm.^4+A5*nrpm.^5+A6*nrpm.^6;
% PeW=polyval(p,nrpm);
%% cálculo do torque (N.m)
T=PeW./(2*pi*nrpm/60);
%%
% aceleração da gravidade (m/s^2)
grav=9.81;
% número de marchas
NM=size(ic,1);
%-------------------------------------------------------------------------
%% cálculo das curvas de desempenho
%-------------------------------------------------------------------------
for j=1:NM
    for i=1:NP
        % velocidade tangencial
        vt(i,j)=2*pi/60*nrpm(i)/(ic(j)*id)*rd;
        % velocidade real
        vr(i,j)=vt(i,j)*(1-escorr);
        % resistência aerodinâmica
        Qa(i,j)=1/2*ro*vr(i,j)^2*A*Cx;
        % resistência ao rolamento
        Qr(i,j)=f*G*cos(alfa)/(1-escorr);
        % potência no cubo
        Pc(i,j)=PeW(i)*etam;
        % potência consumida
        Pcons(i,j)=(Qa(i,j)+Qr(i,j))*vt(i,j);
        % potência líquida
        PL(i,j)=Pc(i,j)-Pcons(i,j);
    end
end
%-------------------------------------------------------------------------
%% captura dos parâmetros
%-------------------------------------------------------------------------
%% aclives máximos
maxPLvr=max(PL./vr);
alfamax = asin(maxPLvr*(1-escorr)/G);
aclivemax = tan(alfamax)*100;
%% aceleração máxima
% inércia equivalente
delta=0.004+0.05*ic.^2;
% aceleração máxima em cada marcha
acelmax=maxPLvr*(1-escorr)./(1+delta)'/G*grav;
acelmaxG=acelmax/grav;
%% tempo de retomada
marcha=1;
vr1=0/3.6; % m/s
vr2=20/3.6; % m/s
vincr=1;    % m/s
const1=30/pi/rd*id/(1-escorr);
const2=1/2*ro*Cx*A;
const3=f*G/(1-escorr);
const4=G/grav/(1-escorr);
tempo = func_tempo_retomada(const1,const2,const3,const4,marcha,ic,etam,...
    delta,vr1,vr2,vincr);
%% apresentação do tempo
fprintf('=====================================\n')
fprintf('marcha: %d \n',marcha)
fprintf('velocidade inicial: %8.2f km/h\n',vr1)
fprintf('velocidade final:   %8.2f km/h\n',vr2*3.6)
fprintf('tempo de retomada:  %8.2f s\n',tempo)
fprintf('=====================================\n')
%%
if graficos == 's'
%-------------------------------------------------------------------------
%% gráfico de torque e potência do motor
%-------------------------------------------------------------------------
figure('name','Torque e potência do motor')
[AX,H1,H2] = plotyy(nrpm,T,nrpm,PeW);
set(get(AX(1),'Ylabel'),'String','T (Nm)') 
set(get(AX(2),'Ylabel'),'String','Pe (W)') 
set(H1,'LineStyle',':')
set(H2,'LineStyle','--')
set(H1,'LineWidth',2)
set(H2,'LineWidth',2)
grid on
xlabel('n (rpm)')
%-------------------------------------------------------------------------
%% gráfico das potências no cubo e perdida
%-------------------------------------------------------------------------
figure('Name','Potências no cubo e consumida')    % título na moldura superior
plot(vr*3.6,Pc,'LineWidth',2)      
hold on
plot(vr*3.6,Pcons,'k','LineWidth',2)   
grid on                           % linhas de grade
xlabel('v (km/h)')                  % rótulo do eixo x
ylabel('P (W)')               % rótulo do eixo y
title('Potência no cubo e potência consumida')         % título do gráfico
xlim([0 220])                           % limites mínimo e máximo do eixo x
ylim([0 Inf])                       % limites mínimo e máximo do eixo y
legend('P_c 1^a marcha',...                 % legenda identificadora de cada marcha
       'P_c 2^a marcha',...
       'P_c 3^a marcha',...
       'P_c 4^a marcha',...
       'P_{cons}',2)
%-------------------------------------------------------------------------
%% gráfico da potência líquida
%-------------------------------------------------------------------------
figure('Name','Potência líquida')    % título na moldura superior
plot(vr*3.6,PL,'LineWidth',2)        
grid on                           % linhas de grade
xlabel('v (km/h)')                  % rótulo do eixo x
ylabel('P_L (W)')               % rótulo do eixo y
title('Potência líquida')         % título do gráfico
legend('1^a marcha',...                 % legenda identificadora de cada marcha
       '2^a marcha',...
       '3^a marcha',...
       '4^a marcha',1)
hold on
plot(vr*3.6,PL,'ok','LineWidth',1)
xlim([0 220])                           % limites mínimo e máximo do eixo x
ylim([0 Inf])   
%-------------------------------------------------------------------------
%% gráfico das relações da caixa
%-------------------------------------------------------------------------
figure('Name','Relações')
plot(vr*3.6,nrpm,'LineWidth',2)
axis([0 inf 0 inf])
xlabel('v (km/h')
ylabel('n (rpm)')
legend('1^a','2^a','3^a','4^a',4)
grid on
title('Relações da caixa')
end

% ======================================================================== 
%% === F I M ===
% ========================================================================


