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 :

Subroutine dans un code


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Subroutine dans un code
    Bonjour;
    j'ai un code principal en Fortran constitué bien sûr de plusieurs subroutines. Ma question est : est-il possible de changer une de ces subroutine par une qui est semblable mais cette dernière contient des subroutines c-à-d des call .. Si c'est possible comment l'introduire dans mon code.

    Merci d'avance

  2. #2
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    copier coller de toutes les subroutines à la fin de ton fichier....

    ou alors plus moderne, avec un module (c.f. un cours de fortran 90/95)
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  3. #3
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par genteur slayer Voir le message
    copier coller de toutes les subroutines à la fin de ton fichier....
    C'est la methode barbare. La methode propre est "compilation separee" via un Makefile. Il y au tutoriel ici. L'exemple montre la compilation d'un projet ecrit en C, mais il est facile d'adapter les Makefiles pour le Fortran.

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    un makefile comment ça?j'y connais rien en c je sais copier coller mais les commons de ma soubroutine doivent etre semblables à ceux du programme principal cad indiquent les mêmes variables???

  5. #5
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Citation Envoyé par solo12 Voir le message
    j'y connais rien en c
    Comme je l'ai ecrit dans mon message precedent, les Makefile sont independants du langage utilise. C'est juste que le tutoriel utilise le C.

    les commons de ma soubroutine doivent etre semblables à ceux du programme principal cad indiquent les mêmes variables???
    Bon. Un exemple simple. J'ai ces deux fichiers sources. Le premier definit le point d'entree du programme:
    Code main.f90 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    program main
    implicit none
     
    character (len=13) :: hello
    common /CMM/ hello
     
    hello = 'Hello, world!'
    call print_hello
     
    end program main
    Le second definit la sous-routine print_hello. Pour une raison inconnue, au lieu de passer hello comme argument, il fait partie d'un common block:
    Code print_hello.f90 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    subroutine print_hello
     
    character (len=13) :: hello
    common /CMM/ hello
     
    write(6,'(a13)') hello
     
    end subroutine print_hello
    J'ai bien lu le tutoriel sur les Makefiles, et j'ai donc ecrit ce Makefile, qui fait appel au compilateur Fortran Intel pour compiler chacun des fichiers sources en l'objet correspondant, puis assemble les deux objets pour creer l'executable final, appele main:
    Code Makefile : 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
     
    PROG=main
     
    SRCE=main.f90 print_hello.f90
    OBJS=${SRCE:%.f90=%.o}
     
    FC=ifort
    FFLAGS=-check all
     
    all: ${PROG}
     
    ${PROG}: ${OBJS}
    	${FC} ${FFLAGS} -o $@ $^
     
    %.o: %.f90
    	${FC} ${FFLAGS} -c $<
     
    clean:
    	rm -f ${PROG} ${OBJS}
    Il suffit maintenant de demander:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    shell> make all
    ifort -check all -c main.f90
    ifort -check all -c print_hello.f90
    ifort -check all -o main main.o print_hello.o
    shell> ./main
    Hello, world!

  6. #6
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    je vais essayer cette methode
    merci

Discussions similaires

  1. [C#] Control user dans le code caché
    Par pc152 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 07/05/2004, 06h36
  2. [langage] algo de bissection dans mon code
    Par killy dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2004, 18h35
  3. Quel est le problème dans ce code ?
    Par Luther13 dans le forum C
    Réponses: 12
    Dernier message: 26/08/2003, 16h09
  4. Modifier un événement dans le code
    Par HT dans le forum Langage
    Réponses: 6
    Dernier message: 20/06/2003, 09h46
  5. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 10h17

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