IOSS 2.0
Iocatalyst_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 IOSS_IOVS_CATALYST_MANAGER_H
8#define IOSS_IOVS_CATALYST_MANAGER_H
9
10#include "iocatalyst_export.h"
11#include <Ioss_ParallelUtils.h>
12#include <catalyst.hpp>
13
14namespace Iocatalyst {
15
16 class IOCATALYST_EXPORT CatalystManager
17 {
18 public:
19 using CatalystPipelineID = unsigned int;
20
23
24 inline static const std::string ARGS = "args";
25 inline static const std::string CATALYST = "catalyst";
26 inline static const std::string CATALYST_BLOCK_PARSE_INPUT_DECK_NAME =
27 "CATALYST_BLOCK_PARSE_INPUT_DECK_NAME";
28 inline static const std::string CATALYST_BLOCK_PARSE_JSON_STRING =
29 "CATALYST_BLOCK_PARSE_JSON_STRING";
30 inline static const std::string CATALYST_DEBUG_LEVEL = "CATALYST_DEBUG_LEVEL";
31 inline static const std::string CATALYST_ENABLE_LOGGING = "CATALYST_ENABLE_LOGGING";
32 inline static const std::string CATALYST_OUTPUT_DIRECTORY = "CATALYST_OUTPUT_DIRECTORY";
33 inline static const std::string CATALYST_OUTPUT_DEFAULT = "CatalystOutput";
34 inline static const std::string CATALYST_INPUT_NAME = "CATALYST_INPUT_NAME";
35 inline static const std::string CATALYST_INPUT_DEFAULT = "input";
36 inline static const std::string CATALYST_MULTI_INPUT_PIPELINE_NAME =
37 "CATALYST_MULTI_INPUT_PIPELINE_NAME";
38 inline static const std::string CATALYST_SCRIPT = "CATALYST_SCRIPT";
39 inline static const std::string CATALYST_SCRIPT_EXTRA_FILE = "CATALYST_SCRIPT_EXTRA_FILE";
40 inline static const std::string CHANNELS = "channels";
41 inline static const std::string CYCLE = "cycle";
42 inline static const std::string DATA = "data";
43 inline static const std::string PHACTORI_JSON_SCRIPT = "PHACTORI_JSON_SCRIPT";
44 inline static const std::string PIPELINES = "pipelines";
45 inline static const std::string FILENAME = "filename";
46 inline static const std::string FS = "/";
47 inline static const std::string IOSS = "ioss";
48 inline static const std::string SCRIPTS = "scripts";
49 inline static const std::string STATE = "state";
50 inline static const std::string TIME = "time";
51 inline static const std::string TIMESTEP = "timestep";
52 inline static const std::string TYPE = "type";
53 inline static const std::string PHACTORI_DRIVER_SCRIPT_PATH = "PHACTORI_DRIVER_SCRIPT_PATH";
54
56 {
57 static CatalystManager instance;
58 return instance;
59 }
60
61 std::string getCatalystPythonDriverPath();
62
63 conduit_cpp::Node getInitializeConduit();
64
66
67 pState getPipelineState(CatalystPipelineID id);
68
69 void writeToCatalystLogFile(const Ioss::ParallelUtils &putils,
70 const Ioss::PropertyManager &props);
71
104
106 const Ioss::ParallelUtils &putils);
107 void execute(CatalystPipelineID id, int state, double time, conduit_cpp::Node &data);
109 void addScriptProps(conduit_cpp::Node &n, const CatalystProps &p);
110 void addExecuteProps(conduit_cpp::Node &n, const CatalystProps &p, int state, double time);
111 void addExecuteData(conduit_cpp::Node &n, const std::string &channelName, int state,
112 double time, conduit_cpp::Node &data);
114 std::string getCatDataPath(const Ioss::PropertyManager &props);
115 void setMultiInputWaitState(CatalystPipelineID id, int state, double time,
116 conduit_cpp::Node &data);
119 void reset()
120 {
122 catPipes.clear();
124 }
125
127 {
128 return getCatScriptPath(p) + FILENAME;
129 }
130
131 std::string getCatScriptArgsPath(const CatalystProps &p) { return getCatScriptPath(p) + ARGS; }
132
133 std::string getCatScriptPath(const CatalystProps &p)
134 {
135 return CATALYST + FS + SCRIPTS + FS + std::to_string(p.catalystPipelineID) + FS;
136 }
137
138 std::string getCatStatePath() { return CATALYST + FS + STATE + FS; }
139
140 std::string getCatChannelsPath() { return CATALYST + FS + CHANNELS + FS; }
141
142 private:
147
148 void broadCastString(std::string &s, const Ioss::ParallelUtils &putils);
149 void broadCastStatusCode(bool &statusCode, const Ioss::ParallelUtils &putils);
150
152
154 std::map<CatalystPipelineID, CatalystProps> catPipes;
156 };
157} // namespace Iocatalyst
158
159#endif
Definition Iocatalyst_CatalystManager.h:17
mState
Definition Iocatalyst_CatalystManager.h:21
@ mExecute
Definition Iocatalyst_CatalystManager.h:21
@ mInit
Definition Iocatalyst_CatalystManager.h:21
@ mFinalize
Definition Iocatalyst_CatalystManager.h:21
static const std::string CATALYST_OUTPUT_DEFAULT
Definition Iocatalyst_CatalystManager.h:33
mState managerState
Definition Iocatalyst_CatalystManager.h:155
void setMultiInputWaitState(CatalystPipelineID id, int state, double time, conduit_cpp::Node &data)
Definition Iocatalyst_CatalystManager.C:256
static const std::string CATALYST_SCRIPT_EXTRA_FILE
Definition Iocatalyst_CatalystManager.h:39
static const std::string TIMESTEP
Definition Iocatalyst_CatalystManager.h:51
void addScriptProps(conduit_cpp::Node &n, const CatalystProps &p)
Definition Iocatalyst_CatalystManager.C:222
bool canExecuteMultiInputScript(CatalystPipelineID id)
Definition Iocatalyst_CatalystManager.C:271
void broadCastString(std::string &s, const Ioss::ParallelUtils &putils)
Definition Iocatalyst_CatalystManager.C:310
static const std::string CATALYST_DEBUG_LEVEL
Definition Iocatalyst_CatalystManager.h:30
static const std::string CATALYST_OUTPUT_DIRECTORY
Definition Iocatalyst_CatalystManager.h:32
std::string getCatScriptArgsPath(const CatalystProps &p)
Definition Iocatalyst_CatalystManager.h:131
static const std::string ARGS
Definition Iocatalyst_CatalystManager.h:24
CatalystManager()
Definition Iocatalyst_CatalystManager.C:13
void incrementOutputCounts()
Definition Iocatalyst_CatalystManager.C:308
static const std::string PHACTORI_JSON_SCRIPT
Definition Iocatalyst_CatalystManager.h:43
static const std::string CHANNELS
Definition Iocatalyst_CatalystManager.h:40
static const std::string FS
Definition Iocatalyst_CatalystManager.h:46
void reset()
Definition Iocatalyst_CatalystManager.h:119
static const std::string DATA
Definition Iocatalyst_CatalystManager.h:42
static const std::string CATALYST_ENABLE_LOGGING
Definition Iocatalyst_CatalystManager.h:31
void broadCastStatusCode(bool &statusCode, const Ioss::ParallelUtils &putils)
Definition Iocatalyst_CatalystManager.C:325
static const std::string FILENAME
Definition Iocatalyst_CatalystManager.h:45
static const std::string TIME
Definition Iocatalyst_CatalystManager.h:50
static const std::string CYCLE
Definition Iocatalyst_CatalystManager.h:41
mState getManagerState()
Definition Iocatalyst_CatalystManager.h:65
void addExecuteProps(conduit_cpp::Node &n, const CatalystProps &p, int state, double time)
Definition Iocatalyst_CatalystManager.C:234
unsigned int CatalystPipelineID
Definition Iocatalyst_CatalystManager.h:19
pState
Definition Iocatalyst_CatalystManager.h:22
@ pWaitExecute
Definition Iocatalyst_CatalystManager.h:22
@ pExecute
Definition Iocatalyst_CatalystManager.h:22
@ pFinalize
Definition Iocatalyst_CatalystManager.h:22
static const std::string TYPE
Definition Iocatalyst_CatalystManager.h:52
static const std::string STATE
Definition Iocatalyst_CatalystManager.h:49
void finalize(CatalystPipelineID id)
Definition Iocatalyst_CatalystManager.C:193
static const std::string CATALYST_MULTI_INPUT_PIPELINE_NAME
Definition Iocatalyst_CatalystManager.h:36
static const std::string CATALYST_SCRIPT
Definition Iocatalyst_CatalystManager.h:38
CatalystProps & getCatalystProps(CatalystPipelineID id)
Definition Iocatalyst_CatalystManager.C:135
void addExecuteData(conduit_cpp::Node &n, const std::string &channelName, int state, double time, conduit_cpp::Node &data)
Definition Iocatalyst_CatalystManager.C:244
CatalystManager & operator=(const CatalystManager &)=delete
static const std::string SCRIPTS
Definition Iocatalyst_CatalystManager.h:48
std::string getCatScriptFnamePath(const CatalystProps &p)
Definition Iocatalyst_CatalystManager.h:126
static const std::string PIPELINES
Definition Iocatalyst_CatalystManager.h:44
static const std::string CATALYST_BLOCK_PARSE_INPUT_DECK_NAME
Definition Iocatalyst_CatalystManager.h:26
CatalystManager(const CatalystManager &)=delete
CatalystPipelineID catalystOutputIDNumber
Definition Iocatalyst_CatalystManager.h:153
static const std::string CATALYST_INPUT_DEFAULT
Definition Iocatalyst_CatalystManager.h:35
std::map< CatalystPipelineID, CatalystProps > catPipes
Definition Iocatalyst_CatalystManager.h:154
std::string getCatStatePath()
Definition Iocatalyst_CatalystManager.h:138
std::string getCatChannelsPath()
Definition Iocatalyst_CatalystManager.h:140
std::string getCatScriptPath(const CatalystProps &p)
Definition Iocatalyst_CatalystManager.h:133
CatalystPipelineID initialize(const Ioss::PropertyManager &props, const Ioss::ParallelUtils &putils)
Definition Iocatalyst_CatalystManager.C:40
static const std::string PHACTORI_DRIVER_SCRIPT_PATH
Definition Iocatalyst_CatalystManager.h:53
void execute(CatalystPipelineID id, int state, double time, conduit_cpp::Node &data)
Definition Iocatalyst_CatalystManager.C:145
static CatalystManager & getInstance()
Definition Iocatalyst_CatalystManager.h:55
static const std::string IOSS
Definition Iocatalyst_CatalystManager.h:47
static const std::string CATALYST_INPUT_NAME
Definition Iocatalyst_CatalystManager.h:34
static const std::string CATALYST_BLOCK_PARSE_JSON_STRING
Definition Iocatalyst_CatalystManager.h:28
static const std::string CATALYST
Definition Iocatalyst_CatalystManager.h:25
void clearAllMultiInputWaitStates(CatalystPipelineID id)
Definition Iocatalyst_CatalystManager.C:290
std::string getCatDataPath(const Ioss::PropertyManager &props)
Definition Iocatalyst_CatalystManager.C:30
Definition Ioss_ParallelUtils.h:32
A collection of Ioss::Property objects.
Definition Ioss_PropertyManager.h:36
A namespace for the Catalyst 2.0 database format.
Definition Iocatalyst_CatalystLogging.C:15
Definition Iocatalyst_CatalystManager.h:73
std::string catalystInputDeckName
Definition Iocatalyst_CatalystManager.h:99
std::string catalystBlockJSON
Definition Iocatalyst_CatalystManager.h:97
std::string catalystOutputDirectory
Definition Iocatalyst_CatalystManager.h:100
std::string catalystInputName
Definition Iocatalyst_CatalystManager.h:96
std::string catalystMultiInputPipelineName
Definition Iocatalyst_CatalystManager.h:90
int state
Definition Iocatalyst_CatalystManager.h:93
CatalystProps()
Definition Iocatalyst_CatalystManager.h:74
bool enableCatalystMultiInputPipeline
Definition Iocatalyst_CatalystManager.h:89
std::string catalystPythonFilename
Definition Iocatalyst_CatalystManager.h:91
conduit_cpp::Node data
Definition Iocatalyst_CatalystManager.h:92
CatalystPipelineID catalystPipelineID
Definition Iocatalyst_CatalystManager.h:87
double time
Definition Iocatalyst_CatalystManager.h:94
int debugLevel
Definition Iocatalyst_CatalystManager.h:102
std::string catalystScriptExtraFile
Definition Iocatalyst_CatalystManager.h:98
pState pipelineState
Definition Iocatalyst_CatalystManager.h:88
bool enableLogging
Definition Iocatalyst_CatalystManager.h:101