struphy 2.3.2__tar.gz → 2.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (357) hide show
  1. {struphy-2.3.2 → struphy-2.4.0}/LICENSE +1 -1
  2. {struphy-2.3.2/src/struphy.egg-info → struphy-2.4.0}/PKG-INFO +42 -32
  3. struphy-2.4.0/pyproject.toml +158 -0
  4. {struphy-2.3.2 → struphy-2.4.0}/setup.cfg +3 -0
  5. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/bsplines_kernels.py +15 -11
  6. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/tests/test_bsplines_kernels.py +30 -29
  7. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/compile_struphy.mk +1 -13
  8. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/conftest.py +8 -3
  9. struphy-2.4.0/src/struphy/console/compile.py +326 -0
  10. struphy-2.4.0/src/struphy/console/format.py +1321 -0
  11. struphy-2.4.0/src/struphy/console/main.py +1132 -0
  12. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/console/pproc.py +26 -21
  13. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/console/profile.py +3 -5
  14. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/console/run.py +148 -122
  15. struphy-2.4.0/src/struphy/console/test.py +137 -0
  16. struphy-2.4.0/src/struphy/console/tests/test_console.py +537 -0
  17. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/console/units.py +4 -5
  18. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/dependencies.py +27 -26
  19. struphy-2.4.0/src/struphy/diagnostics/console_diagn.py +280 -0
  20. struphy-2.4.0/src/struphy/diagnostics/continuous_spectra.py +362 -0
  21. struphy-2.4.0/src/struphy/diagnostics/diagn_tools.py +1017 -0
  22. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/dispersion_relations/analytic.py +308 -322
  23. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/dispersion_relations/base.py +43 -52
  24. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/kernels_2d.py +94 -31
  25. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +523 -339
  26. struphy-2.4.0/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +444 -0
  27. struphy-2.4.0/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +672 -0
  28. struphy-2.4.0/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +595 -0
  29. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +692 -757
  30. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +4 -5
  31. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +4 -5
  32. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/examples/_draw_parallel.py +21 -11
  33. struphy-2.4.0/src/struphy/feec/basis_projection_kernels.py +598 -0
  34. struphy-2.4.0/src/struphy/feec/basis_projection_ops.py +2331 -0
  35. struphy-2.4.0/src/struphy/feec/local_projectors_args_kernels.py +120 -0
  36. struphy-2.4.0/src/struphy/feec/local_projectors_kernels.py +1202 -0
  37. struphy-2.4.0/src/struphy/feec/mass.py +3174 -0
  38. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/preconditioner.py +319 -196
  39. struphy-2.4.0/src/struphy/feec/projectors.py +2159 -0
  40. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/psydac_derham.py +1096 -686
  41. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_field_init.py +529 -271
  42. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_l2_projectors.py +45 -45
  43. struphy-2.4.0/src/struphy/feec/tests/test_local_projectors.py +1537 -0
  44. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_mass_matrices.py +137 -2
  45. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/utilities.py +96 -55
  46. struphy-2.4.0/src/struphy/feec/utilities_local_projectors.py +915 -0
  47. struphy-2.4.0/src/struphy/feec/variational_utilities.py +284 -0
  48. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/braginskii_equil/base.py +215 -211
  49. struphy-2.4.0/src/struphy/fields_background/fluid_equils/base.py +366 -0
  50. struphy-2.4.0/src/struphy/fields_background/fluid_equils/equils.py +49 -0
  51. struphy-2.4.0/src/struphy/fields_background/mhd_equil/base.py +1048 -0
  52. struphy-2.4.0/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +261 -0
  53. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/equils.py +1053 -962
  54. struphy-2.4.0/src/struphy/fields_background/tests/test_gvec_equil.py +164 -0
  55. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/base.py +719 -386
  56. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/domains.py +309 -188
  57. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/mappings_kernels.py +467 -344
  58. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/utilities.py +42 -35
  59. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/initial/eigenfunctions.py +3 -4
  60. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/initial/perturbations.py +232 -203
  61. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/initial/utilities.py +3 -3
  62. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/parameters.yml +13 -8
  63. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_02.yml +13 -4
  64. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_05a.yml +3 -6
  65. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_05b.yml +3 -6
  66. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_05c.yml +3 -10
  67. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_05d.yml +3 -10
  68. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_05e.yml +3 -10
  69. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_05f.yml +3 -10
  70. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_12a.yml +3 -6
  71. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_12b.yml +3 -6
  72. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/setup.py +161 -129
  73. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/kinetic_background/base.py +11 -9
  74. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/kinetic_background/maxwellians.py +415 -379
  75. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/schur_solver.py +24 -34
  76. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/main.py +158 -121
  77. struphy-2.4.0/src/struphy/models/base.py +2293 -0
  78. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/models/fluid.py +261 -205
  79. struphy-2.4.0/src/struphy/models/hybrid.py +1244 -0
  80. struphy-2.4.0/src/struphy/models/kinetic.py +1265 -0
  81. struphy-2.4.0/src/struphy/models/tests/test_fluid_models.py +53 -0
  82. struphy-2.4.0/src/struphy/models/tests/test_hybrid_models.py +53 -0
  83. struphy-2.4.0/src/struphy/models/tests/test_kinetic_models.py +53 -0
  84. struphy-2.4.0/src/struphy/models/tests/test_toy_models.py +42 -0
  85. struphy-2.4.0/src/struphy/models/tests/util.py +214 -0
  86. struphy-2.4.0/src/struphy/models/toy.py +1201 -0
  87. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/accumulation/accum_kernels.py +583 -467
  88. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/accumulation/particles_to_grid.py +181 -115
  89. struphy-2.4.0/src/struphy/pic/base.py +2935 -0
  90. struphy-2.4.0/src/struphy/pic/particles.py +944 -0
  91. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/pushing/eval_kernels_gc.py +197 -161
  92. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/pushing/pusher.py +103 -80
  93. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/pushing/pusher_args_kernels.py +56 -53
  94. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/pushing/pusher_kernels.py +1448 -829
  95. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/pushing/pusher_kernels_gc.py +915 -737
  96. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/pushing/pusher_utilities_kernels.py +117 -142
  97. struphy-2.4.0/src/struphy/pic/sorting_kernels.py +166 -0
  98. struphy-2.4.0/src/struphy/pic/sph_eval_kernels.py +239 -0
  99. struphy-2.4.0/src/struphy/pic/tests/test_accum_vec_H1.py +170 -0
  100. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_accumulation.py +239 -126
  101. struphy-2.4.0/src/struphy/pic/tests/test_binning.py +1075 -0
  102. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_draw_parallel.py +42 -29
  103. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pushers.py +350 -205
  104. struphy-2.4.0/src/struphy/pic/tests/test_sorting.py +94 -0
  105. struphy-2.4.0/src/struphy/pic/tests/test_sph.py +74 -0
  106. struphy-2.4.0/src/struphy/pic/utilities.py +67 -0
  107. struphy-2.4.0/src/struphy/pic/utilities_kernels.py +807 -0
  108. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/polar/basic.py +63 -37
  109. struphy-2.4.0/src/struphy/post_processing/orbits/orbits_kernels.py +68 -0
  110. struphy-2.4.0/src/struphy/post_processing/orbits/orbits_tools.py +223 -0
  111. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/post_processing/post_processing_tools.py +219 -111
  112. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/post_processing/pproc_struphy.py +53 -7
  113. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/propagators/base.py +105 -86
  114. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/propagators/propagators_coupling.py +1104 -766
  115. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/propagators/propagators_fields.py +2971 -1961
  116. struphy-2.4.0/src/struphy/propagators/propagators_markers.py +1445 -0
  117. struphy-2.4.0/src/struphy/psydac-2.4.0-py3-none-any.whl +0 -0
  118. struphy-2.4.0/src/struphy/tutorials/tests/test_tutorials.py +175 -0
  119. struphy-2.4.0/src/struphy/utils/utils.py +77 -0
  120. {struphy-2.3.2 → struphy-2.4.0/src/struphy.egg-info}/PKG-INFO +42 -32
  121. {struphy-2.3.2 → struphy-2.4.0}/src/struphy.egg-info/SOURCES.txt +18 -10
  122. struphy-2.4.0/src/struphy.egg-info/requires.txt +41 -0
  123. struphy-2.3.2/pyproject.toml +0 -86
  124. struphy-2.3.2/src/struphy/console/compile.py +0 -273
  125. struphy-2.3.2/src/struphy/console/main.py +0 -770
  126. struphy-2.3.2/src/struphy/console/test.py +0 -367
  127. struphy-2.3.2/src/struphy/diagnostics/console_diagn.py +0 -217
  128. struphy-2.3.2/src/struphy/diagnostics/continuous_spectra.py +0 -360
  129. struphy-2.3.2/src/struphy/diagnostics/diagn_tools.py +0 -708
  130. struphy-2.3.2/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -139
  131. struphy-2.3.2/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -208
  132. struphy-2.3.2/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -159
  133. struphy-2.3.2/src/struphy/feec/basis_projection_kernels.py +0 -1976
  134. struphy-2.3.2/src/struphy/feec/basis_projection_ops.py +0 -1371
  135. struphy-2.3.2/src/struphy/feec/mass.py +0 -1764
  136. struphy-2.3.2/src/struphy/feec/projectors.py +0 -1780
  137. struphy-2.3.2/src/struphy/feec/tests/test_local_projectors.py +0 -259
  138. struphy-2.3.2/src/struphy/feec/variational_utilities.py +0 -226
  139. struphy-2.3.2/src/struphy/fields_background/mhd_equil/base.py +0 -927
  140. struphy-2.3.2/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -238
  141. struphy-2.3.2/src/struphy/fields_background/tests/test_gvec_equil.py +0 -175
  142. struphy-2.3.2/src/struphy/models/base.py +0 -2101
  143. struphy-2.3.2/src/struphy/models/hybrid.py +0 -1132
  144. struphy-2.3.2/src/struphy/models/kinetic.py +0 -1043
  145. struphy-2.3.2/src/struphy/models/tests/test_fluid_models.py +0 -53
  146. struphy-2.3.2/src/struphy/models/tests/test_hybrid_models.py +0 -52
  147. struphy-2.3.2/src/struphy/models/tests/test_kinetic_models.py +0 -55
  148. struphy-2.3.2/src/struphy/models/tests/test_toy_models.py +0 -40
  149. struphy-2.3.2/src/struphy/models/tests/util.py +0 -144
  150. struphy-2.3.2/src/struphy/models/toy.py +0 -1069
  151. struphy-2.3.2/src/struphy/pic/base.py +0 -1471
  152. struphy-2.3.2/src/struphy/pic/particles.py +0 -551
  153. struphy-2.3.2/src/struphy/pic/tests/test_accum_vec_H1.py +0 -123
  154. struphy-2.3.2/src/struphy/pic/tests/test_binning.py +0 -638
  155. struphy-2.3.2/src/struphy/pic/utilities.py +0 -62
  156. struphy-2.3.2/src/struphy/pic/utilities_kernels.py +0 -637
  157. struphy-2.3.2/src/struphy/propagators/propagators_markers.py +0 -1175
  158. struphy-2.3.2/src/struphy/psydac-0.1.13-py3-none-any.whl +0 -0
  159. struphy-2.3.2/src/struphy/tutorials/longer_examples/TAE_tokamak.py +0 -252
  160. struphy-2.3.2/src/struphy/tutorials/longer_examples/linearextendedmhd.py +0 -217
  161. struphy-2.3.2/src/struphy/tutorials/longer_examples/linearmhdvlasov_cc.py +0 -142
  162. struphy-2.3.2/src/struphy/tutorials/longer_examples/linearmhdvlasov_pc.py +0 -142
  163. struphy-2.3.2/src/struphy/tutorials/tests/__init__.py +0 -0
  164. struphy-2.3.2/src/struphy/tutorials/tests/test_tutorials.py +0 -143
  165. struphy-2.3.2/src/struphy/tutorials/utilities.py +0 -12
  166. struphy-2.3.2/src/struphy.egg-info/requires.txt +0 -28
  167. {struphy-2.3.2 → struphy-2.4.0}/README.md +0 -0
  168. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/__init__.py +0 -0
  169. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/__init__.py +0 -0
  170. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/bsplines.py +0 -0
  171. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  172. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  173. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
  174. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  175. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/tests/__init__.py +0 -0
  176. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
  177. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/console/__init__.py +0 -0
  178. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/console/params.py +0 -0
  179. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/diagnostics/__init__.py +0 -0
  180. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/diagnostics/paraview/__init__.py +0 -0
  181. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
  182. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
  183. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/dispersion_relations/__init__.py +0 -0
  184. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/dispersion_relations/utilities.py +0 -0
  185. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
  186. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  187. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -0
  188. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
  189. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
  190. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
  191. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
  192. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
  193. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
  194. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
  195. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_kernels_control_variate.py +0 -0
  196. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_cv_kernel_2.py +0 -0
  197. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_kernels_control_variate.py +0 -0
  198. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
  199. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
  200. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
  201. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
  202. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
  203. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
  204. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
  205. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
  206. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
  207. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
  208. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
  209. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
  210. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
  211. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
  212. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
  213. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
  214. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
  215. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
  216. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
  217. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
  218. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
  219. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
  220. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
  221. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_L2_projector_kernel.py +0 -0
  222. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_L2.py +0 -0
  223. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_local.py +0 -0
  224. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_local_projector_kernel.py +0 -0
  225. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
  226. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
  227. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
  228. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
  229. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
  230. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
  231. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
  232. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
  233. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/__init__.py +0 -0
  234. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  235. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/linear_operators.py +0 -0
  236. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/mass_kernels.py +0 -0
  237. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/__init__.py +0 -0
  238. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_basis_ops.py +0 -0
  239. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_derham.py +0 -0
  240. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_eval_field.py +0 -0
  241. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -0
  242. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
  243. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
  244. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
  245. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/feec/utilities_kernels.py +0 -0
  246. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/__init__.py +0 -0
  247. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/braginskii_equil/__init__.py +0 -0
  248. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/braginskii_equil/equils.py +0 -0
  249. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
  250. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
  251. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  252. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
  253. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
  254. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  255. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
  256. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  257. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
  258. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  259. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
  260. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
  261. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
  262. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/projected_equils.py +0 -0
  263. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
  264. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/tests/__init__.py +0 -0
  265. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
  266. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
  267. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
  268. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/__init__.py +0 -0
  269. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/evaluation_kernels.py +0 -0
  270. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/map_coef/__init__.py +0 -0
  271. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/tests/__init__.py +0 -0
  272. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/tests/test_domain.py +0 -0
  273. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/transform_kernels.py +0 -0
  274. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/geometry/utilities_kernels.py +0 -0
  275. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/initial/__init__.py +0 -0
  276. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/initial/tests/__init__.py +0 -0
  277. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/initial/tests/test_init_perturbations.py +0 -0
  278. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/__init__.py +0 -0
  279. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/batch/batch_cobra.sh +0 -0
  280. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/batch/p_016.sh +0 -0
  281. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/batch/p_032.sh +0 -0
  282. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/batch/p_064.sh +0 -0
  283. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/batch/p_128.sh +0 -0
  284. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/batch/p_256.sh +0 -0
  285. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/batch/p_512.sh +0 -0
  286. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/__init__.py +0 -0
  287. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -0
  288. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +0 -0
  289. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +0 -0
  290. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +0 -0
  291. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +0 -0
  292. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +0 -0
  293. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +0 -0
  294. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_03.yml +0 -0
  295. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_04a.yml +0 -0
  296. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_04b.yml +0 -0
  297. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/inp/tutorials/params_04c.yml +0 -0
  298. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/out/__init__.py +0 -0
  299. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/io/output_handling.py +0 -0
  300. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/kinetic_background/__init__.py +0 -0
  301. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/kinetic_background/tests/__init__.py +0 -0
  302. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/kinetic_background/tests/test_base.py +0 -0
  303. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/kinetic_background/tests/test_maxwellians.py +0 -0
  304. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/__init__.py +0 -0
  305. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  306. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  307. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  308. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  309. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/tests/__init__.py +0 -0
  310. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -0
  311. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -0
  312. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/models/__init__.py +0 -0
  313. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/models/tests/__init__.py +0 -0
  314. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/models/tests/test_xxpproc.py +0 -0
  315. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/__init__.py +0 -0
  316. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/accumulation/__init__.py +0 -0
  317. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -0
  318. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  319. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
  320. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
  321. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/pushing/__init__.py +0 -0
  322. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/sampling_kernels.py +0 -0
  323. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/sobol_seq.py +0 -0
  324. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/__init__.py +0 -0
  325. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
  326. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/__init__.py +0 -0
  327. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
  328. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
  329. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
  330. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
  331. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
  332. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
  333. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
  334. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
  335. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
  336. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
  337. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/polar/__init__.py +0 -0
  338. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/polar/extraction_operators.py +0 -0
  339. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/polar/linear_operators.py +0 -0
  340. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/polar/tests/__init__.py +0 -0
  341. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
  342. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/polar/tests/test_polar.py +0 -0
  343. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/post_processing/__init__.py +0 -0
  344. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/post_processing/cprofile_analyser.py +0 -0
  345. {struphy-2.3.2/src/struphy/post_processing/tests → struphy-2.4.0/src/struphy/post_processing/orbits}/__init__.py +0 -0
  346. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/post_processing/profile_struphy.py +0 -0
  347. {struphy-2.3.2/src/struphy/profiling → struphy-2.4.0/src/struphy/post_processing/tests}/__init__.py +0 -0
  348. {struphy-2.3.2/src/struphy/propagators → struphy-2.4.0/src/struphy/profiling}/__init__.py +0 -0
  349. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/profiling/profiling.py +0 -0
  350. {struphy-2.3.2/src/struphy/propagators/tests → struphy-2.4.0/src/struphy/propagators}/__init__.py +0 -0
  351. {struphy-2.3.2/src/struphy/tutorials → struphy-2.4.0/src/struphy/propagators/tests}/__init__.py +0 -0
  352. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +0 -0
  353. {struphy-2.3.2 → struphy-2.4.0}/src/struphy/propagators/tests/test_poisson.py +0 -0
  354. {struphy-2.3.2/src/struphy/tutorials/longer_examples → struphy-2.4.0/src/struphy/utils}/__init__.py +0 -0
  355. {struphy-2.3.2 → struphy-2.4.0}/src/struphy.egg-info/dependency_links.txt +0 -0
  356. {struphy-2.3.2 → struphy-2.4.0}/src/struphy.egg-info/entry_points.txt +0 -0
  357. {struphy-2.3.2 → struphy-2.4.0}/src/struphy.egg-info/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- Copyright (c) 2019-2024, Struphy developers, Max Planck Institute for Plasma Physics
