vtkInSituInitializationHelper.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
2 // SPDX-License-Identifier: BSD-3-Clause
31 #ifndef vtkInSituInitializationHelper_h
32 #define vtkInSituInitializationHelper_h
33 
34 #include "vtkObject.h"
35 #include "vtkPVInSituModule.h" // For windows import/export of shared libraries
36 
37 class vtkCPCxxHelper;
38 class vtkInSituPipeline;
39 class vtkSMProxy;
40 class vtkSMSourceProxy;
41 // forward declare conduit_node and its typedef.
42 // it has to be identical to the one in conduit.hpp
43 struct conduit_node_impl;
44 typedef struct conduit_node_impl conduit_node;
45 
46 #include <string> // for std::string
47 #include <vector> // for std::vector
48 
50 {
51 public:
53  void PrintSelf(ostream& os, vtkIndent indent) override;
54 
77  static void Initialize(vtkTypeUInt64 comm, const std::vector<std::string>& python_paths);
78 
83  static void Finalize();
84 
91  static vtkInSituPipeline* AddPipeline(const std::string& pipeline_name, const std::string& path);
92 
98  static vtkInSituPipeline* GetPipeline(const std::string& pipeline_name);
99 
103  static void AddPipeline(vtkInSituPipeline* pipeline);
104 
112  static void SetProducer(const std::string& channelName, vtkSMSourceProxy* producer);
113 
117  static vtkSMSourceProxy* GetProducer(const std::string& channelName);
118 
122  static void UpdateAllProducers(double time);
123 
125 
129  static void MarkProducerModified(const std::string& channelName);
130  static void MarkProducerModified(vtkSMSourceProxy* producer);
132 
136  static bool ExecutePipelines(int timestep, double time,
137  const std::vector<std::string>& pipelines = {},
138  const std::vector<std::string>& parameters = {});
139 
140  // This overload accept the "catalyst/state" node of the ParaView Blueprint.
141  // When using this overload the conduit node will become available also via the catalyst script
142  static bool ExecutePipelines(const conduit_node* catalyst_state);
143 
147  static bool GetResultsFromPipelines(conduit_node* catalyst_params);
148 
150 
154  static int GetTimeStep();
155  static double GetTime();
157 
164  static conduit_node* GetCatalystParameters();
165 
170  static bool IsInitialized() { return vtkInSituInitializationHelper::Internals != nullptr; }
171 
175  static bool IsPythonSupported();
176 
180  static void GetSteerableProxies(std::vector<std::pair<std::string, vtkSMProxy*>>& proxies);
181 
186  static void UpdateSteerableParameters(
187  vtkSMProxy* steerableProxy, const char* steerableSourceName);
188 
189 protected:
191  ~vtkInSituInitializationHelper() override;
192 
193 private:
195  void operator=(const vtkInSituInitializationHelper&) = delete;
196 
197  static void UpdateSteerableProxies();
198  static int GetAttributeTypeFromString(const std::string& associationString);
199 
200  static int WasInitializedOnce;
201  static int WasFinalizedOnce;
202 
203  class vtkInternals;
204  static vtkInternals* Internals;
205 };
206 
207 #endif
struct conduit_node_impl conduit_node
void PrintSelf(ostream &os, vtkIndent indent) VTK_OVERRIDE
static bool IsInitialized()
Returns true if vtkInSituInitializationHelper has been initialized; which means that ParaView is oper...
Singleton class for initializing without python.
proxy for a VTK source on a server
#define VTKPVINSITU_EXPORT
initialization helper for in situ environments.
proxy for a VTK object(s) on a server
Definition: vtkSMProxy.h:140
abstract base class for all in situ pipelines.
void operator=(const vtkObjectBase &)