IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

[F90]probleme d'allocation d'un tableau


Sujet :

Fortran

  1. #1
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut [F90]probleme d'allocation d'un tableau
    Bonjour,

    J'ai deux tableaux déclarés tel suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double precision, dimension(:), allocatable :: t_0, t_f,
    Quand, je tente d'allouer via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    allocate(t_0(Nsttr),t_f(Nsttr),dT(Nsttr),Treal(Nsttr),T(Nsttr))
    J'ai le message suivant à la compilation :

    Illegal use of symbol t_0 - must be an allocatable array (fichier_in.f90: 97)
    Quelqu'un aurait il un début d'aide ?
    Merci

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 37
    Points : 38
    Points
    38
    Par défaut
    Salut,

    Je ne saurai pas t'expliquer pourquoi, mais chez moi :
    real*8, ALLOCATABLE, DIMENSION(:) :: a1, a2
    fonctionne avec n'importe quel type devant (complex*16, integer*4...).
    Teste en attendant que quelqu'un nous explique !
    À plus,

    L'hermine

  3. #3
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    merci, mais c'est pas mieux.

  4. #4
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Petite précision :
    En faite toute les variables qui posent probleme ont été passé en arguments à la subroutine où on les alloue.

    en gros :

    Subroutine X( t_0, t_f)

    double precision, dimension(:), allocatable :: t_0, t_f


    allocate(t_0(Nsttr),t_f(Nsttr))


    end subroutine

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur modélisation aérodynamique
    Inscrit en
    Juillet 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur modélisation aérodynamique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 105
    Points : 128
    Points
    128
    Par défaut
    Bonjour,
    j'imagine que dans le programme principal (celui qui appelle la subroutine)
    les variables t_0 et t_f sont également déclarée comme allocatable ?

    Pour pouvoir faire une allocation dynamique dans une subroutine, tu dois déclarer l'interface de ta subroutine dans le programme principal.

    EDIT :


    Le problème vient du fait que tu cherches à allouer un tableau passé par argument dans une subroutine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
     
    PROGRAM MAIN
    IMPLICIT NONE
     
    ! Bloc d'interface pour la subroutine "allocation_tab"
    ! ------------------------------------------------
    interface
       subroutine allocation_tab(tab)
          real*8, dimension(:), allocatable :: tab
       end subroutine allocation_tab
    end interface
     
    ! Puis tout le reste est comme tu l'a décrit
    ! -----------------------------------------
     
       real*8, dimension(:), allocatable :: tab
     
       call allocation_tab(tab)
     
    ! Ici ton tableau est alloué
     
    END PROGRAM
     
     
    SUBROUTINE allocation_tab(tab)
    IMPLICIT NONE
     
       real*8, dimension(:), allocatable :: tab   ! pas obligé de mettre un intent()
     
       allocate(tab(10))
     
       return
     
    END SUBROUTINE allocation_tab

  6. #6
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    Salut,

    Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Allocation statique de tableau en F90
    Par nicolas823 dans le forum Fortran
    Réponses: 1
    Dernier message: 21/01/2014, 13h22
  2. Réponses: 8
    Dernier message: 22/07/2011, 15h28
  3. probleme d allocation avec un tableau de BYTE
    Par e1lauren dans le forum C++
    Réponses: 5
    Dernier message: 06/05/2005, 13h42
  4. probleme d'allocation dynamique
    Par vince3320 dans le forum C
    Réponses: 10
    Dernier message: 22/04/2004, 16h27
  5. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo