elasticity equations

This commit is contained in:
Jukka Aho
2015-10-22 07:00:13 +03:00
parent 0dae6314ce
commit f5f25a82c3
3 changed files with 339 additions and 880 deletions
File diff suppressed because it is too large Load Diff
+9
View File
@@ -51,7 +51,16 @@ function interpolate(fields::FieldSet, t::Number)
return f
end
function call(fieldset::FieldSet, time::Number)
interpolate(fieldset, time)
end
function interpolate(basis::Basis, field::Field, ip::IntegrationPoint)
interpolate(basis, field, ip.xi)
end
function dinterpolate(N::Basis, u::Field, xi::Array{Float64, 1})
dN = diff(N)
dN(xi)*u
end
+36
View File
@@ -47,6 +47,42 @@ function Base.(:+)(f1::Field, f2::Field)
Field(f1.time, f1.values + f2.values)
end
""" Return data from field as a long array.
Examples
--------
>>> f = Field(0.0, Vector[[1.0, 2.0], [3.0, 4.0]])
>>> f[:]
[1.0, 2.0, 3.0, 4.0]
"""
function Base.getindex(field::Field, c::Colon)
[field.values...;]
end
""" Return field similar to input but with new data in it.
Examples
--------
>>> f = Field(0.5, Vector[[1.0, 2.0], [3.0, 4.0]])
>>> similar(f, ones(4))
JuliaFEM.Field{Array{Array{T,1},1}}(0.5,1,Array{T,1}[[1.0,1.0],[1.0,1.0]])
"""
function Base.similar(field::Field, data::Vector)
new_field = Field(field.time, similar(field.values))
data = reshape(data, round(Int, length(data)/length(field)), length(field))
for i=1:length(new_field)
new_field.values[i] = data[:,i]
end
new_field
end
""" FieldSet is set of fields, each field can have different time and/or increment. """