mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 19:49:19 +02:00
assorted bug fixes
This commit is contained in:
@@ -352,6 +352,10 @@ TMoverParameters::TMoverParameters(double VelInitial, std::string TypeNameInit,
|
||||
Couplers[b].DmaxC = 0.1;
|
||||
Couplers[b].FmaxC = 1000.0;
|
||||
}
|
||||
for( b = 0; b < 2; ++b ) {
|
||||
HVCouplers[ b ][ 0 ] = 0.0;
|
||||
HVCouplers[ b ][ 1 ] = 0.0;
|
||||
}
|
||||
Power = 0.0;
|
||||
MaxLoad = 0;
|
||||
LoadAccepted = "";
|
||||
@@ -549,7 +553,7 @@ TMoverParameters::TMoverParameters(double VelInitial, std::string TypeNameInit,
|
||||
ResistorsFlag = false;
|
||||
RventRot = 0.0;
|
||||
RVentType = 0;
|
||||
RVentnmax = 0.0;
|
||||
RVentnmax = 1.0;
|
||||
RVentCutOff = 0.0;
|
||||
|
||||
enrot = 0.0;
|
||||
@@ -7791,7 +7795,14 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir)
|
||||
WriteLog("XBT EStED");
|
||||
Hamulec = std::make_shared<TEStED>(MaxBrakePress[3], BrakeCylRadius, BrakeCylDist, BrakeVVolume, BrakeCylNo, BrakeDelays, BrakeMethod, NAxles, NBpA);
|
||||
Hamulec->SetRM(RapidMult);
|
||||
break;
|
||||
if( MBPM < 2 ) {
|
||||
//jesli przystawka wazaca
|
||||
Hamulec->SetLP( 0, MaxBrakePress[ 3 ], 0 );
|
||||
}
|
||||
else {
|
||||
Hamulec->SetLP( Mass, MBPM, MaxBrakePress[ 1 ] );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case EP2:
|
||||
{
|
||||
|
||||
@@ -96,9 +96,9 @@ double PFVa(double PH, double PL, double S, double LIM,
|
||||
FM = FM * (LIM - PL) / DP; // jesli jestesmy przy nastawieniu, to zawor sie przymyka
|
||||
if ((sg > 0.5)) // jesli ponizej stosunku krytycznego
|
||||
if ((PH - PL) < DPL) // niewielka roznica cisnien
|
||||
return (PH - PL) / DPL * FM * 2 * sqrt((sg) * (1 - sg));
|
||||
return (PH - PL) / DPL * FM * 2 * sqrt((sg) * (1 - sg)); // BUG: (1-sg) can be < 0, leading to sqrt(-x)
|
||||
else
|
||||
return FM * 2 * sqrt((sg) * (1 - sg));
|
||||
return FM * 2 * sqrt( (sg) * ( 1 - sg ) ); // BUG: (1-sg) can be < 0, leading to sqrt(-x)
|
||||
else // powyzej stosunku krytycznego
|
||||
return FM;
|
||||
}
|
||||
@@ -1835,7 +1835,7 @@ void TKE::CheckReleaser(double dt)
|
||||
CVP = CntrlRes->P();
|
||||
|
||||
// odluzniacz
|
||||
if ((BrakeStatus && b_rls) == b_rls)
|
||||
if ( true == ((BrakeStatus & b_rls) == b_rls))
|
||||
if ((CVP - VVP < 0))
|
||||
BrakeStatus &= 247;
|
||||
else
|
||||
@@ -2591,32 +2591,23 @@ double TM394::GetPos(int i)
|
||||
|
||||
double TH14K1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||
{
|
||||
static int const LBDelay = 100; // szybkosc + zasilanie sterujacego
|
||||
int const LBDelay = 100; // szybkosc + zasilanie sterujacego
|
||||
// static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] =
|
||||
//{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) };
|
||||
static double const NomPress = 5.0;
|
||||
double const NomPress = 5.0;
|
||||
|
||||
double LimPP;
|
||||
double dpPipe;
|
||||
double dpMainValve;
|
||||
double ActFlowSpeed;
|
||||
int BCP;
|
||||
int BCP = std::lround(i_bcp);
|
||||
if( i_bcp < -1 ) { BCP = 1; }
|
||||
|
||||
BCP = lround(i_bcp);
|
||||
if (i_bcp < -1)
|
||||
BCP = 1;
|
||||
LimPP = BPT_K[BCP + 1][1];
|
||||
if (LimPP < 0)
|
||||
LimPP = 0.5 * PP;
|
||||
else if (LimPP > 0)
|
||||
LimPP = PP;
|
||||
else
|
||||
LimPP = CP;
|
||||
ActFlowSpeed = BPT_K[BCP + 1][0];
|
||||
double LimPP = BPT_K[BCP + 1][1];
|
||||
if( LimPP < 0.0 ) { LimPP = 0.5 * PP; }
|
||||
else if( LimPP > 0.0 ) { LimPP = PP; }
|
||||
else { LimPP = CP; }
|
||||
double ActFlowSpeed = BPT_K[BCP + 1][0];
|
||||
|
||||
CP = CP + 6 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy
|
||||
CP = CP + 6 * std::min( std::abs(LimPP - CP), 0.05 ) * PR(CP, LimPP) * dt; // zbiornik sterujacy
|
||||
|
||||
dpMainValve = 0;
|
||||
double dpMainValve = 0.0;
|
||||
|
||||
if (BCP == -1)
|
||||
dpMainValve = PF(HP, PP, ActFlowSpeed / LBDelay) * dt;
|
||||
|
||||
@@ -279,7 +279,7 @@ std::string Tab2Sp(std::string const &s) /*Tab to Space sign*/
|
||||
{
|
||||
std::string s2 = "";
|
||||
char tmp = (char)9;
|
||||
for (int b = 0; b < s.length(); ++b)
|
||||
for (std::size_t b = 0; b < s.length(); ++b)
|
||||
//{
|
||||
// if (s[b] == tmp[0])
|
||||
// s[b] = tmp[1];
|
||||
@@ -415,6 +415,9 @@ std::string to_hex_str( int const Value, int const Width )
|
||||
|
||||
int stol_def(const std::string &str, const int &DefaultValue)
|
||||
{
|
||||
// NOTE: there's good chance this function is bugged, it produced wrong result on at least one occasion
|
||||
// TODO: rewrite into something more reliable
|
||||
|
||||
// this function was developed iteratively on Codereview.stackexchange
|
||||
// with the assistance of @Corbin
|
||||
std::size_t len = str.size();
|
||||
|
||||
Reference in New Issue
Block a user