Changeset 1704 for XIOS/trunk/src/filter/spatial_transform_filter.cpp
- Timestamp:
- 09/11/19 10:22:09 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/filter/spatial_transform_filter.cpp
r1645 r1704 4 4 #include "context_client.hpp" 5 5 #include "timer.hpp" 6 #include "workflow_graph.hpp" 7 #include "file.hpp" 6 8 7 9 namespace xios … … 64 66 { 65 67 CSpatialTransformFilterEngine* spaceFilter = static_cast<CSpatialTransformFilterEngine*>(engine); 66 CDataPacketPtr outputPacket = spaceFilter->applyFilter(data, outputDefaultValue );68 CDataPacketPtr outputPacket = spaceFilter->applyFilter(data, outputDefaultValue, this->tag, this->start_graph, this->end_graph, this->field); 67 69 if (outputPacket) 68 70 onOutputReady(outputPacket); … … 96 98 { 97 99 CSpatialTransformFilterEngine* spaceFilter = static_cast<CSpatialTransformFilterEngine*>(engine); 98 CDataPacketPtr outputPacket = spaceFilter->applyFilter(data, outputDefaultValue );100 CDataPacketPtr outputPacket = spaceFilter->applyFilter(data, outputDefaultValue, this->tag, this->start_graph, this->end_graph, this->field); 99 101 100 102 if (outputPacket) … … 121 123 packet->data.resize(tmpData.numElements()); 122 124 packet->data = tmpData; 125 packet->field = this->field; 123 126 onOutputReady(packet); 124 127 tmpData.resize(0) ; … … 159 162 } 160 163 161 CDataPacketPtr CSpatialTransformFilterEngine::applyFilter(std::vector<CDataPacketPtr> data, double defaultValue) 162 { 164 bool CSpatialTransformFilterEngine::buildGraph(std::vector<CDataPacketPtr> data, int tag, Time start_graph, Time end_graph, CField *field) 165 { 166 bool building_graph = tag ? data[0]->timestamp >= start_graph && data[0]->timestamp <= end_graph : false; 167 if(building_graph) 168 { 169 this->filterID = InvalidableObject::filterIdGenerator++; 170 int edgeID = InvalidableObject::edgeIdGenerator++; 171 172 CWorkflowGraph::allocNodeEdge(); 173 174 CWorkflowGraph::addNode(this->filterID, "Spatial Transform Filter", 4, 1, 1, data[0]); 175 (*CWorkflowGraph::mapFilters_ptr_with_info)[this->filterID].distance = data[0]->distance+1; 176 (*CWorkflowGraph::mapFilters_ptr_with_info)[this->filterID].attributes = field->record4graphXiosAttributes(); 177 if(field->file) (*CWorkflowGraph::mapFilters_ptr_with_info)[this->filterID].attributes += "</br>file attributes : </br>" +field->file->record4graphXiosAttributes(); 178 179 180 if(CWorkflowGraph::build_begin) 181 { 182 CWorkflowGraph::addEdge(edgeID, this->filterID, data[0]); 183 184 (*CWorkflowGraph::mapFilters_ptr_with_info)[data[0]->src_filterID].filter_filled = 0; 185 } 186 else CWorkflowGraph::build_begin = true; 187 } 188 189 return building_graph; 190 } 191 192 CDataPacketPtr CSpatialTransformFilterEngine::applyFilter(std::vector<CDataPacketPtr> data, double defaultValue, int tag, Time start_graph, Time end_graph, CField *field) 193 { 194 195 bool BG = buildGraph(data, tag, start_graph, end_graph, field); 196 163 197 CDataPacketPtr packet(new CDataPacket); 164 198 packet->date = data[0]->date; … … 177 211 if (0 != packet->data.numElements()) 178 212 (packet->data)(0) = defaultValue; 179 apply(data[0]->data, packet->data); 180 } 213 if(BG) apply(data[0]->data, packet->data, this->filterID); 214 else apply(data[0]->data, packet->data); 215 } 216 217 if(BG) packet->src_filterID=this->filterID; 218 if(BG) packet->distance=data[0]->distance+1; 219 packet->field = field; 181 220 182 221 return packet; 183 222 } 184 223 185 void CSpatialTransformFilterEngine::apply(const CArray<double, 1>& dataSrc, CArray<double,1>& dataDest )224 void CSpatialTransformFilterEngine::apply(const CArray<double, 1>& dataSrc, CArray<double,1>& dataDest, int filterID) 186 225 { 187 226 CTimer::get("CSpatialTransformFilterEngine::apply").resume(); … … 296 335 const std::vector<std::pair<int,double> >& localIndex_p = itRecv->second; 297 336 int srcRank = itRecv->first; 337 338 if(filterID >=0) // building_graph 339 { 340 (*CWorkflowGraph::mapFilters_ptr_with_info)[filterID].filter_name = (*itAlgo)->getName(); 341 } 298 342 if (srcRank != rank) 299 343 {
Note: See TracChangeset
for help on using the changeset viewer.