Bonjour à tous,

Ma question est relativement simple. Existe-t-il une façon de passer une matrice à une subroutine, sans avoir besoin de passer pour autant ses dimensions ? Un exemple de l'idée est donnée dans le code ci-dessous :


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
19
20
21
22
23
24
25
26
27
28
29
30
31

PROGRAM 

   INTEGER :: I,J
   DOUBLE PRECISION :: A(2,2)

   ! Initialisation de la matrice
   DO I=1,2
   DO J= 1,2
      A(i,j)=0.D0
   ENDDO
   ENDDO

   CALL SHAPEMATRIX(A)



END PROGRAM



SUBROUTINE SHAPEMATRIX(A)

   DOUBLE PRECISION, INTENT(IN) :: A(:,:)


   ! SHAPE donne la dimension d'une matrice A:M*N sous la forme (M,N)
   Print *,SHAPE(A)

END SUBROUTINE 

Evidemment ce code ne fonctionne pas, mais je ne trouve pas d'écriture correcte (s'il en existe une) de la ligne en rouge.

Merci d'avance à tous ceux qui prendront le temps de m'apporter leur aide.