- 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