Articles of fortran

Come si utilizzano i dati del modulo Fortran 90

Supponiamo che tu abbia un modulo Fortran 90 contenente un sacco di variabili, funzioni e subroutine. Nella tua dichiarazione USE , quale convenzione segui: dichiarare esplicitamente quali variabili / funzioni / subroutine utilizzate con la syntax , only : , USE [module_name], only : variable1, variable2, … ? Inserisci una coperta USE [module_name] ? Da […]

Passare le procedure legate al tipo come argomenti

Sto provando a passare una procedura legata al tipo come argomento ad un’altra subroutine. Voglio sapere se questo è ansible in Fortran. Ecco uno snippet di codice che mostra ciò che sto cercando di fare. module type_definitions type test_type integer :: i1, i2,i3 contains procedure :: add_integers_up end type test_type contains subroutine add_integers_up(this,i4,ans) class(test_type) :: […]

MPI_Recv sovrascrive parti di memoria a cui non dovrebbe accedere

Nel seguente codice il valore di xysize viene modificato, se non lo dichiaro come parametro (che generalmente non posso fare). Succede solo con le ottimizzazioni -O2 e più in gfortran 4.7.2 e OpenMPI 1.6. Come è ansible? Non riesco a trovare l’interfaccia esatta, che importa da mpi.mod , ma il prototipo C afferma chiaramente che […]

Linea troncata, Errore di syntax nell’elenco degli argomenti

Quando compilo il programma qui sotto, ho un errore e un avvertimento nella call Coor_Trans comando call Coor_Trans come Avvertenza: linea troncata Errore: errore di syntax nell’elenco degli argomenti Compilo il programma più volte, ma non funziona. Forse c’è qualcosa di sbagliato nel mio comando di chiamata. program 3D implicit none integer :: i,j,k integer, […]

In loop su nomi di file variabili

Sto usando Fortran per fare calcoli su un enorme set di dati che è stato diviso in molti file. I nomi dei file sono: maltoLyo12per-reimage-set1.traj maltoLyo12per-reimage-set2.traj maltoLyo12per-reimage-set3.traj Il codice che ho scritto per fare il calcolo è il seguente: fileLoop: do j = 31, 34 OPEN(unit=31,status=’old’,file=fileplace//’maltoLyo12per-reimage-set1.traj’) OPEN(unit=32,status=’old’,file=fileplace//’maltoLyo12per-reimage-set2.traj’) OPEN(unit=33,status=’old’,file=fileplace//’maltoLyo12per-reimage-set3.traj’) OPEN(unit=34,status=’old’,file=fileplace//’maltoLyo12per-reimage-set4.traj’) … operation…. close (j) end do […]

Dichiarazione Fortran IF con numeri / etichette piuttosto che un’altra affermazione

Cosa significa questo codice Fortran: IF (J1-3) 20, 20, 21 21 J1 = J1 – 3 20 IF (J2-3) 22, 22, 23 23 J2 = J2 – 3 22 CONTINUE Ho visto nel vecchio progetto e non ho idea di cosa significhi questo IF con numeri (etichette).

La procedura con argomento fittizio a forma assunta deve avere un’interfaccia esplicita

Sono completamente nuovo in Fortran 90 e sto cercando di capire come passare un array a una funzione. Ho guardato sul web e non ho trovato nessun esempio chiaro e semplice, quindi ho deciso di postare qui. Vorrei che la funzione fosse in grado di lavorare su un array di qualsiasi lunghezza (la lunghezza dell’array […]

Analogo STL in Fortran

Base: ho un grosso programma parallelo Fortran90 / MPI che rappresenta un modello fisico complesso. Voglio aggiungere nuove funzionalità ad esso: per esempio, ho bisogno di organizzare la coda dei messaggi, introdurre mergesort da qualche parte e utilizzare le tabelle hash. Problema: so come scrivere hash table, creare code e code mergesort da parte mia, […]

Dove mettere “implicito nessuno” in Fortran

Devo mettere implicit none in ogni funzione e subroutine? O è sufficiente metterlo all’inizio del modulo che contiene queste funzioni e subroutine? O è sufficiente metterlo all’inizio del programma che utilizza questi moduli? Dall’osservazione del codice di lavoro altrui, implicit none è incluso in tutti questi luoghi. Non sono sicuro che ciò avvenga in modo […]

Cosa significa “real * 8”?

Il manuale di un programma scritto in Fortran 90 dice: “Tutte le variabili e i parametri reali sono specificati con precisione a 64 bit (cioè real*8 ).” Secondo Wikipedia , la precisione singola corrisponde alla precisione a 32 bit, mentre la precisione doppia corrisponde alla precisione a 64 bit, quindi apparentemente il programma usa una […]