|
1 | | -[](https://github.com/temken/graphene/actions) |
2 | | -[](https://codecov.io/gh/temken/template_cpp_cmake_obscura) |
| 1 | +[](https://github.com/temken/Darphene/actions) |
| 2 | +[](https://codecov.io/gh/temken/template_cpp_cmake_obscura) |
3 | 3 | [](https://opensource.org/licenses/MIT) |
4 | 4 |
|
5 | | -# Graphene |
| 5 | +# Darphene - Modelling general dark matter - electron interactions in graphene targets |
6 | 6 |
|
| 7 | +[](https://zenodo.org/badge/latestdoi/xxx) |
| 8 | +[](https://arxiv.org/abs/2303.xxxxx) |
7 | 9 |
|
8 | | -- build with [CMake](https://cmake.org/) |
9 | | -- continuous integration with [Github Actions](https://github.com/actions) |
10 | | -- unit testing with [googletest](https://github.com/google/googletest) |
11 | | -- code coverage with [codecov](https://codecov.io/). |
12 | | -- imports the static library [obscura](https://github.com/temken/obscura) and thereby also [libphysica](https://github.com/temken/libphysica) and [libconfig](https://github.com/hyperrealm/libconfig) |
| 10 | + |
| 11 | +<img width="500" src="https://user-images.githubusercontent.com/29034913/227547647-9d2825dd-9cfd-4fde-9573-04d6c885a99f.png"> |
| 12 | + |
| 13 | +*Darphene* calculates predicted signal rates for dark matter detection experiments using graphene as target material using the [tight-binding approximation](https://en.wikipedia.org/wiki/Tight_binding). Details on the physics can be found in [the corresponding publication](https://arxiv.org/abs/2303.XXXXX). |
| 14 | + |
| 15 | +<img width="250" src="https://user-images.githubusercontent.com/29034913/226607786-762d3a59-88d8-4927-bd16-eb2a577391d2.png"> |
| 16 | + |
| 17 | +## General notes |
| 18 | + |
| 19 | +- The material properties of the graphene target are modeled using the tight-binding approxmation, which uses atomic orbitals of carbon as a basis for the initial wavefunction of the electrons in graphene. |
| 20 | +- The final electron states are approximated as plane-waves. |
| 21 | +- *Darphene* is written in C++ and build using CMake. |
| 22 | +- Parts of the calculations, in particular tabulation of event rates, are parallelized using MPI. |
| 23 | + |
| 24 | +<details><summary>Repository content</summary> |
| 25 | +<p> |
| 26 | + |
| 27 | +The included folders are: |
| 28 | + |
| 29 | +- *bin/*: This folder contains the executable after successful installation together with the configuration files. |
| 30 | +- *data/*: Contains additional data necessary for the simulations, e.g. the solar model tables. |
| 31 | +- *external/*: This folder will only be created and filled during the build with CMake and will contain the [obscura](https://github.com/temken/obscura) library necessary for all direct detection computations. |
| 32 | +- *include/*: All header files of Darphene can be found here. |
| 33 | +- *results/*: Each run of Darphene generates result files in a dedicated sub-folder named after the run's simulation ID string, which is specified in the configuration file. |
| 34 | +- *src/*: Here you find the source code of Darphene. |
| 35 | +- *tests/*: All code and executable files of the unit tests are stored here. |
| 36 | + |
| 37 | +</p> |
| 38 | +</details> |
| 39 | + |
| 40 | + |
| 41 | +## Getting started |
| 42 | + |
| 43 | +<details><summary>1. Dependencies</summary> |
| 44 | +<p> |
| 45 | + |
| 46 | +Before we can install *Darphene*, we need to make sure that a few dependencies are taken care of. |
| 47 | + |
| 48 | +- [arb](https://arblib.org/): For the evaluation of hypergeometric functions. |
| 49 | +- [boost](https://www.boost.org/): For numerical integration (used by *libphysica*). |
| 50 | +- [CMake](https://cmake.org/): *Darphene* as well as the libraries *libphysica* and *obscura* are built with CMake. |
| 51 | +- [eigen](https://eigen.tuxfamily.org): For the numerical procedure to find eigenvalues and eigenvectors of the generalized eigen problem. |
| 52 | +- [libconfig](https://github.com/hyperrealm/libconfig): For the configuration files, *Darphene* uses the *libconfig* library (required version at least 1.6). This will be installed by *libphysica*, if it is not already installed. |
| 53 | +- [libphysica](https://github.com/temken/libphysica): Automatically downloaded to */external/obscura/external/*, compiled, and linked by *CMake*. |
| 54 | +- [MPI](https://www.mpi-forum.org/): The tabulation of DM observables is accelerated via parallelization using MPI. |
| 55 | +- [obscura](https://github.com/temken/obscura): Automatically downloaded to */external/*, compiled, and linked by *CMake*. |
| 56 | + |
| 57 | +On macOS, the dependencies can be installed using [homebrew](https://brew.sh/). |
| 58 | + |
| 59 | +``` |
| 60 | +>brew install arb boost cmake eigen libconfig open-mpi |
| 61 | +``` |
| 62 | + |
| 63 | +On Linux machines, we can use APT: |
| 64 | + |
| 65 | +``` |
| 66 | +>sudo apt-get update -y |
| 67 | +>sudo apt-get install -y arb libboost-all-dev libeigen3-dev libconfig-dev openmpi-bin openmpi-doc libopenmpi-dev |
| 68 | +``` |
| 69 | + |
| 70 | +<details><summary>Notes on libconfig</summary> |
| 71 | +<p> |
| 72 | + |
| 73 | +The installation of `libconfig` is optional, since `libphysica` will install it automatically, if it is not available. Alternatively, it can be built from the source files via |
| 74 | + |
| 75 | +``` |
| 76 | +>wget https://hyperrealm.github.io/libconfig/dist/libconfig-1.7.2.tar.gz |
| 77 | +>tar -xvzf libconfig-1.7.2.tar.gz |
| 78 | +>pushd libconfig-1.7.2 |
| 79 | +>./configure |
| 80 | +>make |
| 81 | +>sudo make install |
| 82 | +>popd |
| 83 | +``` |
| 84 | +</p> |
| 85 | +</details> |
| 86 | + |
| 87 | +</p> |
| 88 | +</details> |
| 89 | + |
| 90 | +<details><summary>2. Download & Installation</summary> |
| 91 | +<p> |
| 92 | +The *Darphene* source code can be downloaded by cloning this git repository: |
| 93 | + |
| 94 | +``` |
| 95 | +>git clone https://github.com/temken/Darphene.git |
| 96 | +>cd Darphene |
| 97 | +``` |
| 98 | + |
| 99 | +The code is compiled and the executable is created using CMake. |
| 100 | + |
| 101 | +``` |
| 102 | +>cmake -E make_directory build |
| 103 | +>cd build |
| 104 | +>cmake -DCMAKE_BUILD_TYPE=Release -DCODE_COVERAGE=OFF .. |
| 105 | +>cmake --build . --config Release |
| 106 | +>cmake --install . |
| 107 | +``` |
| 108 | + |
| 109 | +If everything worked well, there should be the executable *Darphene* in the */bin/* folder. |
| 110 | + |
| 111 | +</p> |
| 112 | +</details> |
| 113 | + |
| 114 | +<details><summary>3. Usage</summary> |
| 115 | +<p> |
| 116 | +Once *Darphene* is installed, it can run by running the following command from the */bin/* folder: |
| 117 | + |
| 118 | +``` |
| 119 | +>./Darphene Darphene.cfg |
| 120 | +``` |
| 121 | + |
| 122 | +Alternative, one can use MPI to speed up calculations. |
| 123 | + |
| 124 | +``` |
| 125 | +>mpirun -n N Darphene Darphene.cfg |
| 126 | +``` |
| 127 | + |
| 128 | +where *N* is the number of desired MPI processes. |
| 129 | + |
| 130 | +</p> |
| 131 | +</details> |
| 132 | + |
| 133 | +## Version History |
| 134 | + |
| 135 | +- 27.03.2023: Release of version 0.1.0 |
| 136 | + |
| 137 | +## Everything else |
| 138 | + |
| 139 | +<details><summary>Citing Darphene</summary> |
| 140 | +<p> |
| 141 | + |
| 142 | +If you decide to use this code, please cite the latest archived version, |
| 143 | + |
| 144 | +> Emken, T., 2023, Darphene [Code, v0.1.0], [[DOI:10.5281/zenodo.xxxxxxx]](https://doi.org/10.5281/zenodo.xxxxxxx) |
| 145 | +
|
| 146 | +<details><summary>BibTeX entry</summary> |
| 147 | +<p> |
| 148 | + |
| 149 | +``` |
| 150 | +@software{Darphene, |
| 151 | + author = {Emken, Timon}, |
| 152 | + title = {{Darphene [Code, v0.1.0]}}, |
| 153 | + year = {2023}, |
| 154 | + publisher = {Zenodo}, |
| 155 | + version = {v0.1.0}, |
| 156 | + doi = {DOI:10.5281/zenodo.xxxxxxx}, |
| 157 | + url = {https://doi.org/10.5281/zenodo.xxxxxxx}, |
| 158 | + howpublished={The code can be found under \url{https://github.com/temken/Darphene}. Version 0.1.0 is archived as \href{https://doi.org/10.5281/zenodo.xxxxxxx}{DOI:10.5281/zenodo.xxxxxxx}} |
| 159 | +} |
| 160 | +``` |
| 161 | +</p> |
| 162 | +</details> |
| 163 | + |
| 164 | +As well as the original publication, |
| 165 | + |
| 166 | +> R. Catena, T. Emken, M. Matas, N.A. Spaldin, E. Urdshals , 2023, **Direct searches for general dark matter-electron interactions with graphene detectors: Part I. Electronic structure calculations**, [[arXiv:2303.xxxxx]](https://arxiv.org/abs/2303.xxxxx). |
| 167 | +
|
| 168 | +</p> |
| 169 | +</details> |
| 170 | + |
| 171 | +<details><summary>Author & Contact</summary> |
| 172 | +<p> |
| 173 | + |
| 174 | +The author of *Darphene* is Timon Emken. |
| 175 | + |
| 176 | +For questions, bug reports or other suggestions please open an [issue](https://github.com/temken/Darphene/issues). |
| 177 | +</p> |
| 178 | +</details> |
| 179 | + |
| 180 | +<details><summary>License</summary> |
| 181 | +<p> |
| 182 | + |
| 183 | +This project is licensed under the MIT License - see the LICENSE file. |
| 184 | + |
| 185 | +</p> |
| 186 | +</details> |
0 commit comments