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