31 #include "TControlFuel.h"
36 TControlFuel::TControlFuel() {
37 FVector_Ma_mapa = NULL;
38 FVector_Regimen_mapa = NULL;
39 FMapa_Limitador_Humos = NULL;
45 TControlFuel::~TControlFuel() {
47 if(FVector_Ma_mapa != NULL)
48 delete FVector_Ma_mapa;
49 if(FVector_Regimen_mapa != NULL)
50 delete FVector_Regimen_mapa;
52 if(FMapa_Limitador_Humos != NULL) {
53 for(
int i = 0; i < FNumeroDatos_Ma; i++) {
54 delete FMapa_Limitador_Humos[i];
56 delete[] FMapa_Limitador_Humos;
64 void TControlFuel::LeeDatosEntrada(
char *Ruta, FILE *fich) {
70 for(
int i = 0; i <= (int) strlen(Ruta); i++) {
71 DatosFuel[i] = Ruta[i];
74 fscanf(fich,
"%s ", &FileFuel);
75 strcat(DatosFuel, FileFuel);
77 FichFuel = fopen(DatosFuel,
"r");
78 if((FichFuel = fopen(DatosFuel,
"r")) == NULL) {
79 std::cout <<
"ERROR: Fichero de fuel no cargado";
81 fscanf(FichFuel,
"%d %d ", &FNumeroDatos_Regimen, &FNumeroDatos_Ma);
82 FVector_Ma_mapa =
new double[FNumeroDatos_Ma];
83 FVector_Regimen_mapa =
new double[FNumeroDatos_Regimen];
84 FMapa_Limitador_Humos =
new double*[FNumeroDatos_Ma];
85 for(
int i = 0; i < FNumeroDatos_Ma; i++) {
86 FMapa_Limitador_Humos[i] =
new double[FNumeroDatos_Regimen];
89 for(
int i = 0; i < FNumeroDatos_Regimen; i++) {
90 fscanf(FichFuel,
"%lf ", &FVector_Regimen_mapa[i]);
93 for(
int i = 0; i < FNumeroDatos_Ma; i++) {
94 fscanf(FichFuel,
"%lf ", &FVector_Ma_mapa[i]);
97 for(
int i = 0; i < FNumeroDatos_Ma; i++) {
98 for(
int j = 0; j < FNumeroDatos_Regimen; j++) {
99 fscanf(FichFuel,
"%lf ", &FMapa_Limitador_Humos[i][j]);
106 }
catch(exception &N) {
107 std::cout <<
"ERROR: LeeDatosEntrada Fuel (DLL)" << std::endl;
108 std::cout <<
"Tipo de error: " << N.what() << std::endl;
146 double TControlFuel::xit_(
double vizq,
double vder,
double axid,
double xif) {
148 double xx = 0., yy = 0.;
153 yy = xx / axid * xif;
156 printf(
"ERROR: valores entrada xit\n");
160 }
catch(exception &N) {
161 std::cout <<
"ERROR: xit_" << std::endl;
162 std::cout <<
"Tipo de error: " << N.what() << std::endl;
170 double TControlFuel::CalculaFuel(
double MasaPorAdmision,
double Regimen,
double TiempoActual) {
173 double MasaAire = 0., FuelMin = 0., FuelMax = 0., FuelLimitador = 0.;
180 if(TiempoActual < 10. * 120. / Regimen) {
182 FFuelDeseado = FuelMin;
185 if(TiempoActual > 10. * 120. / Regimen) {
187 FFuelDeseado = FuelMax;
189 FuelLimitador = Interpolacion_bidimensional(Regimen, MasaPorAdmision, FVector_Ma_mapa, FVector_Regimen_mapa,
190 FMapa_Limitador_Humos, FNumeroDatos_Regimen, FNumeroDatos_Ma) / 1e6;
192 if(FuelLimitador < FuelAct) {
193 FuelAct = FuelLimitador;
199 }
catch(exception &N) {
200 std::cout <<
"ERROR: TControlFuel::CalculaFuel" << std::endl;
201 std::cout <<
"Tipo de error: " << N.what() << std::endl;
234 }
catch(exception &N) {
235 std::cout <<
"ERROR: TControlFuel::IniciaFuel" << std::endl;
236 std::cout <<
"Tipo de error: " << N.what() << std::endl;
244 #pragma package(smart_init)