# (2) Scordelis–Lo (un cuarto) y cilindro pinzado (un octavo)
function scordelis(n; modo = :subdominios)
R, L, t, E, ν = 25.0, 50.0, 0.25, 4.32e8, 0.0; φm = deg2rad(40); r = cil_x(R)
nodos, conn = malla_rectangular((0, L / 2), (0, φm), n, n)
K, _, F = ensamblar(r, nodos, conn, E, ν, t; modo, f = θ -> [0, 0, -90.0])
fij = Int[]
for k in 1:size(nodos, 2)
x, φ = nodos[:, k]
x ≈ 0 && append!(fij, [gdl(k, 2), gdl(k, 3)]) # diafragma
x ≈ L / 2 && append!(fij, [gdl(k, 1), gdl(k, 4)]) # simetría en x = L/2
φ ≈ 0 && append!(fij, [gdl(k, 2), gdl(k, 5)]) # simetría en φ = 0
end
u = resolver_estatica(K, F, unique(fij))
desplazamiento_cartesiano(r, nodos, u, nodo_en(nodos, [L / 2, φm]))[3] # borde libre, punto medio
end
function pinzado(n; modo = :subdominios)
R, L, t, E, ν = 300.0, 600.0, 3.0, 3.0e6, 0.3; r = cil_x(R)
nodos, conn = malla_rectangular((0, L / 2), (0, π / 2), n, n)
K, _, _ = ensamblar(r, nodos, conn, E, ν, t; modo)
nn = size(nodos, 2); F = zeros(5nn); c = nodo_en(nodos, [L / 2, 0.0]); F[gdl(c, 3)] = -0.25 # P/4 hacia dentro
fij = Int[]
for k in 1:nn
x, φ = nodos[:, k]
x ≈ 0 && append!(fij, [gdl(k, 2), gdl(k, 3)])
x ≈ L / 2 && append!(fij, [gdl(k, 1), gdl(k, 4)])
(φ ≈ 0 || φ ≈ π / 2) && append!(fij, [gdl(k, 2), gdl(k, 5)])
end
u = resolver_estatica(K, F, unique(fij)); u[gdl(c, 3)]
end
[(n = n, SL = abs(scordelis(n)) / 0.3024, pinzado = abs(pinzado(n)) / 1.8248e-5) for n in (4, 8, 16)]