Vous pouvez télécharger ici une archive
regroupant 66 fichiers dans un fichier au format tar.gz
(voir doc Unix pour savoir comment en extraire le contenu).
Comme le dit la doc mentionnée, il suffit de taper dans un terminal:
ordi:~ > tar -xzvf profils.tgz <CR>
PROFILS/
PROFILS/PROFIL00.DAT
PROFILS/PROFIL01.DAT
PROFILS/PROFIL02.DAT
...
pour que tous les profils soient extraits dans un répertoire PROFILS.
Considérons une tranche à travers la couche de grains entre x et x+dx. Si le flux à travers la paroi gauche de la tranche (en x) est le même qu'à travers la paroi droite (en x+dx), alors la hauteur de la couche entre x et x+dx ne changera pas: il est rentré dans la tranche autant de matière qu'il en est sorti. S'il y a une différence des flux, alors il s'accumule dans la tranche une quantité [Q(x)-Q(x+dx)]*dt de matière en un temps dt. Cela fera monter le niveau de la couche localement d'autant: [h(t+dt)-h(t)]*dx = [Q(x)-Q(x+dx)]*dt. Dans la limite de petits dx et dt, on trouve l'équation différentielle de la conservation de la matière d'un écoulement incompressible:
∂Q/∂x = -∂h/∂tOn sait par ailleurs que le flux est nul à travers les parois de la boite, donc en particulier Q(x=0)=0. En intégrant l'équation ci-dessus de 0 à x, on obtient la formulation intégrale:
Q = - ∫0x ∂h/∂t
Nous n'avons les hauteurs qu'en des points de l'espace discrets, et qu'à des temps discrets. Il n'est donc pas possible de calculer la dérivée ∂h/∂t au sens mathématique, ni d'intégrer rigoureusement: il faut travailler en différences finies. La dérivée temporelle devient ainsi ∂h/∂t ~ h(t+1) - h(t) =: e(t), et l'intégrale doit être approximée par exemple par la méthode des trapèzes: Q(x+1) ~ Q(x) + ½[e(x) + e(x+1)].
Voici deux programmes qui font ce qui est demandé, le deuxième essayant d'être plus lisible, élégant et efficace que le premier. Les commentaires devraient expliquer le fonctionnement des différentes parties.