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 :

Problème sortie avec ifort


Sujet :

Fortran

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Par défaut Problème sortie avec ifort
    Bonjour,

    je développe avec un compilateur gfortran, mes sources vont maintenant devoir être compilées avec ifort. J'ai donc installé ifort sur ma machine pour m'assurer que la compilation se faisait correctement. Aucun problème à première vue, si ce n'est le format des fichiers de sortie. En effet, j'inscris dans un fichier texte 4 colonnes de valeurs. Avec ifort, un retour chariot se fait automatiquement à la ligne 61 pour chaque colonnes (cf. ci-dessous).
    Mes fichiers ne sont donc plus exploitables avec les outils que j'avais développés

    Par exemple avec ifort :
    700 -32.8853925726605 4.630392564537861E-010
    591853269031.946
    Avec gfortran :
    700 -32.8853925726605 4.630392564537861E-010 591853269031.946
    Quelqu'un aurait-il une solution ?

    Je vous remercie par avance.
    Yann.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    réalisez vous une écriture formatée de vos données dans le fichier de sortie ?

    ou est-elle non-formatée ? dans ce dernier cas vous devriez avoir une syntaxe comme suit :
    (u étant l'unité logique de votre fichier)
    Si elle est non formatée, vous pouvez tenter avec un format, dans votre cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    write(u,'(i3,x,f17.13,x,e23.15,x,f17.3)')x,y,z,t
    cela donnera le même formatage de vos nombres sur une ligne unique logiquement. mais vous pouvez jouer sur les formats pour donner une apparence différente.

  3. #3
    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
    Comme le suspect Kango, tu utilises certainement le format libre (list-directed) identifié par une *. Avec un tel format, le compilateur (ou plutôt la librairie) est libre de changer de ligne quand il le veut, de présenter les chiffres avec plus ou moins d'espace, en notation scientifique ou non, ...

    Si tu utilises plus d'un compilateur et que le résultat doit avoir un résultat stable en terme de format, je vois 2 pistes :
    • Celle suggérée par Kango. J'ajouterais le masque d'édition Gn.d qui est assez près du format * pour les reals.
    • Passer par une chaine de caractère intermédiaire.

    Voici un exemple avec la chaine intermédiaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    program test
       implicit none
       character (256) Ligne
     
       open(unit=99, file='test.txt', form='formatted', access='sequential')
     
    !  Méthode instable   
       write (99,*) 700, -32.8853925726605d0, 4.630392564537861d-010, 591853269031.946d0, 123456.789d0
     
    !  Méthode plus stable   
       write (Ligne,*) 700, -32.8853925726605d0, 4.630392564537861d-010, 591853269031.946d0, 123456.789d0
       write(99,'(a)') trim(Ligne)
     
       end program
    Et le résultat avec Lahey Fortran 5.6 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     700 -32.88539257266050 4.630392564537861E-10 591853269031.9460 123456.7890000000
     700 -32.88539257266050 4.630392564537861E-10 591853269031.9460 123456.7890000000
    Puis avec ifort :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
             700  -32.8853925726605       4.630392564537861E-010
       591853269031.946        123456.789000000     
             700  -32.8853925726605       4.630392564537861E-010   591853269031.946        123456.789000000
    Le format n'est pas le même, mais le résultat est sur une ligne.

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Par défaut
    Salut, et merci à vous,

    j'ai testé les deux méthodes, bizarement, la seul qui fonctionne est le passage par une chaîne de charactère.

    Merci pour le tuyau.

  5. #5
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par yann_m Voir le message
    j'ai testé les deux méthodes, bizarement, la seul qui fonctionne est le passage par une chaîne de charactère.
    Ce n'est pas possible. Il doit y avoir une erreur dans le format que tu donnes a write().

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Par défaut
    Salut,

    je suis également le premier surpris, puisque j'avais déjà utilisé la méthode dite instable avec succès pour le compilateur xlf et gfortran.
    Il semble cependant qu'un autre problème est peut être à la base du dilemme. L'éditeur de texte que j'utilise, gedit, et avec lequel j'ai quelques soucis depuis le changement de version de ma distrib LiNuX.

    J'envoie ceci dans un autre post (warning tabulation gedit gfortran ifortran) pour ne pas tout mélanger.

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

Discussions similaires

  1. [Débutant] probléme optimisation avec sortie fonction fmincon
    Par zinanew dans le forum MATLAB
    Réponses: 12
    Dernier message: 02/06/2015, 14h15
  2. problèmes de entrée/sortie avec Qemu
    Par CodeurNé dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 11/05/2011, 16h48
  3. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20
  4. problèmes bizarres avec jdbc
    Par jaimepasteevy dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 12/12/2003, 12h00
  5. problème JSP avec JBuilder et Weblogic 7
    Par viny dans le forum JBuilder
    Réponses: 2
    Dernier message: 24/04/2003, 08h07

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