Skip to content

Commit 901d337

Browse files
committed
fix read_gadget2_pos unit conversion
1 parent 5641bc0 commit 901d337

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/Gadget.jl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -449,21 +449,23 @@ function read_gadget2(filename::AbstractString, units, fileunits = uGadget2; kw.
449449
return header, data
450450
end
451451

452-
function read_gadget2_pos_kernel(f::Union{IOStream,Stream{format"Gadget2"}}, header::HeaderGadget2, units)
452+
function read_gadget2_pos_kernel(f::Union{IOStream,Stream{format"Gadget2"}}, header::HeaderGadget2, units, fileunits)
453453
NumTotal = sum(header.npart)
454454

455455
if isnothing(units)
456456
uLength = 1.0
457+
fileuLength = 1.0
457458
else
458459
uLength = getuLength(units)
460+
fileuLength = getuLength(fileunits)
459461
end
460462
pos = StructArray(PVector(uLength) for i in 1:NumTotal)
461463

462464
temp1 = read(f, Int32)
463465
for i in 1:NumTotal
464-
x = read(f, Float32) * 1.0 * uLength
465-
y = read(f, Float32) * 1.0 * uLength
466-
z = read(f, Float32) * 1.0 * uLength
466+
x = uconvert(uLength, read(f, Float32) * 1.0 * fileuLength)
467+
y = uconvert(uLength, read(f, Float32) * 1.0 * fileuLength)
468+
z = uconvert(uLength, read(f, Float32) * 1.0 * fileuLength)
467469
pos[i] = PVector(x, y, z)
468470
end
469471
temp2 = read(f, Int32)
@@ -474,15 +476,15 @@ function read_gadget2_pos_kernel(f::Union{IOStream,Stream{format"Gadget2"}}, hea
474476
return pos
475477
end
476478

477-
function read_gadget2_pos_kernel_format2(f::Union{IOStream,Stream{format"Gadget2"}}, header::HeaderGadget2, units)
479+
function read_gadget2_pos_kernel_format2(f::Union{IOStream,Stream{format"Gadget2"}}, header::HeaderGadget2, units, fileunits)
478480
while !eof(f)
479481
temp1 = read(f, Int32)
480482
name = String(read(f, 4))
481483
temp2 = read(f, Int32)
482484
skippoint = read(f, Int32)
483485

484486
if name == "POS "
485-
return read_gadget2_pos_kernel(f, header, units)
487+
return read_gadget2_pos_kernel(f, header, units, fileunits)
486488
else
487489
skip(f, temp2)
488490
end
@@ -492,20 +494,20 @@ function read_gadget2_pos_kernel_format2(f::Union{IOStream,Stream{format"Gadget2
492494
return nothing
493495
end
494496

495-
function read_gadget2_pos(filename::AbstractString, units)
497+
function read_gadget2_pos(filename::AbstractString, units, fileunits = uGadget2)
496498
f = open(filename, "r")
497499

498500
temp = read(f, Int32)
499501
if temp == 256
500502
seekstart(f)
501503
header = read_gadget2_header(f)
502-
pos = read_gadget2_pos_kernel(f, header, units)
504+
pos = read_gadget2_pos_kernel(f, header, units, fileunits)
503505
elseif temp == 8 # Format 2
504506
name = String(read(f, 4))
505507
temp1 = read(f, Int32)
506508
temp2 = read(f, Int32)
507509
header = read_gadget2_header(f)
508-
pos = read_gadget2_pos_kernel_format2(f, header, units)
510+
pos = read_gadget2_pos_kernel_format2(f, header, units, fileunits)
509511
else
510512
error("Unsupported Gadget2 Format!")
511513
end

0 commit comments

Comments
 (0)