struphy 2.3.1__tar.gz → 2.3.3__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 (340) hide show
  1. {struphy-2.3.1/src/struphy.egg-info → struphy-2.3.3}/PKG-INFO +9 -3
  2. {struphy-2.3.1 → struphy-2.3.3}/pyproject.toml +37 -4
  3. {struphy-2.3.1 → struphy-2.3.3}/setup.cfg +3 -0
  4. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/bsplines_kernels.py +15 -11
  5. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/evaluation_kernels_3d.py +219 -3
  6. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/conftest.py +5 -0
  7. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/console/compile.py +15 -5
  8. struphy-2.3.3/src/struphy/console/format.py +778 -0
  9. struphy-2.3.3/src/struphy/console/main.py +1079 -0
  10. struphy-2.3.3/src/struphy/console/pproc.py +66 -0
  11. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/console/profile.py +3 -5
  12. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/console/run.py +101 -23
  13. struphy-2.3.3/src/struphy/console/test.py +384 -0
  14. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/console/units.py +4 -5
  15. struphy-2.3.3/src/struphy/diagnostics/console_diagn.py +280 -0
  16. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/diagnostics/continuous_spectra.py +7 -8
  17. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/diagnostics/diagn_tools.py +369 -125
  18. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/kernels_2d.py +8 -3
  19. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +6 -7
  20. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +4 -5
  21. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/examples/_draw_parallel.py +21 -11
  22. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/basis_projection_kernels.py +49 -40
  23. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/basis_projection_ops.py +1 -1
  24. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/mass.py +1009 -91
  25. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/psydac_derham.py +416 -210
  26. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_basis_ops.py +268 -0
  27. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_field_init.py +533 -272
  28. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_l2_projectors.py +50 -45
  29. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_local_projectors.py +12 -12
  30. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_mass_matrices.py +163 -27
  31. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/utilities_kernels.py +6 -6
  32. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/base.py +172 -44
  33. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/equils.py +429 -255
  34. struphy-2.3.3/src/struphy/fields_background/mhd_equil/projected_equils.py +291 -0
  35. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/tests/test_desc_equil.py +3 -2
  36. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/tests/test_gvec_equil.py +1 -1
  37. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/base.py +287 -143
  38. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/domains.py +136 -72
  39. struphy-2.3.3/src/struphy/geometry/evaluation_kernels.py +551 -0
  40. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/mappings_kernels.py +81 -136
  41. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/transform_kernels.py +56 -104
  42. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/utilities.py +42 -35
  43. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/initial/eigenfunctions.py +3 -4
  44. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/initial/perturbations.py +197 -65
  45. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/initial/utilities.py +3 -3
  46. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/parameters.yml +13 -8
  47. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/tutorials/params_02.yml +35 -17
  48. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/tutorials/params_03.yml +15 -11
  49. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/tutorials/params_04a.yml +10 -8
  50. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/tutorials/params_04b.yml +10 -6
  51. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/tutorials/params_04c.yml +57 -38
  52. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/tutorials/params_05a.yml +6 -7
  53. struphy-2.3.3/src/struphy/io/inp/tutorials/params_05b.yml +74 -0
  54. struphy-2.3.1/src/struphy/io/inp/tutorials/params_05b.yml → struphy-2.3.3/src/struphy/io/inp/tutorials/params_05c.yml +7 -12
  55. struphy-2.3.3/src/struphy/io/inp/tutorials/params_05d.yml +77 -0
  56. struphy-2.3.3/src/struphy/io/inp/tutorials/params_05e.yml +77 -0
  57. struphy-2.3.3/src/struphy/io/inp/tutorials/params_05f.yml +77 -0
  58. struphy-2.3.3/src/struphy/io/inp/tutorials/params_12a.yml +74 -0
  59. struphy-2.3.3/src/struphy/io/inp/tutorials/params_12b.yml +76 -0
  60. struphy-2.3.3/src/struphy/io/setup.py +758 -0
  61. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/kinetic_background/base.py +29 -15
  62. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/kinetic_background/maxwellians.py +233 -168
  63. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/kinetic_background/tests/test_maxwellians.py +49 -36
  64. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/schur_solver.py +23 -10
  65. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/main.py +202 -83
  66. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/base.py +828 -420
  67. struphy-2.3.3/src/struphy/models/fluid.py +1049 -0
  68. struphy-2.3.3/src/struphy/models/hybrid.py +1182 -0
  69. struphy-2.3.3/src/struphy/models/kinetic.py +1122 -0
  70. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/tests/test_fluid_models.py +7 -5
  71. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/tests/test_hybrid_models.py +6 -5
  72. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/tests/test_kinetic_models.py +9 -7
  73. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/tests/test_toy_models.py +4 -3
  74. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/tests/test_xxpproc.py +22 -6
  75. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/tests/util.py +3 -3
  76. struphy-2.3.3/src/struphy/models/toy.py +1103 -0
  77. struphy-2.3.3/src/struphy/pic/accumulation/accum_kernels.py +1744 -0
  78. struphy-2.3.3/src/struphy/pic/accumulation/accum_kernels_gc.py +862 -0
  79. struphy-2.3.3/src/struphy/pic/accumulation/filter_kernels.py +117 -0
  80. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +1702 -1934
  81. struphy-2.3.3/src/struphy/pic/accumulation/particles_to_grid.py +688 -0
  82. struphy-2.3.3/src/struphy/pic/base.py +2088 -0
  83. struphy-2.3.3/src/struphy/pic/particles.py +773 -0
  84. struphy-2.3.3/src/struphy/pic/pushing/eval_kernels_gc.py +444 -0
  85. struphy-2.3.3/src/struphy/pic/pushing/pusher.py +500 -0
  86. struphy-2.3.3/src/struphy/pic/pushing/pusher_args_kernels.py +126 -0
  87. struphy-2.3.3/src/struphy/pic/pushing/pusher_kernels.py +2957 -0
  88. struphy-2.3.3/src/struphy/pic/pushing/pusher_kernels_gc.py +2349 -0
  89. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/pushing/pusher_utilities_kernels.py +155 -210
  90. struphy-2.3.3/src/struphy/pic/sorting_kernels.py +85 -0
  91. struphy-2.3.3/src/struphy/pic/tests/test_accum_vec_H1.py +155 -0
  92. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_accumulation.py +238 -120
  93. struphy-2.3.3/src/struphy/pic/tests/test_binning.py +1071 -0
  94. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_draw_parallel.py +41 -28
  95. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_mat_vec_filler.py +104 -55
  96. struphy-2.3.3/src/struphy/pic/tests/test_pushers.py +808 -0
  97. struphy-2.3.3/src/struphy/pic/tests/test_sorting.py +80 -0
  98. struphy-2.3.3/src/struphy/pic/utilities.py +62 -0
  99. struphy-2.3.3/src/struphy/pic/utilities_kernels.py +774 -0
  100. struphy-2.3.3/src/struphy/post_processing/orbits/orbits_kernels.py +68 -0
  101. struphy-2.3.3/src/struphy/post_processing/orbits/orbits_tools.py +223 -0
  102. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/post_processing/post_processing_tools.py +259 -133
  103. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/post_processing/pproc_struphy.py +97 -25
  104. struphy-2.3.3/src/struphy/profiling/profiling.py +176 -0
  105. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/propagators/base.py +137 -9
  106. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/propagators/propagators_coupling.py +1064 -836
  107. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/propagators/propagators_fields.py +2783 -2227
  108. struphy-2.3.3/src/struphy/propagators/propagators_markers.py +1366 -0
  109. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +14 -12
  110. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/propagators/tests/test_poisson.py +9 -8
  111. struphy-2.3.3/src/struphy/tutorials/tests/test_tutorials.py +175 -0
  112. struphy-2.3.3/src/struphy/utils/utils.py +77 -0
  113. {struphy-2.3.1 → struphy-2.3.3/src/struphy.egg-info}/PKG-INFO +9 -3
  114. {struphy-2.3.1 → struphy-2.3.3}/src/struphy.egg-info/SOURCES.txt +18 -11
  115. {struphy-2.3.1 → struphy-2.3.3}/src/struphy.egg-info/requires.txt +8 -2
  116. struphy-2.3.1/src/struphy/console/main.py +0 -705
  117. struphy-2.3.1/src/struphy/console/pproc.py +0 -46
  118. struphy-2.3.1/src/struphy/console/test.py +0 -334
  119. struphy-2.3.1/src/struphy/diagnostics/console_diagn.py +0 -217
  120. struphy-2.3.1/src/struphy/eigenvalue_solvers/tests/test_legacy_mhd_projectors.py +0 -986
  121. struphy-2.3.1/src/struphy/feec/tests/test_basis_operators.py +0 -749
  122. struphy-2.3.1/src/struphy/geometry/evaluation_kernels.py +0 -815
  123. struphy-2.3.1/src/struphy/io/inp/tutorials/params_12a.yml +0 -59
  124. struphy-2.3.1/src/struphy/io/inp/tutorials/params_12b.yml +0 -65
  125. struphy-2.3.1/src/struphy/io/setup.py +0 -521
  126. struphy-2.3.1/src/struphy/models/fluid.py +0 -1107
  127. struphy-2.3.1/src/struphy/models/hybrid.py +0 -1066
  128. struphy-2.3.1/src/struphy/models/kinetic.py +0 -1911
  129. struphy-2.3.1/src/struphy/models/toy.py +0 -1089
  130. struphy-2.3.1/src/struphy/pic/accumulation/accum_kernels.py +0 -1856
  131. struphy-2.3.1/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -2138
  132. struphy-2.3.1/src/struphy/pic/accumulation/particles_to_grid.py +0 -522
  133. struphy-2.3.1/src/struphy/pic/base.py +0 -1325
  134. struphy-2.3.1/src/struphy/pic/particles.py +0 -508
  135. struphy-2.3.1/src/struphy/pic/pushing/eval_kernels_gc.py +0 -1688
  136. struphy-2.3.1/src/struphy/pic/pushing/pusher.py +0 -321
  137. struphy-2.3.1/src/struphy/pic/pushing/pusher_kernels.py +0 -3153
  138. struphy-2.3.1/src/struphy/pic/pushing/pusher_kernels_gc.py +0 -3572
  139. struphy-2.3.1/src/struphy/pic/tests/test_accum_vec_H1.py +0 -90
  140. struphy-2.3.1/src/struphy/pic/tests/test_binning.py +0 -638
  141. struphy-2.3.1/src/struphy/pic/tests/test_pushers.py +0 -802
  142. struphy-2.3.1/src/struphy/pic/utilities.py +0 -132
  143. struphy-2.3.1/src/struphy/pic/utilities_kernels.py +0 -1226
  144. struphy-2.3.1/src/struphy/propagators/propagators_markers.py +0 -2118
  145. struphy-2.3.1/src/struphy/tutorials/longer_examples/TAE_tokamak.py +0 -252
  146. struphy-2.3.1/src/struphy/tutorials/longer_examples/linearextendedmhd.py +0 -215
  147. struphy-2.3.1/src/struphy/tutorials/longer_examples/linearmhdvlasov_cc.py +0 -142
  148. struphy-2.3.1/src/struphy/tutorials/longer_examples/linearmhdvlasov_pc.py +0 -142
  149. struphy-2.3.1/src/struphy/tutorials/tests/test_tutorials.py +0 -99
  150. struphy-2.3.1/src/struphy/tutorials/utilities.py +0 -12
  151. {struphy-2.3.1 → struphy-2.3.3}/LICENSE +0 -0
  152. {struphy-2.3.1 → struphy-2.3.3}/README.md +0 -0
  153. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/__init__.py +0 -0
  154. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/__init__.py +0 -0
  155. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/bsplines.py +0 -0
  156. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  157. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  158. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  159. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/tests/__init__.py +0 -0
  160. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/tests/test_bsplines_kernels.py +0 -0
  161. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
  162. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/compile_struphy.mk +0 -0
  163. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/console/__init__.py +0 -0
  164. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/console/params.py +0 -0
  165. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/dependencies.py +0 -0
  166. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/diagnostics/__init__.py +0 -0
  167. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/diagnostics/paraview/__init__.py +0 -0
  168. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
  169. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
  170. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/dispersion_relations/__init__.py +0 -0
  171. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/dispersion_relations/analytic.py +0 -0
  172. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/dispersion_relations/base.py +0 -0
  173. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/dispersion_relations/utilities.py +0 -0
  174. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
  175. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  176. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -0
  177. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
  178. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +0 -0
  179. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
  180. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
  181. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
  182. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
  183. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
  184. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
  185. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -0
  186. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_kernels_control_variate.py +0 -0
  187. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -0
  188. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_cv_kernel_2.py +0 -0
  189. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_kernels_control_variate.py +0 -0
  190. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -0
  191. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
  192. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
  193. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
  194. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
  195. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
  196. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
  197. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
  198. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
  199. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
  200. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
  201. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
  202. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
  203. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
  204. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
  205. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
  206. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
  207. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +0 -0
  208. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
  209. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
  210. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
  211. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
  212. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
  213. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
  214. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
  215. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_L2_projector_kernel.py +0 -0
  216. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_L2.py +0 -0
  217. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_local.py +0 -0
  218. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_local_projector_kernel.py +0 -0
  219. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
  220. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
  221. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
  222. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
  223. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
  224. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
  225. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
  226. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
  227. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/__init__.py +0 -0
  228. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  229. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/linear_operators.py +0 -0
  230. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/mass_kernels.py +0 -0
  231. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/preconditioner.py +0 -0
  232. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/projectors.py +0 -0
  233. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/__init__.py +0 -0
  234. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_derham.py +0 -0
  235. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_eval_field.py +0 -0
  236. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -0
  237. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
  238. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
  239. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
  240. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/utilities.py +0 -0
  241. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/feec/variational_utilities.py +0 -0
  242. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/__init__.py +0 -0
  243. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/braginskii_equil/__init__.py +0 -0
  244. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/braginskii_equil/base.py +0 -0
  245. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/braginskii_equil/equils.py +0 -0
  246. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
  247. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
  248. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  249. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
  250. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
  251. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
  252. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  253. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
  254. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  255. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
  256. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  257. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
  258. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
  259. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
  260. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
  261. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/tests/__init__.py +0 -0
  262. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
  263. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
  264. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/__init__.py +0 -0
  265. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/map_coef/__init__.py +0 -0
  266. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/tests/__init__.py +0 -0
  267. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/tests/test_domain.py +0 -0
  268. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/geometry/utilities_kernels.py +0 -0
  269. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/initial/__init__.py +0 -0
  270. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/initial/tests/__init__.py +0 -0
  271. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/initial/tests/test_init_perturbations.py +0 -0
  272. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/__init__.py +0 -0
  273. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/batch/batch_cobra.sh +0 -0
  274. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/batch/p_016.sh +0 -0
  275. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/batch/p_032.sh +0 -0
  276. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/batch/p_064.sh +0 -0
  277. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/batch/p_128.sh +0 -0
  278. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/batch/p_256.sh +0 -0
  279. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/batch/p_512.sh +0 -0
  280. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/__init__.py +0 -0
  281. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -0
  282. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +0 -0
  283. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +0 -0
  284. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +0 -0
  285. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +0 -0
  286. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +0 -0
  287. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +0 -0
  288. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/out/__init__.py +0 -0
  289. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/io/output_handling.py +0 -0
  290. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/kinetic_background/__init__.py +0 -0
  291. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/kinetic_background/tests/__init__.py +0 -0
  292. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/kinetic_background/tests/test_base.py +0 -0
  293. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/__init__.py +0 -0
  294. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  295. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  296. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  297. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  298. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/tests/__init__.py +0 -0
  299. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -0
  300. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -0
  301. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/__init__.py +0 -0
  302. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/models/tests/__init__.py +0 -0
  303. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/__init__.py +0 -0
  304. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/accumulation/__init__.py +0 -0
  305. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  306. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/pushing/__init__.py +0 -0
  307. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/sampling_kernels.py +0 -0
  308. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/sobol_seq.py +0 -0
  309. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/__init__.py +0 -0
  310. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/__init__.py +0 -0
  311. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
  312. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
  313. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
  314. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
  315. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
  316. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
  317. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
  318. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
  319. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
  320. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
  321. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/polar/__init__.py +0 -0
  322. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/polar/basic.py +0 -0
  323. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/polar/extraction_operators.py +0 -0
  324. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/polar/linear_operators.py +0 -0
  325. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/polar/tests/__init__.py +0 -0
  326. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
  327. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/polar/tests/test_polar.py +0 -0
  328. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/post_processing/__init__.py +0 -0
  329. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/post_processing/cprofile_analyser.py +0 -0
  330. {struphy-2.3.1/src/struphy/post_processing/tests → struphy-2.3.3/src/struphy/post_processing/orbits}/__init__.py +0 -0
  331. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/post_processing/profile_struphy.py +0 -0
  332. {struphy-2.3.1/src/struphy/propagators → struphy-2.3.3/src/struphy/post_processing/tests}/__init__.py +0 -0
  333. {struphy-2.3.1/src/struphy/propagators/tests → struphy-2.3.3/src/struphy/profiling}/__init__.py +0 -0
  334. {struphy-2.3.1/src/struphy/tutorials → struphy-2.3.3/src/struphy/propagators}/__init__.py +0 -0
  335. {struphy-2.3.1/src/struphy/tutorials/longer_examples → struphy-2.3.3/src/struphy/propagators/tests}/__init__.py +0 -0
  336. {struphy-2.3.1 → struphy-2.3.3}/src/struphy/psydac-0.1.13-py3-none-any.whl +0 -0
  337. {struphy-2.3.1/src/struphy/tutorials/tests → struphy-2.3.3/src/struphy/utils}/__init__.py +0 -0
  338. {struphy-2.3.1 → struphy-2.3.3}/src/struphy.egg-info/dependency_links.txt +0 -0
  339. {struphy-2.3.1 → struphy-2.3.3}/src/struphy.egg-info/entry_points.txt +0 -0
  340. {struphy-2.3.1 → struphy-2.3.3}/src/struphy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: struphy
