Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1163 commits
Select commit Hold shift + click to select a range
aac876a
Whenever possible, use 'element_of' instead of class constructors.
yguclu Oct 14, 2019
a05e69f
Remove HDF5 files generated by unit tests.
yguclu Oct 15, 2019
ffe53ad
Move DDM non-unit test to examples directory.
yguclu Oct 15, 2019
27221e2
[codacy] Avoid usage of 'exec' statement.
yguclu Oct 31, 2019
d0f8017
[codacy] Remove unnecessary import.
yguclu Oct 31, 2019
5ac740f
Merge pull request #51 from pyccel/pip-install
ratnania Nov 5, 2019
70bdc34
Remove obsolete code generation for periodic case.
yguclu Nov 8, 2019
66a37e3
Merge pull request #56 from pyccel/devel-periodic
ratnania Nov 18, 2019
1220b18
Add Said's fixes for boundary assembly.
yguclu Nov 11, 2019
49d5b2d
Fix import statements for system of equations.
yguclu Nov 12, 2019
519625a
Add function 'compute_boundary_jacobian' to api/ast/utilities:
yguclu Nov 12, 2019
7955bae
Add more tests for biharmonic eqn.
yguclu Nov 14, 2019
7beb6ce
Fix broken unit tests w/ Neumann BCs.
yguclu Nov 14, 2019
3c1dcdc
Add unit tests with non-zero Neumann BCs.
yguclu Nov 14, 2019
ab60adb
Add unit tests w/ non-zero Neumann BCs & mapping:
yguclu Nov 14, 2019
1f5008d
Fix bug in function 'compute_normal_vector' of api/ast/utilities:
yguclu Nov 14, 2019
e90947c
Clean up Kernel class in api/ast/fem, and add extensive comments.
yguclu Nov 15, 2019
71d4590
Fix order of (trial, test) function in DiscreteEquation.
yguclu Nov 20, 2019
ff97dc2
New driver for 2D Poisson tests w/out mapping.
yguclu Nov 26, 2019
8bf3a29
Implement inhomogeneous Dirichlet BCs.
yguclu Nov 20, 2019
565cc38
Cleanup 2D Poisson test-case w/out mapping.
yguclu Nov 27, 2019
d13fd91
Extend 2D biharmonic test-cases w/out mapping.
yguclu Nov 27, 2019
c41db0a
Reorganize 2D scalar tests w/out mapping
yguclu Nov 28, 2019
4e5ce52
Reorganize 2D scalar tests w/ mapping
yguclu Nov 28, 2019
fdbac70
New 2D tests w/ mapping & inhomog. Dirichlet/Neumann BCs
yguclu Nov 28, 2019
f821e44
Bugfix: normalize vector normal to boundary
yguclu Nov 28, 2019
fe0bd7d
Improve handling of settings to linear solver
yguclu Dec 3, 2019
f86fa07
refactor: Add constructor 'Geometry.from_topological_domain'
yguclu Dec 19, 2019
6665983
Do not use Sympy version 1.5
yguclu Jan 13, 2020
978cdf9
ci: add Bandit configuration file
yguclu Jan 14, 2020
d4bfd73
chore: remove unused variables and imports
yguclu Jan 14, 2020
51814f0
Merge pull request #57 from pyccel/devel-nonzero-dirichlet
saidctb Jan 14, 2020
1ac3ce0
Fix installation requirements to successfully run all unit tests (#64)
yguclu Apr 28, 2020
0099111
Fix Travis-CI build button on GitHub (#65)
yguclu May 13, 2020
6be6dff
Psydac ast (#58)
saidctb May 14, 2020
686ade0
Multi-patch domain (#60)
saidctb Jun 25, 2020
fb11eef
Pyccel update (#71)
yguclu Jul 7, 2020
9dfea4e
Devel logical expr (#73)
saidctb Sep 23, 2020
a8d8b4d
Add Pyccel and Numba backends (#74)
saidctb Oct 5, 2020
192ff8d
Run unit tests on GitHub's servers using GitHub Actions workflow (#75)
yguclu Dec 3, 2020
1337cb1
Finite Element Exterior Calculus (#72)
yguclu Dec 18, 2020
7372c41
Import cache from sympy.core (#83)
ratnania Jan 15, 2021
ab58d15
Delete unused function physical2logical (#88)
saidctb Jan 22, 2021
af02f63
Fix field evaluation in linear and bilinear forms (#87)
saidctb Jan 25, 2021
a0c432b
FEEC with Dirichlet BCs. (#89)
yguclu Feb 2, 2021
4cf72ea
Rename ProductSpace as BlockVectorSpace (#93)
yguclu Feb 3, 2021
5de7bcc
Update README.rst (#94)
saidctb Feb 8, 2021
a46d5cf
Don't use SymPDE's obsolete classes for fields (#96)
yguclu Feb 8, 2021
d0ebaf2
Use new names for SymPDE classes (#98)
yguclu Feb 9, 2021
5ee05fd
Improve FemField and remove VectorFemField (#99)
yguclu Feb 12, 2021
686dde0
Make DiscreteEquation.solve() return a FemField (#100)
yguclu Feb 12, 2021
f5f053c
Add H1 push-forwards for consistency (#103)
campospinto Feb 24, 2021
ea2fe25
Fix bug in application of essential boundary conditions to linear sys…
yguclu Feb 26, 2021
79392da
Cleanup and simplify application of essential BCs (#105)
yguclu Feb 26, 2021
7e0f484
Support Ubuntu 20.04 LTS (#106)
yguclu Mar 9, 2021
23d9d59
Improve FEEC support for multi-patch domains (#97)
saidctb Mar 10, 2021
88a6834
Improve solution of vector problems (#108)
yguclu Mar 23, 2021
4239481
Fix order of free arguments in assembly methods (#112)
yguclu Apr 15, 2021
15ceb43
Fix assembly code when multiple FemField objects are free arguments (…
yguclu Apr 15, 2021
e492735
File generation for Igakit geometry (#110)
saidctb Apr 20, 2021
9d50d9c
Fix evaluation of non-uniform rational B-splines (NURBS) (#115)
saidctb Apr 27, 2021
e829745
Accelerate matrix-vector multiplication with backends (#116)
saidctb Apr 28, 2021
4d88c3e
Activate Numba backend for matrix-vector multiplication (#118)
saidctb Apr 29, 2021
a87c616
Optimize `kronecker_solve`, add `KroneckerLinearSolver` (#117)
davschneller May 4, 2021
1f6a4c7
Add BlockDiagonalSolver for combining LinearSolvers (#120)
davschneller May 6, 2021
d2d697a
Add function `build_pyccel_types_decorators` to psydac.ast.utilities …
yguclu May 6, 2021
296d077
Accelerate expressions containing `Constant` objects with Pyccel (#124)
yguclu May 7, 2021
daf041d
Clean up treatment of inhomogeneous Dirichlet BCs (#125)
yguclu May 11, 2021
807b659
Fix `__div__` -> `__truediv__` (#126)
davschneller May 18, 2021
6921214
Add `StencilMatrix.dot` backend propagation (#127)
davschneller May 18, 2021
fd2b12d
Add `DirectionalDerivativeOperator` for matrix-free derivative comput…
davschneller May 19, 2021
b78e7d6
Make the global projectors work in parallel (#134)
davschneller Jun 8, 2021
3e96509
Update PCG method to support `LinearSolver` and callable functions as…
davschneller Jun 8, 2021
fc50531
Add Null operators, enhance Identity operators (#133)
davschneller Jun 9, 2021
aba63ca
Propagate the `quad_order` parameter in the space discretization (#131)
davschneller Jun 14, 2021
85da373
Add basic support for distributed multi-dimensional FFTs (#130)
davschneller Jun 15, 2021
6159544
Fix distributed/parallel spline assembly when using DeRham complexes …
davschneller Jun 21, 2021
84f691f
Handle free arguments (fields and constants) in essential BCs (#137)
yguclu Jul 29, 2021
d386243
Add repeated knots (#135)
saidctb Aug 26, 2021
c73d76d
Do not require old Pyccel version 0.10.1 at installation (#139)
yguclu Sep 1, 2021
af35e40
Time dependent Navier Stokes (#140)
saidctb Sep 29, 2021
ddd3008
Fix constants (#146)
yguclu Oct 8, 2021
750a368
Make assembly algorithm and dot product faster (#147)
saidctb Nov 5, 2021
181e3f3
Improve the API (#148)
saidctb Dec 6, 2021
39940ec
Fix installation process (#155)
yguclu Jan 14, 2022
ec78233
Replace OrderedDict with dict; remove yamlloader dependency (#157)
anlavandier Jan 20, 2022
b3d74a6
Update README file (#154)
anlavandier Jan 21, 2022
8cb8c24
Add OpenMP pragmas (#156)
saidctb Feb 11, 2022
c9a2944
Improve support for multi-patch domains (#160)
saidctb Feb 15, 2022
1a4bfe0
Update signature of Mapping methods (#183)
anlavandier Feb 17, 2022
95bd975
Import scalar functions from math instead of Numpy (#181)
yguclu Feb 18, 2022
8af632e
Implement fast field evaluation on regular grid (#163)
anlavandier Feb 18, 2022
14d02cb
Use linearize for Navier Stokes equations (#184)
saidctb Feb 22, 2022
471bbf1
Fix 2D Poisson example (#187)
yguclu Feb 22, 2022
de19fd5
Improve `FemField` evaluation and small fixes (#193)
anlavandier Feb 25, 2022
ab32339
Pycellisation of the functions in `bsplines.py` (#198)
anlavandier Mar 9, 2022
43d236e
Conga (#185)
saidctb Mar 14, 2022
b967294
Fix docstrings (#203)
anlavandier Mar 15, 2022
36c0d91
Define output files' format. Add `OutputManager` & `PostProcessManage…
anlavandier Mar 17, 2022
024c3dd
Update igakit's URL. Build it w/ same Numpy version as Numba. Add pyp…
yguclu Mar 21, 2022
98b8f88
Fix bug in `PostProcessManager.export_to_vtk` (#208)
anlavandier Mar 22, 2022
6ba69ae
Fix `VectorFemField.eval_field` (#211)
anlavandier Mar 25, 2022
19b1f57
Correct names of pushforward functions in `VectorFemField` (#212)
anlavandier Mar 28, 2022
bdd34c5
Improve names of generated functions (#200)
yguclu Apr 5, 2022
7aee45b
Use Comm.Allreduce instead of Comm.allreduce (#216)
saidctb Apr 29, 2022
86ebd08
Add Jacobian matrix pointwise evaluation to `NurbsMapping` (#222)
anlavandier May 23, 2022
8414bab
Parallel single and multipatch saving and single patch parallel expor…
anlavandier May 24, 2022
e3a799b
Enforce contiguity in `bsplines.py` (#224)
anlavandier Jun 14, 2022
1af4523
Multipatch post-processing in serial and parallel (#230)
anlavandier Jul 18, 2022
185ab76
Add multipatch examples (#231)
anlavandier Jul 22, 2022
b977282
Update `output.md` (#234)
anlavandier Jul 27, 2022
e566012
Domain decomposition for multiple patches (#213)
saidctb Jul 28, 2022
0be048d
Multipatch discrete geometry tests for PostProcessManager (#238)
anlavandier Jul 29, 2022
ed19ecf
Element Domain Decomposition (#232)
saidctb Aug 6, 2022
4e62d96
Remove unused Fortran Files (#217)
anlavandier Sep 5, 2022
37dd945
PETSc interface (#244)
saidctb Sep 26, 2022
a2c676d
Non blocking communications (#240)
saidctb Oct 4, 2022
3eb6750
Fix bug in discretization of non-symmetric bilinear operators (#249)
vcarlier Nov 16, 2022
e244ba4
Enable use of splines of degree 0 (#250)
e-moral-sanchez Nov 16, 2022
96c4081
Fix span in assembly of FemField over boundary (#258)
e-moral-sanchez Dec 6, 2022
2301b2c
Add unit test for field in boundary integral (#260)
e-moral-sanchez Dec 21, 2022
596dbcd
Accelerate tosparse methods (#248)
saidctb Jan 18, 2023
88100ca
Delete print (#265)
saidctb Jan 23, 2023
48b2a06
Fix installation and improve README (#266)
yguclu Feb 7, 2023
ffb2390
Free MPI channels when StencilVector is deleted (#271)
yguclu Feb 10, 2023
14a94d1
New Linear Operators (#261)
jowezarek Feb 15, 2023
4fcadfd
Remove duplicated call to _dot in scalar product (#277)
yguclu Feb 16, 2023
e67faeb
Update ghost regions before assembling a form (#281)
vcarlier Mar 14, 2023
a9db3a4
Push-forward function optimization (#283)
tomcaruso Mar 17, 2023
cd37ad4
Fix warnings in the tests (#284)
tomcaruso Mar 20, 2023
e484711
Update linear operators (#279)
jowezarek Mar 27, 2023
5abb732
Do not decompose domain along user-specified dimensions (#286)
spossann Mar 29, 2023
df20860
Make linear algebra layer compatible with complex numbers (#273)
tomcaruso Apr 14, 2023
c35395c
Reorganize mapping classes (#246)
yguclu Apr 18, 2023
603f6de
Non conforming meshes (#241)
saidctb Apr 24, 2023
f978fbd
Remove linalg modules `identity` and `null` (#293)
tomcaruso Apr 24, 2023
bef9a32
Use Pyccel templates in `stencil2coo` kernels to handle complex data …
tomcaruso Apr 24, 2023
566c071
Update README.md with installation path info for hdf5-mpi (#297)
campospinto May 5, 2023
f2a91bb
Update license, authors, and build workflow (#304)
yguclu May 23, 2023
cda8a23
Add documentation workflow (#299)
jowezarek May 24, 2023
c7ee4d7
Update PSYDAC examples (#288)
jowezarek Jun 2, 2023
3f3cccb
Documentation (#303)
jowezarek Jun 6, 2023
af136e3
Add GMRES solver (#301)
e-moral-sanchez Jun 8, 2023
f037c07
Reduce number of jobs run on pull requests (#306)
yguclu Jun 9, 2023
9a10e76
Replace quad_order with nquads (#289)
jowezarek Jun 13, 2023
72d0d34
Use GeLaTo version 0.12 (#308)
yguclu Jun 23, 2023
b3923fb
Use the new Domain.join() constructor of SymPDE (#309)
saidctb Jul 3, 2023
284f01a
Complex API (#302)
tomcaruso Jul 3, 2023
7a4e095
Adapt `PostProcessManager` and `OutputManager` to support complex val…
tomcaruso Jul 7, 2023
1aaa540
Drop Python 3.7 and support Python 3.11 (#315)
yguclu Jul 10, 2023
ec212fe
Bug Fix (#316)
saidctb Jul 10, 2023
f74f772
Accelerate kernel files with Pyccel at installation (#305)
tomcaruso Jul 20, 2023
b154c81
Fix bug in set_refined_space (#324)
saidctb Jul 24, 2023
19b89a1
Invert quadrature loops (#322)
saidctb Jul 25, 2023
a623184
Upgrade SymPy (#321)
tomcaruso Aug 29, 2023
02d1bf7
Use SemiNorm (#325)
saidctb Aug 31, 2023
56c9d4e
Add kernels for various linear algebra operations (#310)
vcarlier Sep 7, 2023
8147e6e
Do not access '_name' attribute of object with no name (#328)
vcarlier Sep 25, 2023
3eee49e
Add `recycle` flag to linear solvers' constructors (#334)
jowezarek Sep 29, 2023
5d2950d
Fix `DirectionalDerivativeOperator.tosparse` w/ 1 cell & periodic (#340)
e-moral-sanchez Oct 12, 2023
652b29f
Fix dtype in GMRES and MINRES (#345)
e-moral-sanchez Oct 12, 2023
22258e7
Add Hvec space to de Rham sequence, if requested (#282)
vcarlier Oct 18, 2023
1e42b9c
Make `KroneckerLinearSolver` a subclass of `LinearOperator` (#338)
jowezarek Oct 23, 2023
5bdd39c
Remove Numba backend (#348)
yguclu Oct 23, 2023
4c53ac3
De Rham sequences w/ knot multiplicity > 1 (#339)
vcarlier Oct 25, 2023
535717c
Use type annotations in generated code (#352)
yguclu Nov 9, 2023
5eefba6
Add documentation to DiscreteDerham (#349)
vcarlier Dec 1, 2023
78567a7
Import functions from cmath when domain is complex (#358)
e-moral-sanchez Dec 1, 2023
8ac3eb5
Add optional `out` argument for `transpose` and `copy` in `StencilMat…
vcarlier Dec 4, 2023
96ef438
Test commutativity of de Rham diagram with knot multiplicity > 1 (#365)
vcarlier Dec 7, 2023
3c9936b
Fix parallel bug in `simplify` method of `SumLinearOperator` (#367)
vcarlier Dec 15, 2023
2896f91
Construct de Rham sequence with a NURBS/spline mapping (#366)
vcarlier Jan 29, 2024
39c4fe7
Fix MPI parallel tests on macOS (#372)
yguclu Jan 29, 2024
e3a9e27
Speed up unit tests (#373)
yguclu Jan 30, 2024
e4b5580
Clean up linear solvers, add `StencilDiagonalMatrix` and `diagonal()`…
spossann Jan 31, 2024
d09e43e
Fix GFortran compiler flags on ARM processors (#376)
yguclu Feb 13, 2024
cd4c9fb
Better documentation (#375)
jowezarek Feb 13, 2024
b9bf209
Avoid runtime warnings (#355)
yguclu Mar 1, 2024
bcc26be
Update AUTHORS (#359)
yguclu Mar 2, 2024
2677028
Speed up Pyccelization of built-in kernels (#384)
yguclu Mar 6, 2024
1b5f35f
Use abstract properties of `LinearOperator` in its class methods (#386)
campospinto Mar 12, 2024
c4d9e40
Fix example file maxwell_2d_multi_patch.py (#387)
jowezarek Mar 13, 2024
2f09205
Fix bug in `copy` method of `BlockLinearOperator` (#388)
jowezarek Mar 13, 2024
cdfb337
Conversion to PETSc with complex (#381)
e-moral-sanchez Mar 14, 2024
cf4f4b6
Improve developers' documentation (#378)
jowezarek Mar 18, 2024
9a7c8f7
Fix `None` value in `Pushforward` (#393)
campospinto Mar 27, 2024
fbefd10
Fix several errors in `cell_index_p` (#392)
campospinto Mar 27, 2024
18758bc
Add 1D field evaluation kernels (#394)
wbarham Mar 27, 2024
c2dffff
Provide alternative shell command for discovering HDF5_DIR (#399)
kvrigor Apr 13, 2024
6ebb6e6
Fix function array_to_psydac (#404)
e-moral-sanchez Apr 18, 2024
2873649
Pass `nquads` when discretizing integral expressions, not spaces (#403)
yguclu Apr 19, 2024
904b7d7
Remove deprecated distutils (Python >=3.12) (#407)
kvrigor May 13, 2024
6850cb0
Fixes for CI failures (#421)
yguclu Aug 1, 2024
655cb8a
Improve conversion to PETSc (#408)
e-moral-sanchez Aug 1, 2024
d3651dd
Non Matching Multipatch (#320)
FrederikSchnack Aug 2, 2024
8340176
Use public properties `domain` & `codomain` in `LinearOperator.__neg_…
campospinto Aug 2, 2024
f7e4d6b
Matrix-Free Linear Operator (#423)
yguclu Aug 5, 2024
ba0f47a
Support Python 3.12 (#424)
yguclu Aug 16, 2024
fe14755
Test Pyccel optimization flags in CI (#427)
kvrigor Aug 16, 2024
10f9850
Remove __new__ from IdentityOperator (#371)
spossann Aug 20, 2024
1f338bc
Cache Psydac dependencies in CI (#411)
kvrigor Aug 20, 2024
43833c2
Improve and test Pyccel compiler flags (#428)
yguclu Sep 6, 2024
516363e
Update calls to `numpy.reshape` to avoid deprecation warnings (#433)
FrederikSchnack Sep 18, 2024
252ead6
Circumvent `apt-get` download error (#440)
yguclu Sep 19, 2024
c8a8906
Mention C support in near future in README (#441)
yguclu Sep 19, 2024
7306f23
Remove `is_block` property from `VectorFemSpace` (#439)
max-models Sep 25, 2024
4ac671e
Update `stencil2coo` kernels for shifts > 1 (#442)
max-models Sep 27, 2024
5ff3884
Add `sqrt` option to `diagonal` method of stencil/block matrices (#434)
max-models Sep 27, 2024
74c1271
fix bug gmres (#452)
e-moral-sanchez Jan 22, 2025
66205a5
CI Updates: Code coverage report, Ubuntu 24.04, PETSc 3.22 (#443)
kvrigor Feb 5, 2025
5669252
Expose inter-/histopolation matrices in GlobalProjector, add unit tes…
spossann Feb 12, 2025
8c1adc3
Avoid installing h5py from cache (#430)
kvrigor Feb 12, 2025
083cd94
Allow keyword parameters in the dot method of `MatrixFreeLinearOperat…
e-moral-sanchez Feb 12, 2025
d27cfdd
Small fixes for operators with complex (#455)
e-moral-sanchez Feb 18, 2025
cb49555
Fix Greville point collocation matrix for single grid point case (#446)
max-models Mar 5, 2025
ae3e803
Use SymPDE version 0.19.1 (#445)
yguclu Mar 5, 2025
b2b38c6
Improve FEM API (names, properties, constructors...) & plot_field() (…
campospinto Mar 28, 2025
8965eb9
Enable mpi4py 4.0 (#478)
spossann Apr 1, 2025
5a06ba5
Support Python 3.13 (#475)
yguclu Apr 2, 2025
4203343
Fix PSYDAC_BACKEND_GPYCCEL flags on latest Apple silicon (#480)
max-models Apr 7, 2025
1b34019
Resolve warnings in sequential unit tests (#481)
yguclu Apr 8, 2025
adb453a
Pass `out` parameter to `petsc_to_psydac` (#483)
e-moral-sanchez Apr 11, 2025
24646ef
Rename `dot` as `inner` in `Vector`, `VectorSpace`, and subclasses (#…
yguclu May 5, 2025
f96e888
Update docstring for inner product in polar/dense.py (#488)
campospinto May 9, 2025
54ea3ce
Add a `dot_inner` concrete method to the base class `LinearOperator` …
yguclu May 26, 2025
5e3d769
Install PETSc-3.23.2 (latest version) (#499)
yguclu May 30, 2025
2f242b1
Update authors (#500)
yguclu May 30, 2025
b5230b4
Fix the code generation of unnecessary derivatives (#490)
FrederikSchnack Jun 13, 2025
f387410
Fix bug in `allocate_matrices` in `DiscreteBilinearForm` (#507)
FrederikSchnack Jun 18, 2025
bccddfc
Enable Pyccel 2.0 (#503)
max-models Jun 28, 2025
42b214e
New installation procedure and README (#510)
yguclu Jul 14, 2025
776ac29
Fast Matrix Assembly (#448)
jowezarek Sep 10, 2025
fe56bcd
Improve multipatch FEM API (#509)
FrederikSchnack Sep 22, 2025
ccbd6e3
Allow `mpi_dims_mask` with geometry file (#526)
yguclu Oct 1, 2025
c531d98
Fix the parallel low-level 2D Poisson example (#528)
yguclu Oct 13, 2025
c97f265
Fix method `plot_2d_decomposition` of `TensorFemSpace` (#529)
yguclu Oct 21, 2025
b6d4d5d
Describe library name in README.md (#535)
yguclu Oct 30, 2025
c7ca428
Fix parallelization bug in polar splines (#539)
yguclu Nov 6, 2025
1e6a114
Add Dirichlet Boundary Projectors (#536)
jowezarek Nov 21, 2025
45c7653
Make `psydac-accelerate` a real command (#542)
FrederikSchnack Nov 24, 2025
b459cb9
Remove old files (#541)
FrederikSchnack Nov 24, 2025
dc93a31
Add diagonal() to KroneckerStencilMatrix (#537)
jowezarek Nov 25, 2025
b68b7eb
Add license header to every Python file (#544)
yguclu Nov 27, 2025
a89a6ee
Add Logo (#540)
FrederikSchnack Nov 28, 2025
1febd12
Add LST preconditioner (#538)
jowezarek Dec 13, 2025
bb76bb1
Refactor CG AND BiCGSTAB, have pc baked in the same class (#512)
anushkasinghh Dec 17, 2025
96b4312
Fix some bugs in multi-patch domains (#546)
yguclu Dec 18, 2025
689127d
Prepare release (#553)
yguclu Dec 23, 2025
a24643a
Fix sum factorization (#558)
yguclu Dec 23, 2025
d2d673a
Reorganize psydac examples (#543)
FrederikSchnack Dec 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions .github/actions/macos_install/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: 'MacOS installation commands'

runs:
using: "composite"
steps:

- name: Install non-Python dependencies on macOS
run: |
brew install make
brew install open-mpi
brew install hdf5-mpi
brew install libomp
GFORTRAN_HOME=$(which gfortran || true)
echo "GFORTRAN_HOME : $GFORTRAN_HOME"
if [[ ! -f "$GFORTRAN_HOME" ]]; then
gfort=$(find ${PATH//:/\/ } -name 'gfortran-*' -exec basename {} \; | sort | tail -n 1 || true)
echo "Found $gfort"
gfort_path=$(which ${gfort})
folder=$(dirname ${gfort_path})
ln -s ${gfort_path} ${folder}/gfortran
fi
echo "MPI_OPTS=--oversubscribe" >> $GITHUB_ENV
echo "/opt/homebrew/opt/make/libexec/gnubin" >> $GITHUB_PATH
shell: bash
22 changes: 22 additions & 0 deletions .github/actions/ubuntu_install/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: 'Ubuntu installation commands'

runs:
using: "composite"
steps:

- name: Install non-Python dependencies on Ubuntu
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: gfortran openmpi-bin libopenmpi-dev libhdf5-openmpi-dev
version: 1.0
execute_install_scripts: true

# When loading cached apt packages, the default MPI compiler isn't set.
# Workaround is to 'reinstall' openmpi-bin, which doesn't actually perform
# installation (since openmpi-bin already exists), but instead reruns
# `update-alternatives` which fixes the symlinks to mpicc/mpif90.
- name: Reconfigure non-Python dependencies on Ubuntu
run: |
sudo apt-get update
sudo apt-get install --reinstall openmpi-bin libhdf5-openmpi-dev liblapack-dev libblas-dev
shell: bash
131 changes: 131 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
name: Deploy new version to PyPI

on:
workflow_run:
workflows: [testing]
branches: [main]
types:
- completed

jobs:
deployVersion:
runs-on: ubuntu-latest
if: github.repository == 'pyccel/psydac'
steps:
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: true

- name: Install dependencies
uses: ./.github/actions/ubuntu_install

- name: Update build tools
run: |
pip install --upgrade pip
pip install --upgrade build
pip install --upgrade twine

- name: Build and deploy to PyPI
run: |
echo ${{ github.event.workflow_run.head_branch }}
python -m build --sdist
ls dist/*
twine upload --repository pypi dist/* --non-interactive
shell: bash
env:
TWINE_USERNAME: '__token__'
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}

- name: Install psydac package without extra components
run: |
pip install .

- name: "Get tag name"
id: tag_name
run: |
version=$(python -c "from psydac import __version__; print(__version__)")
echo "VERSION=${version}" >> $GITHUB_OUTPUT
echo "TAG_NAME=v${version}" >> $GITHUB_OUTPUT

- name: "Get release notes"
id: release_notes
run: |
echo "## What's Changed" > release_notes.md
# TODO: CHANGELOG parsing can be enabled when file is ready
# START_LINE=$(grep "^## " CHANGELOG.md -n | head -1 | cut -d: -f -1)
# END_LINE=$(grep "^## " CHANGELOG.md -n | head -2 | tail -1 | cut -d: -f -1)
# START_LINE=$((${START_LINE}+1))
# END_LINE=$((${END_LINE}-1))
# echo "## What's Changed" > release_notes.md
# sed -n ${START_LINE},${END_LINE}p CHANGELOG.md >> release_notes.md

- name: "Get contributors"
run: |
# Get relevant commits
LAST_RELEASE_COMMIT=$(git log -2 --pretty=%H | tail -1)
CURRENT_RELEASE_COMMIT=$(git log -1 --pretty=%H)

# Find any new lines in the AUTHORS file
NEW_CONTRIBUTORS=$(git diff --no-indent-heuristic --unified=0 --no-color ${LAST_RELEASE_COMMIT}..${CURRENT_RELEASE_COMMIT} AUTHORS | { grep "^\+[^+]" || true; } | cut -d ' ' -f 2-)
if [ -n "${NEW_CONTRIBUTORS}" ]
then
# If there are new contributors then add a section with their names
echo "## New Contributors" >> release_notes.md
while IFS= read -r c
do
echo "- ${c}" >> release_notes.md
done <<< "${NEW_CONTRIBUTORS}"
echo "" >> release_notes.md
fi

# Find the PR which created the release
PR_ID=$(gh api -H "Accept: application/vnd.github+json" -H "X-GitHub-Api-Version: 2022-11-28" /search/issues?q="${CURRENT_RELEASE_COMMIT}" | jq '.["items"][0]["number"]')
# Extract authors from all commits in the PR
CONTRIBUTORS=$(gh pr view ${PR_ID} --json commits | jq '.["commits"][]["authors"][]["login"]' | tr -d '"' | sort -u)

# Add a hidden section listing the user names of all authors on commits in this release
echo "<details>" >> release_notes.md
echo "" >> release_notes.md
echo "## Contributors" >> release_notes.md
for c in ${CONTRIBUTORS}
do
echo "- @$c" >> release_notes.md
done
echo "" >> release_notes.md
echo "</details>" >> release_notes.md

# Get the full changelog link
PREVIOUS_TAG=$(gh release list --limit 1 --json tagName | jq '.[]["tagName"]' | tr -d '"')

echo "" >> release_notes.md
echo "**Full list of changes**: [${PREVIOUS_TAG}..${tag_name}](https://github.com/pyccel/pyccel/compare/${PREVIOUS_TAG}..${tag_name})" >> release_notes.md

shell: bash
env:
GH_TOKEN: ${{ github.token }}
tag_name: ${{ steps.tag_name.outputs.TAG_NAME }}

- name: "Update repo tags"
uses: EndBug/latest-tag@latest
with:
ref: ${{ steps.tag_name.outputs.TAG_NAME }}

- name: "Update releases"
run: |
gh api \
--method POST \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/pyccel/pyccel/releases \
-f "tag_name=${tag_name}" -f "name=Version ${version}" -F "body=@release_notes.md" -F "draft=false" -F "prerelease=false" -F "generate_release_notes=false"
shell: bash
env:
tag_name: ${{ steps.tag_name.outputs.TAG_NAME }}
version: ${{ steps.tag_name.outputs.VERSION }}
GH_TOKEN: ${{ github.token }}
101 changes: 101 additions & 0 deletions .github/workflows/deploy_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
name: Check deployment of new version to TestPyPI

on:
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
branches: [main]

jobs:
deployTest:
runs-on: ubuntu-latest
if: github.repository == 'pyccel/psydac'
steps:
- id: duplicate_check
uses: fkirc/skip-duplicate-actions@v5
with:
skip_after_successful_duplicate: 'true'
paths: '["psydac/**", "pyproject.toml", "setup.py", ".github/workflows/deploy_check.yml", ".github/actions/**"]'

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'

- name: Checkout repository
if: steps.duplicate_check.outputs.should_skip != 'true'
uses: actions/checkout@v4
with:
submodules: true

- name: Install dependencies
if: steps.duplicate_check.outputs.should_skip != 'true'
uses: ./.github/actions/ubuntu_install

- name: Update build tools
if: steps.duplicate_check.outputs.should_skip != 'true'
run: |
pip install --upgrade pip
pip install --upgrade build
pip install --upgrade twine

- name: Build and deploy to TestPyPI
if: steps.duplicate_check.outputs.should_skip != 'true'
run: |
CURRENT_VERSION=$(grep 'version *= *"\([0-9\.]*\)"' pyproject.toml | grep '[0-9\.]*' -o)
TEST_VERSION=${CURRENT_VERSION}.dev$(date +%Y%m%d%H%M%S)
sed -i.bak "s/\"${CURRENT_VERSION}\"/\"${TEST_VERSION}\"/g" pyproject.toml && rm pyproject.toml.bak
echo "TEST_VERSION=${TEST_VERSION}" >> $GITHUB_ENV
# Setup dummy user to save temp version for meson
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
git commit -m "Save temp version" pyproject.toml
python -m build --sdist
ls dist/*
twine check --strict dist/*
twine upload --repository testpypi dist/* --non-interactive --verbose
sleep 60
shell: bash
env:
TWINE_USERNAME: '__token__'
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_API_TOKEN }}

- name: Download psydac package from TestPyPI and install it
if: steps.duplicate_check.outputs.should_skip != 'true'
timeout-minutes: 60
run: |
WAIT=20
SUCCESS=0
for i in {1..5}; do
echo "Attempt $i: Installing psydac==${TEST_VERSION}..."""
if pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ psydac[test]=="${TEST_VERSION}"
then
SUCCESS=1
break
else
echo "Install failed. Retrying in $WAIT seconds..."
sleep $WAIT
fi
done

# Final check
if [ "$SUCCESS" -ne 1 ]; then
echo "ERROR: Failed to install psydac==${TEST_VERSION}."
exit 1
fi
shell: bash

- name: Initialize test directory
if: steps.duplicate_check.outputs.should_skip != 'true'
run: |
mkdir pytest
cp mpi_tester.py pytest

- name: Run single-process tests with Pytest
if: steps.duplicate_check.outputs.should_skip != 'true'
working-directory: ./pytest
run: |
pytest -n auto --pyargs psydac -m "not parallel and not petsc"
Loading