From 93b520fa2cfd88cfda70fb40d932700ac97aee7e Mon Sep 17 00:00:00 2001 From: Jukka Aho Date: Mon, 27 Feb 2017 08:27:08 +0200 Subject: [PATCH] Added backward compatibility --- src/JuliaFEM.jl | 3 ++- src/preprocess.jl | 11 ++++++++--- test/test_preprocess.jl | 4 ++-- test/test_preprocess/block_2d.med | Bin 0 -> 18949 bytes 4 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 test/test_preprocess/block_2d.med diff --git a/src/JuliaFEM.jl b/src/JuliaFEM.jl index 76e5816..8ed736a 100644 --- a/src/JuliaFEM.jl +++ b/src/JuliaFEM.jl @@ -128,7 +128,8 @@ module Preprocess include("preprocess.jl") export create_elements, Mesh, add_node!, add_nodes!, add_element!, add_elements!, add_element_to_element_set!, add_node_to_node_set!, - find_nearest_nodes, reorder_element_connectivity!, create_node_set_from_element_set! + find_nearest_nodes, find_nearest_node, reorder_element_connectivity!, + create_node_set_from_element_set! include("preprocess_abaqus_reader.jl") export parse_abaqus, parse_section, parse_element_section, abaqus_read_mesh, abaqus_read_model diff --git a/src/preprocess.jl b/src/preprocess.jl index 773f127..9e488ff 100644 --- a/src/preprocess.jl +++ b/src/preprocess.jl @@ -63,6 +63,10 @@ function create_node_set_from_element_set!(mesh::Mesh, set_names::String...) return end +function create_node_set_from_element_set!(mesh::Mesh, set_name::Symbol) + create_node_set_from_element_set!(mesh, string(set_name)) +end + function add_element!(mesh::Mesh, elid::Int, eltype::Symbol, connectivity::Vector{Int}) mesh.elements[elid] = connectivity mesh.element_types[elid] = eltype @@ -160,12 +164,13 @@ function find_nearest_nodes(mesh::Mesh, coords::Vector{Float64}, npts::Int=1; no s = sort(collect(dist), by=x->x[2]) nd = s[1:npts] # [(id1, dist1), (id2, dist2), ..., (id_npts, dist_npts)] node_ids = [n[1] for n in nd] - if length(node_ids) == 1 - return first(node_ids) - end return node_ids end +function find_nearest_node(mesh::Mesh, coords::Vector{Float64}; node_set=nothing) + return first(find_nearest_nodes(mesh, coords, 1; node_set=node_set)) +end + """ Apply new node ordering to elements. In JuliaFEM same node ordering is used than in ABAQUS and if mesh is parsed from FEM format with other node ordering diff --git a/test/test_preprocess.jl b/test/test_preprocess.jl index e9b8e9a..2509b88 100644 --- a/test/test_preprocess.jl +++ b/test/test_preprocess.jl @@ -39,8 +39,8 @@ end mesh = aster_read_mesh(meshfile) create_node_set_from_element_set!(mesh, "LOWER_LEFT", "UPPER_BOTTOM") # nid 1 coords = (0.0, 0.5), nid 13 coords = (0.0, 0.5) - nid = find_nearest_nodes(mesh, [0.0, 0.5]; node_set="LOWER_LEFT") + nid = find_nearest_node(mesh, [0.0, 0.5]; node_set="LOWER_LEFT") @test first(nid) == 1 - nid = find_nearest_nodes(mesh, [0.0, 0.5]; node_set="UPPER_BOTTOM") + nid = find_nearest_node(mesh, [0.0, 0.5]; node_set="UPPER_BOTTOM") @test first(nid) == 13 end diff --git a/test/test_preprocess/block_2d.med b/test/test_preprocess/block_2d.med new file mode 100644 index 0000000000000000000000000000000000000000..55e8b7a7287238055ab3c65ebfa5276f488d735a GIT binary patch literal 18949 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