J'essaie de faire un tableau logique (B) à utiliser dans l'indexation logique basée sur des valeurs comprises entre .1 et .999 dans un tableau (EP_G2) en utilisant un couple de méthodes différentes 1) où boucle 2) ANY.Indexation logique basée sur "trouver" dans Fortran 90
program flux_3d
implicit none
INTEGER :: RMAX, YMAX, ZMAZ, timesteps
DOUBLE PRECISION, PARAMETER :: pmin=0.1
DOUBLE PRECISION, PARAMETER :: pmax=0.999
INTEGER :: sz
DOUBLE PRECISION, ALLOCATABLE :: EP_G2(:,:), C(:)
INTEGER, DIMENSION(RMAX*ZMAX*YMAX) :: B
LOGICAL, DIMENSION(RMAX*ZMAX*YMAX) :: A
! dimensions of array,
RMAX = 540
YMAX = 204
ZMAX = 54
timesteps = 1
!Open ascii array
OPEN(100, FILE ='EP_G2', form = 'formatted')
ALLOCATE(EP_G2(RMAX*ZMAX*YMAX, timesteps))
READ(100, *) EP_G2
WHERE(pmin<EP_G2(:,timesteps)<pmax) B = 1
ELSEWHERE
B = 0
ENDWHERE
PRINT*, B
! SZ # OF POINTS IN B
sz = count(B.eq.1)
!alternate way of finding points between pmin and pmax
A = ANY(pmin<EP_G2(:,t)<pmax)
print*, sz
!Then use the logical matrix B (or A) to make new array
!Basically I want a new array that isolates just the points in array between
!pmin and pmax
ALLOCATE(C(sz))
C = EP_G2(LOGICAL(B), 1)
La question que je reçois est que je reçois soit le tableau tout ou rien et la commande LOGIQUE (B) obtient une erreur qu'il n'est pas le bon type. Je suis nouveau à Fortran venant de Matlab où j'utiliserais simplement trouver. En outre, puisque ce tableau est plus de 5,948,640 x 1 temps de calcul est un problème. J'utilise le compilateur Intel Fortran (15.0 je crois). Fondamentalement, je cherche le moyen le plus rapide de trouver les index de points dans un tableau entre deux nombres.
Toute aide serait très appréciée.
Juste pour clarifier la question. Vous avez un tableau de 'DOUBLE PRECISION :: EP_G2'. Vous voulez un deuxième tableau, 'DOUBLE PRECISION :: C', qui contient uniquement les valeurs d'une plage particulière. Est-ce exact? Avez-vous également besoin de stocker les index de ces nombres dans 'EP_G2'? – Jack
Oui. Je cherche à stocker les valeurs dans un tableau ET les index dans un tableau séparé. – akimbo