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

Last change on this file since 2482 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.