Fortran - array cannot have a deferred shape

 
Vista:

array cannot have a deferred shape

Publicado por Hector (2 intervenciones) el 03/05/2018 23:56:52
Hola buenas,
he hecho un programa para calcular el numero de condición de una matriz y de esa manera sus sensibilidad a perturbaciones. Para ello he realizado un modulo con una serie de normas matriciales ( adjunto código ). El problema es que al compilarlo me pone lo siguiente: array `v` at (1) cannot have a deferred shape. Entiendo que tengo que declarar la dimension de la matriz explícitamente y no como lo he hecho, pero no se como. Si alguien sabe como solucionarlo le agradecería mucho su ayuda. Gracias.
PD: he probado a declarar la dimension de V de la misma forma que declaro la de A, pero no funciona.

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
subroutine norma_inf_m( A, normainf )
 
implicit none
 
  real, intent( in ) :: A( :, : )
  real, intent( out ) :: normainf
  real :: V( : )
  integer :: i, j, n
  real :: S
 
  n = size( A, dim = 1 )
 
    do i = 1, n
 
    S = 0
    do j = 1, n
      S = S + abs( A( i, j ) )
    end do
 
    V( i ) = S
 
  end do
 
  normainf = maxval( V )
 
end subroutine norma_inf_m
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

array cannot have a deferred shape

Publicado por Zip (13 intervenciones) el 12/05/2018 19:33:06
Es que no estás especificando el tamaño del arreglo.

Si viene del código principal, debes transferir la dimensión. Por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Program Sample
 
	Integer(2) :: NumE
	Real(4), Dimension (NumE) :: VarX
 
	Call SubSample (NumE, VarX)
 
End Program
 
Subroutine SubSample(NumE, VarX)
 
	Integer(2) :: NumE
	Real(4), Dimension (NumE) :: VarX
 
End Subroutine SubSample
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar