From cbc85ee665506710acd44799b50daad8946b8cb2 Mon Sep 17 00:00:00 2001 From: Jukka Aho Date: Sat, 29 Jul 2017 10:51:19 +0300 Subject: [PATCH] Move Abaqus-related functions to own file (#137) --- src/JuliaFEM.jl | 3 +++ src/preprocess.jl | 44 --------------------------------- src/preprocess_abaqus_reader.jl | 44 +++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 44 deletions(-) create mode 100644 src/preprocess_abaqus_reader.jl diff --git a/src/JuliaFEM.jl b/src/JuliaFEM.jl index 73eedd5..7649e38 100644 --- a/src/JuliaFEM.jl +++ b/src/JuliaFEM.jl @@ -138,6 +138,9 @@ export create_elements, Mesh, add_node!, add_nodes!, add_element!, find_nearest_nodes, find_nearest_node, reorder_element_connectivity!, create_node_set_from_element_set! +include("preprocess_abaqus_reader.jl") +export abaqus_read_mesh, create_surface_elements + include("preprocess_aster_reader.jl") export aster_create_elements, parse_aster_med_file, is_aster_mail_keyword, parse_aster_header, aster_parse_nodes, aster_renumber_nodes!, diff --git a/src/preprocess.jl b/src/preprocess.jl index 1c8a552..89d9ac6 100644 --- a/src/preprocess.jl +++ b/src/preprocess.jl @@ -228,47 +228,3 @@ function JuliaFEM.Problem{P<:BoundaryProblem}(mesh::Mesh, ::Type{P}, name, dimen problem.elements = create_elements(mesh, name) return problem end - -using AbaqusReader - -function abaqus_read_mesh(fn::String) - m = AbaqusReader.abaqus_read_mesh(fn) - return Mesh(m) -end - -""" - create_surface_elements(mesh::Mesh, surface_name::Symbol) - -Create a set of surface elements from solid elements. - -Notation follow what is defined in ABAQUS. For example, if solid elements -are Tet10, surface elements will be Tri6 and they can be used to define -boundary conditions. -""" -function create_surface_elements(mesh::Mesh, surface_name::Symbol) - elements = Element[] - for (elid, elsi) in mesh.surface_sets[surface_name] - elty = mesh.element_types[elid] - elco = mesh.elements[elid] - chel, chcon = AbaqusReader.create_surface_element(elty, elsi, elco) - ch = Element(getfield(JuliaFEM, chel), chcon) - push!(elements, ch) - end - update!(elements, "geometry", mesh.nodes) - return elements -end - -""" - create_surface_elements(mesh::Mesh, surface_name::String) - -Create a set of surface elements from solid elements. - -Notation follow what is defined in ABAQUS. For example, if solid elements -are Tet10, surface elements will be Tri6 and they can be used to define -boundary conditions. -""" -function create_surface_elements(mesh::Mesh, surface_name::String) - return create_surface_elements(mesh, Symbol(surface_name)) -end - -export abaqus_read_mesh, create_surface_elements diff --git a/src/preprocess_abaqus_reader.jl b/src/preprocess_abaqus_reader.jl new file mode 100644 index 0000000..070bc1a --- /dev/null +++ b/src/preprocess_abaqus_reader.jl @@ -0,0 +1,44 @@ +# This file is a part of JuliaFEM. +# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md + +using AbaqusReader + +function abaqus_read_mesh(fn::String) + m = AbaqusReader.abaqus_read_mesh(fn) + return Mesh(m) +end + +""" + create_surface_elements(mesh::Mesh, surface_name::Symbol) + +Create a set of surface elements from solid elements. + +Notation follow what is defined in ABAQUS. For example, if solid elements +are Tet10, surface elements will be Tri6 and they can be used to define +boundary conditions. +""" +function create_surface_elements(mesh::Mesh, surface_name::Symbol) + elements = Element[] + for (elid, elsi) in mesh.surface_sets[surface_name] + elty = mesh.element_types[elid] + elco = mesh.elements[elid] + chel, chcon = AbaqusReader.create_surface_element(elty, elsi, elco) + ch = Element(getfield(JuliaFEM, chel), chcon) + push!(elements, ch) + end + update!(elements, "geometry", mesh.nodes) + return elements +end + +""" + create_surface_elements(mesh::Mesh, surface_name::String) + +Create a set of surface elements from solid elements. + +Notation follow what is defined in ABAQUS. For example, if solid elements +are Tet10, surface elements will be Tri6 and they can be used to define +boundary conditions. +""" +function create_surface_elements(mesh::Mesh, surface_name::String) + return create_surface_elements(mesh, Symbol(surface_name)) +end