Skip to content

Commit

Permalink
Give meaningful error message when assembling continuum elasticity pr…
Browse files Browse the repository at this point in the history
…oblem fails

Sometimes user may have the wrong kind of elements in element set when
assembling 3d continuum problem. This could happen for example in
situations, where mesher is giving also segment elements. They may have
some use in certain situations, but currently we don't support them.
When assembly is failing for this reasons, we give a meaningful error
message:

[ Info: It looks that you are trying to assemble elements of type Seg3
to 3d continuum problem. However, they are not supported yet. To filter
out elements from a element set, try `filter(element->!isa(element,
Element{Seg3}), elements)`
ERROR: LoadError: Tried to assemble unsupported elements of type Seg3 to
3d continuum problem.

This commit closes issue #211.
  • Loading branch information
ahojukka5 committed Oct 13, 2019
1 parent d041f1f commit 170c01f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/problems_elasticity.jl
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,22 @@ function assemble!(assembly::Assembly,
end
end

"""
assemble!(assembly, problem, elements, time, ::Type{Val{:continuum}})
Assemble all other elements for continuum elasticity problems. Basically,
do nothing.
"""
function assemble!(assembly::Assembly,
problem::Problem{Elasticity},
elements::Vector{Element{El}},
time, ::Type{Val{:continuum}}) where El
@info("It looks that you are trying to assemble elements of type $El to 3d continuum "*
"problem. However, they are not supported yet. To filter out elements from a "*
"element set, try `filter(element->!isa(element, Element{$El}), elements)`")
error("Tried to assemble unsupported elements of type $El to 3d continuum problem.")
end

""" Return strain tensor. """
function get_strain_tensor(problem, element, ip, time)
gradu = element("displacement", ip, time, Val{:Grad})
Expand Down
12 changes: 12 additions & 0 deletions test/test_problems_elasticity_assemble_3d_seg3.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# This file is a part of JuliaFEM.
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md

using JuliaFEM, Test

# Test that if 3d continuum problem have some elements we don't know how to
# deal with, raise error with clear message

elements = [Element(Seg3, (1, 2, 3))]
problem = Problem(Elasticity, "test seg3", 3)
add_elements!(problem, elements)
@test_throws ErrorException assemble!(problem, 0.0)

0 comments on commit 170c01f

Please sign in to comment.