From: Bertrand <bco...@us...> - 2016-07-10 09:16:40
|
Update of /cvsroot/jsbsim/JSBSim/src/models/propulsion In directory sfp-cvs-1.v30.ch3.sourceforge.com:/tmp/cvs-serv25207/src/models/propulsion Modified Files: FGTurboProp.h FGTurboProp.cpp Log Message: Code cleanup: removed members FDMExec and TAT and collapsed the 2 members EnginePowerVC and EnginePowerVCFN into one. Index: FGTurboProp.h =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/propulsion/FGTurboProp.h,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -r1.22 -r1.23 *** FGTurboProp.h 7 Dec 2015 10:01:48 -0000 1.22 --- FGTurboProp.h 10 Jul 2016 09:16:37 -0000 1.23 *************** *** 164,168 **** double N2_factor; ///< factor to tie N2 and throttle double ThrottlePos; ///< FCS-supplied throttle position, modified locally - double TAT; ///< total air temperature (deg C) bool Stalled; ///< true if engine is compressor-stalled bool Seized; ///< true if inner spool is seized --- 164,167 ---- *************** *** 191,196 **** double MaxStartingTime; // maximal time for start [s] (-1 means not used) double RPM; // shaft RPM - //double Velocity; - //double rho; double PSFC; // Power specific fuel comsumption [lb/(HP*hr)] at best efficiency double CombustionEfficiency; --- 190,193 ---- *************** *** 221,228 **** FGTable* ITT_N1; // ITT temperature depending on throttle command FGTable* EnginePowerRPM_N1; ! FGTable* EnginePowerVC; ! FGFunction* EnginePowerVCFN; FGTable* CombustionEfficiency_N1; - FGFDMExec* FDMExec; }; } --- 218,223 ---- FGTable* ITT_N1; // ITT temperature depending on throttle command FGTable* EnginePowerRPM_N1; ! FGParameter* EnginePowerVC; FGTable* CombustionEfficiency_N1; }; } Index: FGTurboProp.cpp =================================================================== RCS file: /cvsroot/jsbsim/JSBSim/src/models/propulsion/FGTurboProp.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -r1.33 -r1.34 *** FGTurboProp.cpp 7 Dec 2015 10:01:48 -0000 1.33 --- FGTurboProp.cpp 10 Jul 2016 09:16:37 -0000 1.34 *************** *** 65,73 **** FGTurboProp::FGTurboProp(FGFDMExec* exec, Element *el, int engine_number, struct Inputs& input) : FGEngine(engine_number, input), ! ITT_N1(NULL), EnginePowerRPM_N1(NULL), EnginePowerVC(NULL), EnginePowerVCFN(NULL), CombustionEfficiency_N1(NULL), ! FDMExec(exec) { SetDefaults(); - Load(exec, el); Debug(0); --- 65,72 ---- FGTurboProp::FGTurboProp(FGFDMExec* exec, Element *el, int engine_number, struct Inputs& input) : FGEngine(engine_number, input), ! ITT_N1(NULL), EnginePowerRPM_N1(NULL), EnginePowerVC(NULL), ! CombustionEfficiency_N1(NULL) { SetDefaults(); Load(exec, el); Debug(0); *************** *** 80,84 **** delete ITT_N1; delete EnginePowerRPM_N1; ! delete EnginePowerVC; delete CombustionEfficiency_N1; Debug(1); --- 79,84 ---- delete ITT_N1; delete EnginePowerRPM_N1; ! if (dynamic_cast<FGTable*>(EnginePowerVC)) ! delete EnginePowerVC; delete CombustionEfficiency_N1; Debug(1); *************** *** 107,111 **** string property_prefix = CreateIndexedPropertyName("propulsion/engine", EngineNumber); ! EnginePowerVCFN = GetPreFunction(property_prefix+"/EnginePowerVC"); --- 107,111 ---- string property_prefix = CreateIndexedPropertyName("propulsion/engine", EngineNumber); ! EnginePowerVC = GetPreFunction(property_prefix+"/EnginePowerVC"); *************** *** 147,161 **** ITT_Delay = el->FindElementValueAsNumber("itt_delay"); ! Element *table_element; ! string name; FGPropertyManager* PropertyManager = exec->GetPropertyManager(); ! while (true) { ! table_element = el->FindNextElement("table"); ! if (!table_element) break; ! name = table_element->GetAttributeValue("name"); ! if (!EnginePowerVCFN && name == "EnginePowerVC") { EnginePowerVC = new FGTable(PropertyManager, table_element); ! std::cerr << "Note: Using the EnginePowerVC without enclosed <function> tag is deprecated" << std::endl; } else if (name == "EnginePowerRPM_N1") { EnginePowerRPM_N1 = new FGTable(PropertyManager, table_element); --- 147,160 ---- ITT_Delay = el->FindElementValueAsNumber("itt_delay"); ! Element *table_element = el->FindElement("table"); FGPropertyManager* PropertyManager = exec->GetPropertyManager(); ! while (table_element) { ! string name = table_element->GetAttributeValue("name"); ! if (!EnginePowerVC && name == "EnginePowerVC") { EnginePowerVC = new FGTable(PropertyManager, table_element); ! cerr << table_element->ReadFrom() ! <<"Note: Using the EnginePowerVC without enclosed <function> tag is deprecated" ! << endl; } else if (name == "EnginePowerRPM_N1") { EnginePowerRPM_N1 = new FGTable(PropertyManager, table_element); *************** *** 168,171 **** --- 167,171 ---- << " in turboprop definition." << endl; } + table_element = el->FindNextElement("table"); } *************** *** 189,193 **** } ! bindmodel(exec->GetPropertyManager()); return true; } --- 189,193 ---- } ! bindmodel(PropertyManager); return true; } *************** *** 201,206 **** RunPreFunctions(); - TAT = in.TAT_c; - ThrottlePos = in.ThrottlePos[EngineNumber]; --- 201,204 ---- *************** *** 238,244 **** phase = tpOff; Cutoff = true; ! Eng_ITT_degC = TAT; ! Eng_Temperature = TAT; ! OilTemp_degK = TAT+273.15; } } --- 236,242 ---- phase = tpOff; Cutoff = true; ! Eng_ITT_degC = in.TAT_c; ! Eng_Temperature = in.TAT_c; ! OilTemp_degK = in.TAT_c+273.15; } } *************** *** 313,319 **** N1 = ExpSeek(&N1, in.qbar/15.0, Idle_Max_Delay*2.5, Idle_Max_Delay * 5); ! OilTemp_degK = ExpSeek(&OilTemp_degK,273.15 + TAT, 400 , 400); ! Eng_Temperature = ExpSeek(&Eng_Temperature,TAT,300,400); double ITT_goal = ITT_N1->GetValue(N1,0.1) + ((N1>20) ? 0.0 : (20-N1)/20.0 * Eng_Temperature); Eng_ITT_degC = ExpSeek(&Eng_ITT_degC,ITT_goal,ITT_Delay,ITT_Delay*1.2); --- 311,317 ---- N1 = ExpSeek(&N1, in.qbar/15.0, Idle_Max_Delay*2.5, Idle_Max_Delay * 5); ! OilTemp_degK = ExpSeek(&OilTemp_degK,273.15 + in.TAT_c, 400 , 400); ! Eng_Temperature = ExpSeek(&Eng_Temperature,in.TAT_c,300,400); double ITT_goal = ITT_N1->GetValue(N1,0.1) + ((N1>20) ? 0.0 : (20-N1)/20.0 * Eng_Temperature); Eng_ITT_degC = ExpSeek(&Eng_ITT_degC,ITT_goal,ITT_Delay,ITT_Delay*1.2); *************** *** 339,343 **** EngPower_HP = EnginePowerRPM_N1->GetValue(RPM,N1); ! EngPower_HP *= EnginePowerVCFN ? EnginePowerVCFN->GetValue() : EnginePowerVC->GetValue(); if (EngPower_HP > MaxPower) EngPower_HP = MaxPower; --- 337,341 ---- EngPower_HP = EnginePowerRPM_N1->GetValue(RPM,N1); ! EngPower_HP *= EnginePowerVC->GetValue(); if (EngPower_HP > MaxPower) EngPower_HP = MaxPower; *************** *** 378,386 **** N1 = ExpSeek(&N1, StarterN1, Idle_Max_Delay * 6, Idle_Max_Delay * 2.4); ! Eng_Temperature = ExpSeek(&Eng_Temperature,TAT,300,400); double ITT_goal = ITT_N1->GetValue(N1,0.1) + ((N1>20) ? 0.0 : (20-N1)/20.0 * Eng_Temperature); Eng_ITT_degC = ExpSeek(&Eng_ITT_degC,ITT_goal,ITT_Delay,ITT_Delay*1.2); ! OilTemp_degK = ExpSeek(&OilTemp_degK,273.15 + TAT, 400 , 400); OilPressure_psi = (N1/100.0*0.25+(0.1-(OilTemp_degK-273.15)*0.1/80.0)*N1/100.0) / 7692.0e-6; //from MPa to psi --- 376,384 ---- N1 = ExpSeek(&N1, StarterN1, Idle_Max_Delay * 6, Idle_Max_Delay * 2.4); ! Eng_Temperature = ExpSeek(&Eng_Temperature,in.TAT_c,300,400); double ITT_goal = ITT_N1->GetValue(N1,0.1) + ((N1>20) ? 0.0 : (20-N1)/20.0 * Eng_Temperature); Eng_ITT_degC = ExpSeek(&Eng_ITT_degC,ITT_goal,ITT_Delay,ITT_Delay*1.2); ! OilTemp_degK = ExpSeek(&OilTemp_degK,273.15 + in.TAT_c, 400 , 400); OilPressure_psi = (N1/100.0*0.25+(0.1-(OilTemp_degK-273.15)*0.1/80.0)*N1/100.0) / 7692.0e-6; //from MPa to psi *************** *** 388,392 **** EngPower_HP = EnginePowerRPM_N1->GetValue(RPM,N1); ! EngPower_HP *= EnginePowerVCFN ? EnginePowerVCFN->GetValue() : EnginePowerVC->GetValue(); if (EngPower_HP > MaxPower) EngPower_HP = MaxPower; --- 386,390 ---- EngPower_HP = EnginePowerRPM_N1->GetValue(RPM,N1); ! EngPower_HP *= EnginePowerVC->GetValue(); if (EngPower_HP > MaxPower) EngPower_HP = MaxPower; *************** *** 412,416 **** if (N1 < IdleN1) { EngPower_HP = EnginePowerRPM_N1->GetValue(RPM,N1); ! EngPower_HP *= EnginePowerVCFN ? EnginePowerVCFN->GetValue() : EnginePowerVC->GetValue(); if (EngPower_HP > MaxPower) EngPower_HP = MaxPower; N1 = ExpSeek(&N1, IdleN1*1.1, Idle_Max_Delay*4, Idle_Max_Delay * 2.4); --- 410,414 ---- if (N1 < IdleN1) { EngPower_HP = EnginePowerRPM_N1->GetValue(RPM,N1); ! EngPower_HP *= EnginePowerVC->GetValue(); if (EngPower_HP > MaxPower) EngPower_HP = MaxPower; N1 = ExpSeek(&N1, IdleN1*1.1, Idle_Max_Delay*4, Idle_Max_Delay * 2.4); *************** *** 549,558 **** int FGTurboProp::InitRunning(void) { ! FDMExec->SuspendIntegration(); Cutoff=false; Running=true; N2=16.0; Calculate(); ! FDMExec->ResumeIntegration(); return phase==tpRun; } --- 547,557 ---- int FGTurboProp::InitRunning(void) { ! double dt = in.TotalDeltaT; ! in.TotalDeltaT = 0.0; Cutoff=false; Running=true; N2=16.0; Calculate(); ! in.TotalDeltaT = dt; return phase==tpRun; } |