préconditionneur pour une méthode sans matrice pour résoudre Ax = b

9

J'ai besoin de résoudre Ax = b, mais je me rends compte que même s'il est rare, le stockage des coefficients matriciels de mon problème prendra trop de mémoire. Alors maintenant, j'envisage d'utiliser une méthode sans matrice, car les mêmes coefficients apparaissent beaucoup de temps dans la matrice, donc je pourrais utiliser mon propre schéma de stockage privé (et augmenter l'efficacité du cache en passant).

Je regarde petsc, qui fournit une interface pour de tels opérateurs linéaires sans matrice, mais ce que je ne comprends pas vraiment, c'est comment le préconditionneur est ensuite calculé par petsc? Ou dois-je fournir mon propre préconditionneur? Si oui, existe-t-il des outils ou des recettes disponibles pour construire un préconditionneur à partir d'un opérateur linéaire sans matrice?

Plus d'informations sur mon opérateur: il est asymétrique, non dominant en diagonale, mais dominé par quelques bandes latérales (mais il n'est pas non plus diagonal en bandes)

nat chouf
la source

Réponses:

7

Vous devrez rouler votre propre préconditionneur. Si vous connaissez la matrice, il ne devrait pas être extrêmement difficile de mettre en œuvre quelque chose comme un préconditionneur SSOR, par exemple. Si vous savez autre chose sur le problème, par exemple qu'il provient d'un PDE dont la solution peut être bien approchée sur un maillage plus grossier, vous pouvez également envisager de construire des préconditionneurs en restreignant le problème au maillage plus grossier, en le résolvant là-bas et en étendant le solution de retour à l'original. La restriction et la prolongation peuvent être implémentées comme des opérations sans matrice.

Wolfgang Bangerth
la source