reviewed version 1
This commit is contained in:
parent
1d80d5b69c
commit
90c870f2f5
@ -33,21 +33,18 @@ namespace cont
|
|||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
MultiBlock::MultiBlock(const vtkm::cont::DataSet& ds)
|
MultiBlock::MultiBlock(const vtkm::cont::DataSet& ds)
|
||||||
: capacitytag(false)
|
|
||||||
{
|
{
|
||||||
this->blocks.insert(blocks.end(), ds);
|
this->blocks.insert(blocks.end(), ds);
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
MultiBlock::MultiBlock(const vtkm::cont::MultiBlock& src)
|
MultiBlock::MultiBlock(const vtkm::cont::MultiBlock& src)
|
||||||
: capacitytag(false)
|
|
||||||
{
|
{
|
||||||
this->blocks = src.GetBlocks();
|
this->blocks = src.GetBlocks();
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
MultiBlock::MultiBlock(const std::vector<vtkm::cont::DataSet>& mblocks)
|
MultiBlock::MultiBlock(const std::vector<vtkm::cont::DataSet>& mblocks)
|
||||||
: capacitytag(false)
|
|
||||||
{
|
{
|
||||||
this->blocks = mblocks;
|
this->blocks = mblocks;
|
||||||
}
|
}
|
||||||
@ -55,14 +52,11 @@ MultiBlock::MultiBlock(const std::vector<vtkm::cont::DataSet>& mblocks)
|
|||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
MultiBlock::MultiBlock(vtkm::Id size)
|
MultiBlock::MultiBlock(vtkm::Id size)
|
||||||
{
|
{
|
||||||
this->capacity = size;
|
|
||||||
this->capacitytag = true;
|
|
||||||
this->blocks.reserve(static_cast<std::size_t>(size));
|
this->blocks.reserve(static_cast<std::size_t>(size));
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
MultiBlock::MultiBlock()
|
MultiBlock::MultiBlock()
|
||||||
: capacitytag(false)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,32 +86,6 @@ vtkm::Id MultiBlock::GetNumberOfBlocks() const
|
|||||||
return static_cast<vtkm::Id>(this->blocks.size());
|
return static_cast<vtkm::Id>(this->blocks.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT
|
|
||||||
vtkm::Id MultiBlock::GetCapacity()
|
|
||||||
{
|
|
||||||
if (this->capacitytag)
|
|
||||||
return this->capacity;
|
|
||||||
else
|
|
||||||
std::cout << "structure capacity not set yet\n";
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VTKM_CONT
|
|
||||||
void MultiBlock::SetCapacity(vtkm::Id size)
|
|
||||||
{
|
|
||||||
if (static_cast<vtkm::Id>(this->blocks.capacity()) < size)
|
|
||||||
{
|
|
||||||
this->capacity = size;
|
|
||||||
this->capacitytag = true;
|
|
||||||
this->blocks.reserve(static_cast<std::size_t>(size));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
std::cout << "required size is too small and rejected<<\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
const vtkm::cont::DataSet& MultiBlock::GetBlock(vtkm::Id blockId) const
|
const vtkm::cont::DataSet& MultiBlock::GetBlock(vtkm::Id blockId) const
|
||||||
{
|
{
|
||||||
@ -139,29 +107,32 @@ void MultiBlock::AddBlock(vtkm::cont::DataSet& ds)
|
|||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void MultiBlock::AddBlocks(std::vector<vtkm::cont::DataSet>& mblocks)
|
void MultiBlock::AddBlocks(std::vector<vtkm::cont::DataSet>& mblocks)
|
||||||
{
|
{
|
||||||
for (std::size_t i = 0; i < mblocks.size(); i++)
|
this->blocks.insert(blocks.end(), mblocks.begin(), mblocks.end());
|
||||||
{
|
|
||||||
AddBlock(mblocks[i]);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void MultiBlock::InsertBlock(vtkm::Id index, vtkm::cont::DataSet& ds)
|
void MultiBlock::InsertBlock(vtkm::Id index, vtkm::cont::DataSet& ds)
|
||||||
{
|
{
|
||||||
if (index < static_cast<vtkm::Id>(blocks.size()))
|
if (index <= static_cast<vtkm::Id>(blocks.size()))
|
||||||
this->blocks.insert(blocks.begin() + index, ds);
|
this->blocks.insert(blocks.begin() + index, ds);
|
||||||
else
|
else
|
||||||
std::cout << "insertion failure, invalid insertion posotion\n";
|
{
|
||||||
|
std::string msg = "invalid insert position\n ";
|
||||||
|
throw ErrorExecution(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void MultiBlock::OverWriteBlock(vtkm::Id index, vtkm::cont::DataSet& ds)
|
void MultiBlock::ReplaceBlock(vtkm::Id index, vtkm::cont::DataSet& ds)
|
||||||
{
|
{
|
||||||
if (index < static_cast<vtkm::Id>(blocks.size()))
|
if (index < static_cast<vtkm::Id>(blocks.size()))
|
||||||
this->blocks.at(static_cast<std::size_t>(index)) = ds;
|
this->blocks.at(static_cast<std::size_t>(index)) = ds;
|
||||||
else
|
else
|
||||||
std::cout << "invalid overwrite posotion\n";
|
{
|
||||||
|
std::string msg = "invalid replace position\n ";
|
||||||
|
throw ErrorExecution(msg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
|
@ -64,9 +64,6 @@ public:
|
|||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
vtkm::Id GetNumberOfBlocks() const;
|
vtkm::Id GetNumberOfBlocks() const;
|
||||||
|
|
||||||
VTKM_CONT
|
|
||||||
vtkm::Id GetCapacity();
|
|
||||||
|
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void SetCapacity(vtkm::Id size);
|
void SetCapacity(vtkm::Id size);
|
||||||
|
|
||||||
@ -83,7 +80,7 @@ public:
|
|||||||
void InsertBlock(vtkm::Id index, vtkm::cont::DataSet& ds);
|
void InsertBlock(vtkm::Id index, vtkm::cont::DataSet& ds);
|
||||||
/// replace the "index" positioned element of the contained DataSet vector with "ds"
|
/// replace the "index" positioned element of the contained DataSet vector with "ds"
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void OverWriteBlock(vtkm::Id index, vtkm::cont::DataSet& ds);
|
void ReplaceBlock(vtkm::Id index, vtkm::cont::DataSet& ds);
|
||||||
/// append the DataSet vector "mblocks" to the end of the contained one
|
/// append the DataSet vector "mblocks" to the end of the contained one
|
||||||
VTKM_CONT
|
VTKM_CONT
|
||||||
void AddBlocks(std::vector<vtkm::cont::DataSet>& mblocks);
|
void AddBlocks(std::vector<vtkm::cont::DataSet>& mblocks);
|
||||||
@ -140,9 +137,6 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<vtkm::cont::DataSet> blocks;
|
std::vector<vtkm::cont::DataSet> blocks;
|
||||||
vtkm::Id capacity;
|
|
||||||
bool capacitytag;
|
|
||||||
std::vector<vtkm::Id> block_ids;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
} // namespace vtkm::cont
|
} // namespace vtkm::cont
|
||||||
|
@ -115,16 +115,30 @@ static void MultiBlockTest()
|
|||||||
multiblock.GetBlock(0).GetField("cellvar").GetRange(&TestRange);
|
multiblock.GetBlock(0).GetField("cellvar").GetRange(&TestRange);
|
||||||
VTKM_TEST_ASSERT(TestRange == SourceRange, "Local field value info incorrect");
|
VTKM_TEST_ASSERT(TestRange == SourceRange, "Local field value info incorrect");
|
||||||
|
|
||||||
multiblock.OverWriteBlock(0, TDset2);
|
vtkm::cont::MultiBlock testblocks1;
|
||||||
TestDSet = multiblock.GetBlock(0);
|
std::vector<vtkm::cont::DataSet> blocks = multiblock.GetBlocks();
|
||||||
DataSet_Compare(TDset2, TestDSet);
|
testblocks1.AddBlocks(blocks);
|
||||||
multiblock.OverWriteBlock(0, TDset1);
|
VTKM_TEST_ASSERT(multiblock.GetNumberOfBlocks() == testblocks1.GetNumberOfBlocks(),
|
||||||
TestDSet = multiblock.GetBlock(0);
|
"inconsistent number of blocks");
|
||||||
|
|
||||||
|
vtkm::cont::MultiBlock testblocks2(2);
|
||||||
|
testblocks2.InsertBlock(0, TDset1);
|
||||||
|
testblocks2.InsertBlock(1, TDset2);
|
||||||
|
|
||||||
|
TestDSet = testblocks2.GetBlock(0);
|
||||||
|
DataSet_Compare(TDset1, TestDSet);
|
||||||
|
|
||||||
|
TestDSet = testblocks2.GetBlock(1);
|
||||||
|
DataSet_Compare(TDset2, TestDSet);
|
||||||
|
|
||||||
|
testblocks2.ReplaceBlock(0, TDset2);
|
||||||
|
testblocks2.ReplaceBlock(1, TDset1);
|
||||||
|
|
||||||
|
TestDSet = testblocks2.GetBlock(0);
|
||||||
|
DataSet_Compare(TDset2, TestDSet);
|
||||||
|
|
||||||
|
TestDSet = testblocks2.GetBlock(1);
|
||||||
DataSet_Compare(TDset1, TestDSet);
|
DataSet_Compare(TDset1, TestDSet);
|
||||||
multiblock.SetCapacity(3);
|
|
||||||
std::cout << "capacity updated\n";
|
|
||||||
multiblock.SetCapacity(2);
|
|
||||||
std::cout << "structure capacity" << multiblock.GetCapacity() << "\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DataSet_Compare(vtkm::cont::DataSet& LeftDateSet, vtkm::cont::DataSet& RightDateSet)
|
void DataSet_Compare(vtkm::cont::DataSet& LeftDateSet, vtkm::cont::DataSet& RightDateSet)
|
||||||
|
Loading…
Reference in New Issue
Block a user