Module et tableau dynamique
Salut à tous,
Avant de me lancer dans l'écriture d'une longue subroutine, et n'ayant jamais touché aux modules avec fortran95, j'ai fait un petit programme test afin de me familiariser avec ce nouvel outil.
Mais, au malheur, l'allocation dynamique d'un tableau dans un module, n'aboutit qu'à recevoir les insultes du compilateur...
Je laisse le module en copie, si quelqu'un a une idée, je le remercie par avance de sauver l'amitié que j'avais lié avec mon compilateur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| MODULE conf_ini
IMPLICIT NONE
REAL (KIND=8), DIMENSION(:), ALLOCATABLE :: atom
INTEGER (KIND=4) :: ntot
INTEGER (KIND=4) :: x,compt
CONTAINS
SUBROUTINE CPA(atom,ntot)
REAL (KIND=8), DIMENSION(:), ALLOCATABLE :: atom
INTEGER (KIND=4) :: ntot
INTEGER (KIND=4) :: x,compt
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ntot=9
allocate(atom(ntot))
compt=0
DO x=1,ntot
compt=compt+1
atom(x)=real(compt)
ENDDO
deallocate(atom)
END SUBROUTINE CPA
END MODULE conf_ini |
Module et tableau dynamique
Salut.
Parfois, dans la vie, il faut faire des choix: si tu veux "faire moderne", utilise l'allocation dynamique, mais ne t'étonne pas si tes programmes trainent les pieds.
Tu peux aussi imiter le vieux croulant que je suis et te restreindre à une allocation strictement statique. C'est souvent beaucoup plus efficace. C'est une règle tout à fait générale, comme tu le verras par exemple dans la documentation de MatLab.
A toi de choisir.
Jean-Marc Blanc
Module et tableau dynamique
Re-salut!
Juste une petite suggestion: va sur le site www.netlib.org et cherche la librairie LinPack. Ensuite, tu ouvres un sous-programme, par exemple DGEFA et tu regardes comment ils font. C'est peut-être vieillot, mais ça marche, et plutôt bien.
Bon succès
Jean-Marc Blanc