43 #include "TTimeControl.h"
46 #include "TBloqueMotor.h"
47 #include "TCilindro4T.h"
50 #include "TCompresorDep.h"
51 #include "TCompTubDep.h"
52 #include "TCompTubos.h"
55 #include "TCalculoExtern.h"
56 #include "TRemansoMatlab.h"
57 #include "TCoefDescarga.h"
58 #include "TControlFuel.h"
61 #include "TCDExterno.h"
62 #include "TEstatorTurbina.h"
63 #include "TRotorTurbina.h"
64 #include "TWasteGate.h"
65 #include "TValvulaContr.h"
66 #include "TDiscoRotativo.h"
67 #include "TLumbrera.h"
69 #include "TValvula4T.h"
71 #include "TMariposa.h"
77 #include "TDepVolVariable.h"
78 #include "TDepVolCte.h"
79 #include "TTurbinaSimple.h"
80 #include "TTurbinaTwin.h"
82 #include "TUnionDireccional.h"
85 #include "TCCDescargaExtremoAbierto.h"
86 #include "TCCExtremoAnecoico.h"
87 #include "TCCExtremoCerrado.h"
89 #include "TCCCilindro.h"
90 #include "TCCUnionEntreTubos.h"
91 #include "TCCPerdidadePresion.h"
92 #include "TCCDeposito.h"
93 #include "TCCRamificacion.h"
94 #include "TCCExtremoInyeccion.h"
95 #include "TCCEntradaCompresor.h"
96 #include "TCCUnionEntreDepositos.h"
97 #include "TCCCompresorVolumetrico.h"
98 #include "TCCCompresor.h"
99 #include "TCCPreVble.h"
100 #include "TCFDConnection.h"
101 #include "TCCExternalConnection.h"
102 #include "TCCExternalConnectionVol.h"
105 #include "TEjeTurbogrupo.h"
108 #ifdef ParticulateFilter
110 #include "TCanalDPF.h"
114 #ifdef ConcentricElement
115 #include "TConcentricoTubos.h"
116 #include "TConcentricoDPF.h"
121 #include "TPIDController.h"
122 #include "TTable1D.h"
123 #include "TDecisor.h"
127 #include "TOutputResults.h"
134 #include <sys/timeb.h>
137 #define gestorcom true
138 #define graphicalout true
145 #include "TCGestorWAM.h"
157 struct timeb begining, final, current;
162 std::string fileinput;
190 #ifdef ConcentricElement
195 #ifdef ParticulateFilter
229 double DeltaTPlenums;
238 double AcumulatedTime;
247 nmTipoCalculoEspecies SpeciesModel;
249 double* AtmosphericComposition;
251 nmTipoCombustible FuelType;
252 nmCalculoGamma GammaCalculation;
255 nmTipoMotor EngineType;
257 nmTipoModelado SimulationType;
269 double SimulationDuration;
270 int CyclesWithoutThemalInertia;
271 double AmbientPressure;
272 double AmbientTemperature;
273 bool ConvergenceFirstTime;
282 int NumberOfConcentrics;
289 int NumberOfReedValves;
290 int NumberOfWasteGates;
291 int NumberOfExternalCalculatedValves;
294 int NumberOfConnections;
295 int NumberOfVolumetricCompressors;
296 int NumberOfExhaustValves;
297 int NumberOfIntakeValves;
298 int NumberOfCompressorsConnections;
299 int NumberOfInjectionEnds;
300 int NumberOfConectionsBetweenPlenums;
301 int NumberOfButerflyValves;
307 int NumberOfVenturis;
310 int NumberOfDirectionalJunctions;
317 int NumberOfControllers;
327 int NumberOfTurbines;
334 int NumberOfCompressors;
337 int NumTCCPerdidaPresion;
349 void InitFlowIndependentNumThreads();
355 void ReadGeneralData();
363 void ReadConcentric();
369 void ReadCompressors();
371 void ReadConnections();
373 void ReadTurbochargerAxis();
377 void ReadControllers();
379 void ReadOutput(
char* FileName);
383 void RunningControl();
385 void InitializeRunningAngles();
387 void AllocateVGTData();
389 void CalculateNewHeatPositions();
391 void CalculateDistance(
int NodoOrigen,
int NodoFin,
double Longitud,
int NumberOfPlenums,
int NumberOfPipes,
394 int SelectPipe(
TTubo **Pipe,
int NumberOfPipes,
int nodo1,
int nodo2);
396 void MethodStability();
398 void SearchMinimumTimeStep();
400 void StudyInflowOutflowMass();
402 void SearchMinimumTime(
int LNumDepInicial,
double* LTMinimo,
TDeposito **LPlenum);
404 void SearchMinimumTimeGroup(
double *LTMinimo,
int LNumDeposito,
TDeposito **LPlenum);
408 void FixTimeStepExternal(
double deltat);
410 void RecalculateStability();
412 void SolveAdjacentElements(
int PipeEnd,
double TiempoActual);
414 void SolveBranch(
int NumDeposito,
double TiempoActual);
418 void SolveRoadLoadModel();
420 void RecalculateStabilitySolver();
422 void UpdateTurbocharger();
424 void comunica_wam_dll();
426 void ModificacionControlEjecucion();
436 void ReadInputData(
char* FileName);
438 void InitializeParameters();
440 void ConnectFlowElements();
442 void ConnectControlElements();
444 void InitialHeatTransferParameters();
446 void DetermineTimeStepIndependent();
448 void DetermineTimeStepCommon();
450 void DetermineTimeStep(
double t);
452 void InitializeOutput();
454 void CalculateFlowIndependent();
456 void CalculateFlowCommon();
460 bool CalculationEnd();
464 void ProgressBegin();
468 void NewEngineCycle();
470 void GeneralOutput();
472 bool IsIndependent() {
477 void UpdateExternalBoundary(
int i,
double U0,
double U1,
double T0,
double T1,
double P0,
double P1,
double t);
479 void UpdateExternalBoundary(
int i,
double U0,
double T0,
double P0,
double t);
481 void InitiateExternalBoundary(
int i,
double D0,
double D1,
double dX);
483 void InitiateExternalBoundary(
int i,
double D0,
double dX);
485 void LoadNewData(
int i,
double* p,
double* T,
double* u);
487 bool GetIs_EndStep();