Skip to content

Commit

Permalink
Refactoring code
Browse files Browse the repository at this point in the history
- Hopefully someday coming 2d implementation is in separate file beam2d.jl.
- Instead of import FEMBase: <function>, use directly FEMBase.<function>
  • Loading branch information
ahojukka5 committed Jul 3, 2018
1 parent a633891 commit e1502d9
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 38 deletions.
23 changes: 1 addition & 22 deletions src/FEMBeam.jl
Original file line number Diff line number Diff line change
Expand Up @@ -10,31 +10,10 @@ using Reexport
include("get_beam_stiffness_matrix_2d.jl")
include("get_beam_forces_vector_2d.jl")
include("get_beam_mass_matrix_2d.jl")

import FEMBase: get_unknown_field_name,
get_formulation_type,
assemble_elements!

type Beam2D <: FieldProblem
end

function get_unknown_field_name(::Problem{Beam2D})
return "displacement"
end

function assemble_elements!{B}(::Problem{Beam2D}, ::Assembly,
elements::Vector{Element{B}}, ::Float64)

for element in elements
info("Not doing anything useful right now.")
end

end

include("beam2d.jl")
export Beam2D

include("beam3d.jl")

export Beam

end
19 changes: 19 additions & 0 deletions src/beam2d.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# This file is a part of JuliaFEM.
# License is MIT: see https://github.com/JuliaFEM/FEMBeam.jl/blob/master/LICENSE

type Beam2D <: FieldProblem
end

function FEMBase.get_unknown_field_name(::Problem{Beam2D})
return "displacement"
end

function FEMBase.assemble_elements!{B}(::Problem{Beam2D}, ::Assembly,
elements::Vector{Element{B}}, ::Float64)

for element in elements
info("Not doing anything useful right now.")
end

return nothing
end
20 changes: 8 additions & 12 deletions src/beam3d.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,13 @@ Euler-Bernoulli beam, 3d formulation.
type Beam <: FieldProblem
end

import FEMBase: get_unknown_field_name,
get_formulation_type,
assemble_elements!,
get_integration_points
using FEMQuad: get_quadrature_points

function get_unknown_field_name(::Problem{Beam})
function FEMBase.get_unknown_field_name(::Problem{Beam})
return "displacement"
end

function get_integration_points(::Problem{Beam}, ::Element{Seg2})
function FEMBase.get_integration_points(::Problem{Beam}, ::Element{Seg2})
return get_quadrature_points(Val{:GLSEG3})
end

Expand Down Expand Up @@ -68,8 +64,8 @@ function get_rotation_matrix(X1, X2, n1)
return T
end

function assemble_elements!(problem::Problem{Beam}, assembly::Assembly,
elements::Vector{Element{Seg2}}, time::Float64)
function FEMBase.assemble_elements!(problem::Problem{Beam}, assembly::Assembly,
elements::Vector{Element{Seg2}}, time::Float64)

B = zeros(4, 12)
N = zeros(6, 12)
Expand Down Expand Up @@ -230,12 +226,12 @@ function assemble_elements!(problem::Problem{Beam}, assembly::Assembly,
add!(assembly.f, gdofs, fe)
end

nothing
return nothing

end

function assemble_elements!(problem::Problem{Beam}, assembly::Assembly,
elements::Vector{Element{Poi1}}, time::Float64)
function FEMBase.assemble_elements!(problem::Problem{Beam}, assembly::Assembly,
elements::Vector{Element{Poi1}}, time::Float64)

for element in elements
gdofs = get_gdofs(problem, element)
Expand Down Expand Up @@ -263,6 +259,6 @@ function assemble_elements!(problem::Problem{Beam}, assembly::Assembly,
end
end

nothing
return nothing

end
12 changes: 8 additions & 4 deletions test/runtests.jl
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
# This file is a part of JuliaFEM.
# License is MIT: see https://github.com/JuliaFEM/FEMBeam.jl/blob/master/LICENSE

using FEMBase
using FEMBeam

using Base.Test
using FEMBase.Test

@testset "Beam 1 Stiffness matrix" begin
X1=[0.0,0.0]; X2=[0.0,6.5]
Expand Down Expand Up @@ -129,6 +127,10 @@ m_expected=
@test isapprox(m, m_expected, rtol=0.0001)
end

@testset "test beam 2d" begin
include("test_beam2d.jl")
end

@testset "test beam 3D stiffness" begin
include("test_beam3d_ex1.jl")
end
Expand All @@ -141,4 +143,6 @@ end
include("test_supports.jl")
end

@testset "test_rotation_matrix.jl" begin include("test_rotation_matrix.jl") end
@testset "test_rotation_matrix.jl" begin
include("test_rotation_matrix.jl")
end
11 changes: 11 additions & 0 deletions test/test_beam2d.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# This file is a part of JuliaFEM.
# License is MIT: see https://github.com/JuliaFEM/FEMBeam.jl/blob/master/LICENSE

using FEMBeam
using FEMBase.Test
beam_element = Element(Seg2, [1, 2])
problem = Problem(Beam2D, "test problem", 3)
add_elements!(problem, [beam_element])

@test get_unknown_field_name(problem) == "displacement"
@test assemble!(problem, 0.0) == nothing

0 comments on commit e1502d9

Please sign in to comment.