Fortran - Array Do Loop Constante Parametrizar

 
Vista:

Array Do Loop Constante Parametrizar

Publicado por Pedro Pérez (1 intervención) el 11/10/2011 06:21:56
Este es mi problema:


Tengo que definir un punto (vector) L_X, que puede tener 7 valores (X=A,B,C,D,E,F,G ) ^T o sea que tengo estos siete puntos: L_A,L_B,L_C,L_D,L_E,L_F,L_G.

L_X aparece en otras variables,donde estas dependen de L_X. En el fondo todas las variables depende de este punto.

Ejemplo:

ST_X= SQRT(AS*BS-L_X)

a la vez que otras variables dependen indirectamente de L_X:

ANL_X=(KNM**2-ST_X**2) etc...

Hay que formar para todas las variables, todas las posibilidades introduciendo L_X y sus respectivos valores.

o sea, que hay que formar ST_A,= SQRT(AS*BS-L_A), ST_B,...,ST_G=SQRT(AS*BS-L_G)

y ANL_A=(KNM**2-ST_A**2) ,......,ANL_G =(KNM**2-ST_G**2)

etc...

Y para no escribirlo todo mil veces lo quiero hacer por arrays.Quisiera crear una variable que la pueda escribir en el código que automaticamente interprete que tiene que calcular los 7 puntos.

Tengo esto de momento:

SUBROUTINE PESL (MA,TEM,RES)

Real ST_X,ANL,X
Real(8) L_(7) !aquí defino la variable L_ con 7 valores

Integer I

L_(1)=0 !Donde L_(1) sería igual a L_A y sucesivamente, o sea defino cada componente

L_(2)=MA-TEM ! del vector

L_(3)=TEM+1 ! Los valores del vector MA,TEM y RES son variables de otra subrutina que llamo

L_(4)=MA-RES !al principio

L_(5)=TEM

L_(6)=TEM+2

L_(7)=MA

! a partir de aquí me pierdo

DO I=1,7

L_(I)=L_X ! se puede hacer esto? o como lo haría?

END DO

ST_X= SQRT(AS*BS-L_X !está esto bien?

DO I=1,7

ST_X= SQRT(AS*BS-L_(I)) ! o de esta forma?

END DO !

END

el compilador me da un error y me dice array bounds exceeded.


Todo esto ocurre dentro de una subrutina.

Si tenéis tiempo y me podéis ayudar os lo agradecería mucho mucho.
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 Do Loop Constante Parametrizar

Publicado por Elsa (4 intervenciones) el 14/11/2011 20:00:59
Hola Pedro:
Fijate en el Fortran que estas usando , si la dimension de los vectores empieza en cero o en uno.
Si empieza en cero, entonces dimension l(8).
Elsa
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