5 % Parametrization of a two-prism tower taken from
6 % C. Sultan, M. Corles and R. E. Skelton
7 % The pre-estressability problem of tensegrity structures: some
8 % analytical results, International journal of solids and structures
11 % We model a SVDB struture (section 4) which essentially has the same
12 % solutions as a SVD structure (section 3)
13 % We compute the constants that give a stable configuration and then
14 % leave some ranges around the equilibrium point to allow form motion.
15 % In
this way we are sure to have valid ranges
for the variables.
17 % The two driving parameters
21 % Structural parameters (taken from the matlab file)
22 b := 0.27 % Size of base/platform
23 l := 0.4 % Length of struts
24 P := PARAMETER(PRETENSION) % Pretension (taken from parameter file)
25 rs := 0.0025 % Radius to represent struts
26 rc := 0.00075 % Radius to represent cables
28 % small value (used to compare alpha with pi/3 = 60 deg)
31 % h is a zero-centered parametrization of the structure height
32 u := sin(delta)*cos(alpha+pi/6) % auxiliary
33 h := (abs(alpha-pi/3)<zero ? l*cos(delta)/2 :
34 cos(delta)*(l*u+sqrt(b^2/3-3*l^2*u^2)-b/sqrt(3))/(2*u))
36 % Length of the different strings
37 D := sqrt(h^2+b^2/3+l^2-2*l*b*sin(delta)*sin(alpha)/sqrt(3)-2*l*h*cos(delta))
38 V := sqrt(b^2+l^2-2*l*b*sin(delta)*sin(alpha+pi/6))
39 S := sqrt(h^2+b^2/3+l^2*sin(delta)^2-2*l*b*sin(delta)*cos(alpha-pi/6)/sqrt(3))
43 % Tension of the different strings
46 T_v_0 := (abs(alpha-pi/3)<zero ? T_d_0*V*(3*l*sin(delta)/(2*b)-1)/D :
47 T_d_0*V*((l*cos(delta)/h-1)*sin(alpha-pi/6)-cos(alpha))/(D*sqrt(3)*cos(alpha+pi/6)))
48 T_s_0 := (abs(alpha-pi/3)<zero ? T_d_0 :
49 T_d_0*S*(l*cos(delta)/h-1)/D)
51 T_b_0 := (abs(alpha-pi/3)<zero ? T_d_0*(2*b^2-9*l*b*sin(delta)+9*l^2*sin(delta)^2)/(6*D*b) :
52 T_d_0*(3*l^2*sin(delta)*cos(delta)
53 +6*b*h*cos(alpha-pi/3)
55 -2*sqrt(3)*b*l*cos(delta)*sin(alpha))/(6*D*sqrt(3)*h*cos(alpha+pi/6)))
57 % Compression of the struts (fixed an error from the paper!)
58 C_0 := (abs(alpha-pi/3)<zero ? T_d_0*(3*l^2*sin(delta)/(2*b)-l/2)/D :
59 T_d_0*(2*sqrt(3)*h*b*sin(delta)
60 -sqrt(3)*l*b*sin(2*delta)/2
61 +6*h^2*cos(delta)*sin(alpha-pi/3)
62 -6*l*h*(cos(delta)^2*sin(alpha-pi/3)+sin(alpha+pi/6)/sqrt(3))
63 +2*sqrt(3)*l^2*cos(delta)*cos(alpha)
64 +6*l^2*cos(delta)^3*sin(alpha-pi/3))/(6*D*h*sin(pi/3-alpha)))
66 %
Normalize the tension/compression (to remove the pre-tension)
67 n := sqrt(6*(T_d_0^2+T_v_0^2+T_s_0^2++T_b_0^2+C_0^2))
80 % Physical quantities used to define the stiffness of the strings
81 E := 14e10 % N/m^2 Young modulus
82 s := 2.5e9 % N/m^2 maximum tendon stress
83 g := 4 % safety margin
85 % The stiffness as defined int the paper
86 K_d_0 := (E*P*g/s)*T_d
87 K_v_0 := (E*P*g/s)*T_v
88 K_s_0 := (E*P*g/s)*T_s
90 % The rest lengths for the different cables
91 R_d := K_d_0*D/(T_d+K_d_0)
92 R_v := K_v_0*V/(T_v+K_v_0)
93 R_s := K_s_0*S/(T_s+K_s_0)
99 % The stiffness as in appears in our models
108 % Margin. Used to increase the force, length, rest-length
109 % from those in the initial configuration.
110 % By using a large margins we ensure that the motion of
111 % the structure is not hindered by theses limits, i.e.,
112 % these limits will neve be active but the minimum
113 % limit might be (cables must have at least 0 tension, etc).
116 % Factor used to determine the minimum cable length. This
117 % must be 0 or larger (we used 0.1 sometimes)
120 % range of compression forces supported by the struts
121 % For struts the rest lengt is set to 0 and the stiffnes
122 % is set to vary so that with a constant length, we can
123 % have different forces.
124 % If both the rest length and the stiffness are free we
125 % have an extra (useless) degree of freedom.
126 min_fs := -M*C % compression is negative!
129 % data for the cables on the base/platform: range of supported tensions
130 % These cables have constant length. We additionally fix the stiffness
131 % so that varying the rest length we can have different forces.
132 % If both the rest length and the stiffness are free we
133 % have an extra (useless) degree of freedom.
137 % data for diagonal cables
143 % data for vertical cables
149 % data for saddle cables
159 force [min_fs,max_fs]
164 force [min_fs,max_fs]
169 force [min_fs,max_fs]
174 force [min_fs,max_fs]
179 force [min_fs,max_fs]
184 force [min_fs,max_fs]
188 % Cables in the same order as in the matlab file
190 cable c1 : n1 n11 % diagonal
191 length [min_lc_d,max_lc_d]
193 rest [min_r_d,max_r_d]
196 cable c2 : n1 n6 % vertical
197 length [min_lc_v,max_lc_v]
199 rest [min_r_v,max_r_v]
202 cable c3 : n3 n7 % diagonal
203 length [min_lc_d,max_lc_d]
205 rest [min_r_d,max_r_d]
208 cable c4 : n3 n2 % vertical
209 length [min_lc_v,max_lc_v]
211 rest [min_r_v,max_r_v]
214 cable c5 : n5 n9 % diagonal
215 length [min_lc_d,max_lc_d]
217 rest [min_r_d,max_r_d]
220 cable c6 : n5 n4 % vertical
221 length [min_lc_v,max_lc_v]
223 rest [min_r_v,max_r_v]
226 cable c7 : n7 n4 % saddle
227 length [min_lc_s,max_lc_s]
229 rest [min_r_s,max_r_s]
232 cable c8 : n7 n2 % saddle
233 length [min_lc_s,max_lc_s]
235 rest [min_r_s,max_r_s]
238 cable c9 : n9 n6 % saddle
239 length [min_lc_s,max_lc_s]
241 rest [min_r_s,max_r_s]
244 cable c10 : n9 n4 % saddle
245 length [min_lc_s,max_lc_s]
247 rest [min_r_s,max_r_s]
250 cable c11 : n11 n2 % saddle
251 length [min_lc_s,max_lc_s]
253 rest [min_r_s,max_r_s]
256 cable c12 : n11 n6 % saddle
257 length [min_lc_s,max_lc_s]
259 rest [min_r_s,max_r_s]
262 cable c13 : n11 n8 % vertical
263 length [min_lc_v,max_lc_v]
265 rest [min_r_v,max_r_v]
268 cable c14 : n2 n8 % diagonal
269 length [min_lc_d,max_lc_d]
271 rest [min_r_d,max_r_d]
274 cable c15 : n7 n10 % vertical
275 length [min_lc_v,max_lc_v]
277 rest [min_r_v,max_r_v]
280 cable c16 : n4 n10 % diagonal
281 length [min_lc_d,max_lc_d]
283 rest [min_r_d,max_r_d]
286 cable c17 : n9 n12 % vertical
287 length [min_lc_v,max_lc_v]
289 rest [min_r_v,max_r_v]
292 cable c18 : n6 n12 % diagonal
293 length [min_lc_d,max_lc_d]
295 rest [min_r_d,max_r_d]
298 cable c19 : n1 n3 % base/platform
300 force [min_f_b,max_f_b]
304 cable c20 : n1 n5 % base/platform
306 force [min_f_b,max_f_b]
310 cable c21 : n3 n5 % base/platform
312 force [min_f_b,max_f_b]
316 cable c22 : n8 n10 % base/platform
318 force [min_f_b,max_f_b]
322 cable c23 : n8 n12 % base/platform
324 force [min_f_b,max_f_b]
328 cable c24 : n10 n12 % base/platform
330 force [min_f_b,max_f_b]
336 platform : body
"bodies/triangle.off" red
337 sphere 2*rs (0,0,0.005) black decoration
338 sphere 2*rs (b,0,0.005) black decoration
339 sphere 2*rs (b*cos(pi/3),-b*sin(pi/3),0.005) black decoration
342 (b*cos(pi/3),-b*sin(pi/3),0) n12
346 orientation: s1,[Rz(2*pi/3)]s2,[Rz(4*pi/3)]s3,s5
349 force : s1,s2,s3,s4,s5,s6
352 length : c1,c3,c5,c14,c16,c18
353 rest : c1,c3,c5,c14,c16,c18
354 force : c1,c3,c5,c14,c16,c18
357 length : c2,c4,c6,c13,c15,c17
358 rest : c2,c4,c6,c13,c15,c17
359 force : c2,c4,c6,c13,c15,c17
362 length : c7,c8,c9,c10,c11,c12
363 rest : c7,c8,c9,c10,c11,c12
364 force : c7,c8,c9,c10,c11,c12
366 % couple base/platform
367 force : c19,c20,c21,c22,c23,c24
371 % n1 is implicitly fixed
382 plane: box (-0.2,-0.2,-0.005)+(b+0.4,b*sin(pi/3)+0.4,0.001) green
383 anchor1: sphere 2*rs (0,0,-0.004) red decoration
384 anchor2: sphere 2*rs (b,0,-0.004) red decoration
385 anchor3: sphere 2*rs (b*cos(pi/3),b*sin(pi/3),-0.004) red decoration
390 do not check: connected
Follow us!