source: XIOS3/trunk/src/filter/grid_redistribute_filter_in.cpp @ 2507

Last change on this file since 2507 was 2507, checked in by ymipsl, 13 months ago

Merging XIOS3_ATTACHED branch into XIOS3 trunk.

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.