About Genesis





Input Parameters

Input Files

Getting Started


3rd Party Programs

Input File Library



Other Links

Genesis 1.3

The old homepage for version 2.0 can be found here. The website will be remodelled once the new version 3.0 goes online.


Genesis Version 3.0 - Beta

The next verison of Genesis is almost ready to be released. However I make the code available in advance so that I can react on the feedback from the users. There might be several little and bigger bugs still in the code I haven't caught. Any feedback is very welcome.

New Features of Genesis 1.3 - Version 3.0

List of changes:

  • The Main Output File is in HDF5 Format, allowing for more compact file sizes and direct reading of specific datasets.
  • Particle output and dumps are in HDF5 format, including the current profile in the dump. This leads to a more self consistent description of the file.
  • Field output and dumps are in HDF5 format including some supplemental information (grid spacing, wavelength) for a more self-consistent field description
  • Particle and Field import is now in HDF5 format
  • A radiation harmonic can directly be imported using the FIELDHARMFILE to specify the source file.
  • Genesis can run one in a mode, describing each electron. This is enabled by the IONE4ONE input parameter. Note that at longer wavelength the memory demand might exceed the available memory.
  • The random number generator and the Hammersley sequences are reinitialized for each integration step with a global random number sequence. Therefore the effective shot noise does no longer depend on the integration length, quantumfluctuation on/off and the number of slices used.

Source Code

Genesis - Version 3.2.2 - Beta: zip-archive

Postprocessor for HDF5 outputfiles with Matlab: gzip-archive

Bug - Report

Beta 3.0.1: Particle dumps and output was writing x-coordinates for y plane as well. Fixed.

Beta 3.0.3: Output of dataset "z" in group "lattice" had zeros for IPHSTY larger than one. Fixed.

Beta 3.0.5: Importing external distribution with IONE4ONE option was producing incorrect results and some segmentation errors. Fixed

Beta 3.1.1: Importing external distribution with harmonic conversion didn't work in steady-state regime because genesis forces a mismatch of the slice length by setting ZSEP to unity.

Beta 3.1.1: When importing external PARTFILE in ione4one simulation the current was limited to CURPEAK in the main input deck despite the current value in the particle file. fixed.

Beta 3.2.1: The warning that output has not been selected for NHARM=1 has been removed

Beta 3.2.1: In steady state ZSEP was forced to be set to one, resulting in a warning that the ration ZSEP/DELZ is not an integer. For steady state ZSEP is now set to DELZ and has no further impact on steady state simulations

Beta 3.2.1: The calculation of slippage were wrong when DELZ and ZSEP aren't identical. This could result in steady-state like behaviour in time-dependent simulations. The bug has been fixed

Beta 3.2.1: In MPI runs, each node were filling up the slippage field while only the root node is using.This could lead to a very large memory consumption beyond the availability on computer nodes. Now only the root node is fillingup the record which holds the slippage field. Note that some native FORTRAN compiler do preallocate any array and that despite not usingit the memory is reserved for each node.

Beta 3.2.2: A bug has been removed which suppressed slippage in long undulator towards the end.




Genesis is written in Fortran and C++ and requires the libraries for HDF5 and MPI. All the communication and HDF5 input/output is done in C++. The Fortran part does not see any of the advanced libraries.

Step 1 - Compilation of the Fortran Code

All Fortran source code needs to be compiled into object files, typically using the -c option of the compiler. The source code can be found inthe directory src/FORTRAN.

Step 2 - Compilation of the Source Code

Same with the C++ code. The source can be found in src/C++ src/C++/Output src/C++/Input and src/C++/Util. The include files can be found in include/. The compile requires also the definition of some macros, namely HARMMAX=7, NZMAX=10000 and GENESIS_VERSION=3.0 The value of HARMMAX and NZMAX can be chosen smaller for a smaller footprint int he memory but it might be easier to exceed the limitation in simulation.

Step 3 - Linking

The C++ and Fortran object code need to be linked together as well as the external libraries, which are namely the MPI extension for C++ and the FortrantoC wrapper as well as the external libraries for MPI and HDF5.


In the distribution a Makefile is supplied which is working for a specific implementation of the Gnu compiler, openmpi and hdf5 implementation. It might not work on all system but it is the best guideline to compile Genesis.


A web-based forum has been created at:


where users and developer can report bugs, exchange information, request help etc. Feel free to register there to keep updated with the latest development of Genesis


Sven Reiche, Villigen 6/29/12


Last modified: 6/12/07