|
|
## Important documents and further reading
|
|
|
|
|
|
|
|
|
- The [changelog](https://iffgit.fz-juelich.de/kkr/jukkr/-/blob/develop/CHANGELOG.md)
|
|
|
- The [contributing guide](https://kkr.iffgit.fz-juelich.de/jukkr/page/contributing.html)
|
|
|
- The [automatically generated documentation of the source code](https://kkr.iffgit.fz-juelich.de/jukkr)
|
|
|
|
|
|
|
|
|
## CI and automatic testing
|
|
|
|
|
|
Describe CI pipeline, where to find the stuff and how tests are organized
|
|
|
|
|
|
- The [CI pipelines](https://iffgit.fz-juelich.de/kkr/jukkr/-/pipelines),
|
|
|
- code coverage: https://kkr.iffgit.fz-juelich.de/jukkr/page/codecov/index.html
|
|
|
With every commit and also as nightly checks, continuous integration (CI) tests are run. There are several [CI pipelines](https://iffgit.fz-juelich.de/kkr/jukkr/-/pipelines) covering different aspects which are defined in *Build -> Pipelines* of the project's navigation bar. The typical test is a regression test that runs the code for a minimal example (should run very quickly, not accurately) of a certain feature and checks if the output agrees to some reference.
|
|
|
|
|
|
The tests are defined in the [`tests` folder](https://iffgit.fz-juelich.de/kkr/jukkr/-/tree/develop/tests?ref_type=heads) where the different stages (*build*, *run* and *verify* steps for different codes) are defined in yaml files collected in [`tests/gitlab-ci`](https://iffgit.fz-juelich.de/kkr/jukkr/-/tree/develop/tests/gitlab-ci?ref_type=heads). A typical step looks like this (annotated for readability):
|
|
|
```
|
|
|
build_kkrhost:gnu:debug: # name of the job
|
|
|
stage: build_kkrhost # stage where it runs (see pipeline definition)
|
|
|
needs: ["test:intel"] # dependency for this job (here requires to have checked if intel compiler works)
|
|
|
tags:
|
|
|
- docker-executor # required to run the docker image where this is based upon
|
|
|
image: iffregistry.fz-juelich.de/docker-images/centos7-intel-compilers/extended_gcc8:latest # definition of docker image that has intel compilers installed
|
|
|
allow_failure: false
|
|
|
script: # definition of steps that are done for compilation
|
|
|
# first make sure correct cmake etc is used
|
|
|
- source /etc/profile
|
|
|
- mkdir build_gfortran_debug && cd build_gfortran_debug
|
|
|
- /opt/gcc8/bin/gfortran --version
|
|
|
- FC=/opt/gcc8/bin/gfortran cmake -DENABLE_MPI=OFF -DENABLE_OMP=OFF -DCMAKE_BUILD_TYPE=Debug -DCOMPILE_KKRHOST=ON -DCOMPILE_KKRIMP=OFF -DCOMPILE_KKRSUSC=OFF -DCOMPILE_PKKPRIME=OFF -DCOMPILE_VORONOI=OFF -DCOMPILE_RHOQ=OFF ..
|
|
|
- make -j4 VERBOSE=1
|
|
|
only: # definition for which pipelines this test is run
|
|
|
- BdG # branch name
|
|
|
- schedules # scheduled tests (nightly builds)
|
|
|
- triggers # can be triggered by webhooks
|
|
|
- web # can be started from the website
|
|
|
- master # branch name
|
|
|
- develop # branch name
|
|
|
```
|
|
|
|
|
|
A typical regression test contains the minimal input (e.g., for [KKRhost qdos test](https://iffgit.fz-juelich.de/kkr/jukkr/-/tree/develop/tests/KKRhost/test_inputs/test_12_qdos_bcc_Fe_slab?ref_type=heads): `inputcard`, `shapefun`, `potential`, `qvec.dat`) and [reference data](https://iffgit.fz-juelich.de/kkr/jukkr/-/tree/develop/tests/KKRhost/test_inputs/test_12_qdos_bcc_Fe_slab/ref?ref_type=heads) (`qdos.AAA.S.dat` output files). After compiling the executable, the CI system then runs the tests and verifies the outcome using simple Python scripts and pytest.
|
|
|
For the qdos test, this is defined in [`tests/KKRhost/tools/test_verify_qdos.py`](https://iffgit.fz-juelich.de/kkr/jukkr/-/blob/develop/tests/KKRhost/tools/test_verify_qdos.py?ref_type=head).
|
|
|
|
|
|
An overview of the [code's test coverage](https://kkr.iffgit.fz-juelich.de/jukkr/page/codecov/index.html) is automatically computed by running the tests with the appropriate compiler option.
|
|
|
|
|
|
## Zenodo releases
|
|
|
|
... | ... | @@ -95,7 +120,7 @@ Additional files needed for Boltzmann transport calculations: |
|
|
- [`source/common/global_variables.F90`](https://iffgit.fz-juelich.de/kkr/jukkr/-/blob/develop/source/common/global_variables.F90?ref_type=heads): definition of global constants (array sizes etc.)
|
|
|
- [`source/common/constants.f90`](https://iffgit.fz-juelich.de/kkr/jukkr/-/blob/develop/source/common/constants.f90?ref_type=heads): definition of physical constants
|
|
|
|
|
|
##### Space groups
|
|
|
#### Space groups
|
|
|
|
|
|
- [`source/common/findgroup.f90`](https://iffgit.fz-juelich.de/kkr/jukkr/-/blob/develop/source/common/findgroup.f90?ref_type=heads)
|
|
|
- [`source/common/pointgrp.f90`](https://iffgit.fz-juelich.de/kkr/jukkr/-/blob/develop/source/common/pointgrp.f90?ref_type=heads)
|
... | ... | |