Mercurial > repos > public > sbplib_julia
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 |