- Marquer comme nouveau
- Marquer
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Hi,
I have an array as follows:
ARRAY1(50,78)
I want to perform an EOSHIFT for only one value of dimension 1. For example, I want to shift all of the following values:
ARRAY1(16,1:78)
My example has 16 but I want this to be dynamic. I want to leave all other values unchanged. ARRAY1(1:15,1:78) and ARRAY1(17:50,1:78) should be unchanged.
I think I can use this:
INTEGER SHIFT(50)
INTEGER MY_INT
SHIFT=0
MY_INT = 16
SHIFT(MY_INT) = 1
ARRAY1 = EOSHIFT(ARRAY1, SHIFT, DIM=2)
I'm pretty sure this will work butis therea more efficient way?
Can I eliminate the SHIFT array with 50 elements?
Thanks,
Ernie P.
- Balises:
- Intel® Fortran Compiler
1 Solution
- Marquer comme nouveau
- Marquer
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Perhaps
[fortran]array1(my_int,:) = EOSHIFT(array1(my_int,:), 1)[/fortran]The compiler may (?) still create temporary arrays for the expression and assignment, but at least it's reasonably clear from the line of source what your intent is.
Lien copié
2 Réponses
- Marquer comme nouveau
- Marquer
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Perhaps
[fortran]array1(my_int,:) = EOSHIFT(array1(my_int,:), 1)[/fortran]The compiler may (?) still create temporary arrays for the expression and assignment, but at least it's reasonably clear from the line of source what your intent is.
- Marquer comme nouveau
- Marquer
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
IanH,
Works. Thanks a lot!
Ernie P.

Répondre
Options du sujet
- S'abonner au fil RSS
- Marquer le sujet comme nouveau
- Marquer le sujet comme lu
- Placer ce Sujet en tête de liste pour l'utilisateur actuel
- Marquer
- S'abonner
- Page imprimable