06
Oct
06

### St. Louis Arch

The St. Louis Arch is shaped like an upside-down catenary for maximum support. This image was simulated as a system of linear static 1D beam elements. The non-linear animation on the right was simulated using many small linear solutions.

```(* runtime: 3 seconds *) x0 = 299.2239; h = 625.0925; a = 118.6261; n = 20; EA =1000.0; nodes = Flatten[Table[z = a(Cosh[x0/a] - Cosh[x/a]); r = 54 - 37z/h; Table[{x, 0, z} + r{-Tanh[x/a]Cos[theta], Sin[theta], -Sech[x/a]Cos[theta]}, {theta, 0,4Pi/3, 2Pi/3}], {x, -x0, x0, 2x0/n}], 1]; elements = Flatten[Table[Join[{{1, 2}, {2, 3}, {3, 1}}, If[i < n, {{1, 4}, {2, 5}, {3, 6}, {1, 5}, {2, 6}, {3, 4}}, {}]] + 3i, {i, 0, n}], 1]; nnode = Length[nodes]; nelem = Length[elements]; del = Map[nodes[[#[[2]]]] - nodes[[#[[1]]]] &, elements]; fixed = Join[{1, 2, 3}, nnode - {2, 1, 0}]; nfixed = Length[fixed]; ilist = Flatten[Map[3# - {2, 1, 0} &, Complement[Range[nnode], fixed]], 1]; Kglobal = Sum[d = del[[ielem]]; r = Join[d, -d]; K = EA Map[# r &, r]/(d.d)^1.5; T = Flatten[Table[If[i == 3elements[[ielem, k]] + j, 1, 0], {k, 1, 2}, {j, -2, 0}, {i, 1, 3nnode}], 1]; Transpose[T].K.T, {ielem, 1, nelem}][[ilist, ilist]]; Q = Table[{0, 0, 0}, {nnode - nfixed}]; Q[[Ceiling[nnode/2] - nfixed]] = {0, -1, 0}; q = Partition[LinearSolve[Kglobal, Flatten[Q]], 3]; j = 1; q = Table[If[MemberQ[fixed, i], {0, 0, 0}, q[[j++]]], {i, 1, nnode}]; e = Map[q[[#[[1]]]] - q[[#[[2]]]] &, elements]; s = Map[Sqrt[#.#] &, e]; smax = Max[s]; Do[del2 = del + scale e; nodes2 = nodes; used = Range[nfixed]; Do[Scan[(i2 = elements[[#[[1]], 3 - #[[2]]]]; If[! MemberQ[used, i2],nodes2[[i2]] = nodes2[[i1]] + del2[[#[[1]]]];used = Append[used, i2]]) &, Position[elements, i1]], {i1, 1, nnode}]; Show[Graphics3D[Table[{Hue[2(1 - Min[1, Max[0, scale Abs[s[[i]]]/smax]])/3], Line[nodes2[[elements[[i]]]]]}, {i, 1, nelem}]]], {scale, 0, 1, 0.1}];```

## Welcome !

You will find here some of my favorite hobbies and interests, especially science and art.

I hope you enjoy it!

Subscribe to the RSS feed to stay informed when I publish something new here.

I would love to hear from you! Please feel free to send me an email : bugman123-at-gmail-dot-com