50 std::vector<uint> & columnBlockOffsets,
51 std::vector<uint> & columnNumBlocks,
52 std::vector<uint> & setColumnOffsets,
53 std::vector<uint> & setNumColumns) {
58 std::vector<std::pair<vmesh::GlobalID,vmesh::GlobalID> > block_pairs;
59 block_pairs.resize( nBlocks );
66 block_pairs[
i] = std::make_pair( blockId_mapped, block );
85 = block - (x_index + y_index*
vmesh->getGridLength()[0])
87 + x_index *
vmesh->getGridLength()[1];
88 block_pairs[
i] = std::make_pair( blockId_mapped, block );
109 + y_index*
vmesh->getGridLength()[2]
110 + x_index*
vmesh->getGridLength()[1]*
vmesh->getGridLength()[2];
111 block_pairs[
i] = std::make_pair( blockId_mapped, block );
117 std::sort( block_pairs.begin(), block_pairs.end(),
paircomparator );
120 columnBlockOffsets.push_back(0);
121 setColumnOffsets.push_back(0);
122 uint prev_column_id, prev_dimension_id;
132 blocks[
i] = block_pairs[
i].second;
134 if (
i > 0 && ( column_id != prev_column_id || dimension_id != (prev_dimension_id + 1) )){
138 columnBlockOffsets.push_back(
i);
140 columnNumBlocks.push_back(columnBlockOffsets[columnBlockOffsets.size()-1] - columnBlockOffsets[columnBlockOffsets.size()-2]);
142 if (column_id != prev_column_id ){
144 setColumnOffsets.push_back(columnBlockOffsets.size() - 1);
146 setNumColumns.push_back(setColumnOffsets[setColumnOffsets.size()-1] - setColumnOffsets[setColumnOffsets.size()-2]);
149 prev_column_id = column_id;
150 prev_dimension_id = dimension_id;
153 columnNumBlocks.push_back(nBlocks - columnBlockOffsets[columnBlockOffsets.size()-1]);
154 setNumColumns.push_back(columnNumBlocks.size() - setColumnOffsets[setColumnOffsets.size()-1]);
void sortBlocklistByDimension(const vmesh::VelocityMesh *vmesh, const uint dimension, uint *blocks, std::vector< uint > &columnBlockOffsets, std::vector< uint > &columnNumBlocks, std::vector< uint > &setColumnOffsets, std::vector< uint > &setNumColumns)