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/transform_filter.cpp

    r2011 r2143  
    11#include "transform_filter.hpp" 
    22#include "grid_algorithm.hpp" 
    3  
     3#include "workflow_graph.hpp" 
    44namespace xios 
    55{ 
     
    2222    if (packet->status == CDataPacket::NO_ERROR)  
    2323    { 
     24      buildWorkflowGraph(data, packet, algorithm_); 
     25       
    2426      if (data.size()>1) 
    2527      { 
     
    3335  } 
    3436 
    35  
     37  void CTransformFilter::buildWorkflowGraph(std::vector<CDataPacketPtr> data, CDataPacketPtr packet, CGridAlgorithm* algorithm) 
     38  { 
     39    if(this->graphEnabled) 
     40    { 
     41      this->graphPackage->filterId = CWorkflowGraph::getNodeSize(); 
     42     
     43      packet->graphPackage = new CGraphDataPackage; 
     44      if(data[0]->graphPackage) 
     45      { 
     46        packet->graphPackage->fromFilter = data[0]->graphPackage->fromFilter; 
     47      } 
     48      packet->graphPackage->toFilter = data[0]->graphPackage->toFilter; 
     49      packet->graphPackage->current_filter_name = data[0]->graphPackage->current_filter_name; 
     50      packet->graphPackage->contextId = data[0]->graphPackage->contextId;           
     51     
     52      int tmp_from = packet->graphPackage->fromFilter; 
     53      if(this->graphPackage->show) 
     54      { 
     55        packet->graphPackage->currentField = this->graphPackage->inFields[0]; 
     56        CWorkflowGraph::addNode("Spatial transform filter "+algorithm->getAlgoName(), 4, false, 1, packet); 
     57        CWorkflowGraph::addEdge(packet->graphPackage->fromFilter, this->graphPackage->filterId, packet); 
     58        packet->graphPackage->fromFilter = this->graphPackage->filterId; 
     59        packet->graphPackage->currentField = this->graphPackage->inFields[0]; 
     60        std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end()); 
     61      } 
     62      else 
     63      { 
     64        packet->graphPackage->currentField = this->graphPackage->inFields[0]; 
     65        if(CXios::isClient) CWorkflowGraph::vectorOfNodes_->at(tmp_from).filter_name += algorithm->getAlgoName(); 
     66        else                CWorkflowGraph::vectorOfNodes_srv_->at(tmp_from).filter_name += algorithm->getAlgoName(); 
     67         
     68      }      
     69    } 
     70  } 
    3671 
    3772} 
Note: See TracChangeset for help on using the changeset viewer.