Delete MATLAB scripts

Commit
4fbe70cf817d2e31cbae5aae264d0ef1a3821afc
Author
blendoit <blendoit@gmail.com>
Author date
Committer
blendoit <blendoit@gmail.com>
Committer date
Changed files
README.org
index caa04a98..a2cb9004 100644..100644
@@ -1,7 +1,9 @@
1 Removed: #+TITLE: UCLA MAE 154B
2 Removed: #+SUBTITLE: Spring 2019 Final Project
1 Added: #+TITLE: Aircraft Studio
2 Added: #+AUTHOR: Marius Peter
3 3
4 4 This program enables the creation of NACA airfoils;
5 5 the analysis of the airfoil's structural properties;
6 6 the optimization via genetic algorithm of a population of airfoils;
7 7 With the final objective of designing a lightweight FAR 23 compliant airfoil.
8 Added:
9 Added: I adapted it from my own code for the UCLA MAE 154B final project (Spring 2019).
wing_scripts/eye_beam_example.m
index 70b4d921..00000000 100644..000000
@@ -1,70 +0,0 @@
1 Removed: % Bending/Shear stress example
2 Removed: close all;
3 Removed:
4 Removed: length = 20; % in
5 Removed: force = 10000; %lbs
6 Removed:
7 Removed: %eye-beam dimensions
8 Removed:
9 Removed: max_width = 4; % in
10 Removed: min_width = 1; % in
11 Removed: y_max = 4; % in
12 Removed: center_y = 2; % in
13 Removed:
14 Removed:
15 Removed: %max bending moment at the root...
16 Removed:
17 Removed: M = force*length;
18 Removed:
19 Removed: I = min_width*(2*center_y)^3/12 + 2*( max_width*(y_max-center_y)^3/12 + ...
20 Removed: max_width*(y_max-center_y)*((y_max+center_y)/2)^2);
21 Removed:
22 Removed: sigma_max = M * y_max / I;
23 Removed:
24 Removed:
25 Removed: % solve for shear stress distribution
26 Removed: % V / (I * t) * int(y*da)
27 Removed:
28 Removed: % Point 1: evaluated at location just before thickness changes from 4 to 1 in
29 Removed: tempCoeff = force / (I * max_width);
30 Removed: int_y_da = ((y_max+center_y)/2) * max_width*(y_max-center_y);
31 Removed: shear_1 = tempCoeff*int_y_da;
32 Removed:
33 Removed: % Point 2: evaluated at location just after thickness changes from 4 to 1 in
34 Removed: tempCoeff = force / (I * min_width);
35 Removed: shear_2 = tempCoeff*int_y_da;
36 Removed:
37 Removed:
38 Removed: % Point 3: evaluated at center of beam
39 Removed: tempCoeff = force / (I * min_width);
40 Removed: int_y_da = (center_y/2) * min_width*center_y;
41 Removed: shear_3 = shear_2+tempCoeff*int_y_da;
42 Removed:
43 Removed: %evaluating continous integral for width of 4..
44 Removed: int_y_da_4 = force / (I * max_width)*4*(y_max^2/2 - (center_y:.1:y_max).^2/2);
45 Removed:
46 Removed: %evaluating continous integral for width of 1..
47 Removed: int_y_da_1 = shear_2 + force / (I * min_width)*1*(center_y^2/2 - (0:.1:center_y).^2/2);
48 Removed:
49 Removed: figure; grid on; hold on;set(gcf,'color',[1 1 1]);
50 Removed: plot(int_y_da_4,center_y:.1:y_max,'linewidth',2)
51 Removed: plot(int_y_da_1,0:.1:center_y,'linewidth',2)
52 Removed: plot(int_y_da_1,0:-.1:-center_y,'linewidth',2)
53 Removed: plot(int_y_da_4,-center_y:-.1:-y_max,'linewidth',2)
54 Removed: plot([shear_1 shear_2],[center_y center_y],'linewidth',2)
55 Removed: plot([shear_1 shear_2],[-center_y -center_y],'linewidth',2)
56 Removed:
57 Removed: plot(shear_1,center_y,'o')
58 Removed: plot(shear_2,center_y,'o')
59 Removed: plot(shear_3,0,'o')
60 Removed: plot(shear_2,-center_y,'o')
61 Removed: plot(shear_1,-center_y,'o')
62 Removed:
63 Removed: xlabel('shear stress (lb/in^2)','fontsize',16,'fontweight','bold');ylabel('Distance from Center (in)','fontsize',16,'fontweight','bold')
64 Removed: set(gca,'FontSize',16,'fontweight','bold');
65 Removed:
66 Removed:
67 Removed: figure; grid on; hold on;set(gcf,'color',[1 1 1]);
68 Removed: plot([0 4 4 2.5 2.5 4 4 0 0 1.5 1.5 0 0],[4 4 2 2 -2 -2 -4 -4 -2 -2 2 2 4],'linewidth',2)
69 Removed:
70 Removed:
wing_scripts/get_dp.m
index 2a3281d4..00000000 100644..000000
@@ -1,4 +0,0 @@
1 Removed: function z = get_dp(xDist,zDist,Vx,Vz,Ix,Iz,Ixz,A)
2 Removed:
3 Removed: denom = (Ix*Iz-Ixz^2);
4 Removed: z = -A*xDist*(Ix*Vx-Ixz*Vz)/denom - A*zDist*(Iz*Vz-Ixz*Vx)/denom;
wing_scripts/get_ds.m
index 2f0eb9d5..00000000 100644..000000
@@ -1,20 +0,0 @@
1 Removed: function ds = get_ds(xi,xf,u)
2 Removed:
3 Removed: dist = 0;
4 Removed: numSteps = 10;
5 Removed: dx = (xf-xi)/numSteps;
6 Removed: z0 = get_z(xi,u);
7 Removed: x0 = xi;
8 Removed: for i=1:10
9 Removed: tempX = x0+dx;
10 Removed: if tempX > 0
11 Removed: tempZ = get_z(tempX,u);
12 Removed: else
13 Removed: tempZ = 0;
14 Removed: end
15 Removed: dist = dist + (dx^2+(tempZ-z0)^2)^.5;
16 Removed: z0 = tempZ;
17 Removed: x0 = tempX;
18 Removed: end
19 Removed:
20 Removed: ds =dist;
wing_scripts/get_int.m
index edbfda38..00000000 100644..000000
@@ -1,35 +0,0 @@
1 Removed: function z = get_int(xi,xf,u)
2 Removed:
3 Removed: M = 0.02;
4 Removed: P = 0.4;
5 Removed: T = 0.12;
6 Removed: a0 = 0.2969;
7 Removed: a1 = -0.126;
8 Removed: a2 = -0.3516;
9 Removed: a3 = 0.2843;
10 Removed: a4 = -0.1015;
11 Removed:
12 Removed:
13 Removed: %evaluate the integral of camber line, depending on xi and xf related to P
14 Removed:
15 Removed: if xf <P
16 Removed: intCamb = M/P^2*(2*P*xf^2/2 - xf^3/3) - M/P^2*(2*P*xi^2/2 - xi^3/3);
17 Removed: elseif xi<P
18 Removed: intCamb = (M/(1-P)^2)*((1 - 2*P)*xf +2*P*xf^2/2 - xf^3/3) - (M/(1-P)^2)*((1 - 2*P)*P +2*P*P^2/2 - P^3/3);
19 Removed: intCamb = intCamb + M/P^2*(2*P*P^2/2 - P^3/3) - M/P^2*(2*P*xi^2/2 - xi^3/3);
20 Removed: else
21 Removed: intCamb = (M/(1-P)^2)*((1 - 2*P)*xf +2*P*xf^2/2 - xf^3/3) - (M/(1-P)^2)*((1 - 2*P)*xi +2*P*xi^2/2 - xi^3/3);
22 Removed: end
23 Removed:
24 Removed: % do integral on thickness line
25 Removed: %z_thickness = (T/0.2)*(a0*x^.5+a1*x+a2*x^2+a3*x^3+a4*x^4);
26 Removed:
27 Removed: intThickness = (T/0.2)*(a0*xf^1.5/1.5 + a1*xf^2/2 + a2*xf^3/3 + a3*xf^4/4 +a4*xf^5/5);
28 Removed: intThickness = intThickness - (T/0.2)*(a0*xi^1.5/1.5 + a1*xi^2/2 + a2*xi^3/3 + a3*xi^4/4 +a4*xi^5/5);
29 Removed:
30 Removed: % combine both integral results to get total integral
31 Removed: if u == 1
32 Removed: z = intCamb + intThickness;
33 Removed: else
34 Removed: z = abs(intCamb - intThickness);
35 Removed: end
wing_scripts/get_z.m
index 5387b52d..00000000 100644..000000
@@ -1,34 +0,0 @@
1 Removed: function z = get_z(x,u)
2 Removed:
3 Removed:
4 Removed:
5 Removed: if (x < 0 )
6 Removed: disp('invalid X')
7 Removed: end
8 Removed:
9 Removed: M = 0.02;
10 Removed: P = 0.4;
11 Removed: T = 0.12;
12 Removed: a0 = 0.2969;
13 Removed: a1 = -0.126;
14 Removed: a2 = -0.3516;
15 Removed: a3 = 0.2843;
16 Removed: a4 = -0.1015;
17 Removed:
18 Removed: if x <P
19 Removed: z_camber = M/P^2*(2*P*x - x^2);
20 Removed: else
21 Removed: z_camber = (M/(1-P)^2)*(1 - 2*P +2*P*x - x^2);
22 Removed: end
23 Removed:
24 Removed: %z_camber = M/P^2*(2*P*x - x^2);
25 Removed: z_thickness = (T/0.2)*(a0*x^.5+a1*x+a2*x^2+a3*x^3+a4*x^4);
26 Removed:
27 Removed: if u==1
28 Removed: z = z_camber + z_thickness;
29 Removed: else
30 Removed: z = z_camber - z_thickness;
31 Removed: end
32 Removed:
33 Removed:
34 Removed:
wing_scripts/my_progress.m
index e87ef238..00000000 100644..000000
@@ -1,459 +0,0 @@
1 Removed: %wing shear flow
2 Removed: clear all;
3 Removed: close all;
4 Removed:
5 Removed: Vx = 1; Vz = 1; My = 1; %test loads will be applied individually
6 Removed:
7 Removed:
8 Removed: %Ixz = -Ixz;
9 Removed:
10 Removed: %define webs
11 Removed:
12 Removed: %% web cell 1
13 Removed:
14 Removed: %upper webs
15 Removed: numStringers = numTopStringers;
16 Removed: stringerGap = upperStringerGap;
17 Removed: webThickness = t_upper;
18 Removed: tempStringers = topStringers;
19 Removed:
20 Removed: for i=1:(numStringers+1)
21 Removed: web(i).xStart = sparCaps(1).posX + stringerGap*(i-1);
22 Removed: web(i).xEnd = sparCaps(1).posX + stringerGap*(i);
23 Removed: web(i).thickness = webThickness;
24 Removed: web(i).zStart = get_z(web(i).xStart/chord,1)*chord;
25 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,1)*chord;
26 Removed: if i==1
27 Removed: web(i).dp_area = sparCaps(1).area;
28 Removed: web(i).dP_X = 0;
29 Removed: web(i).dP_Z = 0;
30 Removed: web(i).qPrime_X = 0;
31 Removed: web(i).qPrime_Z = 0;
32 Removed: else
33 Removed: web(i).dp_area = tempStringers(i-1).area;
34 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
35 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area); %just Vx
36 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area); %just Vz
37 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
38 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
39 Removed: end
40 Removed: tempInt = get_int(web(i).xStart/chord,web(i).xEnd/chord,1)*chord^2; %integral of airfoil function
41 Removed: triangle1 = abs( (web(i).xStart - sparCaps(1).posX)*web(i).zStart/2);
42 Removed: triangle2 = abs((web(i).xEnd - sparCaps(1).posX)*web(i).zEnd/2);
43 Removed: web(i).Area = tempInt + triangle1 - triangle2;
44 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,1)*chord;
45 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
46 Removed:
47 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
48 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
49 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
50 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
51 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
52 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
53 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
54 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
55 Removed: end
56 Removed: webTop = web;
57 Removed: web = [];
58 Removed:
59 Removed: %rear spar
60 Removed: i=1;
61 Removed: web(i).xStart = sparCaps(3).posX;
62 Removed: web(i).xEnd = sparCaps(4).posX;
63 Removed: web(i).thickness = t_rearSpar;
64 Removed: web(i).zStart = sparCaps(3).posZ;
65 Removed: web(i).zEnd = sparCaps(4).posZ;
66 Removed: web(i).dp_area = sparCaps(3).area;
67 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
68 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
69 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
70 Removed: web(i).qPrime_X = webTop(numTopStringers+1).qPrime_X - web(i).dP_X;
71 Removed: web(i).qPrime_Z = webTop(numTopStringers+1).qPrime_Z - web(i).dP_Z;
72 Removed:
73 Removed: web(i).Area = (sparCaps(3).posX-sparCaps(1).posX)*sparCaps(3).posZ/2 + ...
74 Removed: abs((sparCaps(3).posX-sparCaps(1).posX)*sparCaps(4).posZ/2);
75 Removed: web(i).ds = abs(sparCaps(3).posZ - sparCaps(4).posZ);
76 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
77 Removed:
78 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
79 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
80 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
81 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
82 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
83 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
84 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
85 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
86 Removed:
87 Removed: webRearSpar = web;
88 Removed: web = [];
89 Removed:
90 Removed:
91 Removed: %lower webs
92 Removed: numStringers = numBottomStringers;
93 Removed: stringerGap = lowerStringerGap;
94 Removed: webThickness = t_lower;
95 Removed: tempStringers = bottomStringers;
96 Removed:
97 Removed: for i=1:(numStringers+1)
98 Removed: web(i).xStart = sparCaps(4).posX - stringerGap*(i-1);
99 Removed: web(i).xEnd = sparCaps(4).posX - stringerGap*(i);
100 Removed: web(i).thickness = webThickness;
101 Removed: web(i).zStart = get_z(web(i).xStart/chord,0)*chord;
102 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,0)*chord;
103 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
104 Removed: if i==1
105 Removed: web(i).dp_area = sparCaps(4).area;
106 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
107 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
108 Removed: web(i).qPrime_X = webRearSpar.qPrime_X - web(i).dP_X;
109 Removed: web(i).qPrime_Z = webRearSpar.qPrime_Z - web(i).dP_Z;
110 Removed: else
111 Removed: web(i).dp_area = tempStringers(i-1).area;
112 Removed: web(i).dP_X = get_dp(dx,dz, Vx,0,Ix,Iz,Ixz,web(i).dp_area);
113 Removed: web(i).dP_Z = get_dp(dx,dz, 0,Vz,Ix,Iz,Ixz,web(i).dp_area);
114 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
115 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
116 Removed: end
117 Removed:
118 Removed: tempInt = get_int(web(i).xEnd/chord,web(i).xStart/chord,0)*chord^2; %integral of airfoil function
119 Removed: triangle2 = abs((web(i).xStart - sparCaps(1).posX)*web(i).zStart/2);
120 Removed: triangle1 = abs((web(i).xEnd - sparCaps(1).posX)*web(i).zEnd/2);
121 Removed: web(i).Area = tempInt + triangle1 - triangle2;
122 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,0)*chord;
123 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
124 Removed:
125 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
126 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
127 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
128 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
129 Removed: web(i).qp_dx_X = web(i).qPrime_X*(web(i).xEnd-web(i).xStart);
130 Removed: web(i).qp_dx_Z = web(i).qPrime_Z*(web(i).xEnd-web(i).xStart);
131 Removed: web(i).qp_dz_X = web(i).qPrime_X*(web(i).zEnd-web(i).zStart);
132 Removed: web(i).qp_dz_Z = web(i).qPrime_Z*(web(i).zEnd-web(i).zStart);
133 Removed:
134 Removed: %web(i).radCurv = ... Example: get_curve(web(i).xStart,web(i).xEnd,1)
135 Removed: end
136 Removed: webBottom = web;
137 Removed: web = [];
138 Removed:
139 Removed: %front Spar
140 Removed: i=1;
141 Removed: web(i).xStart = sparCaps(2).posX;
142 Removed: web(i).xEnd = sparCaps(1).posX;
143 Removed: web(i).thickness = t_frontSpar;
144 Removed: web(i).zStart = sparCaps(2).posZ;
145 Removed: web(i).zEnd = sparCaps(1).posZ;
146 Removed: web(i).dp_area = sparCaps(2).area;
147 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
148 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
149 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
150 Removed: web(i).qPrime_X = webBottom(numBottomStringers+1).qPrime_X - web(i).dP_X;
151 Removed: web(i).qPrime_Z = webBottom(numBottomStringers+1).qPrime_Z - web(i).dP_Z;
152 Removed: web(i).Area = 0;
153 Removed: web(i).ds = abs(sparCaps(2).posZ - sparCaps(1).posZ);
154 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
155 Removed:
156 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
157 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
158 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
159 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
160 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
161 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
162 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
163 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
164 Removed:
165 Removed: webFrontSpar = web;
166 Removed: web = [];
167 Removed:
168 Removed:
169 Removed:
170 Removed:
171 Removed: %% web cell 2
172 Removed:
173 Removed: %lower nose webs
174 Removed: numStringers = numNoseBottomStringers;
175 Removed: stringerGap = lowerNoseStringerGap;
176 Removed: webThickness = t_lower_front;
177 Removed: tempStringers = noseBottomStringers;
178 Removed:
179 Removed: for i=1:(numStringers+1)
180 Removed: web(i).xStart = sparCaps(2).posX - stringerGap*(i-1);
181 Removed: web(i).xEnd = sparCaps(2).posX - stringerGap*(i);
182 Removed: web(i).thickness = webThickness;
183 Removed: web(i).zStart = get_z(web(i).xStart/chord,0)*chord;
184 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,0)*chord;
185 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
186 Removed:
187 Removed: if i==1
188 Removed: web(i).dp_area = sparCaps(2).area;
189 Removed: web(i).dP_X = 0;
190 Removed: web(i).dP_Z = 0;
191 Removed: web(i).qPrime_X = 0;
192 Removed: web(i).qPrime_Z = 0;
193 Removed: else
194 Removed: web(i).dp_area = tempStringers(i-1).area;
195 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
196 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
197 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
198 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
199 Removed: end
200 Removed: tempInt = get_int(web(i).xEnd/chord,web(i).xStart/chord,0)*chord^2; %integral of airfoil function
201 Removed: triangle1 = abs((web(i).xStart - sparCaps(2).posX)*web(i).zStart/2);
202 Removed: triangle2 = abs((web(i).xEnd - sparCaps(2).posX)*web(i).zEnd/2);
203 Removed: web(i).Area = tempInt + triangle1 - triangle2;
204 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,0)*chord;
205 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
206 Removed:
207 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
208 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
209 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
210 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
211 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
212 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
213 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
214 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
215 Removed:
216 Removed: %web(i).radCurv = ... Example: get_curve(web(i).xStart,web(i).xEnd,1)
217 Removed: end
218 Removed: webLowerNose = web;
219 Removed: web = [];
220 Removed:
221 Removed: %upper nose webs
222 Removed: numStringers = numNoseTopStringers;
223 Removed: stringerGap = upperNoseStringerGap;
224 Removed: webThickness = t_upper_front;
225 Removed: tempStringers = noseTopStringers;
226 Removed:
227 Removed: for i=1:(numStringers+1)
228 Removed: web(i).xStart = stringerGap*(i-1);
229 Removed: web(i).xEnd = stringerGap*(i);
230 Removed: web(i).thickness = webThickness;
231 Removed: web(i).zStart = get_z(web(i).xStart/chord,1)*chord;
232 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,1)*chord;
233 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
234 Removed: if i==1
235 Removed: web(i).dp_area = 0;
236 Removed: web(i).dP_X = 0;
237 Removed: web(i).dP_Z = 0;
238 Removed: web(i).qPrime_X = webLowerNose(numNoseBottomStringers+1).qPrime_X - web(i).dP_X;
239 Removed: web(i).qPrime_Z = webLowerNose(numNoseBottomStringers+1).qPrime_Z - web(i).dP_Z;
240 Removed: else
241 Removed: web(i).dp_area = tempStringers(i-1).area;
242 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
243 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
244 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
245 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
246 Removed: end
247 Removed: tempInt = get_int(web(i).xStart/chord,web(i).xEnd/chord,1)*chord^2; %integral of airfoil function
248 Removed: triangle2 = abs((web(i).xStart - sparCaps(2).posX)*web(i).zStart/2);
249 Removed: triangle1 = abs((web(i).xEnd - sparCaps(2).posX)*web(i).zEnd/2);
250 Removed: web(i).Area = tempInt + triangle1 - triangle2;
251 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,1)*chord;
252 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
253 Removed:
254 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
255 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
256 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
257 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
258 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
259 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
260 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
261 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
262 Removed:
263 Removed: end
264 Removed: webUpperNose = web;
265 Removed: web = [];
266 Removed:
267 Removed:
268 Removed: %front Spar
269 Removed: i=1;
270 Removed: web(i).xStart = sparCaps(1).posX;
271 Removed: web(i).xEnd = sparCaps(2).posX;
272 Removed: web(i).thickness = t_frontSpar;
273 Removed: web(i).zStart = sparCaps(1).posZ;
274 Removed: web(i).zEnd = sparCaps(2).posZ;
275 Removed: web(i).dp_area = sparCaps(1).area;
276 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
277 Removed:
278 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
279 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
280 Removed: web(i).qPrime_X = webUpperNose(numNoseTopStringers+1).qPrime_X - web(i).dP_X;
281 Removed: web(i).qPrime_Z = webUpperNose(numNoseTopStringers+1).qPrime_Z - web(i).dP_Z;
282 Removed: web(i).Area = 0;
283 Removed: web(i).ds = abs(sparCaps(1).posZ - sparCaps(2).posZ);
284 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
285 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
286 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
287 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
288 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
289 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
290 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
291 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
292 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
293 Removed:
294 Removed: webFrontSparCell2 = web;
295 Removed: web = [];
296 Removed:
297 Removed:
298 Removed: %check that q'*dx sums up to Vx
299 Removed:
300 Removed: Fx = sum([webTop.qp_dx_X])+webRearSpar.qp_dx_X+ sum([webBottom.qp_dx_X])+webFrontSpar.qp_dx_X; %cell 1
301 Removed: Fx = Fx + sum([webLowerNose.qp_dx_X])+ sum([webUpperNose.qp_dx_X]); %cell 2
302 Removed: Fx
303 Removed: Fz = sum([webTop.qp_dz_X])+webRearSpar.qp_dz_X+ sum([webBottom.qp_dz_X])+webFrontSpar.qp_dz_X; %cell 1
304 Removed: Fz = Fz + sum([webLowerNose.qp_dz_X])+ sum([webUpperNose.qp_dz_X]); %cell 2
305 Removed: Fz
306 Removed:
307 Removed: %check that q'*dz sums up to Vz
308 Removed:
309 Removed:
310 Removed: Fx = sum([webTop.qp_dx_Z])+webRearSpar.qp_dx_Z+ sum([webBottom.qp_dx_Z])+webFrontSpar.qp_dx_Z; %cell 1
311 Removed: Fx = Fx + sum([webLowerNose.qp_dx_Z])+ sum([webUpperNose.qp_dx_Z]); %cell 2
312 Removed: Fx
313 Removed: Fz = sum([webTop.qp_dz_Z])+webRearSpar.qp_dz_Z+ sum([webBottom.qp_dz_Z])+webFrontSpar.qp_dz_Z; %cell 1
314 Removed: Fz = Fz + sum([webLowerNose.qp_dz_Z])+ sum([webUpperNose.qp_dz_Z]); %cell 2
315 Removed: Fz
316 Removed:
317 Removed: %%
318 Removed:
319 Removed: % sum up the ds/t and q*ds/t to solve 2 equations, 2 unknowns
320 Removed:
321 Removed: % [A]*[q1s q2s] = B
322 Removed:
323 Removed: A11 = sum([webTop.dS_over_t])+webRearSpar.dS_over_t+ sum([webBottom.dS_over_t])+webFrontSpar.dS_over_t;
324 Removed: A22 = sum([webLowerNose.dS_over_t])+ sum([webUpperNose.dS_over_t])+webFrontSparCell2.dS_over_t;
325 Removed: A12 = -webFrontSpar.dS_over_t;
326 Removed: A21 = -webFrontSparCell2.dS_over_t;
327 Removed:
328 Removed: B1_X = sum([webTop.q_dS_over_t_X])+webRearSpar.q_dS_over_t_X+ sum([webBottom.q_dS_over_t_X])+webFrontSpar.q_dS_over_t_X;
329 Removed: B2_X = sum([webLowerNose.q_dS_over_t_X])+ sum([webUpperNose.q_dS_over_t_X])+webFrontSparCell2.q_dS_over_t_X;
330 Removed: B1_Z = sum([webTop.q_dS_over_t_Z])+webRearSpar.q_dS_over_t_Z+ sum([webBottom.q_dS_over_t_Z])+webFrontSpar.q_dS_over_t_Z;
331 Removed: B2_Z = sum([webLowerNose.q_dS_over_t_Z])+ sum([webUpperNose.q_dS_over_t_Z])+webFrontSparCell2.q_dS_over_t_Z;
332 Removed:
333 Removed: Amat = [A11 A12; A21 A22];
334 Removed: Bmat_X = -[B1_X;B2_X];
335 Removed: Bmat_Z = -[B1_Z;B2_Z];
336 Removed:
337 Removed: qs_X = inv(Amat)*Bmat_X;
338 Removed: qs_Z = inv(Amat)*Bmat_Z;
339 Removed:
340 Removed:
341 Removed:
342 Removed: sum_2_a_q_X = sum([webTop.two_A_qprime_X])+webRearSpar.two_A_qprime_X+ sum([webBottom.two_A_qprime_X]); %cell 1 qprimes
343 Removed: sum_2_a_q_X = sum_2_a_q_X + sum([webLowerNose.two_A_qprime_X])+ sum([webUpperNose.two_A_qprime_X]); %cell 2 qprimes
344 Removed: sum_2_a_q_X = sum_2_a_q_X + 2*qs_X(1)*(sum([webTop.Area])+webRearSpar.Area+ sum([webBottom.Area]));
345 Removed: sum_2_a_q_X = sum_2_a_q_X + 2*qs_X(2)*(sum([webLowerNose.Area])+ sum([webUpperNose.Area]));
346 Removed:
347 Removed: sum_2_a_q_Z = sum([webTop.two_A_qprime_Z])+webRearSpar.two_A_qprime_Z+ sum([webBottom.two_A_qprime_Z]); %cell 1 qprimes
348 Removed: sum_2_a_q_Z = sum_2_a_q_Z + sum([webLowerNose.two_A_qprime_Z])+ sum([webUpperNose.two_A_qprime_Z]); %cell 2 qprimes
349 Removed: sum_2_a_q_Z = sum_2_a_q_Z + 2*qs_Z(1)*(sum([webTop.Area])+webRearSpar.Area+ sum([webBottom.Area]));
350 Removed: sum_2_a_q_Z = sum_2_a_q_Z + 2*qs_Z(2)*(sum([webLowerNose.Area])+ sum([webUpperNose.Area]));
351 Removed:
352 Removed: %shear center
353 Removed: sc.posX = sum_2_a_q_Z / Vz + frontSpar*chord;
354 Removed: sc.posZ = - sum_2_a_q_X / Vx;
355 Removed:
356 Removed:
357 Removed: % now consider the torque representing shifting the load from the quarter
358 Removed: % chord to the SC (need to check signs on these moments)
359 Removed:
360 Removed: torque_Z = Vz*(sc.posX - 0.25*chord);
361 Removed: torque_X = -Vx*sc.posZ;
362 Removed:
363 Removed:
364 Removed: Area1 = sum([webTop.Area]) + webRearSpar.Area + sum([webBottom.Area]);
365 Removed: %check area
366 Removed: Area1_check = get_int(frontSpar,backSpar,1)*chord^2 + get_int(frontSpar,backSpar,0)*chord^2;
367 Removed:
368 Removed: Area2 = sum([webLowerNose.Area]) + sum([webUpperNose.Area]);
369 Removed: Area2_check = get_int(0,frontSpar,1)*chord^2 + get_int(0,frontSpar,0)*chord^2;
370 Removed:
371 Removed:
372 Removed: %for twist equation (see excel spreadsheet example)
373 Removed:
374 Removed: q1t_over_q2t = (A22/Area2 + webFrontSpar.dS_over_t/Area1)/(A11/Area1 + webFrontSpar.dS_over_t/Area2);
375 Removed:
376 Removed: q2t = torque_X/(2*Area1*q1t_over_q2t + 2*Area2);
377 Removed: q1t = q2t*q1t_over_q2t;
378 Removed: qt_X = [q1t;q2t];
379 Removed:
380 Removed: q2t = torque_Z/(2*Area1*q1t_over_q2t + 2*Area2);
381 Removed: q1t = q2t*q1t_over_q2t;
382 Removed: qt_Z = [q1t;q2t];
383 Removed:
384 Removed:
385 Removed:
386 Removed: % --- - add up all shear flows: qtot = (qPrime + qs) + qt
387 Removed:
388 Removed:
389 Removed:
390 Removed:
391 Removed: %--- insert force balance to check total shear flows ---
392 Removed:
393 Removed: % --- --
394 Removed:
395 Removed:
396 Removed: %end
397 Removed:
398 Removed: sc
399 Removed:
400 Removed:
401 Removed: %plotting airfoil cross-section
402 Removed:
403 Removed: xChord = 0:.01:1;
404 Removed: xChord = xChord*chord;
405 Removed: upperSurface = zeros(1,length(xChord));
406 Removed: lowerSurface = zeros(1,length(xChord));
407 Removed:
408 Removed: for i=1:length(xChord)
409 Removed: upperSurface(i) = get_z(xChord(i)/chord,1)*chord;
410 Removed: lowerSurface(i) = get_z(xChord(i)/chord,0)*chord;
411 Removed: end
412 Removed:
413 Removed: figure; hold on; axis equal; grid on;
414 Removed: %plot(xChord,z_camber,'-')
415 Removed: plot(xChord,upperSurface,'-k','linewidth',2)
416 Removed: plot(xChord,lowerSurface,'-k','linewidth',2)
417 Removed: plot([0 1],[0 0],'--k','linewidth',1)
418 Removed:
419 Removed:
420 Removed: for i = 1:length(webTop)
421 Removed: vecX = [frontSpar*chord webTop(i).xStart webTop(i).xEnd];
422 Removed: vecZ = [0 webTop(i).zStart webTop(i).zEnd];
423 Removed: fill(vecX,vecZ,[0.9 0.9 0.9])
424 Removed: end
425 Removed:
426 Removed: for i = 1:length(webBottom)
427 Removed: vecX = [frontSpar*chord webBottom(i).xStart webBottom(i).xEnd];
428 Removed: vecZ = [0 webBottom(i).zStart webBottom(i).zEnd];
429 Removed: fill(vecX,vecZ,[0.9 0.9 0.9])
430 Removed: end
431 Removed:
432 Removed: for i = 1:length(webUpperNose)
433 Removed: vecX = [frontSpar*chord webUpperNose(i).xStart webUpperNose(i).xEnd];
434 Removed: vecZ = [0 webUpperNose(i).zStart webUpperNose(i).zEnd];
435 Removed: fill(vecX,vecZ,[0.7 0.9 1.0])
436 Removed: end
437 Removed:
438 Removed: for i = 1:length(webLowerNose)
439 Removed: vecX = [frontSpar*chord webLowerNose(i).xStart webLowerNose(i).xEnd];
440 Removed: vecZ = [0 webLowerNose(i).zStart webLowerNose(i).zEnd];
441 Removed: fill(vecX,vecZ,[0.7 0.9 1.0])
442 Removed: end
443 Removed:
444 Removed: vecX = [frontSpar*chord sparCaps(3).posX sparCaps(4).posX];
445 Removed: vecZ = [0 sparCaps(3).posZ sparCaps(4).posZ];
446 Removed: fill(vecX,vecZ,[0.9 0.9 0.9])
447 Removed:
448 Removed:
449 Removed: sparCapSize = 18;
450 Removed: stringerSize = 18;
451 Removed: plot([sparCaps(1).posX sparCaps(2).posX],[sparCaps(1).posZ sparCaps(2).posZ],'-k','linewidth',2)
452 Removed: plot([sparCaps(3).posX sparCaps(4).posX],[sparCaps(3).posZ sparCaps(4).posZ],'-k','linewidth',2)
453 Removed: plot([sparCaps.posX],[sparCaps.posZ],'.b','markersize',sparCapSize)
454 Removed: plot([topStringers.posX],[topStringers.posZ],'.r','markersize',stringerSize)
455 Removed: plot([bottomStringers.posX],[bottomStringers.posZ],'.r','markersize',stringerSize)
456 Removed: plot([noseTopStringers.posX],[noseTopStringers.posZ],'.r','markersize',stringerSize)
457 Removed: plot([noseBottomStringers.posX],[noseBottomStringers.posZ],'.r','markersize',stringerSize)
458 Removed: plot(centroid.posX,centroid.posZ,'.k','markerSize',18)
459 Removed: plot(sc.posX,sc.posZ,'.g','markersize',18)
wing_scripts/stringersBeamExample.m
index cd3bcb6f..00000000 100644..000000
@@ -1,47 +0,0 @@
1 Removed: close all;
2 Removed: force = 8000; % lbs
3 Removed: stringer_A = 0.5; % in^2
4 Removed: thickness = 0.04; % in
5 Removed:
6 Removed: top_stringers_y = 6; % in
7 Removed: middle_stringers_y = 2; % in
8 Removed:
9 Removed: I = 2*stringer_A*top_stringers_y^2 + 2*stringer_A*middle_stringers_y^2;
10 Removed:
11 Removed: % solve for shear stress distribution. this calc ignores the thickness of
12 Removed: % the web between teh stringers (assumes bending taken by stringers)
13 Removed: % V / (I * t) * int(y*da)
14 Removed:
15 Removed: shear_top_web = force / (I*thickness) * top_stringers_y * stringer_A;
16 Removed: shear_middle_web = shear_top_web + (force / (I*thickness) * middle_stringers_y * stringer_A);
17 Removed:
18 Removed: figure; grid on; hold on;set(gcf,'color',[1 1 1]);
19 Removed:
20 Removed:
21 Removed: plot([shear_top_web shear_top_web],[middle_stringers_y top_stringers_y],'linewidth',2);
22 Removed: plot([shear_middle_web shear_middle_web],[-middle_stringers_y middle_stringers_y],'linewidth',2);
23 Removed: plot([shear_top_web shear_top_web],[-middle_stringers_y -top_stringers_y],'linewidth',2);
24 Removed:
25 Removed: plot([0 shear_top_web],[top_stringers_y top_stringers_y],'linewidth',2);
26 Removed: plot([0 shear_top_web],[-top_stringers_y -top_stringers_y],'linewidth',2);
27 Removed: plot([shear_middle_web shear_top_web],[middle_stringers_y middle_stringers_y],'linewidth',2);
28 Removed: plot([shear_middle_web shear_top_web],[-middle_stringers_y -middle_stringers_y],'linewidth',2);
29 Removed: xlabel('shear stress (lb/in^2)','fontsize',16,'fontweight','bold');ylabel('Distance from Center (in)','fontsize',16,'fontweight','bold')
30 Removed: set(gca,'FontSize',16,'fontweight','bold');
31 Removed:
32 Removed: %Alternate approach.. compute change in bending stress at each stringer to
33 Removed: %find the change in shear load
34 Removed:
35 Removed: %at top stringer
36 Removed: d_sigma = force * top_stringers_y / I; %(lbs/in^2)
37 Removed: d_force_top = d_sigma * stringer_A;
38 Removed:
39 Removed: %at middle stringer..
40 Removed: d_sigma = force * middle_stringers_y / I; %(lbs/in^2)
41 Removed: d_force_middle = d_force_top + d_sigma*stringer_A;
42 Removed:
43 Removed: %check if load balances
44 Removed: check_load = 2*d_force_top*4 + d_force_middle*4;
45 Removed:
46 Removed:
47 Removed:
wing_scripts/wingAnalysis_190422.m
index a7d65e20..00000000 100644..000000
@@ -1,579 +0,0 @@
1 Removed: %wing shear flow
2 Removed: clear all;
3 Removed: close all;
4 Removed:
5 Removed:
6 Removed:
7 Removed:
8 Removed: Vx = 1; Vz = 1; My = 1; %test loads will be applied individually
9 Removed:
10 Removed: %define a few
11 Removed: numTopStringers = 6;
12 Removed: numBottomStringers = 8;
13 Removed: numNoseTopStringers = 4;
14 Removed: numNoseBottomStringers = 4;
15 Removed:
16 Removed: t_upper = 0.02/12;
17 Removed: t_lower = 0.02/12;
18 Removed: t_upper_front = 0.02/12;
19 Removed: t_lower_front = 0.02/12;
20 Removed: t_frontSpar = 0.04/12;
21 Removed: t_rearSpar = 0.04/12;
22 Removed:
23 Removed: frontSpar = 0.2;
24 Removed: backSpar = 0.7;
25 Removed: chord = 5;
26 Removed:
27 Removed: sparCaps(1).posX = frontSpar*chord;
28 Removed: sparCaps(2).posX = frontSpar*chord;
29 Removed: sparCaps(3).posX = backSpar*chord;
30 Removed: sparCaps(4).posX = backSpar*chord;
31 Removed:
32 Removed: sparCaps(1).posZ = get_z(frontSpar,1)*chord;
33 Removed: sparCaps(2).posZ = get_z(frontSpar,0)*chord;
34 Removed: sparCaps(3).posZ = get_z(backSpar,1)*chord;
35 Removed: sparCaps(4).posZ = get_z(backSpar,0)*chord;
36 Removed:
37 Removed: sparCaps(1).area = .1;
38 Removed: sparCaps(2).area = .1;
39 Removed: sparCaps(3).area = .1;
40 Removed: sparCaps(4).area = .1;
41 Removed:
42 Removed: upperStringerGap = (sparCaps(3).posX - sparCaps(1).posX)/(numTopStringers + 1);
43 Removed: lowerStringerGap = (sparCaps(3).posX - sparCaps(1).posX)/(numBottomStringers + 1);
44 Removed: upperNoseStringerGap = (sparCaps(1).posX - 0)/(numNoseTopStringers + 1);
45 Removed: lowerNoseStringerGap = (sparCaps(1).posX - 0)/(numNoseBottomStringers + 1);
46 Removed:
47 Removed:
48 Removed: %set stringers spaced evenly along X axis betwen Spars
49 Removed: %top Stringers
50 Removed: for i=1:numTopStringers
51 Removed: topStringers(i).posX = sparCaps(1).posX + upperStringerGap*i;
52 Removed: topStringers(i).posZ = get_z(topStringers(i).posX/chord,1)*chord;
53 Removed: topStringers(i).area = .1;
54 Removed: end
55 Removed:
56 Removed: %bottom Stringers
57 Removed: for i=1:numBottomStringers
58 Removed: bottomStringers(i).posX = sparCaps(4).posX - lowerStringerGap*i;
59 Removed: bottomStringers(i).posZ = get_z(bottomStringers(i).posX/chord,0)*chord;
60 Removed: bottomStringers(i).area = .1;
61 Removed:
62 Removed: end
63 Removed:
64 Removed: %nose bottom Stringers
65 Removed: for i=1:numNoseBottomStringers
66 Removed: noseBottomStringers(i).posX = sparCaps(2).posX - lowerNoseStringerGap*i;
67 Removed: noseBottomStringers(i).posZ = get_z(noseBottomStringers(i).posX/chord,0)*chord;
68 Removed: noseBottomStringers(i).area = .1;
69 Removed: end
70 Removed:
71 Removed: %nose top Stringers
72 Removed: for i=1:numNoseTopStringers
73 Removed: noseTopStringers(i).posX = upperNoseStringerGap*i;
74 Removed: noseTopStringers(i).posZ = get_z(noseTopStringers(i).posX/chord,1)*chord;
75 Removed: noseTopStringers(i).area = .1;
76 Removed: end
77 Removed:
78 Removed:
79 Removed: centroid.posX = sum([sparCaps.posX].*[sparCaps.area]) + ...
80 Removed: sum([topStringers.posX].*[topStringers.area]) + ...
81 Removed: sum([bottomStringers.posX].*[bottomStringers.area]) + ...
82 Removed: sum([noseTopStringers.posX].*[noseTopStringers.area]) + ...
83 Removed: sum([noseBottomStringers.posX].*[noseBottomStringers.area]);
84 Removed:
85 Removed: centroid.posX = centroid.posX / ( sum([sparCaps.area]) + sum([topStringers.area]) + ...
86 Removed: sum([bottomStringers.area]) + sum([noseTopStringers.area]) + sum([noseBottomStringers.area]));
87 Removed:
88 Removed: centroid.posZ = sum([sparCaps.posZ].*[sparCaps.area]) + ...
89 Removed: sum([topStringers.posZ].*[topStringers.area]) + ...
90 Removed: sum([bottomStringers.posZ].*[bottomStringers.area]) + ...
91 Removed: sum([noseTopStringers.posZ].*[noseTopStringers.area]) + ...
92 Removed: sum([noseBottomStringers.posZ].*[noseBottomStringers.area]);
93 Removed:
94 Removed: centroid.posZ = centroid.posZ / ( sum([sparCaps.area]) + sum([topStringers.area]) + ...
95 Removed: sum([bottomStringers.area]) + sum([noseTopStringers.area]) + sum([noseBottomStringers.area]));
96 Removed:
97 Removed: %summing contributions for inertia terms
98 Removed: Ix = 0; Iz = 0; Ixz = 0;
99 Removed:
100 Removed: for i=1:4 %spar caps
101 Removed: Ix = Ix + sparCaps(i).area*(sparCaps(i).posZ-centroid.posZ)^2;
102 Removed: Iz = Iz + sparCaps(i).area*(sparCaps(i).posX-centroid.posX)^2;
103 Removed: Ixz = Ixz + sparCaps(i).area*(sparCaps(i).posX-centroid.posX)*(sparCaps(i).posZ-centroid.posZ);
104 Removed: end
105 Removed:
106 Removed:
107 Removed: for i=1:numTopStringers %top stringers
108 Removed: Ix = Ix + topStringers(i).area*(topStringers(i).posZ-centroid.posZ)^2;
109 Removed: Iz = Iz + topStringers(i).area*(topStringers(i).posX-centroid.posX)^2;
110 Removed: Ixz = Ixz + topStringers(i).area*(topStringers(i).posX-centroid.posX)*(topStringers(i).posZ-centroid.posZ);
111 Removed: end
112 Removed: for i=1:numBottomStringers %bottom stringers
113 Removed: Ix = Ix + bottomStringers(i).area*(bottomStringers(i).posZ-centroid.posZ)^2;
114 Removed: Iz = Iz + bottomStringers(i).area*(bottomStringers(i).posX-centroid.posX)^2;
115 Removed: Ixz = Ixz + bottomStringers(i).area*(bottomStringers(i).posX-centroid.posX)*(bottomStringers(i).posZ-centroid.posZ);
116 Removed: end
117 Removed: for i=1:numNoseTopStringers %nose top stringers
118 Removed: Ix = Ix + noseTopStringers(i).area*(noseTopStringers(i).posZ-centroid.posZ)^2;
119 Removed: Iz = Iz + noseTopStringers(i).area*(noseTopStringers(i).posX-centroid.posX)^2;
120 Removed: Ixz = Ixz + noseTopStringers(i).area*(noseTopStringers(i).posX-centroid.posX)*(noseTopStringers(i).posZ-centroid.posZ);
121 Removed: end
122 Removed: for i=1:numNoseBottomStringers %nose bottom stringers
123 Removed: Ix = Ix + noseBottomStringers(i).area*(noseBottomStringers(i).posZ-centroid.posZ)^2;
124 Removed: Iz = Iz + noseBottomStringers(i).area*(noseBottomStringers(i).posX-centroid.posX)^2;
125 Removed: Ixz = Ixz + noseBottomStringers(i).area*(noseBottomStringers(i).posX-centroid.posX)*(noseBottomStringers(i).posZ-centroid.posZ);
126 Removed: end
127 Removed:
128 Removed: %Ixz = -Ixz;
129 Removed:
130 Removed: %define webs
131 Removed:
132 Removed: %% web cell 1
133 Removed:
134 Removed: %upper webs
135 Removed: numStringers = numTopStringers;
136 Removed: stringerGap = upperStringerGap;
137 Removed: webThickness = t_upper;
138 Removed: tempStringers = topStringers;
139 Removed:
140 Removed: for i=1:(numStringers+1)
141 Removed: web(i).xStart = sparCaps(1).posX + stringerGap*(i-1);
142 Removed: web(i).xEnd = sparCaps(1).posX + stringerGap*(i);
143 Removed: web(i).thickness = webThickness;
144 Removed: web(i).zStart = get_z(web(i).xStart/chord,1)*chord;
145 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,1)*chord;
146 Removed: if i==1
147 Removed: web(i).dp_area = sparCaps(1).area;
148 Removed: web(i).dP_X = 0;
149 Removed: web(i).dP_Z = 0;
150 Removed: web(i).qPrime_X = 0;
151 Removed: web(i).qPrime_Z = 0;
152 Removed: else
153 Removed: web(i).dp_area = tempStringers(i-1).area;
154 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
155 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area); %just Vx
156 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area); %just Vz
157 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
158 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
159 Removed: end
160 Removed: tempInt = get_int(web(i).xStart/chord,web(i).xEnd/chord,1)*chord^2; %integral of airfoil function
161 Removed: triangle1 = abs( (web(i).xStart - sparCaps(1).posX)*web(i).zStart/2);
162 Removed: triangle2 = abs((web(i).xEnd - sparCaps(1).posX)*web(i).zEnd/2);
163 Removed: web(i).Area = tempInt + triangle1 - triangle2;
164 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,1)*chord;
165 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
166 Removed:
167 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
168 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
169 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
170 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
171 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
172 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
173 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
174 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
175 Removed: end
176 Removed: webTop = web;
177 Removed: web = [];
178 Removed:
179 Removed: %rear spar
180 Removed: i=1;
181 Removed: web(i).xStart = sparCaps(3).posX;
182 Removed: web(i).xEnd = sparCaps(4).posX;
183 Removed: web(i).thickness = t_rearSpar;
184 Removed: web(i).zStart = sparCaps(3).posZ;
185 Removed: web(i).zEnd = sparCaps(4).posZ;
186 Removed: web(i).dp_area = sparCaps(3).area;
187 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
188 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
189 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
190 Removed: web(i).qPrime_X = webTop(numTopStringers+1).qPrime_X - web(i).dP_X;
191 Removed: web(i).qPrime_Z = webTop(numTopStringers+1).qPrime_Z - web(i).dP_Z;
192 Removed:
193 Removed: web(i).Area = (sparCaps(3).posX-sparCaps(1).posX)*sparCaps(3).posZ/2 + ...
194 Removed: abs((sparCaps(3).posX-sparCaps(1).posX)*sparCaps(4).posZ/2);
195 Removed: web(i).ds = abs(sparCaps(3).posZ - sparCaps(4).posZ);
196 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
197 Removed:
198 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
199 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
200 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
201 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
202 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
203 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
204 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
205 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
206 Removed:
207 Removed: webRearSpar = web;
208 Removed: web = [];
209 Removed:
210 Removed:
211 Removed: %lower webs
212 Removed: numStringers = numBottomStringers;
213 Removed: stringerGap = lowerStringerGap;
214 Removed: webThickness = t_lower;
215 Removed: tempStringers = bottomStringers;
216 Removed:
217 Removed: for i=1:(numStringers+1)
218 Removed: web(i).xStart = sparCaps(4).posX - stringerGap*(i-1);
219 Removed: web(i).xEnd = sparCaps(4).posX - stringerGap*(i);
220 Removed: web(i).thickness = webThickness;
221 Removed: web(i).zStart = get_z(web(i).xStart/chord,0)*chord;
222 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,0)*chord;
223 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
224 Removed: if i==1
225 Removed: web(i).dp_area = sparCaps(4).area;
226 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
227 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
228 Removed: web(i).qPrime_X = webRearSpar.qPrime_X - web(i).dP_X;
229 Removed: web(i).qPrime_Z = webRearSpar.qPrime_Z - web(i).dP_Z;
230 Removed: else
231 Removed: web(i).dp_area = tempStringers(i-1).area;
232 Removed: web(i).dP_X = get_dp(dx,dz, Vx,0,Ix,Iz,Ixz,web(i).dp_area);
233 Removed: web(i).dP_Z = get_dp(dx,dz, 0,Vz,Ix,Iz,Ixz,web(i).dp_area);
234 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
235 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
236 Removed: end
237 Removed:
238 Removed: tempInt = get_int(web(i).xEnd/chord,web(i).xStart/chord,0)*chord^2; %integral of airfoil function
239 Removed: triangle2 = abs((web(i).xStart - sparCaps(1).posX)*web(i).zStart/2);
240 Removed: triangle1 = abs((web(i).xEnd - sparCaps(1).posX)*web(i).zEnd/2);
241 Removed: web(i).Area = tempInt + triangle1 - triangle2;
242 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,0)*chord;
243 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
244 Removed:
245 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
246 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
247 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
248 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
249 Removed: web(i).qp_dx_X = web(i).qPrime_X*(web(i).xEnd-web(i).xStart);
250 Removed: web(i).qp_dx_Z = web(i).qPrime_Z*(web(i).xEnd-web(i).xStart);
251 Removed: web(i).qp_dz_X = web(i).qPrime_X*(web(i).zEnd-web(i).zStart);
252 Removed: web(i).qp_dz_Z = web(i).qPrime_Z*(web(i).zEnd-web(i).zStart);
253 Removed:
254 Removed: %web(i).radCurv = ... Example: get_curve(web(i).xStart,web(i).xEnd,1)
255 Removed: end
256 Removed: webBottom = web;
257 Removed: web = [];
258 Removed:
259 Removed: %front Spar
260 Removed: i=1;
261 Removed: web(i).xStart = sparCaps(2).posX;
262 Removed: web(i).xEnd = sparCaps(1).posX;
263 Removed: web(i).thickness = t_frontSpar;
264 Removed: web(i).zStart = sparCaps(2).posZ;
265 Removed: web(i).zEnd = sparCaps(1).posZ;
266 Removed: web(i).dp_area = sparCaps(2).area;
267 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
268 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
269 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
270 Removed: web(i).qPrime_X = webBottom(numBottomStringers+1).qPrime_X - web(i).dP_X;
271 Removed: web(i).qPrime_Z = webBottom(numBottomStringers+1).qPrime_Z - web(i).dP_Z;
272 Removed: web(i).Area = 0;
273 Removed: web(i).ds = abs(sparCaps(2).posZ - sparCaps(1).posZ);
274 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
275 Removed:
276 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
277 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
278 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
279 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
280 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
281 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
282 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
283 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
284 Removed:
285 Removed: webFrontSpar = web;
286 Removed: web = [];
287 Removed:
288 Removed:
289 Removed:
290 Removed:
291 Removed: %% web cell 2
292 Removed:
293 Removed: %lower nose webs
294 Removed: numStringers = numNoseBottomStringers;
295 Removed: stringerGap = lowerNoseStringerGap;
296 Removed: webThickness = t_lower_front;
297 Removed: tempStringers = noseBottomStringers;
298 Removed:
299 Removed: for i=1:(numStringers+1)
300 Removed: web(i).xStart = sparCaps(2).posX - stringerGap*(i-1);
301 Removed: web(i).xEnd = sparCaps(2).posX - stringerGap*(i);
302 Removed: web(i).thickness = webThickness;
303 Removed: web(i).zStart = get_z(web(i).xStart/chord,0)*chord;
304 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,0)*chord;
305 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
306 Removed:
307 Removed: if i==1
308 Removed: web(i).dp_area = sparCaps(2).area;
309 Removed: web(i).dP_X = 0;
310 Removed: web(i).dP_Z = 0;
311 Removed: web(i).qPrime_X = 0;
312 Removed: web(i).qPrime_Z = 0;
313 Removed: else
314 Removed: web(i).dp_area = tempStringers(i-1).area;
315 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
316 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
317 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
318 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
319 Removed: end
320 Removed: tempInt = get_int(web(i).xEnd/chord,web(i).xStart/chord,0)*chord^2; %integral of airfoil function
321 Removed: triangle1 = abs((web(i).xStart - sparCaps(2).posX)*web(i).zStart/2);
322 Removed: triangle2 = abs((web(i).xEnd - sparCaps(2).posX)*web(i).zEnd/2);
323 Removed: web(i).Area = tempInt + triangle1 - triangle2;
324 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,0)*chord;
325 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
326 Removed:
327 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
328 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
329 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
330 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
331 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
332 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
333 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
334 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
335 Removed:
336 Removed: %web(i).radCurv = ... Example: get_curve(web(i).xStart,web(i).xEnd,1)
337 Removed: end
338 Removed: webLowerNose = web;
339 Removed: web = [];
340 Removed:
341 Removed: %upper nose webs
342 Removed: numStringers = numNoseTopStringers;
343 Removed: stringerGap = upperNoseStringerGap;
344 Removed: webThickness = t_upper_front;
345 Removed: tempStringers = noseTopStringers;
346 Removed:
347 Removed: for i=1:(numStringers+1)
348 Removed: web(i).xStart = stringerGap*(i-1);
349 Removed: web(i).xEnd = stringerGap*(i);
350 Removed: web(i).thickness = webThickness;
351 Removed: web(i).zStart = get_z(web(i).xStart/chord,1)*chord;
352 Removed: web(i).zEnd = get_z(web(i).xEnd/chord,1)*chord;
353 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
354 Removed: if i==1
355 Removed: web(i).dp_area = 0;
356 Removed: web(i).dP_X = 0;
357 Removed: web(i).dP_Z = 0;
358 Removed: web(i).qPrime_X = webLowerNose(numNoseBottomStringers+1).qPrime_X - web(i).dP_X;
359 Removed: web(i).qPrime_Z = webLowerNose(numNoseBottomStringers+1).qPrime_Z - web(i).dP_Z;
360 Removed: else
361 Removed: web(i).dp_area = tempStringers(i-1).area;
362 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
363 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
364 Removed: web(i).qPrime_X = web(i-1).qPrime_X - web(i).dP_X;
365 Removed: web(i).qPrime_Z = web(i-1).qPrime_Z - web(i).dP_Z;
366 Removed: end
367 Removed: tempInt = get_int(web(i).xStart/chord,web(i).xEnd/chord,1)*chord^2; %integral of airfoil function
368 Removed: triangle2 = abs((web(i).xStart - sparCaps(2).posX)*web(i).zStart/2);
369 Removed: triangle1 = abs((web(i).xEnd - sparCaps(2).posX)*web(i).zEnd/2);
370 Removed: web(i).Area = tempInt + triangle1 - triangle2;
371 Removed: web(i).ds = get_ds(web(i).xStart/chord,web(i).xEnd/chord,1)*chord;
372 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
373 Removed:
374 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
375 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
376 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
377 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
378 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
379 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
380 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
381 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
382 Removed:
383 Removed: end
384 Removed: webUpperNose = web;
385 Removed: web = [];
386 Removed:
387 Removed:
388 Removed: %front Spar
389 Removed: i=1;
390 Removed: web(i).xStart = sparCaps(1).posX;
391 Removed: web(i).xEnd = sparCaps(2).posX;
392 Removed: web(i).thickness = t_frontSpar;
393 Removed: web(i).zStart = sparCaps(1).posZ;
394 Removed: web(i).zEnd = sparCaps(2).posZ;
395 Removed: web(i).dp_area = sparCaps(1).area;
396 Removed: dx = web(i).xStart-centroid.posX; dz = web(i).zStart-centroid.posZ;
397 Removed:
398 Removed: web(i).dP_X = get_dp(dx,dz,Vx,0,Ix,Iz,Ixz,web(i).dp_area);
399 Removed: web(i).dP_Z = get_dp(dx,dz,0,Vz,Ix,Iz,Ixz,web(i).dp_area);
400 Removed: web(i).qPrime_X = webUpperNose(numNoseTopStringers+1).qPrime_X - web(i).dP_X;
401 Removed: web(i).qPrime_Z = webUpperNose(numNoseTopStringers+1).qPrime_Z - web(i).dP_Z;
402 Removed: web(i).Area = 0;
403 Removed: web(i).ds = abs(sparCaps(1).posZ - sparCaps(2).posZ);
404 Removed: web(i).dS_over_t = web(i).ds / web(i).thickness;
405 Removed: web(i).q_dS_over_t_X = web(i).qPrime_X * web(i).dS_over_t;
406 Removed: web(i).q_dS_over_t_Z = web(i).qPrime_Z * web(i).dS_over_t;
407 Removed: web(i).two_A_qprime_X = 2*web(i).Area*web(i).qPrime_X;
408 Removed: web(i).two_A_qprime_Z = 2*web(i).Area*web(i).qPrime_Z;
409 Removed: web(i).qp_dx_X = web(i).qPrime_X *(web(i).xEnd-web(i).xStart);
410 Removed: web(i).qp_dx_Z = web(i).qPrime_Z *(web(i).xEnd-web(i).xStart);
411 Removed: web(i).qp_dz_X = web(i).qPrime_X *(web(i).zEnd-web(i).zStart);
412 Removed: web(i).qp_dz_Z = web(i).qPrime_Z *(web(i).zEnd-web(i).zStart);
413 Removed:
414 Removed: webFrontSparCell2 = web;
415 Removed: web = [];
416 Removed:
417 Removed:
418 Removed: %check that q'*dx sums up to Vx
419 Removed:
420 Removed: Fx = sum([webTop.qp_dx_X])+webRearSpar.qp_dx_X+ sum([webBottom.qp_dx_X])+webFrontSpar.qp_dx_X; %cell 1
421 Removed: Fx = Fx + sum([webLowerNose.qp_dx_X])+ sum([webUpperNose.qp_dx_X]); %cell 2
422 Removed: Fx
423 Removed: Fz = sum([webTop.qp_dz_X])+webRearSpar.qp_dz_X+ sum([webBottom.qp_dz_X])+webFrontSpar.qp_dz_X; %cell 1
424 Removed: Fz = Fz + sum([webLowerNose.qp_dz_X])+ sum([webUpperNose.qp_dz_X]); %cell 2
425 Removed: Fz
426 Removed:
427 Removed: %check that q'*dz sums up to Vz
428 Removed:
429 Removed:
430 Removed: Fx = sum([webTop.qp_dx_Z])+webRearSpar.qp_dx_Z+ sum([webBottom.qp_dx_Z])+webFrontSpar.qp_dx_Z; %cell 1
431 Removed: Fx = Fx + sum([webLowerNose.qp_dx_Z])+ sum([webUpperNose.qp_dx_Z]); %cell 2
432 Removed: Fx
433 Removed: Fz = sum([webTop.qp_dz_Z])+webRearSpar.qp_dz_Z+ sum([webBottom.qp_dz_Z])+webFrontSpar.qp_dz_Z; %cell 1
434 Removed: Fz = Fz + sum([webLowerNose.qp_dz_Z])+ sum([webUpperNose.qp_dz_Z]); %cell 2
435 Removed: Fz
436 Removed:
437 Removed: %%
438 Removed:
439 Removed: % sum up the ds/t and q*ds/t to solve 2 equations, 2 unknowns
440 Removed:
441 Removed: % [A]*[q1s q2s] = B
442 Removed:
443 Removed: A11 = sum([webTop.dS_over_t])+webRearSpar.dS_over_t+ sum([webBottom.dS_over_t])+webFrontSpar.dS_over_t;
444 Removed: A22 = sum([webLowerNose.dS_over_t])+ sum([webUpperNose.dS_over_t])+webFrontSparCell2.dS_over_t;
445 Removed: A12 = -webFrontSpar.dS_over_t;
446 Removed: A21 = -webFrontSparCell2.dS_over_t;
447 Removed:
448 Removed: B1_X = sum([webTop.q_dS_over_t_X])+webRearSpar.q_dS_over_t_X+ sum([webBottom.q_dS_over_t_X])+webFrontSpar.q_dS_over_t_X;
449 Removed: B2_X = sum([webLowerNose.q_dS_over_t_X])+ sum([webUpperNose.q_dS_over_t_X])+webFrontSparCell2.q_dS_over_t_X;
450 Removed: B1_Z = sum([webTop.q_dS_over_t_Z])+webRearSpar.q_dS_over_t_Z+ sum([webBottom.q_dS_over_t_Z])+webFrontSpar.q_dS_over_t_Z;
451 Removed: B2_Z = sum([webLowerNose.q_dS_over_t_Z])+ sum([webUpperNose.q_dS_over_t_Z])+webFrontSparCell2.q_dS_over_t_Z;
452 Removed:
453 Removed: Amat = [A11 A12; A21 A22];
454 Removed: Bmat_X = -[B1_X;B2_X];
455 Removed: Bmat_Z = -[B1_Z;B2_Z];
456 Removed:
457 Removed: qs_X = inv(Amat)*Bmat_X;
458 Removed: qs_Z = inv(Amat)*Bmat_Z;
459 Removed:
460 Removed:
461 Removed:
462 Removed: sum_2_a_q_X = sum([webTop.two_A_qprime_X])+webRearSpar.two_A_qprime_X+ sum([webBottom.two_A_qprime_X]); %cell 1 qprimes
463 Removed: sum_2_a_q_X = sum_2_a_q_X + sum([webLowerNose.two_A_qprime_X])+ sum([webUpperNose.two_A_qprime_X]); %cell 2 qprimes
464 Removed: sum_2_a_q_X = sum_2_a_q_X + 2*qs_X(1)*(sum([webTop.Area])+webRearSpar.Area+ sum([webBottom.Area]));
465 Removed: sum_2_a_q_X = sum_2_a_q_X + 2*qs_X(2)*(sum([webLowerNose.Area])+ sum([webUpperNose.Area]));
466 Removed:
467 Removed: sum_2_a_q_Z = sum([webTop.two_A_qprime_Z])+webRearSpar.two_A_qprime_Z+ sum([webBottom.two_A_qprime_Z]); %cell 1 qprimes
468 Removed: sum_2_a_q_Z = sum_2_a_q_Z + sum([webLowerNose.two_A_qprime_Z])+ sum([webUpperNose.two_A_qprime_Z]); %cell 2 qprimes
469 Removed: sum_2_a_q_Z = sum_2_a_q_Z + 2*qs_Z(1)*(sum([webTop.Area])+webRearSpar.Area+ sum([webBottom.Area]));
470 Removed: sum_2_a_q_Z = sum_2_a_q_Z + 2*qs_Z(2)*(sum([webLowerNose.Area])+ sum([webUpperNose.Area]));
471 Removed:
472 Removed: %shear center
473 Removed: sc.posX = sum_2_a_q_Z / Vz + frontSpar*chord;
474 Removed: sc.posZ = - sum_2_a_q_X / Vx;
475 Removed:
476 Removed:
477 Removed: % now consider the torque representing shifting the load from the quarter
478 Removed: % chord to the SC (need to check signs on these moments)
479 Removed:
480 Removed: torque_Z = Vz*(sc.posX - 0.25*chord);
481 Removed: torque_X = -Vx*sc.posZ;
482 Removed:
483 Removed:
484 Removed: Area1 = sum([webTop.Area]) + webRearSpar.Area + sum([webBottom.Area]);
485 Removed: %check area
486 Removed: Area1_check = get_int(frontSpar,backSpar,1)*chord^2 + get_int(frontSpar,backSpar,0)*chord^2;
487 Removed:
488 Removed: Area2 = sum([webLowerNose.Area]) + sum([webUpperNose.Area]);
489 Removed: Area2_check = get_int(0,frontSpar,1)*chord^2 + get_int(0,frontSpar,0)*chord^2;
490 Removed:
491 Removed:
492 Removed: %for twist equation (see excel spreadsheet example)
493 Removed:
494 Removed: q1t_over_q2t = (A22/Area2 + webFrontSpar.dS_over_t/Area1)/(A11/Area1 + webFrontSpar.dS_over_t/Area2);
495 Removed:
496 Removed: q2t = torque_X/(2*Area1*q1t_over_q2t + 2*Area2);
497 Removed: q1t = q2t*q1t_over_q2t;
498 Removed: qt_X = [q1t;q2t];
499 Removed:
500 Removed: q2t = torque_Z/(2*Area1*q1t_over_q2t + 2*Area2);
501 Removed: q1t = q2t*q1t_over_q2t;
502 Removed: qt_Z = [q1t;q2t];
503 Removed:
504 Removed:
505 Removed:
506 Removed: % --- - add up all shear flows: qtot = (qPrime + qs) + qt
507 Removed:
508 Removed:
509 Removed:
510 Removed:
511 Removed: %--- insert force balance to check total shear flows ---
512 Removed:
513 Removed: % --- --
514 Removed:
515 Removed:
516 Removed: %end
517 Removed:
518 Removed: sc
519 Removed:
520 Removed:
521 Removed: %plotting airfoil cross-section
522 Removed:
523 Removed: xChord = 0:.01:1;
524 Removed: xChord = xChord*chord;
525 Removed: upperSurface = zeros(1,length(xChord));
526 Removed: lowerSurface = zeros(1,length(xChord));
527 Removed:
528 Removed: for i=1:length(xChord)
529 Removed: upperSurface(i) = get_z(xChord(i)/chord,1)*chord;
530 Removed: lowerSurface(i) = get_z(xChord(i)/chord,0)*chord;
531 Removed: end
532 Removed:
533 Removed: figure; hold on; axis equal; grid on;
534 Removed: %plot(xChord,z_camber,'-')
535 Removed: plot(xChord,upperSurface,'-k','linewidth',2)
536 Removed: plot(xChord,lowerSurface,'-k','linewidth',2)
537 Removed: plot([0 1],[0 0],'--k','linewidth',1)
538 Removed:
539 Removed:
540 Removed: for i = 1:length(webTop)
541 Removed: vecX = [frontSpar*chord webTop(i).xStart webTop(i).xEnd];
542 Removed: vecZ = [0 webTop(i).zStart webTop(i).zEnd];
543 Removed: fill(vecX,vecZ,[0.9 0.9 0.9])
544 Removed: end
545 Removed:
546 Removed: for i = 1:length(webBottom)
547 Removed: vecX = [frontSpar*chord webBottom(i).xStart webBottom(i).xEnd];
548 Removed: vecZ = [0 webBottom(i).zStart webBottom(i).zEnd];
549 Removed: fill(vecX,vecZ,[0.9 0.9 0.9])
550 Removed: end
551 Removed:
552 Removed: for i = 1:length(webUpperNose)
553 Removed: vecX = [frontSpar*chord webUpperNose(i).xStart webUpperNose(i).xEnd];
554 Removed: vecZ = [0 webUpperNose(i).zStart webUpperNose(i).zEnd];
555 Removed: fill(vecX,vecZ,[0.7 0.9 1.0])
556 Removed: end
557 Removed:
558 Removed: for i = 1:length(webLowerNose)
559 Removed: vecX = [frontSpar*chord webLowerNose(i).xStart webLowerNose(i).xEnd];
560 Removed: vecZ = [0 webLowerNose(i).zStart webLowerNose(i).zEnd];
561 Removed: fill(vecX,vecZ,[0.7 0.9 1.0])
562 Removed: end
563 Removed:
564 Removed: vecX = [frontSpar*chord sparCaps(3).posX sparCaps(4).posX];
565 Removed: vecZ = [0 sparCaps(3).posZ sparCaps(4).posZ];
566 Removed: fill(vecX,vecZ,[0.9 0.9 0.9])
567 Removed:
568 Removed:
569 Removed: sparCapSize = 18;
570 Removed: stringerSize = 18;
571 Removed: plot([sparCaps(1).posX sparCaps(2).posX],[sparCaps(1).posZ sparCaps(2).posZ],'-k','linewidth',2)
572 Removed: plot([sparCaps(3).posX sparCaps(4).posX],[sparCaps(3).posZ sparCaps(4).posZ],'-k','linewidth',2)
573 Removed: plot([sparCaps.posX],[sparCaps.posZ],'.b','markersize',sparCapSize)
574 Removed: plot([topStringers.posX],[topStringers.posZ],'.r','markersize',stringerSize)
575 Removed: plot([bottomStringers.posX],[bottomStringers.posZ],'.r','markersize',stringerSize)
576 Removed: plot([noseTopStringers.posX],[noseTopStringers.posZ],'.r','markersize',stringerSize)
577 Removed: plot([noseBottomStringers.posX],[noseBottomStringers.posZ],'.r','markersize',stringerSize)
578 Removed: plot(centroid.posX,centroid.posZ,'.k','markerSize',18)
579 Removed: plot(sc.posX,sc.posZ,'.g','markersize',18)