@@ -449,21 +449,23 @@ function read_gadget2(filename::AbstractString, units, fileunits = uGadget2; kw.
449449 return header, data
450450end
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
475477end
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
493495end
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