diff --git a/McZapkie/MOVER.h b/McZapkie/MOVER.h index 2ef017ab..56cb6a3c 100644 --- a/McZapkie/MOVER.h +++ b/McZapkie/MOVER.h @@ -637,6 +637,7 @@ struct TTransmision int NToothM = 0; int NToothW = 0; double Ratio = 1.0; + double Efficiency = 1.0; }; enum class TCouplerType { NoCoupler, Articulated, Bare, Chain, Screw, Automatic }; diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index e0f380b5..d9060ecc 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -5248,7 +5248,7 @@ double TMoverParameters::TractionForce( double dt ) { Itot = Im; else Itot = Im * RList[MainCtrlActualPos].Bn; // prad silnika * ilosc galezi - Mw = Mm * Transmision.Ratio; + Mw = Mm * Transmision.Ratio * Transmision.Efficiency; Fw = Mw * 2.0 / WheelDiameter; Ft = Fw * NPoweredAxles; // sila trakcyjna break; @@ -5256,9 +5256,9 @@ double TMoverParameters::TractionForce( double dt ) { case TEngineType::DieselEngine: { - Mw = dmoment * dtrans; // dmoment i dtrans policzone przy okazji enginerotation + Mw = dmoment * dtrans * Transmision.Efficiency; // dmoment i dtrans policzone przy okazji enginerotation if ((hydro_R) && (hydro_R_Placement == 0)) - Mw -= dizel_MomentumRetarder(nrot * Transmision.Ratio, dt) * Transmision.Ratio; + Mw -= dizel_MomentumRetarder(nrot * Transmision.Ratio, dt) * Transmision.Ratio * Transmision.Efficiency; Fw = Mw * 2.0 / WheelDiameter / NPoweredAxles; Ft = Fw * NPoweredAxles; // sila trakcyjna Ft = Ft * DirAbsolute; // ActiveDir*CabNo; @@ -5826,7 +5826,7 @@ double TMoverParameters::TractionForce( double dt ) { } Mm = eimv[eimv_M] * DirAbsolute; - Mw = Mm * Transmision.Ratio; + Mw = Mm * Transmision.Ratio * Transmision.Efficiency; Fw = Mw * 2.0 / WheelDiameter; Ft = Fw * NPoweredAxles; eimv[eimv_Fr] = DirAbsolute * Ft / 1000; @@ -9878,6 +9878,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) { Transmision.Ratio = static_cast( Transmision.NToothW ) / Transmision.NToothM; else Transmision.Ratio = 1.0; + extract_value(Transmision.Efficiency, "TransEff", Input, ""); } switch( EngineType ) {