|
|
# Code development
|
|
|
|
|
|
|
|
|
We strongly encourage further development of the code by other people. The idea
|
|
|
with this public version is to provide a well tested stable version of AREPO to
|
|
|
the community as a basis of individual model development. Changes to the code can
|
|
|
then be made in two ways: bugfixes and code extensions. The former is organized in
|
|
|
the issue-tracking system of the repository, while for the
|
|
|
second one, the developers should be contacted.
|
|
|
|
|
|
Issue reporrting
|
|
|
================
|
|
|
|
|
|
Problems with the code will in generally be reported to the issue tracker of the repository.
|
|
|
Therefore, if a problem occurs, the first thing to check is whether there already exists
|
|
|
an open issue, i.e. whether this is a known problem. If not, there are two ways to create
|
|
|
a new issue.
|
|
|
|
|
|
* The issue tracking system of the gitlab repository requires log-in to ``gitlab.mpcdf.mpg.de``.
|
|
|
In general, AREPO users will not have this access, however, active developers may request
|
|
|
a guest account there, and can then create own issues. These issues need to be specific
|
|
|
and reproducible, or directly point to the problematic part of the code.
|
|
|
* AREPO users without such an account should contact the authors in case of problems with the
|
|
|
code. Also in this case examples that reproduce the issue greatly help and accellerate
|
|
|
the problem-solving process.
|
|
|
|
|
|
|
|
|
Code extensions
|
|
|
Scientific software development is a crucial aspect of computational (astro-)physics.
|
|
|
With the progess made over the past decades, numerical methods as well as implementations
|
|
|
have evolved and increased in complexity. The scope of simulation codes has
|
|
|
increased accordingly, such that the question how to organize development becomes important
|
|
|
to scientific progress.
|
|
|
|
|
|
This version of Arepo is intended as a basis, providing an efficient code structure
|
|
|
and state of the art numerical techniques for gravity and hydrodynamics. The code is
|
|
|
completely documented and should allow computational astrophysicists to develop their
|
|
|
own specialized modules on top of it. Practically, this is best done by hosting an
|
|
|
own repository for the development, which is occasonally updated from the main
|
|
|
repository to include latest bugfixes. For this workflow to work properly, it is
|
|
|
important to keep the code-base relatively static. For this reason
|
|
|
|
|
|
**the base version of the code is not meant to be extended in functionality.**
|
|
|
|
|
|
This means that only bugfixes as well as updates in the documentation and examples will
|
|
|
be included.
|
|
|
|
|
|
Issue reporting
|
|
|
===============
|
|
|
|
|
|
We welcome code extensions by other people, however with certain requirements
|
|
|
for the implemented modules.
|
|
|
A code of the scope of Arepo will ineviably have a number of issues and so far undetected bugs.
|
|
|
Detection of all issues is very complicated and time-consuming work. This means in practice that
|
|
|
we rely on users that actually report all bugs and issues they come across to improve the quality
|
|
|
of the code. We therefore encourage users to report all issues they have, including things
|
|
|
that remain unclear after reading the documentation. This way we hope to constantly improve the
|
|
|
qualtiy of the code in all its aspects.
|
|
|
|
|
|
To organize this, we created a code support forum (www.arepo-code.org/forums/forum/arepo-forum)
|
|
|
which is publically visible. To create posts on this forum, a registration with admin-approval
|
|
|
is required. We encourage users to sign up under www.arepo-code.org/register and make
|
|
|
use of the forum whenever they have problems.
|
|
|
|
|
|
* The modules are under the same terms of use as the AREPO code, i.e. a GPLv3 license.
|
|
|
All modules in this version of AREPO are free to use for everyone.
|
|
|
* The number of interfaces to the main code should be as few as possible.
|
|
|
* The module should be of general interest. This implies in particular that
|
|
|
the implementation needs to work in a fully scalable fashion in massively-parallel
|
|
|
runs, with a minimum of shared/dublicated data.
|
|
|
* The module should come with some additional examples for verification of its
|
|
|
functionality.
|
|
|
Issues reported in the forum will then be confirmed by one of the authors and added to the
|
|
|
repository issue tracker, which serves as a to-do list for bug fixes and improvements to
|
|
|
the code. Therefore, if a problem occurs, the first thing to check is whether there already exists
|
|
|
an open issue, i.e. whether this is a known and confirmed problem.
|
|
|
|
|
|
Developers interested to share their module with the community as a part of
|
|
|
AREPO should contact the authors.
|
|
|
**Please use the support forum instead of contacting the authors by email.**
|
|
|
|
|
|
**We encourage experienced users to provide help and answer some of the open questions on this forum.**
|
|
|
|
|
|
Major code updates
|
|
|
==================
|
|
|
|
|
|
Attached a list of important bugfixes and additions with the date and id of the
|
|
|
commit
|
|
|
|
|
|
Code extensions
|
|
|
===============
|
|
|
|
|
|
| **Description** | **date (dd.mm.yyyy)** | **commit** |
|
|
|
|--------------------------------------------------------|-----------------------|------------|
|
|
|
| Public version complete | 20.03.2019 | |
|
|
|
Extensions should be hosted in separate repositories or branches of the main repository.
|
|
|
We highly welcome such extensions and encourage developers to make them publically
|
|
|
available (under GNU GPL v3). While this can be done independently of the authors,
|
|
|
we would encourage developers to inform the authors once there is a publically
|
|
|
available module in order to have a list of available extensions on the code homepage.
|
|
|
|
|
|
Some guidelines for code extensions and new modules:
|
|
|
|
|
|
* Modularity
|
|
|
|
|
|
* Minimize the number of changes in existing source code files to a few function calls
|
|
|
and structured variables within existing elements.
|
|
|
* The source code of an own modue should largely be in separate (i.e. new) files.
|
|
|
|
|
|
* Documentation
|
|
|
|
|
|
* All parameter and config-options should be clearly explained in this documentation.
|
|
|
Feel free to add an addional page to this documentation explaining how your module
|
|
|
works.
|
|
|
* Document what each function does in the source code.
|
|
|
* The Template-Config.sh file should have a short explanation for each flag.
|
|
|
|
|
|
* Verification and examples
|
|
|
|
|
|
* If possible, create one or more addional examples illustrating and testing the module.
|
|
|
|