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.

5.8 Argomenti delle Procedure 253<br />

WRITE(*,*) x%str<br />

int1 = x%j<br />

int2 = x%k<br />

x = new("def",11,22)<br />

RETURN<br />

END SUBROUTINE sub_mod_2<br />

END MODULE miomodulo<br />

!<br />

PROGRAM prova<br />

USE miomodulo<br />

CALL sub_mod_1( )<br />

WRITE(*,*) x<br />

STOP<br />

END PROGRAM prova<br />

Si può banalmente verificare che l’output di questo programma è:<br />

abc<br />

def 11 22<br />

Un esempio un pò più interessante potrebbe essere quello di definire un tipo di dati grid2D<br />

che raggruppi alcune informazioni (ad esempio estremi del dominio computazionale e numero di<br />

nodi lungo gli assi) relative ad una griglia bidimensionale per la discretizzazione di un problema<br />

risolto numericamente alle differenze finite:<br />

TYPE grid2D<br />

! N.B.: xmin, ymin, xmax e ymax definiscono un rettangolo<br />

REAL :: xmin, ymin<br />

REAL :: xmax, ymax<br />

! nx ed ny sono le variabili di partizione<br />

INTEGER :: nx, ny<br />

END TYPE grid2D<br />

ed un set di funzioni che lavorino proprio su dati di tipo grid2D e che forniscano ad esempio<br />

la spaziatura della griglia lungo gli assi x ed y:<br />

REAL FUNCTION dx(g)<br />

TYPE(grid2D) :: g<br />

dx = (g%xmax-g%xmin)/g%nx<br />

RETURN<br />

END FUNCTION dx<br />

REAL FUNCTION dy(g)<br />

TYPE(grid2D) :: g<br />

dy = (g%ymax-g%ymin)/g%ny<br />

RETURN<br />

END FUNCTION dx

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

Saved successfully!

Ooh no, something went wrong!