diff --git a/.github/workflows/gitlab_ci.yml b/.github/workflows/gitlab_ci.yml.disabled similarity index 91% rename from .github/workflows/gitlab_ci.yml rename to .github/workflows/gitlab_ci.yml.disabled index cd4db093e9..048fae8dfa 100644 --- a/.github/workflows/gitlab_ci.yml +++ b/.github/workflows/gitlab_ci.yml.disabled @@ -1,13 +1,27 @@ --- +# WORKFLOW DISABLED +# This workflow has been disabled to prevent skipped check runs from appearing in pull requests. +# The file has been renamed from gitlab_ci.yml to gitlab_ci.yml.disabled +# +# To re-enable this workflow: +# 1. Rename this file back to gitlab_ci.yml +# 2. Uncomment the desired triggers below (push, pull_request_target, schedule) +# +# Note: Even with only workflow_dispatch enabled, GitHub creates skipped check runs +# for the jobs when they have conditional 'if' statements that evaluate to false. + name: Mirror to Gitlab to trigger CI +# Disabled: GitLab mirror is temporarily disabled due to known issues +# To re-enable, uncomment the triggers below on: - push: - pull_request_target: - types: [opened, synchronize, reopened, labeled] - schedule: - - cron: '2 5 * * 1' + workflow_dispatch: # Manual trigger only + # push: + # pull_request_target: + # types: [opened, synchronize, reopened, labeled] + # schedule: + # - cron: '2 5 * * 1' jobs: check_permission: diff --git a/.github/workflows/postprocess.yml b/.github/workflows/postprocess.yml index f3ab464d04..f32b1179c2 100644 --- a/.github/workflows/postprocess.yml +++ b/.github/workflows/postprocess.yml @@ -4,7 +4,7 @@ name: Create Website for pySDC on: workflow_run: - workflows: ["Mirror to Gitlab to trigger CI"] + workflows: ["CI pipeline for pySDC"] types: ["completed"] jobs: diff --git a/README.md b/README.md index c5e8d09d30..1ed7cd1b36 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,7 @@ implemented. [PETSc](http://www.mcs.anl.gov/petsc/) (through [petsc4py](https://bitbucket.org/petsc/petsc4py)) - Continuous integration via [GitHub - Actions](https://github.com/Parallel-in-Time/pySDC/actions) and - [Gitlab CI](https://gitlab.hzdr.de/r.speck/pysdc/-/pipelines) (through the [GitHub2Gitlab Action](https://github.com/jakob-fritz/github2lab_action)) + Actions](https://github.com/Parallel-in-Time/pySDC/actions) - Fully compatible with Python 3.10 - 3.13, runs at least on Ubuntu ## Getting started diff --git a/docs/contrib/02_continuous_integration.md b/docs/contrib/02_continuous_integration.md index f2fc594dbe..2def2fd92a 100644 --- a/docs/contrib/02_continuous_integration.md +++ b/docs/contrib/02_continuous_integration.md @@ -112,6 +112,8 @@ pytest -v pySDC/tests ## Running CI on HPC from pull requests +> :warning: **Note:** The GitLab mirror integration is currently disabled due to technical issues. This section describes functionality that is temporarily unavailable. + By syncing the GitHub repository to a certain Gitlab instance, CI-Jobs can be run on HPC machines. This can be helpful for benchmarks or when running on accelerators that are not available as GitHub runners. For security and accounting reasons, a few extra steps are needed in order to run the contents of a pull request on HPC: diff --git a/pySDC/core/common.py b/pySDC/core/common.py index 2e2909afd2..8305e1fcf3 100644 --- a/pySDC/core/common.py +++ b/pySDC/core/common.py @@ -7,6 +7,7 @@ Module containing utility classe(s) from which inherit some of the pySDC base classes. """ + from pySDC.core.errors import ReadOnlyError diff --git a/pySDC/core/hooks.py b/pySDC/core/hooks.py index 5cb53adec0..760c24c48c 100644 --- a/pySDC/core/hooks.py +++ b/pySDC/core/hooks.py @@ -1,7 +1,6 @@ import logging from collections import namedtuple - # metadata with defaults meta_data = { 'process': None, diff --git a/pySDC/core/sweeper.py b/pySDC/core/sweeper.py index ab3af710e1..62129716c9 100644 --- a/pySDC/core/sweeper.py +++ b/pySDC/core/sweeper.py @@ -6,7 +6,6 @@ from pySDC.core.collocation import CollBase from pySDC.helpers.pysdc_helper import FrozenClass - # Organize QDeltaGenerator class in dict[type(QDeltaGenerator),set(str)] to retrieve aliases QDELTA_GENERATORS_ALIASES = {v: set() for v in set(QDELTA_GENERATORS.values())} for k, v in QDELTA_GENERATORS.items(): diff --git a/pySDC/helpers/fieldsIO.py b/pySDC/helpers/fieldsIO.py index 77ae205288..c64f883006 100644 --- a/pySDC/helpers/fieldsIO.py +++ b/pySDC/helpers/fieldsIO.py @@ -47,6 +47,7 @@ To use MPI collective writing, you need to call first the class methods :class:`Rectilinear.setupMPI` (cf their docstring). Also, `Rectilinear.setHeader` **must be given the global grids coordinates**, whether the code is run in parallel or not. """ + import os import numpy as np from typing import Type, TypeVar diff --git a/pySDC/helpers/testing.py b/pySDC/helpers/testing.py index bb31ddbef5..e67ed3e89e 100644 --- a/pySDC/helpers/testing.py +++ b/pySDC/helpers/testing.py @@ -5,6 +5,7 @@ Helpers module for testing utilities """ + import os import json import warnings diff --git a/pySDC/helpers/vtkIO.py b/pySDC/helpers/vtkIO.py index d4c10de29e..77c512337a 100644 --- a/pySDC/helpers/vtkIO.py +++ b/pySDC/helpers/vtkIO.py @@ -3,6 +3,7 @@ """ Helper functions for VTK files IO (to be used with Paraview or PyVista) """ + import os import vtk from vtkmodules.util import numpy_support diff --git a/pySDC/implementations/convergence_controller_classes/estimate_embedded_error.py b/pySDC/implementations/convergence_controller_classes/estimate_embedded_error.py index ff5714ac2a..465c152202 100644 --- a/pySDC/implementations/convergence_controller_classes/estimate_embedded_error.py +++ b/pySDC/implementations/convergence_controller_classes/estimate_embedded_error.py @@ -114,10 +114,8 @@ def estimate_embedded_error_serial(self, L): else: return comm.bcast(abs(L.uold[comm.rank + 1] - L.u[comm.rank + 1]), root=comm.size - 1) else: - raise NotImplementedError( - f"Don't know how to estimate embedded error for sweeper type \ -\"{self.params.sweeper_type}\"" - ) + raise NotImplementedError(f"Don't know how to estimate embedded error for sweeper type \ +\"{self.params.sweeper_type}\"") def setup_status_variables(self, controller, **kwargs): """ @@ -209,10 +207,8 @@ def post_iteration_processing(self, controller, S, **kwargs): None """ if len(S.levels) > 1 and len(controller.MS) > 1: - raise NotImplementedError( - "Embedded error estimate only works for serial multi-level or parallel single \ -level" - ) + raise NotImplementedError("Embedded error estimate only works for serial multi-level or parallel single \ +level") if S.status.iter > 0 or self.params.sweeper_type == "RK": if self.params.averaged: diff --git a/pySDC/implementations/convergence_controller_classes/estimate_extrapolation_error.py b/pySDC/implementations/convergence_controller_classes/estimate_extrapolation_error.py index 364603fbc0..5afbea99d9 100644 --- a/pySDC/implementations/convergence_controller_classes/estimate_extrapolation_error.py +++ b/pySDC/implementations/convergence_controller_classes/estimate_extrapolation_error.py @@ -139,10 +139,8 @@ def store_values(self, S, **kwargs): elif type(f) == mesh: self.prev.f[oldest_val] = f else: - raise DataError( - f"Unable to store f from datatype {type(f)}, extrapolation based error estimate only\ - works with types imex_mesh and mesh" - ) + raise DataError(f"Unable to store f from datatype {type(f)}, extrapolation based error estimate only\ + works with types imex_mesh and mesh") # store the rest of the values self.prev.u[oldest_val] = S.levels[0].u[-1] @@ -481,10 +479,8 @@ def post_iteration_processing(self, controller, S, **kwargs): elif type(lvl.f[0]) == mesh: f = [lvl.f[i] if self.coeff.f[i] else 0.0 for i in range(len(lvl.f) - 1)] else: - raise DataError( - f"Unable to store f from datatype {type(lvl.f[0])}, extrapolation based error estimate only\ - works with types imex_mesh and mesh" - ) + raise DataError(f"Unable to store f from datatype {type(lvl.f[0])}, extrapolation based error estimate only\ + works with types imex_mesh and mesh") # compute the error with the weighted sum if self.comm: diff --git a/pySDC/implementations/convergence_controller_classes/hotrod.py b/pySDC/implementations/convergence_controller_classes/hotrod.py index 23b4a6e92d..ebd8562fb1 100644 --- a/pySDC/implementations/convergence_controller_classes/hotrod.py +++ b/pySDC/implementations/convergence_controller_classes/hotrod.py @@ -82,10 +82,8 @@ def check_parameters(self, controller, params, description, **kwargs): str: Error message """ if self.params.HotRod_tol == np.inf: - controller.logger.warning( - "Hot Rod needs a detection threshold, which is now set to infinity, such that a \ -restart is never triggered!" - ) + controller.logger.warning("Hot Rod needs a detection threshold, which is now set to infinity, such that a \ +restart is never triggered!") if description["step_params"].get("restol", -1.0) >= 0: return ( diff --git a/pySDC/implementations/problem_classes/AllenCahn_2D_FD.py b/pySDC/implementations/problem_classes/AllenCahn_2D_FD.py index b074308d09..ee72a9bde7 100644 --- a/pySDC/implementations/problem_classes/AllenCahn_2D_FD.py +++ b/pySDC/implementations/problem_classes/AllenCahn_2D_FD.py @@ -7,7 +7,6 @@ from pySDC.helpers import problem_helper from pySDC.implementations.datatype_classes.mesh import mesh, imex_mesh, comp2_mesh - # http://www.personal.psu.edu/qud2/Res/Pre/dz09sisc.pdf diff --git a/pySDC/implementations/problem_classes/GeneralizedFisher_1D_PETSc.py b/pySDC/implementations/problem_classes/GeneralizedFisher_1D_PETSc.py index 4a98313824..c8cce4946e 100644 --- a/pySDC/implementations/problem_classes/GeneralizedFisher_1D_PETSc.py +++ b/pySDC/implementations/problem_classes/GeneralizedFisher_1D_PETSc.py @@ -179,7 +179,7 @@ def formFunction(self, snes, X, F): x = self.da.getVecArray(self.localX) f = self.da.getVecArray(F) mx = self.da.getSizes()[0] - (xs, xe) = self.da.getRanges()[0] + xs, xe = self.da.getRanges()[0] for i in range(xs, xe): if i == 0 or i == mx - 1: f[i] = x[i] @@ -211,7 +211,7 @@ def formJacobian(self, snes, X, J, P): P.zeroEntries() row = PETSc.Mat.Stencil() mx = self.da.getSizes()[0] - (xs, xe) = self.da.getRanges()[0] + xs, xe = self.da.getRanges()[0] for i in range(xs, xe): row.i = i row.field = 0 @@ -341,7 +341,7 @@ def __init__( # compute dx and get local ranges self.dx = (self.interval[1] - self.interval[0]) / (self.nvars - 1) - (self.xs, self.xe) = self.init.getRanges()[0] + self.xs, self.xe = self.init.getRanges()[0] # compute discretization matrix A and identity self.A = self.__get_A() @@ -401,7 +401,7 @@ def __get_A(self): row = PETSc.Mat.Stencil() col = PETSc.Mat.Stencil() mx = self.init.getSizes()[0] - (xs, xe) = self.init.getRanges()[0] + xs, xe = self.init.getRanges()[0] for i in range(xs, xe): row.i = i row.field = 0 @@ -447,7 +447,7 @@ def get_sys_mat(self, factor): row = PETSc.Mat.Stencil() col = PETSc.Mat.Stencil() mx = self.init.getSizes()[0] - (xs, xe) = self.init.getRanges()[0] + xs, xe = self.init.getRanges()[0] for i in range(xs, xe): row.i = i row.field = 0 diff --git a/pySDC/implementations/problem_classes/Piline.py b/pySDC/implementations/problem_classes/Piline.py index 310d7e8e1b..5f20adbd6d 100644 --- a/pySDC/implementations/problem_classes/Piline.py +++ b/pySDC/implementations/problem_classes/Piline.py @@ -148,10 +148,8 @@ def u_exact(self, t, u_init=None, t_init=None): if t > 0.0: if u_init is not None: if t_init is None: - raise ValueError( - 'Please supply `t_init` when you want to get the exact solution from a point that \ -is not 0!' - ) + raise ValueError('Please supply `t_init` when you want to get the exact solution from a point that \ +is not 0!') me = u_init else: t_init = 0.0 diff --git a/pySDC/implementations/problem_classes/generic_ND_FD.py b/pySDC/implementations/problem_classes/generic_ND_FD.py index 9ad3c82c26..da5b506752 100644 --- a/pySDC/implementations/problem_classes/generic_ND_FD.py +++ b/pySDC/implementations/problem_classes/generic_ND_FD.py @@ -3,6 +3,7 @@ """ Created on Sat Feb 11 22:39:30 2023 """ + import numpy as np import scipy.sparse as sp from scipy.sparse.linalg import gmres, spsolve, cg diff --git a/pySDC/implementations/problem_classes/odeScalar.py b/pySDC/implementations/problem_classes/odeScalar.py index ff2f5b2f6b..3adf496c67 100644 --- a/pySDC/implementations/problem_classes/odeScalar.py +++ b/pySDC/implementations/problem_classes/odeScalar.py @@ -10,6 +10,7 @@ on parallel computers. SIAM journal on scientific and statistical computing, 12(5), 1000-1028. """ + import numpy as np from pySDC.core.errors import ProblemError diff --git a/pySDC/implementations/problem_classes/odeSystem.py b/pySDC/implementations/problem_classes/odeSystem.py index a17393ede6..233e349b10 100644 --- a/pySDC/implementations/problem_classes/odeSystem.py +++ b/pySDC/implementations/problem_classes/odeSystem.py @@ -10,6 +10,7 @@ on parallel computers. SIAM journal on scientific and statistical computing, 12(5), 1000-1028. """ + import numpy as np from pySDC.core.errors import ProblemError diff --git a/pySDC/projects/AllenCahn_Bayreuth/tests/test_simple_forcing.py b/pySDC/projects/AllenCahn_Bayreuth/tests/test_simple_forcing.py index c44589d5ca..ad9e56972e 100644 --- a/pySDC/projects/AllenCahn_Bayreuth/tests/test_simple_forcing.py +++ b/pySDC/projects/AllenCahn_Bayreuth/tests/test_simple_forcing.py @@ -39,7 +39,7 @@ def test_main_parallel(): cmd = f"export PYTHONPATH=$PYTHONPATH:$(pwd); export HWLOC_HIDE_ERRORS=2; mpirun -np {nprocs} python pySDC/projects/AllenCahn_Bayreuth/run_simple_forcing_benchmark.py -n {nprocs}" p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, shell=True) p.wait() - (output, err) = p.communicate() + output, err = p.communicate() print(output) if err: warnings.warn(err) @@ -49,7 +49,7 @@ def test_main_parallel(): cmd = f"export PYTHONPATH=$PYTHONPATH:$(pwd); export HWLOC_HIDE_ERRORS=2; mpirun -np {nprocs} python pySDC/projects/AllenCahn_Bayreuth/run_simple_forcing_benchmark.py -n {nprocs}" p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True, shell=True) p.wait() - (output, err) = p.communicate() + output, err = p.communicate() print(output) if err: warnings.warn(err) diff --git a/pySDC/projects/Monodomain/problem_classes/TestODE.py b/pySDC/projects/Monodomain/problem_classes/TestODE.py index 291b7675b5..6c7c1a5196 100644 --- a/pySDC/projects/Monodomain/problem_classes/TestODE.py +++ b/pySDC/projects/Monodomain/problem_classes/TestODE.py @@ -5,7 +5,6 @@ from pySDC.implementations.datatype_classes.mesh import mesh from pySDC.projects.Monodomain.datatype_classes.my_mesh import imexexp_mesh - """ Here we define the problems classes for the multirate Dahlquist test equation y'=lambda_I*y + lambda_E*y + lambda_e*y Things are done so that it is compatible witht the sweepers. diff --git a/pySDC/projects/Resilience/collocation_adaptivity.py b/pySDC/projects/Resilience/collocation_adaptivity.py index 39089eb576..87478d5cff 100644 --- a/pySDC/projects/Resilience/collocation_adaptivity.py +++ b/pySDC/projects/Resilience/collocation_adaptivity.py @@ -16,7 +16,6 @@ from pySDC.implementations.hooks.log_errors import LogLocalErrorPostIter from pySDC.implementations.hooks.log_embedded_error_estimate import LogEmbeddedErrorEstimatePostIter - # define global parameters for running problems and plotting CMAP = list(TABLEAU_COLORS.values()) diff --git a/pySDC/projects/Resilience/fault_injection.py b/pySDC/projects/Resilience/fault_injection.py index a97ae07707..593c10fa89 100644 --- a/pySDC/projects/Resilience/fault_injection.py +++ b/pySDC/projects/Resilience/fault_injection.py @@ -189,10 +189,8 @@ def add_fault(self, args, rnd_args): elif type(self.random_generator) == np.random.RandomState: self.add_random_fault(args, rnd_args) else: - raise NotImplementedError( - f'Don\'t know how to add fault with generator of type \ -{type(self.random_generator)}' - ) + raise NotImplementedError(f'Don\'t know how to add fault with generator of type \ +{type(self.random_generator)}') def add_stored_faults(self): ''' @@ -335,10 +333,8 @@ def pre_run(self, step, level_number): super().pre_run(step, level_number) if not type(step.levels[level_number].u[0]) == mesh: - raise NotImplementedError( - f'Fault insertion is only implemented for type mesh, not \ -{type(step.levels[level_number].u[0])}' - ) + raise NotImplementedError(f'Fault insertion is only implemented for type mesh, not \ +{type(step.levels[level_number].u[0])}') dtype = step.levels[level_number].prob.u_exact(t=0).dtype if dtype in [float, np.float64]: diff --git a/pySDC/projects/Resilience/fault_stats.py b/pySDC/projects/Resilience/fault_stats.py index 2acdfb2243..f06fbb470c 100644 --- a/pySDC/projects/Resilience/fault_stats.py +++ b/pySDC/projects/Resilience/fault_stats.py @@ -1009,10 +1009,8 @@ def analyse_adaptivity(self, mask): # pragma: no cover print('-------+-----+------+------+----------+----------+----------+----------') for i in index: e_em, e_glob = self.analyse_adaptivity_single(int(i)) - print( - f' {i:5d} | {dat["bit"][i]:3.0f} | {dat["node"][i]:4.0f} | {dat["iteration"][i]:4.0f} | {e_em[1]:.2e}\ - | {e_em[0]:.2e} | {e_glob[1]:.2e} | {e_glob[0]:.2e}' - ) + print(f' {i:5d} | {dat["bit"][i]:3.0f} | {dat["node"][i]:4.0f} | {dat["iteration"][i]:4.0f} | {e_em[1]:.2e}\ + | {e_em[0]:.2e} | {e_glob[1]:.2e} | {e_glob[0]:.2e}') e_tol = AdaptivityStrategy().get_custom_description(self.prob, self.num_procs)['convergence_controllers'][ Adaptivity @@ -1070,21 +1068,15 @@ def analyse_HotRod(self, mask): # pragma: no cover dat = self.load() # make a header - print( - ' run | bit | node | iter | e_ex^* | e_ex | e_em^* | e_em | diff* | diff | e_glob^* \ -| e_glob ' - ) - print( - '-------+-----+------+------+----------+----------+----------+----------+----------+----------+----------\ -+----------' - ) + print(' run | bit | node | iter | e_ex^* | e_ex | e_em^* | e_em | diff* | diff | e_glob^* \ +| e_glob ') + print('-------+-----+------+------+----------+----------+----------+----------+----------+----------+----------\ ++----------') for i in index: e_em, e_ex, e_glob = self.analyse_HotRod_single(int(i)) - print( - f' {i:5d} | {dat["bit"][i]:3.0f} | {dat["node"][i]:4.0f} | {dat["iteration"][i]:4.0f} | {e_ex[1]:.2e}\ + print(f' {i:5d} | {dat["bit"][i]:3.0f} | {dat["node"][i]:4.0f} | {dat["iteration"][i]:4.0f} | {e_ex[1]:.2e}\ | {e_ex[0]:.2e} | {e_em[1]:.2e} | {e_em[0]:.2e} | {abs(e_em[1]-e_ex[1]):.2e} | {abs(e_em[0]-e_ex[0]):.2e} | \ -{e_glob[1]:.2e} | {e_glob[0]:.2e}' - ) +{e_glob[1]:.2e} | {e_glob[0]:.2e}') tol = HotRodStrategy().get_custom_description(self.prob, self.num_procs)['convergence_controllers'][HotRod][ 'HotRod_tol' diff --git a/pySDC/projects/Resilience/hook.py b/pySDC/projects/Resilience/hook.py index 47252a6fbb..e1d4d6bb07 100644 --- a/pySDC/projects/Resilience/hook.py +++ b/pySDC/projects/Resilience/hook.py @@ -4,7 +4,6 @@ from pySDC.implementations.hooks.log_extrapolated_error_estimate import LogExtrapolationErrorEstimate from pySDC.implementations.hooks.log_step_size import LogStepSize - hook_collection = [LogSolution, LogEmbeddedErrorEstimate, LogExtrapolationErrorEstimate, LogStepSize] diff --git a/pySDC/projects/Resilience/paper_plots.py b/pySDC/projects/Resilience/paper_plots.py index 2095c9e5ed..4e3de96d6f 100644 --- a/pySDC/projects/Resilience/paper_plots.py +++ b/pySDC/projects/Resilience/paper_plots.py @@ -26,7 +26,6 @@ from pySDC.helpers.plot_helper import setup_mpl, figsize_by_journal from pySDC.helpers.stats_helper import get_sorted - cm = 1 / 2.5 TEXTWIDTH = 11.9446244611 * cm JOURNAL = 'Springer_Numerical_Algorithms' diff --git a/pySDC/projects/Resilience/strategies.py b/pySDC/projects/Resilience/strategies.py index 134356331d..3f09a90477 100644 --- a/pySDC/projects/Resilience/strategies.py +++ b/pySDC/projects/Resilience/strategies.py @@ -609,10 +609,8 @@ def get_custom_description(self, problem, num_procs): e_tol = 1e-5 else: - raise NotImplementedError( - 'I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ - strategy' - ) + raise NotImplementedError('I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ + strategy') custom_description['convergence_controllers'][Adaptivity] = { 'e_tol': e_tol, @@ -754,10 +752,8 @@ def get_custom_description(self, problem, num_procs): maxiter = 4 HotRod_tol = 2e-6 else: - raise NotImplementedError( - 'I don\'t have a tolerance for adaptive Hot Rod for your problem. Please add one \ -to the strategy' - ) + raise NotImplementedError('I don\'t have a tolerance for adaptive Hot Rod for your problem. Please add one \ +to the strategy') no_storage = num_procs > 1 @@ -846,10 +842,8 @@ def get_custom_description(self, problem, num_procs): elif problem.__name__ == "run_GS": restol = 1e-4 else: - raise NotImplementedError( - 'I don\'t have a residual tolerance for your problem. Please add one to the \ -strategy' - ) + raise NotImplementedError('I don\'t have a residual tolerance for your problem. Please add one to the \ +strategy') custom_description = { 'step_params': {'maxiter': 99}, @@ -1047,10 +1041,8 @@ def get_custom_description(self, problem, num_procs): HotRod_tol = 3.22e-5 maxiter = 6 else: - raise NotImplementedError( - 'I don\'t have a tolerance for Hot Rod for your problem. Please add one to the\ - strategy' - ) + raise NotImplementedError('I don\'t have a tolerance for Hot Rod for your problem. Please add one to the\ + strategy') no_storage = False # num_procs > 1 @@ -1175,10 +1167,8 @@ def get_custom_description(self, problem, num_procs): elif problem.__name__ == "run_AC": e_tol = 1e-4 else: - raise NotImplementedError( - 'I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ - strategy' - ) + raise NotImplementedError('I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ + strategy') custom_description['convergence_controllers'] = { AdaptivityCollocation: { @@ -1975,10 +1965,8 @@ def get_custom_description(self, problem, num_procs): elif problem.__name__ == "run_AC": e_tol = 1e-4 else: - raise NotImplementedError( - 'I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ - strategy' - ) + raise NotImplementedError('I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ + strategy') custom_description['convergence_controllers'] = { AdaptivityExtrapolationWithinQ: { @@ -2104,10 +2092,8 @@ def get_custom_description(self, problem, num_procs): restol_max = 1e-4 restol_min = 1e-9 else: - raise NotImplementedError( - 'I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ - strategy' - ) + raise NotImplementedError('I don\'t have a tolerance for adaptivity for your problem. Please add one to the\ + strategy') custom_description['convergence_controllers'] = { AdaptivityPolynomialError: { diff --git a/pySDC/projects/Second_orderSDC/harmonic_oscillator_run_stability.py b/pySDC/projects/Second_orderSDC/harmonic_oscillator_run_stability.py index 3f0e7325cd..8d7627fd1b 100644 --- a/pySDC/projects/Second_orderSDC/harmonic_oscillator_run_stability.py +++ b/pySDC/projects/Second_orderSDC/harmonic_oscillator_run_stability.py @@ -1,7 +1,6 @@ from pySDC.projects.Second_orderSDC.harmonic_oscillator_params import get_default_harmonic_oscillator_description from pySDC.projects.Second_orderSDC.stability_simulation import StabilityImplementation - if __name__ == '__main__': """ To implement Stability region for the Harmonic Oscillator problem diff --git a/pySDC/projects/Second_orderSDC/tests/test_convergence.py b/pySDC/projects/Second_orderSDC/tests/test_convergence.py index a459cb269f..0029ad5430 100644 --- a/pySDC/projects/Second_orderSDC/tests/test_convergence.py +++ b/pySDC/projects/Second_orderSDC/tests/test_convergence.py @@ -1,6 +1,5 @@ import pytest - METHODS = ['RKN', 'Velocity_Verlet'] diff --git a/pySDC/projects/TOMS/AllenCahn_contracting_circle.py b/pySDC/projects/TOMS/AllenCahn_contracting_circle.py index a47c490135..d0e0912133 100644 --- a/pySDC/projects/TOMS/AllenCahn_contracting_circle.py +++ b/pySDC/projects/TOMS/AllenCahn_contracting_circle.py @@ -20,7 +20,6 @@ from pySDC.implementations.sweeper_classes.multi_implicit import multi_implicit from pySDC.projects.TOMS.AllenCahn_monitor import monitor - # http://www.personal.psu.edu/qud2/Res/Pre/dz09sisc.pdf diff --git a/pySDC/projects/deprecated/node_failure/postproc_hard_faults_test.py b/pySDC/projects/deprecated/node_failure/postproc_hard_faults_test.py index 3fbfe74567..7b70bb5775 100644 --- a/pySDC/projects/deprecated/node_failure/postproc_hard_faults_test.py +++ b/pySDC/projects/deprecated/node_failure/postproc_hard_faults_test.py @@ -2,7 +2,6 @@ import numpy as np from pylab import rcParams - # import os diff --git a/pySDC/projects/parallelSDC/AllenCahn_parallel.py b/pySDC/projects/parallelSDC/AllenCahn_parallel.py index f39f1a8222..d01f9fd96b 100644 --- a/pySDC/projects/parallelSDC/AllenCahn_parallel.py +++ b/pySDC/projects/parallelSDC/AllenCahn_parallel.py @@ -14,7 +14,6 @@ from pySDC.implementations.transfer_classes.BaseTransferMPI import base_transfer_MPI from pySDC.implementations.sweeper_classes.generic_implicit_MPI import generic_implicit_MPI - # http://www.personal.psu.edu/qud2/Res/Pre/dz09sisc.pdf diff --git a/pySDC/projects/parallelSDC_reloaded/allenCahn_accuracy.py b/pySDC/projects/parallelSDC_reloaded/allenCahn_accuracy.py index d3fe676c31..9603899010 100644 --- a/pySDC/projects/parallelSDC_reloaded/allenCahn_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/allenCahn_accuracy.py @@ -10,6 +10,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/allenCahn_setup.py b/pySDC/projects/parallelSDC_reloaded/allenCahn_setup.py index 82a80ffe24..83d74e0062 100644 --- a/pySDC/projects/parallelSDC_reloaded/allenCahn_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/allenCahn_setup.py @@ -5,6 +5,7 @@ Setup script for the Allen-Cahn problem """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/chemicalReaction_accuracy.py b/pySDC/projects/parallelSDC_reloaded/chemicalReaction_accuracy.py index 2566daaf5b..97d21f8ca1 100644 --- a/pySDC/projects/parallelSDC_reloaded/chemicalReaction_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/chemicalReaction_accuracy.py @@ -11,6 +11,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/chemicalReaction_setup.py b/pySDC/projects/parallelSDC_reloaded/chemicalReaction_setup.py index 9f9b8c055c..023219343b 100644 --- a/pySDC/projects/parallelSDC_reloaded/chemicalReaction_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/chemicalReaction_setup.py @@ -5,6 +5,7 @@ Setup script for the Chemical Reaction problem """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/convergence.py b/pySDC/projects/parallelSDC_reloaded/convergence.py index 8db023b16e..4ba4b9e243 100644 --- a/pySDC/projects/parallelSDC_reloaded/convergence.py +++ b/pySDC/projects/parallelSDC_reloaded/convergence.py @@ -5,6 +5,7 @@ Generate convergence plots on Dahlquist for SDC with given parameters """ + import numpy as np from pySDC.projects.parallelSDC_reloaded.utils import getParamsRK, getParamsSDC, solutionSDC, plt diff --git a/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_accuracy.py b/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_accuracy.py index 4012c0ca82..e938fe907e 100644 --- a/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_accuracy.py @@ -10,6 +10,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_setup.py b/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_setup.py index 8c5cd5f3fd..b3df96abaa 100644 --- a/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_setup.py @@ -5,6 +5,7 @@ Setup script for the JacobianElliptic problem """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/kaps_accuracy.py b/pySDC/projects/parallelSDC_reloaded/kaps_accuracy.py index 1c9ab079d1..ecbed6c183 100644 --- a/pySDC/projects/parallelSDC_reloaded/kaps_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/kaps_accuracy.py @@ -11,6 +11,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/kaps_setup.py b/pySDC/projects/parallelSDC_reloaded/kaps_setup.py index 68ce5e53b0..d4fe1c052b 100644 --- a/pySDC/projects/parallelSDC_reloaded/kaps_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/kaps_setup.py @@ -5,6 +5,7 @@ Setup script for the Kaps problem """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/lorenz_accuracy.py b/pySDC/projects/parallelSDC_reloaded/lorenz_accuracy.py index 9482ceb745..8cdc9da01f 100644 --- a/pySDC/projects/parallelSDC_reloaded/lorenz_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/lorenz_accuracy.py @@ -10,6 +10,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/lorenz_setup.py b/pySDC/projects/parallelSDC_reloaded/lorenz_setup.py index 86b651c510..29b147c627 100644 --- a/pySDC/projects/parallelSDC_reloaded/lorenz_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/lorenz_setup.py @@ -5,6 +5,7 @@ Script to numerically compute number revolution periods for the Lorenz system """ + import numpy as np from scipy import signal import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/nilpotency.py b/pySDC/projects/parallelSDC_reloaded/nilpotency.py index d79c2297f7..e1ee9ff487 100644 --- a/pySDC/projects/parallelSDC_reloaded/nilpotency.py +++ b/pySDC/projects/parallelSDC_reloaded/nilpotency.py @@ -6,6 +6,7 @@ Evaluate the nilpotency of diagonal preconditioners MIN-SR-S and MIN-SR-NS with increasing number of nodes. """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_accuracy.py b/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_accuracy.py index 27bcfe67ba..642aac8b9e 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_accuracy.py @@ -11,6 +11,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_setup.py b/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_setup.py index 19c5baa4ed..70d5af1ecd 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_setup.py @@ -6,6 +6,7 @@ Setup script for the ProtheroRobinson (linear and non-linear) problem, using the autonomous formulation """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/protheroRobinson_accuracy.py b/pySDC/projects/parallelSDC_reloaded/protheroRobinson_accuracy.py index b5f3e2d0b5..40ea217478 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinson_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinson_accuracy.py @@ -11,6 +11,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/protheroRobinson_setup.py b/pySDC/projects/parallelSDC_reloaded/protheroRobinson_setup.py index ea60cd9664..54e8a46864 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinson_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinson_setup.py @@ -5,6 +5,7 @@ Setup script for the ProtheroRobinson (linear and non-linear) problem """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/scripts/fig01_conv.py b/pySDC/projects/parallelSDC_reloaded/scripts/fig01_conv.py index d3c8d7786a..0cf8d7ac99 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig01_conv.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig01_conv.py @@ -5,6 +5,7 @@ Convergence plots (on Dahlquist) for the article """ + import os import numpy as np diff --git a/pySDC/projects/parallelSDC_reloaded/scripts/fig02_stab.py b/pySDC/projects/parallelSDC_reloaded/scripts/fig02_stab.py index 625334d34c..718d8b0c58 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig02_stab.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig02_stab.py @@ -5,6 +5,7 @@ Stability plots (on Dahlquist) for the article """ + import os import numpy as np diff --git a/pySDC/projects/parallelSDC_reloaded/scripts/fig03_lorenz.py b/pySDC/projects/parallelSDC_reloaded/scripts/fig03_lorenz.py index b875281435..bc5f6f7e0f 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig03_lorenz.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig03_lorenz.py @@ -5,6 +5,7 @@ Figures with experiment on the Lorenz problem """ + import os import numpy as np import scipy as sp diff --git a/pySDC/projects/parallelSDC_reloaded/scripts/fig04_protheroRobinson.py b/pySDC/projects/parallelSDC_reloaded/scripts/fig04_protheroRobinson.py index 6a5e4555af..1535bd2b47 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig04_protheroRobinson.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig04_protheroRobinson.py @@ -5,6 +5,7 @@ Figures with experiment on the Prothero-Robinson problem """ + import os import numpy as np diff --git a/pySDC/projects/parallelSDC_reloaded/scripts/fig05_allenCahn.py b/pySDC/projects/parallelSDC_reloaded/scripts/fig05_allenCahn.py index dc8ee3a54c..a4ce6e579e 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig05_allenCahn.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig05_allenCahn.py @@ -5,6 +5,7 @@ Figures with experiments on the Allen-Cahn problem """ + import os import numpy as np diff --git a/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI.py b/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI.py index 6b1557b61c..11c86900c2 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI.py @@ -5,6 +5,7 @@ Figures with experiments on the Allen-Cahn problem (MPI runs) """ + import os import sys import json diff --git a/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI_plot.py b/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI_plot.py index 3294e21f4c..069499ce9b 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI_plot.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI_plot.py @@ -5,6 +5,7 @@ Figures with experiments on the Allen-Cahn problem (MPI runs) """ + import os import json import numpy as np diff --git a/pySDC/projects/parallelSDC_reloaded/stability.py b/pySDC/projects/parallelSDC_reloaded/stability.py index f83706ffaa..b4fd261ee3 100644 --- a/pySDC/projects/parallelSDC_reloaded/stability.py +++ b/pySDC/projects/parallelSDC_reloaded/stability.py @@ -5,6 +5,7 @@ Compute stability regions for SDC wit given parameters """ + import numpy as np from pySDC.projects.parallelSDC_reloaded.utils import getParamsRK, getParamsSDC, solutionSDC, plotStabContour, plt diff --git a/pySDC/projects/parallelSDC_reloaded/tests/test_parallelSDC_reloaded.py b/pySDC/projects/parallelSDC_reloaded/tests/test_parallelSDC_reloaded.py index ef2d6e6fec..8033f3b00b 100644 --- a/pySDC/projects/parallelSDC_reloaded/tests/test_parallelSDC_reloaded.py +++ b/pySDC/projects/parallelSDC_reloaded/tests/test_parallelSDC_reloaded.py @@ -5,6 +5,7 @@ Testing scripts for the parallel_SDC_reloaded project """ + import sys import pytest diff --git a/pySDC/projects/parallelSDC_reloaded/utils.py b/pySDC/projects/parallelSDC_reloaded/utils.py index 028d4029ac..61814240d8 100644 --- a/pySDC/projects/parallelSDC_reloaded/utils.py +++ b/pySDC/projects/parallelSDC_reloaded/utils.py @@ -5,6 +5,7 @@ Utility functions to investigate parallel SDC on non-linear problems """ + import os import json import numpy as np diff --git a/pySDC/projects/parallelSDC_reloaded/vanderpol_accuracy.py b/pySDC/projects/parallelSDC_reloaded/vanderpol_accuracy.py index d0d9eb9871..3daded469d 100644 --- a/pySDC/projects/parallelSDC_reloaded/vanderpol_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/vanderpol_accuracy.py @@ -11,6 +11,7 @@ Note : implementation in progress ... """ + import numpy as np import matplotlib.pyplot as plt diff --git a/pySDC/projects/parallelSDC_reloaded/vanderpol_setup.py b/pySDC/projects/parallelSDC_reloaded/vanderpol_setup.py index 80503af764..09b1db74e9 100644 --- a/pySDC/projects/parallelSDC_reloaded/vanderpol_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/vanderpol_setup.py @@ -6,6 +6,7 @@ Script to numerically determine periods of Van der Pol oscillation for different mu parameters. """ + import numpy as np from scipy import signal import matplotlib.pyplot as plt diff --git a/pySDC/tests/test_2d_fd_accuracy.py b/pySDC/tests/test_2d_fd_accuracy.py index 3661f1073e..cfddd69927 100644 --- a/pySDC/tests/test_2d_fd_accuracy.py +++ b/pySDC/tests/test_2d_fd_accuracy.py @@ -2,7 +2,6 @@ import pytest import numpy as np - # setup id for gathering the results (will sort by nvars) ID = namedtuple('ID', 'nvars') diff --git a/pySDC/tests/test_helpers/test_testing.py b/pySDC/tests/test_helpers/test_testing.py index 7e9c29650e..cee96c3a00 100644 --- a/pySDC/tests/test_helpers/test_testing.py +++ b/pySDC/tests/test_helpers/test_testing.py @@ -3,6 +3,7 @@ """ Created on Fri Feb 9 20:14:06 2024 """ + import os import warnings import pytest diff --git a/pySDC/tests/test_transfer_classes/test_mesh_to_mesh.py b/pySDC/tests/test_transfer_classes/test_mesh_to_mesh.py index ecb76ba69c..3dd026c042 100644 --- a/pySDC/tests/test_transfer_classes/test_mesh_to_mesh.py +++ b/pySDC/tests/test_transfer_classes/test_mesh_to_mesh.py @@ -2,7 +2,6 @@ import pytest import numpy as np - # setup id for gathering the results (will sort by nvars) ID = namedtuple('ID', ('nvars_fine', 'iorder')) diff --git a/pySDC/tutorial/step_7/A_pySDC_with_FEniCS.py b/pySDC/tutorial/step_7/A_pySDC_with_FEniCS.py index 7371c6a94c..cf3ef20c85 100644 --- a/pySDC/tutorial/step_7/A_pySDC_with_FEniCS.py +++ b/pySDC/tutorial/step_7/A_pySDC_with_FEniCS.py @@ -156,12 +156,12 @@ def run_variants(variant=None, ml=None, num_procs=None): if num_procs == 1: assert np.mean(niters) <= 6.0, 'Mean number of iterations is too high, got %s' % np.mean(niters) if variant == 'mass' or variant == 'mass_inv': - assert err <= 1.14e-08, 'Error is too high, got %s' % err + assert err <= 1.15e-08, 'Error is too high, got %s' % err else: assert err <= 3.25e-07, 'Error is too high, got %s' % err else: assert np.mean(niters) <= 11.6, 'Mean number of iterations is too high, got %s' % np.mean(niters) - assert err <= 1.14e-08, 'Error is too high, got %s' % err + assert err <= 1.15e-08, 'Error is too high, got %s' % err f.write('\n') print() diff --git a/pySDC/tutorial/step_8/C_iteration_estimator.py b/pySDC/tutorial/step_8/C_iteration_estimator.py index 0244f46d79..544ed8561c 100644 --- a/pySDC/tutorial/step_8/C_iteration_estimator.py +++ b/pySDC/tutorial/step_8/C_iteration_estimator.py @@ -282,9 +282,7 @@ def run_simulations(type=None, ndim_list=None, Tend=None, nsteps_list=None, ml=F print(out) f.close() - assert np.isclose( - mean_number_of_iterations, np.mean(niters), atol=1e-2 - ), f'Expected \ + assert np.isclose(mean_number_of_iterations, np.mean(niters), atol=1e-2), f'Expected \ {mean_number_of_iterations:.2f} mean iterations, but got {np.mean(niters):.2f}'