// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void LinkFieldMapToCellArray::execute() { VoxelDataContainer* m = getVoxelDataContainer(); if(NULL == m) { setErrorCondition(-999); notifyErrorMessage("The DataContainer Object was NULL", -999); return; } setErrorCondition(0); int64_t voxels = m->getTotalPoints(); int64_t fields = m->getNumFieldTuples(); dataCheck(false, voxels, fields, m->getNumEnsembleTuples()); if (getErrorCondition() < 0) { return; } //int err = 0; std::stringstream ss; m->clearFieldData(); int maxIndex = 0; std::vector<bool> active; for(int64_t i=0;i<voxels;i++) { int index = m_SelectedCellData[i]; if((index+1) > maxIndex) { active.resize(index+1); active[index] = true; maxIndex = index+1; } } BoolArrayType::Pointer m_Active = BoolArrayType::CreateArray(maxIndex, 1, DREAM3D::FieldData::Active); bool* mActive = m_Active->GetPointer(0); for(int i=0;i<maxIndex;i++) { mActive[i] = active[i]; } m->addFieldData(DREAM3D::FieldData::Active, m_Active); notifyStatusMessage("Complete"); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void LinkFieldMapToCellArray::dataCheck(bool preflight, size_t voxels, size_t fields, size_t ensembles) { setErrorCondition(0); std::stringstream ss; VoxelDataContainer* m = getVoxelDataContainer(); IDataArray::Pointer data = m->getCellData(m_SelectedCellDataArrayName); if (NULL == data.get()) { ss.str(""); ss << "Selected array '" << m_SelectedCellDataArrayName << "' does not exist in the Voxel Data Container. Was it spelled correctly?"; setErrorCondition(-11001); addErrorMessage(getHumanLabel(),ss.str(),getErrorCondition()); return; } std::string dType = data->getTypeAsString(); IDataArray::Pointer p = IDataArray::NullPointer(); if (dType.compare("int32_t") == 0) { DataArray<int32_t>* field = DataArray<int32_t>::SafePointerDownCast(data.get()); m_SelectedCellData = field->GetPointer(0); } else { ss.str(""); ss << "Selected array '" << m_SelectedCellDataArrayName << "' is not an Integer array. Is this the array you want to use?"; setErrorCondition(-11001); addErrorMessage(getHumanLabel(),ss.str(),getErrorCondition()); return; } m->clearFieldData(); BoolArrayType::Pointer active = BoolArrayType::CreateArray(fields, 1, DREAM3D::FieldData::Active); // bool* mActive = m_Active->GetPointer(0); m->addFieldData(DREAM3D::FieldData::Active, active); }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void FindNeighbors::dataCheck(bool preflight, size_t voxels, size_t fields, size_t ensembles) { setErrorCondition(0); std::stringstream ss; VoxelDataContainer* m = getVoxelDataContainer(); // Cell Data GET_PREREQ_DATA( m, DREAM3D, CellData, GrainIds, ss, -300, int32_t, Int32ArrayType, voxels, 1) CREATE_NON_PREREQ_DATA(m, DREAM3D, CellData, SurfaceVoxels, ss, int8_t, Int8ArrayType, 0, voxels, 1) // Field Data // Do this whole block FIRST otherwise the side effect is that a call to m->getNumFieldTuples will = 0 // because we are just creating an empty NeighborList object. // Now we are going to get a "Pointer" to the NeighborList object out of the DataContainer m_NeighborList = NeighborList<int>::SafeObjectDownCast<IDataArray*, NeighborList<int>* > (m->getFieldData(m_NeighborListArrayName).get()); if(m_NeighborList == NULL) { NeighborList<int>::Pointer neighborlistPtr = NeighborList<int>::New(); neighborlistPtr->SetName(m_NeighborListArrayName); neighborlistPtr->Resize(fields); neighborlistPtr->setNumNeighborsArrayName(getNumNeighborsArrayName()); m->addFieldData(m_NeighborListArrayName, neighborlistPtr); if (neighborlistPtr.get() == NULL) { ss << "NeighborLists Array Not Initialized at Beginning of FindNeighbors Filter" << std::endl; setErrorCondition(-308); } m_NeighborList = NeighborList<int>::SafeObjectDownCast<IDataArray*, NeighborList<int>* > (m->getFieldData(m_NeighborListArrayName).get()); CreatedArrayHelpIndexEntry::Pointer e = CreatedArrayHelpIndexEntry::New(); e->setFilterName(this->getNameOfClass()); e->setFilterHumanLabel(this->getHumanLabel()); e->setFilterGroup(this->getGroupName()); e->setFilterSubGroup(this->getSubGroupName()); e->setArrayDefaultName(m_NeighborListArrayName); e->setArrayGroup("Field"); e->setArrayNumComponents(0); e->setArrayType("NeighborList"); addCreatedArrayHelpIndexEntry(e); } // And we do the same for the SharedSurfaceArea list m_SharedSurfaceAreaList = NeighborList<float>::SafeObjectDownCast<IDataArray*, NeighborList<float>*> (m->getFieldData(m_SharedSurfaceAreaListArrayName).get()); if(m_SharedSurfaceAreaList == NULL) { NeighborList<float>::Pointer sharedSurfaceAreaListPtr = NeighborList<float>::New(); sharedSurfaceAreaListPtr->SetName(m_SharedSurfaceAreaListArrayName); sharedSurfaceAreaListPtr->Resize(fields); sharedSurfaceAreaListPtr->setNumNeighborsArrayName(getNumNeighborsArrayName()); m->addFieldData(m_SharedSurfaceAreaListArrayName, sharedSurfaceAreaListPtr); if (sharedSurfaceAreaListPtr.get() == NULL) { ss.str(""); ss << "SurfaceAreaLists Array Not Initialized correctly at Beginning of FindNeighbors Filter" << std::endl; setErrorCondition(-308); addErrorMessage(getHumanLabel(), ss.str(), -308); } m_SharedSurfaceAreaList = NeighborList<float>::SafeObjectDownCast<IDataArray*, NeighborList<float>*> (m->getFieldData(m_SharedSurfaceAreaListArrayName).get()); CreatedArrayHelpIndexEntry::Pointer e = CreatedArrayHelpIndexEntry::New(); e->setFilterName(this->getNameOfClass()); e->setFilterHumanLabel(this->getHumanLabel()); e->setFilterGroup(this->getGroupName()); e->setFilterSubGroup(this->getSubGroupName()); e->setArrayDefaultName(m_SharedSurfaceAreaListArrayName); e->setArrayGroup("Field"); e->setArrayNumComponents(0); e->setArrayType("SurfaceAreaLists"); addCreatedArrayHelpIndexEntry(e); } CREATE_NON_PREREQ_DATA(m, DREAM3D, FieldData, SurfaceFields, ss, bool, BoolArrayType, false, fields, 1) CREATE_NON_PREREQ_DATA(m, DREAM3D, FieldData, NumNeighbors, ss, int32_t, Int32ArrayType, 0, fields, 1) }