SST 12.1.0
Structural Simulation Toolkit
sstmodel.h
1// Copyright 2009-2022 NTESS. Under the terms
2// of Contract DE-NA0003525 with NTESS, the U.S.
3// Government retains certain rights in this software.
4//
5// Copyright (c) 2009-2022, NTESS
6// All rights reserved.
7//
8// This file is part of the SST software package. For license
9// information, see the LICENSE file in the top level directory of the
10// distribution.
11
12#ifndef SST_CORE_MODEL_SSTMODEL_H
13#define SST_CORE_MODEL_SSTMODEL_H
14
15#include "sst/core/eli/elementinfo.h"
16#include "sst/core/warnmacros.h"
17
18namespace SST {
19
20class Config;
21class ConfigGraph;
22
23/** Base class for Model Generation
24 */
26{
27
28public:
29 SST_ELI_DECLARE_BASE(SSTModelDescription)
30 // declare extern to limit compile times
31 SST_ELI_DECLARE_CTOR_EXTERN(const std::string&, int, Config*, double)
32 SST_ELI_DECLARE_INFO_EXTERN(
34 ELI::ProvidesSimpleInfo<1,std::vector<std::string>>)
35
36 // Helper functions to pull out ELI data for an element
37 static bool isElementParallelCapable(const std::string& type);
38 static const std::vector<std::string>& getElementSupportedExtensions(const std::string& type);
39
41 virtual ~SSTModelDescription() {};
42
43 /** Create the ConfigGraph
44 *
45 * This function should be overridden by subclasses.
46 *
47 * This function is responsible for reading any configuration
48 * files and generating a ConfigGraph object.
49 */
51
52
53protected:
54 /** Set a configuration string to update configuration values */
55 bool setOptionFromModel(const std::string& entryName, const std::string& value);
56
57 /**
58 * Sets the model options field of the Config object. This has a
59 * very narrow use case, which is to set the model_options when
60 * the model is just a wrapper to another model type and they need
61 * to pass some extra options.
62 *
63 * @param options String that will be used for model_options. It
64 * will overwrite what is alread there
65 */
66 void setModelOptions(const std::string& options);
67
68 /**
69 * Allows ModelDefinition to set global parameters.
70 *
71 * @param set Name of the global param set to add key/value pair to
72 *
73 * @param key Key of key/value pair to be added
74 *
75 * @param key Value of key/value pair to be added
76 *
77 * @param overwrite Overwrite existing value if set to true (which is default)
78 */
80 const std::string& set, const Params::key_type& key, const Params::key_type& value, bool overwrite = true);
81
82
83private:
84 Config* config;
85};
86
87} // namespace SST
88
89
90// Use this macro to register a model description. Parallel_capable
91// indicates whether this model is able to be use when loading in
92// parallel. The final arguments are optional and are a list of file
93// extensions handled by the model. These are only useful for the
94// built-in models as external models will have to use the command
95// line option to load them and then the extension will be ignored.
96#define SST_ELI_REGISTER_MODEL_DESCRIPTION(cls, lib, name, version, desc, parallel_capable) \
97 SST_ELI_REGISTER_DERIVED(SST::SSTModelDescription, ::cls,lib,name,ELI_FORWARD_AS_ONE(version),desc) \
98 SST_ELI_DOCUMENT_SIMPLE_INFO(bool,0,parallel_capable)
99
100#define SST_ELI_DOCUMENT_MODEL_SUPPORTED_EXTENSIONS(...) \
101 SST_ELI_DOCUMENT_SIMPLE_INFO(std::vector<std::string>,1,__VA_ARGS__)
102
103#endif // SST_CORE_MODEL_SSTMODEL_H
A Configuration Graph A graph representing Components and Links.
Definition: configGraph.h:390
Class to contain SST Simulation Configuration variables.
Definition: config.h:30
Definition: simpleInfo.h:83
std::string key_type
Definition: params.h:232
Base class for Model Generation.
Definition: sstmodel.h:26
void setModelOptions(const std::string &options)
Sets the model options field of the Config object.
Definition: sstmodel.cc:33
virtual ConfigGraph * createConfigGraph()=0
Create the ConfigGraph.
void insertGlobalParameter(const std::string &set, const Params::key_type &key, const Params::key_type &value, bool overwrite=true)
Allows ModelDefinition to set global parameters.
Definition: sstmodel.cc:39
bool setOptionFromModel(const std::string &entryName, const std::string &value)
Set a configuration string to update configuration values.
Definition: sstmodel.cc:27