substructuring, fixed tests, possibility to save to integration points

This commit is contained in:
Jukka Aho
2015-11-30 16:04:13 +02:00
parent 38239bfa20
commit 458caa4757
18 changed files with 371 additions and 530 deletions
+22 -8
View File
@@ -21,34 +21,48 @@ fields
type IntegrationPoint
xi :: Vector
weight :: Float64
fields :: FieldSet
fields :: Dict{ASCIIString, Field}
changed :: Bool
end
function IntegrationPoint(xi, weight)
return IntegrationPoint(xi, weight, FieldSet())
return IntegrationPoint(xi, weight, FieldSet(), false)
end
function Base.convert(::Type{Number}, ip::IntegrationPoint)
function setindex!{T<:ForwardDiff.ForwardDiffNumber}(ip::IntegrationPoint, data::Array{T,2}, field_name::ASCIIString)
data = ForwardDiff.get_value(data)
setindex!(ip, data, field_name)
end
function setindex!(ip::IntegrationPoint, data, field_name)
ip.fields[field_name] = Field(data)
ip.changed = true
end
function getindex(ip::IntegrationPoint, field_name::ASCIIString)
ip.fields[field_name]
end
function convert(::Type{Number}, ip::IntegrationPoint)
return ip.xi
end
function Base.call(field::CVTI, ip::IntegrationPoint)
function call(field::CVTI, ip::IntegrationPoint)
return call(field, ip.xi)
end
function Base.call(basis::CVTI, field::DCTI, ip::IntegrationPoint)
function call(basis::CVTI, field::DCTI, ip::IntegrationPoint)
call(basis, field, ip.xi)
end
function Base.call(basis::CVTI, field::DVTI, ip::IntegrationPoint, ::Type{Val{:grad}})
function call(basis::CVTI, field::DVTI, ip::IntegrationPoint, ::Type{Val{:grad}})
call(basis, field, ip.xi, Val{:grad})
end
function Base.call(basis::CVTI, field::DVTI, ip::IntegrationPoint)
function call(basis::CVTI, field::DVTI, ip::IntegrationPoint)
call(basis, field, ip.xi)
end
function Base.call(basis::CVTI, geometry::DVTI, field::DVTI, ip::IntegrationPoint, ::Type{Val{:grad}})
function call(basis::CVTI, geometry::DVTI, field::Union{DCTI, DVTI}, ip::IntegrationPoint, ::Type{Val{:grad}})
call(basis, geometry, field, ip.xi, Val{:grad})
end