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] Programme appelant directement gnuplot pour tracer les résulats en 2D


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 122
    Par défaut [Fortran 77] Programme appelant directement gnuplot pour tracer les résulats en 2D
    Bonjour,

    J'ai un programme fortran qui me permet de résoudre un problème de mécanique. Après calcul, je me retrouve avec un fichier.dat contenant les résultats de mes simulations numériques. Je fais un appel à gnuplot pour faire une représentation graphique du type y=f(x) par exemple.

    Je voudrai savoir s'il était possible, d'intégrer "l'appel de gnuplot, le tracé (visualisation à l'écran) de la courbe... si possible sa sauvegarde dans une extension donnée du type (png) par exemple ou encore de l'imprimer à partir de l'imprimante par défaut" dans mon programme fortran (fortran 77).

    Si quelqu'un possède ce type de programme ou si quelqu'un à une idée, une solution, merci de me venir en aide.

  2. #2
    Membre émérite
    Avatar de Ladgalen
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2007
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2007
    Messages : 466
    Par défaut
    Tu peux essayer avec un call system(" ")

    Cette commande permet d'exécuter une commande système. Donc il suffit qu'entre les guillemet tu mettes la commande que tu utilise pour tracer la courbe avec gnuplot et c'est bon !

    Meme chose pour imprimer

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 122
    Par défaut
    Merci Ladgalen pour ta réponse.

    Ta solution marche, c'est à dire qu'en faisant :
    call system("gnuplot") il me lance bien gnuplot, voilà ce que j'obtiens :
    G N U P L O T
    Version 4.0 patchlevel 0
    last modified Thu Apr 15 14:44:22 CEST 2004
    System: Linux 2.6.18-4-amd64

    Copyright (C) 1986 - 1993, 1998, 2004
    Thomas Williams, Colin Kelley and many others

    This is gnuplot version 4.0. Please refer to the documentation
    for command syntax changes. The old syntax will be accepted
    throughout the 4.0 series, but all save files use the new syntax.

    Type `help` to access the on-line reference manual.
    The gnuplot FAQ is available from
    http://www.gnuplot.info/faq/

    Send comments and requests for help to
    <gnuplot-info@lists.sourceforge.net>
    Send bugs, suggestions and mods to
    <gnuplot-bugs@lists.sourceforge.net>


    Terminal type set to 'x11'
    gnuplot>
    Ensuite je souhaiterais faire ceci :

    gnuplot> load'fichier.gnu'

    à la suite de ce qui précède pour qu'il execute les commandes du fichier.gnu pour obtenir en sortie une courbe.

    Si tu as une idée

    merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 45
    Par défaut
    Salut ,

    Bon je ne suis pas un pro de gnuplot (il y a mille fois mieux que ca... ) mais voila ce que tu peux faire sur un cas basique. Ensuite en maitrisant mieux gnuplot il te suffira d'enrichir le programme de base.

    1) tu mets ces commandes dans un fichier que l'on va appeler graph.gnu
    et qui doit se trouver au meme endroit que ton executable fortran.
    Sinon il faut mettre le chemin complet bien entendu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    set xlabel "abscisses" # on nomme l'axe des abscisses "abscisses"
    set ylabel "ordonnees" # on nomme l'axe des ordonnees "ordonnees"
    set xrange [-8,8]   # on va tracer les abscisses entre -8 et 8
    set yrange [-8,8]   # on va tracer les ordonnees entre -8 et 8
    set xtics -8,2,8  # on va graduer les abscisses de 2 en 2
    set ytics -8,2,8 # on va graduer en ordonnees de 2 en 2
    set title "Exemple de tracee" # on va nommer le graph "Exemple de tracee
    plot "data.txt"  using 1:2 with line   # on trace la 2ieme colonne du fichier en fonction de la 1ere
    set terminal gif # on veut que le graph soit encode en gif (il y a d'autres options )
    set output "graph.gif" # on sauvegarde le graph dans un fichier nomme "graph.gif"
    pause 10 # c'est important de mettre cette commande si tu fais une sortie ecran (c'est a dire sans mettre "set terminal gif" et "set output..." sinon l'affichage est tres rapide et tu ne vois rien.
    2) dans ton code fortran au moment ou tu veux faire le trace de ta courbe tu ecris:

    call system ( 'gnuplot graph.gnu' )

    vas y mon gars ca devrait marcher....

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Entièrement d'accord avec ce qui a été dit, d'autant plus que le script gnuplot peut être préparé à l'avance, ou éventuellement écrit par le programme fortran avant de lancer la commande system().

    Juste une remarque en passant, pour que Gnuplot fasse le graphe dans un fichier l'ordre des commandes est important: il faut d'abord préciser le type du terminal (personnellement je préfère png à gif), puis le nom du fichier de sortie, puis l'instruction 'plot':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    set terminal png
    set output "graph.png"
    plot "data.dat"
    Bonne continuation.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 122
    Par défaut
    Bonjour,

    Merci encore pour la pertinence de vos réponses, en fait mon fichier.gnu contient tout ce que j'ai besoin pour mes courbes, le problème ne se pose pas. Simplement, j'avais juste envie que ce tracé soit executer de façon automatique une fois mon programme.f lancé.

    Votre solution marche, sauf que la fenêtre graphique fait une apparution très très rapide à l'écran, je n'ai donc pas le temps de voir ce qui a été tracé, heureusement que je le demande de sauvegarder ma courbe. Mais bon c'est déjà ça, je ne vais pas vous en demander plus...

    Merci à vous tous

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

Discussions similaires

  1. Quel logiciel pour tracer les spécifications
    Par altair8080 dans le forum ALM
    Réponses: 2
    Dernier message: 19/07/2012, 10h44
  2. Outil pour tracer les requetes SQL envoyées au serveur.
    Par cmako dans le forum Administration
    Réponses: 10
    Dernier message: 18/02/2010, 16h00
  3. comment adapter un programme vb 6.0 pour tous les écran
    Par saidm dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 15/05/2009, 15h29

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