restrict_weights#
- emg3d.core.restrict_weights(nodes, cell_centers, h, cnodes, ccell_centers, ch)[source]#
Restriction weights for the coarse-grid correction operator.
Corresponds to Equation 9 in [Muld06]. A generalized version of that equation is given by
\[\begin{split}w_{Q,-1}^v &= \left(v_{q-1/2}^h-v_{Q-1/2}^{2h}\right)/d_{q-1}^v ,\\ w_{Q,0}^v &= 1 ,\\ w_{Q,1}^v &= \left(v_{Q+1/2}^{2h}-v_{q+1/2}^h \right)/d_{q+1}^v ,\end{split}\]where \(d\) are the dual grid cell widths, \(v\) is one of \(\{x, y, z\}\), and \(Q, q\) the corresponding entries of \(\{K, L, M\}, \{k, l, m\}\), respectively. The superscripts \(h, 2h\) indicate quantities defined on the coarse grid and on the fine grid, respectively. The indices \(\{K, L, M\}\) on the coarse grid correspond to \(\{k, l, m\} = 2\{K, L, M\}\) on the fine grid.
For the dual volume cell widths at the boundaries the scheme of [MoSu94] is applied, where \(d_0^x = h_{1/2}^x/2\) at \(k = 0\), \(d_{N_x}^x = h_{N_x-1/2}^x\) at \(k = N_x\), and so on.
The following parameters must all be in the same direction, hence, all must be either for the x, the y, or the z direction. The returned weights are for this direction.
- Parameters:
- nodes, cnodesndarray
Cell edges of the fine (
nodes
) and coarse (cnodes
) grids.- cell_centers, ccell_centersndarray
Cell centers of the fine (
cell_centers
) and coarse (ccell_centers
) grids.- h, chndarray
Cell widths of the fine (
h
) and coarse (ch
) grids.
- Returns:
- wl, w0, wrndarray
Left, central, and right weights in the direction provided in the input.