comparison src/Grids/mapped_grid.jl @ 1695:a4c52ae93b11 feature/grids/manifolds

Merge feature/grids/curvilinear
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 28 Aug 2024 10:35:08 +0200
parents 13a7a4ff49e3 72776d3d5fd6
children 03894fd7b132
comparison
equal deleted inserted replaced
1686:b996c35dd647 1695:a4c52ae93b11
59 lg, 59 lg,
60 map(x,lg), 60 map(x,lg),
61 map(J,lg), 61 map(J,lg),
62 ) 62 )
63 end 63 end
64 # TODO: Delete this function
64 65
65 66
66 function jacobian_determinant(g::MappedGrid) 67 function jacobian_determinant(g::MappedGrid)
67 return map(jacobian(g)) do ∂x∂ξ 68 return map(jacobian(g)) do ∂x∂ξ
68 det(∂x∂ξ) 69 det(∂x∂ξ)
69 end 70 end
70 end 71 end
71 72
72 function geometric_tensor(g::MappedGrid) 73 function metric_tensor(g::MappedGrid)
73 return map(jacobian(g)) do ∂x∂ξ 74 return map(jacobian(g)) do ∂x∂ξ
74 ∂x∂ξ'*∂x∂ξ 75 ∂x∂ξ'*∂x∂ξ
75 end 76 end
76 end 77 end
77 78
78 function geometric_tensor_inverse(g::MappedGrid) 79 function metric_tensor_inverse(g::MappedGrid)
79 return map(jacobian(g)) do ∂x∂ξ 80 return map(jacobian(g)) do ∂x∂ξ
80 inv(∂x∂ξ'*∂x∂ξ) 81 inv(∂x∂ξ'*∂x∂ξ)
81 end 82 end
83 end
84
85 function min_spacing(g::MappedGrid{T,1} where T)
86 n, = size(g)
87
88 ms = Inf
89 for i ∈ 1:n-1
90 ms = min(ms, norm(g[i+1]-g[i]))
91 end
92
93 return ms
94 end
95
96 function min_spacing(g::MappedGrid{T,2} where T)
97 n, m = size(g)
98
99 ms = Inf
100 for i ∈ 1:n-1, j ∈ 1:m-1 # loop over each cell of the grid
101
102 ms = min(
103 ms,
104 norm(g[i+1,j]-g[i,j]),
105 norm(g[i,j+1]-g[i,j]),
106
107 norm(g[i+1,j]-g[i+1,j+1]),
108 norm(g[i,j+1]-g[i+1,j+1]),
109
110 norm(g[i+1,j+1]-g[i,j]),
111 norm(g[i+1,j]-g[i,j+1]),
112 )
113 # NOTE: This could be optimized to avoid checking all interior edges twice.
114 end
115
116 return ms
82 end 117 end
83 118
84 """ 119 """
85 normal(g::MappedGrid, boundary) 120 normal(g::MappedGrid, boundary)
86 121