JuliaFEM / FEMPlates.jl

Plate bending formulations for JuliaFEM
MIT License
4 stars 4 forks source link

FEMPlates.jl

FEMPlates.jl contains mathematical formulations for plate bending problems.

Supported formulations:

using JuliaFEM

field_elements, boundary_elements = get_unit_square()

using FEMPlates

update!(field_elements, "youngs modulus", 4880.0)
update!(field_elements, "poissons ratio", 1/3)
update!(field_elements, "thickness", 0.5)
update!(field_elements, "distributed load", 10.0)
plate = Problem(MindlinPlate, "test problem", 3)
add_elements!(plate, field_elements)
bc = Problem(Dirichlet, "fixed", 3, "displacement")
add_elements!(bc, boundary_elements)
update!(bc, "displacement 1", 0.0)
analysis = Analysis(Linear)
add_problems!(analysis, [plate, bc])
run!(analysis)

u = plate.assembly.u
X = plate("geometry", 0.0)
N = length(X)
x = [X[i][1] for i=1:N]
y = [X[i][2] for i=1:N]

using Plots
surface(x, y, u[1:3:end])

result

Discrete Kirchhoff plate

using JuliaFEM
using JuliaFEM.Preprocess
add_elements! = JuliaFEM.add_elements!
meshfile = Pkg.dir("FEMPlates", "examples", "dkt", "mesh.med")
mesh = aster_read_mesh(meshfile)
field_elements = create_elements(mesh, "PLATE")
update!(field_elements, "youngs modulus", 210.0e9)
update!(field_elements, "poissons ratio", 0.3)
update!(field_elements, "thickness", 50.0e-3)
update!(field_elements, "distributed load", 1.0)
plate = Problem(DKT, "test problem", 3)
add_elements!(plate, field_elements)
boundary_elements = create_elements(mesh, "BORDER")
update!(boundary_elements, "displacement 1", 0.0)
bc = Problem(Dirichlet, "fixed", 3, "displacement")
add_elements!(bc, boundary_elements)
analysis = Analysis(Linear)
add_problems!(analysis, [plate, bc])
run!(analysis)

dkt