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 :

[Fortran 77] Problème de matrice


Sujet :

Fortran

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Oui, il ne suffit pas de changer le nom du compilateur, il faut aussi adapter les options de compilation, c'est à dire modifier le Makefile comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    F90 = g95
     
    F90FLAGS = -O3 -fbackslash -ffree-form
     
    LD = g95
    Mais ce n'est pas tout, si on tente alors un 'make all', ça plante ... parce que la fonction 'second' (fichier second.f) n'est pas portable (ainsi qu'il est signalé dans la doc.); il faut la remplacer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          FUNCTION SECOND ()
          DOUBLE PRECISION SECOND, T(2)
     
    ! Set ETIME to either ETIME or ETIME_ .
          SECOND = ETIME(T)
     
          RETURN
          END
    c.-à-d.: changer la definition de 'T' en 'T(2)' et 'ETIME_(T)' en 'ETIME(T).

    Et là, le 'make all' fonctionne (j'ai testé dans le repertoire 'f90'), enfin, à quelques:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning (155): Inconsistent types (TYPE(mp_realm)/TYPE(mp_real)) in actual argument lists
    avertissements qui sont possiblement sans conséquences.

    La compilation des différents exemples met un certain temps mais tout semble bien se dérouler; j'ai vérifié que le programme test 'tmpmod90' génère bien des sorties prévues (données dans le fichier 'tmpmod.out' fourni).

    Reste à apprendre à maitriser la bête, mais la doc et les exemples fournis semblent assez complets, du moins à première vue.

    Bon courage et bonne continuation.

  2. #22
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    super! merci Ehouarn, je vais essayer...

  3. #23
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 34
    Points : 4
    Points
    4
    Par défaut
    bonjour,
    Ehouarn, j'ai fait comme tu as fait et tout semble marcher dans le f90, mais il y a peut-être un problème avec le toolkit ( je n'arrive pas à compiler mathinit.f à cause d'une "segmentation fault"...).
    De plus, je n'arrive pas à compiler mes programmes en fortran 95 qui utilisent la librairie mp (plein d'erreurs de "unclassifiable statement", "non-numeric character" etc...) : peut-être ai-je mal placée ma librairie, où la met-on normalement ?
    merci !

  4. #24
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 488
    Points : 593
    Points
    593
    Par défaut
    Bonjour,

    Pas le temps d'y regarder de plus près (ni dans les jours qui viennent d'ailleurs) mais chez moi ça compile et 'mathinit' s'exécute sans erreur...

    Sinon, pour la compilation, c'est assez classique; il faut avoir à disposition les fichier 'mod' correspondant aux modules utilisés; et il faut que tu lies l'exécutable aux objets (routines appelées par ton prog et appelées par ces mêmes routines).
    Il n'y a pas de librairie proprement dite (mais rien ne t'empêche d'en créer une; cherche dans le forum, tu trouveras certainement des explications détaillées).

    Le plus propre est quand même de ne pas travailler dans le répertoire'mpfun90', et dans ce cas il te faudra spécifier le chemin vers les '*mod' via l'option de compilation -I, et de même ajouter le chemin vers les fichiers '*.o' nécessaires.
    Par exemple, si ton prog est 'test_mp.f' et que les fichiers sont dans '/chemin/vers/mpfun90/f90', avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g95 -O3 -fbackslash -ffree-form -I/chemin/vers/mpfun90/f90 test_mp.f -c
    tu génère l'objet 'test_mp.o'.
    Si pour créer l'exécutable ton programme a besoin des routines de 'mpfun90.o', 'mpmod90.o', 'mpmodm90.o' et 'mpmodx90.o' (pour reprendre les choses telles que faites dans le Makefile), tu créeras ton exécutable avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g95 -o test_mp test_mp.o /chemin/vers/mpfun90/f90/mpfun90.o /chemin/vers/mpfun90/f90/mpmod90.o /chemin/vers/mpfun90/f90/mpmodm90.o /chemin/vers/mpfun90/f90/mpmodx90.o

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2007, 10h13
  2. problème de matrice
    Par micfont999 dans le forum C++
    Réponses: 9
    Dernier message: 07/01/2007, 15h19
  3. [Fortran 90] Problème de fmt
    Par Nours87 dans le forum Fortran
    Réponses: 16
    Dernier message: 12/01/2006, 19h29
  4. Réponses: 8
    Dernier message: 01/06/2005, 09h45
  5. [Fortran 77] Problème de compilation
    Par Kenji dans le forum Fortran
    Réponses: 26
    Dernier message: 23/05/2005, 16h07

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