AbaqusReader.jl icon indicating copy to clipboard operation
AbaqusReader.jl copied to clipboard

AbaqusReader.jl is a parse for ABAQUS FEM models. It's capable of parsing the geometry accurately, including surface sets, node sets, and other relevant geometrical data used in FEM calculations. Othe...

AbaqusReader.jl - parse ABAQUS mesh files to Julia

ci codecov docs-stable docs-dev

AbaqusReader.jl can be used to parse ABAQUS .inp file format. Two functions is exported: abaqus_read_mesh(filename::String) can be used to parse mesh to simple Dict-based structure. With function abaqus_read_model(filename::String) it's also possible to parse more information from model, like boundary conditions and steps.

Reading mesh is made simple:

using AbaqusReader
abaqus_read_mesh("cube_tet4.inp")
Dict{String,Dict} with 7 entries:
  "nodes"         => Dict(7=>[0.0, 10.0, 10.0],4=>[10.0, 0.0, 0.0],9=>[10.0, 10…
  "element_sets"  => Dict("CUBE"=>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1…
  "element_types" => Dict{Integer,Symbol}(Pair{Integer,Symbol}(2, :Tet4),Pair{I…
  "elements"      => Dict{Integer,Array{Integer,1}}(Pair{Integer,Array{Integer,…
  "surface_sets"  => Dict("LOAD"=>Tuple{Int64,Symbol}[(16, :S1), (8, :S1)],"ORD…
  "surface_types" => Dict("LOAD"=>:ELEMENT,"ORDER"=>:ELEMENT)
  "node_sets"     => Dict("SYM23"=>[5, 6, 7, 8],"SYM12"=>[5, 6, 3, 4],"NALL"=>[…

Like said, mesh is a simple dictionary containing other dictionaries like elements, nodes, element_sets and so on. This is a good starting point to construct own finite element implementations based on real models done using ABAQUS.

If boundary conditions are also requested, abaqus_read_model must be used:

model = abaqus_read_model("abaqus_file.inp")

This returns AbaqusReader.Model instance.

Supported elements

The following abaqus elements are supported, along with the corresponding number of nodes and the elemen_types key

abaqus element number of nodes element_types
C3D4 4 :Tet4
C3D4H 4 :Tet4
C3D6 6 :Wedge6
C3D8 8 :Hex8
C3D10 10 :Tet10
C3D20 20 :Hex20
C3D20E 20 :Hex20
S3 3 :Tri3
STRI65 6 :Tri6
CPS4 4 :Quad4
T2D2 2 :Seg2
T3D2 2 :Seg2
B33 2 :Seg2

adding new elments is very easy, just look at the first lines of /src/parse_mesh.jl