Update from upstream 2026-07-23 - #71
Conversation
Closes pyccel#476: * Do not restrict the maximum Python version to 3.12 in `pyproject.toml` * Require `Cython >= 3` to avoid `h5py` installation crash w/ Python 3.13 * Require `sympde == 0.19.2` which supports Python 3.13 * Run unit tests with Python 3.13 too
Currently, Psydac can not be used on Apple M4 computers since the `PSYDAC_BACKEND_GPYCCEL['flags']` is not set correctly. This change sets the flag for `Apple MX (etc.)` to `apple-mX`, which should work so long as the naming scheme stays unchanged. In addition, the regular expression used to find the GFortran version is now defined in a raw string instead of a standard Python UTF8 string. This avoids a `SyntaxWarning: invalid escape sequence`. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
* Use raw strings for docstrings with LaTeX to avoid UTF8 syntax warnings on escape sequences; * Use CSC matrices to avoid SciPy sparse solver warning. We do not address the NumPy warnings which arise in our MPI unit tests (see pyccel#353).
…yccel#484) Main changes -------------- * Rename the method `dot` of the base class `VectorSpace` as `inner`, and make it an abstract method (which must be implemented by the subclasses). * Rename the method `dot` of the base class `Vector` as `inner`. This is a concrete method which calls `self.space.inner` and does not need to be overridden by the subclasses. * Add `inner` methods to the classes `StencilVector`, `BlockVectorSpace`, and `DenseVectorSpace`. These methods override the abstract method of the base class as required, and are derived from the former functions `Stencil.dot`, `BlockVector.dot`, and `DenseVector.dot`, which have been removed (see next point). * Remove the property `dtype` and the method `dot` (now `inner`) from the classes `StencilVector`, `BlockVector`, and `DenseVector`, because the default methods of the base class already provide a sufficient implementation. This fixes pyccel#330. Necessary additional changes ------------------------------ * Update all linear solvers in `linalg.solvers` with the new method calls; * Update all unit tests with the new method calls, in files: - `api/tests/test_assembly.py` - `feec/tests/test_commuting_projections.py` - `feec/tests/test_global_projectors.py` - `linalg/tests/test_block.py` - `linalg/tests/test_linalg.py` - `linalg/tests/test_stencil_interface_matrix.py` - `linalg/tests/test_stencil_vector.py` Unrelated additional changes ----------------------------- * Rename the class `VectorDot` as `VectorInner` in module `api.ast.linalg`, although never used in Psydac. * Speed up 3D unit tests in: - `feec/tests/test_commuting_projectors.py` - `feec/tests/test_global_projectors.py`
--------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
…yccel#493) Implement `M.dot(u).inner(v)`, or `(M @ u).inner(v)`, without creating a temporary vector. The result of the dot product is written to a local work vector stored in the `LinearOperator` object. This work vector is then used to compute the inner product with the vector `v`. The subclasses do not need to override this method, unless a more efficient implementation which avoids writing to the work vector altogether (reducing memory pressure) is needed. A unit test is added: function `test_dot_inner` in file psydac/linalg/tests/test_linalg.py. Additionally, the helper function `get_StencilVectorSpace` defined in psydac/linalg/tests/test_linalg.py (only used in the same file and in test_matrix_free.py) has a new signature and now works in any number of dimensions. Fixes pyccel#491.
This PR changes the code generation involved in the `discretize` function to avoid calculating unnecessary derivatives. This allows for using constant spline (degree 0) discretizations, for which we have to make a special case in the calculation of ghost regions in `psydac/linalg/stencil.py`. Additionally, we add basic unit tests checking discretizations using zero-degree splines. This fixes pyccel#489 and fixes pyccel#307. On this occasion, we also do small changes in the `.github/workflows/testing.yml` script as some tests had complications without them. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
Always use the maximum padding between test and trial spaces in `allocate_matrices` in `DiscreteBilinearForm`. (Earlier this was not done in the case of scalar spaces.) Fixes pyccel#504.
Pyccel 2.0 was just released, which means some of the kernels in Psydac need to be updated: - Remove the `template` decorator (see pyccel/pyccel#2331) * Add `T` as `TypeVar` * Specify `T`, `T[:]`, `T[:,:]`, ... in function arguments. - Replace `@types` decorators (see pyccel/pyccel#2329) - Replace `const` with `Final` (see pyccel/pyccel#2340) Further changes: - Update import path for `epyccel` (fixes pyccel#426) - Update arguments to `epyccel` (see pyccel/pyccel#2348): * Rename `fflags` to `flags` * Replace `accelerators` list with `openmp` bool - Require Pyccel >= 2.0.1 (fixes pyccel#471) --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com> Co-authored-by: Elena Moral Sánchez <Elena.Moral.Sanchez@ipp.mpg.de> Co-authored-by: Emily Bourne <louise.bourne@gmail.com>
Recently the installation of `h5py` in parallel mode (i.e. with MPI support through `mpi4py`) seems to have been simplified. This may be due to the recent move of `mpi4py` to wheels, or other factors. Therefore we can now simplify our installation procedure as follows: ```sh pip install h5py --no-cache-dir --no-binary h5py pip install .[test] ``` We update here the CI workflows and completely rewrite our README file. **Commit summary** - Completely rewrite `README.md`: * Expand initial description * Add Citing and Contributing sections * Shorten Installation section * Reorganize documentation sections * Move detailed installation instructions to separate file `docs/installation.md` * Move mesh generation to separate file `docs/psydac-mesh.md` - Add BibTeX file `CITING.bib` with citation of 2022 ECCOMAS proceedings - Remove obsolete files `requirements.txt` and `requirements_extra.txt` - Rename (and move) `docs_requirements.txt` as `docs/requirements.txt` - Update installation procedure in `testing` CI workflow - Change name in `testing` workflow from "Run tests" to "Unit tests" - Modify `testing` and `documentation` workflows so that they only run when needed - Allow running workflows manually - Fix broken CI badge in `README.md`
This PR implements the sum factorization algorithm as shown in **Sum factorization techniques in Isogeometric Analysis** by Andrea Bressan & Stefan Takacs for **bilinear forms on 3D volumes**. The old element-by-element assembly can still be employed by passing a corresponding flag ```python # a some BilinearForm a_h = discretize(a, domain_h, (Vh, Vh), backend=backend, sum_factorization=False) ``` Currently, the new generated code does not make use of OpenMP. Main changes -------------- - Write new module `psydac.api.fem_common` which: * Contains the old functions previously in module `psydac.api.fem`. * Has functions `construct_test_space_arguments` and `construct_trial_space_arguments` returning also the multiplicity. * Has new functions `compute_max_nderiv`, `compute_imports`, `compute_free_arguments`. - Move `DiscreteSumForm` to a new module `psydac.api.fem_sum_form`. - Create a new module `psydac.api.fem_bilinear_form` which only contains one new class `DiscreteBilinearForm`. The new module shows all imports clearly. The new class: * Generates the code to assemble the given discrete bilinear form into a matrix (a `BlockLinearOperator` object of `StencilMatrix` objects, or just a single `StencilMatrix` object), using sum factorization. * Does not inherit from `BasicDiscrete` (and hence `BasicCodeGen`). Accordingly, no PSYDAC abstract syntax tree (an object representing a function, of class `DefNode`) is created by the constructor of `AST`, which stores it in its `expr` attribute. (Both classes `DefNode` and `AST` are defined in module `psydac.api.ast.fem`.) * Does not create a `Parser` object from `psydac.api.ast.parser`, which used to convert a PSYDAC `DefNode` to an old-Pyccel `FunctionDef` from `psydac.pyccel.ast.core`. * Does not generate the old assembly Python code (in the form of a string) using the function `pycode` from `psydac.pyccel.codegen.printing.pycode`. - Add a new unit test file `api/tests/test_sum_factorization_assembly_3d`. - Modify function `discretize` in module `psydac.api.discretization` so that, given a bilinear form in 3D and not asking for OpenMP support, it creates an object of type `DiscreteBilinearForm` from module `psydac.api.fem_bilinear_form`. In all other cases, or if `sum_factorization=False`, it creates an object of namesake type from the old module `psydac.api.fem`. Other changes -------------- - Expand docstring of class `AST` in module `psydac.api.ast.fem`. - Expand docstrings of function `parse` and class `Parser` in module `psydac.api.ast.parser`. Clean up `Parser.__init__`. - Minor cleanup in class `BasicCodeGen` in module `psydac.api.basic`. - Generate random filenames using `random.choice()` instead of `random.SystemRandom().choice()`. Unrelated to matrix assembly: - Add method `set_scalar` to `ScaledLinearOperator`. - Reimplement method `idot` of `LinearOperator` using local storage. This avoids creating unnecessary temporary vectors (especially beneficial for the method `dot` of `SumLinearOperator`). --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com> Co-authored-by: elmosa <Elena.Moral.Sanchez@ipp.mpg.de>
### Commit summary - Fix pyccel#461 : Move contents of `psydac/feec/multipatch/api.py` to `psydac/api/feec.py` and `psydac/api/discretization.py`. - Remove old code from `psydac/feec/multipatch/operators.py` and replace it by the contents in `psydac/feec/multipatch/non_matching_operators.py` to make the structure more clear. - Fix pyccel#463 - Fix pyccel#272 : keep the `FEMLinearOperator` as a more light-weight class that encapsulates a `LinearOperator` and has a `apply` and `__call__` function to make it act on a `FEMField`. Remove duplicated code with `LinearOperator`. Make operators in `psydac/feec` subclasses of `LinearOperator`. - Fix pyccel#462: Add conforming projections and Hodge operators to single-patch `DiscreteDeRham` - Add single-patch test for the conforming projectors - Adapt all the tests/files to the new notations. For the single patch cases mostly renaming `derham_h.derivatives` to `derham_h.derivatives()` and `derham_h.derivatives_as_matrices` to `derham_h.derivatives(kind='linop')` - Merge single-patch and multi-patch operators to the same file if it makes things clearer. Take Hodge and conforming projection operators out of the multipatch subdirectory. - Fix pyccel#409 : the global projector interface in DiscreteDeRhamMultipatch - Fix pyccel#331. - Add a `SparseMatrixLinearOperator` in `psydac/linalg/sparse.py` to use a sparse matrix as a `LinearOperator`. This is needed for the conforming projections. - Rename `GlobalProjectors` to `GlobalGeometricProjectors` ### Notes With the current changes, we get all FEEC operators directly from the discrete de Rham object. Further, the same code also runs if the domain is a single patch. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
Add the optional parameter `mpi_dims_mask` to the constructor of class `Geometry`, as well as its class methods `from_discrete_mapping` and `from_topological_domain`. Add unit tests to verify that the domain is correctly decomposed. --------- Co-authored-by: Alisa Kirkinskaia <alisa.kirkinskaia@tum.de> Co-authored-by: Alisa Kirkinskaia <alisa.kirkinsk@gmail.com>
Fix `examples/poisson_2d_mapping.py`: - Use renamed method `get_assembly_grids` (formerly `get_quadrature_grids`) of class `TensorFemSpace` - Add missing definition of `Vnew` variable in the case of distributed visualization - Avoid string warnings
Fix bug in method `plot_2d_decomposition` of `TensorFemSpace`, which was failing when run in parallel with a distributed spline mapping. - Create a new test file `psydac/fem/tests/test_tensor.py` with a unit test which fails on the `devel` branch. This compares the generated PNG images with "reference" ones which are known to be correct, within a 2 % relative tolerance on each of the RGB channels. - Only evaluate mapping in local subdomain owned by process - Gather global mapping information on root process - Add optional parameters `fig`, `ax`, and `mpi_root` - Add docstring - Update `examples/poisson_2d_mapping.py` to pass the correct mapping (i.e. also a distributed spline mapping if that is used in the computations) to `plot_2d_decomposition`.
Add a NOTE block with the meaning of the PSYDAC acronym, as well as its pronounciation.
We implement the class `DirichletProjector` and
`MultipatchDirichletProjector` and include tests.
DirichletProjector
---------------------------
is a subclass of `LinearOperator`. Projects coefficients of functions
belonging to a `fem_space` of `space_kind` $\in$ `{"h1", "hcurl",
"hdiv", "l2"}` to coefficients of functions satisfying the corresponding
homogeneous Dirichlet boundary conditions. These projectors **respect
periodicity**, i.e., coefficients corresponding to "periodic boundaries"
**will not be changed**.
Take for example the constant function $f(x, y) = 1$ on an Annulus.
```python
P0, _, _ = derham_h.projectors()
f = lambda x, y : 1
F = P0(f)
plot_field_2d(fem_field=F, domain=domain, N_vis=100, cmap='plasma')
```
See [image](https://github.com/user-attachments/assets/83dc42c6-5ecc-46ae-a0a0-6ceae85526fe).
Applying the `DirichletProjector` sets correctly only the DOFs to 0 that
belong to basis functions that are different from 0 on the
"x1-direction-boundary".
```python
DP0, _ = derham_h.dirichlet_projectors(kind='linop')
F_dp = FemField(derham_h.V0, DP0 @ F.coeffs)
plot_field_2d(fem_field=F_dp, domain=domain, N_vis=100, cmap='plasma')
```
See [image](https://github.com/user-attachments/assets/a117c5c6-8379-4bcf-b8a8-71e59d2d0eeb).
Usage
---------
Obtain these projectors in the **FEEC context** directly from a
`DiscreteDeRham` object
```python
DP0, DP1 = derham_h.dirichlet_projectors(kind='linop') # in 1D
DP0, DP1, DP2 = derham_h.dirichlet_projectors(kind='linop') # in 2D
DP0, DP1, DP2, DP3 = derham_h.dirichlet_projectors(kind='linop') # in 3D
```
The last projector is simply an `IdentityOperator`.
When instead working with **FEM** objects only:
```python
from psydac.fem.projectors import DirichletProjector
# working with a space that has a kind
V = ScalarFunctionSpace('V', domain, kind='h1')
Vh = discretize(V, domain_h, degree=degree)
DP = DirichletProjector(Vh)
# working with a space that has no kind
V = VectorFunctionSpace('V', domain)
Vh = discretize(V, domain_h, degree=degree)
DP = DirichletProjector(Vh, kind='hcurl') # or 'hdiv'
```
Similarity with `conforming_projectors`
--------------------------------------------------------
Identical to `derham_h.conforming_projectors(kind='linop', hom_bc=True)`
**on a single-patch**.
On **multi-patch** domains, `derham_h.conforming_projectors` also affect
the solution at the **interfaces** between patches, as required by the
broken-FEEC theory. If required, they have the additional ability to
preserve moments of the solution.
Unfortunately, the conforming projectors are only implemented in 2D.
---------
Co-authored-by: Frederik Schnack <frederik.schnack@ipp.mpg.de>
- Move the script `psydac_accelerate.py` to the function `main` in the new module `psydac/cmd/accelerate.py` - Define a `psydac-accelerate` executable in file `pyproject.toml` - Update instructions in `README.md` - Ignore Bandit warnings about `subprocess` import and calls Fixes pyccel#511. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
- Remove the ancient documentation folder `doc` - Remove the old CI configuration file `.travis.yml` - Remove the outdated `TODO.rst` This fixes pyccel#496. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
We add a `diagonal(self, inverse=False, sqrt=False, out=None)` method to the class `KroneckerStencilMatrix`. Additionally, we fix the `diagonal` method of `StencilDiagonalMatrix`, both making it run in general, and also allowing for the kwarg `sqrt` which had been missing until now. This method comes in handy for the computation of the yet to be implemented LST preconditioners. For the computation of these, we compute 1D mass matrices which are the building blocks of 2D or 3D logical mass matrices. Additionally, we compute the diagonal of said 2D or 3D logical mass matrix. Thus, instead of having to assemble the entire 2D or 3D mass matrix, we can build them as `KroneckerStencilMatrices`, which is much cheaper, and then obtain the diagonal. This feature reduces the runtime of a yet to be implemented LST preconditioner test from 2 minutes down to 20 seconds. A very fast test for this new method is included in this PR.
- Create `script/` folder for maintenance scripts - Create `script/add_header.py` for adding a license header to the top of every Python file - Apply script to `examples/`, `mesh/`, `performance/`, and `psydac/` folders - Remove obsolete header lines (e.g. `# coding utf-8`, `#! /usr/bin/python`, `# Copyright ...`) from all Python files - Clean up imports in several modules across the library --------- Co-authored-by: Frederik Schnack <frederik.schnack@tum.de>
Add logo for README and documentation. Fixes pyccel#534. - Add `docs/logo/` folder with three SVG images: * `psydac_platypus.svg` with the PSYDAC platypus logo * `psydac_banner.svg` with a long banner (text + logo) for the README * `psydac_square.svg` with a compact square banner (text + logo) for use in presentations with a white background - Include contents of `README.md` in generated documentation - Use absolute paths in `README.md` for correct linking - Add `myst-parser` to documentation requirements - Fix instructions in "Building the Docs" section - Remove useless links from bottom of main page in documentation (already present on the top) - Add square PSYDAC logo to header in documentation page - Improve layout of documentation page
Implement preconditioners for mass matrices as proposed by Loli, Sangalli & Tani in 2022 [Easy and efficient preconditioning of the isogeometric mass matrix](https://doi.org/10.1016/j.camwa.2020.12.009). Fixes pyccel#525. * Add `construct_LST_preconditioner()` to `psydac.fem.lst_preconditioner`. This creates the preconditioner for a single mass matrix, with or without Dirichlet boundary conditions, in the form of a `LinearOperator`. It uses `@functools.lru_cache` to avoid expensive recalculations. * Add method `LST_preconditioners` to class `DiscreteDeRham`. This calls `construct_LST_preconditioner()` to create preconditioners for multiple mass matrices. * Move functions `to_bnd` and `matrix_to_bandsolver` from test module `test_kron_direct_solver` to library module `psydac.linalg.direct_solvers`. * Convert `matrix_to_bandsolver` into `BandedSolver.from_stencil_mat_1d`. * Provide example in `examples/vector_potential_3d.py`. * Provide test `linalg/tests/test_solvers.py::test_LST_preconditioner` with extensive information about the efficiency of the implementation. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
Refactor the linear solvers to have the preconditioner baked in the same class. The preconditioner is now a parameter to the constructor of the solver class, so there is no need to have a different class for the preconditioned solvers. Fixes pyccel#469 and pyccel#556. **Commit Summary** - Merge `PConjugateGradient` into `ConjugateGradient` - Merge `PBiConjugateGradientStabilized` into `BiConjugateGradientStabilized` - Rename confusing property `linop` of `InverseLinearOperator` as `fwd_linop` - Accept any capitalization in solver names (hence one can pass `'CG'`, `'BiCG'`, `'GMRES'`, etc.) - Relax too strict complex assertion in `ScaledLinearOperator` - Raise a `Warning` when using LSMR or BiCG solvers with complex matrices - Improve unit tests --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com> Co-authored-by: Martin Campos Pinto <martin.campos-pinto@ipp.mpg.de>
- Do not remove `sum_factorization` argument from auxiliary equation for L2 boundary projection - Do not use sum factorization for assembly over 3D multi-patch domains (see issue pyccel#545) - Make 2D plots work for multi-patch domains - Set correct multipatch FEM space type on disconnected multipatch domains (fix pyccel#552) - Raise a warning when discretizing a multipatch domain with a periodic flag (fix pyccel#551) --------- Co-authored-by: Martin Campos Pinto <martin.campos-pinto@ipp.mpg.de> Co-authored-by: Martin Campos Pinto <campos@ann.jussieu.fr>
Make the necessary changes for being able to upload the `psydac` package to PyPI through a CI workflow: * Add actions `ubuntu_install` and `macos_install` for installation of non-Python dependencies * Require Python >= 3.10 (3.9 is no longer supported). Run tests with Python 3.14, too * Require Pyccel >= 2.1.0 and use its new subcommands * Update PETSc version to 3.24.2 * Add `igakit` as a `git` submodule * Use `meson-python` as build backend to bundle `igakit` into `psydac` for publishing to PyPI * Remove `setup.py` after dropping `setuptools` build backend * Write PSYDAC in all caps across the whole repository * Avoid version duplication: have `psydac/version.py` read value from `pyproject.toml` * Update instructions for editable install: flag `--no-build-isolation` should be given to `pip` * Do not require `wheel` and `numpy` for building * Add `deploy_check` workflow which uploads PSYDAC to TestPyPI from a pull request into the `main` branch * Add `deploy` workflow which uploads PSYDAC to PyPI after a merge into the `main` branch --------- Co-authored-by: Emily Bourne <louise.bourne@gmail.com>
**Relevant changes** - Explain that `devel` branch is cloned by default - Explain that `build/` folder should be removed before attempting another editable install **Additional changes** - Run documentation workflow whenever `README.md` is modified - Run testing workflow on PRs only when set to "ready for review" - Add new `Unreleased` section to `CHANGELOG.md`
Make sure that the MPI tests on Ubuntu are collected by Pytest when run through `mpirun`. To this end, pass `env=os.environ` to `subprocess.run()`. **Other changes** - Make sure that the full command is printed before being executed - Print the command with quotes to allow copy & paste to the terminal - Update `CHANGELOG.md`
### Main changes - Allow selecting a specific test function in a module by passing `--mod test_<MODULE>::test_<FUNCTION>` - Pass `--dist loadgroup` to group test execution by the `xdist_group` mark (see the documentation of [pytest-xdist](https://pytest-xdist.readthedocs.io/en/stable/distribution.html#running-tests-across-multiple-cpus)), which allows running non-thread-safe tests sequentially on a single runner - Remove local `.pytest_cache` folder before running tests - Move `pytest.ini` to package root, so it can be used after installation - If not present, copy `pytest.ini` to local working directory before running tests ### Additional changes - Fix the parallel creation of the folder `__psydac__` in `psydac.api.fem_bilinear_form`: only root process creates it
Change the way we color the background of our logo and remove some invisible layers. This reduces the file size by a lot, e.g. the banner went down from 7 MB to 64 KB. The changes are mostly visible in bright mode. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
Fix an issue that prevented the use of the sum factorization for matrix assembly: in the function `discretize`, the variable `terminal_expr` is not a scalar but rather a tuple with a single element. **Detailed list of changes** - Check whether `terminal_expr[0]` is a `DomainExpression`, not `terminal_expr` - In the folder `examples/performance/`, rename the file `README.md` to `matrix_assembly_speed_log.md` - Clarify purpose and usage of the aforementioned markdown file --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
Clean up platform-specific flags for GCC compilers. In particular, do not use the plausible but inexistent flag `-mcpu=apple-m4` on Apple M4 computers (which use ARM chips). Instead, always use `-march=native`, and additionally `-mavx` on `x86_64` architectures. Further, do not use `-mtune=native` as this is not always supported. These changes fix pyccel#568 --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
Allow Psydac to be installed with a parametrisable backend (C or Fortran). Following changes to the meson files generated by Pyccel the root `meson.build` file is updated to define `py` and `m_dep`. --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
- Use `pyccel >= 2.2.3`: this allows compiling all kernels with C
- Require `h5py >= 3.16` to allow for standard install with `setuptools
>= 81.0`
- Require `numpy >= 2.1` to support Python >= 3.10
- Use `pytest.toml` instead of `pytest.ini` for Pytest configuration
(requires `pytest >= 9.0`)
- Move coverage configuration from `pyproject.toml` to
`psydac/pytest.toml`
- Don't run postprocessing unit tests with `pytest-xdist` because `h5py`
is not thread-safe: add Pytest mark `@pytest.mark.xdist_group('h5py')`
to all unit tests in `psydac/api/tests/test_postprocessing.py`
- Return error code on failure of the `psydac test` command; this was
not correctly returned before, hence the CI could not detect when the
unit tests were failing in a subprocess
- Return error code on failure of the `psydac compile` command; this fix
does not directly affect the CI, but it is included for correctness.
- Check correct reporting of failure for `psydac test` command in CI
testing
- Use correct configuration file in coverage CI tests
- For clarity, rename temporary folder where all CI tests are run:
`pytest` -> `scratch`
- Clean up `.gitignore`; specifically, stop ignoring files which don't
exist anymore
- Speed-up some tests by using coarser grids and fewer patches in multi-patch domains - Improve asserts in `feec/tests/test_global_projectors.py` by using the expected convergence orders - Ignore additional paths through `.gitignore`: * `prof` folders generated by profiling tools * `__*pyccel__*/` folders generated by Pyccel --------- Co-authored-by: Yaman Güçlü <yaman.guclu@gmail.com>
Following the release of PETSc version `3.25.0` on March 30, 2026:
- Update PETSc version in `docs/installation.md` from `3.24.2` to
`3.25.0`
- Instead of `release` branch, download PETSc `3.25.0` in GitHub
workflows
Other Changes:
- Create 'install_petsc4py' action to install PETSc & petsc4py w/
complex support; use it in the workflows 'testing' and 'documentation'
- Rename actions:
* parallel_h5py -> install_h5py
* macos_install -> macos_installation
* ubuntu_install -> ubuntu_installation
- Update CHANGELOG.md
…ed files, accept upstream additions and deletions
…e-from-upstream-20260723
spossann
left a comment
There was a problem hiding this comment.
I would like the struphy tests to run before merging this. The CI test skipped all tests, maybe we should run them.
I'm actually a bit lost in the workflow for feectools at the moment, is this not testing struphy? https://github.com/struphy-hub/feectools/actions/runs/30090086679/job/89471175346?pr=71 |
Yes indeed, but the tests were all skipped, I guess due to testmon. We should run all struphy tests (from the struphy CI?) whenever we rebase with upstream. |
Ah, ok I see. Let's do it next week so we are sure the struphy tests pass before merging. |
Custom changes
@pytest.mark.parallelwas changed to@pytest.mark.mpi, so I had to update the pytest setup a bit.