Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 0 additions & 14 deletions .github/actions/build_and_check/action.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ permissions:

jobs:
deploy_docs:
runs-on: ubuntu-24.04
runs-on: ubuntu-26.04
if: ${{ github.repository == 'espressomd/espresso' }}
environment: deploy_documentation
steps:
Expand Down
45 changes: 30 additions & 15 deletions .github/workflows/push_pull.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,35 +24,42 @@ jobs:
- name: Install dependencies
run: |
echo '' > Brewfile
for dep in boost boost-mpi libomp fftw gsl ccache ninja; do echo "brew \"${dep}\"" >> Brewfile; done
for dep in boost boost-mpi libomp fftw gsl ccache ninja hdf5-mpi; do echo "brew \"${dep}\"" >> Brewfile; done
brew bundle check >/dev/null 2>&1 || brew bundle --verbose --no-upgrade
# set up Xcode compiler
echo "::group::List available Xcode compilers"
ls /Applications | grep Xcode
echo "::endgroup::"
sudo xcode-select -switch /Applications/Xcode_26.2.0.app
sudo xcode-select -switch /Applications/Xcode_26.6.0.app
# Python dependencies
python -m venv venv
. venv/bin/activate
python -m pip install -c requirements.txt cython numpy scipy packaging
deactivate
shell: bash
- name: Build and check
uses: ./.github/actions/build_and_check
run: |
if test -d venv; then . venv/bin/activate; fi
bash maintainer/CI/build_cmake.sh
env:
build_procs: 3
check_procs: 3
cmake_params: '-D ESPRESSO_TEST_NP=3'
myconfig: 'maxset'
with_ccache: 'true'
with_cuda: 'false'
with_hdf5: 'true'
with_fftw: 'true'
with_gsl: 'true'
with_walberla: 'true'
with_walberla_avx: 'false'
check_skip_long: 'true'
test_timeout: 800

debian:
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
container:
image: ghcr.io/espressomd/docker/debian:ab5bc64f5c3cc7330952f8b3bf321270ca53960c-base-layer
image: ghcr.io/espressomd/docker/debian:c6ad9809eed1d0e9f26f4968559b234ea3b8bf82-base-layer
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
Expand All @@ -70,7 +77,9 @@ jobs:
- name: Get runner specifications
run: lscpu | egrep 'Model name|Socket|Thread|NUMA|CPU\(s\)'
- name: Build and check
uses: ./.github/actions/build_and_check
run: |
if test -d venv; then . venv/bin/activate; fi
bash maintainer/CI/build_cmake.sh
env:
build_procs: 4
check_procs: 4
Expand All @@ -90,10 +99,10 @@ jobs:
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1

ubuntu:
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
if: ${{ github.repository == 'espressomd/espresso' }}
container:
image: ghcr.io/espressomd/docker/ubuntu-wo-dependencies:ab5bc64f5c3cc7330952f8b3bf321270ca53960c-base-layer
image: ghcr.io/espressomd/docker/ubuntu-wo-dependencies:c6ad9809eed1d0e9f26f4968559b234ea3b8bf82-base-layer
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
Expand All @@ -111,12 +120,14 @@ jobs:
- name: Get runner specifications
run: lscpu | egrep 'Model name|Socket|Thread|NUMA|CPU\(s\)'
- name: Build and check
uses: ./.github/actions/build_and_check
run: |
if test -d venv; then . venv/bin/activate; fi
bash maintainer/CI/build_cmake.sh
env:
build_procs: 4
check_procs: 4
CC: 'gcc-13'
CXX: 'g++-13'
CC: 'gcc-16'
CXX: 'g++-16'
myconfig: 'maxset'
with_ccache: 'true'
with_cuda: 'false'
Expand All @@ -132,10 +143,10 @@ jobs:
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM: 1

