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