public void Write(Cell c)
 {
     this.Write(c.SnapNum);
     this.Write(c.PHKey);
     this.Write(c.Count);
     try
     {
         this.Write(SqlRealArrayMax.FromArray(c.PosToArray()));
         this.Write(SqlRealArrayMax.FromArray(c.VelToArray()));
         this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray()));
     }
     catch (OverflowException e)
     {
         Console.Write(e.Message);
     }
 }
        /* For writing a row in a snapshot file using arrays */
        public void WriteCell(Cell c)
        {
            this.Write(c.SnapNum);
            this.Write(c.PHKey);
            this.Write(c.Count);

            try
            {
                this.Write(SqlRealArrayMax.FromArray(c.PosToArray()));
                this.Write(SqlRealArrayMax.FromArray(c.VelToArray()));
                this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray()));
                //don't write out the filter
                //this.WriteFilter(c.filter);
            }
            catch (OverflowException e)
            {
                Console.Write(e.Message);
            }
        }
        public void WriteCellRow(Cell c, int first, int rowSize)
        {
            int maxBytes = 8000;
            long[] idArray = c.IdToArray();
            float[] posArray = c.PosToArray();
            float[] velArray = c.VelToArray();

            long[] curIDs = new long[rowSize];
            Array.Copy(idArray, first, curIDs, 0, rowSize);
            float[] curPos = new float[rowSize];
            Array.Copy(posArray, first, curPos, 0, rowSize);
            float[] curVel = new float[rowSize];
            Array.Copy(velArray, first, curVel, 0, rowSize);

            Debug.Assert(rowSize * sizeof(float) * 3 < maxBytes && rowSize * sizeof(long) < maxBytes, "Array size is too big. It is " + rowSize);

            this.Write(c.SnapNum);
            this.Write(c.PHKey);
            this.Write(rowSize);

            try
            {
                this.Write(SqlRealArray.FromArray(curPos));
                this.Write(SqlRealArray.FromArray(curVel));
                this.Write(SqlBigIntArray.FromArray(curIDs));
                //don't write out the filter
                //this.WriteFilter(c.filter);
            }
            catch (OverflowException e)
            {
                Console.Write(e.Message);
            }
        }
 public void WriteUncompressedCell(Cell c, int phbits, double box)
 {
     this.Write(c.SnapNum);
     this.Write(c.PHKey);
     this.Write(c.x0);
     this.Write(c.y0);
     this.Write(c.z0);
     this.Write(c.Count);
     this.Write(c.scaleFactorInv);
     try
     {
         this.Write(SqlRealArrayMax.FromArray(c.PosToArray()));
         this.Write(SqlRealArrayMax.FromArray(c.VelToArray()));
         this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray()));
     }
     catch (OverflowException e)
     {
         // TODO: log this in the summary file
         Console.Write(e.Message);
     }
 }
 /// <summary>
 /// Writes a cell to a single row in a table, similarly to WriteCell(Cell),
 /// but this method compresses the position and velocity arrays to take up half
 /// the space (each element is 2 bytes instead of 4). It also writes the
 /// data necessary to decompress the arrays (x0, y0, z0, the inverse scale
 /// factor, the Peano-Hilbert level, and the box length).
 /// </summary>
 /// <param name="c">the cell to write out</param>
 /// <param name="phbits"> the Peano-Hilbert indexing level</param>
 /// <param name="box">the length of the box (in Mpc)</param>
 /// <seealso cref="Cell"/>
 public void WriteCompressedCell(Cell c, int phbits, double box)
 {
     this.Write(c.SnapNum);
     this.Write(c.PHKey);
     Int16[] posArray = c.PosToCompressedArray(phbits, box);
     Int16[] velArray = c.VelToCompressedArray();
     this.Write(c.x0);
     this.Write(c.y0);
     this.Write(c.z0);
     this.Write(c.Count);
     this.Write(c.scaleFactorInv);
     try
     {
         this.Write(SqlSmallIntArrayMax.FromArray(posArray));
         this.Write(SqlSmallIntArrayMax.FromArray(velArray));
         this.Write(SqlBigIntArrayMax.FromArray(c.IdToArray()));
         //don't write out the filter
         //this.WriteFilter(c.filter);
     }
     catch (OverflowException e)
     {
         // TODO: log this in the summary file
         Console.Write(e.Message);
     }
 }
Beispiel #6
0
 public void processCell(Cell currentCell, List<DataPoint> datapoints)
 {
     long[] cellIds = currentCell.IdToArray();
     foreach (DataPoint current in datapoints)
     {
         Filter<long> cellFilter = new Filter<long>(2, 0.5f, null, current.filterSize, current.hashFunctions);
         for (int i = 0; i < cellIds.Length; i++)
         {
             cellFilter.Add(cellIds[i]);
         }
         current.testFilter(cellFilter);
     }
 }