Files
JuliaFEM.jl/test/test_preprocess_abaqus_reader.jl
T

82 lines
3.1 KiB
Julia
Raw Normal View History

2015-06-25 21:17:29 +03:00
# This file is a part of JuliaFEM.
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md
2016-06-19 20:01:37 +03:00
using JuliaFEM
using JuliaFEM.Preprocess
using JuliaFEM.Abaqus
using JuliaFEM.Testing
2015-06-25 19:58:26 +03:00
2016-06-19 20:01:37 +03:00
@testset "read inp file" begin
2016-11-17 18:54:08 +02:00
model = open(parse_abaqus, joinpath(Pkg.dir("JuliaFEM"),"geometry","3d_beam","palkki.inp"))
2015-11-26 05:42:16 +02:00
@test length(model["nodes"]) == 298
@test length(model["elements"]) == 120
2016-07-03 05:00:01 +03:00
@test length(model["elsets"]["Body1"]) == 120
2015-11-26 05:42:16 +02:00
@test length(model["nsets"]["SUPPORT"]) == 9
@test length(model["nsets"]["LOAD"]) == 9
@test length(model["nsets"]["TOP"]) == 83
2015-06-25 21:17:29 +03:00
end
2016-06-19 20:01:37 +03:00
@testset "test read element section" begin
2015-12-01 12:23:51 +02:00
data = """*ELEMENT, TYPE=C3D10, ELSET=BEAM
2015-08-22 20:55:24 +03:00
1, 243, 240, 191, 117, 245, 242, 244,
1, 2, 196
2, 204, 199, 175, 130, 207, 208, 209,
3, 4, 176
"""
2015-12-01 12:23:51 +02:00
data = split(data, "\n")
model = Dict{AbstractString, Any}()
model["nsets"] = Dict{AbstractString, Vector{Int}}()
model["elsets"] = Dict{AbstractString, Vector{Int}}()
model["elements"] = Dict{Integer, Any}()
parse_section(model, data, :ELEMENT, 1, 5, Val{:ELEMENT})
2015-11-26 05:42:16 +02:00
@test length(model["elements"]) == 2
2015-12-01 12:23:51 +02:00
@test model["elements"][1]["connectivity"] == [243, 240, 191, 117, 245, 242, 244, 1, 2, 196]
@test model["elements"][2]["connectivity"] == [204, 199, 175, 130, 207, 208, 209, 3, 4, 176]
2015-11-26 05:42:16 +02:00
@test model["elsets"]["BEAM"] == [1, 2]
end
@testset "parse nodes from abaqus .inp file to Mesh" begin
2016-11-17 18:54:08 +02:00
fn = joinpath(Pkg.dir("JuliaFEM"), "test", "testdata","cube_tet4.inp")
mesh = abaqus_read_mesh(fn)
2016-11-17 18:54:08 +02:00
info(mesh.surface_sets)
@test length(mesh.nodes) == 10
@test length(mesh.elements) == 17
@test haskey(mesh.elements, 1)
@test mesh.elements[1] == [8, 10, 1, 2]
@test mesh.element_types[1] == :Tet4
@test haskey(mesh.node_sets, :SYM12)
@test haskey(mesh.element_sets, :CUBE)
2016-11-17 18:54:08 +02:00
@test haskey(mesh.surface_sets, :LOAD)
@test haskey(mesh.surface_sets, :ORDER)
@test length(mesh.surface_sets[:LOAD]) == 2
@test mesh.surface_sets[:LOAD][1] == (16, :S1)
@test mesh.surface_types[:LOAD] == :ELEMENT
@test length(Set(map(size, values(mesh.nodes)))) == 1
elements = create_surface_elements(mesh,:LOAD)
2016-11-17 18:54:08 +02:00
@test get_connectivity(elements[1]) == [8,10,9]
2016-07-03 21:16:03 +03:00
end
2016-11-17 19:43:20 +02:00
@testset "parse nodes from abaqus .inp file to Mesh (NX export)" begin
fn = joinpath(Pkg.dir("JuliaFEM"), "test", "testdata","nx_export_problem.inp")
mesh = abaqus_read_mesh(fn)
@test length(mesh.nodes) == 3
end
2016-11-28 10:09:48 +02:00
@testset "parse abaqus .inp created using hypermesh" begin
data = """
**
** ABAQUS Input Deck Generated by HyperMesh Version : 14.0.120.28
** Generated using HyperMesh-Abaqus Template Version : 14.0.120
**
** Template: ABAQUS/STANDARD 3D
**
*NODE , Nset = nset_csys0
1, 2.649428 , -21.93735 , 217.2934
2, 27.54531 , 1.108443 , 228.8077
"""
fn = tempname() * ".inp"
open(fn, "w") do fid write(fid, data) end
mesh = abaqus_read_mesh(fn)
@test length(mesh.nodes) == 2
end