struphy 2.2.0__tar.gz → 2.3.1__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 (315) hide show
  1. {struphy-2.2.0 → struphy-2.3.1}/LICENSE +1 -1
  2. {struphy-2.2.0/src/struphy.egg-info → struphy-2.3.1}/PKG-INFO +23 -20
  3. {struphy-2.2.0 → struphy-2.3.1}/pyproject.toml +23 -20
  4. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/bsplines.py +1 -1
  5. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/compile.py +1 -1
  6. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/main.py +16 -16
  7. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/run.py +3 -2
  8. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/test.py +3 -30
  9. struphy-2.3.1/src/struphy/diagnostics/console_diagn.py +217 -0
  10. struphy-2.3.1/src/struphy/diagnostics/diagn_tools.py +706 -0
  11. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/dispersion_relations/analytic.py +227 -163
  12. struphy-2.3.1/src/struphy/dispersion_relations/base.py +176 -0
  13. struphy-2.3.1/src/struphy/dispersion_relations/utilities.py +29 -0
  14. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/examples/_draw_parallel.py +1 -1
  15. struphy-2.3.1/src/struphy/feec/basis_projection_kernels.py +1967 -0
  16. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/basis_projection_ops.py +131 -205
  17. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/linear_operators.py +1 -0
  18. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/mass.py +317 -154
  19. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/mass_kernels.py +92 -1
  20. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/preconditioner.py +391 -8
  21. struphy-2.3.1/src/struphy/feec/projectors.py +1780 -0
  22. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/psydac_derham.py +775 -209
  23. struphy-2.3.1/src/struphy/feec/tests/test_field_init.py +930 -0
  24. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_l2_projectors.py +2 -2
  25. struphy-2.3.1/src/struphy/feec/tests/test_local_projectors.py +259 -0
  26. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +10 -10
  27. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_mass_matrices.py +44 -7
  28. struphy-2.3.1/src/struphy/feec/variational_utilities.py +226 -0
  29. struphy-2.3.1/src/struphy/fields_background/braginskii_equil/base.py +546 -0
  30. struphy-2.3.1/src/struphy/fields_background/braginskii_equil/equils.py +120 -0
  31. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/base.py +286 -124
  32. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/equils.py +944 -52
  33. struphy-2.3.1/src/struphy/fields_background/tests/test_desc_equil.py +219 -0
  34. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/test_gvec_equil.py +24 -18
  35. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +4 -4
  36. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/base.py +47 -26
  37. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/domains.py +109 -30
  38. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/perturbations.py +289 -161
  39. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/tests/test_init_perturbations.py +139 -107
  40. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -1
  41. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +2 -3
  42. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +3 -4
  43. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +1 -1
  44. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +11 -30
  45. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +2 -24
  46. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +11 -30
  47. struphy-2.3.1/src/struphy/io/inp/parameters.yml +114 -0
  48. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_02.yml +4 -18
  49. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_03.yml +1 -1
  50. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_04a.yml +3 -2
  51. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_04b.yml +3 -5
  52. struphy-2.3.1/src/struphy/io/inp/tutorials/params_04c.yml +112 -0
  53. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_05a.yml +3 -13
  54. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_05b.yml +11 -21
  55. struphy-2.3.1/src/struphy/io/inp/tutorials/params_12a.yml +59 -0
  56. struphy-2.3.1/src/struphy/io/inp/tutorials/params_12b.yml +65 -0
  57. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/setup.py +89 -81
  58. struphy-2.3.1/src/struphy/kinetic_background/base.py +625 -0
  59. struphy-2.3.1/src/struphy/kinetic_background/maxwellians.py +1385 -0
  60. struphy-2.3.1/src/struphy/kinetic_background/tests/test_base.py +93 -0
  61. struphy-2.3.1/src/struphy/kinetic_background/tests/test_maxwellians.py +1817 -0
  62. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/schur_solver.py +118 -4
  63. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/main.py +59 -8
  64. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/base.py +609 -322
  65. struphy-2.3.1/src/struphy/models/fluid.py +1107 -0
  66. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/hybrid.py +69 -125
  67. struphy-2.3.1/src/struphy/models/kinetic.py +1911 -0
  68. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_fluid_models.py +3 -3
  69. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_hybrid_models.py +1 -1
  70. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_kinetic_models.py +6 -5
  71. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_toy_models.py +4 -4
  72. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_xxpproc.py +12 -13
  73. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/util.py +0 -13
  74. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/toy.py +343 -165
  75. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/accum_kernels.py +137 -40
  76. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/accum_kernels_gc.py +396 -274
  77. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/particles_to_grid.py +54 -17
  78. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/base.py +383 -182
  79. struphy-2.3.1/src/struphy/pic/particles.py +508 -0
  80. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/eval_kernels_gc.py +74 -74
  81. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher.py +11 -9
  82. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher_kernels.py +257 -4
  83. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher_kernels_gc.py +801 -143
  84. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_accum_vec_H1.py +6 -7
  85. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_accumulation.py +1 -1
  86. struphy-2.3.1/src/struphy/pic/tests/test_binning.py +638 -0
  87. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_draw_parallel.py +28 -25
  88. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pushers.py +14 -34
  89. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/utilities_kernels.py +309 -54
  90. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/basic.py +24 -2
  91. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/post_processing_tools.py +101 -56
  92. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/pproc_struphy.py +12 -5
  93. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/propagators/base.py +16 -0
  94. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/propagators/propagators_coupling.py +722 -270
  95. struphy-2.3.1/src/struphy/propagators/propagators_fields.py +6170 -0
  96. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/propagators/propagators_markers.py +758 -66
  97. struphy-2.3.1/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +588 -0
  98. struphy-2.3.1/src/struphy/propagators/tests/test_poisson.py +430 -0
  99. struphy-2.2.0/src/struphy/psydac-0.1.9-py3-none-any.whl → struphy-2.3.1/src/struphy/psydac-0.1.13-py3-none-any.whl +0 -0
  100. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/linearextendedmhd.py +5 -5
  101. struphy-2.3.1/src/struphy/tutorials/tests/__init__.py +0 -0
  102. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/tests/test_tutorials.py +32 -1
  103. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/utilities.py +2 -0
  104. {struphy-2.2.0 → struphy-2.3.1/src/struphy.egg-info}/PKG-INFO +23 -20
  105. {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/SOURCES.txt +18 -6
  106. struphy-2.3.1/src/struphy.egg-info/requires.txt +28 -0
  107. struphy-2.2.0/src/struphy/diagnostics/console_diagn.py +0 -121
  108. struphy-2.2.0/src/struphy/diagnostics/diagn_tools.py +0 -366
  109. struphy-2.2.0/src/struphy/dispersion_relations/base.py +0 -153
  110. struphy-2.2.0/src/struphy/feec/basis_projection_kernels.py +0 -557
  111. struphy-2.2.0/src/struphy/feec/projectors.py +0 -662
  112. struphy-2.2.0/src/struphy/feec/tests/test_noise_init.py +0 -54
  113. struphy-2.2.0/src/struphy/fields_background/electric_equil/analytical.py +0 -24
  114. struphy-2.2.0/src/struphy/fields_background/electric_equil/base.py +0 -60
  115. struphy-2.2.0/src/struphy/io/inp/parameters.yml +0 -156
  116. struphy-2.2.0/src/struphy/kinetic_background/base.py +0 -137
  117. struphy-2.2.0/src/struphy/kinetic_background/maxwellians.py +0 -831
  118. struphy-2.2.0/src/struphy/models/fluid.py +0 -610
  119. struphy-2.2.0/src/struphy/models/kinetic.py +0 -1085
  120. struphy-2.2.0/src/struphy/pic/particles.py +0 -373
  121. struphy-2.2.0/src/struphy/propagators/propagators_fields.py +0 -3689
  122. struphy-2.2.0/src/struphy/propagators/tests/test_fields_propagators.py +0 -357
  123. struphy-2.2.0/src/struphy.egg-info/requires.txt +0 -25
  124. {struphy-2.2.0 → struphy-2.3.1}/README.md +0 -0
  125. {struphy-2.2.0 → struphy-2.3.1}/setup.cfg +0 -0
  126. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/__init__.py +0 -0
  127. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/__init__.py +0 -0
  128. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/bsplines_kernels.py +0 -0
  129. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  130. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  131. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
  132. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  133. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/tests/__init__.py +0 -0
  134. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/tests/test_bsplines_kernels.py +0 -0
  135. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
  136. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/compile_struphy.mk +0 -0
  137. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/conftest.py +0 -0
  138. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/__init__.py +0 -0
  139. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/params.py +0 -0
  140. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/pproc.py +0 -0
  141. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/profile.py +0 -0
  142. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/units.py +0 -0
  143. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/dependencies.py +0 -0
  144. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/__init__.py +0 -0
  145. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/continuous_spectra.py +0 -0
  146. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/paraview/__init__.py +0 -0
  147. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
  148. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
  149. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/dispersion_relations/__init__.py +0 -0
  150. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
  151. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  152. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_2d.py +0 -0
  153. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -0
  154. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
  155. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +0 -0
  156. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
  157. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
  158. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
  159. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
  160. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
  161. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
  162. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -0
  163. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_kernels_control_variate.py +0 -0
  164. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -0
  165. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_cv_kernel_2.py +0 -0
  166. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_kernels_control_variate.py +0 -0
  167. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -0
  168. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
  169. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
  170. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
  171. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
  172. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
  173. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
  174. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
  175. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
  176. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
  177. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
  178. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
  179. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
  180. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
  181. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
  182. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
  183. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
  184. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +0 -0
  185. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
  186. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
  187. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
  188. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
  189. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
  190. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
  191. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
  192. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_L2_projector_kernel.py +0 -0
  193. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_L2.py +0 -0
  194. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_local.py +0 -0
  195. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_local_projector_kernel.py +0 -0
  196. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
  197. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
  198. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
  199. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +0 -0
  200. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +0 -0
  201. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
  202. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
  203. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
  204. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
  205. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
  206. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/tests/test_legacy_mhd_projectors.py +0 -0
  207. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/__init__.py +0 -0
  208. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  209. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/__init__.py +0 -0
  210. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_basis_operators.py +0 -0
  211. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_basis_ops.py +0 -0
  212. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_derham.py +0 -0
  213. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_eval_field.py +0 -0
  214. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
  215. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
  216. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
  217. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/utilities.py +0 -0
  218. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/utilities_kernels.py +0 -0
  219. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/__init__.py +0 -0
  220. {struphy-2.2.0/src/struphy/fields_background/electric_equil → struphy-2.3.1/src/struphy/fields_background/braginskii_equil}/__init__.py +0 -0
  221. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
  222. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
  223. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  224. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
  225. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
  226. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
  227. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  228. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
  229. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  230. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
  231. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  232. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
  233. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
  234. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
  235. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
  236. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/__init__.py +0 -0
  237. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
  238. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/__init__.py +0 -0
  239. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/evaluation_kernels.py +0 -0
  240. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/map_coef/__init__.py +0 -0
  241. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/mappings_kernels.py +0 -0
  242. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/tests/__init__.py +0 -0
  243. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/tests/test_domain.py +0 -0
  244. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/transform_kernels.py +0 -0
  245. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/utilities.py +0 -0
  246. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/utilities_kernels.py +0 -0
  247. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/__init__.py +0 -0
  248. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/eigenfunctions.py +0 -0
  249. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/tests/__init__.py +0 -0
  250. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/utilities.py +0 -0
  251. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/__init__.py +0 -0
  252. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/batch_cobra.sh +0 -0
  253. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_016.sh +0 -0
  254. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_032.sh +0 -0
  255. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_064.sh +0 -0
  256. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_128.sh +0 -0
  257. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_256.sh +0 -0
  258. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_512.sh +0 -0
  259. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/__init__.py +0 -0
  260. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/out/__init__.py +0 -0
  261. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/output_handling.py +0 -0
  262. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/kinetic_background/__init__.py +0 -0
  263. {struphy-2.2.0/src/struphy/linear_algebra → struphy-2.3.1/src/struphy/kinetic_background/tests}/__init__.py +0 -0
  264. {struphy-2.2.0/src/struphy/linear_algebra/tests → struphy-2.3.1/src/struphy/linear_algebra}/__init__.py +0 -0
  265. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  266. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  267. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  268. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  269. {struphy-2.2.0/src/struphy/models → struphy-2.3.1/src/struphy/linear_algebra/tests}/__init__.py +0 -0
  270. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -0
  271. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -0
  272. {struphy-2.2.0/src/struphy/models/tests → struphy-2.3.1/src/struphy/models}/__init__.py +0 -0
  273. {struphy-2.2.0/src/struphy/pic → struphy-2.3.1/src/struphy/models/tests}/__init__.py +0 -0
  274. {struphy-2.2.0/src/struphy/pic/accumulation → struphy-2.3.1/src/struphy/pic}/__init__.py +0 -0
  275. {struphy-2.2.0/src/struphy/pic/pushing → struphy-2.3.1/src/struphy/pic/accumulation}/__init__.py +0 -0
  276. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  277. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
  278. {struphy-2.2.0/src/struphy/pic/tests → struphy-2.3.1/src/struphy/pic/pushing}/__init__.py +0 -0
  279. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
  280. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/sampling_kernels.py +0 -0
  281. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/sobol_seq.py +0 -0
  282. {struphy-2.2.0/src/struphy/pic/tests/test_pic_legacy_files → struphy-2.3.1/src/struphy/pic/tests}/__init__.py +0 -0
  283. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
  284. {struphy-2.2.0/src/struphy/polar → struphy-2.3.1/src/struphy/pic/tests/test_pic_legacy_files}/__init__.py +0 -0
  285. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
  286. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
  287. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
  288. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
  289. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
  290. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
  291. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
  292. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
  293. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
  294. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
  295. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/utilities.py +0 -0
  296. {struphy-2.2.0/src/struphy/polar/tests → struphy-2.3.1/src/struphy/polar}/__init__.py +0 -0
  297. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/extraction_operators.py +0 -0
  298. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/linear_operators.py +0 -0
  299. {struphy-2.2.0/src/struphy/post_processing → struphy-2.3.1/src/struphy/polar/tests}/__init__.py +0 -0
  300. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
  301. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/tests/test_polar.py +0 -0
  302. {struphy-2.2.0/src/struphy/post_processing/tests → struphy-2.3.1/src/struphy/post_processing}/__init__.py +0 -0
  303. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/cprofile_analyser.py +0 -0
  304. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/profile_struphy.py +0 -0
  305. {struphy-2.2.0/src/struphy/propagators → struphy-2.3.1/src/struphy/post_processing/tests}/__init__.py +0 -0
  306. {struphy-2.2.0/src/struphy/propagators/tests → struphy-2.3.1/src/struphy/propagators}/__init__.py +0 -0
  307. {struphy-2.2.0/src/struphy/tutorials → struphy-2.3.1/src/struphy/propagators/tests}/__init__.py +0 -0
  308. {struphy-2.2.0/src/struphy/tutorials/longer_examples → struphy-2.3.1/src/struphy/tutorials}/__init__.py +0 -0
  309. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/TAE_tokamak.py +0 -0
  310. {struphy-2.2.0/src/struphy/tutorials/tests → struphy-2.3.1/src/struphy/tutorials/longer_examples}/__init__.py +0 -0
  311. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/linearmhdvlasov_cc.py +0 -0
  312. {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/linearmhdvlasov_pc.py +0 -0
  313. {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/dependency_links.txt +0 -0
  314. {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/entry_points.txt +0 -0
  315. {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- Copyright (c) 2019-2023, Struphy developers, Max Planck Institute for Plasma Physics
1
+ Copyright (c) 2019-2024, 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
1
  Metadata-Version: 2.1
2
2
  Name: struphy
3
- Version: 2.2.0
3
+ Version: 2.3.1
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-2023, Struphy developers, Max Planck Institute for Plasma Physics
7
+ License: Copyright (c) 2019-2024, 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,34 +27,37 @@ 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.7
30
+ 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: argcomplete==3.2.1
35
- Requires-Dist: docutils==0.20.1
36
- Requires-Dist: gvec-to-python==1.2.0
37
- Requires-Dist: h5py==3.10.0
38
- Requires-Dist: ipyparallel==8.6.1
34
+ Requires-Dist: argcomplete==3.4.0
35
+ Requires-Dist: desc-opt==0.11.1
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
39
41
  Requires-Dist: m2r2==0.3.3.post2
40
- Requires-Dist: matplotlib==3.8.2
42
+ Requires-Dist: matplotlib==3.9.0
41
43
  Requires-Dist: mistune==0.8.4
42
- Requires-Dist: mpi4py==3.1.5
43
- Requires-Dist: myst-parser==2.0.0
44
- Requires-Dist: nbsphinx==0.9.3
45
- Requires-Dist: notebook==7.0.6
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
46
49
  Requires-Dist: numpy==1.24.4
47
- Requires-Dist: pyccel==1.11.1
48
- Requires-Dist: pydata-sphinx-theme==0.15.1
49
- Requires-Dist: pytest==7.4.4
50
+ Requires-Dist: pyccel==1.12.0
51
+ Requires-Dist: pydata-sphinx-theme==0.15.3
52
+ Requires-Dist: pytest==8.2.2
50
53
  Requires-Dist: pytest-monitor==1.6.6
51
54
  Requires-Dist: pytest-mpi==0.6
52
- Requires-Dist: scipy==1.11.4
53
- Requires-Dist: Sphinx==7.2.6
55
+ Requires-Dist: scipy==1.13.1
56
+ Requires-Dist: Sphinx==7.3.7
54
57
  Requires-Dist: sphinxcontrib-napoleon==0.7
55
- Requires-Dist: tqdm==4.66.1
58
+ Requires-Dist: tqdm==4.66.4
56
59
  Requires-Dist: vtk==9.3.0
57
- Requires-Dist: wheel==0.42.0
60
+ Requires-Dist: wheel==0.43.0
58
61
 
59
62
  # Struphy - Structure-preserving hybrid codes
60
63
 
@@ -4,9 +4,9 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "struphy"
7
- version = "2.2.0"
7
+ version = "2.3.1"
8
8
  readme = "README.md"
9
- requires-python = ">=3.7, <3.12"
9
+ requires-python = ">=3.10, <3.12"
10
10
  license = {file = "LICENSE"}
11
11
  authors = [
12
12
  { name = "Max Planck Institute for Plasma Physics"},
@@ -20,30 +20,33 @@ classifiers = [
20
20
  ]
21
21
  dependencies = [
22
22
  'PyYAML==6.0.1',
23
- 'argcomplete==3.2.1',
24
- 'docutils==0.20.1',
25
- 'gvec-to-python==1.2.0',
26
- 'h5py==3.10.0',
27
- 'ipyparallel==8.6.1',
23
+ 'argcomplete==3.4.0',
24
+ 'desc-opt==0.11.1',
25
+ 'docutils==0.21.2',
26
+ 'gvec-to-python==1.2.2',
27
+ 'h5py==3.11.0',
28
+ 'ipyparallel==8.8.0',
29
+ 'lxml_html_clean==0.1.1',
28
30
  'm2r2==0.3.3.post2',
29
- 'matplotlib==3.8.2',
31
+ 'matplotlib==3.9.0',
30
32
  'mistune==0.8.4',
31
- 'mpi4py==3.1.5',
32
- 'myst-parser==2.0.0',
33
- 'nbsphinx==0.9.3',
34
- 'notebook==7.0.6',
33
+ 'mpi4py==3.1.6',
34
+ 'myst-parser==3.0.1',
35
+ 'nbsphinx==0.9.4',
36
+ 'netCDF4==1.6.5',
37
+ 'notebook==7.2.1',
35
38
  'numpy==1.24.4',
36
- 'pyccel==1.11.1',
37
- 'pydata-sphinx-theme==0.15.1',
38
- 'pytest==7.4.4',
39
+ 'pyccel==1.12.0',
40
+ 'pydata-sphinx-theme==0.15.3',
41
+ 'pytest==8.2.2',
39
42
  'pytest-monitor==1.6.6',
40
43
  'pytest-mpi==0.6',
41
- 'scipy==1.11.4',
42
- 'Sphinx==7.2.6',
44
+ 'scipy==1.13.1',
45
+ 'Sphinx==7.3.7',
43
46
  'sphinxcontrib-napoleon==0.7',
44
- 'tqdm==4.66.1',
47
+ 'tqdm==4.66.4',
45
48
  'vtk==9.3.0',
46
- 'wheel==0.42.0',
49
+ 'wheel==0.43.0',
47
50
  ]
48
51
 
49
52
  [project.urls]
@@ -79,5 +82,5 @@ struphy = "struphy.console.main:struphy"
79
82
  ]
80
83
 
81
84
  struphy = ['compile_struphy.mk',
82
- 'psydac-0.1.9-py3-none-any.whl',
85
+ 'psydac-0.1.13-py3-none-any.whl',
83
86
  ]
@@ -373,7 +373,7 @@ def collocation_matrix(knots, degree, xgrid, periodic, normalize=False):
373
373
  # ==============================================================================
374
374
  def histopolation_matrix(knots, degree, xgrid, periodic):
375
375
  """
376
- Computes the histopolation matrix $H_ij = int_x_i^x_{i+1} D_j(x) dx$ of the M_splines.
376
+ Computes the histopolation matrix $H_ij = int_{x_i}^x_{i+1} D_j(x) dx$ of the M_splines.
377
377
 
378
378
  Parameters
379
379
  ----------
@@ -208,7 +208,7 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
208
208
  flags += ' --verbose'
209
209
 
210
210
  # install psydac from wheel if not there
211
- current_ver = '0.1.9'
211
+ current_ver = '0.1.13'
212
212
  psydac_file = 'psydac-' + current_ver + '-py3-none-any.whl'
213
213
 
214
214
  try:
@@ -40,7 +40,7 @@ def struphy():
40
40
 
41
41
  # version message
42
42
  version_message = f'Struphy {__version__}\n'
43
- version_message += 'Copyright 2019-2023 (c) Struphy dev team | Max Planck Institute for Plasma Physics\n'
43
+ version_message += 'Copyright 2019-2024 (c) Struphy dev team | Max Planck Institute for Plasma Physics\n'
44
44
  version_message += 'MIT license\n'
45
45
 
46
46
  # state dictionary
@@ -88,7 +88,8 @@ def struphy():
88
88
  out_folders += [name]
89
89
 
90
90
  # check batch scripts in current batch path:
91
- batch_files = recursive_get_files(b_path, contains=('.sh'), out=[], prefix=[])
91
+ batch_files = recursive_get_files(
92
+ b_path, contains=('.sh'), out=[], prefix=[])
92
93
 
93
94
  # collect available model, contains=('.yml', '.yaml')s
94
95
  list_fluid = []
@@ -225,11 +226,11 @@ def struphy():
225
226
  parser_compile.add_argument('-v', '--verbose',
226
227
  help='call pyccel with --verbose compiler option',
227
228
  action='store_true')
228
-
229
+
229
230
  parser_compile.add_argument('--dependencies',
230
231
  help='print Struphy kernels to be compiled (.py) and their dependencies (.so) on screen',
231
232
  action='store_true')
232
-
233
+
233
234
  parser_compile.add_argument('-y', '--yes',
234
235
  help='say yes to prompt when changing the language',
235
236
  action='store_true')
@@ -306,7 +307,7 @@ def struphy():
306
307
  parser_run.add_argument('--debug',
307
308
  help='launch a Cobra debug run, see https://docs.mpcdf.mpg.de/doc/computing/cobra-user-guide.html#interactive-debug-runs',
308
309
  action='store_true',)
309
-
310
+
310
311
  parser_run.add_argument('--cprofile',
311
312
  help='run with Cprofile',
312
313
  action='store_true',)
@@ -436,20 +437,19 @@ def struphy():
436
437
  formatter_class=lambda prog: argparse.RawTextHelpFormatter(
437
438
  prog, max_help_position=30),
438
439
  help='run Struphy tests',
439
- description='Run available unit tests or test Struphy models, propagators or tutorials.')
440
+ description='Run available unit tests or test Struphy models or tutorials.')
440
441
 
441
442
  parser_test.add_argument('group',
442
443
  type=str,
443
444
  choices=list_models +
444
- ['models'] + ['unit'] + ['propagators'] +
445
+ ['models'] + ['unit'] +
445
446
  ['tutorials'] + ['timings'],
446
447
  metavar='GROUP',
447
448
  help='can be either:\na) a model name (tests on 1 MPI process in "Cuboid", "HollowTorus" and "Tokamak" geometries) \
448
449
  \nb) "models" for quick testing of all models \
449
450
  \nc) "unit" for performing unit tests \
450
- \nd) "propagators" for testing all propagators \
451
- \ne) "tutorials" for notebook tutorials, see `https://struphy.pages.mpcdf.de/struphy/sections/tutorials.html`_ \
452
- \nf) "timings" for creating .html and .json files of test metrics (include --verbose to print metrics to screen)',)
451
+ \nd) "tutorials" for notebook tutorials, see `https://struphy.pages.mpcdf.de/struphy/sections/tutorials.html`_ \
452
+ \ne) "timings" for creating .html and .json files of test metrics (include --verbose to print metrics to screen)',)
453
453
 
454
454
  parser_test.add_argument('--mpi',
455
455
  type=int,
@@ -464,7 +464,7 @@ def struphy():
464
464
  parser_test.add_argument('-v', '--verbose',
465
465
  help='print timings to screen',
466
466
  action='store_true')
467
-
467
+
468
468
  parser_test.add_argument('--monitor',
469
469
  help='use pytest-monitor in tests',
470
470
  action='store_true')
@@ -473,7 +473,7 @@ def struphy():
473
473
  type=int,
474
474
  help='specific tutorial simulation to run (int, optional)',
475
475
  default=None)
476
-
476
+
477
477
  parser_test.add_argument('-T', '--Tend',
478
478
  type=float,
479
479
  help='if GROUP=a), simulation end time in units of the model (default=0.015 with dt=0.005), data is only saved at TEND if set',
@@ -695,11 +695,11 @@ def recursive_get_files(path, contains=('.yml', '.yaml'), out=[], prefix=[]):
695
695
  prefix = [name]
696
696
  else:
697
697
  prefix += [os.path.join(prefix[-1], name)]
698
- recursive_get_files(os.path.join(path, name),
699
- contains=contains,
700
- out=out,
698
+ recursive_get_files(os.path.join(path, name),
699
+ contains=contains,
700
+ out=out,
701
701
  prefix=prefix)
702
702
  if n_folders == 0 and len(prefix) != 0:
703
703
  prefix.pop()
704
704
 
705
- return out
705
+ return out
@@ -149,11 +149,12 @@ def struphy_run(model,
149
149
  command += ['-r']
150
150
 
151
151
  if cprofile:
152
- print('Cprofile turned on.')
152
+ print('\nCprofile turned on.')
153
153
  else:
154
- print('Cprofile turned off.')
154
+ print('\nCprofile turned off.')
155
155
 
156
156
  # run command as subprocess
157
+ print(f"\nRunning the following command:\n{' '.join(command)}")
157
158
  subprocess.run(command, check=True, cwd=libpath)
158
159
 
159
160
  # run in batch mode
@@ -31,8 +31,6 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
31
31
  If group is a model name, simulation end time in units of the model (default=0.015 with dt=0.005). Data is only saved at Tend if set.
32
32
  """
33
33
 
34
- assert mpi >= 2, 'Tests require at least 2 MPI processes.'
35
-
36
34
  libpath = struphy.__path__[0]
37
35
 
38
36
  pymon_abs = os.path.join(libpath, '_pymon/')
@@ -53,7 +51,7 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
53
51
  'pytest',
54
52
  '--no-monitor'*(not monitor),
55
53
  '-k',
56
- 'not _models and not _propagators and not _tutorial and not pproc',
54
+ 'not _models and not _tutorial and not pproc',
57
55
  '--with-mpi',
58
56
  '--restrict-scope-to',
59
57
  'module',
@@ -127,31 +125,6 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
127
125
  '--no-monitor',],
128
126
  check=True, cwd=libpath)
129
127
 
130
- elif 'propagators' in group:
131
- pymon_file = os.path.join(pymon_abs, '.pymon_propagators')
132
- if os.path.isfile(pymon_file):
133
- os.remove(pymon_file)
134
-
135
- subprocess.run(['mpirun',
136
- '-n',
137
- str(mpi),
138
- 'pytest',
139
- '--no-monitor'*(not monitor),
140
- '-k',
141
- '_propagators',
142
- '--with-mpi',
143
- '--restrict-scope-to',
144
- 'module',
145
- '--db',
146
- '_pymon/.pymon_propagators',
147
- '--description',
148
- f'language={state["last_used_language"]}, compiler={state["last_used_compiler"]}, omp_pic={state["last_used_omp_pic"]}, omp_feec={state["last_used_omp_feec"]}',
149
- '--tag',
150
- f'struphy={importlib.metadata.version("struphy")}',
151
- '--tag',
152
- f'pyccel={pyccel.__version__}',],
153
- check=True, cwd=libpath)
154
-
155
128
  elif 'tutorials' in group:
156
129
  pymon_file = os.path.join(pymon_abs, '.pymon_tutorials')
157
130
  if os.path.isfile(pymon_file):
@@ -204,7 +177,7 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
204
177
 
205
178
  elif 'timings' in group:
206
179
 
207
- for gr in ['unit', 'models', 'propagators', 'tutorials']:
180
+ for gr in ['unit', 'models', 'tutorials']:
208
181
  _file = os.path.join(pymon_abs, '.pymon_' + gr)
209
182
  if os.path.isfile(_file):
210
183
  pymon_html_json(gr, verbose=verbose)
@@ -238,7 +211,7 @@ def pymon_html_json(group, verbose=False):
238
211
  Parameters
239
212
  ----------
240
213
  group : str
241
- One of "unit", "models", "propagators", "tutorials" or "pproc".
214
+ One of "unit", "models", "tutorials" or "pproc".
242
215
  '''
243
216
 
244
217
  libpath = struphy.__path__[0]
@@ -0,0 +1,217 @@
1
+ """ An executable for quick access to the diagnostic tools in diagn_tools.py """
2
+
3
+ #!/usr/bin/env python3
4
+ import numpy as np
5
+ import argparse
6
+ import os
7
+ import h5py
8
+ import yaml
9
+
10
+ import struphy
11
+ from struphy.diagnostics.diagn_tools import plot_scalars, plot_distr_fun, phase_space_video
12
+
13
+
14
+ def main():
15
+ parser = argparse.ArgumentParser(
16
+ formatter_class=argparse.RawTextHelpFormatter)
17
+
18
+ parser.add_argument('actions', nargs='+', type=str, default=[None],
19
+ help='''which actions to perform:\
20
+ \n - plot_scalars : plots the scalar quantities that were saved during the simulation\
21
+ \n - plot_distr : plots the distribution function and delta-f (if available)\
22
+ \n set points for slicing with options below (default is middle of the space)\
23
+ \n - phase_space : make a video of the distribution function (minus the background) in a 2D slice of phase space
24
+ ''')
25
+ parser.add_argument('-f', nargs=1, type=str, default=['sim_1'],
26
+ help='name of the folder for the simulation data (in io/out)')
27
+ parser.add_argument('-scalars', nargs='+', action='append', default=[],
28
+ help='(for plot_scalars) which quantities to plot')
29
+ parser.add_argument('--log', action='store_true',
30
+ help='(for plot_scalars) if logarithmic y-axis should be used')
31
+ parser.add_argument('--show', action='store_true',
32
+ help='(for plot_scalars) if the plot should be shown')
33
+ parser.add_argument('--nosave', action='store_true',
34
+ help='(for plot_scalars) if the plot should not be displayed')
35
+ parser.add_argument('--fit', action='store_true',
36
+ help='(for plot_scalars) if a fit should be done (using maxima)')
37
+ parser.add_argument('--minfit', action='store_true',
38
+ help='(for plot_scalars) if a fit should be done using minima')
39
+ parser.add_argument('-degree', nargs=1, type=int, default=[1],
40
+ help='(for plot_scalars --fit) the degree of the fit curve')
41
+ parser.add_argument('-extrema', nargs=1, type=int, default=[4],
42
+ help='(for plot_scalars --fit) how many extrema should be used for the fit')
43
+ parser.add_argument('-startextr', nargs=1, type=int, default=[0],
44
+ help='(for plot_scalars --fit) which extremum should be used first for the fit (0 = first)')
45
+ parser.add_argument('-order', nargs=1, type=int, default=[4],
46
+ help='(for plot_scalars --fit) how many neighbouring points should be used for determining the extrema')
47
+ parser.add_argument('-t', nargs=1, type=float, default=[0.],
48
+ help='(for plot_distr) at which time to plot the distribution function')
49
+ parser.add_argument('-e1', nargs=1, type=float, default=[0.5],
50
+ help='(for plot_distr) at which position in eta1 direction to plot')
51
+ parser.add_argument('-e2', nargs=1, type=float, default=[0.5],
52
+ help='(for plot_distr) at which position in eta2 direction to plot')
53
+ parser.add_argument('-e3', nargs=1, type=float, default=[0.5],
54
+ help='(for plot_distr) at which position in eta3 direction to plot')
55
+ parser.add_argument('-v1', nargs=1, type=float, default=[None],
56
+ help='(for plot_distr) at which point in v1 direction to plot')
57
+ parser.add_argument('-v2', nargs=1, type=float, default=[None],
58
+ help='(for plot_distr) at which point in v2 direction to plot')
59
+ parser.add_argument('-v3', nargs=1, type=float, default=[None],
60
+ help='(for plot_distr) at which point in v3 direction to plot')
61
+
62
+ # Parse the arguments
63
+ args = parser.parse_args()
64
+ actions = args.actions
65
+ foldername = args.f[0]
66
+ time = args.t[0]
67
+ do_log = args.log
68
+ show = args.show
69
+ nosave = args.nosave
70
+ if len(args.scalars) != 0:
71
+ scalars_plot = args.scalars[0]
72
+ else:
73
+ scalars_plot = args.scalars
74
+
75
+ # Arguments for fitting
76
+ do_fit = args.fit
77
+ fit_minima = args.minfit
78
+ if fit_minima and do_fit:
79
+ do_fit = False
80
+ no_extrema = args.extrema[0]
81
+ order = args.order[0]
82
+ degree = args.degree[0]
83
+ start_extremum = args.startextr[0]
84
+
85
+ libpath = struphy.__path__[0]
86
+ with open(os.path.join(libpath, 'state.yml')) as f:
87
+ state = yaml.load(f, Loader=yaml.FullLoader)
88
+
89
+ o_path = state['o_path']
90
+
91
+ path = os.path.join(o_path, foldername)
92
+
93
+ grid_slices = {
94
+ 'e1': args.e1[0], 'e2': args.e2[0], 'e3': args.e3[0],
95
+ 'v1': args.v1[0], 'v2': args.v2[0], 'v3': args.v3[0]
96
+ }
97
+
98
+ # Get fields
99
+ file = h5py.File(os.path.join(path, 'data/', 'data_proc0.hdf5'), 'r')
100
+ saved_scalars = file['scalar']
101
+ saved_time = file['time']['value'][:]
102
+
103
+ # read in parameters
104
+ with open(path + '/parameters.yml') as file:
105
+ params = yaml.load(file, Loader=yaml.FullLoader)
106
+
107
+ # Get model name
108
+ with open(path + '/meta.txt', 'r') as file:
109
+ for line in file.readlines():
110
+ if line[0:10] == 'model_name':
111
+ model_name = line.split(':')[1].strip()
112
+
113
+ if 'plot_scalars' in actions:
114
+ plot_scalars(
115
+ time=saved_time, scalar_quantities=saved_scalars, scalars_plot=scalars_plot,
116
+ do_log=do_log, do_fit=do_fit, fit_minima=fit_minima, order=order,
117
+ no_extrema=no_extrema, degree=degree, show_plot=show, start_extremum=start_extremum,
118
+ save_plot=not nosave, savedir=path
119
+ )
120
+
121
+ if 'plot_distr' or 'phase_space' in actions:
122
+ for species in params['kinetic'].keys():
123
+ # Get model class
124
+ from struphy.models import fluid, kinetic, hybrid, toy
125
+ objs = [fluid, kinetic, hybrid, toy]
126
+ for obj in objs:
127
+ try:
128
+ model_class = getattr(obj, model_name)
129
+ except AttributeError:
130
+ pass
131
+
132
+ # get particles class name
133
+ species_dict = model_class.species()
134
+ particles_class_name = species_dict['kinetic'][species]
135
+
136
+ # Get default background of particles class
137
+ from struphy.pic import particles
138
+ default_bckgr_type = getattr(
139
+ particles, particles_class_name).default_bckgr_params()['type']
140
+
141
+ # Get default background parameters
142
+ from struphy.kinetic_background import maxwellians
143
+ default_bckgr_params = getattr(
144
+ maxwellians, default_bckgr_type).default_maxw_params()
145
+
146
+ marker_type = params['kinetic'][species]['markers']['type']
147
+ # Set velocity point of evaluation to v_shift of background params if not given by input
148
+ if marker_type == 'full_f':
149
+ for k in range(1, 4):
150
+
151
+ if grid_slices['v' + str(k)] is None:
152
+ key = 'u' + str(k)
153
+ bckgr_type = params['kinetic'][species]['background']['type']
154
+
155
+ if key not in params['kinetic'][species]['background'][bckgr_type].keys():
156
+ bckgr_param = default_bckgr_params[key]
157
+ else:
158
+ bckgr_param = params['kinetic'][species]['background'][bckgr_type][key]
159
+
160
+ if isinstance(bckgr_param, dict):
161
+ grid_slices['v' + str(k)] = \
162
+ bckgr_param['u0' + str(k)]
163
+ else:
164
+ grid_slices['v' + str(k)] = bckgr_param
165
+ elif marker_type in ['delta_f', 'control_variate']:
166
+ for k in range(1, 4):
167
+
168
+ if grid_slices['v' + str(k)] is None:
169
+ key = 'u' + str(k)
170
+ bckgr_type = params['kinetic'][species]['background']['type']
171
+
172
+ if key not in params['kinetic'][species]['background'][bckgr_type].keys():
173
+ bckgr_param = default_bckgr_params[key]
174
+ else:
175
+ bckgr_param = params['kinetic'][species]['background'][bckgr_type][key]
176
+
177
+ if isinstance(bckgr_param, dict):
178
+ grid_slices['v' + str(k)] = \
179
+ bckgr_param['u0' + str(k)]
180
+ else:
181
+ grid_slices['v' + str(k)] = bckgr_param
182
+ else:
183
+ raise NotImplementedError(
184
+ f"Diagnostics for markers of type {marker_type} are not implemented!")
185
+
186
+ if 'plot_distr' in actions:
187
+ # Get index of where to plot in time
188
+ time_idx = np.argmin(np.abs(time - saved_time))
189
+
190
+ plot_distr_fun(
191
+ path=os.path.join(
192
+ path, 'post_processing', 'kinetic_data', species
193
+ ),
194
+ time_idx=time_idx,
195
+ grid_slices=grid_slices,
196
+ save_plot=True, savepath=path,
197
+ )
198
+
199
+ if 'phase_space' in actions:
200
+ for slice_name in os.listdir(os.path.join(
201
+ path, 'post_processing', 'kinetic_data', species, 'distribution_function'
202
+ )):
203
+ phase_space_video(
204
+ t_grid=saved_time, grid_slices=grid_slices,
205
+ slice_name=slice_name,
206
+ marker_type=params['kinetic'][species]['markers']['type'],
207
+ species=species,
208
+ path=path,
209
+ model_name=model_name,
210
+ background_params=params['kinetic'][species]['background']
211
+ )
212
+
213
+ file.close()
214
+
215
+
216
+ if __name__ == '__main__':
217
+ main()