comparison src/SbpOperators/quadrature/diagonal_quadrature.jl @ 558:9b5710ae6587 feature/quadrature_as_outer_product

Update documentation
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Sun, 29 Nov 2020 22:06:53 +0100
parents 3c18a15934a7
children 04d7b4eb63ef
comparison
equal deleted inserted replaced
557:3c18a15934a7 558:9b5710ae6587
31 export DiagonalQuadrature 31 export DiagonalQuadrature
32 32
33 """ 33 """
34 DiagonalQuadrature(g, quadrature_closure) 34 DiagonalQuadrature(g, quadrature_closure)
35 35
36 Constructs the `DiagonalQuadrature` `H` on the `EquidistantGrid` `g` with 36 Constructs the `DiagonalQuadrature` on the `EquidistantGrid` `g` with
37 `H.closure` specified by `quadrature_closure`. 37 closure given by `quadrature_closure`.
38 """ 38 """
39 function DiagonalQuadrature(g::EquidistantGrid{1}, quadrature_closure) 39 function DiagonalQuadrature(g::EquidistantGrid{1}, quadrature_closure)
40 return DiagonalQuadrature(spacing(g)[1], quadrature_closure, size(g)) 40 return DiagonalQuadrature(spacing(g)[1], quadrature_closure, size(g))
41 end 41 end
42 42
43 """
44 range_size(H::DiagonalQuadrature)
45
46 The size of an object in the range of `H`
47 """
43 LazyTensors.range_size(H::DiagonalQuadrature) = H.size 48 LazyTensors.range_size(H::DiagonalQuadrature) = H.size
49
50 """
51 domain_size(H::DiagonalQuadrature)
52
53 The size of an object in the domain of `H`
54 """
44 LazyTensors.domain_size(H::DiagonalQuadrature) = H.size 55 LazyTensors.domain_size(H::DiagonalQuadrature) = H.size
45 56
46 """ 57 """
47 apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i) where T 58 apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i) where T
48 Implements the application `(H*v)[i]` an `Index{R}` where `R` is one of the regions 59 Implements the application `(H*v)[i]` an `Index{R}` where `R` is one of the regions
49 `Lower`,`Interior`,`Upper`. 60 `Lower`,`Interior`,`Upper`. If `i` is another type of index (e.g an `Int`) it will first
61 be converted to an `Index{R}`.
50 """ 62 """
51 function LazyTensors.apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i::Index{Lower}) where T 63 function LazyTensors.apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i::Index{Lower}) where T
52 return @inbounds H.h*H.closure[Int(i)]*v[Int(i)] 64 return @inbounds H.h*H.closure[Int(i)]*v[Int(i)]
53 end 65 end
54 66
55 function LazyTensors.apply(H::DiagonalQuadrature{T},v::AbstractVector{T}, i::Index{Upper}) where T 67 function LazyTensors.apply(H::DiagonalQuadrature{T},v::AbstractVector{T}, i::Index{Upper}) where T
56 N = length(v); 68 N = length(v); #TODO: Use dim_size here?
57 return @inbounds H.h*H.closure[N-Int(i)+1]*v[Int(i)] 69 return @inbounds H.h*H.closure[N-Int(i)+1]*v[Int(i)]
58 end 70 end
59 71
60 function LazyTensors.apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i::Index{Interior}) where T 72 function LazyTensors.apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i::Index{Interior}) where T
61 return @inbounds H.h*v[Int(i)] 73 return @inbounds H.h*v[Int(i)]
62 end 74 end
63 75
64 function LazyTensors.apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i) where T 76 function LazyTensors.apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, i) where T
65 N = length(v); 77 N = length(v); #TODO: Use dim_size here?
66 r = getregion(i, closure_size(H), N) 78 r = getregion(i, closure_size(H), N)
67
68 return LazyTensors.apply(H, v, Index(i, r)) 79 return LazyTensors.apply(H, v, Index(i, r))
69 end 80 end
70 81
71 """ 82 """
72 apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, I::Index) where T 83 apply(H::DiagonalQuadrature{T}, v::AbstractVector{T}, I::Index) where T