MCPcopy Create free account
hub / github.com/Kitware/VTK / WriteTrees_2

Method WriteTrees_2

IO/XML/vtkXMLHyperTreeGridWriter.cxx:782–926  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

780
781//------------------------------------------------------------------------------
782int vtkXMLHyperTreeGridWriter::WriteTrees_2(vtkIndent indent)
783{
784 vtkHyperTreeGrid* input = this->GetInput();
785 vtkCellData* cd = input->GetCellData();
786 vtkIdType numberOfCellDataArrays = cd->GetNumberOfArrays();
787
788 // Count the actual number of hypertrees represented in this hypertree grid
789 vtkHyperTreeGrid::vtkHyperTreeGridIterator it;
790 input->InitializeTreeIterator(it);
791 this->NumberOfTrees = 0;
792 vtkIdType inIndex;
793 while (it.GetNextTree(inIndex))
794 {
795 ++this->NumberOfTrees;
796 }
797
798 // Allocate offsets managers for appended data
799 if (this->DataMode == Appended)
800 {
801 this->DescriptorOMG->Allocate(1, this->NumberOfTimeSteps);
802 this->NbVerticesByLevelOMG->Allocate(1, this->NumberOfTimeSteps);
803 this->TreeIdsOMG->Allocate(1, this->NumberOfTimeSteps);
804 this->DepthPerTreeOMG->Allocate(1, this->NumberOfTimeSteps);
805 this->CellDataOMG->Allocate(numberOfCellDataArrays, this->NumberOfTimeSteps);
806 if (input->GetMask())
807 {
808 this->MaskOMG->Allocate(1, this->NumberOfTimeSteps);
809 }
810 }
811
812 // Collect description by processing depth first and writing breadth first
813 input->InitializeTreeIterator(it);
814
815 auto& metaData = this->MetaDataForVersion2;
816
817 metaData.Descriptors = vtkSmartPointer<vtkBitArray>::New();
818 metaData.TreeIds = vtkSmartPointer<vtkTypeInt64Array>::New();
819 metaData.NumberOfVerticesPerDepth = vtkSmartPointer<vtkTypeInt64Array>::New();
820 metaData.DepthPerTree = vtkSmartPointer<vtkTypeUInt32Array>::New();
821 metaData.BreadthFirstIdMap = vtkSmartPointer<vtkIdList>::New();
822
823 metaData.TreeIds->SetNumberOfValues(input->GetNumberOfNonEmptyTrees());
824 metaData.DepthPerTree->SetNumberOfValues(input->GetNumberOfNonEmptyTrees());
825
826 vtkIdType currentId = 0;
827
828 while (it.GetNextTree(inIndex))
829 {
830 vtkHyperTree* tree = input->GetTree(inIndex);
831 metaData.TreeIds->SetValue(currentId, inIndex);
832
833 vtkIdType previousSize = metaData.NumberOfVerticesPerDepth->GetNumberOfValues();
834 tree->ComputeBreadthFirstOrderDescriptor(input->GetDepthLimiter(), input->GetMask(),
835 metaData.NumberOfVerticesPerDepth, metaData.Descriptors, metaData.BreadthFirstIdMap);
836 metaData.DepthPerTree->SetValue(
837 currentId++, metaData.NumberOfVerticesPerDepth->GetNumberOfValues() - previousSize);
838 }
839

Callers 1

WriteDataMethod · 0.95

Calls 15

GetInputMethod · 0.95
GetNextTreeMethod · 0.80
GetNextIndentMethod · 0.80
WriteArrayAppendedMethod · 0.80
WriteArrayInlineMethod · 0.80
GetAbstractArrayMethod · 0.80
DeleteMethod · 0.65
NewFunction · 0.50
GetCellDataMethod · 0.45

Tested by

no test coverage detected