- Timestamp:
- 07/22/21 16:23:05 (3 years ago)
- Location:
- XIOS/dev/dev_ym/XIOS_COUPLING/src/filter
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/temporal_filter.cpp
r2193 r2195 66 66 67 67 } 68 68 69 CDataPacketPtr CTemporalFilter::apply(std::vector<CDataPacketPtr> data) 69 70 { -
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/temporal_transform_filter.cpp
r2011 r2195 1 1 #include "temporal_transform_filter.hpp" 2 #include "workflow_graph.hpp" 2 3 3 4 namespace xios … … 5 6 6 7 CTemporalTransformFilter::CTemporalTransformFilter(CGarbageCollector& gc, int slots, CGridAlgorithm* algo, int nrecords, bool detectMissingValues, double defaultValue) 7 : CTransformFilter(gc, slots, algo, detectMissingValues, defaultValue), nrecords_(nrecords) 8 : CTransformFilter(gc, slots, algo, detectMissingValues, defaultValue), nrecords_(nrecords), graphCycleCompleted(true) 8 9 { 10 } 11 12 void CTemporalTransformFilter::buildWorkflowGraph(std::vector<CDataPacketPtr> data) 13 { 14 if(this->graphEnabled ) 15 { 16 if(!data[0]->graphPackage) 17 { 18 data[0]->graphPackage = new CGraphDataPackage; 19 } 20 21 if(graphCycleCompleted) 22 { 23 this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 24 CWorkflowGraph::addNode("Temporal splitting filter", 7, false, 0, data[0]); 25 graphCycleCompleted = false; 26 } 27 28 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 29 std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 30 31 CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]); 32 data[0]->graphPackage->fromFilter = this->graphPackage->filterId; 33 data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 34 std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 35 } 9 36 10 37 } 11 38 12 39 CDataPacketPtr CTemporalTransformFilter::apply(std::vector<CDataPacketPtr> data) 13 40 { 14 41 if (data[0]->status == CDataPacket::NO_ERROR) 15 42 { 43 buildWorkflowGraph(data); 16 44 if (record_==0) tmpData_.resize(nrecords_) ; 17 45 algorithm_->apply(data[0]->data, tmpData_[record_]); … … 27 55 packet->status = data[0]->status; 28 56 packet->data.resize(size) ; 57 packet->graphPackage = data[0]->graphPackage; 29 58 double* out = packet->data.dataFirst() ; 30 59 for(auto& it : tmpData_) … … 36 65 tmpData_.clear() ; 37 66 record_=0 ; 67 graphCycleCompleted = true; 38 68 return packet ; 39 69 } -
XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/temporal_transform_filter.hpp
r2011 r2195 21 21 */ 22 22 CDataPacketPtr virtual apply(std::vector<CDataPacketPtr> data) ; 23 void buildWorkflowGraph(std::vector<CDataPacketPtr> data); 24 bool graphCycleCompleted; 23 25 // void apply(const CArray<double, 1>& dataSrc, CArray<double,1>& dataDest); 24 26
Note: See TracChangeset
for help on using the changeset viewer.