IOSS 2.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
CatalystManager.h
Go to the documentation of this file.
1// Copyright(C) 1999-2021 National Technology & Engineering Solutions
2// of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
3// NTESS, the U.S. Government retains certain rights in this software.
4//
5// See packages/seacas/LICENSE for details
6
7#ifndef __CATALYST_MANAGER_H
8#define __CATALYST_MANAGER_H
9
10#include "vtkCPDataDescription.h"
11#include <map>
12#include <time.h>
14#include <vtkSmartPointer.h>
15
16class coProcessor;
17class vtkDoubleArray;
18class vtkCPPythonPipeline;
19class vtkCPProcessor;
20class vtkDataObject;
21
22namespace Iovs {
23
25
27 {
28
29 public:
30 const std::string catalystPluginVersion = "3.0.0";
31 using CatalystPipelineID = unsigned int;
32 using CatalystInputName = std::string;
33 using CatalystMultiInputPipelineName = std::string;
34
37
39
40 std::unique_ptr<Iovs_exodus::CatalystExodusMeshBase>
42
43 std::unique_ptr<Iovs_cgns::CatalystCGNSMeshBase>
45
47
49 {
52 std::string getLogFileName() const
53 {
54 return catalystInputName + "_" + std::to_string(catalystPipelineID) + "_catalyst.log";
55 }
56 };
57
58 // Description:
59 // Deletes pipeline with name results_output_filename and any associated
60 // logging data.
62
63 // Description:
64 // Calls the ParaView Catalyst pipeline to run co-processing for this time iteration.
65 void PerformCoProcessing(std::vector<int> &error_and_warning_codes,
66 std::vector<std::string> &error_and_warning_messages,
67 const CatalystPipelineInfo &cpi);
68
69 // Description:
70 // Sets time data for this ParaView Catalyst co-processing iteration.
71 // currentTime is the current Ioss simulation time and timeStep is
72 // the current time iteration count.
73 void SetTimeData(double currentTime, int timeStep, const CatalystPipelineInfo &cpi);
74
75 // Description:
76 // Collects memory usage information from all processors and
77 // writes the min, max, and mean to the log file. Also writes the
78 // min, max, and mean of the elapsed time since this method was
79 // last called.
81
83
84 private:
86
88 {
89 public:
96
97 vtkSmartPointer<vtkCPPythonPipeline> &getPipeline() { return pipeline; }
98
99 vtkSmartPointer<vtkCPDataDescription> &getDataDescription() { return dataDescription; }
100
101 std::shared_ptr<CatalystMeshWriter> &getMeshWriter() { return meshWriter; }
102
104
106
108
109 private:
110 bool canDoOperation(unsigned int &operationCount)
111 {
112 bool retVal = true;
113 operationCount++;
114 if (operationCount == getNumberOfInputs()) {
115 operationCount = 0;
116 }
117 else {
118 retVal = false;
119 }
120 return retVal;
121 }
122
123 unsigned int getNumberOfInputs()
124 {
125 unsigned int retVal = 0;
126 if (getDataDescription() != nullptr) {
127 retVal = getDataDescription()->GetNumberOfInputDescriptions();
128 }
129 return retVal;
130 }
131
134 unsigned int setTimeDataCount;
135 vtkSmartPointer<vtkCPPythonPipeline> pipeline;
136 vtkSmartPointer<vtkCPDataDescription> dataDescription;
137 std::shared_ptr<CatalystMeshWriter> meshWriter;
138 };
139
140 typedef std::pair<clock_t, clock_t> TimerPair;
141 typedef std::pair<TimerPair, vtkDoubleArray *> LoggingPair;
142
145
153
155 void initCatalystPipeline(CatalystMeshInit &cmInit, vtkDataObject *vobj,
156 const CatalystPipelineInfo &cpi);
157 void addInputToPipeline(vtkDataObject *vobj, const CatalystPipelineInfo &cpi);
159 void registerMeshInPipeline(CatalystMeshInit &cmInit, vtkDataObject *vobj,
160 const CatalystPipelineInfo &cpi);
161
164 vtkCPProcessor *coProcessor;
165 std::map<CatalystPipelineID, CatalystPipelineState> pipelines;
166 std::map<CatalystPipelineID, LoggingPair> logging;
167 std::map<CatalystMultiInputPipelineName, CatalystPipelineID> multiInputPipelines;
168 };
169
170 extern "C" {
172 }
173
174} // namespace Iovs
175
176#endif /* __CATALYST_MANAGER_H */
Definition CatalystManagerBase.h:25
CatalystManagerBase()
Definition CatalystManagerBase.h:28
unsigned int performCoProcessingCount
Definition CatalystManager.h:132
std::shared_ptr< CatalystMeshWriter > meshWriter
Definition CatalystManager.h:137
vtkSmartPointer< vtkCPPythonPipeline > & getPipeline()
Definition CatalystManager.h:97
vtkSmartPointer< vtkCPDataDescription > & getDataDescription()
Definition CatalystManager.h:99
unsigned int deletePipelineCount
Definition CatalystManager.h:133
CatalystPipelineState()
Definition CatalystManager.h:90
vtkSmartPointer< vtkCPPythonPipeline > pipeline
Definition CatalystManager.h:135
unsigned int getNumberOfInputs()
Definition CatalystManager.h:123
bool canDoOperation(unsigned int &operationCount)
Definition CatalystManager.h:110
unsigned int setTimeDataCount
Definition CatalystManager.h:134
bool canPerformCoProcessing()
Definition CatalystManager.h:103
bool canDeletePipeline()
Definition CatalystManager.h:105
vtkSmartPointer< vtkCPDataDescription > dataDescription
Definition CatalystManager.h:136
bool canSetTimeData()
Definition CatalystManager.h:107
std::shared_ptr< CatalystMeshWriter > & getMeshWriter()
Definition CatalystManager.h:101
void initCatalystPipeline(CatalystMeshInit &cmInit, vtkDataObject *vobj, const CatalystPipelineInfo &cpi)
CatalystPipelineID getCatalystPipelineID(CatalystMeshInit &cmInit)
void initCatalystPythonSystemPaths()
void addInputToPipeline(vtkDataObject *vobj, const CatalystPipelineInfo &cpi)
CatalystPipelineInfo createCatalystPipelineInfo(CatalystMeshInit &cmInit)
bool writeMeshON(const CatalystPipelineInfo &cpi)
void PerformCoProcessing(std::vector< int > &error_and_warning_codes, std::vector< std::string > &error_and_warning_messages, const CatalystPipelineInfo &cpi)
std::map< CatalystMultiInputPipelineName, CatalystPipelineID > multiInputPipelines
Definition CatalystManager.h:167
void logMemoryUsageAndTakeTimerReading(const CatalystPipelineInfo &cpi)
std::map< CatalystPipelineID, LoggingPair > logging
Definition CatalystManager.h:166
void writeMesh(const CatalystPipelineInfo &cpi)
std::map< CatalystPipelineID, CatalystPipelineState > pipelines
Definition CatalystManager.h:165
CatalystManager & operator=(const CatalystManager &)=delete
std::string CatalystMultiInputPipelineName
Definition CatalystManager.h:33
CatalystManager(const CatalystManager &)=delete
std::string getCatalystPluginVersion()
void SetTimeData(double currentTime, int timeStep, const CatalystPipelineInfo &cpi)
unsigned int CatalystPipelineID
Definition CatalystManager.h:31
vtkCPProcessor * coProcessor
Definition CatalystManager.h:164
CatalystPipelineID catalystOutputIDNumber
Definition CatalystManager.h:162
std::unique_ptr< Iovs_cgns::CatalystCGNSMeshBase > createCatalystCGNSMesh(CatalystMeshInit &cmInit)
void initCatalystLogging(const CatalystPipelineInfo &cpi)
std::string CatalystInputName
Definition CatalystManager.h:32
std::pair< TimerPair, vtkDoubleArray * > LoggingPair
Definition CatalystManager.h:141
void WriteToLogFile(const CatalystPipelineInfo &cpi)
std::unique_ptr< Iovs_exodus::CatalystExodusMeshBase > createCatalystExodusMesh(CatalystExodusMeshInit &cmInit)
std::pair< clock_t, clock_t > TimerPair
Definition CatalystManager.h:140
const std::string catalystPluginVersion
Definition CatalystManager.h:30
CatalystPipelineID catalystOutputReferenceCount
Definition CatalystManager.h:163
void DeletePipeline(const CatalystPipelineInfo &cpi)
void registerMeshInPipeline(CatalystMeshInit &cmInit, vtkDataObject *vobj, const CatalystPipelineInfo &cpi)
Definition CatalystMeshWriter.h:17
Definition CatalystManager.h:22
CatalystManagerBase * CreateCatalystManagerInstance()
Definition CatalystManagerBase.h:73
Definition CatalystManagerBase.h:45
Definition CatalystManager.h:49
CatalystPipelineID catalystPipelineID
Definition CatalystManager.h:50
CatalystInputName catalystInputName
Definition CatalystManager.h:51
std::string getLogFileName() const
Definition CatalystManager.h:52