|
4 | 4 | # AUTHORSHIP
|
5 | 5 | * Author : Eduardo J Alvarez
|
6 | 6 |
|
7 |
| - * Created : Jan 2024 |
| 7 | + * Created : Jan 2025 |
8 | 8 | * License : MIT License
|
9 | 9 | =###############################################################################
|
10 | 10 |
|
|
61 | 61 |
|
62 | 62 | get_node(self::GridSurface2D, args...; optargs...) = get_node(self.orggrid, args...; optargs...)
|
63 | 63 | get_cell(self::GridSurface2D, args...; optargs...) = get_cell(self.orggrid, args...; optargs...)
|
64 |
| -get_cell_t!(self::GridSurface2D, args...; optargs...) = get_cell_t!(self.orggrid, args...; optargs...) |
65 |
| -generate_getcellt_args!(self::GridSurface2D, args...; optargs...) = get_cell(self.orggrid, args...; optargs...) |
| 64 | +get_cell_t!(out, self::GridSurface2D, args...; optargs...) = get_cell_t!(out, self.orggrid, args...; optargs...) |
66 | 65 | lintransform!(self::GridSurface2D, args...; optargs...) = lintransform!(self.orggrid, args...; optargs...)
|
67 | 66 |
|
| 67 | +function generate_getcellt_args!(self::GridSurface2D) |
| 68 | + |
| 69 | + # Pre-allocate memory for panel calculation |
| 70 | + lin = LinearIndices(self._ndivsnodes) |
| 71 | + ndivscells = vcat(self._ndivscells...) |
| 72 | + cin = CartesianIndices(Tuple(collect( 1:(d != 0 ? d : 1) for d in self._ndivscells))) |
| 73 | + coor = zeros(Int, 2) |
| 74 | + out = zeros(Int, 2) |
| 75 | + |
| 76 | + return out, coor, lin, ndivscells, cin |
| 77 | +end |
| 78 | + |
| 79 | + |
68 | 80 | get_area(self::GridSurface2D, i) = get_area2D(self._nodes, get_cell(self, i))
|
69 | 81 | function _get_area2D(nodes, panel)
|
70 | 82 | p1, p2 = panel
|
71 | 83 | return sqrt( (nodes[1, p2] - nodes[1, p1])^2 + (nodes[2, p2] - nodes[2, p1])^2 )
|
72 | 84 | end
|
73 | 85 |
|
74 | 86 | ##### INTERNAL FUNCTIONS ######################################################
|
75 |
| -_calc_t1_2D(args...) = _calc_t1(args...) / _calc_tnorm_2D(args...) |
76 |
| -_calc_t2_2D(args...) = _calc_t2(args...) / _calc_tnorm_2D(args...) |
77 |
| -_calc_tnorm_2D(nodes::AbstractMatrix, panel) = sqrt( |
78 |
| - (nodes[1, panel[2]] - nodes[1, panel[1]])^2 |
79 |
| - + (nodes[2, panel[2]] - nodes[2, panel[1]])^2 |
80 |
| - ) |
| 87 | +_calc_t1_2D(nodes::AbstractMatrix, panel) = (nodes[1, panel[2]] - nodes[1, panel[1]]) / _calc_tnorm_2D(nodes, panel) |
| 88 | +_calc_t2_2D(nodes::AbstractMatrix, panel) = (nodes[2, panel[2]] - nodes[2, panel[1]]) / _calc_tnorm_2D(nodes, panel) |
| 89 | +_calc_tnorm_2D(nodes::AbstractMatrix, panel) = sqrt( (nodes[1, panel[2]] - nodes[1, panel[1]])^2 + (nodes[2, panel[2]] - nodes[2, panel[1]])^2 ) |
81 | 90 |
|
82 | 91 | _calc_n1aux_2D(nodes::AbstractMatrix, panel) = -(nodes[2, panel[2]] - nodes[2, panel[1]])
|
83 | 92 | _calc_n2aux_2D(nodes::AbstractMatrix, panel) = nodes[1, panel[2]] - nodes[1, panel[1]]
|
84 |
| -_calc_nnorm_2D(args...) = sqrt(_calc_n1aux_2D(args...)^2 + _calc_n2aux_2D(args...)^2) |
| 93 | +_calc_nnorm_2D(args...) = sqrt( _calc_n1aux_2D(args...)^2 + _calc_n2aux_2D(args...)^2 ) |
85 | 94 | _calc_n1_2D(args...) = _calc_n1aux_2D(args...) / _calc_nnorm_2D(args...)
|
86 | 95 | _calc_n2_2D(args...) = _calc_n2aux_2D(args...) / _calc_nnorm_2D(args...)
|
87 | 96 |
|
|
0 commit comments