source: XIOS/dev/dev_trunk_omp/src/workflow_graph.cpp @ 1677

Last change on this file since 1677 was 1677, checked in by yushan, 5 years ago

MARK: Dynamic workflow graph developement. Branch up to date with trunk @1663.

File size: 3.2 KB
RevLine 
[1668]1#include "workflow_graph.hpp"
2
3namespace xios
4{
5
[1671]6  std::unordered_map <StdString, vector <int > > *CWorkflowGraph::mapFieldToFilters_ptr = 0;
[1668]7  #pragma omp threadprivate(CWorkflowGraph::mapFieldToFilters_ptr)
8
[1671]9  std::unordered_map <int, StdString> *CWorkflowGraph::mapFilters_ptr = 0;
[1668]10  #pragma omp threadprivate(CWorkflowGraph::mapFilters_ptr)
11
[1671]12  std::unordered_map <int,vector<Time> > *CWorkflowGraph::mapFilterTimestamps_ptr = 0;
[1668]13  #pragma omp threadprivate(CWorkflowGraph::mapFilterTimestamps_ptr)
14
[1671]15  set<Time>  *CWorkflowGraph::timestamps_ptr = 0;
[1668]16  #pragma omp threadprivate(CWorkflowGraph::timestamps_ptr)
17
18  vector <StdString> CWorkflowGraph::filters;
19  vector <StdString> CWorkflowGraph::fields;
20  vector <pair<int, int> > CWorkflowGraph::fieldsToFilters;
21
22  CWorkflowGraph::CWorkflowGraph()
23  { }
24
25  /*!
26   * Reorganize information collected by XIOS for visualization.
27   */
28  void CWorkflowGraph::buildStaticWorkflow()
29  TRY
30  {
[1677]31   
32    if(mapFilters_ptr==0 || mapFieldToFilters_ptr==0) 
33      std::cout<<"No graph information provided"<<std::endl;
[1668]34
[1677]35    else // Create a list of filters (graph nodes)
[1668]36    {
[1677]37      size_t filterIdx = 0;
38      filters.resize(mapFilters_ptr->size());
39      fieldsToFilters.clear();
40      fields.clear();
41      for (auto it=mapFilters_ptr->begin(); it != mapFilters_ptr->end(); it++)
[1668]42      {
[1677]43        filters[it->first]=it->second;
[1668]44      }
[1677]45
46      // Create a list of fields and their filter connectivity (graph edges and edge-to-node connectivity)
47      for (auto it=mapFieldToFilters_ptr->begin(); it != mapFieldToFilters_ptr->end(); it++)
48      {
49        for (size_t i = 0; i < (it->second.size() - 1); i+=2)
50        {
51          fieldsToFilters.push_back(make_pair(it->second[i],it->second[i+1]));
52          fields.push_back(it->first);
53        }
54      }
[1668]55    }
56  }
57  CATCH
58
[1669]59
60  void CWorkflowGraph::showStaticWorkflow()
61  TRY
62  {
63    if(mapFilters_ptr!=0 && !mapFilters_ptr->empty())
64    for (auto it=mapFilters_ptr->begin(); it != mapFilters_ptr->end(); it++)
65    {
[1671]66      std::cout<<"mapFilters_ptr["<<it->first<<"]="<<it->second<<std::endl;
[1669]67    }
68    else std::cout<<"mapFilters_ptr empty"<<std::endl;
69
70    if(mapFieldToFilters_ptr!=0 && !mapFieldToFilters_ptr->empty())
71    for (auto it=mapFieldToFilters_ptr->begin(); it != mapFieldToFilters_ptr->end(); it++)
72    {
[1671]73      for (size_t i = 0; i < it->second.size(); i++)
[1669]74      {
[1671]75        std::cout<<"mapFieldToFilters_ptr["<<it->first<<"]["<<i<<"] = "<<it->second[i]<<std::endl;
[1669]76      }
77    }
78    else std::cout<<"mapFieldToFilters_ptr empty"<<mapFieldToFilters_ptr<<std::endl;
[1671]79
80    /*if(mapFilterTimestamps_ptr!=0 && !mapFilterTimestamps_ptr->empty())
[1669]81    for (auto it=mapFilterTimestamps_ptr->begin(); it != mapFilterTimestamps_ptr->end(); it++)
82    {
83      for (size_t i = 0; i < it->second.size(); i++)
84      {
85        std::cout<<"mapFilterTimestamps_ptr["<<it->first<<"]["<<i<<"] = "<<it->second[i]<<std::endl;
86      }
87    }
88    else std::cout<<"mapFilterTimestamps_ptr empty"<<std::endl;
89
90    if(timestamps_ptr!=0 && !timestamps_ptr->empty())
91    for (auto it=timestamps_ptr->begin(); it != timestamps_ptr->end(); it++)
92    {
93      std::cout<<"timestamps_ptr = "<<*it<<std::endl;
94    }
95    else std::cout<<"timestamps_ptr empty"<<std::endl;
[1670]96*/
[1669]97  }
98  CATCH
99
[1668]100}
Note: See TracBrowser for help on using the repository browser.