1
+ Copyright (c) 2019-2025, Struphy developers, Max Planck Institute for Plasma Physics
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
4
4
  associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -1,10 +1,10 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: struphy
3
- Version: 2.3.2
3
+ Version: 2.4.0
4
4
  Summary: Multi-model plasma physics package
5
5
  Author: Max Planck Institute for Plasma Physics
6
6
  Author-email: stefan.possanner@ipp.mpg.de, eric.sonnendruecker@ipp.mpg.de
7
- License: Copyright (c) 2019-2024, Struphy developers, Max Planck Institute for Plasma Physics
7
+ License: Copyright (c) 2019-2025, Struphy developers, Max Planck Institute for Plasma Physics
8
8
 
9
9
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
10
10
  associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -27,37 +27,47 @@ Project-URL: changelog, https://gitlab.mpcdf.mpg.de/struphy/struphy/-/blob/devel
27
27
  Project-URL: Bug Tracker, https://gitlab.mpcdf.mpg.de/struphy/struphy/-/issues
28
28
  Keywords: plasma physics, fusion, numerical modeling, partial differential equations, energetic particles
29
29
  Classifier: Programming Language :: Python :: 3
30
- Requires-Python: <3.12,>=3.10
30
+ Requires-Python: >=3.10
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE
33
- Requires-Dist: PyYAML==6.0.1
34
- Requires-Dist: argcomplete==3.4.0
35
- Requires-Dist: desc-opt==0.12.0
36
- Requires-Dist: docutils==0.21.2
37
- Requires-Dist: gvec-to-python==1.2.2
38
- Requires-Dist: h5py==3.11.0
39
- Requires-Dist: ipyparallel==8.8.0
40
- Requires-Dist: lxml_html_clean==0.1.1
41
- Requires-Dist: m2r2==0.3.3.post2
42
- Requires-Dist: matplotlib==3.9.0
43
- Requires-Dist: mistune==0.8.4
44
- Requires-Dist: mpi4py==3.1.6
45
- Requires-Dist: myst-parser==3.0.1
46
- Requires-Dist: nbsphinx==0.9.4
47
- Requires-Dist: netCDF4==1.6.5
48
- Requires-Dist: notebook==7.2.1
49
- Requires-Dist: numpy==1.24.4
50
- Requires-Dist: pyccel==1.12.1
51
- Requires-Dist: pydata-sphinx-theme==0.15.3
52
- Requires-Dist: pytest==8.2.2
53
- Requires-Dist: pytest-monitor==1.6.6
54
- Requires-Dist: pytest-mpi==0.6
55
- Requires-Dist: scipy==1.13.1
56
- Requires-Dist: Sphinx==7.3.7
57
- Requires-Dist: sphinxcontrib-napoleon==0.7
58
- Requires-Dist: tqdm==4.66.4
59
- Requires-Dist: vtk==9.3.0
60
- Requires-Dist: wheel==0.43.0
33
+ Requires-Dist: numpy
34
+ Requires-Dist: pyccel>=1.11.1
35
+ Requires-Dist: mpi4py<4
36
+ Requires-Dist: scipy
37
+ Requires-Dist: h5py
38
+ Requires-Dist: matplotlib
39
+ Requires-Dist: pyyaml
40
+ Requires-Dist: vtk
41
+ Requires-Dist: tqdm
42
+ Requires-Dist: argcomplete
43
+ Requires-Dist: gvec-to-python
44
+ Requires-Dist: desc-opt
45
+ Requires-Dist: netcdf4<1.7
46
+ Provides-Extra: test
47
+ Requires-Dist: pytest; extra == "test"
48
+ Requires-Dist: pytest-mpi; extra == "test"
49
+ Provides-Extra: dev
50
+ Requires-Dist: struphy[test]; extra == "dev"
51
+ Requires-Dist: notebook; extra == "dev"
52
+ Requires-Dist: autopep8; extra == "dev"
53
+ Requires-Dist: isort; extra == "dev"
54
+ Requires-Dist: flake8; extra == "dev"
55
+ Requires-Dist: pylint; extra == "dev"
56
+ Requires-Dist: add-trailing-comma; extra == "dev"
57
+ Requires-Dist: ruff>=0.9.1; extra == "dev"
58
+ Requires-Dist: pre-commit; extra == "dev"
59
+ Provides-Extra: doc
60
+ Requires-Dist: sphinx; extra == "doc"
61
+ Requires-Dist: sphinx-design; extra == "doc"
62
+ Requires-Dist: lxml_html_clean; extra == "doc"
63
+ Requires-Dist: sphinxcontrib-napoleon; extra == "doc"
64
+ Requires-Dist: pydata-sphinx-theme; extra == "doc"
65
+ Requires-Dist: nbsphinx; extra == "doc"
66
+ Requires-Dist: m2r2; extra == "doc"
67
+ Requires-Dist: myst-parser; extra == "doc"
68
+ Requires-Dist: mistune; extra == "doc"
69
+ Requires-Dist: docutils; extra == "doc"
70
+ Requires-Dist: ipyparallel; extra == "doc"
61
71
 
