float GetV(int speed) { // Calculo la velocitat a tensió nominal de bateria // Pendent, ajust en funció de la tensió real de la bateria if (speed < 0) speed = -speed; if (speed <= 20) return 0; // Facil if (speed < 40) return Interpola(Lineal724[1], Lineal724[0], speed-20)*CorreccioTraccio; if (speed < 60) return Interpola(Lineal724[2], Lineal724[1], speed-40)*CorreccioTraccio; if (speed < 80) return Interpola(Lineal724[3], Lineal724[2], speed-60)*CorreccioTraccio; return Interpola(Lineal724[4], Lineal724[3], speed-80)*CorreccioTraccio; }
void TWasteGate::GetCDout(double Time) { double deltaT = Time - FTime0; double p1 = FTuboAdm->GetPresion(FNodoAdm); double p2 = FTuboAdm->GetPresion(FNodoAdm + 1); double Padm = Interpola(p1, p2, 1.0, FDist); double PDeposito = FPlenum->getPressure(); double PTubo = FPipe->GetPresion(FPipeNode); FFuerza = (Padm - FPresCapMando) * FAreaDiaf + FSentidoWG * (PDeposito - PTubo) * FAreaPlato - FPrecarga; FddX = (FFuerza - FRigidez * FX - FAmortiguamiento * FdX) / FMasa; FX = FX + FdX * deltaT + FddX * deltaT * deltaT / 2.; FdX = FdX + FddX * deltaT; if(FX > 11.0e-3) { FX = 11.0e-3; FdX = 0.; } if(FX < 0) { FX = 0.; FdX = 0.; FCDTubVol = 0.; FCDVolTub = 0.; } else { FCDVolTub = FCoefC1 * (pow((FX / FDiametroRef), FCoefC2)); } }