changeset 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 a6deaf70862b
children 8583f6379bd8
files src/Grids/mapped_grid.jl
diffstat 1 files changed, 10 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/Grids/mapped_grid.jl	Tue Oct 01 11:37:51 2024 +0200
+++ b/src/Grids/mapped_grid.jl	Tue Oct 01 11:46:22 2024 +0200
@@ -172,7 +172,7 @@
 """
 function normal(g::MappedGrid, boundary)
     b_indices = boundary_indices(g, boundary)
-    σ =_boundary_sign(component_type(g), boundary)
+    σ = _boundary_sign(component_type(g), boundary)
     return map(jacobian(g)[b_indices...]) do ∂x∂ξ
         ∂ξ∂x = inv(∂x∂ξ)
         k = grid_id(boundary)
@@ -180,6 +180,15 @@
     end
 end
 
+function normal(g::MappedGrid, boundary, i)
+    σ = _boundary_sign(component_type(g), boundary)
+    ∂ξ∂x = inv(jacobian(g)[i])
+
+    k = grid_id(boundary)
+    return σ*∂ξ∂x[k,:]/norm(∂ξ∂x[k,:])
+end
+
+
 function _boundary_sign(T, boundary)
     if boundary_id(boundary) == UpperBoundary()
         return one(T)