Mercurial > repos > public > sbplib_julia
comparison src/SbpOperators/volumeops/laplace/laplace.jl @ 871:86776d06b883 feature/laplace_opset
REVIEW: Move export statements. Some to the top of the file and some to SbpOperators.jl since they seem more general
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Tue, 25 Jan 2022 08:19:02 +0100 |
| parents | c4dd4ceb2d40 |
| children | 067a322e4f73 0bf5952c240d |
comparison
equal
deleted
inserted
replaced
| 870:c4dd4ceb2d40 | 871:86776d06b883 |
|---|---|
| 1 export Laplace | |
| 2 export laplace | |
| 3 # REVIEW: Makes more sense to me to have the exports at the top of the file. | |
| 4 # Might as well start fixing that. | |
| 5 | |
| 1 # REVIEW: The style of name `Laplace` might clash with other concepts. When | 6 # REVIEW: The style of name `Laplace` might clash with other concepts. When |
| 2 # thinking about implementing the variable second derivative I think I will | 7 # thinking about implementing the variable second derivative I think I will |
| 3 # have to create it as a full TM for the full dimensional problem instead of | 8 # have to create it as a full TM for the full dimensional problem instead of |
| 4 # building it as a 1D operator and then use that with outer products. The | 9 # building it as a 1D operator and then use that with outer products. The |
| 5 # natural name there would be `VariableSecondDerivative` (or something | 10 # natural name there would be `VariableSecondDerivative` (or something |
| 36 H_inv::TensorMapping # Inverse inner product operator | 41 H_inv::TensorMapping # Inverse inner product operator |
| 37 e::StaticDict{<:BoundaryIdentifier,<:TensorMapping} # Boundary restriction operators. | 42 e::StaticDict{<:BoundaryIdentifier,<:TensorMapping} # Boundary restriction operators. |
| 38 d::StaticDict{<:BoundaryIdentifier,<:TensorMapping} # Normal derivative operators | 43 d::StaticDict{<:BoundaryIdentifier,<:TensorMapping} # Normal derivative operators |
| 39 H_boundary::StaticDict{<:BoundaryIdentifier,<:TensorMapping} # Boundary quadrature operators | 44 H_boundary::StaticDict{<:BoundaryIdentifier,<:TensorMapping} # Boundary quadrature operators |
| 40 end | 45 end |
| 41 export Laplace | |
| 42 | 46 |
| 43 function Laplace(grid, filename; order) | 47 function Laplace(grid, filename; order) |
| 44 | 48 |
| 45 # Read stencils | 49 # Read stencils |
| 46 stencil_set = read_stencil_set(filename; order) | 50 stencil_set = read_stencil_set(filename; order) |
| 82 inner_product(L::Laplace) | 86 inner_product(L::Laplace) |
| 83 | 87 |
| 84 Returns the inner product operator associated with `L` | 88 Returns the inner product operator associated with `L` |
| 85 """ | 89 """ |
| 86 inner_product(L::Laplace) = L.H | 90 inner_product(L::Laplace) = L.H |
| 87 export inner_product | |
| 88 | 91 |
| 89 | 92 |
| 90 """ | 93 """ |
| 91 inverse_inner_product(L::Laplace) | 94 inverse_inner_product(L::Laplace) |
| 92 | 95 |
| 93 Returns the inverse of the inner product operator associated with `L` | 96 Returns the inverse of the inner product operator associated with `L` |
| 94 """ | 97 """ |
| 95 inverse_inner_product(L::Laplace) = L.H_inv | 98 inverse_inner_product(L::Laplace) = L.H_inv |
| 96 export inverse_inner_product | |
| 97 | 99 |
| 98 | 100 |
| 99 """ | 101 """ |
| 100 boundary_restriction(L::Laplace, id::BoundaryIdentifier) | 102 boundary_restriction(L::Laplace, id::BoundaryIdentifier) |
| 101 boundary_restriction(L::Laplace, ids::Tuple) | 103 boundary_restriction(L::Laplace, ids::Tuple) |
| 112 # `BoundaryIdentifier`, for example we should be able to handle groups of | 114 # `BoundaryIdentifier`, for example we should be able to handle groups of |
| 113 # boundaries as a single `BoundaryIdentifier`. I don't know if we can figure | 115 # boundaries as a single `BoundaryIdentifier`. I don't know if we can figure |
| 114 # out the interface for that now or if we save it for the future but either | 116 # out the interface for that now or if we save it for the future but either |
| 115 # way these methods will be affected. | 117 # way these methods will be affected. |
| 116 | 118 |
| 117 export boundary_restriction | |
| 118 | 119 |
| 119 | 120 |
| 120 """ | 121 """ |
| 121 normal_derivative(L::Laplace, id::BoundaryIdentifier) | 122 normal_derivative(L::Laplace, id::BoundaryIdentifier) |
| 122 normal_derivative(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) | 123 normal_derivative(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) |
| 126 identified by id(s). | 127 identified by id(s). |
| 127 """ | 128 """ |
| 128 normal_derivative(L::Laplace, id::BoundaryIdentifier) = L.d[id] | 129 normal_derivative(L::Laplace, id::BoundaryIdentifier) = L.d[id] |
| 129 normal_derivative(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) where N = ntuple(i->L.d[ids[i]],N) | 130 normal_derivative(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) where N = ntuple(i->L.d[ids[i]],N) |
| 130 normal_derivative(L::Laplace, ids::Vararg{BoundaryIdentifier,N}) where N = ntuple(i->L.d[ids[i]],N) | 131 normal_derivative(L::Laplace, ids::Vararg{BoundaryIdentifier,N}) where N = ntuple(i->L.d[ids[i]],N) |
| 131 export normal_derivative | |
| 132 | 132 |
| 133 | 133 |
| 134 """ | 134 """ |
| 135 boundary_quadrature(L::Laplace, id::BoundaryIdentifier) | 135 boundary_quadrature(L::Laplace, id::BoundaryIdentifier) |
| 136 boundary_quadrature(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) | 136 boundary_quadrature(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) |
| 140 identified by id(s). | 140 identified by id(s). |
| 141 """ | 141 """ |
| 142 boundary_quadrature(L::Laplace, id::BoundaryIdentifier) = L.H_boundary[id] | 142 boundary_quadrature(L::Laplace, id::BoundaryIdentifier) = L.H_boundary[id] |
| 143 boundary_quadrature(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) where N = ntuple(i->L.H_boundary[ids[i]],N) | 143 boundary_quadrature(L::Laplace, ids::NTuple{N,BoundaryIdentifier}) where N = ntuple(i->L.H_boundary[ids[i]],N) |
| 144 boundary_quadrature(L::Laplace, ids::Vararg{BoundaryIdentifier,N}) where N = ntuple(i->L.H_boundary[ids[i]],N) | 144 boundary_quadrature(L::Laplace, ids::Vararg{BoundaryIdentifier,N}) where N = ntuple(i->L.H_boundary[ids[i]],N) |
| 145 export boundary_quadrature | |
| 146 | 145 |
| 147 | 146 |
| 148 """ | 147 """ |
| 149 laplace(grid::EquidistantGrid{Dim}, inner_stencil, closure_stencils) | 148 laplace(grid::EquidistantGrid{Dim}, inner_stencil, closure_stencils) |
| 150 | 149 |
| 163 for d = 2:dimension(grid) | 162 for d = 2:dimension(grid) |
| 164 Δ += second_derivative(grid, inner_stencil, closure_stencils, d) | 163 Δ += second_derivative(grid, inner_stencil, closure_stencils, d) |
| 165 end | 164 end |
| 166 return Δ | 165 return Δ |
| 167 end | 166 end |
| 168 export laplace |
