initial commit
This commit is contained in:
58
Matlab code/strut/ARfit.m
Executable file
58
Matlab code/strut/ARfit.m
Executable file
@@ -0,0 +1,58 @@
|
||||
function [AR,xLE]=ARfit(P,t)
|
||||
|
||||
global tmax
|
||||
% This function calculates the AR of a rectangle fitted inside an airfoil
|
||||
% described by the cubic spline function in P. The value t is the thickness
|
||||
% if the required rectangle (<t/c max).
|
||||
% OUTPUT:
|
||||
% AR=Aspect ratio of fitted rectangle
|
||||
% xLE=Forward x-position of rectangle.
|
||||
|
||||
% Penalty functions for going out of bounds
|
||||
|
||||
flag=0;
|
||||
x1=tmax/1000;
|
||||
if (t>tmax-x1)
|
||||
tsave=t;
|
||||
t=tmax-x1;
|
||||
flag=2;
|
||||
|
||||
elseif (t<x1)
|
||||
tsave=t;
|
||||
t=x1;
|
||||
flag=1;
|
||||
end;
|
||||
|
||||
N=50;
|
||||
theta=(pi-logspace(-1,pi,N))/2;
|
||||
theta(1)=[];
|
||||
theta=[fliplr(theta) pi-theta];
|
||||
f1=ppval(P,theta).*sin(theta)-t/2;
|
||||
f2=[f1(2:N*2-2) f1(N*2-2)];
|
||||
FF=abs(sign(f1)-sign(f2));
|
||||
roots=find(FF>0);
|
||||
thetaTE=reversefit(P,t/2,theta(roots(1)));
|
||||
rTE=ppval(P,thetaTE);
|
||||
xTE=rTE*cos(thetaTE);
|
||||
thetaLE=reversefit(P,t/2,theta(roots(2)));
|
||||
rLE=ppval(P,thetaLE);
|
||||
xLE=rLE*cos(thetaLE);
|
||||
l=abs(xTE-xLE);
|
||||
AR=l/t;
|
||||
|
||||
if flag==1
|
||||
x3=2*x1;
|
||||
y1=AR;
|
||||
y2=1.1*AR;
|
||||
a = (y1-y2)/(-2*x3*x1+x1^2);
|
||||
b=(y1-a*x1^2-y2)/x1;
|
||||
AR=a*tsave^2+b*tsave+y2;
|
||||
elseif flag==2
|
||||
x3=tmax-x1*.001;
|
||||
x2=tmax;
|
||||
x1=tmax-2*x1;
|
||||
a=-AR/((x2^2-x3^2)-2*x1*(x2-x3));
|
||||
b=-2*a*x1;
|
||||
c=-a*x2^2-b*x2;
|
||||
AR=a*tsave^2+b*tsave+c;
|
||||
end;
|
||||
60
Matlab code/strut/CB3.dat
Executable file
60
Matlab code/strut/CB3.dat
Executable file
@@ -0,0 +1,60 @@
|
||||
Centerbody 3
|
||||
0.92743 0.03097
|
||||
0.88580 0.03617
|
||||
0.83259 0.04000
|
||||
0.77100 0.04266
|
||||
0.70420 0.04437
|
||||
0.63540 0.04534
|
||||
0.56776 0.04578
|
||||
0.50371 0.04585
|
||||
0.44392 0.04568
|
||||
0.38886 0.04536
|
||||
0.33898 0.04499
|
||||
0.29474 0.04467
|
||||
0.25657 0.04450
|
||||
0.22425 0.04448
|
||||
0.19666 0.04448
|
||||
0.17264 0.04438
|
||||
0.15102 0.04404
|
||||
0.13063 0.04334
|
||||
0.11039 0.04214
|
||||
0.09021 0.04042
|
||||
0.07079 0.03824
|
||||
0.05285 0.03564
|
||||
0.03713 0.03269
|
||||
0.02434 0.02944
|
||||
0.01508 0.02594
|
||||
0.00899 0.02216
|
||||
0.00531 0.01807
|
||||
0.00325 0.01363
|
||||
0.00203 0.00880
|
||||
0.00088 0.00354
|
||||
0.00084 -0.00546
|
||||
0.00269 -0.01211
|
||||
0.00680 -0.01962
|
||||
0.01437 -0.02765
|
||||
0.02663 -0.03587
|
||||
0.04482 -0.04397
|
||||
0.07014 -0.05160
|
||||
0.10364 -0.05845
|
||||
0.14471 -0.06435
|
||||
0.19192 -0.06920
|
||||
0.24380 -0.07289
|
||||
0.29892 -0.07532
|
||||
0.35581 -0.07639
|
||||
0.41302 -0.07600
|
||||
0.46913 -0.07405
|
||||
0.52309 -0.07058
|
||||
0.57428 -0.06580
|
||||
0.62208 -0.05990
|
||||
0.66587 -0.05307
|
||||
0.70504 -0.04551
|
||||
0.73898 -0.03742
|
||||
0.76707 -0.02899
|
||||
0.78959 -0.02039
|
||||
0.80857 -0.01167
|
||||
0.82619 -0.00288
|
||||
0.84469 0.00592
|
||||
0.86625 0.01468
|
||||
0.89310 0.02334
|
||||
0.92743 0.03186
|
||||
60
Matlab code/strut/CB4.dat
Executable file
60
Matlab code/strut/CB4.dat
Executable file
@@ -0,0 +1,60 @@
|
||||
Centerbody 4
|
||||
0.91334 0.02171
|
||||
0.87802 0.03287
|
||||
0.82202 0.04154
|
||||
0.75161 0.04805
|
||||
0.67304 0.05272
|
||||
0.59260 0.05591
|
||||
0.51655 0.05793
|
||||
0.44911 0.05907
|
||||
0.39005 0.05946
|
||||
0.33849 0.05924
|
||||
0.29356 0.05851
|
||||
0.25442 0.05742
|
||||
0.22019 0.05607
|
||||
0.19013 0.05455
|
||||
0.16366 0.05285
|
||||
0.14022 0.05098
|
||||
0.11921 0.04894
|
||||
0.10008 0.04672
|
||||
0.08226 0.04433
|
||||
0.06558 0.04169
|
||||
0.05009 0.03871
|
||||
0.03589 0.03528
|
||||
0.02306 0.03128
|
||||
0.01169 0.02660
|
||||
0.00186 0.02118
|
||||
-0.00621 0.01519
|
||||
-0.01228 0.00894
|
||||
-0.01609 0.00272
|
||||
-0.01740 -0.00318
|
||||
-0.01595 -0.00844
|
||||
-0.01403 -0.01488
|
||||
-0.01170 -0.01993
|
||||
-0.00658 -0.02531
|
||||
0.00278 -0.03084
|
||||
0.01782 -0.03636
|
||||
0.03997 -0.04172
|
||||
0.07067 -0.04676
|
||||
0.11111 -0.05130
|
||||
0.16022 -0.05517
|
||||
0.21577 -0.05819
|
||||
0.27553 -0.06016
|
||||
0.33725 -0.06092
|
||||
0.39870 -0.06026
|
||||
0.45764 -0.05800
|
||||
0.51190 -0.05397
|
||||
0.56072 -0.04828
|
||||
0.60476 -0.04132
|
||||
0.64472 -0.03348
|
||||
0.68132 -0.02516
|
||||
0.71528 -0.01676
|
||||
0.74732 -0.00867
|
||||
0.77814 -0.00131
|
||||
0.80793 0.00506
|
||||
0.83590 0.01040
|
||||
0.86111 0.01467
|
||||
0.88263 0.01788
|
||||
0.89954 0.01999
|
||||
0.91093 0.02099
|
||||
0.91585 0.02087
|
||||
60
Matlab code/strut/CB40015.dat
Executable file
60
Matlab code/strut/CB40015.dat
Executable file
@@ -0,0 +1,60 @@
|
||||
Centerbody 4
|
||||
0.913338 0.021800
|
||||
0.877970 0.034797
|
||||
0.821913 0.045691
|
||||
0.751433 0.054894
|
||||
0.672786 0.062540
|
||||
0.592283 0.068148
|
||||
0.516194 0.071685
|
||||
0.448734 0.073592
|
||||
0.389666 0.074289
|
||||
0.338105 0.074109
|
||||
0.293179 0.073245
|
||||
0.254045 0.071912
|
||||
0.219823 0.070247
|
||||
0.189772 0.068366
|
||||
0.163313 0.066266
|
||||
0.139884 0.063965
|
||||
0.118886 0.061463
|
||||
0.099769 0.058747
|
||||
0.081963 0.055821
|
||||
0.065298 0.052587
|
||||
0.049825 0.048941
|
||||
0.035645 0.044756
|
||||
0.022837 0.039891
|
||||
0.011493 0.034215
|
||||
0.001693 0.027642
|
||||
-0.006343 0.020334
|
||||
-0.012373 0.012545
|
||||
-0.016127 0.004160
|
||||
-0.017398 -0.003265
|
||||
-0.015915 -0.009781
|
||||
-0.013964 -0.017422
|
||||
-0.011608 -0.023477
|
||||
-0.006454 -0.030168
|
||||
0.002946 -0.037244
|
||||
0.018028 -0.044397
|
||||
0.040218 -0.051317
|
||||
0.070955 -0.057764
|
||||
0.111427 -0.063556
|
||||
0.160565 -0.068479
|
||||
0.216135 -0.072286
|
||||
0.275908 -0.074779
|
||||
0.337635 -0.075783
|
||||
0.399083 -0.075073
|
||||
0.458015 -0.072478
|
||||
0.512259 -0.067836
|
||||
0.561057 -0.061299
|
||||
0.605070 -0.053312
|
||||
0.645000 -0.044314
|
||||
0.681569 -0.034760
|
||||
0.715496 -0.025094
|
||||
0.747503 -0.015741
|
||||
0.778291 -0.007162
|
||||
0.808052 0.000349
|
||||
0.835995 0.006731
|
||||
0.861180 0.011979
|
||||
0.882675 0.016154
|
||||
0.899562 0.019146
|
||||
0.910935 0.020782
|
||||
0.915849 0.020892
|
||||
60
Matlab code/strut/CB40018.dat
Executable file
60
Matlab code/strut/CB40018.dat
Executable file
@@ -0,0 +1,60 @@
|
||||
Centerbody 4
|
||||
0.913335 0.021890
|
||||
0.877920 0.036739
|
||||
0.821804 0.049876
|
||||
0.751254 0.061793
|
||||
0.672529 0.072440
|
||||
0.591963 0.080485
|
||||
0.515834 0.085551
|
||||
0.448354 0.088233
|
||||
0.389278 0.089240
|
||||
0.337716 0.089099
|
||||
0.292793 0.088100
|
||||
0.253666 0.086521
|
||||
0.219452 0.084540
|
||||
0.189411 0.082295
|
||||
0.162962 0.079792
|
||||
0.139544 0.077056
|
||||
0.118558 0.074088
|
||||
0.099454 0.070872
|
||||
0.081662 0.067405
|
||||
0.065013 0.063573
|
||||
0.049557 0.059256
|
||||
0.035397 0.054309
|
||||
0.022612 0.048573
|
||||
0.011294 0.041892
|
||||
0.001524 0.034156
|
||||
-0.006478 0.025521
|
||||
-0.012468 0.016180
|
||||
-0.016165 0.005614
|
||||
-0.017396 -0.003349
|
||||
-0.015880 -0.011133
|
||||
-0.013898 -0.019978
|
||||
-0.011515 -0.027052
|
||||
-0.006327 -0.035066
|
||||
0.003113 -0.043699
|
||||
0.018238 -0.052500
|
||||
0.040470 -0.060992
|
||||
0.071243 -0.068857
|
||||
0.111748 -0.075911
|
||||
0.160913 -0.081897
|
||||
0.216504 -0.086498
|
||||
0.276291 -0.089516
|
||||
0.338024 -0.090767
|
||||
0.399471 -0.090007
|
||||
0.458394 -0.087074
|
||||
0.512622 -0.081815
|
||||
0.561398 -0.074424
|
||||
0.605384 -0.065401
|
||||
0.645284 -0.055237
|
||||
0.681820 -0.044437
|
||||
0.715714 -0.033494
|
||||
0.747688 -0.022870
|
||||
0.778445 -0.013063
|
||||
0.808175 -0.004401
|
||||
0.836091 0.003033
|
||||
0.861250 0.009268
|
||||
0.882720 0.014415
|
||||
0.899584 0.018292
|
||||
0.910941 0.020569
|
||||
0.915849 0.020918
|
||||
73
Matlab code/strut/CB600185b.dat
Executable file
73
Matlab code/strut/CB600185b.dat
Executable file
@@ -0,0 +1,73 @@
|
||||
1.00000 0.00000
|
||||
0.97500 0.00996
|
||||
0.95000 0.01900
|
||||
0.92500 0.02718
|
||||
0.90000 0.03460
|
||||
0.87500 0.04131
|
||||
0.85000 0.04739
|
||||
0.82500 0.05288
|
||||
0.80000 0.05785
|
||||
0.77500 0.06232
|
||||
0.75000 0.06636
|
||||
0.72500 0.06998
|
||||
0.70000 0.07325
|
||||
0.67500 0.07617
|
||||
0.65000 0.07879
|
||||
0.62500 0.08112
|
||||
0.60000 0.08320
|
||||
0.55000 0.08664
|
||||
0.50000 0.08924
|
||||
0.45000 0.09109
|
||||
0.40000 0.09218
|
||||
0.35000 0.09250
|
||||
0.30000 0.09204
|
||||
0.25000 0.09067
|
||||
0.20000 0.08803
|
||||
0.17500 0.08599
|
||||
0.15000 0.08328
|
||||
0.12500 0.07968
|
||||
0.10000 0.07485
|
||||
0.07500 0.06855
|
||||
0.05000 0.05962
|
||||
0.03750 0.05414
|
||||
0.02500 0.04820
|
||||
0.01250 0.03472
|
||||
0.00652 0.03090
|
||||
0.00200 0.01606
|
||||
0.00000 0.00000
|
||||
0.00200 -0.01606
|
||||
0.00652 -0.03090
|
||||
0.01250 -0.03472
|
||||
0.02500 -0.04820
|
||||
0.03750 -0.05414
|
||||
0.05000 -0.05962
|
||||
0.07500 -0.06855
|
||||
0.10000 -0.07485
|
||||
0.12500 -0.07968
|
||||
0.15000 -0.08328
|
||||
0.17500 -0.08599
|
||||
0.20000 -0.08803
|
||||
0.25000 -0.09067
|
||||
0.30000 -0.09204
|
||||
0.35000 -0.09250
|
||||
0.40000 -0.09218
|
||||
0.45000 -0.09109
|
||||
0.50000 -0.08924
|
||||
0.55000 -0.08664
|
||||
0.60000 -0.08320
|
||||
0.62500 -0.08112
|
||||
0.65000 -0.07879
|
||||
0.67500 -0.07617
|
||||
0.70000 -0.07325
|
||||
0.72500 -0.06998
|
||||
0.75000 -0.06636
|
||||
0.77500 -0.06232
|
||||
0.80000 -0.05785
|
||||
0.82500 -0.05288
|
||||
0.85000 -0.04739
|
||||
0.87500 -0.04131
|
||||
0.90000 -0.03460
|
||||
0.92500 -0.02718
|
||||
0.95000 -0.01900
|
||||
0.97500 -0.00996
|
||||
1.00000 0.00000
|
||||
10
Matlab code/strut/FFunc1.m
Executable file
10
Matlab code/strut/FFunc1.m
Executable file
@@ -0,0 +1,10 @@
|
||||
function FF = FFunc1(theta,P);
|
||||
|
||||
% Derivative of function 1
|
||||
|
||||
FF=derppval(P,theta)*sin(theta)+ppval(P,theta)*cos(theta);
|
||||
if theta < 0
|
||||
FF=-2*theta+pi;
|
||||
elseif theta > pi
|
||||
FF=-2*theta+pi;
|
||||
end;
|
||||
10
Matlab code/strut/Func1.m
Executable file
10
Matlab code/strut/Func1.m
Executable file
@@ -0,0 +1,10 @@
|
||||
function F = Func1(theta,P,yrqd);
|
||||
|
||||
% Derivative of function 1
|
||||
|
||||
F=ppval(P,theta)*sin(theta)-yrqd;
|
||||
if theta < 0
|
||||
F=-theta^2+pi*theta-yrqd;
|
||||
elseif theta > pi
|
||||
F=-theta^2+pi*theta-yrqd;
|
||||
end;
|
||||
60
Matlab code/strut/GB30015.dat
Executable file
60
Matlab code/strut/GB30015.dat
Executable file
@@ -0,0 +1,60 @@
|
||||
Centerbody 3
|
||||
0.927434 0.030867
|
||||
0.885738 0.037894
|
||||
0.832426 0.044544
|
||||
0.770708 0.050733
|
||||
0.703824 0.054767
|
||||
0.634967 0.057296
|
||||
0.567289 0.058793
|
||||
0.503215 0.059528
|
||||
0.443412 0.059717
|
||||
0.388348 0.059516
|
||||
0.338469 0.059099
|
||||
0.294235 0.058631
|
||||
0.256072 0.058263
|
||||
0.223760 0.058026
|
||||
0.196178 0.057792
|
||||
0.172167 0.057433
|
||||
0.150558 0.056791
|
||||
0.130182 0.055719
|
||||
0.109959 0.054041
|
||||
0.089801 0.051717
|
||||
0.070408 0.048804
|
||||
0.052499 0.045333
|
||||
0.036815 0.041386
|
||||
0.024065 0.037043
|
||||
0.014845 0.032427
|
||||
0.008795 0.027556
|
||||
0.005152 0.022433
|
||||
0.003127 0.017031
|
||||
0.001941 0.011266
|
||||
0.000833 0.004850
|
||||
0.000868 -0.006228
|
||||
0.002777 -0.014501
|
||||
0.006960 -0.024027
|
||||
0.014590 -0.033727
|
||||
0.026905 -0.043466
|
||||
0.045147 -0.053006
|
||||
0.070516 -0.061993
|
||||
0.104060 -0.070058
|
||||
0.145165 -0.076927
|
||||
0.192399 -0.082424
|
||||
0.244294 -0.086545
|
||||
0.299425 -0.089280
|
||||
0.356322 -0.090523
|
||||
0.413532 -0.090135
|
||||
0.469635 -0.087990
|
||||
0.523580 -0.084127
|
||||
0.574750 -0.078781
|
||||
0.622524 -0.072162
|
||||
0.666283 -0.064484
|
||||
0.705419 -0.055972
|
||||
0.739322 -0.046855
|
||||
0.767373 -0.037351
|
||||
0.789853 -0.027657
|
||||
0.808793 -0.017830
|
||||
0.826372 -0.007917
|
||||
0.844831 0.002026
|
||||
0.866348 0.011975
|
||||
0.893151 0.021929
|
||||
0.927426 0.031964
|
||||
61
Matlab code/strut/Newton.m
Executable file
61
Matlab code/strut/Newton.m
Executable file
@@ -0,0 +1,61 @@
|
||||
function x=newton(Fs,FPs,P0,y,P,TOL);
|
||||
% NEWTON-RAPHSON ALGORITHM 2.3
|
||||
%
|
||||
% To find a solution to f(x) = 0 given an
|
||||
% initial approximation p0:
|
||||
%
|
||||
% y,P can be used for additional info if the function
|
||||
% requires it.
|
||||
%
|
||||
% Initially written by Burden and Faires, revised by
|
||||
% B.A. Broughton, 10/01/1999
|
||||
%
|
||||
% INPUT: initial approximation p0; tolerance TOL;
|
||||
% maximum number of iterations NO.
|
||||
%
|
||||
% OUTPUT: approximate solution p or a message of failure
|
||||
|
||||
TRUE = 1;
|
||||
FALSE = 0;
|
||||
F = inline(Fs,'x','P','y');
|
||||
FP = inline(FPs,'x','P');
|
||||
NO=150;
|
||||
OUP = 1;
|
||||
F0 = F(P0,P,y);
|
||||
% STEP 1
|
||||
I = 1;
|
||||
OK = TRUE;
|
||||
% STEP 2
|
||||
while I <= NO & OK == TRUE
|
||||
% STEP 3
|
||||
% compute P(I)
|
||||
FP0 = FP(P0,P);
|
||||
D = F0/FP0;
|
||||
% STEP 6
|
||||
P0 = P0 - D;
|
||||
F0 = F(P0,P,y);
|
||||
% STEP 4
|
||||
if abs(D) < TOL
|
||||
% procedure completed successfully
|
||||
% fprintf(OUP,'\nApproximate solution = %.10e\n',P0);
|
||||
% fprintf(OUP,'with F(P) = %.10e\n',F0);
|
||||
% fprintf(OUP,'Number of iterations = %d\n',I);
|
||||
% fprintf(OUP,'Tolerance = %.10e\n',TOL);
|
||||
OK = FALSE;
|
||||
% STEP 5
|
||||
else
|
||||
I = I+1;
|
||||
end
|
||||
end
|
||||
if OK == TRUE
|
||||
% STEP 7
|
||||
% procedure completed unsuccessfully
|
||||
fprintf(OUP,'\nIteration number %d',NO);
|
||||
fprintf(OUP,' gave approximation %.10e\n',P0);
|
||||
fprintf(OUP,'with F(P) = %.10e not within tolerance %.10e\n',F0,TOL);
|
||||
end
|
||||
x = P0;
|
||||
|
||||
|
||||
|
||||
|
||||
4
Matlab code/strut/default.dat
Executable file
4
Matlab code/strut/default.dat
Executable file
@@ -0,0 +1,4 @@
|
||||
Strut length:
|
||||
4.0
|
||||
Strut width:
|
||||
1.5
|
||||
48
Matlab code/strut/derppval.m
Executable file
48
Matlab code/strut/derppval.m
Executable file
@@ -0,0 +1,48 @@
|
||||
function v=derppval(pp,xx)
|
||||
%PPVAL Evaluate piecewise polynomial.
|
||||
% V = PPVAL(PP,XX) returns the value at the points XX of the
|
||||
% piecewise polynomial contained in PP, as constructed by SPLINE
|
||||
% (or MKPP).
|
||||
%
|
||||
% Revised by B.A. Broughton on 10/01/1999 to calculate the derivative
|
||||
% for a pre-fitted cubic spline in the points xx
|
||||
%
|
||||
% See also SPLINE.
|
||||
|
||||
% Carl de Boor 7-2-86
|
||||
% Revised 10-14-97 CB to speed up locating points in mesh (as in
|
||||
% PPUAL) and to handle vector-valued functions.
|
||||
% Copyright (c) 1984-98 by The MathWorks, Inc.
|
||||
% $Revision: 5.8 $ $Date: 1997/11/21 23:41:00 $
|
||||
|
||||
[mx,nx] = size(xx); lx = mx*nx; xs = reshape(xx,1,lx);
|
||||
% if necessary, sort xx
|
||||
tosort=0;
|
||||
if any(diff(xs)<0)
|
||||
tosort=1;[xs,ix]=sort(xs);
|
||||
end
|
||||
|
||||
% take apart pp
|
||||
[x,c,l,k,d]=unmkpp(pp);
|
||||
|
||||
% for each data point, compute its breakpoint interval
|
||||
[ignored,index] = sort([x(1:l) xs]);
|
||||
index = max([find(index>l)-(1:lx);ones(1,lx)]);
|
||||
|
||||
% now go to local coordinates ...
|
||||
xs = xs-x(index);
|
||||
|
||||
if d>1 % ... replicate xs and index in case pp is vector-valued ...
|
||||
xs = reshape(xs(ones(d,1),:),1,d*lx);
|
||||
index = d*index; temp = [-d:-1].';
|
||||
index = reshape(1+index(ones(d,1),:)+temp(:,ones(1,lx)), d*lx, 1 );
|
||||
end
|
||||
|
||||
% ... and apply nested multiplication to get derivative:
|
||||
v = 3*c(index,1).';
|
||||
for i=2:k-1
|
||||
v = xs.*v + (4-i)*c(index,i).';
|
||||
end
|
||||
v = reshape(v,d,lx);
|
||||
if tosort>0, v(:,ix) = v; end
|
||||
v = reshape(v,d*mx,nx);
|
||||
61
Matlab code/strut/e169.dat
Executable file
61
Matlab code/strut/e169.dat
Executable file
@@ -0,0 +1,61 @@
|
||||
1.00000 0.00000
|
||||
0.99640 0.00022
|
||||
0.98598 0.00115
|
||||
0.96948 0.00290
|
||||
0.94737 0.00514
|
||||
0.91970 0.00771
|
||||
0.88673 0.01081
|
||||
0.84899 0.01458
|
||||
0.80708 0.01904
|
||||
0.76168 0.02416
|
||||
0.71346 0.02985
|
||||
0.66316 0.03596
|
||||
0.61148 0.04231
|
||||
0.55912 0.04866
|
||||
0.50675 0.05477
|
||||
0.45499 0.06036
|
||||
0.40442 0.06516
|
||||
0.35555 0.06889
|
||||
0.30884 0.07127
|
||||
0.26456 0.07202
|
||||
0.22289 0.07110
|
||||
0.18408 0.06858
|
||||
0.14839 0.06450
|
||||
0.11605 0.05896
|
||||
0.08721 0.05212
|
||||
0.06206 0.04427
|
||||
0.04085 0.03567
|
||||
0.02379 0.02657
|
||||
0.01106 0.01729
|
||||
0.00290 0.00819
|
||||
0.00000 0.00000
|
||||
0.00290 -0.00819
|
||||
0.01106 -0.01729
|
||||
0.02379 -0.02657
|
||||
0.04085 -0.03567
|
||||
0.06206 -0.04427
|
||||
0.08721 -0.05212
|
||||
0.11605 -0.05896
|
||||
0.14839 -0.06450
|
||||
0.18408 -0.06858
|
||||
0.22289 -0.07110
|
||||
0.26456 -0.07202
|
||||
0.30884 -0.07127
|
||||
0.35555 -0.06889
|
||||
0.40442 -0.06516
|
||||
0.45499 -0.06036
|
||||
0.50675 -0.05477
|
||||
0.55912 -0.04866
|
||||
0.61148 -0.04231
|
||||
0.66316 -0.03596
|
||||
0.71346 -0.02985
|
||||
0.76168 -0.02416
|
||||
0.80708 -0.01904
|
||||
0.84899 -0.01458
|
||||
0.88673 -0.01081
|
||||
0.91970 -0.00771
|
||||
0.94737 -0.00514
|
||||
0.96948 -0.00290
|
||||
0.98598 -0.00115
|
||||
0.99640 -0.00022
|
||||
1.00000 0.00000
|
||||
73
Matlab code/strut/n0011sc.dat
Executable file
73
Matlab code/strut/n0011sc.dat
Executable file
@@ -0,0 +1,73 @@
|
||||
1.0000000 0.0000000
|
||||
0.9750000 0.0063610
|
||||
0.9500000 0.0120340
|
||||
0.9250000 0.0170990
|
||||
0.9000000 0.0216250
|
||||
0.8750000 0.0256760
|
||||
0.8500000 0.0293060
|
||||
0.8250000 0.0325640
|
||||
0.8000000 0.0354920
|
||||
0.7750000 0.0381270
|
||||
0.7500000 0.0404990
|
||||
0.7250000 0.0426350
|
||||
0.7000000 0.0445560
|
||||
0.6750000 0.0462810
|
||||
0.6500000 0.0478240
|
||||
0.6250000 0.0491980
|
||||
0.6000000 0.0504100
|
||||
0.5500000 0.0523760
|
||||
0.5000000 0.0537580
|
||||
0.4500000 0.0545710
|
||||
0.4000000 0.0547830
|
||||
0.3500000 0.0544670
|
||||
0.3000000 0.0535880
|
||||
0.2500000 0.0521250
|
||||
0.2000000 0.0499050
|
||||
0.1750000 0.0484210
|
||||
0.1500000 0.0466150
|
||||
0.1250000 0.0444000
|
||||
0.1000000 0.0416430
|
||||
0.0750000 0.0381170
|
||||
0.0500000 0.0333730
|
||||
0.0375000 0.0302420
|
||||
0.0250000 0.0262080
|
||||
0.0125000 0.0203230
|
||||
0.0065243 0.0157510
|
||||
0.0020000 0.0092250
|
||||
0.0000000 0.0000000
|
||||
0.0020000 -.0092250
|
||||
0.0065243 -.0157510
|
||||
0.0125000 -.0203230
|
||||
0.0250000 -.0262080
|
||||
0.0375000 -.0302420
|
||||
0.0500000 -.0333730
|
||||
0.0750000 -.0381170
|
||||
0.1000000 -.0416430
|
||||
0.1250000 -.0444000
|
||||
0.1500000 -.0466150
|
||||
0.1750000 -.0484210
|
||||
0.2000000 -.0499050
|
||||
0.2500000 -.0521250
|
||||
0.3000000 -.0535880
|
||||
0.3500000 -.0544670
|
||||
0.4000000 -.0547830
|
||||
0.4500000 -.0545710
|
||||
0.5000000 -.0537580
|
||||
0.5500000 -.0523760
|
||||
0.6000000 -.0504100
|
||||
0.6250000 -.0491980
|
||||
0.6500000 -.0478240
|
||||
0.6750000 -.0462810
|
||||
0.7000000 -.0445560
|
||||
0.7250000 -.0426350
|
||||
0.7500000 -.0404990
|
||||
0.7750000 -.0381270
|
||||
0.8000000 -.0354920
|
||||
0.8250000 -.0325640
|
||||
0.8500000 -.0293060
|
||||
0.8750000 -.0256760
|
||||
0.9000000 -.0216250
|
||||
0.9250000 -.0170990
|
||||
0.9500000 -.0120340
|
||||
0.9750000 -.0063610
|
||||
1.0000000 0.0000000
|
||||
121
Matlab code/strut/profoil.xy
Executable file
121
Matlab code/strut/profoil.xy
Executable file
@@ -0,0 +1,121 @@
|
||||
1.000000000000000000 .000000000000000000
|
||||
.998777486086680500 .000039128734319942
|
||||
.995149957201797900 .000299711123091620
|
||||
.989223412000951500 .000970050932764146
|
||||
.981145670975447400 .002191944459643063
|
||||
.971086173541115400 .004058131322947883
|
||||
.959218271065854100 .006616851929127301
|
||||
.945706851119262500 .009881834306856888
|
||||
.930700273461090700 .013843493660014540
|
||||
.914325006657736200 .018490106396244770
|
||||
.896712202983196000 .023831183551336430
|
||||
.878031579617458700 .029870359503535860
|
||||
.858469985253515600 .036571096694192990
|
||||
.838207410107304000 .043866397021870910
|
||||
.817417182035262800 .051666396180680990
|
||||
.796262725420542100 .059858757685190970
|
||||
.774895277507216700 .068310658901039420
|
||||
.753451484645534000 .076868732703536020
|
||||
.732051524265323200 .085358173538330990
|
||||
.710796631329745400 .093576839857823130
|
||||
.689766787023759400 .101284440285054700
|
||||
.669021789514310700 .108004130409690200
|
||||
.647984505083075700 .113517558583694500
|
||||
.626209753346901800 .118160978748600900
|
||||
.603906937326857100 .122183989186028700
|
||||
.581174458182988900 .125643551228927200
|
||||
.558085325789258000 .128571298857894900
|
||||
.534708385904846900 .130995982227475800
|
||||
.511125153673589700 .132936634797773900
|
||||
.487414917632911500 .134395393258587100
|
||||
.463636942159360800 .135372544946359500
|
||||
.439849646582566200 .135880924872991600
|
||||
.416129229529416800 .135932324935261500
|
||||
.392551604725222700 .135523839972135600
|
||||
.369169924983092400 .134652210372689700
|
||||
.346035451945036500 .133331029810853700
|
||||
.323220217914391800 .131575843856679300
|
||||
.300797046657626900 .129386347101403700
|
||||
.278812453307359000 .126760721548801400
|
||||
.257309179976361900 .123717036224272600
|
||||
.236353559973413300 .120277956367501000
|
||||
.216014161654179800 .116448525272583100
|
||||
.196329554560218300 .112229851320313100
|
||||
.177332029646007900 .107645700117241500
|
||||
.159080386059838400 .102727725529926800
|
||||
.141637945695737200 .097488150841075400
|
||||
.125034496189223100 .091931510154726490
|
||||
.109290253339481500 .086087704486253860
|
||||
.094454976917392910 .079999204540625310
|
||||
.080586667085654870 .073687741829588080
|
||||
.067707008469758520 .067161789240575750
|
||||
.055823753574367530 .060457858461761200
|
||||
.044977281751047430 .053632340809673470
|
||||
.035222563429941790 .046721462576666080
|
||||
.026578369204382610 .039740223071008730
|
||||
.019044521471932470 .032734528562300090
|
||||
.012657486477428590 .025783468434054890
|
||||
.007479235811376661 .018955265852321320
|
||||
.003562052994489084 .012298802928596600
|
||||
.000960867432208801 .005899665413544174
|
||||
.000000000000000000 -.000000000000782577
|
||||
.000960867432658108 -.005899665415042383
|
||||
.003562052995440102 -.012298802929920450
|
||||
.007479235812865470 -.018955265853393500
|
||||
.012657486479490610 -.025783468434806120
|
||||
.019044521474602230 -.032734528562669890
|
||||
.026578369207690860 -.039740223070943440
|
||||
.035222563433915280 -.046721462576115150
|
||||
.044977281755714470 -.053632340808588400
|
||||
.055823753579757880 -.060457858460098970
|
||||
.067707008475899390 -.067161789238299510
|
||||
.080586667092570670 -.073687741826664210
|
||||
.094454976925108960 -.079999204537022460
|
||||
.109290253348024500 -.086087704481945620
|
||||
.125034496198618000 -.091931510149692600
|
||||
.141637945706006300 -.097488150835299620
|
||||
.159080386071004300 -.102727725523395900
|
||||
.177332029658094500 -.107645700109947200
|
||||
.196329554573247400 -.112229851312253600
|
||||
.216014161668171400 -.116448525263761400
|
||||
.236353559988387900 -.120277956357923900
|
||||
.257309179992340000 -.123717036213952500
|
||||
.278812453324360100 -.126760721537757600
|
||||
.300797046675668400 -.129386347089661000
|
||||
.323220217933491400 -.131575843844267600
|
||||
.346035451965212900 -.133331029797809100
|
||||
.369169925004362300 -.134652210359056000
|
||||
.392551604747601900 -.135523839957963200
|
||||
.416129229552922000 -.135932324920607600
|
||||
.439849646607214700 -.135880924857921400
|
||||
.463636942185169900 -.135372544930947900
|
||||
.487414917659898500 -.134395393242918100
|
||||
.511125153701774000 -.132936634781941800
|
||||
.534708385934251100 -.130995982211587800
|
||||
.558085325819907400 -.128571298842073600
|
||||
.581174458214914100 -.125643551213313200
|
||||
.603906937360098000 -.122183989170786900
|
||||
.626209753381513200 -.118160978733930500
|
||||
.647984505119135800 -.113517558569847300
|
||||
.669021789552016100 -.108004130397079200
|
||||
.689766787063014900 -.101284440274386000
|
||||
.710796631370007800 -.093576839849761590
|
||||
.732051524305964800 -.085358173533257910
|
||||
.753451484685878400 -.076868732701677340
|
||||
.774895277546564200 -.068310658902473520
|
||||
.796262725458194400 -.059858757689853240
|
||||
.817417182070549100 -.051666396188368860
|
||||
.838207410139606300 -.043866397032250560
|
||||
.858469985282292200 -.036571096706810770
|
||||
.878031579642266200 -.029870359517829740
|
||||
.896712203003706900 -.023831183566654460
|
||||
.914325006673737600 -.018490106411837240
|
||||
.930700273472570900 -.013843493674984400
|
||||
.945706851126577300 -.009881834320268800
|
||||
.959218271069722000 -.006616851940244741
|
||||
.971086173542466100 -.004058131331368275
|
||||
.981145670975267700 -.002191944465334945
|
||||
.989223412000137400 -.000970050936046449
|
||||
.995149957201033200 -.000299711124549478
|
||||
.998777486086403700 -.000039128734678850
|
||||
.999999999999999800 .000000000000000049
|
||||
69
Matlab code/strut/readme.txt
Executable file
69
Matlab code/strut/readme.txt
Executable file
@@ -0,0 +1,69 @@
|
||||
|
||||
**********************************************************************
|
||||
STRUT
|
||||
**********************************************************************
|
||||
|
||||
Using the strut fitting program
|
||||
-------------------------------
|
||||
|
||||
Make sure that all the .m files are in the same directory. Your
|
||||
airfoil coordinate files do not have to be in the same directory.
|
||||
|
||||
Make sure that the first line in the airfoil coordinate file is not
|
||||
the name of the airfoil, i.e. only numbers are allowed in the file.
|
||||
Also make sure the coordinates are sorted TE-LE-TE and that the
|
||||
leading edge point (usually 0,0) is not repeated. This is important,
|
||||
since it is easy to forget to remove the extra point if you sorted the
|
||||
coordinates with a spreadsheet such as MS Excel.
|
||||
|
||||
Start Matlab.
|
||||
Change the directory to the directory with the .m files. Use the "cd"
|
||||
command in Matlab to do this.
|
||||
Run the GUI by typing "strut".
|
||||
|
||||
Now you can load an airfoil by clicking on the "load" button. Simply
|
||||
choose the file. After loading the filename of the current airfoil,
|
||||
the name of the filename will appear in the box below the "load"
|
||||
button.
|
||||
|
||||
The size of the strut can be changed by changing the values for
|
||||
"length" and "width". "Length" is the distance in the chordwise
|
||||
direction. Units do not matter. You can also change the default
|
||||
values by editing the "default.dat" text file.
|
||||
|
||||
Click on "calculate", wait a couple of seconds and the information for
|
||||
the fitted airfoil should appear in the three remaining boxes. The
|
||||
values are:
|
||||
|
||||
scale - How much you must enlarge the airfoil to fit over the box.
|
||||
xLE% - Chord percentage where the leading edge of the strut is located.
|
||||
xLE - Actual distance from the LE of the airfoil to the LE of the
|
||||
strut.
|
||||
|
||||
Notes:
|
||||
------
|
||||
|
||||
The program will not converge for low aspect ratio struts in very thin
|
||||
airfoils. It should however work for all practical cases for the AE
|
||||
416 homework assignment.
|
||||
|
||||
|
||||
|
||||
**********************************************************************
|
||||
Development Notes
|
||||
**********************************************************************
|
||||
|
||||
1) Matlab program for sizing airfoils to fit over a rectangular
|
||||
strut written Sept 1999 by
|
||||
|
||||
B.A. Broughton
|
||||
Graduate Student
|
||||
Applied Aerodynamics Group
|
||||
Dept. of Aerospace Engineering
|
||||
University of Illinois at Urbana-Champaign
|
||||
|
||||
|
||||
2) Minor fixes/updates/changes by Selig 090925
|
||||
|
||||
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
7
Matlab code/strut/reversefit.m
Executable file
7
Matlab code/strut/reversefit.m
Executable file
@@ -0,0 +1,7 @@
|
||||
function theta=reversefit(P,y,theta0);
|
||||
|
||||
TOL=1e-8;
|
||||
F='Func1(x,P,y)';
|
||||
FP='FFunc1(x,P)';
|
||||
theta=Newton(F,FP,theta0,y,P,TOL);
|
||||
|
||||
194
Matlab code/strut/strut.m
Executable file
194
Matlab code/strut/strut.m
Executable file
@@ -0,0 +1,194 @@
|
||||
function fig = strut()
|
||||
% This is the machine-generated representation of a Handle Graphics object
|
||||
% and its children. Note that handle values may change when these objects
|
||||
% are re-created. This may cause problems with any callbacks written to
|
||||
% depend on the value of the handle at the time the object was saved.
|
||||
% This problem is solved by saving the output as a FIG-file.
|
||||
%
|
||||
% To reopen this object, just type the name of the M-file at the MATLAB
|
||||
% prompt. The M-file and its associated MAT-file must be on your path.
|
||||
%
|
||||
% NOTE: certain newer features in MATLAB may not have been saved in this
|
||||
% M-file due to limitations of this format, which has been superseded by
|
||||
% FIG-files. Figures which have been annotated using the plot editor tools
|
||||
% are incompatible with the M-file/MAT-file format, and should be saved as
|
||||
% FIG-files.
|
||||
|
||||
load strut
|
||||
|
||||
h0 = figure('Color',[0.8 0.8 0.8], ...
|
||||
'Colormap',mat0, ...
|
||||
'FileName','strut.m', ...
|
||||
'PaperPosition',[18 180 576 432], ...
|
||||
'PaperUnits','points', ...
|
||||
'Position',[392 219 560 420], ...
|
||||
'Tag','Fig1', ...
|
||||
'ToolBar','none');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'Callback','strutcall load', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[356.25 289.5 50.25 15.75], ...
|
||||
'String','Load Airfoil', ...
|
||||
'Tag','Pushbutton1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 248.25 40 11], ...
|
||||
'String','Strut Size:', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 228.75 30 11.25], ...
|
||||
'String','Width', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 208.625 30 11], ...
|
||||
'String','Length', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[377.25 226.5 39.75 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','width');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[377.25 206.25 39.75 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','length');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'Callback','strutcall calculate', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[356.25 177 50.25 15.75], ...
|
||||
'String','Calculate', ...
|
||||
'Tag','Pushbutton1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 133.5 30 11.25], ...
|
||||
'String','Scale', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText2');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 88.875 30 11.25], ...
|
||||
'String','Xle (%)', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText2');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 44.25 30 11.25], ...
|
||||
'String','Xle', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText2');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[354.75 114 50.25 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','scale');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[354.75 69.375 50.25 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','xlepers');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[354.75 24.75 50.25 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','xle');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 152.25 40 12], ...
|
||||
'String','Results:', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText3');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 264.75 66 15.75], ...
|
||||
'String','None Selected', ...
|
||||
'Style','edit', ...
|
||||
'Tag','airfoilname');
|
||||
h1 = axes('Parent',h0, ...
|
||||
'Units','pixels', ...
|
||||
'CameraUpVector',[0 1 0], ...
|
||||
'CameraUpVectorMode','manual', ...
|
||||
'Color',[1 1 1], ...
|
||||
'ColorOrder',mat1, ...
|
||||
'Position',[34 27 418 386], ...
|
||||
'Tag','Axes1', ...
|
||||
'XColor',[0 0 0], ...
|
||||
'YColor',[0 0 0], ...
|
||||
'ZColor',[0 0 0]);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','center', ...
|
||||
'Position',[0.4988009592326139 -0.06233766233766236 9.160254037844386], ...
|
||||
'Tag','Axes1Text4', ...
|
||||
'VerticalAlignment','cap');
|
||||
set(get(h2,'Parent'),'XLabel',h2);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','center', ...
|
||||
'Position',[-0.06954436450839328 0.4961038961038962 9.160254037844386], ...
|
||||
'Rotation',90, ...
|
||||
'Tag','Axes1Text3', ...
|
||||
'VerticalAlignment','baseline');
|
||||
set(get(h2,'Parent'),'YLabel',h2);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','right', ...
|
||||
'Position',[-0.0815347721822542 1.018181818181818 9.160254037844386], ...
|
||||
'Tag','Axes1Text2', ...
|
||||
'Visible','off');
|
||||
set(get(h2,'Parent'),'ZLabel',h2);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','center', ...
|
||||
'Position',[0.4988009592326139 1.018181818181818 9.160254037844386], ...
|
||||
'Tag','Axes1Text1', ...
|
||||
'VerticalAlignment','bottom');
|
||||
set(get(h2,'Parent'),'Title',h2);
|
||||
if nargout > 0, fig = h0; end
|
||||
BIN
Matlab code/strut/strut.mat
Executable file
BIN
Matlab code/strut/strut.mat
Executable file
Binary file not shown.
BIN
Matlab code/strut/strutWindow.png
Executable file
BIN
Matlab code/strut/strutWindow.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 7.7 KiB |
110
Matlab code/strut/strutcall.m
Executable file
110
Matlab code/strut/strutcall.m
Executable file
@@ -0,0 +1,110 @@
|
||||
function strutcall(action)
|
||||
|
||||
global x y tmax
|
||||
% Remove
|
||||
global P
|
||||
|
||||
switch(action)
|
||||
case 'load'
|
||||
|
||||
% Read Input Data
|
||||
[fname,pname] = uigetfile('*.*','File containing airfoil co-ordinates');
|
||||
if fname == 0
|
||||
return;
|
||||
end
|
||||
|
||||
dot=find(fname=='.');
|
||||
|
||||
oldpath = pwd;
|
||||
eval(['cd ' pname]);
|
||||
data = load(fname);
|
||||
eval(['cd ' oldpath]);
|
||||
|
||||
x = data(:,1);
|
||||
y = data(:,2);
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','airfoilname');
|
||||
set(txtHndl,'String',fname(1:dot-1));
|
||||
|
||||
plot(x,y); axis([0 1 -.5 .5]);
|
||||
|
||||
% Load default strut size
|
||||
fid=fopen('default.dat','r');
|
||||
fgetl(fid);
|
||||
lstrut=eval(fgetl(fid));
|
||||
fgetl(fid);
|
||||
wstrut=eval(fgetl(fid));
|
||||
fclose(fid);
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','length');
|
||||
set(txtHndl,'String',num2str(lstrut));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','width');
|
||||
set(txtHndl,'String',num2str(wstrut));
|
||||
|
||||
case 'calculate'
|
||||
|
||||
global x y
|
||||
delt=1e-7; % Used for calculating dF/dt
|
||||
TOL=1e-6; % Tolerance for N-R iteration
|
||||
|
||||
N = length(x);
|
||||
c = max(x)-min(x);
|
||||
x1 = x-c/2;
|
||||
r = sqrt(x1.^2+y.^2);
|
||||
theta = acos(x1./r);
|
||||
% Use a continues theta
|
||||
theta((N+1)/2:N)=2*pi-theta((N+1)/2:N);
|
||||
P = spline(theta,r); % Fit cubic spline in polar coords
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','length');
|
||||
lstrut=eval(get(txtHndl,'String'));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','width');
|
||||
tstrut=eval(get(txtHndl,'String'));
|
||||
|
||||
ARrqd=lstrut/tstrut; % AR of strut
|
||||
|
||||
[tmax,I]=max(y); % Approx. max thickness
|
||||
tmax=tmax*2;
|
||||
|
||||
t0=tmax/2; % Start with tmax/2
|
||||
|
||||
F='ARfit(P,x)-y'; % For sol. F=AR(t)-ARrqd=0
|
||||
FP=['(ARfit(P,x+' num2str(delt) ')-(ARfit(P,x)))/' num2str(delt)];
|
||||
% Derivative: F'=(F(t+dt)-F(t))/dt
|
||||
|
||||
tnew=Newton(F,FP,t0,ARrqd,P,TOL);
|
||||
% Find size of strut that will fit in norm. airfoil
|
||||
|
||||
[AR,xLEnew]=ARfit(P,tnew);
|
||||
|
||||
% Scale
|
||||
scale = tstrut/tnew;
|
||||
chord=scale*c;
|
||||
xLEnewnorm = xLEnew+c/2;
|
||||
xLEnew = xLEnewnorm*scale;
|
||||
|
||||
x1=x*scale;
|
||||
y1=y*scale;
|
||||
|
||||
% Plotit
|
||||
c1x=xLEnew; cy=tstrut/2;
|
||||
c2x=xLEnew+lstrut;
|
||||
strx=[c1x c2x c2x c1x c1x];
|
||||
stry=[cy cy -cy -cy cy];
|
||||
plot(x1,y1,'b',strx,stry,'r');
|
||||
axis([0 chord -chord/2 chord/2]);
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','scale');
|
||||
set(txtHndl,'String',num2str(scale));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','xlepers');
|
||||
set(txtHndl,'String',num2str(xLEnewnorm*100));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','xle');
|
||||
set(txtHndl,'String',num2str(xLEnew));
|
||||
|
||||
|
||||
|
||||
end;
|
||||
110
Matlab code/strut/strutcall_update.m
Executable file
110
Matlab code/strut/strutcall_update.m
Executable file
@@ -0,0 +1,110 @@
|
||||
function strutcall(action)
|
||||
|
||||
global x y tmax
|
||||
% Remove
|
||||
global P
|
||||
|
||||
switch(action)
|
||||
case 'load'
|
||||
|
||||
% Read Input Data
|
||||
[fname,pname] = uigetfile('*.dat','File containing airfoil co-ordinates');
|
||||
if fname == 0
|
||||
return;
|
||||
end
|
||||
|
||||
dot=find(fname=='.');
|
||||
|
||||
oldpath = pwd;
|
||||
eval(['cd ' pname]);
|
||||
data = load(fname);
|
||||
eval(['cd ' pwd]);
|
||||
|
||||
x = data(:,1);
|
||||
y = data(:,2);
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','airfoilname');
|
||||
set(txtHndl,'String',fname(1:dot-1));
|
||||
|
||||
plot(x,y); axis([0 1 -.5 .5]);
|
||||
|
||||
% Load default strut size
|
||||
fid=fopen('default.dat','r');
|
||||
fgetl(fid);
|
||||
lstrut=eval(fgetl(fid));
|
||||
fgetl(fid);
|
||||
wstrut=eval(fgetl(fid));
|
||||
fclose(fid);
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','length');
|
||||
set(txtHndl,'String',num2str(lstrut));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','width');
|
||||
set(txtHndl,'String',num2str(wstrut));
|
||||
|
||||
case 'calculate'
|
||||
|
||||
global x y
|
||||
delt=1e-7; % Used for calculating dF/dt
|
||||
TOL=1e-6; % Tolerance for N-R iteration
|
||||
|
||||
N = length(x);
|
||||
c = max(x)-min(x);
|
||||
x1 = x-c/2;
|
||||
r = sqrt(x1.^2+y.^2);
|
||||
theta = acos(x1./r);
|
||||
% Use a continues theta
|
||||
theta((N+1)/2:N)=2*pi-theta((N+1)/2:N);
|
||||
P = spline(theta,r); % Fit cubic spline in polar coords
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','length');
|
||||
lstrut=eval(get(txtHndl,'String'));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','width');
|
||||
tstrut=eval(get(txtHndl,'String'));
|
||||
|
||||
ARrqd=lstrut/tstrut; % AR of strut
|
||||
|
||||
[tmax,I]=max(y); % Approx. max thickness
|
||||
tmax=tmax*2;
|
||||
|
||||
t0=tmax/2; % Start with tmax/2
|
||||
|
||||
F='ARfit(P,x)-y'; % For sol. F=AR(t)-ARrqd=0
|
||||
FP=['(ARfit(P,x+' num2str(delt) ')-(ARfit(P,x)))/' num2str(delt)];
|
||||
% Derivative: F'=(F(t+dt)-F(t))/dt
|
||||
|
||||
tnew=Newton(F,FP,t0,ARrqd,P,TOL);
|
||||
% Find size of strut that will fit in norm. airfoil
|
||||
|
||||
[AR,xLEnew]=ARfit(P,tnew);
|
||||
|
||||
% Scale
|
||||
scale = tstrut/tnew;
|
||||
chord=scale*c;
|
||||
xLEnewnorm = xLEnew+c/2;
|
||||
xLEnew = xLEnewnorm*scale;
|
||||
|
||||
x1=x*scale;
|
||||
y1=y*scale;
|
||||
|
||||
% Plotit
|
||||
c1x=xLEnew; cy=tstrut/2;
|
||||
c2x=xLEnew+lstrut;
|
||||
strx=[c1x c2x c2x c1x c1x];
|
||||
stry=[cy cy -cy -cy cy];
|
||||
plot(x1,y1,'b',strx,stry,'r');
|
||||
axis([0 chord -chord/2 chord/2]);
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','scale');
|
||||
set(txtHndl,'String',num2str(scale));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','xlepers');
|
||||
set(txtHndl,'String',num2str(xLEnewnorm*100));
|
||||
|
||||
txtHndl=findobj(gcbf,'Tag','xle');
|
||||
set(txtHndl,'String',num2str(xLEnew));
|
||||
|
||||
|
||||
|
||||
end;
|
||||
208
Matlab code/strut/strutfit.m
Executable file
208
Matlab code/strut/strutfit.m
Executable file
@@ -0,0 +1,208 @@
|
||||
function fig = strut()
|
||||
% This is the machine-generated representation of a Handle Graphics object
|
||||
% and its children. Note that handle values may change when these objects
|
||||
% are re-created. This may cause problems with any callbacks written to
|
||||
% depend on the value of the handle at the time the object was saved.
|
||||
% This problem is solved by saving the output as a FIG-file.
|
||||
%
|
||||
% To reopen this object, just type the name of the M-file at the MATLAB
|
||||
% prompt. The M-file and its associated MAT-file must be on your path.
|
||||
%
|
||||
% NOTE: certain newer features in MATLAB may not have been saved in this
|
||||
% M-file due to limitations of this format, which has been superseded by
|
||||
% FIG-files. Figures which have been annotated using the plot editor tools
|
||||
% are incompatible with the M-file/MAT-file format, and should be saved as
|
||||
% FIG-files.
|
||||
|
||||
load strut
|
||||
|
||||
h0 = figure('Color',[0.8 0.8 0.8], ...
|
||||
'Colormap',mat0, ...
|
||||
'FileName','strutfit.m', ...
|
||||
'MenuBar','none', ...
|
||||
'PaperPosition',[18 180 576 432], ...
|
||||
'PaperUnits','points', ...
|
||||
'Position',[392 219 560 420], ...
|
||||
'Tag','Fig1', ...
|
||||
'ToolBar','none', ...
|
||||
'NumberTitle','off', ...
|
||||
'Name','Strutfit');
|
||||
h1 = uimenu('Parent',h0, ...
|
||||
'Label','Help', ...
|
||||
'Tag','uimenu1');
|
||||
h2 = uimenu('Parent',h1, ...
|
||||
'Callback','edit readme.txt', ...
|
||||
'Label','Readme', ...
|
||||
'Tag','Helpuimenu1');
|
||||
h2 = uimenu('Parent',h1, ...
|
||||
'Callback','edit about.txt', ...
|
||||
'Label','About Strutfit', ...
|
||||
'Tag','Aboutuimenu1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'Callback','strutcall load', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[356.25 289.5 50.25 15.75], ...
|
||||
'String','Load Airfoil', ...
|
||||
'Tag','Pushbutton1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 248.25 40 11], ...
|
||||
'String','Strut Size:', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 228.75 30 11.25], ...
|
||||
'String','Width', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 208.625 30 11], ...
|
||||
'String','Length', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[377.25 226.5 39.75 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','width');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[377.25 206.25 39.75 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','length');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'Callback','strutcall calculate', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[356.25 177 50.25 15.75], ...
|
||||
'String','Calculate', ...
|
||||
'Tag','Pushbutton1');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 133.5 30 11.25], ...
|
||||
'String','Scale', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText2');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 88.875 30 11.25], ...
|
||||
'String','Xle (%)', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText2');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 44.25 30 11.25], ...
|
||||
'String','Xle', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText2');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[354.75 114 50.25 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','scale');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[354.75 69.375 50.25 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','xlepers');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[354.75 24.75 50.25 15.75], ...
|
||||
'String','0', ...
|
||||
'Style','edit', ...
|
||||
'Tag','xle');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[0.752941176470588 0.752941176470588 0.752941176470588], ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[341.25 152.25 40 12], ...
|
||||
'String','Results:', ...
|
||||
'Style','text', ...
|
||||
'Tag','StaticText3');
|
||||
h1 = uicontrol('Parent',h0, ...
|
||||
'Units','points', ...
|
||||
'BackgroundColor',[1 1 1], ...
|
||||
'Enable','off', ...
|
||||
'ListboxTop',0, ...
|
||||
'Position',[347.25 264.75 66 15.75], ...
|
||||
'String','None Selected', ...
|
||||
'Style','edit', ...
|
||||
'Tag','airfoilname');
|
||||
h1 = axes('Parent',h0, ...
|
||||
'Units','pixels', ...
|
||||
'CameraUpVector',[0 1 0], ...
|
||||
'CameraUpVectorMode','manual', ...
|
||||
'Color',[1 1 1], ...
|
||||
'ColorOrder',mat1, ...
|
||||
'Position',[34 27 418 386], ...
|
||||
'Tag','Axes1', ...
|
||||
'XColor',[0 0 0], ...
|
||||
'YColor',[0 0 0], ...
|
||||
'ZColor',[0 0 0]);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','center', ...
|
||||
'Position',[0.4988009592326139 -0.06233766233766236 9.160254037844386], ...
|
||||
'Tag','Axes1Text4', ...
|
||||
'VerticalAlignment','cap');
|
||||
set(get(h2,'Parent'),'XLabel',h2);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','center', ...
|
||||
'Position',[-0.06954436450839328 0.4961038961038962 9.160254037844386], ...
|
||||
'Rotation',90, ...
|
||||
'Tag','Axes1Text3', ...
|
||||
'VerticalAlignment','baseline');
|
||||
set(get(h2,'Parent'),'YLabel',h2);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','right', ...
|
||||
'Position',[-0.0815347721822542 1.018181818181818 9.160254037844386], ...
|
||||
'Tag','Axes1Text2', ...
|
||||
'Visible','off');
|
||||
set(get(h2,'Parent'),'ZLabel',h2);
|
||||
h2 = text('Parent',h1, ...
|
||||
'Color',[0 0 0], ...
|
||||
'HandleVisibility','off', ...
|
||||
'HorizontalAlignment','center', ...
|
||||
'Position',[0.4988009592326139 1.018181818181818 9.160254037844386], ...
|
||||
'Tag','Axes1Text1', ...
|
||||
'VerticalAlignment','bottom');
|
||||
set(get(h2,'Parent'),'Title',h2);
|
||||
if nargout > 0, fig = h0; end
|
||||
Reference in New Issue
Block a user