Mercurial > repos > public > sbplib_julia
comparison src/Grids/mapped_grid.jl @ 1798:25dbb1c02ddc feature/grids/curvilinear
Add function for getting the normal in a given boundary point
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Tue, 01 Oct 2024 11:46:22 +0200 |
| parents | 4d55ac2892a2 |
| children | 8583f6379bd8 |
comparison
equal
deleted
inserted
replaced
| 1797:a6deaf70862b | 1798:25dbb1c02ddc |
|---|---|
| 170 | 170 |
| 171 The outward pointing normal as a grid function on the corresponding boundary grid. | 171 The outward pointing normal as a grid function on the corresponding boundary grid. |
| 172 """ | 172 """ |
| 173 function normal(g::MappedGrid, boundary) | 173 function normal(g::MappedGrid, boundary) |
| 174 b_indices = boundary_indices(g, boundary) | 174 b_indices = boundary_indices(g, boundary) |
| 175 σ =_boundary_sign(component_type(g), boundary) | 175 σ = _boundary_sign(component_type(g), boundary) |
| 176 return map(jacobian(g)[b_indices...]) do ∂x∂ξ | 176 return map(jacobian(g)[b_indices...]) do ∂x∂ξ |
| 177 ∂ξ∂x = inv(∂x∂ξ) | 177 ∂ξ∂x = inv(∂x∂ξ) |
| 178 k = grid_id(boundary) | 178 k = grid_id(boundary) |
| 179 σ*∂ξ∂x[k,:]/norm(∂ξ∂x[k,:]) | 179 σ*∂ξ∂x[k,:]/norm(∂ξ∂x[k,:]) |
| 180 end | 180 end |
| 181 end | 181 end |
| 182 | |
| 183 function normal(g::MappedGrid, boundary, i) | |
| 184 σ = _boundary_sign(component_type(g), boundary) | |
| 185 ∂ξ∂x = inv(jacobian(g)[i]) | |
| 186 | |
| 187 k = grid_id(boundary) | |
| 188 return σ*∂ξ∂x[k,:]/norm(∂ξ∂x[k,:]) | |
| 189 end | |
| 190 | |
| 182 | 191 |
| 183 function _boundary_sign(T, boundary) | 192 function _boundary_sign(T, boundary) |
| 184 if boundary_id(boundary) == UpperBoundary() | 193 if boundary_id(boundary) == UpperBoundary() |
| 185 return one(T) | 194 return one(T) |
| 186 elseif boundary_id(boundary) == LowerBoundary() | 195 elseif boundary_id(boundary) == LowerBoundary() |
