Files
JuliaFEM.jl/test/test_heat_3d_2.jl
T

37 lines
1.3 KiB
Julia
Raw Normal View History

2018-09-06 12:08:16 +03:00
# This file is a part of JuliaFEM.
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md
using JuliaFEM, LinearAlgebra, Test
# compare simple 3d heat problem to analytical solution
function calc_3d_heat_model(mesh_name)
fn = @__DIR__() * "/testdata/rod_short.med"
mesh = aster_read_mesh(fn, mesh_name)
problem = Problem(Heat, "rod", 1)
bc = Problem(Dirichlet, "left support T=100", 1, "temperature")
problem_elements = create_elements(mesh, "ROD", "FACE2")
bc_elements = create_elements(mesh, "FACE1")
update!(problem_elements, "thermal conductivity", 100.0)
update!(problem_elements, "external temperature", 0.0)
update!(problem_elements, "heat transfer coefficient", 1000.0)
update!(bc_elements, "temperature 1", 100.0)
add_elements!(problem, problem_elements)
add_elements!(bc, bc_elements)
analysis = Analysis(Linear)
add_problems!(analysis, problem, bc)
run!(analysis)
time = 0.0
T = problem("temperature", time)
T_min = minimum(map(first, values(T)))
return T_min
end
for model in ["Tet4", "Tet10", "Hex8", "Hex20", "Hex27"]
Tmin = calc_3d_heat_model(model)
Tacc = 100/3
rtol = norm(Tmin-Tacc)/max(Tmin,Tacc)*100.0
@debug("Temperature for model $model", model, Tmin, Tacc, rtol)
@test isapprox(Tmin, 100/3)
end