Tu ne nous dis clairement pas pourquoi ton programme Fortran s'est arrêté ?
Est-ce bien un problème d'allocation mémoire pour la matrice de rigidité globale ?

Envoyé par
abdelhak_khechai
et je ne peux pas savoir où sont les termes nuls
Bien sûr que si. L'assemblage de la matrice de rigidité globale passe par l'expression des matrices de rigidité locales. Les numéro des nœuds de l'élément concerné correspondent aux indices dans la matrice globale. Tu connais donc les indices des termes non-nuls de la matrice.
Les solveurs éléments finis industriels utilisent tous le stockage des données sous forme de matrices creuses (sparse en anglais). Puis, comme le fait remarquer Jean-Marc, les solveurs proposent différentes méthodes de résolution (directes ou itératives) en fonction du problème (et donc des propriétés de la matrice du système)

Envoyé par
abdelhak_khechai
le problème c'est la taille de la matrice (18000,18000)
Restons alors dans le cas des matrices pleines.
Si la matrice est codées avec des réels double précision, la quantité de mémoire nécessaire pour la stoker est :
18000*18000*8/1024/1024/1024 = 2.4 Go (environ)
J'espère que tu travailles sur une machine 64 bits.
Pour vérifier si c'est bien un problème de mémoire, tu pourrais utiliser des réels simple précision, ce qui diviserait rapidement par deux la quantité de mémoire nécessaire.
De manière plus générale, tout l'art du calcul avec les éléments finis est d'abord de définir une discrétisation optimale du problème. Ce n'est d'ailleurs pas parce que le maillage est plus fin que la solution sera forcément meilleure.
As-tu commencé par un calcul avec un maillage moins fin (mais suffisant) puis as-tu affiné localement le maillage ?
Partager