Now and then we are asked how people could help the Elmer project. First of all, all help for the project is welcome. Elmer started of long ago as a centrally managed project. However, since the open source publication in 2005 there has been numerous contributions outside CSC, Finland, where most of the development still takes place. Now our core team is quite small and most of the developments are guided by the projects that we happen to participate at the moment. Therefore many useful things have a quite low priority. With more external help the development could still progress in much faster pace.

Below are some ways that people could help to boost the development even without any coding effort:

a) Answer to forum questions. When you have already some experience you may answer questions of novice users. This will enable that the developers have more time for the actual development work.

b) Provide a consistency test. This also ensures that your case will not be broken when the code is modified. Note that you should scale up the test case to just a few seconds. For more details look at ElmerSolver test case how-to in: http://www.elmerfem.org/forum/viewtopic.php?f=3&t=3277

c) Provide a case with detailed explanations. This will help other users to take Elmer into use and demonstrate hopefully the possibilities of Elmer in your application area. There are great examples of this already. A natural place to do this is under "Contributed Cases" see: http://www.elmerfem.org/forum/viewforum.php?f=18

d) Provide fancy slides or pictures. The Elmer team gives general presentations of Elmer software quite a many times each year. If you have fancy slides these could be used to make the presentations more impressive. Good PR may mean more funding and thereby better Elmer product.

e) Provide ideas and information for development. A simpe good idea may be implemented in just a few minutes. Even a new physical equation could be implemented in rather short time by the developers if it fits our agenda. So if you can provide with the proper formulation of the relevant equations, and can support in the implementation, verification and documentation process, a new solver may not be that unrealistic. Elmer team has coded quite many solvers but we can never be specialist in every field. The "dirty" work may be even 80-90% of the whole undertaking.

f) Write instructions on how to use Elmer with other software. The documentation of the Elmer project keeps us quite busy and not much attention is put to describing the interoperability with other software.

g) Write and test a XML file for a solver in ElmerGUI. This does not really require that much effort but unfortunately it is still not done for many models that are available for ElmerSolver. Writing the XML file will provide a graphical user interace for the solvers.

h) Provide compilations instructions or binaries. Elmer core team does not have that much time to provide binaries for different platforms. Luckily there are some people providing the various Linux versions. Still having more community support would help in this. For example, currently we have no support for Macs. Anybody? The compilation is also undergoing some changes since we are also going to have a cmake option which will hopefully make cross compilation easier.

i) Help to build a subcommunity. If you have good experiences you could try to attract other users in the same application area to build a subcommunity. Open Source software benefit tremendously from having a community. See the example the success of OpenFOAM. Now in Elmer the most notable subcommunity is the one in computational glaciology, also electromagnetics seems to be on the rise, the could be others as well in lubrication, crystal growth etc.

Now the ultimate way to contribute is of course to participate in the coding. This is not always that easy as Elmer already includes quite many features and knowing what the library already has to offer takes some effort. Following ways might be possible if coding is for you:

j) Write your own solver. If you know how to write Solvers in Elmer you can write and provide your own solver for the community.

k) Help to develop ElmerGUI. Whereas ElmerSolver library and various solvers have ~200,000 lines of code the ElmerGUI has just <20,000 lines of C++ on Qt. This might be attractive coding environment for some modern code developer.

l) Develop in a sandbox. Sometimes there can be special development ideas even regarding the ElmerSolver library that can be nicely isolated from the main code with a suitable API. For example, we created an API for testing different sparse matrix-vector products that enabled researchers to work on that area only without the need to worry about the main code.

m) Do what you want. There are a few external developers that have commit rights. Usually these are people who have worked with Elmer for longer time and have gained the needed insight. As a small complication to be able to freely commit to the Elmer library the developer must sign a Contributor Agreement (CA) that grants IP rights also to CSC. This way we can make changes in the licensing, if that would be needed in the future. Last time we used this possibility was when ElmerSolver library was transferred from GPL license LGPL license. Currently LGPL/GPL is the only license under which Elmer is given out and we don't foresee any changes. Note that if you don't contribute to the library, no CA might be needed. For example, the Elmer/ICE community works without such constraint on their tailored solvers.

If you're interested in contributing feel free to contact me on finding a suitable way. As said, All contributions are welcome. One can roughly estimate that for each 1000 user, there are 10 people who contribute something, and perhaps 1 person who participates actively. These few persons are therefore very important for the success of any open source software project.

Thanx for the idea. Unfortunately GPUs do not seem to be so attractive for sparse matrices due to indirect memory addressing. The best sparse linear solvers with GPUs are not yet that convincing. So I fear that this does not have a lucrative gain vs. effort ratio. Some simple ideas can be implemented in hours. To offload FEM to GPUs would mean rewriting large junks of code. We are currently orienting more towards Intel MIC type of architectures. Targeting to them will also give a performance boost on the standard multicore processors.

Yes, modification of code is a main problem for graphic card's using.But as I knows it will be a giant acceleration. For example in Perm' State University a task was executed at 08 minutes by hybrid Intel+nVidia vs 31 hours by Intel only.