mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-08-06 04:21:33 +00:00
dcd24e8e01
this allows installing and loading the package from elsewhere
51 lines
1.7 KiB
Julia
51 lines
1.7 KiB
Julia
# This file is a part of JuliaFEM.
|
||
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md
|
||
|
||
using JuliaFEM
|
||
using JuliaFEM.Preprocess
|
||
using JuliaFEM.Postprocess
|
||
using JuliaFEM.Testing
|
||
|
||
@testset "3d rod" begin
|
||
mesh = aster_read_mesh(@__DIR__()*"/testdata/primitives.med", "CYLINDER_20_TET4")
|
||
problem = Problem(Heat, "rod of length 20", 1)
|
||
problem.elements = create_elements(mesh, "CYLINDER")
|
||
update!(problem, "temperature thermal conductivity", 200.0)
|
||
outer = Problem(Heat, "outer surface", 1)
|
||
outer.elements = create_elements(mesh, "FACE2", "FACE3")
|
||
update!(outer, "temperature external temperature", 20.0)
|
||
update!(outer, "temperature heat transfer coefficient", 1.0)
|
||
#midline = Problem(Heat, "midline of rod", 1)
|
||
#midline.elements = create_elements(mesh, "INNER_LINE")
|
||
boundary = Problem(Dirichlet, "homogeneous dirichlet boundary", 1, "temperature")
|
||
boundary.elements = create_elements(mesh, "FACE1")
|
||
update!(boundary, "temperature 1", 100.0)
|
||
#solver = LinearSolver(problem, outer, boundary, midline)
|
||
solver = LinearSolver(problem, outer, boundary)
|
||
solver()
|
||
|
||
L = 20
|
||
k = 200.0
|
||
Tu = 20.0
|
||
h = 1.0
|
||
P = 2*pi
|
||
A = pi
|
||
α = h
|
||
β = sqrt((h*P)/(k*A))
|
||
T0 = 100.0
|
||
C = [1.0 1.0; (α+k*β)*exp(β*L) (α-k*β)*exp(-β*L)] \ [T0-Tu, 0]
|
||
T(x) = dot(C, [exp(β*x), exp(-β*x)]) + Tu
|
||
|
||
T_diff = []
|
||
for x in linspace(0, 20)
|
||
T_FEM = problem("temperature", [x, 0.0, 0.0])[1]
|
||
T_ACC = T(x)
|
||
push!(T_diff, norm(T_FEM - T_ACC))
|
||
info("x = $x, T_FEM = $T_FEM, T_ACC = $T_ACC")
|
||
end
|
||
info("mean diff = ", mean(T_diff))
|
||
# mean diff = 1.14
|
||
@test mean(T_diff) < 1.2
|
||
end
|
||
|