Personal tools

Difference between revisions of "Mohid's wishlist"

From MohidWiki

Jump to: navigation, search
(Clean slate)
Line 22: Line 22:
 
* GIT:
 
* GIT:
 
: V5 should use a modern version control system, what about GIT?
 
: V5 should use a modern version control system, what about GIT?
 +
 +
== Numerical methods/Algorithms ==
 +
Mohid uses structured meshes. It should be possible to use unstructured meshes, treating structured meshes as a particular case.

Revision as of 16:01, 15 September 2014

Mohid V5 is now taking momentum. This is now in very early stages but since it already started rolling, it is unstoppable. Here you may find V5's aspirations and guidelines and V4's week points are highlighted (lets avoid them).

Clean slate

Mohid V5 is starting with a clean slate, our main golas are:

  • develop with parallelization in mind:
parallelization is the main computer systems problem for the next decade. Mohid should run in a cellphone and in a HPC cluster. Parallelization must come naturally from the model, not as an extra layer of complexity; and
  • contributions should be simplified:
one of Mohid's next version goals is to increase the universe of contributors. There are lots of Mohid users that do not contribute patches and features. Some of the fault lies in the complexity of developing in Mohid's ecosystem. There must be a clear and simple model to include new features, it could be a pluggin system.

Technical aspects

Some features should be in place from inception:

  • unit tests:
testing is an integral feature of modern development, a unit test framework will be selected (here is a list of Fortran unit tests frameworks);
  • integration and acceptance tests:
Jenkins is an open source continuous integration tool;
  • separate core functionality from pre- and post-processing:
currently most of Mohid is not the core functionality, is is stuff like importing data form external sources, interpolation and other spatial and temporal treatment of input data and writing results to several formats.
  • avoid external dependencies in the core:
for instance HDF should be pushed to pre- and post-processing. Compiling the core should only need a Fortran compiler with MPI and OpenMP capabilities;
  • JSON input:
data input is done using Mohid's DSL (Domain Specific Language), developed in the '90s (strongly influenced by XML). Using JSON would increase interoperability with other languages and tools;
  • GIT:
V5 should use a modern version control system, what about GIT?

Numerical methods/Algorithms

Mohid uses structured meshes. It should be possible to use unstructured meshes, treating structured meshes as a particular case.