Fortran - Consulta fortran manejo de datos

 
Vista:
sin imagen de perfil

Consulta fortran manejo de datos

Publicado por emiliano (2 intervenciones) el 14/08/2014 15:28:04
hola, estoy tratando de pasar un script fortran a python y tengo algunas dudas que no puedo despejar googleando. Una de ellas es acerca de como guarda los datos en un array (al menos eso entiendo). A continuacion la duda:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
do i2=1,5    !cambio de resolucion a 5x5km
!~         print *,'i2: ',i2
        do k2=1,8    !lectura de las 8 bandas y seleccion de las 2 de interes (lat y long)
!~             print *,'k2: ',k2
            read(11,iostat=io) (posi(j),j=1,cols)
!~             print*, 'img_mod03 IO Error: ',io
!~             print*, 'posi: ',posi(j*5)
!~             stop
            if ((i2.EQ.3).AND.((k2.EQ.1).OR.(k2.EQ.2))) then
                do j=1,(cols-4)/5
                j2=j*5
                i1=i
!~                 print *,'j - i1 - k2 ', j ,i1, k2
!~ 				print *, 'posi: ',posi(j*5)
!~                 print *,'profiles(i1,j,k2) ',profiles(i1,j,k2)
                profiles(i1,j,k2)=posi(j2)
                print *,'profiles(i1,j,k2) ',profiles
                stop
                end do
                stop
            end if
        end do
    end do

Una de las preguntas seria, que esta haciendo cuando :
1
profiles(i1,j,k2)=posi(j2)

profiles y posi estan definidos como real *4
gracias por su ayuda
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

Consulta fortran manejo de datos

Publicado por Sebastian (10 intervenciones) el 14/08/2014 20:17:03
Hola Emiliano.

Lo importante aquí no es el tipo de dato (real*4, real*8,... etc) sino el rango (o dimensión) de las variables. Por ejemplo, si yo defino las siguientes variables "posi" y "profiles" como:
1
2
real(kind=4), dimension(2)     :: posi
real(kind=4), dimension(2,2,2) :: profiles
"posi" tiene rango 1, es decir, es un arreglo de 1 dimensión que contiene 2 elementos. Mientras que "profiles" tiene rango 3, es decir, un arreglo de 3 dimensiones. Ahora asignemos valores a las variables
1
2
3
4
5
6
posi(1) = 1
posi(2) = 2
profiles = 0 ! todos los elementos tienen valor 0
 
! imprimimos el primer elemento de profiles
print *, 'profiles(1,1,1) = ', profiles(1,1,1)
profiles(1,1,1) = 0.00000000

Ahora cambiemos el valor del primer elemento de "profiles" asignándole el valor del primer elemento de "posi"
1
2
profiles(1,1,1) = posi(1)
print *, 'profiles(1,1,1) = ', profiles(1,1,1)
la salida será

profiles(1,1,1) = 1.00000000

creo que esto responde a tu pregunta.

Saludos...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Consulta fortran manejo de datos

Publicado por emiliano (2 intervenciones) el 15/08/2014 21:27:19
Muchas gracias, me pongo con esta punta a intentar destrabar.
Saludos, Emiliano
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