tower3D.tens
1 
3 [CONSTANTS]
4 
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
9  % vol 38, 2011
10  %
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.
16 
17  % The two driving parameters
18  alpha := 60*pi/180
19  delta := 30*pi/180
20 
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
27 
28  % small value (used to compare alpha with pi/3 = 60 deg)
29  zero:=1e-10
30 
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))
35 
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))
40 
41  % print D
42 
43  % Tension of the different strings
44  T_d_0 := 1
45 
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)
50 
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)
54  -6*l*h*sin(delta)
55  -2*sqrt(3)*b*l*cos(delta)*sin(alpha))/(6*D*sqrt(3)*h*cos(alpha+pi/6)))
56 
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)))
65 
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))
68  T_d := P*T_d_0/n
69  T_v := P*T_v_0/n
70  T_s := P*T_s_0/n
71  T_b := P*T_b_0/n
72  C := P*C_0/n
73 
74  % print T_d
75  % print T_v
76  % print T_s
77  % print T_b
78  % print C
79 
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
84 
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
89 
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)
94 
95  % print R_d
96  % print R_v
97  % print R_s
98 
99  % The stiffness as in appears in our models
100  K_d := K_d_0 / R_d
101  K_v := K_v_0 / R_v
102  K_s := K_s_0 / R_s
103 
104  % print K_d
105  % print K_v
106  % print K_s
107 
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).
114  M := 20
115 
116  % Factor used to determine the minimum cable length. This
117  % must be 0 or larger (we used 0.1 sometimes)
118  ml := 0
119 
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!
127  max_fs := 0
128 
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.
134  min_f_b := 0
135  max_f_b := M*T_b
136 
137  % data for diagonal cables
138  min_lc_d := ml*D
139  max_lc_d := M*D
140  min_r_d := 0
141  max_r_d := M*R_d
142 
143  % data for vertical cables
144  min_lc_v := ml*V
145  max_lc_v := M*V
146  min_r_v := 0
147  max_r_v := M*R_v
148 
149  % data for saddle cables
150  min_lc_s := ml*S
151  max_lc_s := M*S
152  min_r_s := 0
153  max_r_s := M*R_s
154 
155 [STRUCTURE]
156 
157  strut s1 : n1 n2
158  length l
159  force [min_fs,max_fs]
160  radius rs
161 
162  strut s2 : n3 n4
163  length l
164  force [min_fs,max_fs]
165  radius rs
166 
167  strut s3 : n5 n6
168  length l
169  force [min_fs,max_fs]
170  radius rs
171 
172  strut s4 : n7 n8
173  length l
174  force [min_fs,max_fs]
175  radius rs
176 
177  strut s5 : n9 n10
178  length l
179  force [min_fs,max_fs]
180  radius rs
181 
182  strut s6 : n11 n12
183  length l
184  force [min_fs,max_fs]
185  radius rs
186 
187 
188  % Cables in the same order as in the matlab file
189 
190  cable c1 : n1 n11 % diagonal
191  length [min_lc_d,max_lc_d]
192  stiffness K_d
193  rest [min_r_d,max_r_d]
194  radius rc
195 
196  cable c2 : n1 n6 % vertical
197  length [min_lc_v,max_lc_v]
198  stiffness K_v
199  rest [min_r_v,max_r_v]
200  radius rc
201 
202  cable c3 : n3 n7 % diagonal
203  length [min_lc_d,max_lc_d]
204  stiffness K_d
205  rest [min_r_d,max_r_d]
206  radius rc
207 
208  cable c4 : n3 n2 % vertical
209  length [min_lc_v,max_lc_v]
210  stiffness K_v
211  rest [min_r_v,max_r_v]
212  radius rc
213 
214  cable c5 : n5 n9 % diagonal
215  length [min_lc_d,max_lc_d]
216  stiffness K_d
217  rest [min_r_d,max_r_d]
218  radius rc
219 
220  cable c6 : n5 n4 % vertical
221  length [min_lc_v,max_lc_v]
222  stiffness K_v
223  rest [min_r_v,max_r_v]
224  radius rc
225 
226  cable c7 : n7 n4 % saddle
227  length [min_lc_s,max_lc_s]
228  stiffness K_s
229  rest [min_r_s,max_r_s]
230  radius rc
231 
232  cable c8 : n7 n2 % saddle
233  length [min_lc_s,max_lc_s]
234  stiffness K_s
235  rest [min_r_s,max_r_s]
236  radius rc
237 
238  cable c9 : n9 n6 % saddle
239  length [min_lc_s,max_lc_s]
240  stiffness K_s
241  rest [min_r_s,max_r_s]
242  radius rc
243 
244  cable c10 : n9 n4 % saddle
245  length [min_lc_s,max_lc_s]
246  stiffness K_s
247  rest [min_r_s,max_r_s]
248  radius rc
249 
250  cable c11 : n11 n2 % saddle
251  length [min_lc_s,max_lc_s]
252  stiffness K_s
253  rest [min_r_s,max_r_s]
254  radius rc
255 
256  cable c12 : n11 n6 % saddle
257  length [min_lc_s,max_lc_s]
258  stiffness K_s
259  rest [min_r_s,max_r_s]
260  radius rc
261 
262  cable c13 : n11 n8 % vertical
263  length [min_lc_v,max_lc_v]
264  stiffness K_v
265  rest [min_r_v,max_r_v]
266  radius rc
267 
268  cable c14 : n2 n8 % diagonal
269  length [min_lc_d,max_lc_d]
270  stiffness K_d
271  rest [min_r_d,max_r_d]
272  radius rc
273 
274  cable c15 : n7 n10 % vertical
275  length [min_lc_v,max_lc_v]
276  stiffness K_v
277  rest [min_r_v,max_r_v]
278  radius rc
279 
280  cable c16 : n4 n10 % diagonal
281  length [min_lc_d,max_lc_d]
282  stiffness K_d
283  rest [min_r_d,max_r_d]
284  radius rc
285 
286  cable c17 : n9 n12 % vertical
287  length [min_lc_v,max_lc_v]
288  stiffness K_v
289  rest [min_r_v,max_r_v]
290  radius rc
291 
292  cable c18 : n6 n12 % diagonal
293  length [min_lc_d,max_lc_d]
294  stiffness K_d
295  rest [min_r_d,max_r_d]
296  radius rc
297 
298  cable c19 : n1 n3 % base/platform
299  length b
300  force [min_f_b,max_f_b]
301  radius rc
302  hidden
303 
304  cable c20 : n1 n5 % base/platform
305  length b
306  force [min_f_b,max_f_b]
307  radius rc
308  hidden
309 
310  cable c21 : n3 n5 % base/platform
311  length b
312  force [min_f_b,max_f_b]
313  radius rc
314  hidden
315 
316  cable c22 : n8 n10 % base/platform
317  length b
318  force [min_f_b,max_f_b]
319  radius rc
320  hidden
321 
322  cable c23 : n8 n12 % base/platform
323  length b
324  force [min_f_b,max_f_b]
325  radius rc
326  hidden
327 
328  cable c24 : n10 n12 % base/platform
329  length b
330  force [min_f_b,max_f_b]
331  radius rc
332  hidden
333 
334 
335 [ADDONS]
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
340  (0,0,0) n8
341  (b,0,0) n10
342  (b*cos(pi/3),-b*sin(pi/3),0) n12
343 
344 [COUPLE]
345  % couple stuts
346  orientation: s1,[Rz(2*pi/3)]s2,[Rz(4*pi/3)]s3,s5
347  orientation: s3,s4
348  orientation: s2,s6
349  force : s1,s2,s3,s4,s5,s6
350 
351  % couple diagonal
352  length : c1,c3,c5,c14,c16,c18
353  rest : c1,c3,c5,c14,c16,c18
354  force : c1,c3,c5,c14,c16,c18
355 
356  % couple vertical
357  length : c2,c4,c6,c13,c15,c17
358  rest : c2,c4,c6,c13,c15,c17
359  force : c2,c4,c6,c13,c15,c17
360 
361  % couple saddle
362  length : c7,c8,c9,c10,c11,c12
363  rest : c7,c8,c9,c10,c11,c12
364  force : c7,c8,c9,c10,c11,c12
365 
366  % couple base/platform
367  force : c19,c20,c21,c22,c23,c24
368 
369 [FIXED POINTS]
370 
371  % n1 is implicitly fixed
372 
373  n3(z)=0
374 
375  n5(y)=0
376  n5(z)=0
377 
380 [OBSTACLES]
381 
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
386 
387 [COLLISIONS]
388 
389  check: all
390  do not check: connected
391 
526