-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fortran Interface for Finite Element nonlinear solver #100
Comments
I think I resolved my issue. The format is not the same (pardiso use FORTRAN indices from 1, while STRUMPACK uses indices from 0), and it seems that STRUMPACK needs the all the nonzero terms (even in the case of a symmetric matrix)
|
To disable the output, set the last argument for
to
|
To speed up the solver, you can either try to use the GPU (for now this only works without compression, ie,
Setting a larger |
Dear Pieter,
thank you very much for your help
Andrea
… Il giorno 20 lug 2023, alle ore 09:28, Pieter Ghysels ***@***.***> ha scritto:
the
--
Informativa sulla Privacy: https://www.unibs.it/it/node/1452
<https://www.unibs.it/it/node/1452>
|
Dear All,
I've written a FE Fortran code (for academic use only) that, by now, use PANUA Paradiso. I would replace the Pardiso interface with STRUMPACK, because it seems to me that PANUA Paradiso is becoming a commercial package. If I've correctly understood, both PARDISO and STRUMPACK should use the same matrix format for sparse matrices.
Basically, I've two type of matrices:
I've some troubles with the fortran interface. In particular, I'm getting some memory leak. Do you know if the format for the matrix is exactly the same?
With Pardiso I simply set mtype (-2 or 11), the "phase" parameter (symbolic and numeric factorization, solve, iterative refinement)
and then I call the external subroutine as
CALL pardiso (pt, maxfct, mnum, mtype, phase,NGDL,KMATR,Kia,
1 Kja, idum, nrhs, iparm, msglvl, F, u, error)
With STRUMPACK I'm doing:
c Set compression method. Other options include NONE, HSS, HODLR,
c LOSSY, LOSSLESS. HODLR is only supported in parallel, and only
c supports double precision (including complex double).
call STRUMPACK_set_compression(S, STRUMPACK_BLR);
c Set the block size and relative compression tolerances for BLR
c compression.
call STRUMPACK_set_compression_leaf_size(S, 64);
call STRUMPACK_set_compression_rel_tol(S, dble(1.e-2));
c Only sub-blocks in the sparse triangular factors corresponing to
c separators larger than this minimum separator size will be
c compressed. For performance, this value should probably be larger
c than 128. This value should be larger for HODLR/HODBF, than for
c BLR, since HODLR/HODBF have larger constants in the complexity.
c For an n x n 2D domain, the largest separator will correspond to
c an n x n sub-block in the sparse factors.
call STRUMPACK_set_compression_min_sep_size(S, 300);
Can anyone help me? Thank you in advance!
Andrea
The text was updated successfully, but these errors were encountered: