source: XIOS3/dev/XIOS_ATTACHED/src/filter/grid_redistribute_filter.cpp

Last change on this file was 2482, checked in by ymipsl, 15 months ago

First guess in supression of attached mode replaced by online reader and write filters

YM

  • Property svn:executable set to *
File size: 3.4 KB
Line 
1#include "grid_redistribute_filter.hpp"
2#include "workflow_graph.hpp"
3namespace xios
4{
5 
6  CGridRedistributeFilter::CGridRedistributeFilter(CGarbageCollector& gc, CField* fieldIn, CField* &fieldOut) 
7                                    : CFilter(gc, 1, this)
8  {
9   
10    CGrid* redistributedGrid = fieldIn->getGrid()->redistributeGridToWriter() ;
11    fieldOut = CField::create() ;
12    fieldOut->field_ref=fieldIn->getId();
13    fieldOut->solveRefInheritance() ;
14    fieldOut->grid_ref=redistributedGrid->getId();
15    fieldOut->domain_ref.reset();
16    fieldOut->axis_ref.reset();
17    fieldOut->scalar_ref.reset();
18    fieldOut-> solveGridReference() ;
19    fieldOut-> getGrid()-> solveElementsRefInheritance() ;
20    CGrid* newGrid ;
21    std::pair<std::shared_ptr<CFilter>, std::shared_ptr<CFilter> > filters = redistributedGrid->buildTransformationGraph(gc, false,  fieldIn->getGrid(), false, 0. , newGrid, false, fieldOut) ;
22    fieldOut -> setGrid(newGrid) ;
23    fieldOut -> grid_ref = fieldOut->getGrid()->getId() ; // for server
24    fieldOut->getGrid()->checkElementsAttributes() ;
25    redistributeConnector_ = fieldOut->getGrid()->getRedistributeToWriterConnector(fieldIn->getGrid()) ;
26  }
27
28  CDataPacketPtr CGridRedistributeFilter::apply(std::vector<CDataPacketPtr> data)
29  {
30    // for now, no auxilliairy field
31    CDataPacketPtr packet(new CDataPacket);
32    packet->date = data[0]->date;
33    packet->timestamp = data[0]->timestamp;
34    packet->status = data[0]->status;
35
36    if (packet->status == CDataPacket::NO_ERROR) 
37    {
38      // buildWorkflowGraph(data, packet, algorithm_);
39     
40      redistributeConnector_->transfer(data[0]->data, packet->data);
41    }
42    return packet;
43  }
44/*
45  void CTransformFilter::buildWorkflowGraph(std::vector<CDataPacketPtr> data, CDataPacketPtr packet, shared_ptr<CGridAlgorithm> algorithm)
46  {
47    if(this->graphEnabled)
48    {
49      this->graphPackage->filterId = CWorkflowGraph::getNodeSize();
50   
51      packet->graphPackage = new CGraphDataPackage;
52      if(data[0]->graphPackage)
53      {
54        packet->graphPackage->fromFilter = data[0]->graphPackage->fromFilter;
55      }
56      packet->graphPackage->toFilter = data[0]->graphPackage->toFilter;
57      packet->graphPackage->current_filter_name = data[0]->graphPackage->current_filter_name;
58      packet->graphPackage->contextId = data[0]->graphPackage->contextId;         
59   
60      int tmp_from = packet->graphPackage->fromFilter;
61      if(this->graphPackage->show)
62      {
63        packet->graphPackage->currentField = this->graphPackage->inFields[0];
64        CWorkflowGraph::addNode("Spatial transform filter "+algorithm->getAlgoName(), 4, false, 1, packet);
65        CWorkflowGraph::addEdge(packet->graphPackage->fromFilter, this->graphPackage->filterId, packet);
66        packet->graphPackage->fromFilter = this->graphPackage->filterId;
67        packet->graphPackage->currentField = this->graphPackage->inFields[0];
68        std::rotate(this->graphPackage->inFields.begin(), this->graphPackage->inFields.begin() + 1, this->graphPackage->inFields.end());
69      }
70      else
71      {
72        packet->graphPackage->currentField = this->graphPackage->inFields[0];
73        if(CXios::isClient) CWorkflowGraph::vectorOfNodes_->at(tmp_from).filter_name += algorithm->getAlgoName();
74        else                CWorkflowGraph::vectorOfNodes_srv_->at(tmp_from).filter_name += algorithm->getAlgoName();
75       
76      }     
77    }
78  }
79*/
80}
Note: See TracBrowser for help on using the repository browser.