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 :

Probleme de déclaration de Subroutine


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 103
    Par défaut Probleme de déclaration de Subroutine
    Bonjour,

    J'aurais une question concernant la déclaration des subroutines en F90.

    J'ai un programme qui déclare les subroutines comme cette facon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    subroutine Transitorio_Reattivita(
         I                                  sumT,Nsttr,dimTR,Transit_Reattivita,t_0,t_f,dT,T,dbg,
         I                                   dimSTEPR,t_step_R,A_step_R,
         I                                   dimRAMPAR,t_ramp_0_R,t_ramp_f_R,A_rampa_R,
         M                                   ro)
    Et qui compile bien sous pgf90.

    On essaye de porter le code sous Ifort, mais toutes les déclarations ne passe que si on les transforme de cette facon :

    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
    subroutine Transitorio_Sorgente(sumT,Nsttr,dimT_S,Transit_Sorgente,t_0,t_f,dT,T,dbg,dimSTEPS,t_step_S,A_step_S,dimRAMPAS,t_ramp_0_S,t_ramp_f_S,A_rampa_S,Q_ext)
     
          implicit none
     
          integer :: k
          double precision, dimension(:), allocatable :: Q_ext_StepS,Q_ext_RampaS
     
     
          integer, intent(in) :: Nsttr,dimT_S,sumT
          integer, intent(in) :: T(Nsttr),dimSTEPS,dimRAMPAS,dbg
          double precision, dimension(dimSTEPS), intent(in) :: t_step_S,A_step_S
          double precision, dimension(dimRAMPAS), intent(in) :: t_ramp_0_S,t_ramp_f_S,A_rampa_S
          double precision, dimension(Nsttr),intent(in)  :: t_0,t_f,dT
          double precision, dimension(Nsttr), intent(inout) :: Q_ext(sumT)
          character(len=5), intent(in) :: Transit_Sorgente(dimT_S)
    Pourquoi le Ifort n'accepte pas la premiere notation ?

    Merci pour le renseignement.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Un peu bizarre ton code initial. Les I et M en colonne 6 semble être des caractères de continuité, mais subroutine commence à la colonne 1. Peut-être est-ce simplement la copie du code dans le forum qui a déplacé subroutine vers la gauche... En résumé, ton code initial (sous réserve de la position de subroutine) est en format fixe.

    Normalement, le format fixe découle d'un fichier ayant l'extension .f alors que le format libre découle de l'extension .f90. Il est aussi possible de forcer le format avec une switch de compilation, pour rendre le format indépendant de l'extension.

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

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 103
    Par défaut
    Merci de l'information.

    Une derniere question pour ce probleme.

    Comment définir un parametre d'entrée en lecture seule ?

    Faut il utiliser : intent(in) ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Par défaut
    Avec la clause intent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Subroutine ABC(LectureSeule, EcritureSeule, LectureEcriture)
       integer, intent(in) ::    LectureSeule
       real,    intent(out) ::   EcritureSeule
       logical, intent(inout) :: LectureEcriture
    ...

Discussions similaires

  1. probleme de déclaration de variable
    Par jmlaguiness dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 08/05/2008, 15h05
  2. probleme de déclaration
    Par sky88 dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 23/03/2008, 23h57
  3. Probleme de déclaration méthode
    Par Katachana dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 17/07/2007, 10h45
  4. Probleme de déclaration multiple
    Par anykeyh dans le forum C++
    Réponses: 3
    Dernier message: 02/03/2007, 15h42
  5. [débutant] probleme de déclarations
    Par Anthony17 dans le forum Delphi
    Réponses: 9
    Dernier message: 12/05/2006, 14h18

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