62
72
  # Struphy - Structure-preserving hybrid codes
63
73
 
@@ -0,0 +1,158 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "struphy"
7
+ version = "2.4.0"
8
+ readme = "README.md"
9
+ requires-python = ">=3.10"
10
+ license = {file = "LICENSE"}
11
+ authors = [
12
+ { name = "Max Planck Institute for Plasma Physics"},
13
+ { email = "stefan.possanner@ipp.mpg.de"},
14
+ { email = "eric.sonnendruecker@ipp.mpg.de"}
15
+ ]
16
+ description = "Multi-model plasma physics package"
17
+ keywords = ["plasma physics, fusion, numerical modeling, partial differential equations, energetic particles"]
18
+ classifiers = [
19
+ "Programming Language :: Python :: 3",
20
+ ]
21
+ dependencies = [
22
+ 'numpy',
23
+ 'pyccel>=1.11.1',
24
+ 'mpi4py<4',
25
+ 'scipy',
26
+ 'h5py',
27
+ 'matplotlib',
28
+ 'pyyaml',
29
+ 'vtk',
30
+ 'tqdm',
31
+ 'argcomplete',
32
+ 'gvec-to-python',
33
+ 'desc-opt',
34
+ 'netcdf4<1.7',
35
+ ]
36
+
37
+ [project.optional-dependencies]
38
+ test = [
39
+ 'pytest',
40
+ 'pytest-mpi',
41
+ ]
42
+ dev = [
43
+ 'struphy[test]',
44
+ 'notebook',
45
+ 'autopep8',
46
+ 'isort',
47
+ 'flake8',
48
+ 'pylint',
49
+ 'add-trailing-comma',
50
+ 'ruff>=0.9.1',
51
+ 'pre-commit',
52
+ ]
53
+ doc = [
54
+ 'sphinx',
55
+ 'sphinx-design',
56
+ 'lxml_html_clean',
57
+ 'sphinxcontrib-napoleon',
58
+ 'pydata-sphinx-theme',
59
+ 'nbsphinx',
60
+ 'm2r2',
61
+ 'myst-parser',
62
+ 'mistune',
63
+ 'docutils',
64
+ 'ipyparallel',
65
+ ]
66
+
67
+
68
+ [project.urls]
69
+ homepage = "https://struphy.pages.mpcdf.de/struphy/"
70
+ documentation = "https://struphy.pages.mpcdf.de/struphy/"
71
+ repository = "https://gitlab.mpcdf.mpg.de/struphy/struphy"
72
+ changelog = "https://gitlab.mpcdf.mpg.de/struphy/struphy/-/blob/devel/CHANGELOG.md"
73
+ "Bug Tracker" = "https://gitlab.mpcdf.mpg.de/struphy/struphy/-/issues"
74
+
75
+ [project.scripts]
76
+ struphy = "struphy.console.main:struphy"
77
+
78
+ [tool.setuptools.package-data]
79
+ 'struphy.fields_background.mhd_equil.eqdsk' = [
80
+ 'data/*.high',
81
+ ]
82
+
83
+ 'struphy.fields_background.mhd_equil.gvec' = [
84
+ 'ellipstell_v2/newBC_E1D6_M6N6/*.dat',
85
+ 'ellipstell_v2/newBC_E1D6_M6N6/*.ini',
86
+ 'ellipstell_v2/newBC_E4D6_M6N6/*.dat',
87
+ 'ellipstell_v2/newBC_E4D6_M6N6/*.ini',
88
+ 'ellipstell_v2/oldBC_E40D5M6N6/*.dat',
89
+ 'ellipstell_v2/oldBC_E40D5M6N6/*.ini',
90
+ ]
91
+
92
+ 'struphy.io' = ['batch/*.sh']
93
+
94
+ 'struphy.io.inp' = ['parameters.yml',
95
+ 'tests/*.yml',
96
+ 'tutorials/*.yml',
97
+ 'longer_examples/*.yml',
98
+ ]
99
+
100
+ struphy = ['compile_struphy.mk',
101
+ 'psydac-2.4.0-py3-none-any.whl',]
102
+
103
+ [tool.autopep8]
104
+ # Add specific settings for autopep8
105
+ max_line_length = 120
106
+ ignore = ["E221,E226,E203,E265,E731,E711"]
107
+ # Descriptions of error codes: https://www.flake8rules.com/
108
+ # E201 – Whitespace after (, [ or {
109
+ # E202 – Whitespace before (, [ or {
110
+ # E221 – Multiple spaces before operator
111
+ # E226 – Missing whitespace around arithmetic operators
112
+ # E265 - Block comment should start with '# '
113
+ # E266 – Too many leading # for block comment
114
+ # E731 – Do not assign a lambda expression
115
+ # E203 – Whitespace before : (used in slicing)
116
+ # E711 - Ignore enforcing 'is not None' over '!= None'
117
+
118
+ [tool.isort]
119
+ # Configuration for isort
120
+ profile = "black" # Using the Black profile to match formatting styles
121
+ line_length = 120
122
+ multi_line_output = 3 # Control how isort wraps imports
123
+ include_trailing_comma = true
124
+ force_grid_wrap = 0
125
+ combine_as_imports = true
126
+
127
+ [tool.pylint]
128
+ max-line-length=120
129
+ quote-style = "single"
130
+
131
+ [tool.ruff]
132
+ line-length=120
133
+ lint.ignore = [
134
+ "E265", # Checks for block comments that lack a single space after the leading # character.
135
+ "E402", # Module-level imports should be placed at the top of the file (before any other code)
136
+ "E701", # Multiple statements on one line (colon)
137
+ # "E711", # Comparison to `None` should be `cond is None`
138
+ # "E712", # Comparison to True, False, or None should be avoided (e.g., use `if variable:` instead of `if variable == True:`)
139
+ # "E713", # Convert to `not in`
140
+ # "E721", # Avoid comparing types directly with `type()` (e.g., use `isinstance()` instead of `type(variable) == list`)
141
+ "E722", # Do not use bare 'except'
142
+ "E731", # Do not assign a lambda expression, use a def
143
+ "E741", # Do not use variables named 'l', 'O', or 'I'
144
+ "E742", # Do not define classes named 'l', 'O', or 'I'
145
+ "E743", # Do not define functions named 'l', 'O', or 'I'
146
+ "E902", # IOError
147
+ # "E999", # SyntaxError
148
+ "F401", # Module imported but unused
149
+ "F403", # 'from module import *' used; unable to detect undefined names
150
+ "F405", # Name may be undefined, or defined from star imports: module
151
+ # "F811", # Redefinition of a variable that might cause ambiguity (e.g., reusing a variable name in a conflicting scope)
152
+ # "F821", # Undefined name
153
+ # "F822", # Undefined name in __all__
154
+ # "F823", # Local variable name referenced before assignment
155
+ # "F841", # Local variable name assigned to but never used
156
+ "D211", # Checks for docstrings on class definitions that are preceded by a blank line
157
+ "D213", # Checks for docstring summary lines that are not positioned on the second physical line of the docstring
158
+ ]
@@ -4,6 +4,9 @@ source-dir = doc/
4
4
  build-dir = doc/
