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 
96  static void AddPipeline(vtkInSituPipeline* pipeline);
97 
105  static void SetProducer(const std::string& channelName, vtkSMSourceProxy* producer);
106 
110  static vtkSMSourceProxy* GetProducer(const std::string& channelName);
111 
115  static void UpdateAllProducers(double time);
116 
118 
122  static void MarkProducerModified(const std::string& channelName);
123  static void MarkProducerModified(vtkSMSourceProxy* producer);
125 
129  static bool ExecutePipelines(int timestep, double time,
130  const std::vector<std::string>& pipelines = {},
131  const std::vector<std::string>& parameters = {});
132 
133  // This overload accept the "catalyst/state" node of the ParaView Blueprint.
134  // When using this overload the conduit node will become available also via the catalyst script
135  static bool ExecutePipelines(const conduit_node* catalyst_state);
136 
140  static bool GetResultsFromPipelines(conduit_node* catalyst_params);
141 
143 
147  static int GetTimeStep();
148  static double GetTime();
150 
157  static conduit_node* GetCatalystParameters();
158 
163  static bool IsInitialized() { return vtkInSituInitializationHelper::Internals != nullptr; }
164 
168  static bool IsPythonSupported();
169 
173  static void GetSteerableProxies(std::vector<std::pair<std::string, vtkSMProxy*>>& proxies);
174 
179  static void UpdateSteerableParameters(
180  vtkSMProxy* steerableProxy, const char* steerableSourceName);
181 
182 protected:
184  ~vtkInSituInitializationHelper() override;
185 
186 private:
188  void operator=(const vtkInSituInitializationHelper&) = delete;
189 
190  static void UpdateSteerableProxies();
191  static int GetAttributeTypeFromString(const std::string& associationString);
192 
193  static int WasInitializedOnce;
194  static int WasFinalizedOnce;
195 
196  class vtkInternals;
197  static vtkInternals* Internals;
198 };
199 
200 #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 &)