You are on page 1of 4

Tensegrity Calculations

Planar Tensegrity Cross


Nodes
In[ ]:= n1 = {1, 0};
n2 = {0, 1};
n3 = {- 1, 0};
n4 = {0, - 1};

m1 = n3 - n1;
m2 = n2 - n4;
m3 = n2 - n1;
m4 = n3 - n2;
m5 = n4 - n3;
m6 = n1 - n4;

ListLinePlot[{{n2, n4, n1, n3}, {n1, n2, n3, n4, n4, n1}},
PlotStyle → {{Black, Thick}, Red}, Axes → False]

M = Transpose[{m1, m2, m3, m4, m5, m6}];


m = {{m1}, {m2}, {m3}, {m4}, {m5}, {m6}};
(*Unprotect[N];*)
NN = Transpose[{n1, n2, n3, n4}];
n = {{n1}, {n2}, {n3}, {n4}};

Out[ ]=

In[ ]:=
2 Tensegrity-Calculations.nb

Connectivity

Bars
In[ ]:= 1+2
Out[ ]= 3

In[ ]:= d1 = {0, 0, 1, 0} - {1, 0, 0, 0};


d2 = {0, 0, 0, 1} - {0, 1, 0, 0};
DB = Transpose[{d1, d2}];
CB = Transpose[DB];
MatrixForm[CB]
Out[ ]//MatrixForm=

 -1 0 1 0 
0 -1 0 1

In[ ]:= CB
Out[ ]= {{- 1, 0, 1, 0}, {0, - 1, 0, 1}}

Strings
In[ ]:= s1 = {0, 1, 0, 0} - {1, 0, 0, 0};
s2 = {0, 0, 1, 0} - {0, 1, 0, 0};
s3 = {0, 0, 0, 1} - {0, 0, 1, 0};
s4 = {1, 0, 0, 0} - {0, 0, 0, 1};
DS = Transpose[{s1, s2, s3, s4}];
CS = Transpose[DS];
TraditionalForm[CS]
Out[ ]//TraditionalForm=
-1 1 0 0
0 -1 1 0
0 0 -1 1
1 0 0 -1

Tensegrity Connectivity
In[ ]:= Unprotect[CC];
CC = ArrayFlatten[{{CB}, {CS}}];
TraditionalForm[CC]
Out[ ]//TraditionalForm=
-1 0 1 0
0 -1 0 1
-1 1 0 0
0 -1 1 0
0 0 -1 1
1 0 0 -1
Tensegrity-Calculations.nb 3

Members
In[ ]:= M = NN.Transpose[CC];
TraditionalForm[M]
Out[ ]//TraditionalForm=
-2 0 -1 -1 1 1
 
0 -2 1 -1 -1 1

Equilibrium
If the structure is in equilibrium, then, F=MΣC=0
In[ ]:= Λ = {{λ1 , 0}, {0, λ2 }};
Γ = {{γ1 , 0, 0, 0}, {0, γ2 , 0, 0}, {0, 0, γ3 , 0}, {0, 0, 0, γ4 }};
Σ = ArrayFlatten[{{- Λ, 0}, {0, Γ}}];
F = M.Σ.CC;
TraditionalForm[F]
TraditionalForm[Solve[F ⩵ 0, {λ1 , λ2 , γ1 , γ2 , γ3 , γ4 }]]
Out[ ]//TraditionalForm=
γ1 + γ4 - 2 λ1 γ2 - γ1 -γ2 - γ3 + 2 λ1 γ3 - γ4
 
γ4 - γ1 γ1 + γ2 - 2 λ2 γ3 - γ2 -γ3 - γ4 + 2 λ2

Solve: Equations may not give solutions for all "solve" variables.
Out[ ]//TraditionalForm=

{{λ2 → λ1 , γ1 → λ1 , γ2 → λ1 , γ3 → λ1 , γ4 → λ1 }}

Stiffness Matrix
Supose that the bars and strings have a linear material behavior, thus, one can prescribe constant
stiffnesses for the bars and strings, as follows:
4 Tensegrity-Calculations.nb

In[ ]:= L1 = - γ * IdentityMatrix[2] - Outer[Times, m1, m1]  Norm[m1] ^ 2 +


kb * Outer[Times, m1, m1]  Norm[m1] ^ 2;
L2 = - γ * IdentityMatrix[2] - Outer[Times, m2, m2]  Norm[m2] ^ 2 +
kb * Outer[Times, m2, m2]  Norm[m2] ^ 2;
L3 = γ * IdentityMatrix[2] - Outer[Times, m3, m3]  Norm[m3] ^ 2 +
ks * Outer[Times, m3, m3]  Norm[m3] ^ 2;
L4 = γ * IdentityMatrix[2] - Outer[Times, m4, m4]  Norm[m4] ^ 2 +
ks * Outer[Times, m4, m4]  Norm[m4] ^ 2;
L5 = γ * IdentityMatrix[2] - Outer[Times, m5, m5]  Norm[m5] ^ 2 +
ks * Outer[Times, m5, m5]  Norm[m5] ^ 2;
L6 = γ * IdentityMatrix[2] - Outer[Times, m6, m6]  Norm[m6] ^ 2 +
ks * Outer[Times, m6, m6]  Norm[m6] ^ 2;
Φ = ArrayFlatten[{{L1, 0, 0, 0, 0, 0}, {0, L2, 0, 0, 0, 0}, {0, 0, L3, 0, 0, 0},
{0, 0, 0, L4, 0, 0}, {0, 0, 0, 0, L5, 0}, {0, 0, 0, 0, 0, L6}}];
K = KroneckerProduct[Transpose[CC], IdentityMatrix[2]].Φ.
KroneckerProduct[CC, IdentityMatrix[2]];

TraditionalForm[K]

Out[ ]//TraditionalForm=
γ ks ks γ γ ks γ ks
kb + γ + k s 0 -2 - 2 2
- 2
-kb 0 -2 - 2 2 2
-
ks γ γ ks γ ks γ k
0 ks 2
- 2
-2 - 2
0 γ 2
- 2
- 2 - 2s
γ ks ks γ γ ks γ ks
-2 - 2 2
- 2
ks 0 -2 - 2 2 2
- γ 0
ks γ γ ks γ ks γ k
2
- 2
-2 - 2
0 kb + γ + k s 2
- 2
- 2 - 2s 0 -kb
γ ks γ k γ ks ks γ
-kb 0 -2 - 2 2
- 2s kb + γ + k s 0 -2 - 2 2
- 2
γ ks γ k ks γ γ ks
0 γ 2
- 2
- 2 - 2s 0 ks 2
- 2
-2 - 2
γ ks γ ks γ ks ks γ
-2 - 2 2 2
- γ 0 -2 - 2 2
- 2
ks 0
γ ks γ k ks γ γ ks
2
- 2
- 2 - 2s 0 -kb 2
- 2
-2 - 2
0 kb + γ + k s

Modes
In[ ]:=

In[ ]:= Eigenvalues[K]


a1 = Transpose[Eigenvectors[K]];
TraditionalForm[a1]

Out[ ]= 0, 0, 0, 2 γ + kb , - 2 γ - ks , 2 γ + ks , 2 γ + ks , 2 kb + ks 


Out[ ]//TraditionalForm=
-1 1 1 1 0 0 -1 -1
2 0 -1 0 -1 -1 0 0
-2 1 2 0 -1 0 1 0
1 0 0 -1 0 1 0 -1
-1 1 1 -1 0 0 -1 1
0 0 1 0 1 -1 0 0
0 1 0 0 1 0 1 0
1 0 0 1 0 1 0 1

You might also like