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 :

C dans du Fortran


Sujet :

Fortran

  1. #1
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut C dans du Fortran
    Bonjour à tous,

    je ne suis pas sûr que mon post est bien placé puisqu'il concerne deux langages : C & Fortran.

    Bref, je possède un logiciel dont je possède aussi la source (cf AMBER). C'est intégralement écrit en Fortran. Dans un des modules, une fonction fait le calcul d'une matrice de dérivées secondes pour ensuite s'en servir dans d'autres calculs. Cette matrice n'est jamais renvoyée en sortie de fonction.

    Jusque là, tou va bien dans mon explication ?

    Mon problème est que je veux écrire cette matrice de dérivées secondes dans un fichier texte pour qu'un autre programme puisse s'en servir... Si AMBER avait été écrit en C, aucun problème... Mais c'est du fortran et, comment dire pour être convenable, je suis un buse en Fortran. J'ai fait des essais d'écriture externe dans un fichier mais cela ne veut même pas compiler !!!

    Du coup, je viens au fait de suite, j'ai pensé (oui cela m'arrive des fois ) à faire un module en C et d'utiliser ses fonctions dans le programme Fortran. Je sais qu'il y a des pré-requis. Par exemple, il faut définir les types en fonction du langage Fortran comme suit :

    par exemple...

    Encore, j'ai appris dernièrement que toutes les paramètres en Fortran se passaient par référence. Donc il faut se servir des pointeurs...Ca, ça va.

    Mais y a-t-il ici des personnes ayant déjà eu ce genre d'interfaçage à faire et qui pourrait me conseiller SVP ?

    Un immense merci à tous !
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  2. #2
    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 panda31
    Cette matrice n'est jamais renvoyée en sortie de fonction.
    Tu peux modifier la liste d'argument de la fonction pour qu'elle renvoie la matrice calculee.

    Citation Envoyé par panda31
    J'ai fait des essais d'écriture externe dans un fichier mais cela ne veut même pas compiler !
    Tu n'es pas tres perseverant. Ce n'est pas tellement dur de faire (Fortran 77)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          OPEN(unit=17, file='matrix.txt')
          DO i = 1, imax
             DO j = 1, jmax
               WRITE(17,*) matrix(i,j)
             ENDDO
          ENDDO
          CLOSE(17)
    en supposant que c'est une matrice a deux dimensions.

    Mais y a-t-il ici des personnes ayant déjà eu ce genre d'interfaçage à faire et qui pourrait me conseiller SVP ?
    Je fais cela assez souvent - en supposant que l'on utilise des compilateurs C et Fortran faisant partie de la meme famille (genre g77 et gcc). Il y a pas mal d'info sur Google. Recherche 'mixing C and Fortran'. Remarque que ce n'est pas trivial, notamment lors du passage de tableau a plusieurs dimensions.

  3. #3
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Citation Envoyé par DaZumba
    Tu peux modifier la liste d'argument de la fonction pour qu'elle renvoie la matrice calculee.


    Tu n'es pas tres perseverant. Ce n'est pas tellement dur de faire (Fortran 77)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          OPEN(unit=17, file='matrix.txt')
          DO i = 1, imax
             DO j = 1, jmax
               WRITE(17,*) matrix(i,j)
             ENDDO
          ENDDO
          CLOSE(17)
    en supposant que c'est une matrice a deux dimensions.


    Je fais cela assez souvent - en supposant que l'on utilise des compilateurs C et Fortran faisant partie de la meme famille (genre g77 et gcc). Il y a pas mal d'info sur Google. Recherche 'mixing C and Fortran'. Remarque que ce n'est pas trivial, notamment lors du passage de tableau a plusieurs dimensions.

    Si tu as vu mon code, tu as bien vu que ma syntaxe est la même que celle que tu me conseilles.


    Pour ma persévérance, je travaille sur trois projets en ce moment ce qui me force à faire des choix !!!

    En tout cas, ça compile toujours pas...J'enlève mon code, ça compile...

    ou alors, je compile mal... Mais vu que j'ai rien changé d'autre, j'ai laissé les options telles quelles...
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

  4. #4
    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 panda31
    Si tu as vu mon code, tu as bien vu que ma syntaxe est la même que celle que tu me conseilles.
    J'ai vu ton post dans le forum Fortran, mais comme tu ne te plains de rien, je n'ai rien a repondre. Comme d'habitude, 'ca compile pas' est une declaration vague qui ne permet pas de faire grand'chose. Il faudrait au moins me dire ce qui ne compile pas, quels sont les messages donnes par le compilateur, et si c'est le code C ou Fortran qui pose probleme...

  5. #5
    Membre émérite
    Avatar de panda31
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2003
    Messages : 670
    Par défaut
    Citation Envoyé par DaZumba
    J'ai vu ton post dans le forum Fortran, mais comme tu ne te plains de rien, je n'ai rien a repondre. Comme d'habitude, 'ca compile pas' est une declaration vague qui ne permet pas de faire grand'chose. Il faudrait au moins me dire ce qui ne compile pas, quels sont les messages donnes par le compilateur, et si c'est le code C ou Fortran qui pose probleme...
    1°) Pour le moment, je n'ai pas interfacé C et Fortran
    2°) Je ne serais au boulot que mardi ! Du coup, je ne pourrais te donner le message d'erreur précis que mardi soir !!!
    Michaël Mary
    Consultant PLM dans une société de conseil toulousaine
    Auditeur CNAM-IPST depuis septembre 2008
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    John F. Woods
    mon cv et mon domaine et mon blog
    Aucune question technique par MP, svp

Discussions similaires

  1. Problème avec debug dans code fortran 77
    Par hector2 dans le forum Fortran
    Réponses: 3
    Dernier message: 13/04/2010, 10h40
  2. [Fortran 77] Subroutine dans un fichier
    Par Guega dans le forum Fortran
    Réponses: 2
    Dernier message: 23/07/2007, 12h55
  3. [Fortran][Novice] Write dans un fichier
    Par panda31 dans le forum Fortran
    Réponses: 4
    Dernier message: 19/07/2006, 08h34
  4. [Fortran 90] Ecriture dans fichier
    Par panda31 dans le forum Fortran
    Réponses: 9
    Dernier message: 12/06/2006, 16h53
  5. inclure du fortran dans du code C
    Par vince3320 dans le forum C
    Réponses: 14
    Dernier message: 23/12/2004, 10h26

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