4 % Parametrization of a two-prism tower taken from
5 % C. Sultan, M. Corles and R. E. Skelton
6 % The pre-estressability problem of tensegrity structures: some
7 % analytical results, International journal of solids and structures
10 % We model a SVDB struture (section 4) which essentially has the same
11 % solutions as a SVD structure (section 3)
12 % We compute the constants that give a stable configuration and then
13 % leave some ranges around the equilibrium point to allow form motion.
14 % In this way we are sure to have valid ranges for the variables.
16 % The two driving parameters
20 % Structural parameters (taken from the matlab file)
21 b := 0.27 % Size of base/platform
22 l := 0.4 % Length of struts
23 P := PARAMETER(PRETENSION) % Pretension (taken from parameter file)
24 rs := 0.0025 % Radius to represent struts
25 rc := 0.00075 % Radius to represent cables
27 % small value (used to compare alpha with pi/3 = 60 deg)
30 % h is a zero-centered parametrization of the structure height
31 u := sin(delta)*cos(alpha+pi/6) % auxiliary
32 h := (abs(alpha-pi/3)<zero ? l*cos(delta)/2 :
33 cos(delta)*(l*u+sqrt(b^2/3-3*l^2*u^2)-b/sqrt(3))/(2*u))
35 % Length of the different strings
36 D := sqrt(h^2+b^2/3+l^2-2*l*b*sin(delta)*sin(alpha)/sqrt(3)-2*l*h*cos(delta))
37 V := sqrt(b^2+l^2-2*l*b*sin(delta)*sin(alpha+pi/6))
38 S := sqrt(h^2+b^2/3+l^2*sin(delta)^2-2*l*b*sin(delta)*cos(alpha-pi/6)/sqrt(3))
42 % Tension of the different strings
45 T_v_0 := (abs(alpha-pi/3)<zero ? T_d_0*V*(3*l*sin(delta)/(2*b)-1)/D :
46 T_d_0*V*((l*cos(delta)/h-1)*sin(alpha-pi/6)-cos(alpha))/(D*sqrt(3)*cos(alpha+pi/6)))
47 T_s_0 := (abs(alpha-pi/3)<zero ? T_d_0 :
48 T_d_0*S*(l*cos(delta)/h-1)/D)
50 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) :
51 T_d_0*(3*l^2*sin(delta)*cos(delta)
52 +6*b*h*cos(alpha-pi/3)
54 -2*sqrt(3)*b*l*cos(delta)*sin(alpha))/(6*D*sqrt(3)*h*cos(alpha+pi/6)))
56 % Compression of the struts (fixed an error from the paper!)
57 C_0 := (abs(alpha-pi/3)<zero ? T_d_0*(3*l^2*sin(delta)/(2*b)-l/2)/D :
58 T_d_0*(2*sqrt(3)*h*b*sin(delta)
59 -sqrt(3)*l*b*sin(2*delta)/2
60 +6*h^2*cos(delta)*sin(alpha-pi/3)
61 -6*l*h*(cos(delta)^2*sin(alpha-pi/3)+sin(alpha+pi/6)/sqrt(3))
62 +2*sqrt(3)*l^2*cos(delta)*cos(alpha)
63 +6*l^2*cos(delta)^3*sin(alpha-pi/3))/(6*D*h*sin(pi/3-alpha)))
65 %
Normalize the tension/compression (to remove the pre-tension)
66 n := sqrt(6*(T_d_0^2+T_v_0^2+T_s_0^2++T_b_0^2+C_0^2))
79 % Physical quantities used to define the stiffness of the strings
80 E := 14e10 % N/m^2 Young's modulus
81 s := 2.5e9 % N/m^2 maximum tendon stress
82 g := 4 % safety margin
84 % The stiffness as defined
int the paper
85 K_d_0 := (E*P*g/s)*T_d
86 K_v_0 := (E*P*g/s)*T_v
87 K_s_0 := (E*P*g/s)*T_s
89 % The rest lengths for the different cables
90 R_d := K_d_0*D/(T_d+K_d_0)
91 R_v := K_v_0*V/(T_v+K_v_0)
92 R_s := K_s_0*S/(T_s+K_s_0)
98 % The stiffness as in appears in our models
107 % Margin. Used to increase the force, length, rest-length
108 % from those in the initial configuration.
109 % By using a large margins we ensure that the motion of
110 % the structure is not hindered by theses limits, i.e.,
111 % these limits will neve be active but the minimum
112 % limit might be (cables must have at least 0 tension, etc).
115 % Factor used to determine the minimum cable length. This
116 % must be 0 or larger (we used 0.1 sometimes)
119 % range of compression forces supported by the struts
120 % For struts the rest lengt is set to 0 and the stiffnes
121 % is set to vary so that with a constant length, we can
122 % have different forces.
123 % If both the rest length and the stiffness are free we
124 % have an extra (useless) degree of freedom.
125 min_fs := -M*C % compression is negative!
128 % data for the cables on the base/platform: range of supported tensions
129 % These cables have constant length. We additionally fix the stiffness
130 % so that varying the rest length we can have different forces.
131 % If both the rest length and the stiffness are free we
132 % have an extra (useless) degree of freedom.
136 % data for diagonal cables
142 % data for vertical cables
148 % data for saddle cables
158 force [min_fs,max_fs]
163 force [min_fs,max_fs]
168 force [min_fs,max_fs]
173 force [min_fs,max_fs]
178 force [min_fs,max_fs]
183 force [min_fs,max_fs]
187 % Cables in the same order as in the matlab file
189 cable c1 : n1 n11 % diagonal
190 length [min_lc_d,max_lc_d]
192 rest [min_r_d,max_r_d]
195 cable c2 : n1 n6 % vertical
196 length [min_lc_v,max_lc_v]
198 rest [min_r_v,max_r_v]
201 cable c3 : n3 n7 % diagonal
202 length [min_lc_d,max_lc_d]
204 rest [min_r_d,max_r_d]
207 cable c4 : n3 n2 % vertical
208 length [min_lc_v,max_lc_v]
210 rest [min_r_v,max_r_v]
213 cable c5 : n5 n9 % diagonal
214 length [min_lc_d,max_lc_d]
216 rest [min_r_d,max_r_d]
219 cable c6 : n5 n4 % vertical
220 length [min_lc_v,max_lc_v]
222 rest [min_r_v,max_r_v]
225 cable c7 : n7 n4 % saddle
226 length [min_lc_s,max_lc_s]
228 rest [min_r_s,max_r_s]
231 cable c8 : n7 n2 % saddle
232 length [min_lc_s,max_lc_s]
234 rest [min_r_s,max_r_s]
237 cable c9 : n9 n6 % saddle
238 length [min_lc_s,max_lc_s]
240 rest [min_r_s,max_r_s]
243 cable c10 : n9 n4 % saddle
244 length [min_lc_s,max_lc_s]
246 rest [min_r_s,max_r_s]
249 cable c11 : n11 n2 % saddle
250 length [min_lc_s,max_lc_s]
252 rest [min_r_s,max_r_s]
255 cable c12 : n11 n6 % saddle
256 length [min_lc_s,max_lc_s]
258 rest [min_r_s,max_r_s]
261 cable c13 : n11 n8 % vertical
262 length [min_lc_v,max_lc_v]
264 rest [min_r_v,max_r_v]
267 cable c14 : n2 n8 % diagonal
268 length [min_lc_d,max_lc_d]
270 rest [min_r_d,max_r_d]
273 cable c15 : n7 n10 % vertical
274 length [min_lc_v,max_lc_v]
276 rest [min_r_v,max_r_v]
279 cable c16 : n4 n10 % diagonal
280 length [min_lc_d,max_lc_d]
282 rest [min_r_d,max_r_d]
285 cable c17 : n9 n12 % vertical
286 length [min_lc_v,max_lc_v]
288 rest [min_r_v,max_r_v]
291 cable c18 : n6 n12 % diagonal
292 length [min_lc_d,max_lc_d]
294 rest [min_r_d,max_r_d]
297 cable c19 : n1 n3 % base/platform
299 force [min_f_b,max_f_b]
303 cable c20 : n1 n5 % base/platform
305 force [min_f_b,max_f_b]
309 cable c21 : n3 n5 % base/platform
311 force [min_f_b,max_f_b]
315 cable c22 : n8 n10 % base/platform
317 force [min_f_b,max_f_b]
321 cable c23 : n8 n12 % base/platform
323 force [min_f_b,max_f_b]
327 cable c24 : n10 n12 % base/platform
329 force [min_f_b,max_f_b]
334 platform : body "bodies/triangle.off" red
335 sphere 2*rs (0,0,0.005) black decoration
336 sphere 2*rs (b,0,0.005) black decoration
337 sphere 2*rs (b*cos(pi/3),-b*sin(pi/3),0.005) black decoration
340 (b*cos(pi/3),-b*sin(pi/3),0) n12
344 orientation: s1,[Rz(2*pi/3)]s2,[Rz(4*pi/3)]s3,s5
347 force : s1,s2,s3,s4,s5,s6
350 length : c1,c3,c5,c14,c16,c18
351 rest : c1,c3,c5,c14,c16,c18
352 force : c1,c3,c5,c14,c16,c18
355 length : c2,c4,c6,c13,c15,c17
356 rest : c2,c4,c6,c13,c15,c17
357 force : c2,c4,c6,c13,c15,c17
360 length : c7,c8,c9,c10,c11,c12
361 rest : c7,c8,c9,c10,c11,c12
362 force : c7,c8,c9,c10,c11,c12
364 % couple base/platform
365 force : c19,c20,c21,c22,c23,c24
369 % n1 is implicitly fixed
378 plane: box (-0.2,-0.2,-0.005)+(b+0.4,b*sin(pi/3)+0.4,0.001) green
379 anchor1: sphere 2*rs (0,0,-0.004) red decoration
380 anchor2: sphere 2*rs (b,0,-0.004) red decoration
381 anchor3: sphere 2*rs (b*cos(pi/3),b*sin(pi/3),-0.004) red decoration
386 do not check: connected
CBLAS_INLINE void Normalize(unsigned int s, double *v)
Normalizes a vector.
Follow us!