3
- Version: 2.3.1
3
+ Version: 2.3.3
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
@@ -31,12 +31,16 @@ Requires-Python: <3.12,>=3.10
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE
33
33
  Requires-Dist: PyYAML==6.0.1
34
+ Requires-Dist: add-trailing-comma==3.1.0
34
35
  Requires-Dist: argcomplete==3.4.0
35
- Requires-Dist: desc-opt==0.11.1
36
+ Requires-Dist: autopep8==2.3.1
37
+ Requires-Dist: desc-opt==0.12.0
36
38
  Requires-Dist: docutils==0.21.2
39
+ Requires-Dist: flake8==7.1.1
37
40
  Requires-Dist: gvec-to-python==1.2.2
38
41
  Requires-Dist: h5py==3.11.0
39
42
  Requires-Dist: ipyparallel==8.8.0
43
+ Requires-Dist: isort==5.13.2
40
44
  Requires-Dist: lxml_html_clean==0.1.1
41
45
  Requires-Dist: m2r2==0.3.3.post2
42
46
  Requires-Dist: matplotlib==3.9.0
@@ -47,8 +51,10 @@ Requires-Dist: nbsphinx==0.9.4
47
51
  Requires-Dist: netCDF4==1.6.5
48
52
  Requires-Dist: notebook==7.2.1
