87#include <fhsim/simobject/SimObject.h>
88#include <fhsim/PrintDuringExec.h>
92static const double gd_PI = 3.14159265358979323846;
176 ISignalPort* m_M_load;
177 ISignalPort* m_N_eng_SP;
178 ISignalPort* m_pInM_SP;
179 ISignalPort* m_MinLambda_SP;
202 IMEP = IP = M_CC = W_InM = T_ExP = X = W_ExP = W_fuel = Lambda = 0;
239 M_eng = N_eng = P_eng = 0;
258 W_trb = T_cmp = W_cmp = M_trb = M_cmp = N_TC = k = PR_trb = PR_cmp = 1;
278 double MaxFuelPrCycle;
283 MaxFuelPrCycle = FuelPrCycle = 1e-3;
341 CCIEngine(
const std::string& simobjectname, ISimObjectCreator*
const creator);
346 const double* out_CC_IP(
const double T,
const double*
const X);
347 const double* out_CC_Lambda(
const double T,
const double*
const X);
348 const double* out_CC_M_CC(
const double T,
const double*
const X);
349 const double* out_CC_T_ExP(
const double T,
const double*
const X);
350 const double* out_CC_W_ExP(
const double T,
const double*
const X);
351 const double* out_CC_W_fuel(
const double T,
const double*
const X);
352 const double* out_CC_W_InM(
const double T,
const double*
const X);
353 const double* out_CC_X(
const double T,
const double*
const X);
356 const double* out_InM_p(
const double T,
const double*
const X);
359 const double* out_ExM_p(
const double T,
const double*
const X);
362 const double* out_CS_M_eng(
const double T,
const double*
const X);
363 const double* out_CS_N_eng(
const double T,
const double*
const X);
364 const double* out_CS_P_eng(
const double T,
const double*
const X);
367 const double* out_TC_K_cmp(
const double T,
const double*
const X);
368 const double* out_TC_M_trb(
const double T,
const double*
const X);
369 const double* out_TC_M_cmp(
const double T,
const double*
const X);
370 const double* out_TC_PR_cmp(
const double T,
const double*
const X);
371 const double* out_TC_PR_trb(
const double T,
const double*
const X);
372 const double* out_TC_T_cmp(
const double T,
const double*
const X);
373 const double* out_TC_W_cmp(
const double T,
const double*
const X);
374 const double* out_TC_W_trb(
const double T,
const double*
const X);
375 const double* out_TC_N_TC(
const double T,
const double*
const X);
378 const double* out_IC_T_IC(
const double T,
const double*
const X);
381 const double* out_ECU_FuelPrCyc(
const double T,
const double*
const X);
382 const double* out_ECU_MaxFuelPrCyc(
const double T,
const double*
const X);
383 const double* out_ECU_WGOpening(
const double T,
const double*
const X);
386 void OdeFcn(
const double T,
const double *
const X,
double *
const XDot)
const;
388#ifdef FH_VISUALIZATION
391 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
394 virtual void RenderUpdate(
const double T,
const double*
const X);
401 double p_InM = 0, p_ExM = 0, N_eng = 0, N_TC = 0, PI_N_eng = 0, PI_Lambda = 0, PI_WG = 0;
411 void EvaluateModelAt(
const double T,
const double*
const X)
const { m_compute->ComputeFunction(T,X); }
417 double IntegratorAntiWindup(
const double*
const adX,
const StateType *p_StateInfo,
double Dot)
const;
419 double CalcInM()
const;
421 double CalcExM()
const;
422 void CalcCompressor()
const;
423 void CalcTurbine()
const;
424 double CalcTC()
const;
425 double CalcCS(
const double T,
const double*
const X)
const;
427 double CalcECUWG(
const double T,
const double*
const X)
const;
428 double CalcECUMaxFuelPrCycle(
const double T,
const double*
const X)
const;
429 double CalcECUFuelPrCycle(
const double T,
const double*
const X)
const;
432 double PIController(
PIType *p_PI,
StateType *p_State,
const double*
const adX)
const;
452 mutable StateDerivatives m_Derivatives{};
454 ICommonComputation* m_compute =
nullptr;
456 PrintDuringExec* m_Print;
458#ifdef FH_VISUALIZATION
459 Ogre::SceneNode* m_RenderNode;
Definition CIEngine.h:338
ModelInType m_InMod
Model input indexes.
Definition CIEngine.h:448
const double * out_CC_IMEP(const double T, const double *const X)
Output functions.
bool LoadParameterFile(ISimObjectCreator *creator)
Loads engine parameters from xml file.
void EvaluateModelAt(const double T, const double *const X) const
Sets m_Var at (T, X) for an output port, which has no use for the derivatives.
Definition CIEngine.h:411
CCIEngine(const std::string &simobjectname, ISimObjectCreator *const creator)
The constructor sets the pointer to the output object and the parser object.
ModParType m_ModPar
Model parameters.
Definition CIEngine.h:435
ModVarType m_Var
Model variables used in the different submodels.
Definition CIEngine.h:451
void OdeFcn(const double T, const double *const X, double *const XDot) const
Calculates the state derivatives.
StateType mS_p_InM
States.
Definition CIEngine.h:438
void Compute(const double T, const double *const X) const
The common computation: sets m_Var and m_Derivatives at (T, X). The engine runs it once after each Re...
Definition CIEngine.h:408
void EvaluateModel(const double T, const double *const X, StateDerivatives &derivatives) const
Runs the submodels at (T, X): sets m_Var and the derivatives.
The derivatives of the states that the submodels calculate.
Definition CIEngine.h:400
Definition CIEngine.h:189
Definition CIEngine.h:112
Definition CIEngine.h:232
Definition CIEngine.h:136
Definition CIEngine.h:275
Definition CIEngine.h:220
Definition CIEngine.h:130
Definition CIEngine.h:101
Definition CIEngine.h:304
Definition CIEngine.h:264
Definition CIEngine.h:152
Definition CIEngine.h:208
Definition CIEngine.h:124
Definition CIEngine.h:158
Definition CIEngine.h:289
Definition CIEngine.h:175
Definition CIEngine.h:325
Definition CIEngine.h:314
Definition CIEngine.h:245
Definition CIEngine.h:143