mic(5rheolef)

πŸ“¦
version 7.2 Β· 4 versions
, in debian trixie, ubuntu noble, ubuntu questing

πŸ’– mic β€” the modified incomplete Cholesky glow-up (rheolef-7.2) πŸ’–

okay bestie, sit down, hydrate, and let me tell you about mic(5rheolef) from the rheolef manual. this one's a preconditioner and she's serving modified incomplete Cholesky energy. no cap.


✨ NAME ✨

mic β€” modified incomplete Cholesky factorization preconditionner (rheolef-7.2)

yes she's literally named mic and yes she's a preconditionner, that's the spelling, we don't argue with the source πŸ’…


🌸 SYNOPSIS 🌸

solver pa = mic(a);

that's it. one line. she's lowkey effortless like that πŸ¦‹


πŸ’œ DESCRIPTION πŸ’œ

so mic is a function that hands you back the modified incomplete Cholesky factorization preconditioner as a solver(4). like, you ask, she gives. periodt.

the method itself is described in this paper, and honestly? iconic academic citation behavior:

C-J. Lin and J. J. More,
Incomplete Cholesky factorizations with limited memory,
SIAM J. Sci. Comput. 21(1), pp. 24-45, 1999

it performs the following incomplete factorization: S P A P^T S that approximates L L^T where L is a lower triangular factor, S is a diagonal scaling matrix, and P is a fill-in reducing permutation as computed by the AMDcol ordering method.

so basically: L is your lower triangular bestie, S is the diagonal scaling main character, and P is out here doing fill-in reduction via AMDcol like the little organizer she is πŸŽ€


πŸŽ€ OPTIONS πŸŽ€

this preconditioner supports an option related to the shifting strategy, and ngl this part matters so listen up:

let B = S P A P^T S be the scaled matrix on which the factorization is carried out, and beta be the minimum value of the diagonal.

  • if beta > 0 then the factorization is directly performed on the matrix B. easy. no drama. slay.
  • otherwise, the factorization is performed on the shifted matrix B + (shift+|beta|I where shift is the provided option.

the default value is shift = 0.001.

and here's the part where you hold my hand bestie: if the factorization fails, then the shift is doubled until it succeed or a maximum of ten is reached. if it still fails, it is better to use another preconditioning technique.

🫢 fr fr, if she's tried ten times and still isn't giving, that's your sign to switch techniques. don't force it. she'll tell you.

here's how you actually pass that shift in:

Float shift = 1e-3;
solver pa = mic (a,shift);

look at that. Float shift = 1e-3; then solver pa = mic (a,shift);. chef's kiss 😭✨


πŸ¦‹ IMPLEMENTATION πŸ¦‹

this documentation has been generated from file linalg/lib/mic.h

(the source of truth, the origin story, the blueprint πŸ’–)


πŸ‘‘ AUTHOR πŸ‘‘

Pierre Saramito <Pierre.Saramito@imag.fr>

we stan a legend. πŸ’œ


Copyright (C) 2000-2018 Pierre Saramito <Pierre.Saramito@imag.fr>

GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

⚠️ okay so the NO WARRANTY thing is in all caps in the original and honestly it means it β€” she's free, she's open, she's yours to remix, but she comes as-is, bestie. no promises. 🌈

and that's the whole vibe check, babe. this page is rheolef, Version 7.2, and she's titled mic(5rheolef). go forth and precondition πŸ’…πŸŒΈβœ¨

πŸ“¦ where this page comes from