Skip to content

Plugins

Congjian Wang - INL edited this page Mar 17, 2020 · 24 revisions

RAVEN 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

  1. Introduction
  2. Official Plugins
  3. Creating a New Plugin
  4. Plugin Testing

Introduction

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.

Official Plugins

The following plugin repositories are officially supported by RAVEN.

Registration and Installation

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.

Using the plugin in RAVEN

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>

Plugin Testing

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.