49
53
  Requires-Dist: numpy==1.24.4
50
- Requires-Dist: pyccel==1.12.0
54
+ Requires-Dist: pre_commit==4.0.1
55
+ Requires-Dist: pyccel==1.12.1
51
56
  Requires-Dist: pydata-sphinx-theme==0.15.3
57
+ Requires-Dist: pylint==3.3.1
52
58
  Requires-Dist: pytest==8.2.2
53
59
  Requires-Dist: pytest-monitor==1.6.6
54
60
  Requires-Dist: pytest-mpi==0.6
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "struphy"
7
- version = "2.3.1"
7
+ version = "2.3.3"
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.10, <3.12"
10
10
  license = {file = "LICENSE"}
@@ -20,12 +20,16 @@ classifiers = [
20
20
  ]
21
21
  dependencies = [
22
22
  'PyYAML==6.0.1',
23
+ 'add-trailing-comma==3.1.0',
23
24
  'argcomplete==3.4.0',
24
- 'desc-opt==0.11.1',
25
+ 'autopep8==2.3.1',
26
+ 'desc-opt==0.12.0',
25
27
  'docutils==0.21.2',
28
+ 'flake8==7.1.1',
26
29
  'gvec-to-python==1.2.2',
27
30
  'h5py==3.11.0',
28
31
  'ipyparallel==8.8.0',
32
+ 'isort==5.13.2',
29
33
  'lxml_html_clean==0.1.1',
30
34
  'm2r2==0.3.3.post2',
31
35
  'matplotlib==3.9.0',
@@ -36,8 +40,10 @@ dependencies = [
36
40
  'netCDF4==1.6.5',
37
41
  'notebook==7.2.1',
38
42
  'numpy==1.24.4',
39
- 'pyccel==1.12.0',
43
+ 'pre_commit==4.0.1',
44
+ 'pyccel==1.12.1',
40
45
  'pydata-sphinx-theme==0.15.3',
46
+ 'pylint==3.3.1',
41
47
  'pytest==8.2.2',
42
48
  'pytest-monitor==1.6.6',
43
49
  'pytest-mpi==0.6',
@@ -83,4 +89,31 @@ struphy = "struphy.console.main:struphy"
83
89
 
84
90
  struphy = ['compile_struphy.mk',
85
91
  'psydac-0.1.13-py3-none-any.whl',
86
- ]
92
+ ]
93
+
94
+ [tool.autopep8]
95
+ # Add specific settings for autopep8
96
+ max_line_length = 120
97
+ ignore = ["E221,E226,E203,E265,E731,E711"]
98
+ # Descriptions of error codes: https://www.flake8rules.com/
99
+ # E201 – Whitespace after (, [ or {
100
+ # E202 – Whitespace before (, [ or {
101
+ # E221 – Multiple spaces before operator
102
+ # E226 – Missing whitespace around arithmetic operators
103
+ # E265 - Block comment should start with '# '
104
+ # E266 – Too many leading # for block comment
105
+ # E731 – Do not assign a lambda expression
106
+ # E203 – Whitespace before : (used in slicing)
107
+ # E711 - Ignore enforcing 'is not None' over '!= None'
108
+
109
+ [tool.isort]
110
+ # Configuration for isort
111
+ profile = "black" # Using the Black profile to match formatting styles
112
+ line_length = 120
113
+ multi_line_output = 3 # Control how isort wraps imports
114
+ include_trailing_comma = true
115
+ force_grid_wrap = 0
116
+ combine_as_imports = true
117
+
118
+ [tool.pylint]
119
+ max-line-length=120
@@ -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
 
@@ -24,9 +24,14 @@ from numpy import empty, zeros
24
24
 
25
25
  import struphy.bsplines.bsplines_kernels as bsplines_kernels
26
26
 
27
+ import struphy.pic.pushing.pusher_args_kernels as pusher_args_kernels
28
+ from struphy.pic.pushing.pusher_args_kernels import DerhamArguments, DomainArguments
29
+
27
30
  #################################
28
31
  ### Single process evaluation ###
29
32
  #################################
33
+
34
+
30
35
  def evaluation_kernel_3d(p1: int, p2: int, p3: int, basis1: 'float[:]', basis2: 'float[:]', basis3: 'float[:]', ind1: 'int[:]', ind2: 'int[:]', ind3: 'int[:]', coeff: 'float[:,:,:]') -> float:
31
36
  """
32
37
  Summing non-zero contributions of a spline function (serial, needs global arrays).
@@ -404,7 +409,19 @@ def evaluate_sparse(t1: 'float[:]', t2: 'float[:]', t3: 'float[:]', p1: int, p2:
404
409
  ##############################
405
410
  ### Distributed evaluation ###
406
411
  ##############################
407
- def eval_spline_mpi_kernel(p1: 'int', p2: 'int', p3: 'int', basis1: 'float[:]', basis2: 'float[:]', basis3: 'float[:]', span1: 'int', span2: 'int', span3: 'int', _data: 'float[:,:,:]', starts: 'int[:]') -> float:
412
+
413
+
414
+ def eval_spline_mpi_kernel(p1: 'int',
415
+ p2: 'int',
416
+ p3: 'int',
417
+ basis1: 'float[:]',
418
+ basis2: 'float[:]',
419
+ basis3: 'float[:]',
420
+ span1: 'int',
421
+ span2: 'int',
422
+ span3: 'int',
423
+ _data: 'float[:,:,:]',
424
+ starts: 'int[:]') -> float:
408
425
  """
409
426
  Summing non-zero contributions of a spline function with distributed memory (domain decomposition).
410
427
 
@@ -767,7 +784,7 @@ def eval_spline_mpi_tensor_product_fixed(span1s: 'int[:]', span2s: 'int[:]', spa
767
784
  for k in range(nk):
768
785
  span3 = span3s[k]
769
786
  b3[:] = b3s[k, :]
770
-
787
+
771
788
  values[i, j, k] = eval_spline_mpi_kernel(pn[0] - kind[0],
772
789
  pn[1] - kind[1],
773
790
  pn[2] - kind[2],
@@ -876,4 +893,203 @@ def eval_spline_mpi_sparse_meshgrid(eta1: 'float[:,:,:]', eta2: 'float[:,:,:]',
876
893
  continue # point not in process domain
877
894
 
878
895
  values[i, j, k] = eval_spline_mpi(
879
- eta1[i, 0, 0], eta2[0, j, 0], eta3[0, 0, k], _data, kind, pn, tn1, tn2, tn3, starts)
896
+ eta1[i, 0, 0], eta2[0, j, 0], eta3[0, 0, k], _data, kind, pn, tn1, tn2, tn3, starts)
897
+
898
+
899
+ ###########################################
900
+ ### Distributed Derham field evaluation ###
901
+ ###########################################
902
+
903
+ def get_spans(eta1: float,
904
+ eta2: float,
905
+ eta3: float,
906
+ args_derham: 'DerhamArguments'):
907
+ '''Compute the knot span index,
908
+ the N-spline values (in bn) and the D-spline values (in bd)
909
+ at (eta1, eta2, eta3).'''
910
+
911
+ # find spans
912
+ span1 = bsplines_kernels.find_span(
913
+ args_derham.tn1, args_derham.pn[0], eta1)
914
+ span2 = bsplines_kernels.find_span(
915
+ args_derham.tn2, args_derham.pn[1], eta2)
916
+ span3 = bsplines_kernels.find_span(
917
+ args_derham.tn3, args_derham.pn[2], eta3)
918
+
919
+ # get spline values at eta
920
+ bsplines_kernels.b_d_splines_slim(
921
+ args_derham.tn1, args_derham.pn[0], eta1, int(span1), args_derham.bn1, args_derham.bd1)
922
+ bsplines_kernels.b_d_splines_slim(
923
+ args_derham.tn2, args_derham.pn[1], eta2, int(span2), args_derham.bn2, args_derham.bd2)
924
+ bsplines_kernels.b_d_splines_slim(
925
+ args_derham.tn3, args_derham.pn[2], eta3, int(span3), args_derham.bn3, args_derham.bd3)
926
+
927
+ return span1, span2, span3
928
+
929
+
930
+ def eval_0form_spline_mpi(span1: int,
931
+ span2: int,
932
+ span3: int,
933
+ args_derham: 'DerhamArguments',
934
+ form_coeffs: 'float[:,:,:]') -> float:
935
+ '''Single-point evaluation of Derham 0-form spline defined by form_coeffs,
936
+ given N-spline values (in bn) and knot span indices span.'''
937
+
938
+ out = eval_spline_mpi_kernel(args_derham.pn[0],
939
+ args_derham.pn[1],
940
+ args_derham.pn[2],
941
+ args_derham.bn1,
942
+ args_derham.bn2,
943
+ args_derham.bn3,
944
+ span1, span2, span3,
945
+ form_coeffs,
946
+ args_derham.starts)
947
+ return out
948
+
949
+
950
+ def eval_1form_spline_mpi(span1: int,
951
+ span2: int,
952
+ span3: int,
953
+ args_derham: 'DerhamArguments',
954
+ form_coeffs_1: 'float[:,:,:]',
955
+ form_coeffs_2: 'float[:,:,:]',
956
+ form_coeffs_3: 'float[:,:,:]',
957
+ out: 'float[:]'):
958
+ '''Single-point evaluation of Derham 1-form spline defined by form_coeffs,
959
+ given N-spline values (in bn), D-spline values (in bd)
960
+ and knot span indices span.'''
961
+
962
+ out[0] = eval_spline_mpi_kernel(args_derham.pn[0] - 1,
963
+ args_derham.pn[1],
964
+ args_derham.pn[2],
965
+ args_derham.bd1,
966
+ args_derham.bn2,
967
+ args_derham.bn3,
968
+ span1, span2, span3,
969
+ form_coeffs_1,
970
+ args_derham.starts)
971
+
972
+ out[1] = eval_spline_mpi_kernel(args_derham.pn[0],
973
+ args_derham.pn[1] - 1,
974
+ args_derham.pn[2],
975
+ args_derham.bn1,
976
+ args_derham.bd2,
977
+ args_derham.bn3,
978
+ span1, span2, span3,
979
+ form_coeffs_2,
980
+ args_derham.starts)
981
+
982
+ out[2] = eval_spline_mpi_kernel(args_derham.pn[0],
983
+ args_derham.pn[1],
984
+ args_derham.pn[2] - 1,
985
+ args_derham.bn1,
986
+ args_derham.bn2,
987
+ args_derham.bd3,
988
+ span1, span2, span3,
989
+ form_coeffs_3,
990
+ args_derham.starts)
991
+
992
+
993
+ def eval_2form_spline_mpi(span1: int,
994
+ span2: int,
995
+ span3: int,
996
+ args_derham: 'DerhamArguments',
997
+ form_coeffs_1: 'float[:,:,:]',
998
+ form_coeffs_2: 'float[:,:,:]',
999
+ form_coeffs_3: 'float[:,:,:]',
1000
+ out: 'float[:]'):
1001
+ '''Single-point evaluation of Derham 2-form spline defined by form_coeffs,
1002
+ given N-spline values (in bn), D-spline values (in bd)
1003
+ and knot span indices span.'''
1004
+
1005
+ out[0] = eval_spline_mpi_kernel(args_derham.pn[0],
1006
+ args_derham.pn[1] - 1,
1007
+ args_derham.pn[2] - 1,
1008
+ args_derham.bn1,
1009
+ args_derham.bd2,
1010
+ args_derham.bd3,
1011
+ span1, span2, span3,
1012
+ form_coeffs_1,
1013
+ args_derham.starts)
1014
+
1015
+ out[1] = eval_spline_mpi_kernel(args_derham.pn[0] - 1,
1016
+ args_derham.pn[1],
1017
+ args_derham.pn[2] - 1,
1018
+ args_derham.bd1,
1019
+ args_derham.bn2,
1020
+ args_derham.bd3,
1021
+ span1, span2, span3,
1022
+ form_coeffs_2,
1023
+ args_derham.starts)
1024
+
1025
+ out[2] = eval_spline_mpi_kernel(args_derham.pn[0] - 1,
1026
+ args_derham.pn[1] - 1,
1027
+ args_derham.pn[2],
1028
+ args_derham.bd1,
1029
+ args_derham.bd2,
1030
+ args_derham.bn3,
1031
+ span1, span2, span3,
1032
+ form_coeffs_3,
1033
+ args_derham.starts)
1034
+
1035
+
1036
+ def eval_3form_spline_mpi(span1: int,
1037
+ span2: int,
1038
+ span3: int,
1039
+ args_derham: 'DerhamArguments',
1040
+ form_coeffs: 'float[:,:,:]') -> float:
1041
+ '''Single-point evaluation of Derham 0-form spline defined by form_coeffs,
1042
+ given D-spline values (in bd) and knot span indices span.'''
1043
+
1044
+ out = eval_spline_mpi_kernel(args_derham.pn[0] - 1,
1045
+ args_derham.pn[1] - 1,
1046
+ args_derham.pn[2] - 1,
1047
+ args_derham.bd1,
1048
+ args_derham.bd2,
1049
+ args_derham.bd3,
1050
+ span1, span2, span3,
1051
+ form_coeffs,
1052
+ args_derham.starts)
1053
+ return out
1054
+
1055
+
1056
+ def eval_vectorfield_spline_mpi(span1: int,
1057
+ span2: int,
1058
+ span3: int,
1059
+ args_derham: 'DerhamArguments',
1060
+ form_coeffs_1: 'float[:,:,:]',
1061
+ form_coeffs_2: 'float[:,:,:]',
1062
+ form_coeffs_3: 'float[:,:,:]',
1063
+ out: 'float[:]'):
1064
+ '''Single-point evaluation of vector-field spline (H^1)^3 defined by form_coeffs,
1065
+ given N-spline values (in bn) and knot span indices span.'''
1066
+
1067
+ out[0] = eval_spline_mpi_kernel(args_derham.pn[0],
1068
+ args_derham.pn[1],
1069
+ args_derham.pn[2],
1070
+ args_derham.bn1,
1071
+ args_derham.bn2,
1072
+ args_derham.bn3,
1073
+ span1, span2, span3,
1074
+ form_coeffs_1,
1075
+ args_derham.starts)
1076
+
1077
+ out[1] = eval_spline_mpi_kernel(args_derham.pn[0],
1078
+ args_derham.pn[1],
1079
+ args_derham.pn[2],
1080
+ args_derham.bn1,
1081
+ args_derham.bn2,
1082
+ args_derham.bn3,
1083
+ span1, span2, span3,
1084
+ form_coeffs_2,
1085
+ args_derham.starts)
1086
+
1087
+ out[2] = eval_spline_mpi_kernel(args_derham.pn[0],
1088
+ args_derham.pn[1],
1089
+ args_derham.pn[2],
1090
+ args_derham.bn1,
1091
+ args_derham.bn2,
1092
+ args_derham.bn3,
1093
+ span1, span2, span3,
1094
+ form_coeffs_3,
1095
+ args_derham.starts)
@@ -1,5 +1,6 @@
1
1
  def pytest_addoption(parser):
2
2
  parser.addoption("--fast", action="store_true")
3
+ parser.addoption("--with-desc", action="store_true")
3
4
 
4
5
 
5
6
  def pytest_generate_tests(metafunc):
@@ -8,3 +9,7 @@ def pytest_generate_tests(metafunc):
8
9
  option_value = metafunc.config.option.fast
9
10
  if 'fast' in metafunc.fixturenames and option_value is not None:
10
11
  metafunc.parametrize("fast", [option_value])
12
+
13
+ option_value = metafunc.config.option.with_desc
14
+ if 'with_desc' in metafunc.fixturenames and option_value is not None:
15
+ metafunc.parametrize("with_desc", [option_value])
@@ -28,7 +28,7 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
28
28
 
29
29
  dependencies : bool
30
30
  Whether to print Struphy kernels (to be compiled) and their dependencies on screen.
31
-
31
+
32
32
  yes : bool
33
33
  Whether to say yes to prompt when changing the language.
34
34
  """
@@ -39,6 +39,7 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
39
39
  import pyccel
40
40
  import yaml
41
41
  import sysconfig
42
+ import struphy.utils.utils as utils
42
43
  import struphy.dependencies as depmod
43
44
 
44
45
  libpath = struphy.__path__[0]
@@ -49,9 +50,8 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
49
50
  raise NameError(
50
51
  f'Stuphy installation path MUST NOT contain blank spaces. Please rename "{libpath}".')
51
52
 
52
- # struphy state
53
- with open(os.path.join(libpath, 'state.yml')) as f:
54
- state = yaml.load(f, Loader=yaml.FullLoader)
53
+ # Read struphy state file
54
+ state = utils.read_state()
55
55
 
56
56
  # collect kernels
57
57
  if 'kernels' not in state:
@@ -91,6 +91,10 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
91
91
  '--status',
92
92
  ], check=True, cwd=libpath)
93
93
 
94
+ print('\nDeleting state.yml ...')
95
+ os.remove(os.path.join(libpath, 'state.yml'))
96
+ print('Done.')
97
+
94
98
  elif status:
95
99
 
96
100
  # update status
@@ -183,7 +187,7 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
183
187
  else:
184
188
  yesno = input(
185
189
  f'Kernels compiled in language {state["last_used_language"]} exist, will be deleted, continue (Y/n)?')
186
-
190
+
187
191
  if yesno in ('', 'Y', 'y', 'yes'):
188
192
  subprocess.run(['struphy',
189
193
  'compile',
@@ -261,3 +265,9 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
261
265
  'compile',
262
266
  '--status',
263
267
  ], check=True, cwd=libpath)
268
+
269
+ # collect available models
270
+ print('')
271
+ subprocess.run(['struphy',
272
+ '--refresh-models',
273
+ ], check=True, cwd=libpath)