Airfoil Box-spar Uniform#
Design concept#
Some sample designs#
Parameters#
Italics value in the “Input” column is the default.
General parameters#
Name |
Type |
Input |
Symbol |
Description |
---|---|---|---|---|
airfoil |
String |
Required |
Airfoil file name (including file extension). |
|
chord |
Float |
Optional (1) |
\(c\) |
Chord length. |
gms |
Float |
Required |
\(l^{gm}\) |
Global mesh size. |
fms |
Float |
Optional (10*gms) |
\(l^{fm}\) |
Filling component mesh size. |
mdb_name |
String |
Required |
Material database file name. |
|
elm_type |
String |
Optional (choose one from: linear, quadratic) |
Element type. |
Shape parameters#
All parameters in this section are in the non-dimensional scale (from 0 to 1).
Name |
Type |
Input |
Symbol |
Description |
---|---|---|---|---|
a2p1 |
Float |
Optional (0.8) |
\(a_2^{p_1}\) |
Horizontal location of the point \(p_1\). |
a2p2 |
Float |
Optional (a2p2) |
\(a_2^{p_2}\) |
Horizontal location of the point \(p_2\). |
a2p3 |
Float |
Optional (0.6) |
\(a_2^{p_3}\) |
Horizontal location of the point \(p_3\). |
a2p4 |
Float |
Optional (a2p3) |
\(a_2^{p_4}\) |
Horizontal location of the point \(p_4\). |
a2p5 |
Float |
Optional (0.98) |
\(a_2^{p_5}\) |
Horizontal location of the point \(p_5\). |
a2p6 |
Float |
Optional (a2p5) |
\(a_2^{p_6}\) |
Horizontal location of the point \(p_6\). |
a2p7 |
Float |
Optional (0.2) |
\(a_2^{p_7}\) |
Horizontal location of the point \(p_7\). |
a2p8 |
Float |
Optional (a2p7) |
\(a_2^{p_8}\) |
Horizontal location of the point \(p_8\). |
a2p9 |
Float |
Optional (0.1) |
\(a_2^{p_9}\) |
Horizontal location of the point \(p_9\). |
a2p10 |
Float |
Optional (a2p9) |
\(a_2^{p_{10}}\) |
Horizontal location of the point \(p_{10}\). |
a2nsm |
Float |
Optional (0.96) |
\(a_2^{nsm}\) |
Horizontal location of the center of the non-structural mass. |
a3nsm |
Float |
Optional (0) |
\(a_3^{nsm}\) |
Vertical location of the center of the non-structural mass. |
rnsm |
Float |
Optional (0.005) |
\(r^{nsm}\) |
Radius of the non-structural mass. |
kw1 |
Float |
Optional (0) |
\(k^{w_1}\) |
Curvature of the front spar web. |
kw2 |
Float |
Optional (0) |
\(k^{w_2}\) |
Curvature of the back spar web. |
Material and layup parameters#
Name |
Type |
Input |
Symbol |
Description |
---|---|---|---|---|
lam_spar_1 |
String |
Required |
\(l_1^m\) |
Lamina selection of layer 1 of the box spar layup |
lam_spar_2 |
String |
Optional (lam_spar_1) |
\(l_2^m\) |
Lamina selection of layer 2 of the box spar layup |
lam_spar_3 |
String |
Optional (lam_spar_1) |
\(l_3^m\) |
Lamina selection of layer 3 of the box spar layup |
lam_spar_4 |
String |
Optional (lam_spar_1) |
\(l_4^m\) |
Lamina selection of layer 4 of the box spar layup |
ang_spar_1 |
Float |
Optional (0) |
\(\theta_1^m\) |
Fiber angle of layer 1 of the box spar layup |
ang_spar_2 |
Float |
Optional (0) |
\(\theta_2^m\) |
Fiber angle of layer 2 of the box spar layup |
ang_spar_3 |
Float |
Optional (0) |
\(\theta_3^m\) |
Fiber angle of layer 3 of the box spar layup |
ang_spar_4 |
Float |
Optional (0) |
\(\theta_4^m\) |
Fiber angle of layer 4 of the box spar layup |
ply_spar_1 |
Integer |
Optional (1) |
\(n_1^m\) |
Number of plies of layer 1 of the box spar layup |
ply_spar_2 |
Integer |
Optional (1) |
\(n_2^m\) |
Number of plies of layer 2 of the box spar layup |
ply_spar_3 |
Integer |
Optional (1) |
\(n_3^m\) |
Number of plies of layer 3 of the box spar layup |
ply_spar_4 |
Integer |
Optional (1) |
\(n_4^m\) |
Number of plies of layer 4 of the box spar layup |
lam_skin |
String |
Required |
\(l^s\) |
Lamina selection of the skin layer |
ang_skin |
Float |
Optional (0) |
\(\theta^s\) |
Fiber angle of the skin layer |
ply_skin |
Integer |
Optional (1) |
\(n^s\) |
Number of plies of the skin layer |
lam_cap |
String |
Required |
\(l^c\) |
Lamina selection of the cap layer |
ang_cap |
Float |
Optional (0) |
\(\theta^c\) |
Fiber angle of the cap layer |
ply_cap |
Integer |
Optional (1) |
\(n^c\) |
Number of plies of the cap layer |
lam_front |
String |
Required |
\(l^f\) |
Lamina selection of the front layup |
ang_front |
Float |
Optional (0) |
\(\theta^f\) |
Fiber angle of the front layup |
ply_front |
Integer |
Optional (1) |
\(n^f\) |
Number of plies of the front layup |
lam_back |
String |
Required |
\(l^b\) |
Lamina selection of the back layup |
ang_back |
Float |
Optional (0) |
\(\theta^b\) |
Fiber angle of the back layup |
ply_back |
Integer |
Optional (1) |
\(n^b\) |
Number of plies of the back layup |
mat_nsm |
String |
Required |
\(m^{nsm}\) |
Material selection of the non-structural mass |
mat_fill_front |
String |
Required |
\(m^{ff}\) |
Material selection of the front filling |
mat_fill_back |
String |
Required |
\(m^{bf}\) |
Material selection of the back filling |
mat_fill_te |
String |
Required |
\(m^{tf}\) |
Material selection of the trailing filling |
Full template#
1<cross_section name="uh60a_section" format="1">
2 <include>
3 <material>{mdb_name}</material>
4 </include>
5 <analysis>
6 <model>1</model>
7 </analysis>
8 <general>
9 <scale>{chord=1}</scale>
10 <mesh_size>{gms=0.004}</mesh_size>
11 <element_type>{elm_type="linear"}</element_type>
12 </general>
13
14
15
16 <baselines>
17
18 <line name="ln_af" type="airfoil">
19 <points data="file" format="{airfoil_format=1}" direction="{airfoil_point_order=-1}" header="{airfoil_file_head=0}">{airfoil}</points>
20 <flip>{airfoil_flip=1}</flip>
21 <reverse>{aifoil_reverse_order=0}</reverse>
22 </line>
23
24 <point name="p1" on="ln_af" by="x2" which="top">{a2p1=0.8}</point>
25 <point name="p2" on="ln_af" by="x2" which="bottom">{a2p2=a2p1}</point>
26 <point name="p3" on="ln_af" by="x2" which="top">{a2p3=0.6}</point>
27 <point name="p4" on="ln_af" by="x2" which="bottom">{a2p4=a2p3}</point>
28
29 <point name="p5" on="ln_af" by="x2" which="top">{a2p5=0.98}</point>
30 <point name="p6" on="ln_af" by="x2" which="bottom">{a2p6=a2p5}</point>
31
32 <point name="p7" on="ln_af" by="x2" which="top">{a2p7=0.2}</point>
33 <point name="p8" on="ln_af" by="x2" which="bottom">{a2p8=a2p7}</point>
34
35 <point name="p9" on="ln_af" by="x2" which="top">{a2p9=0.1}</point>
36 <point name="p10" on="ln_af" by="x2" which="bottom">{a2p10=a2p9}</point>
37
38 <point name="pnsmc">{a2nsm=0.96} {a3nsm=0}</point>
39
40 <point name="pfle1">{a2fmsp1=a2nsm-rnsm-0.01} 0</point>
41 <point name="pfle2">{a2fmsp2=a2p1+0.01} 0</point>
42 <point name="pfte1">{a2fmsp3=a2p3-0.01} 0</point>
43 <point name="pfte2">{a2fmsp4=a2p9+0.01} 0</point>
44
45 <!-- Main spar -->
46 <line name="line_spar_top">
47 <points>p1:p3</points>
48 </line>
49 <line name="line_spar_bottom">
50 <points>p4:p2</points>
51 </line>
52 <line name="line_spar_web_front" type="arc">
53 <start>p2</start>
54 <end>p1</end>
55 <curvature>{kw1=0}</curvature>
56 <side>right</side>
57 <direction>ccw</direction>
58 </line>
59 <line name="line_spar_web_back" type="arc">
60 <start>p3</start>
61 <end>p4</end>
62 <curvature>{kw2=0}</curvature>
63 <side>right</side>
64 <direction>ccw</direction>
65 </line>
66
67 <line name="line_spar" method="join">
68 <line>line_spar_top</line>
69 <line>line_spar_bottom</line>
70 <line>line_spar_web_front</line>
71 <line>line_spar_web_back</line>
72 </line>
73
74 <!-- Front part and leading edge -->
75 <baseline name="bsl_le_top">
76 <points>p5:p1</points>
77 </baseline>
78 <baseline name="bsl_le">
79 <points>p6:p5</points>
80 </baseline>
81 <baseline name="bsl_le_bottom">
82 <points>p2:p6</points>
83 </baseline>
84
85 <!-- Back part and trailing edge -->
86 <baseline name="bsl_te_top">
87 <points>p3:p7</points>
88 </baseline>
89 <baseline name="bsl_te">
90 <points>p7:p8</points>
91 </baseline>
92 <baseline name="bsl_te_bottom">
93 <points>p8:p4</points>
94 </baseline>
95
96 <!-- Non-structural mass -->
97 <baseline name="bsl_nsm" type="circle">
98 <center>pnsmc</center>
99 <radius>{rnsm=0.005}</radius>
100 <discrete by="angle">9</discrete>
101 </baseline>
102
103 <!-- Filling part -->
104
105 <point name="ptfb" constraint="middle">p9 p10</point>
106 <point name="ptf">{a2ptf=a2p9/2} 0</point>
107 <line name="bsl_te_fill_bound">
108 <points>p10,ptfb,p9</points>
109 </line>
110 </baselines>
111
112
113
114 <layups>
115 <layup name="lyp_le_cap">
116 <layer lamina="{lam_cap}">{ang_cap=0}:{ply_cap=1}</layer>
117 </layup>
118 <layup name="lyp_skin">
119 <layer lamina="{lam_skin}">{ang_skin=0}:{ply_skin=1}</layer>
120 </layup>
121
122 <layup name="lyp_spar">
123 <layer lamina="{lam_spar_1}">{ang_spar_1=0}:{ply_spar_1=1}</layer>
124 <layer lamina="{lam_spar_2=lam_spar_1}">{ang_spar_2=0}:{ply_spar_2=1}</layer>
125 <layer lamina="{lam_spar_3=lam_spar_1}">{ang_spar_3=0}:{ply_spar_3=1}</layer>
126 <layer lamina="{lam_spar_4=lam_spar_1}">{ang_spar_4=0}:{ply_spar_4=1}</layer>
127 </layup>
128
129 <layup name="lyp_le">
130 <layer lamina="{lam_front}">{ang_front=0}:{ply_front=1}</layer>
131 </layup>
132
133 <layup name="lyp_te">
134 <layer lamina="{lam_back}">{ang_back=0}:{ply_back=1}</layer>
135 </layup>
136
137 </layups>
138
139
140
141 <component name="spar">
142 <segments>
143 <baseline>line_spar</baseline>
144 <layup>lyp_skin</layup>
145 <layup>lyp_spar</layup>
146 </segments>
147 </component>
148
149 <component name="le" depend="spar">
150 <segments>
151 <baseline>bsl_le</baseline>
152 <layup>lyp_le_cap</layup>
153 <layup>lyp_skin</layup>
154 <layup>lyp_le</layup>
155 </segments>
156 <segments>
157 <baseline>bsl_le_top</baseline>
158 <layup>lyp_skin</layup>
159 <layup>lyp_le</layup>
160 </segments>
161 <segments>
162 <baseline>bsl_le_bottom</baseline>
163 <layup>lyp_skin</layup>
164 <layup>lyp_le</layup>
165 </segments>
166 </component>
167
168 <component name="te" depend="spar">
169 <segments>
170 <baseline>bsl_te_top</baseline>
171 <layup>lyp_skin</layup>
172 <layup>lyp_te</layup>
173 </segments>
174 <segment>
175 <baseline>bsl_te</baseline>
176 <layup>lyp_skin</layup>
177 </segment>
178 <segments>
179 <baseline>bsl_te_bottom</baseline>
180 <layup>lyp_skin</layup>
181 <layup>lyp_te</layup>
182 </segments>
183 </component>
184
185 <component name="ns_mass" type="fill" depend="le">
186 <baseline>bsl_nsm</baseline>
187 <location>pnsmc</location>
188 <material>{mat_nsm}</material>
189 <mesh_size at="pnsmc">{fms=10*gms}</mesh_size>
190 </component>
191
192 <component name="fill_front" type="fill" depend="spar,le,ns_mass">
193 <location>pfle1</location>
194 <material>{mat_fill_front}</material>
195 <mesh_size at="pfle1,pfle2">{fms=10*gms}</mesh_size>
196 </component>
197
198 <component name="fill_back" type="fill" depend="spar,te">
199 <baseline fillside="right">bsl_te_fill_bound</baseline>
200 <material>{mat_fill_back}</material>
201 <mesh_size at="pfte1,pfte2">{fms=10*gms}</mesh_size>
202 </component>
203
204 <component name="fill_te" type="fill" depend="te,fill_back">
205 <location>ptf</location>
206 <material>{mat_fill_te}</material>
207 </component>
208
209
210</cross_section>