-
Notifications
You must be signed in to change notification settings - Fork 135
Plugins
Plugins in RAVEN are an option to associate a workflow or set of RAVEN external models to RAVEN without having them included in the RAVEN repository. Benefits include modularity, access restriction, and regression testing for compatibility with RAVEN as it continues to grow.
Table of Contents
RAVEN users commonly develop sophisticated workflows with complex physics models while doing their analyses. While RAVEN doesn't provide storage for workflows and physics, these can be associated to RAVEN by the use of plugins. Official plugins are supported through RAVEN regression testing.
- For particular information on creating new plugins and interfacing with existing plugins, compile the RAVEN plugin manual at
raven/docs
.
The following plugin repositories are officially supported by RAVEN.
-
CashFlow
module: https://hpcgitlab.inl.gov/epinas/CashFlow Provides economic analysis tools. -
SR2ML
module: https://hpcgitlab.hpc.inl.gov/RAVEN_PLUGINS/SR2ML.git provides safety, risk and reliability models.
To register a plugin with RAVEN and make its components accessible, run the script
raven/scripts/install_plugins.py -s /abs/path/to/pluginName
replacing pluginName
with the path to your plugin and the name of the directory, such as /user/projects/raven/plugins/pluginName
. Use the absolute path to your new plugin to avoid any navigation problems.
If installing an officially-supported plugin that you do not plan on modifying, the following command can be run (using CashFlow as the example plugin):
raven/scripts/install_plugins.py -s CashFlow
Note the path was eliminated. This will initialize (or update) the official plugin in raven/plugins
with the official submoduled version.
To install all officially-supported plugins, the shortcut option -a
or --all
can be used:
raven/scripts/install_plugins.py -a
At this stage, RAVEN will import all the plugins within that directory and perform some error checking.
Once registered, new external models can be used in RAVEN by using the model subtype defined by your plugin name. For example, if your external model class is named "myPluginModel", you can access an external model in the RAVEN input as
<Models>
...
<ExternalModel name='myName' subType='pluginName.pluginModel'>
...
</ExternalModel>
...
</Models>
RAVEN supports some official plugins on a case-by-case basis for regression testing nightly against new RAVEN developments. If you are interested in maintaining your plugin as an official RAVEN plugin, please contact us.