comparison src/SbpOperators/quadrature/quadrature.jl @ 356:0844069ab5ff refactor/remove_dynamic_size_tensormapping

Reinclude SbpOperators and fix most of the code and tests there.
author Jonatan Werpers <jonatan@werpers.com>
date Sun, 27 Sep 2020 22:51:31 +0200
parents 01b851161018
children 0546cb279fc2
comparison
equal deleted inserted replaced
355:5c9212a8ee4f 356:0844069ab5ff
4 4
5 Implements the quadrature operator `Q` of Dim dimension as a TensorMapping 5 Implements the quadrature operator `Q` of Dim dimension as a TensorMapping
6 The multi-dimensional tensor operator consists of a tuple of 1D DiagonalInnerProduct H 6 The multi-dimensional tensor operator consists of a tuple of 1D DiagonalInnerProduct H
7 tensor operators. 7 tensor operators.
8 """ 8 """
9 struct Quadrature{Dim,T<:Real,M} <: TensorOperator{T,Dim} 9 struct Quadrature{Dim,T<:Real,M} <: TensorMapping{T,Dim,Dim}
10 H::NTuple{Dim,DiagonalInnerProduct{T,M}} 10 H::NTuple{Dim,DiagonalInnerProduct{T,M}}
11 end 11 end
12 12
13 LazyTensors.domain_size(Q::Quadrature{Dim}, range_size::NTuple{Dim,Integer}) where {Dim} = range_size 13 function Quadrature(g::EquidistantGrid{Dim}, quadratureClosure) where Dim
14 H = ()
15 for i ∈ 1:Dim
16 H = (H..., DiagonalInnerProduct(subgrid(g,i), quadratureClosure))
17 end
18
19 return Quadrature(H)
20 end
21
22 LazyTensors.range_size(H::Quadrature) = getindex.(range_size.(H.H),1)
23 LazyTensors.domain_size(H::Quadrature) = getindex.(domain_size.(H.H),1)
14 24
15 function LazyTensors.apply(Q::Quadrature{Dim,T}, v::AbstractArray{T,Dim}, I::Vararg{Index,Dim}) where {T,Dim} 25 function LazyTensors.apply(Q::Quadrature{Dim,T}, v::AbstractArray{T,Dim}, I::Vararg{Index,Dim}) where {T,Dim}
16 error("not implemented") 26 error("not implemented")
17 end 27 end
18 28