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 :

format d'écriture dans un fichier à partir d'une variable


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Profil pro
    Doctorant Mécanique des Fluides
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant Mécanique des Fluides

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 18
    Points
    18
    Par défaut format d'écriture dans un fichier à partir d'une variable
    Salut à tous,

    C'est une question très simple que je me pose mais je n'ai pas trouvé de sujet relatif sur le forum pour y répondre.

    En fait, j'aimerais écrire (en fortran 90) un tableau A de ni x nj éléments dans un fichier *.dat.
    Je compte obtenir dans le fichier exemple1.dat les éléments de A sous forme de ni lignes et nj colonnes.
    Jusque là, ça va...

    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
     
    (implicit none)
     
    integer :: i,j
    integer :: ni,nj
    real (kind=8),dimension(:,:),allocatable :: A
     
    .
    .
    .
     
    open(30,file="exemple1.dat",status='unknown',form='formatted')
     
    do i=1,ni
      write(30,1120) (A(i,j),j=1,nj)
    enddo
     
    close(30)
    Dans un premier temps, imaginons que A comprenne 20 x 20 éléments, le tableau en sortie devra donc avoir 20 lignes et 20 colonnes. Pour ce faire, j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1120 format (20(e12.5,1x))
    Maintenant, comme je traite des tableaux qui n'ont pas forcément les mêmes dimensions (toujours en utilisant le même programme), comment dois-je faire pour rendre ce bout de code plus généraliste ?

    J'avais essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    1120 format (ni(e12.5,1x))
    ... mais cela renvoie une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    exemple.f90(15): error #6186: This character is not valid in format list. [n]
    1120 format (ni(e12.5,1x))
    -------------^
    Pouvez-vous m'aider svp ?

  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
    Points : 1 346
    Points
    1 346
    Par défaut
    Solution #1

    Le format peut prévoir plus de plage que la liste de variable n'en exige.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    do i=1,ni
      write(30,1120) (A(i,j),j=1,nj)
    enddo
    1120 format(9999(e12.5,1x))
    Solution #2

    Générer le format.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    character (20) :: MonFmt
    ...
    write(MonFmt,'(a,i0,a)') '(',nj,'(e12.5,1x))'
    do i=1,ni
      write(30,MonFmt) (A(i,j),j=1,nj)
    enddo
    Solution #3

    Tu utilises la clause advance='no' du write et tu écris élément par élément.

    Solution #4

    NON RECOMMANDÉE. Marchera avec certains compilateurs (Intel) mais c'est non portable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    do i=1,ni
      write(30,1120) (A(i,j),j=1,nj)
    enddo
    1120 format(<nj>(e12.5,1x))

  3. #3
    Membre à l'essai
    Profil pro
    Doctorant Mécanique des Fluides
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant Mécanique des Fluides

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup Sylvain, effectivement, il n'y avait pas à chercher très loin

    Je vais tout de suite tester tout ça. Merci encore!

Discussions similaires

  1. [XL-2003] Problème pour renommer un fichier à partir d'une variable contenu dans une cellule
    Par the-geut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/05/2010, 11h43
  2. Réponses: 1
    Dernier message: 19/04/2008, 16h26
  3. Réponses: 7
    Dernier message: 16/07/2007, 17h23
  4. vérifier un fichier à partir d'une variable
    Par pharaonline dans le forum Langage
    Réponses: 5
    Dernier message: 28/05/2006, 20h51
  5. Réponses: 4
    Dernier message: 01/12/2005, 01h01

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