mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-22 18:52:16 +00:00
43 lines
1.3 KiB
Julia
43 lines
1.3 KiB
Julia
# SPDX-FileCopyrightText: 2015-2026 Jukka Aho
|
||
# SPDX-License-Identifier: MIT
|
||
|
||
using Test
|
||
using LinearAlgebra
|
||
using JuliaFEM
|
||
|
||
@testset "Material element lab (symmetric uniaxial Hex8 coupon)" begin
|
||
L = 1.0
|
||
mesh = material_lab_single_hex8_brick(; L = L)
|
||
@test nelements(mesh) == 1
|
||
|
||
S = @DOFSet{u::DOF{Displacement{3}, Vertex}}
|
||
elements, handler = create_elements!(mesh, Element{Hex8, Lagrange{1}, S})
|
||
|
||
δx = 1.0e-4
|
||
E = 210e9
|
||
ν = 0.3
|
||
u = material_lab_linear_elastic_uniaxial_solve(mesh, handler, elements, E, ν, δx)
|
||
|
||
@test all(isfinite, u)
|
||
for nid in get_nodes_in_set(mesh, :xmax)
|
||
ud = get_node_dofs(handler, Int(nid))
|
||
@test u[ud[1]] ≈ δx rtol = 1e-8 atol = 1e-12
|
||
end
|
||
for nid in get_nodes_in_set(mesh, :xmin)
|
||
ud = get_node_dofs(handler, Int(nid))
|
||
@test abs(u[ud[1]]) < 1e-12
|
||
end
|
||
for nid in get_nodes_in_set(mesh, :ymin)
|
||
ud = get_node_dofs(handler, Int(nid))
|
||
@test abs(u[ud[2]]) < 1e-12
|
||
end
|
||
for nid in get_nodes_in_set(mesh, :zmin)
|
||
ud = get_node_dofs(handler, Int(nid))
|
||
@test abs(u[ud[3]]) < 1e-12
|
||
end
|
||
|
||
bc = hex8_symmetric_uniaxial_eliminated_dirichlet(mesh, handler, δx)
|
||
@test bc isa EliminatedDirichlet
|
||
@test length(bc.fixed_dofs) == length(bc.values)
|
||
end
|