5
5
  warning_is_error = 1
6
6
 
7
+ [flake8]
8
+ max-line-length = 120
9
+
7
10
  [egg_info]
8
11
  tag_build =
9
12
  tag_date = 0
@@ -3,9 +3,8 @@
3
3
  """
4
4
  Basic functions for point-wise B-spline evaluation
5
5
  """
6
- from pyccel.decorators import pure, stack_array
7
-
8
6
  from numpy import empty, zeros
7
+ from pyccel.decorators import pure, stack_array
9
8
 
10
9
 
11
10
  @pure
@@ -256,8 +255,9 @@ def basis_funs_all_ders(knots: 'float[:]', degree: int, eta: float, span: int, l
256
255
  d = a[s2, 0] * ndu[rk, pk]
257
256
  j1 = 1 if (rk > -1) else -rk
258
257
  j2 = k-1 if (r-1 <= pk) else degree-r
259
- a[s2, j1:j2+1] = (a[s1, j1:j2+1] - a[s1, j1-1:j2]
260
- ) * ndu[pk+1, rk+j1:rk+j2+1]
258
+ a[s2, j1:j2+1] = (
259
+ a[s1, j1:j2+1] - a[s1, j1-1:j2]
260
+ ) * ndu[pk+1, rk+j1:rk+j2+1]
261
261
  for l in range(j2 + 1 - j1):
262
262
  d += a[s2, j1 + l] * ndu[rk + j1 + l, pk]
263
263
  #d += dot(a[s2, j1:j2+1], ndu[rk+j1:rk+j2+1, pk])
@@ -375,8 +375,10 @@ def d_splines_slim(tn: 'float[:]', pn: 'int', eta: 'float', span: 'int', values:
375
375
 
376
376
  # compute D-splines values by scaling
377
377
  for il in range(pd + 1):
378
- values[pd - il] = pn/(tn[span - il + pn] -
379
- tn[span - il]) * b_values[pd - il]
378
+ values[pd - il] = pn/(
379
+ tn[span - il + pn] -
380
+ tn[span - il]
381
+ ) * b_values[pd - il]
380
382
 
381
383
 
382
384
  @pure
@@ -427,8 +429,10 @@ def b_d_splines_slim(tn: 'float[:]', pn: 'int', eta: 'float', span: 'int', bn: '
427
429
  if j == pn-1:
428
430
  # compute D-splines values by scaling B-splines of degree pn-1
429
431
  for il in range(pd + 1):
430
- bd[pd - il] = pn/(tn[span - il + pn] -
431
- tn[span - il]) * bn[pd - il]
432
+ bd[pd - il] = pn/(
433
+ tn[span - il + pn] -
434
+ tn[span - il]
435
+ ) * bn[pd - il]
432
436
 
433
437
  for r in range(j + 1):
434
438
  temp = bn[r]/(right[r] + left[j - r])
@@ -656,7 +660,7 @@ def b_spl_1st_der_slim(t: 'float[:]', p: 'int', eta: 'float', span: 'int', value
656
660
  def piecewise(p: 'int', delta: 'float', eta: 'float') -> 'float':
657
661
  r"""
658
662
  evaluate a hat function (B-spline) centered at eta0 (the center of the support) at eta1, i.e.
659
-
663
+
660
664
  .. math::
661
665
  1.0 / delta * S((eta1 - eta0)/ delta)
662
666
 
@@ -753,7 +757,7 @@ def piecewise_der(p: 'int', delta: 'float', eta: 'float') -> 'float':
753
757
  def convolution(p: 'int', grids: 'float[:]', eta: 'float') -> 'float':
754
758
  r"""
755
759
  evaluate a hat function (B-spline) at eta, i.e.
756
-
760
+
757
761
  .. math::
758
762
  1.0 / delta * S(eta/ delta)
759
763
 
@@ -808,7 +812,7 @@ def convolution(p: 'int', grids: 'float[:]', eta: 'float') -> 'float':
808
812
  def convolution_der(p: 'int', grids: 'float[:]', eta: 'float') -> 'float':
809
813
  r"""
810
814
  evaluate the derivative of a hat function (B-spline) at eta, i.e.
811
-
815
+
812
816
  .. math::
813
817
  1.0 / delta^2 * S'(eta/ delta)
814
818
 
@@ -1,7 +1,8 @@
1
- import pytest
1
+ import time
2
+
2
3
  import numpy as np
4
+ import pytest
3
5
  from mpi4py import MPI
4
- import time
5
6
 
6
7
 
7
8
  @pytest.mark.mpi(min_size=2)
@@ -14,11 +15,11 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
14
15
  Print timings.
15
16
  '''
16
17
 
17
- from struphy.feec.psydac_derham import Derham
18
+ import psydac.core.bsplines_kernels as bsp_psy
18
19
 
19
- from struphy.feec.utilities import create_equal_random_arrays as cera
20
20
  import struphy.bsplines.bsplines_kernels as bsp
21
- import psydac.core.bsplines_pyccel as bsp_psy
21
+ from struphy.feec.psydac_derham import Derham
22
+ from struphy.feec.utilities import create_equal_random_arrays as cera
22
23
 
23
24
  comm = MPI.COMM_WORLD
24
25
  assert comm.size >= 2
@@ -48,7 +49,7 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
48
49
  t1 = time.time()
49
50
  if rank == 0:
50
51
  print(f'struphy find_span : {t1 - t0}')
51
-
52
+
52
53
  # psydac find_span_p
53
54
  t0 = time.time()
54
55
  span1s_psy, span2s_psy, span3s_psy = [], [], []
@@ -59,20 +60,20 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
59
60
  t1 = time.time()
60
61
  if rank == 0:
61
62
  print(f'psydac find_span_p : {t1 - t0}')
62
-
63
+
63
64
  assert np.allclose(span1s, span1s_psy)
64
65
  assert np.allclose(span2s, span2s_psy)
65
66
  assert np.allclose(span3s, span3s_psy)
66
-
67
+
67
68
  # allocate tmps
68
69
  bn1 = np.empty(derham.p[0] + 1, dtype=float)
69
70
  bn2 = np.empty(derham.p[1] + 1, dtype=float)
70
71
  bn3 = np.empty(derham.p[2] + 1, dtype=float)
71
-
72
+
72
73
  bd1 = np.empty(derham.p[0], dtype=float)
73
74
  bd2 = np.empty(derham.p[1], dtype=float)
74
75
  bd3 = np.empty(derham.p[2], dtype=float)
75
-
76
+
76
77
  # struphy b_splines_slim
77
78
  val1s, val2s, val3s = [], [], []
78
79
  t0 = time.time()
@@ -86,7 +87,7 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
86
87
  t1 = time.time()
87
88
  if rank == 0:
88
89
  print(f'bsp.b_splines_slim : {t1 - t0}')
89
-
90
+
90
91
  # psydac basis_funs_p
91
92
  val1s_psy, val2s_psy, val3s_psy = [], [], []
92
93
  t0 = time.time()
@@ -100,17 +101,17 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
100
101
  t1 = time.time()
101
102
  if rank == 0:
102
103
  print(f'bsp_psy.basis_funs_p for N: {t1 - t0}')
103
-
104
+
104
105
  # compare
105
106
  for val1, val1_psy in zip(val1s, val1s_psy):
106
107
  assert np.allclose(val1, val1_psy)
107
-
108
+
108
109
  for val2, val2_psy in zip(val2s, val2s_psy):
109
110
  assert np.allclose(val2, val2_psy)
110
-
111
+
111
112
  for val3, val3_psy in zip(val3s, val3s_psy):
112
113
  assert np.allclose(val3, val3_psy)
113
-
114
+
114
115
  # struphy b_d_splines_slim
115
116
  val1s_n, val2s_n, val3s_n = [], [], []
116
117
  val1s_d, val2s_d, val3s_d = [], [], []
@@ -128,24 +129,24 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
128
129
  t1 = time.time()
129
130
  if rank == 0:
130
131
  print(f'bsp.b_d_splines_slim : {t1 - t0}')
131
-
132
+
132
133
  # compare
133
134
  for val1, val1_psy in zip(val1s_n, val1s_psy):
134
135
  assert np.allclose(val1, val1_psy)
135
-
136
+
136
137
  for val2, val2_psy in zip(val2s_n, val2s_psy):
137
138
  assert np.allclose(val2, val2_psy)
138
-
139
+
139
140
  for val3, val3_psy in zip(val3s_n, val3s_psy):
140
141
  assert np.allclose(val3, val3_psy)
141
-
142
+
142
143
  # struphy d_splines_slim
143
144
  span1s, span2s, span3s = [], [], []
144
145
  for eta1, eta2, eta3 in zip(eta1s, eta2s, eta3s):
145
146
  span1s += [bsp.find_span(td1, derham.p[0] - 1, eta1)]
146
147
  span2s += [bsp.find_span(td2, derham.p[1] - 1, eta2)]
147
148
  span3s += [bsp.find_span(td3, derham.p[2] - 1, eta3)]
148
-
149
+
149
150
  val1s, val2s, val3s = [], [], []
150
151
  t0 = time.time()
151
152
  for eta1, eta2, eta3, span1, span2, span3 in zip(eta1s, eta2s, eta3s, span1s, span2s, span3s):
@@ -158,7 +159,7 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
158
159
  t1 = time.time()
159
160
  if rank == 0:
160
161
  print(f'bsp.d_splines_slim : {t1 - t0}')
161
-
162
+
162
163
  # psydac basis_funs_p for D-splines
163
164
  val1s_psy, val2s_psy, val3s_psy = [], [], []
164
165
  t0 = time.time()
@@ -172,26 +173,26 @@ def test_bsplines_span_and_basis(Nel, p, spl_kind):
172
173
  t1 = time.time()
173
174
  if rank == 0:
174
175
  print(f'bsp_psy.basis_funs_p for D: {t1 - t0}')
175
-
176
+
176
177
  # compare
177
178
  for val1, val1_psy in zip(val1s, val1s_psy):
178
179
  assert np.allclose(val1, val1_psy)
179
-
180
+
180
181
  for val2, val2_psy in zip(val2s, val2s_psy):
181
182
  assert np.allclose(val2, val2_psy)
182
-
183
+
183
184
  for val3, val3_psy in zip(val3s, val3s_psy):
184
185
  assert np.allclose(val3, val3_psy)
185
-
186
+
186
187
  for val1, val1_psy in zip(val1s_d, val1s_psy):
187
188
  assert np.allclose(val1, val1_psy)
188
-
189
+
189
190
  for val2, val2_psy in zip(val2s_d, val2s_psy):
190
191
  assert np.allclose(val2, val2_psy)
191
-
192
+
192
193
  for val3, val3_psy in zip(val3s_d, val3s_psy):
193
194
  assert np.allclose(val3, val3_psy)
194
-
195
-
195
+
196
+
196
197
  if __name__ == '__main__':
197
198
  test_bsplines_span_and_basis([8, 9, 10], [3, 4, 3], [False, False, True])
@@ -5,7 +5,6 @@
5
5
  PYTHON := python3
6
6
  SO_EXT := $(shell $(PYTHON) -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))")
7
7
  LIBDIR := $(shell $(PYTHON) -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))")
8
- psydac_path := $(shell $(PYTHON) -c "import psydac as _; print(_.__path__[0])")
9
8
  struphy_path := $(shell $(PYTHON) -c "import struphy as _; print(_.__path__[0])")
10
9
 
11
10
  # Arguments to this script are:
@@ -18,13 +17,7 @@ FLAGS_openmp_mhd := $(flags_openmp_mhd)
18
17
  # SOURCE FILES
19
18
  #--------------------------------------
20
19
 
21
- PSY0 := $(psydac_path)/core/arrays
22
- PSY1 := $(psydac_path)/core/kernels
23
- PSY2 := $(psydac_path)/core/bsplines_pyccel
24
- PSY3 := $(psydac_path)/linalg/kernels
25
- PSY4 := $(psydac_path)/feec/dof_kernels
26
-
27
- SOURCES := $(PSY0).py $(PSY1).py $(PSY2).py $(PSY3).py $(PSY4).py $(STRUPHY_SOURCES)
20
+ SOURCES := $(STRUPHY_SOURCES)
28
21
 
29
22
  OUTPUTS := $(SOURCES:.py=$(SO_EXT))
30
23
 
@@ -52,11 +45,6 @@ all: $(OUTPUTS)
52
45
  .PHONY: clean
53
46
  clean:
54
47
  rm -rf $(OUTPUTS)
55
-
56
- rm -rf $(psydac_path)/__pyccel__ $(psydac_path)/__pycache__
57
- rm -rf $(psydac_path)/core/__pyccel__ $(psydac_path)/core/__pycache__ $(psydac_path)/core/.lock_acquisition.lock
58
- rm -rf $(psydac_path)/linalg/__pyccel__ $(psydac_path)/linalg/__pycache__ $(psydac_path)/linalg/.lock_acquisition.lock
59
- rm -rf $(psydac_path)/feec/__pyccel__ $(psydac_path)/feec/__pycache__ $(psydac_path)/feec/.lock_acquisition.lock
60
48
 
61
49
  find $(struphy_path)/ -type d -name '__pyccel__' -prune -exec rm -rf {} \;
62
50
  find $(struphy_path)/ -type d -name '__pycache__' -prune -exec rm -rf {} \;
@@ -1,15 +1,20 @@
1
1
  def pytest_addoption(parser):
2
2
  parser.addoption("--fast", action="store_true")
3
3
  parser.addoption("--with-desc", action="store_true")
4
+ parser.addoption("--vrbose", action="store_true")
4
5
 
5
6
 
6
7
  def pytest_generate_tests(metafunc):
7
8
  # This is called for every test. Only get/set command line arguments
8
9
  # if the argument is specified in the list of test "fixturenames".
9
10
  option_value = metafunc.config.option.fast
10
- if 'fast' in metafunc.fixturenames and option_value is not None:
11
+ if "fast" in metafunc.fixturenames and option_value is not None:
11
12
  metafunc.parametrize("fast", [option_value])
12
-
13
+
13
14
  option_value = metafunc.config.option.with_desc
14
- if 'with_desc' in metafunc.fixturenames and option_value is not None:
15
+ if "with_desc" in metafunc.fixturenames and option_value is not None:
15
16
  metafunc.parametrize("with_desc", [option_value])
17
+
18
+ option_value = metafunc.config.option.vrbose
19
+ if "vrbose" in metafunc.fixturenames and option_value is not None:
20
+ metafunc.parametrize("vrbose", [option_value])