Skip to content

Commit 2a354ec

Browse files
committed
Compressor VG bug fix v1.1.3.46
Selection to use manual stall margin definition was causing MATLAB to crash. Updated table lookup length to be the correct size.
1 parent 65a459c commit 2a354ec

File tree

2 files changed

+56
-56
lines changed

2 files changed

+56
-56
lines changed

Trunk/Install_TMATS.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ function Install_TMATS()
33

44
% TMATSver and date must remain in the listed form for the ver command to work
55
% properly.
6-
TMATSver = '1.1.3.45';
7-
TMATSdate = 'Nov-03-2017';
6+
TMATSver = '1.1.3.46';
7+
TMATSdate = 'Nov-08-2017';
88

99
error = 0;
1010
TMATSInstallmsg = 'Install T-MATS matlab toolbox? Note: Installation will add MATLAB paths and generate MEX files.';

Trunk/TMATS_Library/MEX/Compressor_TMATS_body.c

Lines changed: 54 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,18 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
2121
double s_C_Wc = u[9]; /* Wc map scalar [NA] */
2222
double s_C_PR = u[10]; /* PR map scalar [NA] */
2323
double s_C_Eff = u[11]; /* Eff map scalar [NA] */
24-
24+
2525
int uWidth1 = prm->CustBldNm;
2626
int uWidth2 = prm->FracBldNm;
27-
27+
2828
/*--------Define Constants-------*/
2929
double WOut, htOut, TtOut, PtOut, FARcOut, TorqueOut, NErrorOut;
3030
double C_Nc, C_Wc, C_PR, C_Eff;
3131
double htin, Sin, Wcin, WcCalcin, WcMap, theta,delta, Pwrout, Wbleeds;
3232
double TtIdealout, htIdealout, Test, Sout, NcMap, Nc, PRMap, PR, EffMap, Eff;
3333
double Wb4bleed, Pwrb4bleed, PwrBld;
3434
double SPR, SPRMap, SMavail, SMMap;
35-
35+
3636
/* Define Arrays for bleed calcs */
3737
int MaxNumberBleeds = 100;
3838
double WcustOut[500];
@@ -45,44 +45,44 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
4545
double TtbldOut[500];
4646
double htbldOut[500];
4747
double htcustOut[500];
48-
48+
4949
double SMWcVec[500];
5050
double SMPRVec[500];
51-
51+
5252
int interpErr = 0;
5353
int i;
54-
54+
5555
/*-- Compute output Fuel to Air Ratio ---*/
5656
FARcOut = FARcIn;
57-
57+
5858
/*-- Compute Input enthalpy --------*/
59-
59+
6060
htin = t2hc(TtIn,FARcIn);
61-
61+
6262
/*-- Compute Input entropy --------*/
63-
63+
6464
Sin = pt2sc(PtIn,TtIn,FARcIn);
65-
65+
6666
/*---- calculate misc. fluid condition related variables and corrected Flow --*/
6767
delta = PtIn / C_PSTD;
6868
theta = TtIn / C_TSTD;
6969
Wcin = WIn*sqrtT(theta)*divby(delta);
70-
70+
7171
/*------ Calculate corrected speed ---------*/
7272
Nc = Nmech*divby(sqrtT(theta));
7373
if (prm->IDes < 0.5)
7474
C_Nc = Nc *divby(prm->NcDes) ;
7575
else
7676
C_Nc = s_C_Nc;
77-
77+
7878
NcMap = Nc *divby(C_Nc);
79-
79+
8080
/*-- Compute Total Flow input (from Compressor map) --------*/
8181
if(prm->C > 1)
8282
WcMap = interp3Ac(prm->X_C_RlineVec,prm->Y_C_Map_NcVec,prm->Z_C_AlphaVec,prm->T_C_Map_WcArray,Rline,NcMap,Alpha,prm->B,prm->A,prm->C,&interpErr);
8383
else
8484
WcMap = interp2Ac(prm->X_C_RlineVec,prm->Y_C_Map_NcVec,prm->T_C_Map_WcArray,Rline,NcMap,prm->B,prm->A,&interpErr);
85-
85+
8686
if ((prm->WcMapCol != prm->B || prm->WcMapRw != prm->A || prm->WcMapLay !=prm->C) && *(prm->IWork+Er1)==0){
8787
#ifdef MATLAB_MEX_FILE
8888
printf("Warning in %s, Error calculating WcMap. Table size does not match axis vector lengths.\n", prm->BlkNm);
@@ -95,20 +95,20 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
9595
#endif
9696
*(prm->IWork+Er1) = 1;
9797
}
98-
98+
9999
if (prm->IDes < 0.5)
100100
C_Wc = Wcin*divby(WcMap);
101101
else
102102
C_Wc = s_C_Wc;
103-
103+
104104
WcCalcin = WcMap * C_Wc;
105-
105+
106106
/*-- Compute Pressure Ratio (from Compressor map) --------*/
107107
if(prm->C > 1)
108108
PRMap = interp3Ac(prm->X_C_RlineVec,prm->Y_C_Map_NcVec,prm->Z_C_AlphaVec,prm->T_C_Map_PRArray,Rline,NcMap,Alpha,prm->B,prm->A,prm->C,&interpErr);
109109
else
110110
PRMap = interp2Ac(prm->X_C_RlineVec,prm->Y_C_Map_NcVec,prm->T_C_Map_PRArray,Rline,NcMap,prm->B,prm->A,&interpErr);
111-
111+
112112
if ((prm->PRMapCol != prm->B || prm->PRMapRw != prm->A || prm->PRMapLay !=prm->C) && *(prm->IWork+Er2)==0){
113113
#ifdef MATLAB_MEX_FILE
114114
printf("Warning in %s, Error calculating PRMap. Table size does not match axis vector lengths.\n", prm->BlkNm);
@@ -121,20 +121,20 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
121121
#endif
122122
*(prm->IWork+Er2) = 1;
123123
}
124-
124+
125125
if (prm->IDes < 0.5)
126126
C_PR = (prm->PRDes -1)*divby(PRMap-1);
127127
else
128128
C_PR = s_C_PR;
129-
129+
130130
PR = C_PR*(PRMap - 1) + 1 ;
131-
131+
132132
/*-- Compute Efficiency (from Compressor map) ---*/
133133
if(prm->C > 1)
134134
EffMap = interp3Ac(prm->X_C_RlineVec,prm->Y_C_Map_NcVec,prm->Z_C_AlphaVec,prm->T_C_Map_EffArray,Rline,NcMap,Alpha,prm->B,prm->A,prm->C,&interpErr);
135135
else
136136
EffMap = interp2Ac(prm->X_C_RlineVec,prm->Y_C_Map_NcVec,prm->T_C_Map_EffArray,Rline,NcMap,prm->B,prm->A,&interpErr);
137-
137+
138138
if ((prm->EffMapCol != prm->B || prm->EffMapRw != prm->A || prm->EffMapLay !=prm->C) && *(prm->IWork+Er3)==0){
139139
#ifdef MATLAB_MEX_FILE
140140
printf("Warning in %s, Error calculating EffMap. Table size does not match axis vector lengths.\n", prm->BlkNm);
@@ -147,40 +147,40 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
147147
#endif
148148
*(prm->IWork+Er3) = 1;
149149
}
150-
150+
151151
if (prm->IDes < 0.5)
152152
C_Eff = prm->EffDes*divby(EffMap);
153153
else
154154
C_Eff = s_C_Eff;
155-
155+
156156
Eff = EffMap * C_Eff;
157-
157+
158158
/*------ Compute pressure output --------*/
159-
159+
160160
PtOut = PtIn*PR;
161-
162-
161+
162+
163163
/*------ enthalpy calculations ---------*/
164-
164+
165165
/* ---- Ideal enthalpy ----*/
166166
Sout = Sin;
167167
TtIdealout = sp2tc(Sout,PtOut,FARcIn);
168168
htIdealout = t2hc(TtIdealout,FARcIn);
169-
170-
169+
170+
171171
/* ---- Final enthalpy output ----*/
172-
172+
173173
htOut = ((htIdealout - htin)*divby(Eff)) + htin;
174-
174+
175175
/*------ Compute Temperature output ---------*/
176-
176+
177177
TtOut = h2tc(htOut,FARcIn);
178-
179-
178+
179+
180180
/* initalize Bleed sums components */
181181
Wbleeds = 0;
182182
PwrBld = 0;
183-
183+
184184
/* compute customer Bleed components */
185185
for (i = 0; i < uWidth1; i++)
186186
{
@@ -209,9 +209,9 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
209209
*(prm->IWork+Er4) = 1;
210210
}
211211
}
212-
212+
213213
/*----Disable Fractional bleed when requested----*/
214-
214+
215215
for (i = 0; i < uWidth2; i++)
216216
{
217217
if (FracWbld[i] <= 0 || prm->FBldEn < 0.5 ){
@@ -221,7 +221,7 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
221221
TtbldOut[i] = 0;
222222
PtbldOut[i] = 0;
223223
}
224-
224+
225225
else {
226226
/*-- Compute sum of Fractional Bleed Flow output --------*/
227227
Wbleeds = Wbleeds + FracWbld[i]*WIn; /* add to total bleed value */
@@ -239,19 +239,19 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
239239
*(prm->IWork+Er4) = 1;
240240
}
241241
}
242-
242+
243243
/*-- Compute Flows --------*/
244244
Wb4bleed = WIn;
245245
WOut = WIn - Wbleeds;
246-
246+
247247
/*------ Compute Powers ---------*/
248-
248+
249249
Pwrb4bleed = Wb4bleed * (htin - htOut) * C_BTU_PER_SECtoHP;
250250
Pwrout = Pwrb4bleed - PwrBld;
251-
251+
252252
/*----- Compute output Torque to shaft ----*/
253253
TorqueOut = C_HP_PER_RPMtoFT_LBF * Pwrout*divby(Nmech);
254-
254+
255255
/* ----- Compute Normalized Flow Error ----- */
256256
if (prm->IDes < 0.5 && Rline == 0)
257257
NErrorOut = 100;
@@ -261,7 +261,7 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
261261
NErrorOut = 100;
262262
else
263263
NErrorOut = (Wcin - WcCalcin)*divby(Wcin);
264-
264+
265265
/* Compute Stall Margin */
266266
if (prm->C > 1){
267267
/* Define 1-prm->D surge margin vectors based on alpha */
@@ -281,7 +281,7 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
281281
*(prm->IWork+Er5) = 1;
282282
}
283283
}
284-
SPRMap = interp1Ac(SMWcVec, SMPRVec,WcMap,prm->A,&interpErr);
284+
SPRMap = interp1Ac(SMWcVec, SMPRVec,WcMap,prm->D/prm->C,&interpErr);
285285
if (interpErr == 1 && *(prm->IWork+Er5)==0){
286286
#ifdef MATLAB_MEX_FILE
287287
printf("Warning in %s, Error calculating 2D SPR. Vector definitions may need to be adjusted.\n", prm->BlkNm);
@@ -291,7 +291,7 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
291291
}
292292
else
293293
SPRMap = interp1Ac(prm->X_C_Map_WcSurgeVec,prm->T_C_Map_PRSurgeVec,WcMap,prm->D,&interpErr);
294-
294+
295295
if (interpErr == 1 && *(prm->IWork+Er5)==0){
296296
#ifdef MATLAB_MEX_FILE
297297
printf("Warning in %s, Error calculating SPR. Vector definitions may need to be expanded.\n", prm->BlkNm);
@@ -301,10 +301,10 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
301301
SPR = C_PR*(SPRMap - 1) + 1;
302302
SMavail = (SPR - PR)*divby(PR) * 100;
303303
SMMap = (SPRMap - PRMap)*divby(PRMap) * 100;
304-
304+
305305
/* Test variable */
306306
Test = SPRMap;
307-
307+
308308
/*------Assign output values port1------------*/
309309
y[0] = WOut; /* Outlet Total Flow [pps] */
310310
y[1] = htOut; /* Output Enthalpy [BTU/lbm] */
@@ -333,7 +333,7 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
333333
y[24] = SMMap; /* Stall margin calculated from map values [%]*/
334334
y[25] = SPRMap; /* Map stall pressure ratio*/
335335
y[26] = Test; /* test signal */
336-
336+
337337
/*------Assign output values port2------------*/
338338
/* Customer or flow based bleed*/
339339
for (i = 0; i < uWidth1; i++)
@@ -344,7 +344,7 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
344344
*y1++ = PtcustOut[i];
345345
*y1++ = FARcustOut[i];
346346
}
347-
347+
348348
/*------Assign output values port3------------*/
349349
/* fractional bleed, typically used for turbine cooling flow */
350350
for (i = 0; i < uWidth2; i++)
@@ -355,5 +355,5 @@ void Compressor_TMATS_body(double* y, double* y1, double* y2, const double* u, c
355355
*y2++ = PtbldOut[i];
356356
*y2++ = FARbldOut[i];
357357
}
358-
358+
359359
}

0 commit comments

Comments
 (0)