What is the value of mhullvol? If you stick a @show mhullvol right before
that line, it should print it.

On Fri, Jun 17, 2016 at 11:25 AM, James Noeckel <[email protected]>
wrote:

> This is driving me crazy. In the below code, you can see the print
> statement followed directly by a file write. The default value of the
> variable mhullvol is -1. This is what gets written to the file, despite it
> being assigned a value by that time, as demonstrated by the print, which
> shows 0.827. Is there some behavior I should know about? Is the compiler
> changing the order of execution? Even stranger, this is only happening to
> mhullvol, and none of the other variables.
>
> include("LCIOUtils.jl")
> using MeshTools
> using LCIOUtils
> const globalscale = 0.005
>
> if length(ARGS) != 10
>   println("Usage: PROGRAM filename collection startevent endevent resX
> resY resZ blurRadius bufferpercent thresholdPercent")
>   exit()
> end
>
> filename = ARGS[1]
> outputName = match(r".*/(.*).slcio", filename)[1]
> collectionname = ARGS[2]
> eventstart = parse(Int, ARGS[3])
> eventend = parse(Int, ARGS[4])
> resX, resY, resZ = parse(Int, ARGS[5]), parse(Int, ARGS[6]), parse(Int,
> ARGS[7])
> stdev = parse(Int, ARGS[8])
> bufferpercent = parse(Int, ARGS[9])
> thresholdPercent = parse(Int, ARGS[10])
>
>
> type Collector
>   offset :: Int
>   densityfilename
>   ratiofilename
>   meshdensityfilename
>   energyfilename
>   mhullvolumefilename
>   Collector(num, offset) = new(offset,
> "output/$(outputName)-$(collectionname)-events_$(eventstart)_to_$(eventend)-$(resX)x$(resY)x$(resZ)-blur_$(stdev)-buffer_$(bufferpercent)-threshold_$(thresholdPercent)-hulldensity.txt",
>
>  
> "output/$(outputName)-$(collectionname)-events_$(eventstart)_to_$(eventend)-$(resX)x$(resY)x$(resZ)-blur_$(stdev)-buffer_$(bufferpercent)-threshold_$(thresholdPercent)-volumeratio.txt",
>
>  
> "output/$(outputName)-$(collectionname)-events_$(eventstart)_to_$(eventend)-$(resX)x$(resY)x$(resZ)-blur_$(stdev)-buffer_$(bufferpercent)-threshold_$(thresholdPercent)-meshdensity.txt",
>
>  
> "output/$(outputName)-$(collectionname)-events_$(eventstart)_to_$(eventend)-$(resX)x$(resY)x$(resZ)-blur_$(stdev)-buffer_$(bufferpercent)-threshold_$(thresholdPercent)-mhullvolume.txt",
>
>  
> "output/$(outputName)-$(collectionname)-events_$(eventstart)_to_$(eventend)-MCEnergy.txt")
> end
>
> import Base.call
>
> function call(collector :: Collector, positions :: Matrix, i :: Int,
> maxEnergy::Float64)
>   print("processing event $i")
>   mhull_energydensity = -1
>   ratio = -1
>   mesh_energydensity = -1
>   maxEnergy = -1
>   mhullvol = -1
>   if size(positions)[2] == 0
>     println("no points to load!")
>   else
>     grid = MeshGrid(resX, resY, resZ, positions, true, stdev,
> bufferpercent / 100.0)
>     maxEnergyDensity = maximum(grid.data)
>     minEnergyDensity = minimum(grid.data)
>     print(".")
>
>     verts, indices = createMesh(grid.data, (grid.maxPt - grid.minPt)...,
> grid.minPt..., (maxEnergyDensity - minEnergyDensity) / 100.0 *
> thresholdPercent + minEnergyDensity, 1, globalscale)
>     print(".")
>     verts, indices = removeDoubles(verts, indices)
>     print(".")
>     verts_mhull, indices_mhull = convexhull(verts)
>     print(".")
>     vol = volume(verts, indices)
>     mhullvol = volume(verts_mhull, indices_mhull)
>
>     totalE = sum(positions[4, :])
>     mhull_energydensity = totalE/mhullvol
>     ratio = vol/mhullvol
>     mesh_energydensity = totalE/vol
>     print(".\n")
>
>   end
>
>   densityfile = open(collector.densityfilename, "a")
>   ratiofile = open(collector.ratiofilename, "a")
>   meshdensityfile = open(collector.meshdensityfilename, "a")
>   energyfile = open(collector.energyfilename, "a")
>   mhullvolumefile = open(collector.mhullvolumefilename, "a")
>   write(densityfile, "$(mhull_energydensity)\n")
>   write(ratiofile, "$(ratio)\n")
>   write(meshdensityfile, "$(mesh_energydensity)\n")
>   write(energyfile, "$(maxEnergy)\n")
>   println("Hull volume: $(mhullvol)")
>   write(mhullvolumefile, "$(mhullvol)\n")
>
>   close(densityfile)
>   close(ratiofile)
>   close(meshdensityfile)
>   close(energyfile)
>   close(mhullvolumefile)
> end
>
> mappositions(Collector(eventend - eventstart + 1, eventstart-1), filename,
> eventstart, eventend)
>
> As you can see, the print(mhullvol) and write("$(mhullvol)\n") are right
> next to each other, so the discrepancy makes no sense.
>

Reply via email to