ARTS
A radiative transfer model for the millimeter and sub-millimeter spectral range.
https://github.com/atmtools/arts
Category: Atmosphere
Sub Category: Radiative Transfer
Keywords
atmospheric-science cpp radiative-transfer
Keywords from Contributors
atmospherice-science spoiler
Last synced: about 1 hour ago
JSON representation
Repository metadata
The Atmospheric Radiative Transfer Simulator
- Host: GitHub
- URL: https://github.com/atmtools/arts
- Owner: atmtools
- License: other
- Created: 2012-10-29T12:51:17.000Z (over 12 years ago)
- Default Branch: main
- Last Pushed: 2025-04-03T13:51:56.000Z (24 days ago)
- Last Synced: 2025-04-25T14:44:25.973Z (2 days ago)
- Topics: atmospheric-science, cpp, radiative-transfer
- Language: C++
- Homepage: https://www.radiativetransfer.org/
- Size: 256 MB
- Stars: 72
- Watchers: 10
- Forks: 31
- Open Issues: 20
- Releases: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES-2.2
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
- Authors: AUTHORS
README.md
[!CAUTION]
This branch is under heavy development. Many features are missing or not fully implemented.
If you are not an ARTS developer, you might want to stay away.
Welcome to ARTS
ARTS is free software. Please see the file COPYING for details.
If you use data generated by ARTS in a scientific publication, then please
mention this and cite the most appropriate of the ARTS publications that are
summarized on http://www.radiativetransfer.org/docs/
CONTRIBUTING.md provides information on contributing
to ARTS on GitHub.
For documentation, please see the files in the doc subdirectory.
For building and installation instructions please read below.
Dependencies
Build Prerequisites (provided by Miniforge3):
See the platform-dependent environment-dev-{linux,mac,win}.yml
file for all requirements.
Building ARTS
The following instructions assume that you are using Miniforge3 as a build environment. The installer is available at
the project's Github page.
Use the provided environment-dev-{linux,mac,win}.yml
files to install
all required dependencies into your current conda environment.
Optionally, a separate environment for development can be created, if you want to keep your current environment clean:
mamba create -n pyarts-dev
mamba activate pyarts-dev
Install dependencies on Linux:
mamba env update -f environment-dev-linux.yml
Install dependencies on macOS:
mamba env update -f environment-dev-mac.yml
Install dependencies on Windows:
mamba env update -f environment-dev-win.yml
Next, follow these steps to use cmake
to build ARTS:
cd arts
cmake --preset=default-gcc-conda # On macOS use default-clang-conda, on windows use default-msvc-conda
cmake --build build -jX
X is the number of parallel build processes.
X=Number of Cores gives you usually the fastest compilation time.
WARNING: The compilation is very memory intensive. If you have 16GB of RAM,
don't use more than 6-8 cores. With 8GB, don't use more than 2-3 cores.
Development install of the PyARTS Python package:
python3 -m pip install --user -e build/python
You only have to do the python package install once.
If the ARTS source has changed, update the PyARTS package by running:
cmake --build build -jX --target pyarts
Build configurations
By default, ARTS is built in release mode with optimizations enabled and
assertions and debugging symbols turned off.
Whenever you change the configuration, remove your build directory first:
rm -rf build
To build with assertions and debugging symbols use:
cmake --preset=default-gcc-conda -DCMAKE_BUILD_TYPE=RelWithDebInfo
This configuration offers a good balance between performance and debugging
capabilities. Since this still optimizes out many variables, it can be
necessary for some debugging cases to turn off all optimizations. For those
cases, the full debug configuration can be enabled. Note that ARTS runs a lot
slower in this configuration:
cmake --preset=default-gcc-conda -DCMAKE_BUILD_TYPE=Debug
Installing PyARTS
To install the PyARTS Python package, you need to build it and install it with
pip. Create your build directory and configure ARTS with cmake as described in
the previous sections. Then, run the following commands inside your build
directory:
cmake --build build --target pyarts
python3 -m pip install --user -e build/python
This will not mess with your system's Python installation.
A link to the pyarts package is created in your home directory, usually
$HOME/.local/lib/python3.X/site-packages/pyarts.egg-link
.
You don't need to reinstall the package with pip after updating ARTS.
You only need to run cmake --build build --target pyarts
again.
Tests
'cmake --build build --target check' will run several test cases to ensure that
ARTS is working properly. Use 'check-all' to run all available controlfiles,
including computation time-intensive ones.
Some tests depend on the arts-xml-data package. cmake automatically looks if it
is available in the same location as ARTS itself. If necessary, a custom path
can be specified.
cmake --preset=default-gcc-conda -DARTS_XML_DATA_PATH=/home/myname/arts-xml-data
If arts-xml-data cannot be found, those tests are ignored.
By default, 4 tests are executed in parallel.
If you change the number of concurrently run test, you can add this option to your cmake --preset=....
call:
-DTEST_JOBS=X
X is the number of tests that should be started in parallel.
You can also use the ctest command directly to run the tests:
First, change to the build
directory:
cd build
This runs all test with 4 jobs concurrently:
ctest -j4
To run specific tests, use the -R option and specify part of the test case name
you want to run. The following command will run all tests that have 'ppath' in
their name, e.g. arts.ctlfile.fast.ppath1d ...:
ctest -R ppath
To see the output of ARTS, use the -V option:
ctest -V -R fast.doit
By default, ctest will not print any output from ARTS to the screen. The option
--output-on-failure can be passed to ctest to see output in the case an error
occurs. If you want to always enable this, you can set the environment variable
CTEST_OUTPUT_ON_FAILURE:
export CTEST_OUTPUT_ON_FAILURE=1
Native build
To squeeze out every last drop of performance, you can also build a version
specifically optimized for your machine's processor:
-DCMAKE_BUILD_TYPE=Native
This option should make the executable slightly faster, more so on better
systems, but not portable. Note that since this build-mode is meant for
fast-but-accurate computations, some IEEE rules will be ignored. For now only
complex computations are IEEE incompatible running this mode of build.
Optional features
Enable NetCDF: The basic matpack types can be read from NetCDF files, if NetCDF
support is enabled:
cmake --preset=default-gcc-conda -DENABLE_NETCDF=1
Precompiled headers: PCH can speed up builds significantly. However, it hampers
the ability for ccache to properly skip unnecessary compilations, potentially
increasing rebuild times. Tests have shown that it only speeds up the build
considerably for Clang, but not for GCC.
cmake --preset=default-clang-conda -DENABLE_PCH=1 ..
If you enable PCH and also use ccache, you need to set the CCACHE_SLOPPINESS
environment variable properly:
export CCACHE_SLOPPINESS=pch_defines,time_macros
Disabling features
Disable assertions: -DNO_ASSERT=1
Disable OpenMP: -DNO_OPENMP=1
Disable the built-in documentation server: -DNO_DOCSERVER=1
ccache support
The build utilizes ccache automatically when available, it can be
turned off with the option -DENABLE_CCACHE=0
For details see https://ccache.samba.org/
Valgrind profiling
The callgrind plugin included in valgrind is the recommended profiling method
for ARTS.
Certain things should be taken into account when calling ARTS with valgrind.
Since recursion (cycles) will lead to wrong profiling results it is
important to use the following settings to obtain profile data for ARTS:
valgrind --tool=callgrind --separate-callers=10 --separate-recs=3 arts -n1 ...
For detail on these options consult the valgrind manual:
http://valgrind.org/docs/manual/cl-manual.html#cl-manual.cycles
-n1 should be passed to ARTS because parallelisation can further scew the
results. Since executing a program in valgrind can lead to 50x slower
execution, it is recommended to create a dedicated, minimal controlfile for
profiling.
After execution with valgrind, the resulting callgrind.out.* file can be
opened in kcachegrind[1] for visualization. It is available as a package for
most Linux distributions.
Note that you don't have to do a full ARTS run. You can cancel the program
after some time when you think you have gathered enough statistics.
[1] https://kcachegrind.github.io/
Linux perf profiling
The Performance Counters for Linux offer a
convenient way to profile any program with basically no runtime overhead.
Profiling works for all configurations (Debug, RelWithDebInfo and Release). To
ensure that the calltree can be analyzed correctly, compile ARTS with frame
pointers. This has minimal impact on performance. Use the following preset to
enable this setting:
cmake --preset=perf-gcc-conda
Prepend the perf command to your arts call to record callgraph information:
perf record -g src/arts MYCONTROLFILE.arts
This can also be applied to any test case:
perf record -g ctest -R TestDOIT$
After recording, use the report command to display an interactive view of the
profiling information:
perf report -g graph,0.5,callees
This will show a reverse call tree with the percentage of time spent in each
function. The function tree can be expanded to expose the calling functions.
Owner metadata
- Name: atmtools
- Login: atmtools
- Email:
- Kind: organization
- Description:
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/17474833?v=4
- Repositories: 20
- Last ynced at: 2024-03-26T20:20:15.893Z
- Profile URL: https://github.com/atmtools
GitHub Events
Total
- Create event: 4
- Issues event: 9
- Release event: 4
- Watch event: 10
- Issue comment event: 38
- Push event: 66
- Pull request review event: 3
- Pull request review comment event: 2
- Pull request event: 155
- Fork event: 3
Last Year
- Create event: 4
- Issues event: 9
- Release event: 4
- Watch event: 10
- Issue comment event: 38
- Push event: 66
- Pull request review event: 3
- Pull request review comment event: 2
- Pull request event: 155
- Fork event: 3
Committers metadata
Last synced: 6 days ago
Total Commits: 9,738
Total Committers: 57
Avg Commits per committer: 170.842
Development Distribution Score (DDS): 0.766
Commits in past year: 617
Committers in past year: 5
Avg Commits per committer in past year: 123.4
Development Distribution Score (DDS) in past year: 0.386
Name | Commits | |
---|---|---|
olemke | o****e@a****9 | 2279 |
Richard Larsson | r****n@g****m | 2089 |
patrick | p****k@a****9 | 1238 |
Oliver Lemke | o****e@g****m | 1063 |
sbuehler | s****r@a****9 | 414 |
mendrok | m****k@a****9 | 377 |
richard | r****d@a****9 | 332 |
claudia | c****a@a****9 | 297 |
Manfred Brath | m****h@u****e | 242 |
Patrick Eriksson | p****n@c****e | 202 |
simonpf | s****f@a****9 | 157 |
Richard Larsson | l****n@m****e | 150 |
rekha | r****a@a****9 | 102 |
cory | c****y@a****9 | 98 |
Simon Pfreundschuh | s****h@c****e | 97 |
ekstrom | e****m@a****9 | 87 |
nkoulev | n****v@a****9 | 79 |
Stuart Fox | s****x@m****k | 34 |
gerrit | g****t@a****9 | 34 |
Simon Pfreundschuh | s****h@g****m | 33 |
axel | a****l@a****9 | 33 |
Jon | j****n@w****e | 31 |
Richard Larsson | r****b@g****m | 27 |
tkuhn | t****n@a****9 | 26 |
cmels | c****s@a****9 | 24 |
carlos | c****s@a****9 | 24 |
daniel | d****l@a****9 | 14 |
Stefan Buehler | s****r@u****e | 13 |
viju | v****u@a****9 | 12 |
claas | c****s@a****9 | 12 |
and 27 more... |
Committer domains:
- chalmers.se: 3
- uni-hamburg.de: 2
- dioptase.rss.chalmers.se: 1
- gmx.de: 1
- metoffice.gov.uk: 1
- mps.mpg.de: 1
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 104
Total pull requests: 843
Average time to close issues: 6 months
Average time to close pull requests: 7 days
Total issue authors: 19
Total pull request authors: 16
Average comments per issue: 2.76
Average comments per pull request: 1.04
Merged pull request: 812
Bot issues: 0
Bot pull requests: 0
Past year issues: 9
Past year pull requests: 176
Past year average time to close issues: 7 days
Past year average time to close pull requests: 1 day
Past year issue authors: 7
Past year pull request authors: 6
Past year average comments per issue: 1.44
Past year average comments per pull request: 0.16
Past year merged pull request: 165
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- erikssonpatrick (27)
- riclarsson (23)
- olemke (21)
- simonpf (7)
- stefanbuehler (5)
- nuitlejour (5)
- Shaofei-Wang224 (2)
- j-petersen (2)
- m-brath (2)
- brianmapes (1)
- mesghohestany (1)
- kvngvikram (1)
- mignonph75 (1)
- miikama (1)
- DonteRW (1)
Top Pull Request Authors
- olemke (413)
- riclarsson (308)
- m-brath (33)
- erikssonpatrick (30)
- simonpf (22)
- stefanbuehler (8)
- stuartfox (6)
- j-petersen (6)
- Smpljack (4)
- gongxunhlj (3)
- vbarl (2)
- lkluft (2)
- obobryshev (2)
- Shaofei-Wang224 (2)
- JakobDeutloff (1)
Top Issue Labels
- bug (40)
- enhancement (20)
- documentation (9)
- feature (6)
- discussion (4)
- question (3)
- API changes (2)
- help wanted (2)
Top Pull Request Labels
- bug (5)
- examples (4)
- enhancement (3)
- in progress (2)
- documentation (2)
- 2.6 (2)
Package metadata
- Total packages: 2
-
Total downloads:
- pypi: 37 last-month
- Total dependent packages: 1 (may contain duplicates)
- Total dependent repositories: 1 (may contain duplicates)
- Total versions: 28
- Total maintainers: 2
proxy.golang.org: github.com/atmtools/arts
- Homepage:
- Documentation: https://pkg.go.dev/github.com/atmtools/arts#section-documentation
- Licenses: gpl-2.0
- Latest release: v2.6.14+incompatible (published 3 months ago)
- Last Synced: 2025-04-26T14:42:34.813Z (1 day ago)
- Versions: 14
- Dependent Packages: 0
- Dependent Repositories: 0
-
Rankings:
- Dependent packages count: 6.999%
- Average: 8.173%
- Dependent repos count: 9.346%
pypi.org: pyarts
PyARTS, the Python interface for ARTS
- Homepage: https://github.com/atmtools/arts
- Documentation: https://pyarts.readthedocs.io/
- Licenses: MIT
- Latest release: 2.4.0 (published over 4 years ago)
- Last Synced: 2025-04-26T14:42:34.600Z (1 day ago)
- Versions: 14
- Dependent Packages: 1
- Dependent Repositories: 1
- Downloads: 37 Last month
-
Rankings:
- Dependent packages count: 3.238%
- Forks count: 7.305%
- Stargazers count: 9.073%
- Average: 14.111%
- Dependent repos count: 22.058%
- Downloads: 28.879%
- Maintainers (2)
Dependencies
- numpy *
- actions/checkout v1 composite
- actions/setup-python v4 composite
- ./actions/pypi * composite
- actions/checkout v2 composite
- Dockerfile * docker
- quay.io/pypa/manylinux2014_x86_64 latest build
- docutils *
- matplotlib >=1.4
- netCDF4 >=1.1.1
- numpy >=1.13
- scipy >=0.15.1
- setuptools >=0.7.2
Score: 12.278411911587899