- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have been experimenting with the PARDISO solver, solving a system of linear equations
Ax=b
The example file 'pardiso_unsym_c.c' contains the variables
double *a : corresponds to the matrix A in the equation above
double *b : corresponds to the vector b in the equation above
double *x: corresponds to the vector x in the equation above
It has proven to be very fast for my purposes. I've also noticed a nonlinear example case 'pardiso_nonlinear.c' which contains an "Example of solving nonlinear problem using PARDISO and Sparse BLAS". Is there an expression of the specific nonlinear problem being tackled in the example? I would like to adapt the example to solve a system of semilinear equations I have (Ax=b, where b is a function of x). But I am unsure of what the variables pertain to. Specifically, the variables
double *a
double *f
double *u
Any help/documentation would be appreciated.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I remember seeing a similar example in the MKL Cookbook, see https://software.intel.com/en-us/forums/intel-math-kernel-library/topic/557295 . If, indeed, the problem is the same as the one described in https://software.intel.com/en-us/node/507039 (please check first), it is notable that (i) the grid used is very coarse, (ii) the nonlinearity is removable (by use of the Kirchhoff transformation), and (iii) the finite-difference equations can be reduced to four unknowns, and can be solved with pencil and paper easily. The code should be taken to be for illustration only.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi mecej4,
Thanks for the reply. It was a great help. I now understand the example, which is a procedure for a system A(u)u = g
- Set u to initial value u0.
- Calculate residual r = A(u)u - g.
- Do while ||r|| < tolerance:
- Solve system A(u)w = g for w.
- Set u = w.
- Calculate residual r = A(u)u - g
(the above is in the documentation you linked to). I believe I can adapt this procedure for my semilinear case Au = g(u) I.e.
- Set u to initial value u0.
- Calculate residual r = Au - g(u).
- Do while ||r|| < tolerance:
- Solve system Aw = g(u) for w.
- Set u = w.
- Calculate residual r = Au - g(u)
Thanks again
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page