Bonjour à tous !
Je vous écrits aujourd'hui pour vous poser une question concernant la gestion de paramètres passés en arguments d'une sous-routine.
Mon programme se décompose en deux modules. Le premier module contient une sous-routine de lecture de fichier, hread(). Le second, faisant office de programme principal, récupère les données lues dans le fichier d'entrée via hread() pour les utiliser dans une sous-routine de calcul : volume(temp,VT,ratom2,VV,xxx,yyy,zzz,mxatms,cell,atomindex).
Ce sont les paramètres en rouge qui nous intéressent en l'occurrence. Il s'agit de tableaux, de tailles identiques, à une dimension : xxx(i), i = 1, N. Ce que j'aimerais faire, c'est remplacer ces trois tableaux par un seul, de la manière suivante :
xxx(i) = p(i,1) ; yyy(i) = p(i,2) et zzz(i) = p(i,3).
Après avoir effectué toutes les modifications nécessaires, j'ai pu constater que la lecture du fichier se faisait normalement et que le programme principal avait bien accès aux bonnes valeurs des tableaux aux bons indices. Le soucis se place au niveau de l'appel de la sous-routine volume() défini dans le module principal.
Mon premier essai ne prenait en compte que la première colonne du tableau, p(i,1) et affectait l'ensemble des valeurs des autres colonnes à 0 (impression réalisée au niveau de la sous-routine) : volume(temp,VT,ratom2,VV,p,mxatms,cell,atomindex).
Mon deuxième essai calcule bien des volumes (puisqu'il s'agit de l'objet de la sous-routine) mais d'une manière pseudo-aléatoire (on va dire ça comme ça^^) puisqu'à chaque fois que je lance le programme, les volumes calculés sont différents : volume(temp,VT,ratom2,VV,p(:,1),p(:,2),p(:,3),mxatms,cell,atomindex). Si le tableau p est rempli, il doit donc rester un problème d'initialisation quelque part.
J'en déduis qu'il est primordial de conserver les trois arguments et en arrive donc à ma question : comment passer en paramètres les trois colonnes de mon tableau en deux dimensions ?
Partager