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

C Discussion :

tableaux C/tableaux fortran


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 7
    Points
    7
    Par défaut tableaux C/tableaux fortran
    J'ai encapsulé un sous programme fortran dans un programme C. Le problème subsistant est le passage de tableaux multidimensionnels en C à des tableaux fortran.

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    C'est penible a faire. Les tableaux multi-dimensionnels ne sont pas classes de la meme facon en memoire en Fortran et en C.
    Les tableaux Fortran sont en column-major, i.e. la premiere dimension varie la plus rapidement. Les tableaux C sont en row-major, i.e. la dimension la plus a droite varie le plus rapidement.

    Le plus simple est certainement de considerer les tableaux comme ayant une seule dimension (linearisation) et d'utiliser les formules suivantes pour acceder aux elements (exemple en deux dimensions):
    En Fortran:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    index  = (( col  - 1) * Nrow ) + row
    ou les indices vont de 1 a Nrow*Ncol.

    En C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    index  = ( row  * Ncol ) + col
    ou les indices vont de 0 a Nrow*Ncol - 1.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    A plusieurs dimensions on fait comment ?

  4. #4
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Ben, il est assez simple de generaliser les formules ci-dessus.
    Par exemple, pour un tableau a trois dimensions N1, N2, N3, pour acceder a l'element i,j,k, on fait en Fortran:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    index =  ((k-1) * N2 + j - 1) * N1 + i
    avec 1 <= i <= N1, 1 <= j <= N2, 1 <= k <= N3.

    en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    index = (i * N2 + j)*N3 + k;
    avec 0 <= i < N1, 0<= j < N2, 0 <= k < N3.

    Mais le plus simple est tout de meme de ne jamais utiliser de tableaux de plus de 1 dimension entre C et Fortran, et d'utiliser une formule commune pour 'simuler' un tableau multi-dimensionnel dans les deux langages (en faisant attention au decalage de 1 dans les indices).

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 22
    Points : 7
    Points
    7
    Par défaut plus simple
    Il me semble plus simple de passer d'un tableau fortran à un tableau C simplement en inversant les indices non?

    J'ai testé en dimension 3...

  6. #6
    Membre expérimenté
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Points : 1 664
    Points
    1 664
    Par défaut
    Faire des tests est effectivement necessaire. Apres, cela depend de qui appelle qui. En effet, tu peux imposer au C de suivre une organisation 'a la Fortran'.
    Mais personnellement, je ne m'embete pas et je travaille uniquement avec des tableaux a une dimension. Les tableaux multi-dimensionnels sont linearises en jouant avec les indices.

Discussions similaires

  1. [Tableaux] [PHP5] Tableaux associatifs
    Par stailer dans le forum Langage
    Réponses: 7
    Dernier message: 13/12/2006, 11h16
  2. [Tableaux] 3 tableaux à la place de 2
    Par lodan dans le forum Langage
    Réponses: 11
    Dernier message: 13/08/2006, 19h41
  3. [Tableaux] Les tableaux multi-dimensionnels
    Par ludovik dans le forum Langage
    Réponses: 2
    Dernier message: 23/05/2006, 12h21
  4. Manipulation de tableaux de tableaux
    Par vargasvan dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2006, 13h54
  5. [Tableaux] les tableaux
    Par jeanfrancois dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2006, 11h02

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