I Ausgangs Fortran Daten im Binärformat einer NxMxL Matrix schreibe wie folgtFortran Binärausgang größer als erwartet
open(94, file = 'mean_flow_sp.dat', status = 'replace', action = 'write', form = 'unformatted')
do k = 0,L-1
do j = 0,M-1
do i = 0,N-1
write(94) u(i,j,k), v(i,j,k), w(i,j,k)
enddo
enddo
enddo
close(94)
wo u, v, w
wie z.B. single precision Werte zugeordnet u(0:N-1,0:M-1,0:L-1)
. Dann habe ich gelesen, die Ausgabedatei in Python als
f = open('mean_flow_sp.dat', 'rb')
data = np.fromfile(file=f, dtype=np.single).reshape(N,M,L)
f.close()
Das erste ungerade, was ich ist bemerken folge, daß der Ausgang Fortran Datei 10066329600 Bytes lang ist (dies wird unter Verwendung von L = 640, M = 512, N = 1536). Also die Frage ist, warum diese Datei nicht 1536 * 512 * 640 * 3 (Variablen) * 4 (Bytes) = 6.039.797.760 Bytes lang ist?
Offensichtlich löst das Python-Skript einen Fehler aus, wenn ich versuche, die gelesenen Daten umzuformen, da es nicht die Größe von NxLxM x3 (in einfacher Genauigkeit) hat.
Warum ist die Ausgabedatei so groß?
Ihr Compiler fügt wahrscheinlich Kopf-/Fußdaten zu jedem geschriebenen Datensatz hinzu, den Sie nicht berücksichtigen. Sie können entweder nach anderen Fragen suchen, die Ihrem Setup entsprechen, oder nach Stream-Ausgaben suchen. – francescalus
Danke, das habe ich ein bisschen später bemerkt und die Antwort gepostet. –