naginterfaces.library.pde.dim2_ellip_fd_iter¶
- naginterfaces.library.pde.dim2_ellip_fd_iter(a, b, c, d, e, aparam, it, r)[source]¶
dim2_ellip_fd_iter
performs at each call one iteration of the Strongly Implicit Procedure. It is used to calculate on successive calls a sequence of approximate corrections to the current estimate of the solution when solving a system of simultaneous algebraic equations for which the iterative update matrix is of five-point molecule form on a two-dimensional topologically-rectangular mesh. (‘Topological’ means that a polar grid , for example, can be used as it is equivalent to a rectangular box.)For full information please refer to the NAG Library document for d03ua
https://www.nag.com/numeric/nl/nagdoc_29.3/flhtml/d03/d03uaf.html
- Parameters
- afloat, array-like, shape
must contain the coefficient of the ‘southerly’ term involving in the th equation of the system (2), for , for . The elements of , for , must be zero after incorporating the boundary conditions, since they involve nodal values from outside the rectangle.
- bfloat, array-like, shape
must contain the coefficient of the ‘westerly’ term involving in the th equation of the system (2), for , for . The elements of , for , must be zero after incorporating the boundary conditions, since they involve nodal values from outside the rectangle.
- cfloat, array-like, shape
must contain the coefficient of the ‘central’ term involving in the th equation of the system (2), for , for . The elements of are checked to ensure that they are nonzero. If any element is found to be zero, the corresponding algebraic equation is assumed to be . This feature can be used to define the equations for nodes at which, for example, Dirichlet boundary conditions are applied, or for nodes external to the problem of interest, by setting at appropriate points. The corresponding value of is set equal to the appropriate value, namely the difference between the prescribed value of and the current value of in the Dirichlet case, or zero at an external point.
- dfloat, array-like, shape
must contain the coefficient of the ‘easterly’ term involving in the th equation of the system (2), for , for . The elements of , for , must be zero after incorporating the boundary conditions, since they involve nodal values from outside the rectangle.
- efloat, array-like, shape
must contain the coefficient of the ‘northerly’ term involving in the th equation of the system (2), for , for . The elements of , for , must be zero after incorporating the boundary conditions, since they involve nodal values from outside the rectangle.
- aparamfloat
The iteration acceleration factor. A value of is adequate for most typical problems. However, if convergence is slow, the value can be reduced, typically to or . If divergence is obtained, the value can be increased, typically to , or .
- itint
The iteration number. It must be initialized, but not necessarily to , before the first call, and must be incremented by one in the calling program for each subsequent call.
dim2_ellip_fd_iter
uses the counter to select the appropriate acceleration argument from a sequence of nine, each one being used twice in succession. (Note that the acceleration argument depends on the value of .)- rfloat, array-like, shape
must contain the current residual on the right-hand side of the th equation of the system (2), for , for .
- Returns
- rfloat, ndarray, shape
These residuals are overwritten by the corresponding components of solution to the system (2), i.e., the changes to be made to the vector to reduce the residuals supplied.
- Raises
- NagValueError
- (errno )
On entry, .
Constraint: .
- (errno )
On entry, .
Constraint: .
- (errno )
On entry, .
Constraint: .
- (errno )
On entry, , and .
Constraint: .
- Notes
No equivalent traditional C interface for this routine exists in the NAG Library.
Given a set of simultaneous equations
(which could be nonlinear) derived, for example, from a finite difference representation of a two-dimensional elliptic partial differential equation and its boundary conditions, the solution may be obtained iteratively from a starting approximation by the formulae
Thus is the residual of the th approximate solution , and is the update change vector.
dim2_ellip_fd_iter
determines the approximate change vector corresponding to a given residual , i.e., it determines an approximate solution to a set of equationswhere is a square matrix and is a known vector of length . The set of equations (2) must be of five-diagonal form
for and , provided that . Indeed, if , then the equation is assumed to be
For example, if and , the equations take the form
The calling program supplies the current residual at each iteration and the coefficients of the five-point molecule system of equations on which the update procedure is based. The function performs one iteration, using the approximate factorization of the Strongly Implicit Procedure with the necessary acceleration argument adjustment, to calculate the approximate solution of the set of equations (2). The change overwrites the residual array for return to the calling program. The calling program must combine this change stored in with the old approximation to obtain the new approximate solution for . It must then recalculate the residuals and, if the accuracy requirements have not been satisfied, commence the next iterative cycle.
Clearly there is no requirement that the iterative update matrix passed in the form of the five-diagonal element arrays , , , and is the same as that used to calculate the residuals, and, therefore, the one governing the problem. However, the convergence may be impaired if they are not equal. Indeed, if the system of equations (1) is not precisely of the five-diagonal form illustrated above but has a few additional terms, then the methods of deferred or defect correction can be employed. The residual is calculated by the calling program using the full system of equations, but the update formula is based on a five-diagonal system (2) of the form given above. For example, the solution of a system of nine-diagonal equations each involving the combination of terms with and could use the five-diagonal coefficients on which to base the update, provided these incorporate the major features of the equations.
Problems in topologically non-rectangular regions can be solved using the function by surrounding the region with a circumscribing topological rectangle. The equations for the nodal values external to the region of interest are set to zero (i.e., ) and the boundary conditions are incorporated into the equations for the appropriate nodes.
If there is no better initial approximation when starting the iterative cycle, one can use an array of all zeros as the initial approximation from which the first set of residuals are determined.
The function can be used to solve linear elliptic equations in which case the arrays , , , , and the quantities will be unchanged during the iterative cycles, or for solving nonlinear elliptic equations in which case some or all of these arrays may require updating as each new approximate solution is derived. Depending on the nonlinearity, some under-relaxation of the coefficients and/or source terms may be needed during their recalculation using the new estimates of the solution (see Jacobs (1972)).
The function can also be used to solve each step of a time-dependent parabolic equation in two space dimensions. The solution at each time step can be expressed in terms of an elliptic equation if the Crank–Nicolson or other form of implicit time integration is used.
Neither diagonal dominance, nor positive-definiteness, of the matrix or of the update matrix formed from the arrays , , , and is necessary to ensure convergence.
For problems in which the solution is not unique, in the sense that an arbitrary constant can be added to the solution (for example Laplace’s equation with all Neumann boundary conditions), the calling program should subtract a typical nodal value from the whole solution at every iteration to keep rounding errors to a minimum.
- References
Ames, W F, 1977, Nonlinear Partial Differential Equations in Engineering, (2nd Edition), Academic Press
Jacobs, D A H, 1972, The strongly implicit procedure for the numerical solution of parabolic and elliptic partial differential equations, Note RD/L/N66/72, Central Electricity Research Laboratory
Stone, H L, 1968, Iterative solution of implicit approximations of multi-dimensional partial differential equations, SIAM J. Numer. Anal. (5), 530–558