Example #1
0
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;
}
Example #2
0
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));
	}
}