test(domains): add material element lab diagnostics

This commit is contained in:
Jukka Aho
2026-05-09 18:38:28 +03:00
parent 62a05646a0
commit 7621a27161
@@ -0,0 +1,42 @@
# 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