comparison diffOp.jl @ 135:bb1cc9c7877c boundary_conditions

Add outline of idea for implemenation of sats
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 21 Feb 2019 16:45:06 +0100
parents 1aaeb46ba5f4
children 755246142200
comparison
equal deleted inserted replaced
134:79699dda29be 135:bb1cc9c7877c
126 # Slow but maybe convenient? 126 # Slow but maybe convenient?
127 function apply(L::Laplace{2}, v::AbstractArray{T,2} where T, i::CartesianIndex{2}) 127 function apply(L::Laplace{2}, v::AbstractArray{T,2} where T, i::CartesianIndex{2})
128 I = Index{Unknown}.(Tuple(i)) 128 I = Index{Unknown}.(Tuple(i))
129 apply(L, v, I) 129 apply(L, v, I)
130 end 130 end
131
132 """
133 A BoundaryCondition should implement the method
134 sat(::DiffOp, v::AbstractArray, data::AbstractArray, ...)
135 """
136 abstract type BoundaryCondition end
137
138 struct Dirichlet <: BoundaryCondition
139 tau::Float64
140 # boundaryId??
141 end
142
143 struct Neumann <: BoundaryCondition
144 # boundaryId??
145 end
146
147 function sat(L::Laplace{2}, bc::Neumann, v::AbstractArray{T,2}, g::AbstractVector{T}, i::CartesianIndex{2})
148 # Hi * e * H_gamma * (d'*v - g)
149 # e, d, H_gamma applied based on bc.boundaryId
150 end
151
152 function sat(L::Laplace{2}, bc::Dirichlet, v::AbstractArray{T,2}, g::AbstractVector{T}, i::CartesianIndex{2})
153 # Hi * (tau/h*e + sig*d) * H_gamma * (e'*v - g)
154 # e, d, H_gamma applied based on bc.boundaryId
155 end
156