fedora:
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
if: ${{ github.repository == 'espressomd/espresso' }}
container:
image: ghcr.io/espressomd/docker/fedora:ab5bc64f5c3cc7330952f8b3bf321270ca53960c-base-layer
image: ghcr.io/espressomd/docker/fedora:c6ad9809eed1d0e9f26f4968559b234ea3b8bf82-base-layer
credentials:
username: ${{ github.actor }}
password: ${{ secrets.github_token }}
Expand All @@ -153,7 +164,9 @@ jobs:
- name: Get runner specifications
run: lscpu | egrep 'Model name|Socket|Thread|NUMA|CPU\(s\)'
- name: Build and check
uses: ./.github/actions/build_and_check
run: |
if test -d venv; then . venv/bin/activate; fi
bash maintainer/CI/build_cmake.sh
env:
build_procs: 4
check_procs: 4
Expand All @@ -170,4 +183,6 @@ jobs:
with_walberla: 'true'
with_walberla_avx: 'false'
with_stokesian_dynamics: 'true'
cmake_params: '-D CMAKE_CXX_STANDARD=23 -D CMAKE_INCLUDE_PATH=/usr/include/mpich-x86_64 -D CMAKE_PREFIX_PATH=/usr/lib64/mpich/lib/ -D ESPRESSO_TEST_NT=1'
check_skip_long: 'true'
test_timeout: 800
cmake_params: '-D CMAKE_CXX_STANDARD=26 -D CMAKE_INCLUDE_PATH=/usr/include/mpich-x86_64 -D CMAKE_PREFIX_PATH=/usr/lib64/mpich/lib/ -D ESPRESSO_TEST_NT=1'
4 changes: 2 additions & 2 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
image: ghcr.io/espressomd/docker/ubuntu:ab5bc64f5c3cc7330952f8b3bf321270ca53960c
image: ghcr.io/espressomd/docker/ubuntu:c6ad9809eed1d0e9f26f4968559b234ea3b8bf82

stages:
- prepare
Expand All @@ -16,7 +16,7 @@ stages:

.notification_job_template: &notification_job_definition
<<: *global_job_definition
image: ghcr.io/espressomd/docker/alpine:ab5bc64f5c3cc7330952f8b3bf321270ca53960c
image: ghcr.io/espressomd/docker/alpine:c6ad9809eed1d0e9f26f4968559b234ea3b8bf82
variables:
GET_SOURCES_ATTEMPTS: 3
dependencies: []
Expand Down
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1035,7 +1035,7 @@ if(ESPRESSO_BUILD_WITH_WALBERLA)
# cmake-format: off
FetchContent_Declare(
walberla
GIT_REPOSITORY https://i10git.cs.fau.de/walberla/walberla.git
GIT_REPOSITORY https://github.com/lssfau/walberla.git
GIT_TAG 3247aa73 # v7.2 with patches
)
# cmake-format: on
Expand Down Expand Up @@ -1108,7 +1108,7 @@ if(ESPRESSO_BUILD_WITH_CALIPER)
FetchContent_Declare(
caliper
GIT_REPOSITORY https://github.com/LLNL/Caliper.git
GIT_TAG v2.14.0
GIT_TAG v2.15.0
)
# cmake-format: on
set(CALIPER_OPTION_PREFIX on CACHE BOOL "")
Expand Down
7 changes: 5 additions & 2 deletions src/script_interface/tests/AutoParameters_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@

#include "script_interface/auto_parameters/AutoParameters.hpp"

#include <algorithm>
#include <string_view>
#include <variant>

using ScriptInterface::AutoParameters;
Expand All @@ -34,13 +36,14 @@ struct A : AutoParameters<A> {
};

