25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6.6 Procedure intrinseche per gli array 351<br />

2 3 1<br />

6 4 5<br />

7 8 9<br />

EOSHIFT(ARRAY,SHIFT[,BOUNDARY][,DIM])<br />

Esegue uno shift di tipo end-off su un array di rango uno o, se applicata ad un array di rango<br />

superiore, uno shift di tipo end-off ad intere sezioni di rango uno (vettori) lungo una data<br />

dimensione dell’array.<br />

Alcuni elementi sono shiftati al di fuori delle dimensioni dell’array e copie degli elementi del<br />

contorno (boundary) vengono inseriti all’altra estremità dell’array.<br />

Sezioni differenti possono essere shiftate in misura diversa oltre che in differenti direzioni.<br />

Relativamente agli argomenti, si ha quanto segue:<br />

• L’argomento ARRAY può essere un array di qualsiasi rango e tipo.<br />

• L’argomento SHIFT può essere uno scalare o anche un array (nel qual caso deve avere<br />

rango minore di un’unità rispetto a ARRAY) di tipo INTEGER.<br />

• L’argomento opzionale BOUNDARY deve avere stesso tipo e parametri di kind diARRAY. Esso<br />

può essere uno scalare oppure un array il cui rango sia par a quello di ARRAY diminuito<br />

di uno. Se il parametro BOUNDARY è assente, sono assunti i seguenti valori di default,<br />

dipendenti dal tipo di ARRAY:<br />

tipo di ARRAY valore di BOUNDARY<br />

INTEGER 0<br />

REAL 0.0<br />

COMPLEX (0.0,0.0)<br />

LOGICAL .FALSE.<br />

CHARACTER(LEN=n) n spazi bianchi<br />

• <strong>Il</strong> parametro opzionale DIM è, invece, uno scalare intero con valore compreso tra 1 ed n,<br />

con n il rango di ARRAY (DIM è assunto, per default, pari ad uno).<br />

<strong>Il</strong> risultato è un array avente stesso tipo, parametri di kind e forma di ARRAY. In particolare:<br />

• Se ARRAY ha rango unitario, il medesimo shift è applicato a ciascun elemento. Se qualche<br />

elemento è strappato via dall’array, esso sarà rimpiazzato dal valore di BOUNDARY.<br />

• Se ARRAY ha rango maggiore di uno, ciascuna sezione dell’array risultante è shiftato del<br />

valore diSHIFT se quest’ultimo è uno scalare, del corrispondente valore inSHIFT, se SHIFT<br />

è un array.<br />

• Se un elemento è spostato fuori dall’array, il valore di BOUNDARY è inserito all’altra<br />

estremità della sezione di array.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!