pyinterp.fill.gauss_seidel#
- pyinterp.fill.gauss_seidel(mesh: Union[pyinterp.grid.Grid2D, pyinterp.grid.Grid3D], first_guess: str = 'zonal_average', max_iteration: Optional[int] = None, epsilon: float = 0.0001, relaxation: Optional[float] = None, num_threads: int = 0)[source]#
Replaces all undefined values (NaN) in a grid using the Gauss-Seidel method by relaxation.
- Parameters
mesh – Grid function on a uniform 2/3-dimensional grid to be filled.
first_guess –
Specifies the type of first guess grid. Supported values are:
zero
means use0.0
as an initial guess;zonal_average
means that zonal averages (i.e, averages in the X-axis direction) will be used.
Defaults to
zonal_average
.max_iterations – Maximum number of iterations to be used by relaxation. The default value is equal to the product of the grid dimensions.
epsilon – Tolerance for ending relaxation before the maximum number of iterations limit. Defaults to
1e-4
.relaxation – Relaxation constant. If
0 < relaxation < 1
, the new value is an average weighted by the old and the one given by the Gauss-Seidel scheme. In this case, convergence is slowed down (under-relaxation). Over-relaxation consists in choosing a value ofrelaxation
strictly greater than 1. For the method to converge, it is necessary that:1 < relaxation < 2
. If this parameter is not set, the method will choose the optimal value that allows the convergence criterion to be achieved in \(O(N)\) iterations, for a grid of size \(N_x=N_y=N\),relaxation
= \({2\over{1+{\pi\over{N}}}}\); if the grid is of size \(Nx \times Ny\), \(N = N_{x}N_{y}\sqrt{2\over{N_{x}^2+N_{y}^2}}\)num_threads – The number of threads to use for the computation. If 0 all CPUs are used. If 1 is given, no parallel computing code is used at all, which is useful for debugging. Defaults to
0
.
- Returns
A boolean indicating if the calculation has converged, i. e. if the value of the residues is lower than the
epsilon
limit set, and the the grid will have the all NaN filled with extrapolated values.