struphy 2.4.1__tar.gz → 2.4.2__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 (331) hide show
  1. {struphy-2.4.1/src/struphy.egg-info → struphy-2.4.2}/PKG-INFO +45 -4
  2. struphy-2.4.2/README.md +55 -0
  3. {struphy-2.4.1 → struphy-2.4.2}/pyproject.toml +3 -3
  4. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/conftest.py +5 -0
  5. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/compile.py +6 -2
  6. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/format.py +18 -34
  7. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/main.py +15 -3
  8. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/params.py +4 -4
  9. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/pproc.py +15 -3
  10. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/test.py +12 -5
  11. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/kernels_2d.py +8 -12
  12. struphy-2.4.2/src/struphy/eigenvalue_solvers/kernels_3d.py +234 -0
  13. struphy-2.4.2/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +1434 -0
  14. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/basis_projection_ops.py +40 -34
  15. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/mass.py +47 -43
  16. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/preconditioner.py +36 -36
  17. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/projectors.py +22 -22
  18. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/psydac_derham.py +376 -44
  19. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_basis_ops.py +13 -12
  20. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_local_projectors.py +17 -17
  21. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/xx_test_preconds.py +37 -34
  22. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/utilities.py +139 -103
  23. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/variational_utilities.py +1 -1
  24. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/utilities.py +33 -3
  25. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/setup.py +5 -1
  26. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/base.py +21 -11
  27. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/maxwellians.py +1 -2
  28. struphy-2.4.2/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +292 -0
  29. struphy-2.4.2/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +276 -0
  30. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/main.py +9 -8
  31. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/fluid.py +4 -1
  32. struphy-2.4.2/src/struphy/models/tests/test_fluid_models.py +28 -0
  33. struphy-2.4.2/src/struphy/models/tests/test_hybrid_models.py +28 -0
  34. struphy-2.4.2/src/struphy/models/tests/test_kinetic_models.py +28 -0
  35. struphy-2.4.2/src/struphy/models/tests/test_toy_models.py +28 -0
  36. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/util.py +145 -8
  37. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/verification.py +1 -1
  38. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/accum_kernels.py +8 -8
  39. struphy-2.4.2/src/struphy/pic/accumulation/accum_kernels_gc.py +850 -0
  40. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/particles_to_grid.py +6 -6
  41. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_kernels.py +25 -27
  42. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_kernels_gc.py +721 -427
  43. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/utilities.py +26 -16
  44. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/utilities_kernels.py +3 -6
  45. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/cprofile_analyser.py +55 -55
  46. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/post_processing_tools.py +6 -12
  47. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/pproc_struphy.py +12 -5
  48. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/propagators_coupling.py +4 -3
  49. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/propagators_markers.py +4 -4
  50. struphy-2.4.2/src/struphy/psydac-2.4.2.dev0-py3-none-any.whl +0 -0
  51. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/clone_config.py +42 -3
  52. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/test_clone_config.py +3 -3
  53. {struphy-2.4.1 → struphy-2.4.2/src/struphy.egg-info}/PKG-INFO +45 -4
  54. {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/SOURCES.txt +1 -1
  55. {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/requires.txt +1 -1
  56. struphy-2.4.1/README.md +0 -15
  57. struphy-2.4.1/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -152
  58. struphy-2.4.1/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +0 -965
  59. struphy-2.4.1/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -296
  60. struphy-2.4.1/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -282
  61. struphy-2.4.1/src/struphy/models/tests/test_fluid_models.py +0 -121
  62. struphy-2.4.1/src/struphy/models/tests/test_hybrid_models.py +0 -108
  63. struphy-2.4.1/src/struphy/models/tests/test_kinetic_models.py +0 -108
  64. struphy-2.4.1/src/struphy/models/tests/test_toy_models.py +0 -110
  65. struphy-2.4.1/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -862
  66. struphy-2.4.1/src/struphy/psydac-2.4.1-py3-none-any.whl +0 -0
  67. {struphy-2.4.1 → struphy-2.4.2}/LICENSE +0 -0
  68. {struphy-2.4.1 → struphy-2.4.2}/setup.cfg +0 -0
  69. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/__init__.py +0 -0
  70. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/__init__.py +0 -0
  71. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/bsplines.py +0 -0
  72. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/bsplines_kernels.py +0 -0
  73. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  74. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  75. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
  76. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  77. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/tests/__init__.py +0 -0
  78. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/tests/test_bsplines_kernels.py +0 -0
  79. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
  80. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/compile_struphy.mk +0 -0
  81. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/__init__.py +0 -0
  82. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/profile.py +0 -0
  83. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/run.py +0 -0
  84. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/tests/test_console.py +0 -0
  85. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/units.py +0 -0
  86. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dependencies.py +0 -0
  87. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/__init__.py +0 -0
  88. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/console_diagn.py +0 -0
  89. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/continuous_spectra.py +0 -0
  90. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/diagn_tools.py +0 -0
  91. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/paraview/__init__.py +0 -0
  92. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
  93. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
  94. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/__init__.py +0 -0
  95. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/analytic.py +0 -0
  96. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/base.py +0 -0
  97. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/utilities.py +0 -0
  98. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
  99. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  100. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
  101. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
  102. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
  103. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
  104. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
  105. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
  106. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
  107. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -0
  108. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_kernels_control_variate.py +0 -0
  109. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -0
  110. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_cv_kernel_2.py +0 -0
  111. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_kernels_control_variate.py +0 -0
  112. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -0
  113. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
  114. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
  115. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
  116. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
  117. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
  118. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
  119. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
  120. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
  121. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
  122. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
  123. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
  124. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
  125. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
  126. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
  127. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
  128. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
  129. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +0 -0
  130. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
  131. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
  132. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
  133. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
  134. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
  135. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
  136. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
  137. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_L2_projector_kernel.py +0 -0
  138. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_L2.py +0 -0
  139. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_local.py +0 -0
  140. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_local_projector_kernel.py +0 -0
  141. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
  142. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
  143. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
  144. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +0 -0
  145. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +0 -0
  146. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
  147. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
  148. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
  149. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
  150. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
  151. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/examples/_draw_parallel.py +0 -0
  152. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/__init__.py +0 -0
  153. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  154. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/basis_projection_kernels.py +0 -0
  155. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/linear_operators.py +0 -0
  156. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/local_projectors_args_kernels.py +0 -0
  157. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/local_projectors_kernels.py +0 -0
  158. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/mass_kernels.py +0 -0
  159. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/__init__.py +0 -0
  160. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_derham.py +0 -0
  161. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_eval_field.py +0 -0
  162. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_field_init.py +0 -0
  163. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_l2_projectors.py +0 -0
  164. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -0
  165. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_mass_matrices.py +0 -0
  166. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
  167. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
  168. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/utilities_kernels.py +0 -0
  169. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/utilities_local_projectors.py +0 -0
  170. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/__init__.py +0 -0
  171. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/base.py +0 -0
  172. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/equils.py +0 -0
  173. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/generic.py +0 -0
  174. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
  175. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
  176. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  177. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
  178. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
  179. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
  180. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  181. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
  182. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  183. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
  184. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  185. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
  186. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
  187. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
  188. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
  189. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/projected_equils.py +0 -0
  190. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/__init__.py +0 -0
  191. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
  192. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_generic_equils.py +0 -0
  193. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_gvec_equil.py +0 -0
  194. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
  195. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
  196. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/__init__.py +0 -0
  197. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/base.py +0 -0
  198. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/domains.py +0 -0
  199. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/evaluation_kernels.py +0 -0
  200. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/map_coef/__init__.py +0 -0
  201. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/mappings_kernels.py +0 -0
  202. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/tests/__init__.py +0 -0
  203. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/tests/test_domain.py +0 -0
  204. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/transform_kernels.py +0 -0
  205. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/utilities.py +0 -0
  206. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/utilities_kernels.py +0 -0
  207. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/__init__.py +0 -0
  208. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/eigenfunctions.py +0 -0
  209. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/perturbations.py +0 -0
  210. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/tests/__init__.py +0 -0
  211. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/tests/test_init_perturbations.py +0 -0
  212. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/__init__.py +0 -0
  213. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/batch_cobra.sh +0 -0
  214. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_016.sh +0 -0
  215. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_032.sh +0 -0
  216. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_064.sh +0 -0
  217. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_128.sh +0 -0
  218. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_256.sh +0 -0
  219. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_512.sh +0 -0
  220. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/__init__.py +0 -0
  221. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -0
  222. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +0 -0
  223. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +0 -0
  224. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +0 -0
  225. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +0 -0
  226. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +0 -0
  227. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +0 -0
  228. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/parameters.yml +0 -0
  229. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_02.yml +0 -0
  230. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_03.yml +0 -0
  231. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_04a.yml +0 -0
  232. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_04b.yml +0 -0
  233. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_04c.yml +0 -0
  234. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05a.yml +0 -0
  235. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05b.yml +0 -0
  236. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05c.yml +0 -0
  237. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05d.yml +0 -0
  238. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05e.yml +0 -0
  239. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05f.yml +0 -0
  240. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_12a.yml +0 -0
  241. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_12b.yml +0 -0
  242. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/IsothermalEulerSPH_soundwave.yml +0 -0
  243. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/LinearVlasovAmpereOneSpecies_weakLandau.yml +0 -0
  244. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/VlasovAmpereOneSpecies_weakLandau.yml +0 -0
  245. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/__init__.py +0 -0
  246. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/out/__init__.py +0 -0
  247. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/output_handling.py +0 -0
  248. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/__init__.py +0 -0
  249. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/moment_functions.py +0 -0
  250. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/tests/__init__.py +0 -0
  251. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/tests/test_base.py +0 -0
  252. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/tests/test_maxwellians.py +0 -0
  253. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/__init__.py +0 -0
  254. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  255. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  256. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/schur_solver.py +0 -0
  257. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  258. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  259. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/tests/__init__.py +0 -0
  260. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/__init__.py +0 -0
  261. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/base.py +0 -0
  262. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/hybrid.py +0 -0
  263. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/kinetic.py +0 -0
  264. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/__init__.py +0 -0
  265. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/test_xxpproc.py +0 -0
  266. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/toy.py +0 -0
  267. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/__init__.py +0 -0
  268. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/__init__.py +0 -0
  269. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  270. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
  271. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
  272. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/base.py +0 -0
  273. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/particles.py +0 -0
  274. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/__init__.py +0 -0
  275. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/eval_kernels_gc.py +0 -0
  276. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher.py +0 -0
  277. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_args_kernels.py +0 -0
  278. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
  279. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sampling_kernels.py +0 -0
  280. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sobol_seq.py +0 -0
  281. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sorting_kernels.py +0 -0
  282. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sph_eval_kernels.py +0 -0
  283. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sph_smoothing_kernels.py +0 -0
  284. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/__init__.py +0 -0
  285. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_accum_vec_H1.py +0 -0
  286. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_accumulation.py +0 -0
  287. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_binning.py +0 -0
  288. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_draw_parallel.py +0 -0
  289. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
  290. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/__init__.py +0 -0
  291. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
  292. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
  293. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
  294. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
  295. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
  296. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
  297. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
  298. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
  299. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
  300. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
  301. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pushers.py +0 -0
  302. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_sorting.py +0 -0
  303. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_sph.py +0 -0
  304. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_tesselation.py +0 -0
  305. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/__init__.py +0 -0
  306. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/basic.py +0 -0
  307. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/extraction_operators.py +0 -0
  308. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/linear_operators.py +0 -0
  309. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/tests/__init__.py +0 -0
  310. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
  311. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/tests/test_polar.py +0 -0
  312. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/__init__.py +0 -0
  313. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/orbits/__init__.py +0 -0
  314. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/orbits/orbits_kernels.py +0 -0
  315. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/orbits/orbits_tools.py +0 -0
  316. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/profile_struphy.py +0 -0
  317. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/tests/__init__.py +0 -0
  318. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/profiling/__init__.py +0 -0
  319. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/profiling/profiling.py +0 -0
  320. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/__init__.py +0 -0
  321. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/base.py +0 -0
  322. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/propagators_fields.py +0 -0
  323. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/tests/__init__.py +0 -0
  324. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +0 -0
  325. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/tests/test_poisson.py +0 -0
  326. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/tutorials/tests/test_tutorials.py +0 -0
  327. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/__init__.py +0 -0
  328. {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/utils.py +0 -0
  329. {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/dependency_links.txt +0 -0
  330. {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/entry_points.txt +0 -0
  331. {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: struphy
3
- Version: 2.4.1
3
+ Version: 2.4.2
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
@@ -32,7 +32,7 @@ Description-Content-Type: text/markdown
32
32
  License-File: LICENSE
33
33
  Requires-Dist: numpy
34
34
  Requires-Dist: pyccel>=1.11.1
35
- Requires-Dist: mpi4py<4
35
+ Requires-Dist: mpi4py
36
36
  Requires-Dist: scipy
37
37
  Requires-Dist: h5py
38
38
  Requires-Dist: matplotlib
@@ -67,12 +67,53 @@ Requires-Dist: myst-parser; extra == "doc"
67
67
  Requires-Dist: mistune; extra == "doc"
68
68
  Requires-Dist: docutils; extra == "doc"
69
69
  Requires-Dist: ipyparallel; extra == "doc"
70
+ Dynamic: license-file
70
71
 
71
72
  # Struphy - Structure-preserving hybrid codes
72
73
 
73
74
  A Python package for plasma physics PDEs.
74
75
 
75
- See the [Struphy documentation](https://struphy.pages.mpcdf.de/struphy/index.html) for details.
76
+ Join the [Struphy mailing list](https://listserv.gwdg.de/mailman/listinfo/struphy) and stay informed on updates.
77
+
78
+ ## Documentation
79
+ See the [Struphy pages](https://struphy.pages.mpcdf.de/struphy/index.html) for details regarding installation, tutorials, use and development.
80
+
81
+ ## Quick install
82
+
83
+ Use a virtual environment:
84
+
85
+ python3 -m pip install -U virtualenv
86
+ python3 -m venv struphy_env
87
+ source struphy_env/bin/activate
88
+
89
+ Install latest release (with test packages):
90
+
91
+ pip install --no-cache-dir -U struphy[test]
92
+
93
+ Compile kernels:
94
+
95
+ struphy compile
96
+
97
+ Quick help:
98
+
99
+ struphy -h
100
+
101
+ In case of problems visit [Trouble shooting](https://struphy.pages.mpcdf.de/struphy/sections/install.html#trouble-shooting).
102
+
103
+ ## Run tests from the command-line
104
+
105
+ Run available verification tests for [Struphy models](https://struphy.pages.mpcdf.de/struphy/sections/models.html):
106
+
107
+ struphy test models --verification --fast --show-plots
108
+
109
+ The corresponding parameter files are in [struphy/io/inp/verification/](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/src/struphy/io/inp/verification).
110
+ The corresponding diagnostics functions are in [struphy/models/tests/verification.py](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/blob/devel/src/struphy/models/tests/verification.py). You can repeat the verification run of a single `<model_name>` by typing
111
+
112
+ struphy test <model_name> --verification --fast --show-plots
113
+
114
+ ## Tutorial notebooks
115
+
116
+ Struphy tutorials are available in the form of [Jupyter notebooks](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/doc/tutorials).
76
117
 
77
118
  ## Reference paper
78
119
 
@@ -0,0 +1,55 @@
1
+ # Struphy - Structure-preserving hybrid codes
2
+
3
+ A Python package for plasma physics PDEs.
4
+
5
+ Join the [Struphy mailing list](https://listserv.gwdg.de/mailman/listinfo/struphy) and stay informed on updates.
6
+
7
+ ## Documentation
8
+ See the [Struphy pages](https://struphy.pages.mpcdf.de/struphy/index.html) for details regarding installation, tutorials, use and development.
9
+
10
+ ## Quick install
11
+
12
+ Use a virtual environment:
13
+
14
+ python3 -m pip install -U virtualenv
15
+ python3 -m venv struphy_env
16
+ source struphy_env/bin/activate
17
+
18
+ Install latest release (with test packages):
19
+
20
+ pip install --no-cache-dir -U struphy[test]
21
+
22
+ Compile kernels:
23
+
24
+ struphy compile
25
+
26
+ Quick help:
27
+
28
+ struphy -h
29
+
30
+ In case of problems visit [Trouble shooting](https://struphy.pages.mpcdf.de/struphy/sections/install.html#trouble-shooting).
31
+
32
+ ## Run tests from the command-line
33
+
34
+ Run available verification tests for [Struphy models](https://struphy.pages.mpcdf.de/struphy/sections/models.html):
35
+
36
+ struphy test models --verification --fast --show-plots
37
+
38
+ The corresponding parameter files are in [struphy/io/inp/verification/](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/src/struphy/io/inp/verification).
39
+ The corresponding diagnostics functions are in [struphy/models/tests/verification.py](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/blob/devel/src/struphy/models/tests/verification.py). You can repeat the verification run of a single `<model_name>` by typing
40
+
41
+ struphy test <model_name> --verification --fast --show-plots
42
+
43
+ ## Tutorial notebooks
44
+
45
+ Struphy tutorials are available in the form of [Jupyter notebooks](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/doc/tutorials).
46
+
47
+ ## Reference paper
48
+
49
+ * S. Possanner, F. Holderied, Y. Li, B.-K. Na, D. Bell, S. Hadjout and Y. Güçlü, [**High-Order Structure-Preserving Algorithms for Plasma Hybrid Models**](https://link.springer.com/chapter/10.1007/978-3-031-38299-4_28), International Conference on Geometric Science of Information 2023, 263-271, Springer Nature Switzerland.
50
+
51
+ ## Contact
52
+
53
+ * Stefan Possanner [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de)
54
+ * Eric Sonnendrücker [eric.sonnendruecker@ipp.mpg.de](mailto:eric.sonnendruecker@ipp.mpg.de)
55
+ * Xin Wang [xin.wang@ipp.mpg.de](mailto:xin.wang@ipp.mpg.de)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "struphy"
7
- version = "2.4.1"
7
+ version = "2.4.2"
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.10"
10
10
  license = {file = "LICENSE"}
@@ -21,7 +21,7 @@ classifiers = [
21
21
  dependencies = [
22
22
  'numpy',
23
23
  'pyccel>=1.11.1',
24
- 'mpi4py<4',
24
+ 'mpi4py',
25
25
  'scipy',
26
26
  'h5py',
27
27
  'matplotlib',
@@ -99,7 +99,7 @@ kinetic-diagnostics = "struphy.diagnostics.console_diagn:main"
99
99
  ]
100
100
 
101
101
  struphy = ['compile_struphy.mk',
102
- 'psydac-2.4.1-py3-none-any.whl',]
102
+ 'psydac-2.4.2.dev0-py3-none-any.whl',]
103
103
 
104
104
  [tool.autopep8]
105
105
  # Add specific settings for autopep8
@@ -4,6 +4,7 @@ def pytest_addoption(parser):
4
4
  parser.addoption("--vrbose", action="store_true")
5
5
  parser.addoption("--verification", action="store_true")
6
6
  parser.addoption("--show-plots", action="store_true")
7
+ parser.addoption("--nclones", type=int, default=1)
7
8
 
8
9
 
9
10
  def pytest_generate_tests(metafunc):
@@ -25,6 +26,10 @@ def pytest_generate_tests(metafunc):
25
26
  if "verification" in metafunc.fixturenames and option_value is not None:
26
27
  metafunc.parametrize("verification", [option_value])
27
28
 
29
+ option_value = metafunc.config.option.nclones
30
+ if "nclones" in metafunc.fixturenames and option_value is not None:
31
+ metafunc.parametrize("nclones", [option_value])
32
+
28
33
  option_value = metafunc.config.option.show_plots
29
34
  if "show_plots" in metafunc.fixturenames and option_value is not None:
30
35
  metafunc.parametrize("show_plots", [option_value])
@@ -40,6 +40,7 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
40
40
 
41
41
  import importlib.metadata
42
42
  import os
43
+ import re
43
44
  import sysconfig
44
45
 
45
46
  import pyccel
@@ -255,14 +256,17 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
255
256
  install_psydac = False
256
257
  if psydac_installed:
257
258
  # only install (from .whl) if psydac not up-to-date
258
- if psydac_ver != struphy_ver:
259
+ if ".".join(psydac_ver.split(".")[:3]) != ".".join(struphy_ver.split(".")[:3]):
259
260
  print(f"You have psydac version {psydac_ver}, but version {struphy_ver} is required.\n")
260
261
  install_psydac = True
261
262
  else:
262
263
  install_psydac = True
263
264
 
264
265
  if install_psydac:
265
- psydac_file = "psydac-" + struphy_ver + "-py3-none-any.whl"
266
+ for filename in os.listdir(libpath):
267
+ if re.match("psydac-", filename):
268
+ psydac_file = filename
269
+
266
270
  cmd = ["pip", "uninstall", "-y", "psydac"]
267
271
  subp_run(cmd)
268
272
  print("\nInstalling Psydac ...")
@@ -99,8 +99,7 @@ PASS_GREEN = f"{GREEN_COLOR}PASS{BLACK_COLOR}"
99
99
 
100
100
 
101
101
  def check_omp_flags(file_path, verbose=False):
102
- """
103
- Checks if a file contains incorrect OpenMP-like flags (`# $`).
102
+ """Checks if a file contains incorrect OpenMP-like flags (`# $`).
104
103
 
105
104
  Parameters:
106
105
  -----------
@@ -124,8 +123,7 @@ def check_omp_flags(file_path, verbose=False):
124
123
 
125
124
 
126
125
  def check_ruff(file_path, verbose=False):
127
- """
128
- Check if a file passes Ruff linting.
126
+ """Check if a file passes Ruff linting.
129
127
 
130
128
  Parameters
131
129
  ----------
@@ -175,8 +173,7 @@ def check_ruff(file_path, verbose=False):
175
173
 
176
174
 
177
175
  def check_isort(file_path, verbose=False):
178
- """
179
- Check if a file is sorted according to isort.
176
+ """Check if a file is sorted according to isort.
180
177
 
181
178
  Parameters
182
179
  ----------
@@ -204,8 +201,7 @@ def check_isort(file_path, verbose=False):
204
201
 
205
202
 
206
203
  def check_autopep8(file_path, verbose=False):
207
- """
208
- Check if a file is formatted according to autopep8.
204
+ """Check if a file is formatted according to autopep8.
209
205
 
210
206
  Parameters
211
207
  ----------
@@ -235,8 +231,7 @@ def check_autopep8(file_path, verbose=False):
235
231
 
236
232
 
237
233
  def check_flake8(file_path, verbose=False):
238
- """
239
- Check if a file is formatted according to flake8.
234
+ """Check if a file is formatted according to flake8.
240
235
 
241
236
  Parameters
242
237
  ----------
@@ -265,8 +260,7 @@ def check_flake8(file_path, verbose=False):
265
260
 
266
261
 
267
262
  def get_pylint_score(file_path, verbose=False, pass_score=8.0):
268
- """
269
- Get pylint score for a file and determine if it passes.
263
+ """Get pylint score for a file and determine if it passes.
270
264
 
271
265
  Parameters
272
266
  ----------
@@ -320,8 +314,7 @@ def get_pylint_score(file_path, verbose=False, pass_score=8.0):
320
314
 
321
315
 
322
316
  def check_trailing_commas(file_path, verbose=False):
323
- """
324
- Check if a file contains trailing commas as required by add-trailing-commas.
317
+ """Check if a file contains trailing commas as required by add-trailing-commas.
325
318
 
326
319
  Parameters
327
320
  ----------
@@ -367,8 +360,7 @@ def check_trailing_commas(file_path, verbose=False):
367
360
 
368
361
 
369
362
  def parse_path(directory):
370
- """
371
- Traverse a directory to find Python files, excluding '__XYZ__.py'.
363
+ """Traverse a directory to find Python files, excluding '__XYZ__.py'.
372
364
 
373
365
  Parameters
374
366
  ----------
@@ -391,8 +383,7 @@ def parse_path(directory):
391
383
 
392
384
 
393
385
  def get_python_files(input_type, path=None):
394
- """
395
- Retrieve Python files based on the specified input type
386
+ """Retrieve Python files based on the specified input type.
396
387
 
397
388
  Parameters
398
389
  ----------
@@ -480,8 +471,7 @@ def get_python_files(input_type, path=None):
480
471
 
481
472
 
482
473
  def struphy_lint(config, verbose):
483
- """
484
- Lint Python files based on the given configuration and specified linters.
474
+ """Lint Python files based on the given configuration and specified linters.
485
475
 
486
476
  Parameters
487
477
  ----------
@@ -614,8 +604,7 @@ def confirm_formatting(python_files, linters, yes):
614
604
 
615
605
 
616
606
  def files_require_formatting(python_files, linters):
617
- """
618
- Check if any of the specified files still require formatting based on the specified linters.
607
+ """Check if any of the specified files still require formatting based on the specified linters.
619
608
 
620
609
  Parameters
621
610
  ----------
@@ -674,8 +663,7 @@ def run_linters_on_files(linters, python_files, flags, verbose):
674
663
 
675
664
 
676
665
  def struphy_format(config, verbose, yes=False):
677
- """
678
- Format Python files with specified linters, optionally iterating multiple times.
666
+ """Format Python files with specified linters, optionally iterating multiple times.
679
667
 
680
668
  Parameters
681
669
  ----------
@@ -755,8 +743,7 @@ def struphy_format(config, verbose, yes=False):
755
743
 
756
744
 
757
745
  def print_stats_plain(stats, linters, ci_linters=["ruff"]):
758
- """
759
- Print statistics for a single file in plain text format.
746
+ """Print statistics for a single file in plain text format.
760
747
 
761
748
  Parameters
762
749
  ----------
@@ -789,8 +776,7 @@ def print_stats_plain(stats, linters, ci_linters=["ruff"]):
789
776
 
790
777
 
791
778
  def print_stats_table(stats_list, linters, print_header=True, pathlen=0, ci_linters=["ruff"]):
792
- """
793
- Print statistics for Python files in a tabular format.
779
+ """Print statistics for Python files in a tabular format.
794
780
 
795
781
  Parameters
796
782
  ----------
@@ -850,8 +836,7 @@ def print_stats_table(stats_list, linters, print_header=True, pathlen=0, ci_lint
850
836
 
851
837
 
852
838
  def analyze_file(file_path, linters=None, verbose=False):
853
- """
854
- Analyze a Python file with list of linters
839
+ """Analyze a Python file with list of linters.
855
840
 
856
841
  Parameters
857
842
  ----------
@@ -936,8 +921,7 @@ def analyze_file(file_path, linters=None, verbose=False):
936
921
 
937
922
 
938
923
  def replace_backticks_with_code_tags(text):
939
- """
940
- Recursively replaces inline backticks with <code> tags.
924
+ """Recursively replaces inline backticks with <code> tags.
941
925
  Handles multiple or nested occurrences.
942
926
 
943
927
  Args:
@@ -971,7 +955,7 @@ def generate_html_table_from_combined_data(combined_data, sort_descending=True):
971
955
 
972
956
 
973
957
  def parse_json_file_to_html(json_file_path, html_output_path):
974
- """
958
+ """Parses a JSON file containing code issues and writes an HTML report.
975
959
  Parses a JSON file containing code issues, groups them by filename,
976
960
  reads the source code to extract context, and writes an HTML report.
977
961
  Each file's section is foldable using <details> and <summary> tags.
@@ -1288,7 +1272,7 @@ document.addEventListener('DOMContentLoaded', (event) => {
1288
1272
  html_content.append("</div>")
1289
1273
  else:
1290
1274
  html_content.append(
1291
- f"<p>Cannot read file <code>{filename}</code> or invalid row " f"<code>{row}</code>.</p>"
1275
+ f"<p>Cannot read file <code>{filename}</code> or invalid row <code>{row}</code>.</p>"
1292
1276
  )
1293
1277
 
1294
1278
  html_content.append("</div>")
@@ -13,9 +13,7 @@ __version__ = importlib.metadata.version("struphy")
13
13
 
14
14
 
15
15
  def struphy():
16
- """
17
- Struphy main executable. Performs argument parsing and sub-command call.
18
- """
16
+ """Struphy main executable. Performs argument parsing and sub-command call."""
19
17
 
20
18
  import argparse
21
19
  import pickle
@@ -622,6 +620,12 @@ def struphy():
622
620
  action="store_true",
623
621
  )
624
622
 
623
+ parser_pproc.add_argument(
624
+ "--no-vtk",
625
+ help="whether vtk files creation should be skipped",
626
+ action="store_true",
627
+ )
628
+
625
629
  # 7. "test" sub-command
626
630
  try:
627
631
  import pytest_mpi
@@ -693,6 +697,14 @@ def struphy():
693
697
  action="store_true",
694
698
  )
695
699
 
700
+ parser_test.add_argument(
701
+ "--nclones",
702
+ type=int,
703
+ metavar="N",
704
+ help="number of domain clones (default=1)",
705
+ default=1,
706
+ )
707
+
696
708
  parser_test.add_argument(
697
709
  "--show-plots",
698
710
  help="show plots of tests",
@@ -1,11 +1,11 @@
1
1
  def struphy_params(model, file, yes=False, options=False):
2
- '''Create a model's default parameter file and save in current input path.
2
+ """Create a model's default parameter file and save in current input path.
3
3
 
4
4
  Parameters
5
5
  ----------
6
6
  model : str
7
7
  The name of the Struphy model.
8
-
8
+
9
9
  yes : bool
10
10
  If true, say yes on prompt to overwrite .yml FILE
11
11
 
@@ -14,9 +14,9 @@ def struphy_params(model, file, yes=False, options=False):
14
14
 
15
15
  show_options : bool
16
16
  Whether to print to screen all possible options for the model.
17
- '''
17
+ """
18
18
 
19
- from struphy.models import fluid, kinetic, hybrid, toy
19
+ from struphy.models import fluid, hybrid, kinetic, toy
20
20
 
21
21
  # load model class
22
22
  objs = [fluid, kinetic, hybrid, toy]
@@ -1,9 +1,17 @@
1
1
  from struphy.console.run import subp_run
2
2
 
3
3
 
4
- def struphy_pproc(dirr, dir_abs=None, step=1, celldivide=1, physical=False, guiding_center=False, classify=False):
5
- """
6
- Post process data from finished Struphy runs.
4
+ def struphy_pproc(
5
+ dirr,
6
+ dir_abs=None,
7
+ step=1,
8
+ celldivide=1,
9
+ physical=False,
10
+ guiding_center=False,
11
+ classify=False,
12
+ no_vtk=False,
13
+ ):
14
+ """Post process data from finished Struphy runs.
7
15
 
8
16
  Parameters
9
17
  ----------
@@ -56,4 +64,8 @@ def struphy_pproc(dirr, dir_abs=None, step=1, celldivide=1, physical=False, guid
56
64
  if classify:
57
65
  command += ["--classify"]
58
66
 
67
+ # Whether vtk files should be created
68
+ if no_vtk:
69
+ command += ["--no-vtk"]
70
+
59
71
  subp_run(command)
@@ -11,6 +11,7 @@ def struphy_test(
11
11
  vrbose: bool = False,
12
12
  verification: bool = False,
13
13
  show_plots: bool = False,
14
+ nclones: int = 1,
14
15
  ):
15
16
  """
16
17
  Run Struphy unit and/or model tests.
@@ -92,6 +93,8 @@ def struphy_test(
92
93
  cmd += ["--vrbose"]
93
94
  if verification:
94
95
  cmd += ["--verification"]
96
+ if nclones > 1:
97
+ cmd += ["--nclones", f"{nclones}"]
95
98
  if show_plots:
96
99
  cmd += ["--show-plots"]
97
100
  subp_run(cmd)
@@ -123,6 +126,8 @@ def struphy_test(
123
126
  cmd += ["--vrbose"]
124
127
  if verification:
125
128
  cmd += ["--verification"]
129
+ if nclones > 1:
130
+ cmd += ["--nclones", f"{nclones}"]
126
131
  if show_plots:
127
132
  cmd += ["--show-plots"]
128
133
  subp_run(cmd)
@@ -146,17 +151,17 @@ def struphy_test(
146
151
  )
147
152
 
148
153
  if group in toy_message:
149
- test_mod = "test_toy_models.py"
154
+ mtype = "toy"
150
155
  elif group in fluid_message:
151
- test_mod = "test_fluid_models.py"
156
+ mtype = "fluid"
152
157
  elif group in kinetic_message:
153
- test_mod = "test_kinetic_models.py"
158
+ mtype = "kinetic"
154
159
  elif group in hybrid_message:
155
- test_mod = "test_hybrid_models.py"
160
+ mtype = "hybrid"
156
161
  else:
157
162
  raise ValueError(f"{group} is not a valid model name.")
158
163
 
159
- py_file = os.path.join(libpath, "models", "tests", test_mod)
164
+ py_file = os.path.join(libpath, "models", "tests", "util.py")
160
165
 
161
166
  cmd = [
162
167
  "mpirun",
@@ -164,11 +169,13 @@ def struphy_test(
164
169
  str(mpi),
165
170
  "python3",
166
171
  py_file,
172
+ mtype,
167
173
  group,
168
174
  str(Tend),
169
175
  str(fast),
170
176
  str(vrbose),
171
177
  str(verification),
178
+ str(nclones),
172
179
  str(show_plots),
173
180
  ]
174
181
  subp_run(cmd)
@@ -3,7 +3,6 @@
3
3
  from pyccel.decorators import pure
4
4
 
5
5
 
6
- @pure
7
6
  def kernel_mass(
8
7
  nel: "int[:]",
9
8
  p: "int[:]",
@@ -23,7 +22,7 @@ def kernel_mass(
23
22
  ):
24
23
  mat[:, :, :, :] = 0.0
25
24
 
26
- #$ omp parallel private(ie1, ie2, il1, il2, jl1, jl2, value, q1, q2, wvol, bi, bj) shared(mat)
25
+ #$ omp parallel private(ie1, ie2, il1, il2, jl1, jl2, value1, q1, q2, wvol, bi, bj) shared(mat)
27
26
  #$ omp for reduction ( + : mat)
28
27
  for ie1 in range(nel[0]):
29
28
  for ie2 in range(nel[1]):
@@ -31,7 +30,7 @@ def kernel_mass(
31
30
  for il2 in range(p[1] + 1 - ni[1]):
32
31
  for jl1 in range(p[0] + 1 - nj[0]):
33
32
  for jl2 in range(p[1] + 1 - nj[1]):
34
- value = 0.0
33
+ value1 = 0.0
35
34
 
36
35
  for q1 in range(nq[0]):
37
36
  for q2 in range(nq[1]):
@@ -39,15 +38,14 @@ def kernel_mass(
39
38
  bi = bi1[ie1, il1, 0, q1] * bi2[ie2, il2, 0, q2]
40
39
  bj = bj1[ie1, jl1, 0, q1] * bj2[ie2, jl2, 0, q2]
41
40
 
42
- value += wvol * bi * bj
41
+ value1 += wvol * bi * bj
43
42
 
44
- mat[ind_base1[ie1, il1], ind_base2[ie2, il2], p[0] + jl1 - il1, p[1] + jl2 - il2] += value
43
+ mat[ind_base1[ie1, il1], ind_base2[ie2, il2], p[0] + jl1 - il1, p[1] + jl2 - il2] += value1
45
44
  #$ omp end parallel
46
45
 
47
46
  ierr = 0
48
47
 
49
48
 
50
- @pure
51
49
  def kernel_inner(
52
50
  nel: "int[:]",
53
51
  n3: "int",
@@ -65,29 +63,28 @@ def kernel_inner(
65
63
  ):
66
64
  mat[:, :, :] = 0.0
67
65
 
68
- #$ omp parallel private(ie1, ie2, ie3, il1, il2, value, q1, q2, wvol, bi) shared(mat)
66
+ #$ omp parallel private(ie1, ie2, ie3, il1, il2, value1, q1, q2, wvol, bi) shared(mat)
69
67
  #$ omp for reduction ( + : mat)
70
68
  for ie1 in range(nel[0]):
71
69
  for ie2 in range(nel[1]):
72
70
  for ie3 in range(n3):
73
71
  for il1 in range(p[0] + 1 - ni[0]):
74
72
  for il2 in range(p[1] + 1 - ni[1]):
75
- value = 0.0
73
+ value1 = 0.0
76
74
 
77
75
  for q1 in range(nq[0]):
78
76
  for q2 in range(nq[1]):
79
77
  wvol = w1[ie1, q1] * w2[ie2, q2] * mat_fun[ie1, q1, ie2, q2, ie3]
80
78
  bi = bi1[ie1, il1, 0, q1] * bi2[ie2, il2, 0, q2]
81
79
 
82
- value += wvol * bi
80
+ value1 += wvol * bi
83
81
 
84
- mat[ind_base1[ie1, il1], ind_base2[ie2, il2], ie3] += value
82
+ mat[ind_base1[ie1, il1], ind_base2[ie2, il2], ie3] += value1
85
83
  #$ omp end parallel
86
84
 
87
85
  ierr = 0
88
86
 
89
87
 
90
- @pure
91
88
  def kernel_l2error(
92
89
  nel: "int[:]",
93
90
  p: "int[:]",
@@ -147,7 +144,6 @@ def kernel_l2error(
147
144
  ierr = 0
148
145
 
149
146
 
150
- @pure
151
147
  def kernel_evaluate_2form(
152
148
  nel: "int[:]",
153
149
  n3: "int",