Rien

Modifs
- Nettoyage:
- Suppression des objets "matrice skyline" (cfr. Modifs Metafor).
Fichiers ajoutés/supprimés
R oeMTK/oeSkyMatrix.cpp
R oeMTK/oeSkyMatrix.h
R oeMTK/oeSkyMatrix.inl
R oeMTK/oeSymSkyMatrix.cpp
R oeMTK/oeSymSkyMatrix.h
R oeMTK/oeSymSkyMatrix.inl
R oeKernel/oeSkyMatrixStr.cpp
R oeKernel/oeSkyMatrixStr.h
R oeKernel/oeSymMatrixStr.cpp
R oeKernel/oeSymMatrixStr.h
R oeKernel/oeSymSkyMatrixStr.cpp
R oeKernel/oeSymSkyMatrixStr.h
Modifs
- Réorganisation des solveurs linéaires:
- Création de la classe DSSolver (solveur Pardiso). La classe DSSMatrix ne contient plus que le format de stockage CSR nécessaire pour alimenter ce solveur.
- Intégration du solveur SkyLine de Metafor "Fortran". Il est légèrement plus lent mais il est mieux écrit (je l'avais réécrit en C dans la "SkyLib" qu'on a donné a quelques étudiants). De plus, je l'ai mis sous la même forme que le solveur Pardiso (SkyLineMatrix et SkyLineSolver). Pour l'instant, le solveur sym et non sym sont intégrés dans la même classe. Ceci nous permet de nous débarrasser du solveur skyline d'Oofelie.
- Interface PETSc
- J'ai démarré une interface avec PETSc et ses solveurs itératifs. Pour ceux qui connaitraient pas, il s'agit d'une lib contenant des outils pour manipuler des matrices, des vecteurs, des solveurs linéaires et non linéaires. La lib fournit également une interface unifiée avec la plupart des autres packages de solveurs (UMFPACK, Sparskit, SuperLU, BlockSolve, etc). Tout ceci est fortement orienté parallèle avec MPI (même si, pour l'instant, je l'ai compilé qu'en séquentiel). PETSc propose égelement des outils pour réordonner les équations et s'interface notamment avec Metis. Comme PETSc fonctionne bien dans Metafor, je compte supprimer les solveurs itératifs d'Oofelie ainsi que l'interface Metis qui ne nous serviront plus.
- PETSc est très simple d'utilisation et très puissant. Cependant, compiler PETSc est pas simple (conflits de lib CRT statiques et DLL du .NET).
- L'interface se compose de PetscMatrix, PetscSolver et PetscMatrixStr. Le choix du solveur se fait de la même manière pourrie que pour le solveur Pardiso via le SolverManager. Ca changera très bientôt.
- Pour linker avec PETSc, demandez-moi (il suffit d'avoir mes libs et compiler Metafor avec _WITH_PETSC_).
- Question perfs, ça me semble correct et ça me rassure sur mes conclusions de mon TFE qui parlait de ça (oui, j'avais pas bluffé!). Sur des petits tests, inutile de compter battre le solveur direct. Par contre, sur des tests plus gros, ça peut donner de bons gains. Par exemple, sans trop jouer avec les paramètres, j'ai fait tourner le S-Rail implicite de la batterie en 339 sec au lieu de 632 avec un GMRES et un ILUTD. Bref, on est près du facteur 2 alors qu'il s'agit que d'un cas à 6534 ddls...
Fichiers ajoutés/supprimés
A mtMath/DSSolver.cpp
A mtMath/DSSolver.h
A mtMath/PetscMatrix.cpp
A mtMath/PetscMatrix.h
A mtMath/PetscSolver.cpp
A mtMath/PetscSolver.h
A mtMath/SkyLineMatrix.cpp
A mtMath/SkyLineMatrix.h
A mtMath/SkyLineSolver.cpp
A mtMath/SkyLineSolver.h
A mtKernel/PetscMatrixStr.cpp
A mtKernel/PetscMatrixStr.h
A mtKernel/SkyLineMatrixStr.cpp
A mtKernel/SkyLineMatrixStr.h