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 3a548fe
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 34 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
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_elements!(problem, 0.0) == nothing

0 comments on commit 3a548fe

Please sign in to comment.