Bonjour,
Dans la cadre de l'étude des vibrations d'une particule cubique, j'utilise la méthode des matrices dynamiques.
Ainsi, ma particule est constituée de N atomes (LxLxL atomes) avec L, le nombre d'atome sur une arrête du cube.
Cela produit, à l'aide de la méthode des matrices dynamiques, une matrice de taille 3N x 3N. Par conséquent, la taille de la matrice augmente très vite avec la taille de la particule.
Bien évidemment, je me heurte à un problème de mémoire dès que j'atteins des tailles de l'ordre de 20x20x20 atomes.
Je code principalement en octave et en C++. Ma matrice dynamique est une matrice contenant de nombreux zéros (j'utilise en conséquence les sparse matrices) et elle est diagonale, ses valeurs propres sont normalement supérieures ou égales à 0 (aux erreurs d'arrondis près). Et j'ai besoin de toutes les valeurs propres. En octave, mon problème apparaît au moment d'utiliser la fonction eig().
Connaissez-vous des méthodes permettant d'éviter la saturation de la mémoire ?
Merci.
Partager