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 :

Output d'un array : problème de taille


Sujet :

Fortran

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Output d'un array : problème de taille
    Bonjour,

    Je cherche à écrire un tableau dans un fichier avec description du format. Cela fonctionne très bien, mais j'ai observé qu'au-delà d'une certaine taille par ligne, mon output se divise en deux lignes (comme si un nombre de caractères maximum était atteint).

    Ex. de programme (structure similaire au programme initial) :
    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
     
    	PROGRAM output_probl
    	IMPLICIT NONE
    	INTEGER, PARAMETER :: alen=110
    	DOUBLE PRECISION, DIMENSION(alen)::a
    	INTEGER :: i,j
     
    	OPEN(1,file='output.dat')
    2	format(I5,1x,110(e14.6e3,1x))
     
    	DO i=1,15
    	 DO j=1,alen
    	  a(j)=(i*j**2)*0.0123456789
    	 ENDDO
    	 write(1,2)i,(a(j),j=1,alen)
    	ENDDO
     
    	END PROGRAM output_probl

    A noter que l'output se passe très bien si je change le format pour l'écriture, par ex en passant de 14 à 8 caractères - ce qui n'est évidemment pas une solution satisfaisante. Tout se passe donc comme si une taille maximale de caractères par ligne était atteinte.
    Un détail pas trop compliqué doit m'échapper, mais je cherche sans succès depuis quelque temps.

    Quelqu'un voit-il une solution à mon problème (sans changer le format d'output) ?

    Merci beaucoup pour votre aide.

    m.

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Je ne suis pas certain que ma réponse résoudra ton problème, mais il y a une chose que beaucoup de gens ignorent, à savoir que, pour des raisons historiques, l'utilisation de numéros d'unités inférieurs à 10 peut être "dangereuse". Alors, essaie de modifier ton programme avec Open(11,... etc.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour Jean-Marc,

    Merci pour ta réponse.
    En fait j'ai utilisé ces références par simplicité pour l'exemple (et effectivement j'aurais plutôt dû utiliser 20 et 30 par exemple), mais ce n'est pas la source du problème (qui persiste si l'on change cela, j'ai vérifié).
    Ce n'est donc malheureusement pas cela le problème...

    m.

  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
    Points : 1 346
    Points
    1 346
    Par défaut
    J'ai légèrement modifié ton programme comme suit :
    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
    	PROGRAM output_probl
    	IMPLICIT NONE
    	INTEGER, PARAMETER :: alen=11000
    	DOUBLE PRECISION, DIMENSION(alen)::a
    	INTEGER :: i,j
    	character (40) ::MonFmt
     
    	OPEN(11,file='output.dat')
    	write(MonFmt,'(a,i0,a)')'(I5,1x,',alen,'(e14.6e3,1x))'
     
    	DO i=1,15
    	 DO j=1,alen
    	  a(j)=(i*j**2)*0.0123456789
    	 ENDDO
    	 write(11,MonFmt)i,(a(j),j=1,alen)
    	ENDDO
     
    	END PROGRAM output_probl
    Et je ne suis pas capable de reproduire ton problème. En fait, mon éditeur fait des siennes si alen est grand, mais c'est uniquement un problème d'éditeur incapable d'afficher un fichier très large. Il affiche en insérant des « word-wraps » à partir de la colonne 4096.

    Peut-être as-tu aussi un simple problème d'affichage.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjour Sylvain,

    J'ai trouvé où était le problème, et tu tenais en effet le bon bout.
    Il n'y avait aucun souci avec l'écriture de l'array, et comme tu le suggérais c'était un problème d'affichage. Je pensais avoir un souci à ce niveau car mon post-processing plantait, mais c'était lié à une autre erreur, très discrète, et je cherchais erronément du côté d'un problème d'écriture.

    Merci pour l'aide !

    m.

  6. #6
    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
    Alors, tu me dois une bière !

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/02/2009, 17h21
  2. Problème de taille de tableau
    Par k-nine dans le forum C
    Réponses: 6
    Dernier message: 25/09/2005, 09h16
  3. [CSS] Problème de taille de div
    Par meda dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 24/08/2005, 14h30
  4. [swing][JComboBox]Problème de taille
    Par n!co dans le forum Composants
    Réponses: 8
    Dernier message: 06/03/2004, 10h53
  5. [langage] Problème de taille de fichier à mettre dans
    Par And_the_problem_is dans le forum Langage
    Réponses: 10
    Dernier message: 13/08/2002, 09h41

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