Bonjour,

Je dois ré-écrire un code Fortran dans le cadre de mon stage, pour l'adapter à une nouvelle librairie. Hormis le fait que je ne connais pas ce langage (ce qui n'est pas très important, je peux m'adapter), je trouve une construction un peu bizarre dans le code :

Le tableau pi0 est déclaré comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
real, dimension(ib:ie,jb:je,kb:ke) :: pi0
Puis une partie du code est censée écrire le contenu du tableau dans un fichier via l'appel d'une fonction qui permet de transcrire un tableau 3D au bon format pour le fichier.

Or avant cela je trouve :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
do k=1,nk
do j=1,nj
do i=1,ni
   ds(i,j,k)=pi0(i,j,k)
enddo
enddo
enddo
Puis c'est le tableau ds qui est écrit dans le fichier, plutôt que le tableau pi0.
Sachant que le tableau ds est déclaré comme suit :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
real, dimension(ni,nj,nk) :: ds
Normalement ie-ib = ni, je-jb = nj, et ke-kb = nk, donc les deux tableaux ont la même taille.

Sachant que ces dimensions peuvent être très grandes (typiquement 100x100x100 minimum) j'aimerai comprendre ce qui a motivé le développeur initial à faire une telle copie massive avant écriture et pourquoi il n'a pas écrit directement le tableau pi0 dans le fichier. Est-ce un aspect de Fortran que je ne comprend pas ? (j'ai déjà du mal à comprendre comment cette copie est faite sachant que les boucles vont de 1 à ni,nj et nk, alors que l'un des tableaux n'est pas indicé de la même manière que l'autre).

Précision (si ça peut être utile) : le tableau pi0 est l'un des paramètre d'entrée de la subroutine dans laquelle je travaille, ds est un tableau local. Il y a toute une série d'opération du même genre impliquant d'autres tableaux, tous doivent être écrits dans un fichier et tous sont d'abord copiés dans le tableau ds, lui même écrit dans le fichier ensuite.

Je ne peux malheureusement pas vous donner l'intégralité du code car je travaille sur un projet subventionné par IBM, il y a donc des informations que je ne peux pas divulguer.

Merci de votre aide !

EDIT: ça manque d'un bouton "supprimer la discussion" dans ce forum ^^, je viens de trouver le problème : dans certains cas d'exécutions ie-ib = ni +1, de même pour les autres dimensions, et on ne veut pas écrire les dernières valeurs. Ce programme était juste trop mal commenté -_-