mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-20 10:08:31 +00:00
Merge branch 'master' of github.com:ovainola/JuliaFEM
This commit is contained in:
+1
-1
@@ -8,7 +8,7 @@ notifications:
|
||||
email: false
|
||||
script:
|
||||
- if [[ -a .git/shallow ]]; then git fetch --unshallow; fi
|
||||
- julia -e 'Pkg.init(); Pkg.clone(pwd()); Pkg.build("JuliaFEM"); Pkg.test("JuliaFEM"; coverage=true)'
|
||||
- julia -e 'Pkg.init(); Pkg.clone(pwd()); Pkg.build("JuliaFEM"); println(pwd()) ;Pkg.test("JuliaFEM"; coverage=true)'
|
||||
after_success:
|
||||
- julia -e 'cd(Pkg.dir("JuliaFEM")); Pkg.add("Coverage"); using Coverage; Coveralls.submit(Coveralls.process_folder())'
|
||||
|
||||
|
||||
@@ -142,4 +142,62 @@ function get_nodes(model, node_ids)
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
@doc """Add new elements to model.
|
||||
Parameters
|
||||
----------
|
||||
list of dicts, dict = {element_type => elcode, elids => [node ids..]}
|
||||
|
||||
Examples
|
||||
--------
|
||||
Create two tet4 element and add them:
|
||||
|
||||
>>> m = new_model()
|
||||
>>> const TET4 = 0x6
|
||||
>>> el1 = Dict("element_type" => TET4, "node_ids" => [1, 2, 3, 4])
|
||||
>>> el2 = Dict("element_type" => TET4, "node_ids" => [4, 3, 2, 1])
|
||||
|
||||
In dict key means element id
|
||||
|
||||
>>> elements = Dict(1 => el1, 2 => el2)
|
||||
>>> add_elements(m, elements)
|
||||
|
||||
""" ->
|
||||
function add_elements(model, elements)
|
||||
elfield = get_field(model.elements, "connectivity"; create_if_doesnt_exist=true)
|
||||
eltyfield = get_field(model.elements, "element_type"; create_if_doesnt_exist=true)
|
||||
for (elid, element) in elements
|
||||
println("Adding element ", elid)
|
||||
elfield[elid] = element["node_ids"]
|
||||
eltyfield[elid] = element["element_type"]
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
@doc """Get subset of elements from model.
|
||||
Parameters
|
||||
----------
|
||||
element_ids : list of ints
|
||||
Element id numbers
|
||||
|
||||
Returns
|
||||
-------
|
||||
Dict
|
||||
{element_type = XXX, node_ids = [a, b, c, d, e, ..., n]}
|
||||
""" ->
|
||||
function get_elements(model, element_ids)
|
||||
eltyfield = get_field(model.elements, "element_type")
|
||||
elfield = get_field(model.elements, "connectivity")
|
||||
ret = Dict()
|
||||
for i in element_ids
|
||||
ret[i] = Dict("element_type" => eltyfield[i], "node_ids" => elfield[i])
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
|
||||
|
||||
end # module
|
||||
|
||||
@@ -74,6 +74,49 @@ function test_print()
|
||||
end
|
||||
test_print()
|
||||
|
||||
function test_add_element()
|
||||
m = new_model()
|
||||
nodes = Dict(1 => [0.0, 0.0, 0.0],
|
||||
2 => [1.0, 0.0, 0.0],
|
||||
3 => [0.0, 1.0, 0.0],
|
||||
4 => [0.0, 0.0, 1.0])
|
||||
add_nodes(m, nodes)
|
||||
el1 = Dict("element_type" => 0x6, "node_ids" => [1, 2, 3, 4])
|
||||
el2 = Dict("element_type" => 0x6, "node_ids" => [4, 3, 2, 1])
|
||||
elements = Dict(1 => el1, 2 => el2)
|
||||
add_elements(m, elements)
|
||||
println(m)
|
||||
@test m.elements["element_type"][1] == 0x6
|
||||
@test m.elements["connectivity"][1] == [1, 2, 3, 4]
|
||||
end
|
||||
test_add_element()
|
||||
|
||||
|
||||
function test_get_element()
|
||||
m = new_model()
|
||||
nodes = Dict(1 => [0.0, 0.0, 0.0],
|
||||
2 => [1.0, 0.0, 0.0],
|
||||
3 => [0.0, 1.0, 0.0],
|
||||
4 => [0.0, 0.0, 1.0])
|
||||
add_nodes(m, nodes)
|
||||
el1 = Dict("element_type" => 0x6, "node_ids" => [1, 2, 3, 4])
|
||||
el2 = Dict("element_type" => 0x6, "node_ids" => [4, 3, 2, 1])
|
||||
elements = Dict(1 => el1, 2 => el2)
|
||||
#println(elements)
|
||||
add_elements(m, elements)
|
||||
#println(m)
|
||||
# get elements by element id
|
||||
els = get_elements(m, [1])
|
||||
#println(els)
|
||||
@test length(els) == 1
|
||||
@test 1 in keys(els)
|
||||
@test els[1]["element_type"] == 0x6
|
||||
@test els[1]["node_ids"] == [1, 2, 3, 4]
|
||||
end
|
||||
test_get_element()
|
||||
|
||||
|
||||
|
||||
# write your own tests here
|
||||
# @test 1 == JuliaFEM.test()
|
||||
# @test_approx_eq 1.0 1.0
|
||||
|
||||
Reference in New Issue
Block a user