Mercurial > repos > public > sbplib_julia
comparison src/Grids/mapped_grid.jl @ 1660:6d196fb85133 feature/sbp_operators/laplace_curvilinear
Merge feature/grids/curvilinear
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Fri, 28 Jun 2024 17:04:05 +0200 |
| parents | 8250cf5a3ce9 3bbcd496e021 |
| children | a4c52ae93b11 |
comparison
equal
deleted
inserted
replaced
| 1658:cc9d18a5ff2d | 1660:6d196fb85133 |
|---|---|
| 79 return map(jacobian(g)) do ∂x∂ξ | 79 return map(jacobian(g)) do ∂x∂ξ |
| 80 inv(∂x∂ξ'*∂x∂ξ) | 80 inv(∂x∂ξ'*∂x∂ξ) |
| 81 end | 81 end |
| 82 end | 82 end |
| 83 | 83 |
| 84 """ | |
| 85 normal(g::MappedGrid, boundary) | |
| 86 | |
| 87 The outward pointing normal as a grid function on the boundary | |
| 88 """ | |
| 89 function normal(g::MappedGrid, boundary) | |
| 90 b_indices = boundary_indices(g, boundary) | |
| 91 σ =_boundary_sign(component_type(g), boundary) | |
| 92 return map(jacobian(g)[b_indices...]) do ∂x∂ξ | |
| 93 ∂ξ∂x = inv(∂x∂ξ) | |
| 94 k = grid_id(boundary) | |
| 95 σ*∂ξ∂x[k,:]/norm(∂ξ∂x[k,:]) | |
| 96 end | |
| 97 end | |
| 98 | |
| 99 function _boundary_sign(T, boundary) | |
| 100 if boundary_id(boundary) == Upper() | |
| 101 return one(T) | |
| 102 elseif boundary_id(boundary) == Lower() | |
| 103 return -one(T) | |
| 104 else | |
| 105 throw(ArgumentError("The boundary identifier must be either `Lower()` or `Upper()`")) | |
| 106 end | |
| 107 end |