BOOST_AUTO_TEST_CASE(basic) {
using namespace std::literals;
A a{0, 42};

auto const &parameters = a.valid_parameters();

BOOST_CHECK(parameters.size() == 2u);
BOOST_CHECK(std::ranges::find(parameters, "i") != parameters.end());
BOOST_CHECK(std::ranges::find(parameters, "j") != parameters.end());
BOOST_CHECK(std::ranges::find(parameters, "i"sv) != parameters.end());
BOOST_CHECK(std::ranges::find(parameters, "j"sv) != parameters.end());

BOOST_CHECK(0 == std::get<int>(a.get_parameter("i")));
BOOST_CHECK(42 == std::get<int>(a.get_parameter("j")));
Expand Down
2 changes: 1 addition & 1 deletion testsuite/python/caliper.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def test_runtime_report(self):
if not line.startswith("WARNING:"):
lines = lines[i:]
break
header = "Path\tMin time/rank\tMax time/rank\tAvg time/rank\tTime %"
header = "Path\tMin time/rank\tAvg time/rank\tMax time/rank\tTime %"
self.assertEqual(lines[0].split(), header.split(),
msg=f"Caliper summary should start with '{header}'")
labels = [line[:36].rstrip() for line in lines[1:]]
Expand Down
2 changes: 1 addition & 1 deletion testsuite/python/integrator_exceptions.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,7 +273,7 @@ def test_temperature_change(self):
self.system.thermostat.set_langevin(kT=1., gamma=1., seed=42)
self.system.thermostat.set_langevin(kT=2., gamma=1., seed=42)
self.system.thermostat.set_brownian(kT=2., gamma=1., seed=42)
with self.assertRaisesRegex(RuntimeError, "Cannot set parameter 'kT' to 1.0*: there are currently active thermostats with kT=2.0*"):
with self.assertRaisesRegex(RuntimeError, "Cannot set parameter 'kT' to 1[.0]*: there are currently active thermostats with kT=2[.0]*"):
self.system.thermostat.set_brownian(kT=1., gamma=1., seed=42)
with self.assertRaisesRegex(RuntimeError, f"Parameter 'kT' is read-only"):
self.system.thermostat.kT = 2.
Expand Down
6 changes: 3 additions & 3 deletions testsuite/python/lb.py
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,7 @@ def test_temperature_mismatch(self):
self.system.thermostat.set_langevin(kT=2., seed=23, gamma=2.)
lbf = self.lb_class(kT=1., seed=42, **self.params, **self.lb_params)
self.system.lb = lbf
with self.assertRaisesRegex(RuntimeError, "Cannot set parameter 'kT' to 1.0*: there are currently active thermostats with kT=2.0*"):
with self.assertRaisesRegex(RuntimeError, r"Cannot set parameter 'kT' to (1[.0]*|0\.99[0-9]+): there are currently active thermostats with kT=(2[.0]*|1\.99[0-9]+)"):
self.system.thermostat.set_lb(LB_fluid=lbf, seed=23, gamma=2.)
self.assertFalse(self.system.thermostat.lb.is_active)
self.assertTrue(self.system.thermostat.langevin.is_active)
Expand Down Expand Up @@ -869,9 +869,9 @@ def params_with_tau(tau):
self.lb_class(**params_with_tau(self.system.time_step),
**self.lb_params)

with self.assertRaisesRegex(ValueError, r"LB tau \(0\.0100[0-9]+\) must be >= MD time_step \(0\.0200[0-9]+\)"):
with self.assertRaisesRegex(ValueError, r"LB tau \(0\.01(?:0*|00[0-9]+)\) must be >= MD time_step \(0\.02(?:0*|00[0-9]+)\)"):
self.system.time_step = 2.0 * lbf.get_params()["tau"]
with self.assertRaisesRegex(ValueError, r"LB tau \(0\.0100[0-9]+\) must be an integer multiple of the MD time_step \(0\.0080[0-9]+\)"):
with self.assertRaisesRegex(ValueError, r"LB tau \(0\.01(?:0*|00[0-9]+)\) must be an integer multiple of the MD time_step \(0\.008(?:0*|0[0-9]+)\)"):
self.system.time_step = 0.8 * lbf.get_params()["tau"]

self.system.lb = None
Expand Down
4 changes: 2 additions & 2 deletions testsuite/python/reaction_methods_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,15 +349,15 @@ def test_exceptions(self):
with self.assertRaisesRegex(ValueError, "Invalid value for 'exclusion_range'"):
espressomd.reaction_methods.ReactionEnsemble(
kT=1., seed=12, exclusion_range=-1.)
with self.assertRaisesRegex(ValueError, "Invalid excluded_radius value for type 1: radius -0.10"):
with self.assertRaisesRegex(ValueError, r"Invalid excluded_radius value for type 1: radius -0\.1[0]*"):
espressomd.reaction_methods.ReactionEnsemble(
kT=1., seed=12, exclusion_range=1., exclusion_radius_per_type={1: -0.1})
with self.assertRaisesRegex(ValueError, "Unknown search algorithm 'unknown'"):
espressomd.reaction_methods.ReactionEnsemble(
kT=1., seed=12, exclusion_range=1., search_algorithm="unknown")
method = espressomd.reaction_methods.ReactionEnsemble(
kT=1., exclusion_range=1., seed=12, exclusion_radius_per_type={1: 0.1})
with self.assertRaisesRegex(ValueError, "Invalid excluded_radius value for type 2: radius -0.10"):
with self.assertRaisesRegex(ValueError, r"Invalid excluded_radius value for type 2: radius -0\.1[0]*"):
method.exclusion_radius_per_type = {2: -0.1}
self.assertEqual(list(method.exclusion_radius_per_type.keys()), [1])

Expand Down
Loading