KTH framework for Nek5000 toolboxes; testing version  0.0.1
Framework for toolboxes developed for Nek5000

Introduction

This framework provides platform for development and shearing the tools based on Nek5000 code. It contains number of utilities that allow Nek5000 users to perform additional tasks. The main objective is to allow different users to exchange their code that is not part of Nek5000 core but operates through standard user interface (mainly through userchk).

Framework structure

To make this platform easy to expand and reuse existing code we introduce specific directory structure representing different tasks. All files are grouped by taks and placed in a tree structure, where the parent directories (modules in Doxygen nomenclature) perform some operations and can define tasks and interfaces that have to be provided by their subdirectories (submodules). This structure can be repeated recursively with submodules becoming parent modules for next level structures. A backbone of the whole framework is module called frame that provides dynamical databases for all tools (modules), runtimes parameters and timers introduced by framework. This module should be started first and all the remaining tools should be registered with it. For more information check Toolbox page.

Download

The top level direcotries in the framework point to stable release of three main github repositories (using git submodules):

Each ot these repositories can be downloaded separately by executing

git clone https://github.com/Nek5000/Nek5000.git -b master
git clone https://github.com/KTH-Nek5000/KTH_Toolbox -b master
git clone https://github.com/KTH-Nek5000/KTH_Examples -b master

or as a single framework by

git clone --recursive https://github.com/KTH-Nek5000/KTH_Framework

The second method is preferred as Nek5000 repository has neither development nor stable branches and all the development goes directly to master branch. As stable releases are marked by tags the user has to be careful to clone Nek5000 version compatible with current tool version. On the other hand the submodule within KTH_Framework points to the speciffic commit in Nek5000 repository forcing consistency between tools and Nek5000 versions. For the same reason user has to be careful using

git submodule update --remote Nek5000

as it would load all the new commits. The proper way of upgrading KTH_Fremwork is running from the main framework directory

git fetch
git merge origin/master
git submodule update --recursive

Documentation

To make this platform easy to use we pay attention to Doxygen based documentation of every tool. It has to provide detailed description of the tool itsef, the routine interfaces, runtime parameters and possible dependencies between modules. The general description of every tool is given in FRAMEWORK.txt, which is present in almost every directory. This documentation is available online as GitHub Pages (gh-pages bfranch) and can be generated locally by executing at the top level of the local copy of KTH_Framework repository:

mkdir html
doxygen ./docs/Doxyfile
rm doxygen.warning

It requires doxygen 1.8.11 or newer and the dot tool from Graphviz. All files required by doxygen are located under ./docs/. It includes configuration file (Doxyfile), bibliography (doxy.bib) and web pages contents (mainpage.dox).