Ignore:
Timestamp:
06/04/21 11:54:38 (3 years ago)
Author:
yushan
Message:

Big commit on graph functionality. Add buildWorkflowGraph function for filters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/dev_ym/XIOS_COUPLING/src/filter/temporal_filter.cpp

    r1523 r2143  
    22#include "functor_type.hpp" 
    33#include "calendar_util.hpp" 
     4#include "workflow_graph.hpp" 
    45 
    56namespace xios 
     
    2829//    , nextOperationDate(initDate + opFreq + this->samplingOffset) 
    2930    , isFirstOperation(true) 
     31    , graphCycleCompleted(true) 
    3032  { 
    3133  } 
    3234 
     35  void CTemporalFilter::buildWorkflowGraph(std::vector<CDataPacketPtr> data) 
     36  { 
     37    if(this->graphEnabled ) 
     38    { 
     39      if(!data[0]->graphPackage) 
     40      { 
     41        data[0]->graphPackage = new CGraphDataPackage; 
     42      } 
     43       
     44      if(graphCycleCompleted) 
     45      {   
     46        this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 
     47        CWorkflowGraph::addNode("Temporal filter", 3, false, 0, data[0]); 
     48        graphCycleCompleted = false; 
     49      } 
     50       
     51      data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 
     52      std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 
     53       
     54      CWorkflowGraph::addEdge(data[0]->graphPackage->fromFilter, this->graphPackage->filterId, data[0]); 
     55      data[0]->graphPackage->fromFilter = this->graphPackage->filterId; 
     56      this->graphPackage->sourceFilterIds.push_back(data[0]->graphPackage->fromFilter);  
     57      data[0]->graphPackage->currentField = this->graphPackage->inFields[0]; 
     58      std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 
     59    } 
     60 
     61  } 
    3362  CDataPacketPtr CTemporalFilter::apply(std::vector<CDataPacketPtr> data) 
    3463  { 
     64    buildWorkflowGraph(data); 
     65   
    3566    CDataPacketPtr packet; 
    3667 
     
    4374      { 
    4475        usePacket = (data[0]->date >= nextSamplingDate); 
    45 //        outputResult = (data[0]->date + samplingFreq > nextOperationDate); 
    4676        outputResult = (data[0]->date  > initDate + nbOperationDates*opFreq - samplingFreq + offsetMonth + offsetAllButMonth); 
    4777        copyLess = (isInstantOperation && usePacket && outputResult); 
     
    75105          packet->data.resize(tmpData.numElements()); 
    76106          packet->data = tmpData; 
     107          packet->graphPackage = data[0]->graphPackage; 
    77108        } 
    78109        else 
     
    80111 
    81112        isFirstOperation = false; 
    82 //        nextOperationDate = initDate + samplingFreq + nbOperationDates*opFreq - samplingFreq + offsetMonth + offsetAllButMonth; 
    83       } 
     113        graphCycleCompleted = true; 
     114     } 
    84115    } 
    85116 
Note: See TracChangeset for help on using the changeset viewer.