diff --git a/.github/workflows/gitlab_ci.yml b/.github/workflows/gitlab_ci.yml new file mode 100644 index 0000000000..cd4db093e9 --- /dev/null +++ b/.github/workflows/gitlab_ci.yml @@ -0,0 +1,222 @@ +--- + +name: Mirror to Gitlab to trigger CI + +on: + push: + pull_request_target: + types: [opened, synchronize, reopened, labeled] + schedule: + - cron: '2 5 * * 1' + +jobs: + check_permission: + runs-on: ubuntu-latest + if: >- + (github.repository_owner == 'Parallel-in-Time') && + ((github.event_name == 'push') || + (github.event_name == 'schedule') || + ((github.event_name == 'pull_request_target') && + (contains(github.event.pull_request.labels.*.name, 'gitlab-mirror')) + ) + ) + steps: + - name: Query permissions of triggering actor + id: query_permission_triggering_actor + if: github.event_name == 'pull_request_target' + uses: actions-cool/check-user-permission@v2 + with: + username: ${{ github.triggering_actor }} + require: 'write' + token: ${{ secrets.GITHUB_TOKEN }} + - name: Interpret the queried result + if: github.event_name == 'pull_request_target' + run: | + echo "Current permission level is ${{ steps.query_permission_triggering_actor.outputs.user-permission }}" + echo "Job originally triggered by ${{ github.actor }}" + echo "Checking permission returned ${{ steps.query_permission_triggering_actor.outputs.require-result }}" + if ${{ steps.query_permission_triggering_actor.outputs.require-result }} + then + echo 'Permissions granted' + exit 0 + else + echo 'Not enough permissions. Please ask a member of Parallel-in-Time to rerun the job.' + exit 1 + fi + - name: Pass if workflow from push or schedule + if: >- + (github.event_name == 'push') || + (github.event_name == 'schedule') + run: exit 0 + # - name: Fail for other triggers + # if: >- + # (github.event_name != 'push') && + # (github.event_name != 'schedule') && + # (github.event_name != 'pull_request_target') + # run: exit 1 + + mirror_to_gitlab: + runs-on: ubuntu-latest + if: >- + (github.repository_owner == 'Parallel-in-Time') && + ((github.event_name == 'push') || + (github.event_name == 'schedule') || + ((github.event_name == 'pull_request_target') && + (contains(github.event.pull_request.labels.*.name, 'gitlab-mirror')) + ) + ) + needs: + - check_permission + steps: + - name: set proper sha + run: | + echo "${{ github.event_name }}" + if [ "${{ github.event_name }}" == 'push' ] || [ "${{ github.event_name }}" == 'schedule' ] + then + echo "USED_SHA=${{ github.sha }}" >> "$GITHUB_ENV" + fi + if [ "${{ github.event_name }}" == 'pull_request_target' ] + then + echo "USED_SHA=${{ github.event.pull_request.head.sha }}" >> "$GITHUB_ENV" + fi + - name: Checkout + uses: actions/checkout@v4 + with: + ref: "${{ env.USED_SHA }}" + persist-credentials: false + - name: check if merge is possible (merge is used for testing) + if: github.event_name == 'pull_request_target' + run: | + if $(git rev-parse --is-shallow-repository); then + git fetch --unshallow + else + git fetch + fi + echo "Checkout of ${{ github.base_ref }}" + git checkout "${{ github.base_ref }}" + echo "Git pull" + git pull + MIRROR_BRANCH="TEMPORARY_MERGE_PR_${{ github.event.number }}" + echo MIRROR_BRANCH="$MIRROR_BRANCH" >> $GITHUB_ENV + echo "Create new branch $MIRROR_BRANCH and check it out" + git checkout -b "$MIRROR_BRANCH" + echo "Setting git committer info, so that merge-commit can be created" + git config user.email "unused@example.com" + git config user.name "Sync bot" + echo "Merge the two parts of the Merge-Request to test the resulting version" + git merge "${{ github.event.pull_request.head.sha }}" + - name: Mirror and wait for Gitlab-CI + uses: jakob-fritz/github2lab_action@v0.8.1 + env: + MODE: 'all' # Either 'mirror', 'get_status', 'get_artifact', or 'all' + GITLAB_TOKEN: ${{ secrets.GITLAB_SECRET }} + FORCE_PUSH: "true" + GITLAB_HOSTNAME: "gitlab.jsc.fz-juelich.de" + GITLAB_PROJECT_ID: "6029" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + MIRROR_BRANCH: ${{ env.MIRROR_BRANCH }} + - name: Unzip downloaded artifacts + run: | + pwd + ls -lah + cd artifacts + find . -name "*.zip" -type f -exec unzip -o {} \; + ls -lah + rm *.zip + cd .. + ls -lah + - name: Uploading artifacts + uses: actions/upload-artifact@v4 + with: + name: Gitlab-Action_artifacts + path: | + ./artifacts/* + + get_artifacts_from_other_workflow: + runs-on: ubuntu-latest + needs: + - mirror_to_gitlab + steps: + - name: Download artifacts from this workflow + uses: actions/download-artifact@v4 + with: + merge-multiple: true + path: ./github_ci_artifacts + - name: Set env-var + id: get_id + uses: actions/github-script@v7 + env: + workflow_filename: 'ci_pipeline.yml' + with: + script: | + if (context.eventName == "pull_request_target") { + var used_sha = context.payload.pull_request.head.sha; + var used_event = "pull_request"; + } else { + var used_sha = context.sha; + var used_event = context.eventName; + } + const result = await github.request('GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs', { + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: process.env.workflow_filename, + headers: { + 'X-GitHub-Api-Version': '2022-11-28', + 'accept': 'application/vnd.github+json' + }, + head_sha: used_sha, + event: used_event + }) + console.log("SHA of commit " + used_sha); + console.log("Found runs of workflow: " + result.data.total_count); + if (result.data.total_count == 1) { + console.log("Found workflow has id: " + result.data.workflow_runs[0].id); + return result.data.workflow_runs[0].id + } else { + console.log("Logging all found workflow ids:"); + for (var i = 0; i < result.data.workflow_runs.length; i++) { + console.log(result.data.workflow_runs[i].id); + } + console.log("Returned workflow id is: " + result.data.workflow_runs[0].id); + return result.data.workflow_runs[0].id + } + - name: Wait for other workflow to finish + env: + RUN_ID: ${{ steps.get_id.outputs.result }} + POLL_TIMEOUT: 10 + run: | + ci_conclusion="pending" + echo "Querying status of workflow $RUN_ID for repo $GITHUB_REPOSITORY" + until [ "$ci_conclusion" != "pending" ] && [ "$ci_conclusion" != "in_progress" ] && [ "$ci_conclusion" != "null" ] + do + # Wait some seconds + sleep "$POLL_TIMEOUT" + # Get the current state of the pipeline and the url of the website + run_reply=$(curl --header "'X-GitHub-Api-Version': '2022-11-28', 'accept': 'application/vnd.github+json'" --silent "https://api.github.com/repos/$GITHUB_REPOSITORY/actions/runs/$RUN_ID") + ci_conclusion=$(jq -n "$run_reply" | jq -r .conclusion) + echo "Current pipeline status: ${ci_conclusion}" + http_status=$(jq -n "$run_reply" | jq -r .status) + if [ "$http_status" != 200 ] && [[ "$http_status" =~ ^[0-9]+$ ]]; then + echo "Request returned status: ${http_status}" + exit 1 + fi + done + # Set exit code for success or failure (everything non-success) + if [ "$ci_conclusion" = "success" ]; then + exit 0 + else + exit 1 + fi + - name: Download artifacts from other workflow + uses: actions/download-artifact@v4 + with: + merge-multiple: true + run-id: ${{ steps.get_id.outputs.result }} + github-token: ${{ secrets.ACTION_READ_TOKEN }} + path: ./github_ci_artifacts + - name: Uploading artifacts + uses: actions/upload-artifact@v4 + with: + name: Github_CI_artifacts + path: | + ./github_ci_artifacts/* diff --git a/.github/workflows/postprocess.yml b/.github/workflows/postprocess.yml index f32b1179c2..73b39a5228 100644 --- a/.github/workflows/postprocess.yml +++ b/.github/workflows/postprocess.yml @@ -39,9 +39,11 @@ jobs: run: | genbadge coverage -i coverage.xml -o htmlcov/coverage-badge.svg - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV }} + fail_ci_if_error: true + verbose: true # - name: Generate benchmark report # uses: pancetta/github-action-benchmark@v1 diff --git a/README.md b/README.md index 1ed7cd1b36..dc02a5f705 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,12 @@ implemented. [PETSc](http://www.mcs.anl.gov/petsc/) (through [petsc4py](https://bitbucket.org/petsc/petsc4py)) - Continuous integration via [GitHub +<<<<<<< HEAD + 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) +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b - 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 2def2fd92a..3ea70fe4e2 100644 --- a/docs/contrib/02_continuous_integration.md +++ b/docs/contrib/02_continuous_integration.md @@ -112,8 +112,11 @@ pytest -v pySDC/tests ## Running CI on HPC from pull requests +<<<<<<< HEAD +======= > :warning: **Note:** The GitLab mirror integration is currently disabled due to technical issues. This section describes functionality that is temporarily unavailable. +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 8305e1fcf3..0a47ef7991 100644 --- a/pySDC/core/common.py +++ b/pySDC/core/common.py @@ -7,7 +7,10 @@ Module containing utility classe(s) from which inherit some of the pySDC base classes. """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b from pySDC.core.errors import ReadOnlyError diff --git a/pySDC/core/hooks.py b/pySDC/core/hooks.py index 760c24c48c..0bc4c39cb4 100644 --- a/pySDC/core/hooks.py +++ b/pySDC/core/hooks.py @@ -1,6 +1,10 @@ import logging from collections import namedtuple +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # metadata with defaults meta_data = { 'process': None, diff --git a/pySDC/core/sweeper.py b/pySDC/core/sweeper.py index 62129716c9..e0a9c5f69c 100644 --- a/pySDC/core/sweeper.py +++ b/pySDC/core/sweeper.py @@ -6,6 +6,10 @@ from pySDC.core.collocation import CollBase from pySDC.helpers.pysdc_helper import FrozenClass +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 c64f883006..be1ad64f01 100644 --- a/pySDC/helpers/fieldsIO.py +++ b/pySDC/helpers/fieldsIO.py @@ -47,7 +47,10 @@ 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. """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b import os import numpy as np from typing import Type, TypeVar diff --git a/pySDC/helpers/testing.py b/pySDC/helpers/testing.py index e67ed3e89e..85f20d3ecf 100644 --- a/pySDC/helpers/testing.py +++ b/pySDC/helpers/testing.py @@ -5,7 +5,10 @@ Helpers module for testing utilities """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b import os import json import warnings diff --git a/pySDC/helpers/vtkIO.py b/pySDC/helpers/vtkIO.py index 77c512337a..f15d00dd76 100644 --- a/pySDC/helpers/vtkIO.py +++ b/pySDC/helpers/vtkIO.py @@ -3,7 +3,10 @@ """ Helper functions for VTK files IO (to be used with Paraview or PyVista) """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 465c152202..0a9b4be67b 100644 --- a/pySDC/implementations/convergence_controller_classes/estimate_embedded_error.py +++ b/pySDC/implementations/convergence_controller_classes/estimate_embedded_error.py @@ -114,8 +114,15 @@ 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: +<<<<<<< HEAD + 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}\"") +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b def setup_status_variables(self, controller, **kwargs): """ @@ -207,8 +214,15 @@ def post_iteration_processing(self, controller, S, **kwargs): None """ if len(S.levels) > 1 and len(controller.MS) > 1: +<<<<<<< HEAD + 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") +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 5afbea99d9..803e2a8a40 100644 --- a/pySDC/implementations/convergence_controller_classes/estimate_extrapolation_error.py +++ b/pySDC/implementations/convergence_controller_classes/estimate_extrapolation_error.py @@ -139,8 +139,15 @@ def store_values(self, S, **kwargs): elif type(f) == mesh: self.prev.f[oldest_val] = f else: +<<<<<<< HEAD + 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") +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # store the rest of the values self.prev.u[oldest_val] = S.levels[0].u[-1] @@ -479,8 +486,15 @@ 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: +<<<<<<< HEAD + 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") +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 ebd8562fb1..043425be24 100644 --- a/pySDC/implementations/convergence_controller_classes/hotrod.py +++ b/pySDC/implementations/convergence_controller_classes/hotrod.py @@ -82,8 +82,15 @@ def check_parameters(self, controller, params, description, **kwargs): str: Error message """ if self.params.HotRod_tol == np.inf: +<<<<<<< HEAD + 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!") +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 ee72a9bde7..bc657984be 100644 --- a/pySDC/implementations/problem_classes/AllenCahn_2D_FD.py +++ b/pySDC/implementations/problem_classes/AllenCahn_2D_FD.py @@ -7,6 +7,10 @@ from pySDC.helpers import problem_helper from pySDC.implementations.datatype_classes.mesh import mesh, imex_mesh, comp2_mesh +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 c8cce4946e..73afaf2b82 100644 --- a/pySDC/implementations/problem_classes/GeneralizedFisher_1D_PETSc.py +++ b/pySDC/implementations/problem_classes/GeneralizedFisher_1D_PETSc.py @@ -179,7 +179,11 @@ def formFunction(self, snes, X, F): x = self.da.getVecArray(self.localX) f = self.da.getVecArray(F) mx = self.da.getSizes()[0] +<<<<<<< HEAD + (xs, xe) = self.da.getRanges()[0] +======= xs, xe = self.da.getRanges()[0] +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b for i in range(xs, xe): if i == 0 or i == mx - 1: f[i] = x[i] @@ -211,7 +215,11 @@ def formJacobian(self, snes, X, J, P): P.zeroEntries() row = PETSc.Mat.Stencil() mx = self.da.getSizes()[0] +<<<<<<< HEAD + (xs, xe) = self.da.getRanges()[0] +======= xs, xe = self.da.getRanges()[0] +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b for i in range(xs, xe): row.i = i row.field = 0 @@ -341,7 +349,11 @@ def __init__( # compute dx and get local ranges self.dx = (self.interval[1] - self.interval[0]) / (self.nvars - 1) +<<<<<<< HEAD + (self.xs, self.xe) = self.init.getRanges()[0] +======= self.xs, self.xe = self.init.getRanges()[0] +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # compute discretization matrix A and identity self.A = self.__get_A() @@ -401,7 +413,11 @@ def __get_A(self): row = PETSc.Mat.Stencil() col = PETSc.Mat.Stencil() mx = self.init.getSizes()[0] +<<<<<<< HEAD + (xs, xe) = self.init.getRanges()[0] +======= xs, xe = self.init.getRanges()[0] +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b for i in range(xs, xe): row.i = i row.field = 0 @@ -447,7 +463,11 @@ def get_sys_mat(self, factor): row = PETSc.Mat.Stencil() col = PETSc.Mat.Stencil() mx = self.init.getSizes()[0] +<<<<<<< HEAD + (xs, xe) = self.init.getRanges()[0] +======= xs, xe = self.init.getRanges()[0] +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 5f20adbd6d..e9ceca578c 100644 --- a/pySDC/implementations/problem_classes/Piline.py +++ b/pySDC/implementations/problem_classes/Piline.py @@ -148,8 +148,15 @@ 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: +<<<<<<< HEAD + 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!') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 da5b506752..d3c07ce444 100644 --- a/pySDC/implementations/problem_classes/generic_ND_FD.py +++ b/pySDC/implementations/problem_classes/generic_ND_FD.py @@ -3,7 +3,10 @@ """ Created on Sat Feb 11 22:39:30 2023 """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 3adf496c67..4ecc1379fb 100644 --- a/pySDC/implementations/problem_classes/odeScalar.py +++ b/pySDC/implementations/problem_classes/odeScalar.py @@ -10,7 +10,10 @@ on parallel computers. SIAM journal on scientific and statistical computing, 12(5), 1000-1028. """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 233e349b10..465ff72370 100644 --- a/pySDC/implementations/problem_classes/odeSystem.py +++ b/pySDC/implementations/problem_classes/odeSystem.py @@ -10,7 +10,10 @@ on parallel computers. SIAM journal on scientific and statistical computing, 12(5), 1000-1028. """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 ad9e56972e..0bc6654e33 100644 --- a/pySDC/projects/AllenCahn_Bayreuth/tests/test_simple_forcing.py +++ b/pySDC/projects/AllenCahn_Bayreuth/tests/test_simple_forcing.py @@ -39,7 +39,11 @@ 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() +<<<<<<< HEAD + (output, err) = p.communicate() +======= output, err = p.communicate() +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b print(output) if err: warnings.warn(err) @@ -49,7 +53,11 @@ 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() +<<<<<<< HEAD + (output, err) = p.communicate() +======= output, err = p.communicate() +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 6c7c1a5196..717df7948b 100644 --- a/pySDC/projects/Monodomain/problem_classes/TestODE.py +++ b/pySDC/projects/Monodomain/problem_classes/TestODE.py @@ -5,6 +5,10 @@ from pySDC.implementations.datatype_classes.mesh import mesh from pySDC.projects.Monodomain.datatype_classes.my_mesh import imexexp_mesh +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b """ 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 87478d5cff..159ddb7231 100644 --- a/pySDC/projects/Resilience/collocation_adaptivity.py +++ b/pySDC/projects/Resilience/collocation_adaptivity.py @@ -16,6 +16,10 @@ from pySDC.implementations.hooks.log_errors import LogLocalErrorPostIter from pySDC.implementations.hooks.log_embedded_error_estimate import LogEmbeddedErrorEstimatePostIter +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 593c10fa89..b0513b3759 100644 --- a/pySDC/projects/Resilience/fault_injection.py +++ b/pySDC/projects/Resilience/fault_injection.py @@ -189,8 +189,15 @@ def add_fault(self, args, rnd_args): elif type(self.random_generator) == np.random.RandomState: self.add_random_fault(args, rnd_args) else: +<<<<<<< HEAD + 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)}') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b def add_stored_faults(self): ''' @@ -333,8 +340,15 @@ def pre_run(self, step, level_number): super().pre_run(step, level_number) if not type(step.levels[level_number].u[0]) == mesh: +<<<<<<< HEAD + 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])}') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 f06fbb470c..cfd52ccb04 100644 --- a/pySDC/projects/Resilience/fault_stats.py +++ b/pySDC/projects/Resilience/fault_stats.py @@ -1009,8 +1009,15 @@ def analyse_adaptivity(self, mask): # pragma: no cover print('-------+-----+------+------+----------+----------+----------+----------') for i in index: e_em, e_glob = self.analyse_adaptivity_single(int(i)) +<<<<<<< HEAD + 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}') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b e_tol = AdaptivityStrategy().get_custom_description(self.prob, self.num_procs)['convergence_controllers'][ Adaptivity @@ -1068,6 +1075,23 @@ def analyse_HotRod(self, mask): # pragma: no cover dat = self.load() # make a header +<<<<<<< HEAD + 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}\ + | {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}' + ) +======= print(' run | bit | node | iter | e_ex^* | e_ex | e_em^* | e_em | diff* | diff | e_glob^* \ | e_glob ') print('-------+-----+------+------+----------+----------+----------+----------+----------+----------+----------\ @@ -1077,6 +1101,7 @@ def analyse_HotRod(self, mask): # pragma: no cover 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}') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 e1d4d6bb07..0aa2e5553d 100644 --- a/pySDC/projects/Resilience/hook.py +++ b/pySDC/projects/Resilience/hook.py @@ -4,6 +4,10 @@ from pySDC.implementations.hooks.log_extrapolated_error_estimate import LogExtrapolationErrorEstimate from pySDC.implementations.hooks.log_step_size import LogStepSize +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b hook_collection = [LogSolution, LogEmbeddedErrorEstimate, LogExtrapolationErrorEstimate, LogStepSize] diff --git a/pySDC/projects/Resilience/paper_plots.py b/pySDC/projects/Resilience/paper_plots.py index 4e3de96d6f..e6688b3d09 100644 --- a/pySDC/projects/Resilience/paper_plots.py +++ b/pySDC/projects/Resilience/paper_plots.py @@ -26,6 +26,10 @@ from pySDC.helpers.plot_helper import setup_mpl, figsize_by_journal from pySDC.helpers.stats_helper import get_sorted +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 3f09a90477..c691c62d23 100644 --- a/pySDC/projects/Resilience/strategies.py +++ b/pySDC/projects/Resilience/strategies.py @@ -609,8 +609,15 @@ def get_custom_description(self, problem, num_procs): e_tol = 1e-5 else: +<<<<<<< HEAD + 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') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b custom_description['convergence_controllers'][Adaptivity] = { 'e_tol': e_tol, @@ -752,8 +759,15 @@ def get_custom_description(self, problem, num_procs): maxiter = 4 HotRod_tol = 2e-6 else: +<<<<<<< HEAD + 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') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b no_storage = num_procs > 1 @@ -842,8 +856,15 @@ def get_custom_description(self, problem, num_procs): elif problem.__name__ == "run_GS": restol = 1e-4 else: +<<<<<<< HEAD + 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') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b custom_description = { 'step_params': {'maxiter': 99}, @@ -1041,8 +1062,15 @@ def get_custom_description(self, problem, num_procs): HotRod_tol = 3.22e-5 maxiter = 6 else: +<<<<<<< HEAD + 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') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b no_storage = False # num_procs > 1 @@ -1167,8 +1195,15 @@ def get_custom_description(self, problem, num_procs): elif problem.__name__ == "run_AC": e_tol = 1e-4 else: +<<<<<<< HEAD + 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') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b custom_description['convergence_controllers'] = { AdaptivityCollocation: { @@ -1965,8 +2000,15 @@ def get_custom_description(self, problem, num_procs): elif problem.__name__ == "run_AC": e_tol = 1e-4 else: +<<<<<<< HEAD + 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') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b custom_description['convergence_controllers'] = { AdaptivityExtrapolationWithinQ: { @@ -2092,8 +2134,15 @@ def get_custom_description(self, problem, num_procs): restol_max = 1e-4 restol_min = 1e-9 else: +<<<<<<< HEAD + 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') +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 8d7627fd1b..8a596324f6 100644 --- a/pySDC/projects/Second_orderSDC/harmonic_oscillator_run_stability.py +++ b/pySDC/projects/Second_orderSDC/harmonic_oscillator_run_stability.py @@ -1,6 +1,10 @@ from pySDC.projects.Second_orderSDC.harmonic_oscillator_params import get_default_harmonic_oscillator_description from pySDC.projects.Second_orderSDC.stability_simulation import StabilityImplementation +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 0029ad5430..3dba210365 100644 --- a/pySDC/projects/Second_orderSDC/tests/test_convergence.py +++ b/pySDC/projects/Second_orderSDC/tests/test_convergence.py @@ -1,5 +1,9 @@ import pytest +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b METHODS = ['RKN', 'Velocity_Verlet'] diff --git a/pySDC/projects/TOMS/AllenCahn_contracting_circle.py b/pySDC/projects/TOMS/AllenCahn_contracting_circle.py index d0e0912133..195eac515c 100644 --- a/pySDC/projects/TOMS/AllenCahn_contracting_circle.py +++ b/pySDC/projects/TOMS/AllenCahn_contracting_circle.py @@ -20,6 +20,10 @@ from pySDC.implementations.sweeper_classes.multi_implicit import multi_implicit from pySDC.projects.TOMS.AllenCahn_monitor import monitor +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 7b70bb5775..6ef6458f45 100644 --- a/pySDC/projects/deprecated/node_failure/postproc_hard_faults_test.py +++ b/pySDC/projects/deprecated/node_failure/postproc_hard_faults_test.py @@ -2,6 +2,10 @@ import numpy as np from pylab import rcParams +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # import os diff --git a/pySDC/projects/parallelSDC/AllenCahn_parallel.py b/pySDC/projects/parallelSDC/AllenCahn_parallel.py index d01f9fd96b..1735ca076b 100644 --- a/pySDC/projects/parallelSDC/AllenCahn_parallel.py +++ b/pySDC/projects/parallelSDC/AllenCahn_parallel.py @@ -14,6 +14,10 @@ from pySDC.implementations.transfer_classes.BaseTransferMPI import base_transfer_MPI from pySDC.implementations.sweeper_classes.generic_implicit_MPI import generic_implicit_MPI +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 9603899010..3079cbf838 100644 --- a/pySDC/projects/parallelSDC_reloaded/allenCahn_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/allenCahn_accuracy.py @@ -10,7 +10,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 83d74e0062..8981d853ef 100644 --- a/pySDC/projects/parallelSDC_reloaded/allenCahn_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/allenCahn_setup.py @@ -5,7 +5,10 @@ Setup script for the Allen-Cahn problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 97d21f8ca1..8b6e9d0313 100644 --- a/pySDC/projects/parallelSDC_reloaded/chemicalReaction_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/chemicalReaction_accuracy.py @@ -11,7 +11,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 023219343b..d43964aaa0 100644 --- a/pySDC/projects/parallelSDC_reloaded/chemicalReaction_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/chemicalReaction_setup.py @@ -5,7 +5,10 @@ Setup script for the Chemical Reaction problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 4ba4b9e243..7ef692bc69 100644 --- a/pySDC/projects/parallelSDC_reloaded/convergence.py +++ b/pySDC/projects/parallelSDC_reloaded/convergence.py @@ -5,7 +5,10 @@ Generate convergence plots on Dahlquist for SDC with given parameters """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 e938fe907e..75428e0a3b 100644 --- a/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_accuracy.py @@ -10,7 +10,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 b3df96abaa..44457739de 100644 --- a/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/jacobiElliptic_setup.py @@ -5,7 +5,10 @@ Setup script for the JacobianElliptic problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 ecbed6c183..405e72346f 100644 --- a/pySDC/projects/parallelSDC_reloaded/kaps_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/kaps_accuracy.py @@ -11,7 +11,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 d4fe1c052b..004ad3d7b5 100644 --- a/pySDC/projects/parallelSDC_reloaded/kaps_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/kaps_setup.py @@ -5,7 +5,10 @@ Setup script for the Kaps problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 8cdc9da01f..420ec4db8a 100644 --- a/pySDC/projects/parallelSDC_reloaded/lorenz_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/lorenz_accuracy.py @@ -10,7 +10,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 29b147c627..9e59770d07 100644 --- a/pySDC/projects/parallelSDC_reloaded/lorenz_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/lorenz_setup.py @@ -5,7 +5,10 @@ Script to numerically compute number revolution periods for the Lorenz system """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 e1ee9ff487..bb5b0e334b 100644 --- a/pySDC/projects/parallelSDC_reloaded/nilpotency.py +++ b/pySDC/projects/parallelSDC_reloaded/nilpotency.py @@ -6,7 +6,10 @@ Evaluate the nilpotency of diagonal preconditioners MIN-SR-S and MIN-SR-NS with increasing number of nodes. """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 642aac8b9e..f324f026b2 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_accuracy.py @@ -11,7 +11,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 70d5af1ecd..da4234566b 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinsonAutonomous_setup.py @@ -6,7 +6,10 @@ Setup script for the ProtheroRobinson (linear and non-linear) problem, using the autonomous formulation """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 40ea217478..3024370fc2 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinson_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinson_accuracy.py @@ -11,7 +11,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 54e8a46864..0feec0a1a4 100644 --- a/pySDC/projects/parallelSDC_reloaded/protheroRobinson_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/protheroRobinson_setup.py @@ -5,7 +5,10 @@ Setup script for the ProtheroRobinson (linear and non-linear) problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 0cf8d7ac99..a7a8f7c92f 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig01_conv.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig01_conv.py @@ -5,7 +5,10 @@ Convergence plots (on Dahlquist) for the article """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 718d8b0c58..9ff7390a27 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig02_stab.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig02_stab.py @@ -5,7 +5,10 @@ Stability plots (on Dahlquist) for the article """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 bc5f6f7e0f..d47a30d3d1 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig03_lorenz.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig03_lorenz.py @@ -5,7 +5,10 @@ Figures with experiment on the Lorenz problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 1535bd2b47..837deea52e 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig04_protheroRobinson.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig04_protheroRobinson.py @@ -5,7 +5,10 @@ Figures with experiment on the Prothero-Robinson problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 a4ce6e579e..7ab068b07e 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig05_allenCahn.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig05_allenCahn.py @@ -5,7 +5,10 @@ Figures with experiments on the Allen-Cahn problem """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 11c86900c2..c25e30bfe6 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI.py @@ -5,7 +5,10 @@ Figures with experiments on the Allen-Cahn problem (MPI runs) """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 069499ce9b..dd9df4e856 100644 --- a/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI_plot.py +++ b/pySDC/projects/parallelSDC_reloaded/scripts/fig06_allenCahnMPI_plot.py @@ -5,7 +5,10 @@ Figures with experiments on the Allen-Cahn problem (MPI runs) """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 b4fd261ee3..505f6a51f7 100644 --- a/pySDC/projects/parallelSDC_reloaded/stability.py +++ b/pySDC/projects/parallelSDC_reloaded/stability.py @@ -5,7 +5,10 @@ Compute stability regions for SDC wit given parameters """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 8033f3b00b..b8725b63d1 100644 --- a/pySDC/projects/parallelSDC_reloaded/tests/test_parallelSDC_reloaded.py +++ b/pySDC/projects/parallelSDC_reloaded/tests/test_parallelSDC_reloaded.py @@ -5,7 +5,10 @@ Testing scripts for the parallel_SDC_reloaded project """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b import sys import pytest diff --git a/pySDC/projects/parallelSDC_reloaded/utils.py b/pySDC/projects/parallelSDC_reloaded/utils.py index 61814240d8..4fadc2901a 100644 --- a/pySDC/projects/parallelSDC_reloaded/utils.py +++ b/pySDC/projects/parallelSDC_reloaded/utils.py @@ -5,7 +5,10 @@ Utility functions to investigate parallel SDC on non-linear problems """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 3daded469d..86b3def1a2 100644 --- a/pySDC/projects/parallelSDC_reloaded/vanderpol_accuracy.py +++ b/pySDC/projects/parallelSDC_reloaded/vanderpol_accuracy.py @@ -11,7 +11,10 @@ Note : implementation in progress ... """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 09b1db74e9..d45f91bb1e 100644 --- a/pySDC/projects/parallelSDC_reloaded/vanderpol_setup.py +++ b/pySDC/projects/parallelSDC_reloaded/vanderpol_setup.py @@ -6,7 +6,10 @@ Script to numerically determine periods of Van der Pol oscillation for different mu parameters. """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 cfddd69927..4deb534551 100644 --- a/pySDC/tests/test_2d_fd_accuracy.py +++ b/pySDC/tests/test_2d_fd_accuracy.py @@ -2,6 +2,10 @@ import pytest import numpy as np +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 cee96c3a00..0bee22a682 100644 --- a/pySDC/tests/test_helpers/test_testing.py +++ b/pySDC/tests/test_helpers/test_testing.py @@ -3,7 +3,10 @@ """ Created on Fri Feb 9 20:14:06 2024 """ +<<<<<<< HEAD +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 3dd026c042..32b3ce2a6c 100644 --- a/pySDC/tests/test_transfer_classes/test_mesh_to_mesh.py +++ b/pySDC/tests/test_transfer_classes/test_mesh_to_mesh.py @@ -2,6 +2,10 @@ import pytest import numpy as np +<<<<<<< HEAD + +======= +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b # 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 cf3ef20c85..05867146f0 100644 --- a/pySDC/tutorial/step_7/A_pySDC_with_FEniCS.py +++ b/pySDC/tutorial/step_7/A_pySDC_with_FEniCS.py @@ -156,12 +156,20 @@ 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': +<<<<<<< HEAD + assert err <= 1.14e-08, 'Error is too high, got %s' % err +======= assert err <= 1.15e-08, 'Error is too high, got %s' % err +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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) +<<<<<<< HEAD + assert err <= 1.14e-08, 'Error is too high, got %s' % err +======= assert err <= 1.15e-08, 'Error is too high, got %s' % err +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b 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 544ed8561c..bb15f90a58 100644 --- a/pySDC/tutorial/step_8/C_iteration_estimator.py +++ b/pySDC/tutorial/step_8/C_iteration_estimator.py @@ -282,7 +282,13 @@ def run_simulations(type=None, ndim_list=None, Tend=None, nsteps_list=None, ml=F print(out) f.close() +<<<<<<< HEAD + 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 \ +>>>>>>> d3e0bb943e63560d7b018cac8a624c1883aa0c7b {mean_number_of_iterations:.2f} mean iterations, but got {np.mean(niters):.2f}'