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() |