Articles of fortran

Invio di array 2D in Fortran con MPI_Gather

Voglio inviare 2d blocchi di dati usando MPI_GATHER.Ad esempio ho array 2×3 su ciascun nodo e voglio array 8×3 su root, se ho 4 nodes. per gli array 1d MPI_GATHER ordina i dati in base ai ranghi MPI ma per i dati 2d crea confusione !. Qual è il modo pulito per mettere in ordine […]

Perché gli elementi di una matrice sono formattati come zeri quando vengono moltiplicati per 1/2 o 1/3?

Sto scrivendo gli elementi di un array come segue: write(6,'(i4,200(1x,e15.7))’)Jtot0, (a*PJjv(i,Jtot0,j,iv),i=1,nenerdif,100) dove a è una costante. Tuttavia, quando questa costante è uguale a 1/2 o 1/3 l’output è zero e se è uguale a 1, ogni cosa va bene. Gli elementi dell’array sono real*8 . Come posso superare questo, dando che sono obbligato a moltiplicare […]

Passaggio della funzione esterna di più variabili in funzione di una variabile in Fortran

Sto cercando di utilizzare le routine in QUADPACK per eseguire l’integrazione numerica. Le routine si aspettano che le funzioni vengano passate come REAL,EXTERNAL , quindi non ho la libertà di usare i puntatori o qualsiasi altra cosa. È ansible aliasare una funzione f(x,a,b,…) come una funzione f(x) per la routine che si aspetta solo una […]

Chiamare codice a 32 bit dal processo a 64 bit

Ho un’applicazione che stiamo cercando di migrare a 64 bit da 32 bit. È .NET, compilato usando i flag x64. Tuttavia, abbiamo un numero elevato di DLL scritte in FORTRAN 90 compilato per 32 bit. Le funzioni nelle DLL FORTRAN sono abbastanza semplici: si inseriscono i dati, si estraggono i dati; nessun stato di alcun […]

Calcolo del prodotto incrociato di due vettori in Fortran 90

Vorrei calcolare il prodotto incrociato di due vettori in Fortran 90. Ad esempio, a parole, il prodotto incrociato di (1, 2, 3) e (4, 5, 6) risulta essere (-3, 6, -3) in coordinate cartesiane. Ho scritto il seguente codice (programma principale seguito dalla definizione della funzione): PROGRAM crosstest IMPLICIT NONE INTEGER, DIMENSION(3) :: m, n […]

Fortran formato di file non formattato

Non capisco il formato dei file non formattati in fortran. Per esempio: open (3,file=filename,form=”unformatted”,access=”sequential”) write(3) matrix(i,:) emette una colonna di una matrice in un file. Ho scoperto che riempie il file con 4 byte su entrambe le estremità, tuttavia non capisco perché, o come controllare questo comportamento. C’è un modo per rimuovere il padding? Grazie

Perché l’errore di segmentazione sta accadendo in questo codice openmp?

programma principale: program main use omp_lib use my_module implicit none integer, parameter :: nmax = 202000 real(8) :: e_in(nmax) = 0.D0 integer i call omp_set_num_threads(2) !$omp parallel default(firstprivate) !$omp do do i=1,2 print *, e_in(i) print *, eTDSE(i) end do !$omp end do !$omp end parallel end program main modulo: module my_module implicit none integer, […]

Definizioni sperimentali in C99 e collegamenti

Considera il programma C composto da due file, f1.c: int x; f2.c: int x=2; La mia lettura del paragrafo 6.9.2 della norma C99 è che questo programma dovrebbe essere respinto. Nella mia interpretazione di 6.9.2, la variabile x è definita provvisoriamente in f1.c , ma questa definizione provvisoria diventa una definizione effettiva alla fine dell’unità […]

Converti numeri interi in stringhe per creare nomi di file di output in fase di esecuzione

Ho un programma in Fortran che salva i risultati in un file. Al momento apro il file usando OPEN (1, FILE = ‘Output.TXT’) Tuttavia, ora voglio eseguire un ciclo e salvare i risultati di ciascuna iterazione nei file ‘Output1.TXT’ , ‘Output2.TXT’ , ‘Output3.TXT’ e così via. C’è un modo semplice in Fortran per creare nomi […]

Fortran: intero * 4 vs intero (4) vs intero (tipo = 4)

Sto cercando di imparare Fortran e vedo molte definizioni diverse passate in giro e mi chiedo se stanno cercando di realizzare la stessa cosa. Qual è la differenza tra quanto segue? integer*4 integer(4) integer(kind=4)