31 #include "TEntradaPulso.h"
36 TEntradaPulso::TEntradaPulso() {
39 FPresionRelativa = NULL;
40 FNivelEntropia = NULL;
47 TEntradaPulso::~TEntradaPulso() {
50 if(FPresionRelativa != NULL)
51 delete FPresionRelativa;
52 if(FNivelEntropia != NULL)
53 delete FNivelEntropia;
60 void TEntradaPulso::LeeEntradaPulso(FILE *fich) {
63 fscanf(fich,
"%d ", &FNumeroDatos);
64 FTiempo =
new double[FNumeroDatos];
65 FPresionRelativa =
new double[FNumeroDatos];
66 FNivelEntropia =
new double[FNumeroDatos];
67 for(
int i = 0; i < FNumeroDatos; i++) {
68 fscanf(fich,
"%lf %lf %lf ", &FTiempo[i], &FPresionRelativa[i], &FNivelEntropia[i]);
70 if(FTiempo[0] > 0.0) {
71 std::cout <<
"WARNING: El primer instante de tiempo deberia ser 0 para evitar problemas" << std::endl;
73 }
catch(exception &N) {
75 std::cout <<
"ERROR: TEntradaPulso::LeeEntradaPulso " << std::endl;
76 std::cout <<
"Tipo de error: " << N.what() << std::endl;
77 err <<
"ERROR: TEntradaPulso::LeeEntradaPulso " << N.what();
85 void TEntradaPulso::BusquedaInstante(
double Tiempo) {
88 FTiempoActual = Tiempo - (FNumeroCiclo - 1) * FTiempo[FNumeroDatos - 1];
90 if(FTiempoActual > FTiempo[FNumeroDatos - 1]) {
92 FTiempoActual = FTiempoActual - FTiempo[FNumeroDatos - 1];
93 std::cout <<
"INFO: Comienza el ciclo " << FNumeroCiclo << std::endl;
94 std::cout <<
" Tiempo transcurrido: " << Tiempo << std::endl;
96 while(Tiempo > FTiempo[i] + (FNumeroCiclo - 1) * FTiempo[FNumeroDatos - 1]) {
101 }
catch(exception &N) {
103 std::cout <<
"ERROR: TEntradaPulso::BusquedaInstante " << std::endl;
104 std::cout <<
"Tipo de error: " << N.what() << std::endl;
105 err <<
"ERROR: TEntradaPulso::BusquedaInstante " << N.what();
113 double TEntradaPulso::InterpolaPresion() {
115 double deltat = (FTiempoActual - FTiempo[FInstante - 1]) / (FTiempo[FInstante] - FTiempo[FInstante - 1]);
116 double presion = (1 - deltat) * FPresionRelativa[FInstante - 1] + deltat * FPresionRelativa[FInstante];
118 }
catch(exception &N) {
120 std::cout <<
"ERROR: TEntradaPulso::InterpolaPresion " << std::endl;
121 std::cout <<
"Tipo de error: " << N.what() << std::endl;
122 err <<
"ERROR: TEntradaPulso::InterpolaPresion " << N.what();
130 double TEntradaPulso::InterpolaEntropia() {
132 double deltat = (FTiempoActual - FTiempo[FInstante - 1]) / (FTiempo[FInstante] - FTiempo[FInstante - 1]);
133 double entropia = (1 - deltat) * FNivelEntropia[FInstante - 1] + deltat * FNivelEntropia[FInstante];
135 }
catch(exception &N) {
137 std::cout <<
"ERROR: TEntradaPulso::InterpolaEntropia" << std::endl;
138 std::cout <<
"Tipo de error: " << N.what() << std::endl;
139 err <<
"ERROR: TEntradaPulso::InterpolaEntropia " << N.what();
147 #pragma package(smart_init)