source: XIOS3/dev/XIOS_ATTACHED/src/filter/grid_redistribute_filter_in.cpp @ 2493

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