using PtFEM
ProjDir = dirname(@__FILE__)
data = Dict(
# Frame(nels, nn, ndim, nst, nip, finite_element(nod, nodof))
:struc_el => Frame(6, 6, 2, 1, 1, Line(2, 3)),
:properties => [
5.0e9 6.0e4;
1.0e9 2.0e4],
:etype => [1, 1, 1, 2, 2, 2],
:x_coords => [0.0, 6.0, 6.0, 12.0, 12.0, 14.0],
:y_coords => [0.0, 0.0, -4.0, 0.0, -5.0, 0.0],
:g_num => [
1 2 4 3 3 5;
2 4 6 2 4 4],
:support => [
(1, [0 0 1]),
(3, [0 0 0]),
(5, [0 0 0])
],
:loaded_nodes => [
(1, [0.0 -60.0 -60.0]),
(2, [0.0 -180.0 -80.0]),
(4, [0.0 -140.0 133.33]),
(6, [0.0 -20.0 6.67])
],
:penalty => 1e19,
:eq_nodal_forces_and_moments => [
(1, [0.0 -60.0 -60.0 0.0 -60.0 60.0]),
(2, [0.0 -120.0 -140.0 0.0 -120.0 140.0]),
(3, [0.0 -20.0 -6.67 0.0 -20.0 6.67])
]
)
data |> display
println()
@time fem, dis_df, fm_df = p44(data)
println()
display(dis_df)
println()
display(fm_df)
println()
if VERSION.minor < 6
using Plots
gr(size=(400,600))
p = Vector{Plots.Plot{Plots.GRBackend}}(undef, 3)
titles = ["p44.1 rotations", "p44.1 y shear force", "p44.1 z moment"]
moms = vcat(
convert(Array, fm_df[:, :z1_Moment]),
convert(Array, fm_df[:, :z2_Moment])[end]
)
fors = vcat(
convert(Array, fm_df[:, :y1_Force]),
convert(Array, fm_df[:, :y2_Force])[end]
)
x_coords = data[:x_coords]
p[1] = plot(fem.displacements[3,:], ylim=(-0.002, 0.002),
xlabel="node", ylabel="rotation [radians]", color=:red,
line=(:dash,1), marker=(:circle,4,0.8,stroke(1,:black)),
title=titles[1], leg=false)
p[2] = plot(fors, lab="y Shear force", ylim=(-150.0, 250.0),
xlabel="node", ylabel="shear force [N]", color=:blue,
line=(:dash,1), marker=(:circle,4,0.8,stroke(1,:black)),
title=titles[2], leg=false)
p[3] = plot(moms, lab="z Moment", ylim=(-10.0, 150.0),
xlabel="node", ylabel="z moment [Nm]", color=:green,
line=(:dash,1), marker=(:circle,4,0.8,stroke(1,:black)),
title=titles[3], leg=false)
plot(p..., layout=(3, 1))
savefig(ProjDir*"/Ex44.1.png")
end