Airfoil Box-spar Uniform#

Design concept#

../_images/cs_temp_airfoil_gbox_uni-components.png

Figure 15 Components of the airfoil box-spar design topology.#

Some sample designs#

../_images/cs_temp_airfoil_gbox_uni-example_1.png

Figure 16 Box-spar with two straight spar webs.#

../_images/cs_temp_airfoil_gbox_uni-example_2.png

Figure 17 Box-spar with a curved front web and a straight back web.#

Parameters#

Italics value in the “Input” column is the default.

General parameters#

Table 28 General design 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).

../_images/cs_temp_airfoil_gbox_uni-shape_params.png

Figure 18 Shape parameters.#

Table 29 Shape design parameters#

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#

../_images/cs_temp_airfoil_gbox_uni-material_params.png

Figure 19 Material parameters.#

Table 30 Material design 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>