2015-10-28 04:29:14 +02:00
|
|
|
# This file is a part of JuliaFEM.
|
|
|
|
|
# License is MIT: see https://github.com/JuliaFEM/JuliaFEM.jl/blob/master/LICENSE.md
|
|
|
|
|
|
|
|
|
|
# Functions to handle global assembly of problem
|
|
|
|
|
|
2015-11-24 03:06:56 +02:00
|
|
|
function assemble!(assembly::Assembly, problem::Problem, time::Number=0.0, empty_assembly::Bool=true)
|
|
|
|
|
if empty_assembly
|
|
|
|
|
empty!(assembly)
|
|
|
|
|
end
|
|
|
|
|
for equation in get_equations(problem)
|
|
|
|
|
assemble!(assembly, equation, time, problem)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function assemble(problem::Problem, time::Number=0.0)
|
|
|
|
|
assembly = Assembly()
|
2015-11-12 21:54:46 +02:00
|
|
|
for equation in get_equations(problem)
|
|
|
|
|
assemble!(assembly, equation, time, problem)
|
2015-10-28 04:29:14 +02:00
|
|
|
end
|
2015-11-24 03:06:56 +02:00
|
|
|
return assembly
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function Base.(:+)(ass1::Assembly, ass2::Assembly)
|
|
|
|
|
mass_matrix = ass1.mass_matrix + ass2.mass_matrix
|
|
|
|
|
stiffness_matrix = ass1.stiffness_matrix + ass2.stiffness_matrix
|
|
|
|
|
force_vector = ass1.force_vector + ass2.force_vector
|
|
|
|
|
return Assembly(mass_matrix, stiffness_matrix, force_vector)
|
2015-10-28 04:29:14 +02:00
|
|
|
end
|