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