.. _OpenCOR-pluginapproach: =============== Plugin approach =============== OpenCOR is a plugin-based application. This means that if no plugins are selected, then OpenCOR can do :ref:`next to nothing `. As can be seen by opening the Plugins dialog box (by selecting the ``Tools`` | ``Plugins...`` menu) and by unselecting ``Show only selectable plugins`` (if necessary), OpenCOR supports different types of plugins (Organisation, Editing, Simulation, Miscellaneous, API and Third-party; see below): .. image:: /OpenCOR/images/PluginApproachScreenshot01.png :align: center :width: 360px :height: 353px :alt: Plugins window You can select which plugins you want to use. However, plugins which are needed by other plugins (e.g. the Core plugin is needed by the :ref:`CellML model repository ` plugin) cannot be directly selected. Instead, they will be automatically selected if and only if they are needed by at least one other plugin. Most of the selectable plugins come with some kind of a :ref:`GUI `: * **Dockable window:** such a plugin (e.g. the :ref:`CellML model repository ` and :ref:`help ` plugins) can be docked around the central area, undocked or hidden, as illustrated :ref:`here `. * **View window:** such a plugin (e.g. the :ref:`CellML annotation view ` and :ref:`single cell view ` plugins) is used to interact with a file, be it to edit it, simulate it or analyse it. Organisation ------------ Organisation plugins are used to search, open, organise, etc. your files: * **CellMLModelRepository:** a plugin to access the `CellML model repository `_. * **FileBrowser:** a plugin to access your local files. * **FileOrganiser:** a plugin to virtually organise your files. Editing ------- Editing plugins are used to edit part or all of your files using one of several possible views: * **CellMLAnnotationView:** a plugin to annotate `CellML `_ files. There are also some non-selectable Editing plugins: * **CoreEditing:** the core editing plugin. * **CoreCellMLEditing:** the core `CellML `_ editing plugin. Simulation ---------- Simulation plugins are used to simulate your files: * **CVODESolver:** a plugin which uses `CVODE `_ to solve ODEs. * **ForwardEulerSolver:** a plugin which implements the `Forward Euler method `_ to solve ODEs. * **FourthOrderRungeKuttaSolver:** a plugin which implements the fourth-order `Runge-Kutta method `_ to solve ODEs. * **HeunSolver:** a plugin which implements the `Heun method `_ to solve ODEs. * **MidpointSolver:** a plugin which implements the `Midpoint method `_ to solve ODEs. * **IDASolver:** a plugin which uses `IDA `_ to solve DAEs. * **KINSOLSolver:** a plugin which uses `KINSOL `_ to solve non-linear algebraic systems. * **SecondOrderRungeKuttaSolver:** a plugin which implements the second-order `Runge-Kutta method `_ to solve ODEs. * **SingleCellView:** a plugin to run single cell simulations. There is also a non-selectable Simulation plugin: * **CoreSolver:** the core solver plugin. Miscellaneous ------------- Miscellaneous plugins are used for various purposes: * **Help:** a plugin to provide help. There are also some non-selectable Miscellaneous plugins: * **Core:** the core plugin. * **Compiler:** a plugin to support code compilation. * **CellMLSupport:** a plugin to support `CellML `_. * **CellMLTools:** a plugin to access various `CellML `_-related tools. API --- (Non-selectable) API plugins are used to provide access to external APIs: * **CellMLAPI:** a plugin to access the `CellML API `_. Third-party ----------- (Non-selectable) third-party plugins are used to provide access to third-party libraries: * **LLVM:** a plugin to access `LLVM `_ (as well as `Clang `_). * **SUNDIALS:** a plugin to access CVODE, IDA and KINSOL from the `SUNDIALS `_ library. * **Qwt:** a plugin to access `Qwt `_.