struphy 3.4.0__tar.gz → 3.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1002) hide show
  1. struphy-3.5.0/PKG-INFO +298 -0
  2. struphy-3.5.0/README.md +187 -0
  3. struphy-3.5.0/pyproject.toml +189 -0
  4. struphy-3.5.0/setup.cfg +10 -0
  5. struphy-3.5.0/src/struphy/__init__.py +247 -0
  6. struphy-3.5.0/src/struphy/agent_guides/USAGE.md +72 -0
  7. struphy-3.5.0/src/struphy/agent_guides/skills/postprocess-simulation/SKILL.md +101 -0
  8. struphy-3.5.0/src/struphy/agent_guides/skills/setup-simulation/SKILL.md +159 -0
  9. struphy-3.5.0/src/struphy/api/linear_algebra/__init__.py +3 -0
  10. struphy-3.5.0/src/struphy/api/models/__init__.py +97 -0
  11. struphy-3.5.0/src/struphy/api/tests/test_public_api.py +59 -0
  12. struphy-3.5.0/src/struphy/bsplines/bsplines_kernels.cuh +171 -0
  13. struphy-3.5.0/src/struphy/bsplines/evaluation_kernels_2d.cuh +29 -0
  14. struphy-3.5.0/src/struphy/bsplines/evaluation_kernels_3d.cuh +218 -0
  15. struphy-3.5.0/src/struphy/bsplines/evaluation_kernels_3d.py +1600 -0
  16. struphy-3.5.0/src/struphy/bsplines/kernels/__init__.py +9 -0
  17. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/__init__.py +10 -0
  18. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/eval_spline_mpi_markers_cuda.cu +33 -0
  19. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/eval_spline_mpi_markers_kernels.py +48 -0
  20. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/__init__.py +10 -0
  21. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/eval_spline_mpi_matrix_cuda.cu +37 -0
  22. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/eval_spline_mpi_matrix_kernels.py +56 -0
  23. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/__init__.py +10 -0
  24. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/eval_spline_mpi_sparse_meshgrid_cuda.cu +37 -0
  25. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/eval_spline_mpi_sparse_meshgrid_kernels.py +58 -0
  26. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/__init__.py +12 -0
  27. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/eval_spline_mpi_tensor_product_fixed_cuda.cu +56 -0
  28. struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/eval_spline_mpi_tensor_product_fixed_kernels.py +82 -0
  29. struphy-3.5.0/src/struphy/bsplines/tests/test_bsplines_kers.py +210 -0
  30. struphy-3.5.0/src/struphy/bsplines/tests/test_eval_spline_mpi.py +804 -0
  31. struphy-3.5.0/src/struphy/bsplines/tests/test_evaluation_cuda.py +123 -0
  32. struphy-3.5.0/src/struphy/console/agents.py +111 -0
  33. struphy-3.5.0/src/struphy/console/build_init_files.py +169 -0
  34. struphy-3.5.0/src/struphy/console/compile.py +378 -0
  35. struphy-3.5.0/src/struphy/console/main.py +678 -0
  36. struphy-3.5.0/src/struphy/console/test.py +178 -0
  37. struphy-3.5.0/src/struphy/console/tests/test_agents.py +89 -0
  38. struphy-3.5.0/src/struphy/console/tests/test_compile.py +290 -0
  39. struphy-3.5.0/src/struphy/dependencies.py +138 -0
  40. struphy-3.5.0/src/struphy/examples/_draw_parallel.py +100 -0
  41. struphy-3.5.0/src/struphy/feec/basis_projection_ops.py +2435 -0
  42. struphy-3.5.0/src/struphy/feec/boundary_mass.py +587 -0
  43. struphy-3.5.0/src/struphy/feec/kernels/__init__.py +17 -0
  44. struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_1d/__init__.py +16 -0
  45. struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_1d/assemble_dofs_for_weighted_basisfuns_1d_kernels.py +128 -0
  46. struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_2d/__init__.py +16 -0
  47. struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_2d/assemble_dofs_for_weighted_basisfuns_2d_kernels.py +186 -0
  48. struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_3d/__init__.py +16 -0
  49. struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_3d/assemble_dofs_for_weighted_basisfuns_3d_kernels.py +259 -0
  50. struphy-3.5.0/src/struphy/feec/kernels/hybrid_weight/__init__.py +10 -0
  51. struphy-3.5.0/src/struphy/feec/kernels/hybrid_weight/hybrid_weight_kernels.py +101 -0
  52. struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_eval/__init__.py +16 -0
  53. struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_eval/kernel_1d_eval_kernels.py +55 -0
  54. struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_mat/__init__.py +16 -0
  55. struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_mat/kernel_1d_mat_kernels.py +68 -0
  56. struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_vec/__init__.py +16 -0
  57. struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_vec/kernel_1d_vec_kernels.py +59 -0
  58. struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_eval/__init__.py +16 -0
  59. struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_eval/kernel_2d_eval_kernels.py +72 -0
  60. struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_mat/__init__.py +16 -0
  61. struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_mat/kernel_2d_mat_kernels.py +88 -0
  62. struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_vec/__init__.py +16 -0
  63. struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_vec/kernel_2d_vec_kernels.py +76 -0
  64. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_diag/__init__.py +16 -0
  65. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_diag/kernel_3d_diag_kernels.py +118 -0
  66. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_eval/__init__.py +16 -0
  67. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_eval/kernel_3d_eval_kernels.py +85 -0
  68. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_mat/__init__.py +16 -0
  69. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_mat/kernel_3d_mat_kernels.py +147 -0
  70. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_matrixfree/__init__.py +16 -0
  71. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_matrixfree/kernel_3d_matrixfree_kernels.py +173 -0
  72. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_vec/__init__.py +16 -0
  73. struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_vec/kernel_3d_vec_kernels.py +96 -0
  74. struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_mat/__init__.py +16 -0
  75. struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_mat/surface_kernel_3d_mat_kernels.py +170 -0
  76. struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_vec/__init__.py +16 -0
  77. struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_vec/surface_kernel_3d_vec_kernels.py +91 -0
  78. struphy-3.5.0/src/struphy/feec/kronecker_block.py +397 -0
  79. struphy-3.5.0/src/struphy/feec/linear_operators.py +210 -0
  80. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/__init__.py +9 -0
  81. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component/__init__.py +12 -0
  82. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component/get_dofs_local_1_form_ec_component_kernels.py +62 -0
  83. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component_weighted/__init__.py +12 -0
  84. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component_weighted/get_dofs_local_1_form_ec_component_weighted_kernels.py +97 -0
  85. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component/__init__.py +12 -0
  86. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component/get_dofs_local_2_form_ec_component_kernels.py +70 -0
  87. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component_weighted/__init__.py +12 -0
  88. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component_weighted/get_dofs_local_2_form_ec_component_weighted_kernels.py +113 -0
  89. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form/__init__.py +10 -0
  90. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form/get_dofs_local_3_form_kernels.py +46 -0
  91. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form_weighted/__init__.py +10 -0
  92. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form_weighted/get_dofs_local_3_form_weighted_kernels.py +76 -0
  93. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop/__init__.py +10 -0
  94. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop/solve_local_main_loop_kernels.py +90 -0
  95. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop_weighted/__init__.py +10 -0
  96. struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop_weighted/solve_local_main_loop_weighted_kernels.py +173 -0
  97. struphy-3.5.0/src/struphy/feec/local_projectors_kernels.py +538 -0
  98. struphy-3.5.0/src/struphy/feec/mass.py +3938 -0
  99. struphy-3.5.0/src/struphy/feec/memory.py +71 -0
  100. struphy-3.5.0/src/struphy/feec/preconditioner.py +2871 -0
  101. struphy-3.5.0/src/struphy/feec/projectors.py +2239 -0
  102. struphy-3.5.0/src/struphy/feec/psydac_derham.py +4160 -0
  103. struphy-3.5.0/src/struphy/feec/tests/test_basis_ops.py +654 -0
  104. struphy-3.5.0/src/struphy/feec/tests/test_boundary_integrals.py +371 -0
  105. struphy-3.5.0/src/struphy/feec/tests/test_derham.py +160 -0
  106. struphy-3.5.0/src/struphy/feec/tests/test_derham_gpu.py +69 -0
  107. struphy-3.5.0/src/struphy/feec/tests/test_eval_field.py +596 -0
  108. struphy-3.5.0/src/struphy/feec/tests/test_field_init.py +1463 -0
  109. struphy-3.5.0/src/struphy/feec/tests/test_hiptmair_xu.py +114 -0
  110. struphy-3.5.0/src/struphy/feec/tests/test_kronecker_block.py +157 -0
  111. struphy-3.5.0/src/struphy/feec/tests/test_l2_projectors.py +408 -0
  112. struphy-3.5.0/src/struphy/feec/tests/test_local_projectors.py +1618 -0
  113. struphy-3.5.0/src/struphy/feec/tests/test_lowdim_nel_is_1.py +322 -0
  114. struphy-3.5.0/src/struphy/feec/tests/test_mass_matrices.py +1817 -0
  115. struphy-3.5.0/src/struphy/feec/tests/test_mass_reassembly.py +73 -0
  116. struphy-3.5.0/src/struphy/feec/tests/test_preconditioner_cupy.py +150 -0
  117. struphy-3.5.0/src/struphy/feec/tests/test_preconditioner_transpose.py +125 -0
  118. struphy-3.5.0/src/struphy/feec/tests/test_stiffness_preconditioner.py +432 -0
  119. struphy-3.5.0/src/struphy/feec/tests/test_toarray_struphy.py +139 -0
  120. struphy-3.5.0/src/struphy/feec/tests/test_tosparse_struphy.py +240 -0
  121. struphy-3.5.0/src/struphy/feec/tests/test_utilities_kernels.py +41 -0
  122. struphy-3.5.0/src/struphy/feec/tests/test_variational_utilities.py +52 -0
  123. struphy-3.5.0/src/struphy/feec/tests/test_weighted_average_projection.py +95 -0
  124. struphy-3.5.0/src/struphy/feec/tests/xx_test_preconds.py +116 -0
  125. struphy-3.5.0/src/struphy/feec/utilities.py +596 -0
  126. struphy-3.5.0/src/struphy/feec/utilities_kernels.py +123 -0
  127. struphy-3.5.0/src/struphy/feec/variational_utilities.py +1551 -0
  128. struphy-3.5.0/src/struphy/fields_background/equils.py +3441 -0
  129. struphy-3.5.0/src/struphy/fields_background/tests/test_equils_cupy.py +283 -0
  130. struphy-3.5.0/src/struphy/fields_background/tests/test_gvec_equil.py +53 -0
  131. struphy-3.5.0/src/struphy/fields_background/tests/test_mhd_equils.py +1052 -0
  132. struphy-3.5.0/src/struphy/geometry/base.py +2660 -0
  133. struphy-3.5.0/src/struphy/geometry/domains/colella/colella_cuda.cuh +49 -0
  134. struphy-3.5.0/src/struphy/geometry/domains/constants_cuda.cuh +5 -0
  135. struphy-3.5.0/src/struphy/geometry/domains/cuboid/cuboid_cuda.cuh +48 -0
  136. struphy-3.5.0/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder_cuda.cuh +51 -0
  137. struphy-3.5.0/src/struphy/geometry/domains/hollow_torus/hollow_torus_cuda.cuh +101 -0
  138. struphy-3.5.0/src/struphy/geometry/domains/orthogonal/orthogonal_cuda.cuh +48 -0
  139. struphy-3.5.0/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder_cuda.cuh +50 -0
  140. struphy-3.5.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder_cuda.cuh +62 -0
  141. struphy-3.5.0/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder_cuda.cuh +49 -0
  142. struphy-3.5.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder_cuda.cuh +49 -0
  143. struphy-3.5.0/src/struphy/geometry/domains/tokamak/tokamak.py +132 -0
  144. struphy-3.5.0/src/struphy/geometry/evaluation_kernels.cuh +530 -0
  145. struphy-3.5.0/src/struphy/geometry/evaluation_kernels.py +830 -0
  146. struphy-3.5.0/src/struphy/geometry/kernels/__init__.py +9 -0
  147. struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate/__init__.py +10 -0
  148. struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate/kernel_evaluate_cuda.cu +55 -0
  149. struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate/kernel_evaluate_kernels.py +68 -0
  150. struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate_pic/__init__.py +10 -0
  151. struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate_pic/kernel_evaluate_pic_cuda.cu +81 -0
  152. struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate_pic/kernel_evaluate_pic_kernels.py +79 -0
  153. struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush/__init__.py +10 -0
  154. struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush/kernel_pullpush_cuda.cu +62 -0
  155. struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush/kernel_pullpush_kernels.py +81 -0
  156. struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush_pic/__init__.py +10 -0
  157. struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush_pic/kernel_pullpush_pic_cuda.cu +96 -0
  158. struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush_pic/kernel_pullpush_pic_kernels.py +98 -0
  159. struphy-3.5.0/src/struphy/geometry/spline_mappings_kernels.cuh +334 -0
  160. struphy-3.5.0/src/struphy/geometry/tests/spline_mapping_cases.py +172 -0
  161. struphy-3.5.0/src/struphy/geometry/tests/test_domain.py +1268 -0
  162. struphy-3.5.0/src/struphy/geometry/transform_kernels.cuh +219 -0
  163. struphy-3.5.0/src/struphy/geometry/transform_kernels.py +328 -0
  164. struphy-3.5.0/src/struphy/geometry/utilities.py +511 -0
  165. struphy-3.5.0/src/struphy/initial/perturbations.py +2531 -0
  166. struphy-3.5.0/src/struphy/initial/tests/test_init_perturbations.py +396 -0
  167. struphy-3.5.0/src/struphy/io/options.py +409 -0
  168. struphy-3.5.0/src/struphy/io/output_handling.py +171 -0
  169. struphy-3.5.0/src/struphy/io/setup.py +175 -0
  170. struphy-3.5.0/src/struphy/kernel_arguments/array_view.cuh +58 -0
  171. struphy-3.5.0/src/struphy/kernel_arguments/local_projectors_args.cuh +32 -0
  172. struphy-3.5.0/src/struphy/kernel_arguments/local_projectors_args_cuda.py +91 -0
  173. struphy-3.5.0/src/struphy/kernel_arguments/pusher_args.cuh +50 -0
  174. struphy-3.5.0/src/struphy/kernel_arguments/pusher_args_cuda.py +149 -0
  175. struphy-3.5.0/src/struphy/kernel_arguments/pusher_args_kernels.py +177 -0
  176. struphy-3.5.0/src/struphy/kernel_arguments/spline_args.cuh +16 -0
  177. struphy-3.5.0/src/struphy/kernel_arguments/spline_args_cuda.py +39 -0
  178. struphy-3.5.0/src/struphy/kernel_arguments/spline_args_kernels.py +48 -0
  179. struphy-3.5.0/src/struphy/kinetic_background/base.py +1026 -0
  180. struphy-3.5.0/src/struphy/kinetic_background/maxwellians.py +857 -0
  181. struphy-3.5.0/src/struphy/kinetic_background/tests/test_base.py +166 -0
  182. struphy-3.5.0/src/struphy/kinetic_background/tests/test_maxwellians.py +1798 -0
  183. struphy-3.5.0/src/struphy/linear_algebra/linalg_kernels.cuh +114 -0
  184. struphy-3.5.0/src/struphy/linear_algebra/multigrid/coarsen.py +181 -0
  185. struphy-3.5.0/src/struphy/linear_algebra/multigrid/hierarchy.py +106 -0
  186. struphy-3.5.0/src/struphy/linear_algebra/multigrid/preconditioner.py +445 -0
  187. struphy-3.5.0/src/struphy/linear_algebra/multigrid/smoothers.py +534 -0
  188. struphy-3.5.0/src/struphy/linear_algebra/multigrid/transfer.py +257 -0
  189. struphy-3.5.0/src/struphy/linear_algebra/schur_solver.py +414 -0
  190. struphy-3.5.0/src/struphy/linear_algebra/tests/test_multigrid_coarsen.py +184 -0
  191. struphy-3.5.0/src/struphy/linear_algebra/tests/test_multigrid_solver.py +281 -0
  192. struphy-3.5.0/src/struphy/linear_algebra/tests/test_multigrid_transfer.py +113 -0
  193. struphy-3.5.0/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +446 -0
  194. struphy-3.5.0/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +457 -0
  195. struphy-3.5.0/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +300 -0
  196. struphy-3.5.0/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +284 -0
  197. struphy-3.5.0/src/struphy/models/__init__.py +156 -0
  198. struphy-3.5.0/src/struphy/models/base.py +1226 -0
  199. struphy-3.5.0/src/struphy/models/cold_plasma_vlasov.py +378 -0
  200. struphy-3.5.0/src/struphy/models/curl_curl.py +182 -0
  201. struphy-3.5.0/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +345 -0
  202. struphy-3.5.0/src/struphy/models/guiding_center.py +213 -0
  203. struphy-3.5.0/src/struphy/models/gyrokinetic_poisson.py +200 -0
  204. struphy-3.5.0/src/struphy/models/incompressible_navier_stokes_sph.py +275 -0
  205. struphy-3.5.0/src/struphy/models/linear_mhd_driftkinetic_cc.py +379 -0
  206. struphy-3.5.0/src/struphy/models/linear_vlasov_ampere_one_species.py +375 -0
  207. struphy-3.5.0/src/struphy/models/linear_vlasov_maxwell_one_species.py +298 -0
  208. struphy-3.5.0/src/struphy/models/poisson.py +193 -0
  209. struphy-3.5.0/src/struphy/models/scalars.py +418 -0
  210. struphy-3.5.0/src/struphy/models/shear_alfven_curl_curl.py +208 -0
  211. struphy-3.5.0/src/struphy/models/shear_alfven_curl_curl_with_proj.py +79 -0
  212. struphy-3.5.0/src/struphy/models/species.py +461 -0
  213. struphy-3.5.0/src/struphy/models/tests/gpu_e2e.py +255 -0
  214. struphy-3.5.0/src/struphy/models/tests/test_diagnostics_on_device.py +346 -0
  215. struphy-3.5.0/src/struphy/models/tests/test_examples.py +75 -0
  216. struphy-3.5.0/src/struphy/models/tests/test_gpu_LinearVlasovAmpereOneSpecies.py +194 -0
  217. struphy-3.5.0/src/struphy/models/tests/test_gpu_VlasovAmpereOneSpecies.py +217 -0
  218. struphy-3.5.0/src/struphy/models/tests/test_scalars.py +219 -0
  219. struphy-3.5.0/src/struphy/models/tests/utils_testing.py +161 -0
  220. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_CurlCurl.py +107 -0
  221. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_IncompressibleNavierStokesSPH.py +483 -0
  222. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_LinearMHD.py +151 -0
  223. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_LinearVlasovAmpereOneSpecies.py +271 -0
  224. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_Maxwell.py +281 -0
  225. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_Poisson.py +130 -0
  226. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +1039 -0
  227. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +380 -0
  228. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovMaxwellOneSpecies.py +120 -0
  229. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovPoissonAdiabatic.py +214 -0
  230. struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovPoissonAdiabaticPauli.py +248 -0
  231. struphy-3.5.0/src/struphy/models/toy_drift.py +277 -0
  232. struphy-3.5.0/src/struphy/models/variables.py +1034 -0
  233. struphy-3.5.0/src/struphy/models/vlasov_ampere_one_species.py +340 -0
  234. struphy-3.5.0/src/struphy/models/vlasov_maxwell_one_species.py +397 -0
  235. struphy-3.5.0/src/struphy/models/vlasov_poisson_adiabatic.py +352 -0
  236. struphy-3.5.0/src/struphy/models/vlasov_poisson_adiabatic_pauli.py +424 -0
  237. struphy-3.5.0/src/struphy/ode/tests/test_ode_feec.py +192 -0
  238. struphy-3.5.0/src/struphy/physics/physics.py +152 -0
  239. struphy-3.5.0/src/struphy/pic/accumulation/filler_kernels.cuh +164 -0
  240. struphy-3.5.0/src/struphy/pic/accumulation/kernels/__init__.py +8 -0
  241. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D/__init__.py +10 -0
  242. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D/cc_lin_mhd_5d_D_kernels.py +218 -0
  243. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_M/__init__.py +10 -0
  244. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_M/cc_lin_mhd_5d_M_kernels.py +123 -0
  245. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb/__init__.py +10 -0
  246. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb/cc_lin_mhd_5d_curlb_kernels.py +220 -0
  247. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB/__init__.py +10 -0
  248. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB/cc_lin_mhd_5d_gradB_kernels.py +218 -0
  249. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg/__init__.py +10 -0
  250. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg/cc_lin_mhd_5d_gradB_dg_kernels.py +249 -0
  251. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg_init/__init__.py +10 -0
  252. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg_init/cc_lin_mhd_5d_gradB_dg_init_kernels.py +241 -0
  253. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1/__init__.py +10 -0
  254. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1/cc_lin_mhd_6d_1_kernels.py +197 -0
  255. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2/__init__.py +10 -0
  256. struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2/cc_lin_mhd_6d_2_kernels.py +295 -0
  257. struphy-3.5.0/src/struphy/pic/accumulation/kernels/charge_density_0form/__init__.py +10 -0
  258. struphy-3.5.0/src/struphy/pic/accumulation/kernels/charge_density_0form/charge_density_0form_cuda.cu +37 -0
  259. struphy-3.5.0/src/struphy/pic/accumulation/kernels/charge_density_0form/charge_density_0form_kernels.py +63 -0
  260. struphy-3.5.0/src/struphy/pic/accumulation/kernels/div_u_weak_1form/__init__.py +10 -0
  261. struphy-3.5.0/src/struphy/pic/accumulation/kernels/div_u_weak_1form/div_u_weak_1form_kernels.py +82 -0
  262. struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_density_0form/__init__.py +10 -0
  263. struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_density_0form/gc_density_0form_kernels.py +61 -0
  264. struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_mag_density_0form/__init__.py +10 -0
  265. struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_mag_density_0form/gc_mag_density_0form_kernels.py +59 -0
  266. struphy-3.5.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/__init__.py +10 -0
  267. struphy-3.5.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/linear_vlasov_ampere_cuda.cu +93 -0
  268. struphy-3.5.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/linear_vlasov_ampere_kernels.py +141 -0
  269. struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d/__init__.py +12 -0
  270. struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d/pc_lin_mhd_6d_kernels.py +182 -0
  271. struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_full/__init__.py +10 -0
  272. struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_full/pc_lin_mhd_6d_full_kernels.py +205 -0
  273. struphy-3.5.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/__init__.py +10 -0
  274. struphy-3.5.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/vlasov_maxwell_cuda.cu +81 -0
  275. struphy-3.5.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/vlasov_maxwell_kernels.py +133 -0
  276. struphy-3.5.0/src/struphy/pic/accumulation/particle_to_mat_kernels.cuh +106 -0
  277. struphy-3.5.0/src/struphy/pic/accumulation/particles_to_grid.py +768 -0
  278. struphy-3.5.0/src/struphy/pic/base.py +5280 -0
  279. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/__init__.py +9 -0
  280. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/canonical_kinetic_particles/__init__.py +10 -0
  281. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/canonical_kinetic_particles/canonical_kinetic_particles_kernels.py +100 -0
  282. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_5d/__init__.py +12 -0
  283. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_5d/eval_canonical_toroidal_moment_5d_kernels.py +57 -0
  284. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_6d/__init__.py +12 -0
  285. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_6d/eval_canonical_toroidal_moment_6d_kernels.py +55 -0
  286. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_energy_5d/__init__.py +10 -0
  287. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_energy_5d/eval_energy_5d_kernels.py +48 -0
  288. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_gradB_ediff/__init__.py +10 -0
  289. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_gradB_ediff/eval_gradB_ediff_kernels.py +107 -0
  290. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_guiding_center_from_6d/__init__.py +10 -0
  291. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_guiding_center_from_6d/eval_guiding_center_from_6d_kernels.py +120 -0
  292. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_background_energy/__init__.py +10 -0
  293. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_background_energy/eval_magnetic_background_energy_kernels.py +65 -0
  294. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_energy_PBb/__init__.py +10 -0
  295. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_energy_PBb/eval_magnetic_energy_PBb_kernels.py +75 -0
  296. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_moment_5d/__init__.py +10 -0
  297. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_moment_5d/eval_magnetic_moment_5d_kernels.py +47 -0
  298. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/thermal_energy/__init__.py +10 -0
  299. struphy-3.5.0/src/struphy/pic/diagnostics/kernels/thermal_energy/thermal_energy_kernels.py +112 -0
  300. struphy-3.5.0/src/struphy/pic/kernels/__init__.py +10 -0
  301. struphy-3.5.0/src/struphy/pic/kernels/box_and_sort_particles/__init__.py +16 -0
  302. struphy-3.5.0/src/struphy/pic/kernels/box_and_sort_particles/box_and_sort_particles_kernels.py +43 -0
  303. struphy-3.5.0/src/struphy/pic/kernels/box_particles/__init__.py +16 -0
  304. struphy-3.5.0/src/struphy/pic/kernels/box_particles/box_particles_kernels.py +29 -0
  305. struphy-3.5.0/src/struphy/pic/kernels/fill_boxes/__init__.py +16 -0
  306. struphy-3.5.0/src/struphy/pic/kernels/fill_boxes/fill_boxes_kernels.py +24 -0
  307. struphy-3.5.0/src/struphy/pic/kernels/sort_and_fill_boxes/__init__.py +16 -0
  308. struphy-3.5.0/src/struphy/pic/kernels/sort_and_fill_boxes/sort_and_fill_boxes_kernels.py +34 -0
  309. struphy-3.5.0/src/struphy/pic/marker_layout.py +35 -0
  310. struphy-3.5.0/src/struphy/pic/particles.py +1158 -0
  311. struphy-3.5.0/src/struphy/pic/pushing/kernel_setup.py +94 -0
  312. struphy-3.5.0/src/struphy/pic/pushing/kernels/__init__.py +8 -0
  313. struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_2form/__init__.py +10 -0
  314. struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_2form/bstar_2form_kernels.py +103 -0
  315. struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/__init__.py +10 -0
  316. struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/bstar_parallel_3form_cuda.cu +78 -0
  317. struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/bstar_parallel_3form_kernels.py +102 -0
  318. struphy-3.5.0/src/struphy/pic/pushing/kernels/driftkinetic_hamiltonian/__init__.py +10 -0
  319. struphy-3.5.0/src/struphy/pic/pushing/kernels/driftkinetic_hamiltonian/driftkinetic_hamiltonian_kernels.py +91 -0
  320. struphy-3.5.0/src/struphy/pic/pushing/kernels/grad_driftkinetic_hamiltonian/__init__.py +10 -0
  321. struphy-3.5.0/src/struphy/pic/pushing/kernels/grad_driftkinetic_hamiltonian/grad_driftkinetic_hamiltonian_kernels.py +111 -0
  322. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_H1vec/__init__.py +10 -0
  323. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_H1vec/push_bxu_H1vec_kernels.py +139 -0
  324. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hcurl/__init__.py +10 -0
  325. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hcurl/push_bxu_Hcurl_kernels.py +143 -0
  326. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv/__init__.py +10 -0
  327. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv/push_bxu_Hdiv_kernels.py +139 -0
  328. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv_pauli/__init__.py +10 -0
  329. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv_pauli/push_bxu_Hdiv_pauli_kernels.py +229 -0
  330. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_deterministic_diffusion_stage/__init__.py +12 -0
  331. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_deterministic_diffusion_stage/push_deterministic_diffusion_stage_kernels.py +140 -0
  332. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_eta_stage/__init__.py +10 -0
  333. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_eta_stage/push_eta_stage_cuda.cu +62 -0
  334. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_eta_stage/push_eta_stage_kernels.py +90 -0
  335. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order/__init__.py +12 -0
  336. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order/push_gc_Bstar_discrete_gradient_1st_order_kernels.py +193 -0
  337. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order_newton/__init__.py +12 -0
  338. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order_newton/push_gc_Bstar_discrete_gradient_1st_order_newton_kernels.py +340 -0
  339. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_2nd_order/__init__.py +12 -0
  340. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_2nd_order/push_gc_Bstar_discrete_gradient_2nd_order_kernels.py +273 -0
  341. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_explicit_multistage/__init__.py +12 -0
  342. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_explicit_multistage/push_gc_Bstar_explicit_multistage_kernels.py +214 -0
  343. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_dg_1st_order_newton/__init__.py +12 -0
  344. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_dg_1st_order_newton/push_gc_bxEstar_dg_1st_order_newton_kernels.py +291 -0
  345. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_1st_order/__init__.py +12 -0
  346. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_1st_order/push_gc_bxEstar_discrete_gradient_1st_order_kernels.py +167 -0
  347. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_2nd_order/__init__.py +12 -0
  348. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_2nd_order/push_gc_bxEstar_discrete_gradient_2nd_order_kernels.py +223 -0
  349. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_explicit_multistage/__init__.py +12 -0
  350. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_explicit_multistage/push_gc_bxEstar_explicit_multistage_kernels.py +172 -0
  351. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_H1vec/__init__.py +10 -0
  352. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_H1vec/push_gc_cc_J1_H1vec_kernels.py +150 -0
  353. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hcurl/__init__.py +10 -0
  354. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hcurl/push_gc_cc_J1_Hcurl_kernels.py +157 -0
  355. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hdiv/__init__.py +10 -0
  356. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hdiv/push_gc_cc_J1_Hdiv_kernels.py +148 -0
  357. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_Hdiv/__init__.py +10 -0
  358. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_Hdiv/push_gc_cc_J2_dg_Hdiv_kernels.py +209 -0
  359. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_init_Hdiv/__init__.py +10 -0
  360. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_init_Hdiv/push_gc_cc_J2_dg_init_Hdiv_kernels.py +176 -0
  361. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_H1vec/__init__.py +10 -0
  362. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_H1vec/push_gc_cc_J2_stage_H1vec_kernels.py +212 -0
  363. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_Hdiv/__init__.py +10 -0
  364. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_Hdiv/push_gc_cc_J2_stage_Hdiv_kernels.py +213 -0
  365. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu/__init__.py +10 -0
  366. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu/push_pc_GXu_kernels.py +128 -0
  367. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu_full/__init__.py +10 -0
  368. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu_full/push_pc_GXu_full_kernels.py +139 -0
  369. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_H1vec/__init__.py +10 -0
  370. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_H1vec/push_pc_eta_stage_H1vec_kernels.py +140 -0
  371. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hcurl/__init__.py +10 -0
  372. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hcurl/push_pc_eta_stage_Hcurl_kernels.py +136 -0
  373. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hdiv/__init__.py +10 -0
  374. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hdiv/push_pc_eta_stage_Hdiv_kernels.py +137 -0
  375. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_random_diffusion_stage/__init__.py +10 -0
  376. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_random_diffusion_stage/push_random_diffusion_stage_kernels.py +58 -0
  377. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure/__init__.py +10 -0
  378. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure/push_v_sph_pressure_kernels.py +259 -0
  379. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure_ideal_gas/__init__.py +10 -0
  380. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure_ideal_gas/push_v_sph_pressure_ideal_gas_kernels.py +261 -0
  381. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_viscosity/__init__.py +10 -0
  382. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_viscosity/push_v_viscosity_kernels.py +156 -0
  383. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield/__init__.py +10 -0
  384. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield/push_v_with_efield_cuda.cu +60 -0
  385. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield/push_v_with_efield_kernels.py +112 -0
  386. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield_mu/__init__.py +10 -0
  387. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield_mu/push_v_with_efield_mu_kernels.py +136 -0
  388. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/__init__.py +10 -0
  389. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/push_vxb_analytic_cuda.cu +85 -0
  390. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/push_vxb_analytic_kernels.py +133 -0
  391. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/__init__.py +10 -0
  392. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/push_vxb_implicit_cuda.cu +84 -0
  393. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/push_vxb_implicit_kernels.py +144 -0
  394. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/__init__.py +10 -0
  395. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/push_weights_with_efield_lin_va_cuda.cu +73 -0
  396. struphy-3.5.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/push_weights_with_efield_lin_va_kernels.py +124 -0
  397. struphy-3.5.0/src/struphy/pic/pushing/kernels/reflect/__init__.py +10 -0
  398. struphy-3.5.0/src/struphy/pic/pushing/kernels/reflect/reflect_cuda.cu +21 -0
  399. struphy-3.5.0/src/struphy/pic/pushing/kernels/reflect/reflect_kernels.py +77 -0
  400. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_isotherm_kappa/__init__.py +10 -0
  401. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_isotherm_kappa/sph_isotherm_kappa_kernels.py +28 -0
  402. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_mean_velocity_coeffs/__init__.py +10 -0
  403. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_mean_velocity_coeffs/sph_mean_velocity_coeffs_kernels.py +95 -0
  404. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_pressure_coeffs/__init__.py +10 -0
  405. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_pressure_coeffs/sph_pressure_coeffs_kernels.py +85 -0
  406. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_viscosity_tensor/__init__.py +10 -0
  407. struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_viscosity_tensor/sph_viscosity_tensor_kernels.py +165 -0
  408. struphy-3.5.0/src/struphy/pic/pushing/kernels/unit_b_1form/__init__.py +10 -0
  409. struphy-3.5.0/src/struphy/pic/pushing/kernels/unit_b_1form/unit_b_1form_kernels.py +73 -0
  410. struphy-3.5.0/src/struphy/pic/pushing/prepare_push_cuda.cu +28 -0
  411. struphy-3.5.0/src/struphy/pic/pushing/pusher.py +451 -0
  412. struphy-3.5.0/src/struphy/pic/pushing/pusher_utilities_kernels.cuh +112 -0
  413. struphy-3.5.0/src/struphy/pic/pushing/pusher_utilities_kernels.py +239 -0
  414. struphy-3.5.0/src/struphy/pic/sampling_kernels.py +118 -0
  415. struphy-3.5.0/src/struphy/pic/sobol_seq.py +736 -0
  416. struphy-3.5.0/src/struphy/pic/sorting.py +401 -0
  417. struphy-3.5.0/src/struphy/pic/sorting_kernels.py +277 -0
  418. struphy-3.5.0/src/struphy/pic/sph/kernels/__init__.py +9 -0
  419. struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_flat/__init__.py +10 -0
  420. struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_flat/box_based_evaluation_flat_kernels.py +113 -0
  421. struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_meshgrid/__init__.py +10 -0
  422. struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_meshgrid/box_based_evaluation_meshgrid_kernels.py +128 -0
  423. struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_flat/__init__.py +10 -0
  424. struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_flat/naive_evaluation_flat_kernels.py +78 -0
  425. struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_meshgrid/__init__.py +10 -0
  426. struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_meshgrid/naive_evaluation_meshgrid_kernels.py +80 -0
  427. struphy-3.5.0/src/struphy/pic/sph_eval_kernels.py +217 -0
  428. struphy-3.5.0/src/struphy/pic/tests/_bench_push_vxb_analytic.py +91 -0
  429. struphy-3.5.0/src/struphy/pic/tests/bench_marker_layout.py +211 -0
  430. struphy-3.5.0/src/struphy/pic/tests/bench_openmp_speedup.py +99 -0
  431. struphy-3.5.0/src/struphy/pic/tests/cuda_emulation.py +127 -0
  432. struphy-3.5.0/src/struphy/pic/tests/cuda_parity_cases.py +419 -0
  433. struphy-3.5.0/src/struphy/pic/tests/kernel_test_args.py +227 -0
  434. struphy-3.5.0/src/struphy/pic/tests/test_accum_gc_gradB.py +79 -0
  435. struphy-3.5.0/src/struphy/pic/tests/test_accum_matrix_cupy.py +204 -0
  436. struphy-3.5.0/src/struphy/pic/tests/test_accum_pressure_coupling.py +70 -0
  437. struphy-3.5.0/src/struphy/pic/tests/test_accum_vec_H1.py +621 -0
  438. struphy-3.5.0/src/struphy/pic/tests/test_binning.py +1487 -0
  439. struphy-3.5.0/src/struphy/pic/tests/test_cuda_emulation.py +133 -0
  440. struphy-3.5.0/src/struphy/pic/tests/test_cuda_parity.py +163 -0
  441. struphy-3.5.0/src/struphy/pic/tests/test_device_helpers.py +455 -0
  442. struphy-3.5.0/src/struphy/pic/tests/test_draw_parallel.py +288 -0
  443. struphy-3.5.0/src/struphy/pic/tests/test_estimate_mem.py +110 -0
  444. struphy-3.5.0/src/struphy/pic/tests/test_kernel_backends.py +251 -0
  445. struphy-3.5.0/src/struphy/pic/tests/test_kernel_setup.py +302 -0
  446. struphy-3.5.0/src/struphy/pic/tests/test_load_external.py +43 -0
  447. struphy-3.5.0/src/struphy/pic/tests/test_marker_layout.py +277 -0
  448. struphy-3.5.0/src/struphy/pic/tests/test_mat_vec_filler.py +439 -0
  449. struphy-3.5.0/src/struphy/pic/tests/test_neighbor_ranks.py +145 -0
  450. struphy-3.5.0/src/struphy/pic/tests/test_openmp.py +155 -0
  451. struphy-3.5.0/src/struphy/pic/tests/test_pauli_particles.py +100 -0
  452. struphy-3.5.0/src/struphy/pic/tests/test_pole.py +372 -0
  453. struphy-3.5.0/src/struphy/pic/tests/test_pusher_openmp_speedup.py +100 -0
  454. struphy-3.5.0/src/struphy/pic/tests/test_pushers.py +861 -0
  455. struphy-3.5.0/src/struphy/pic/tests/test_reflect.py +89 -0
  456. struphy-3.5.0/src/struphy/pic/tests/test_set_zero_velocity.py +263 -0
  457. struphy-3.5.0/src/struphy/pic/tests/test_sorting.py +341 -0
  458. struphy-3.5.0/src/struphy/pic/tests/test_sorting_device.py +292 -0
  459. struphy-3.5.0/src/struphy/pic/tests/test_sph.py +2188 -0
  460. struphy-3.5.0/src/struphy/pic/tests/test_tesselation.py +189 -0
  461. struphy-3.5.0/src/struphy/pic/tests/test_utilities.py +45 -0
  462. struphy-3.5.0/src/struphy/pic/utilities.py +77 -0
  463. struphy-3.5.0/src/struphy/pic/utilities_kernels.py +121 -0
  464. struphy-3.5.0/src/struphy/polar/basic.py +567 -0
  465. struphy-3.5.0/src/struphy/polar/extraction_operators.py +943 -0
  466. struphy-3.5.0/src/struphy/polar/kron_2dx1d.py +1287 -0
  467. struphy-3.5.0/src/struphy/polar/linear_operators.py +1043 -0
  468. struphy-3.5.0/src/struphy/polar/tests/test_factorization_cache.py +176 -0
  469. struphy-3.5.0/src/struphy/polar/tests/test_polar.py +869 -0
  470. struphy-3.5.0/src/struphy/polar/tests/test_polar_cupy.py +429 -0
  471. struphy-3.5.0/src/struphy/post_processing/manifest.py +107 -0
  472. struphy-3.5.0/src/struphy/post_processing/orbits/orbits_tools.py +217 -0
  473. struphy-3.5.0/src/struphy/post_processing/output.py +2753 -0
  474. struphy-3.5.0/src/struphy/post_processing/particle_diagnostics.py +156 -0
  475. struphy-3.5.0/src/struphy/post_processing/plot_3d.py +425 -0
  476. struphy-3.5.0/src/struphy/post_processing/slices.py +301 -0
  477. struphy-3.5.0/src/struphy/post_processing/tests/test_eval_grids_mpi.py +243 -0
  478. struphy-3.5.0/src/struphy/post_processing/tests/test_orbits_tools.py +56 -0
  479. struphy-3.5.0/src/struphy/post_processing/tests/test_output.py +968 -0
  480. struphy-3.5.0/src/struphy/post_processing/tests/test_particle_diagnostics.py +58 -0
  481. struphy-3.5.0/src/struphy/post_processing/tests/test_plot_3d.py +143 -0
  482. struphy-3.5.0/src/struphy/post_processing/tests/test_pproc.py +161 -0
  483. struphy-3.5.0/src/struphy/post_processing/tests/test_slices.py +249 -0
  484. struphy-3.5.0/src/struphy/propagators/__init__.py +167 -0
  485. struphy-3.5.0/src/struphy/propagators/adiabatic_poisson_solve.py +235 -0
  486. struphy-3.5.0/src/struphy/propagators/base.py +295 -0
  487. struphy-3.5.0/src/struphy/propagators/curl_curl_solve.py +400 -0
  488. struphy-3.5.0/src/struphy/propagators/current_coupling_5d_curlb.py +325 -0
  489. struphy-3.5.0/src/struphy/propagators/current_coupling_5d_density.py +244 -0
  490. struphy-3.5.0/src/struphy/propagators/current_coupling_5d_gradb.py +864 -0
  491. struphy-3.5.0/src/struphy/propagators/current_coupling_6d_current.py +310 -0
  492. struphy-3.5.0/src/struphy/propagators/current_coupling_6d_density.py +300 -0
  493. struphy-3.5.0/src/struphy/propagators/efield_weights_coupling.py +313 -0
  494. struphy-3.5.0/src/struphy/propagators/gyrokinetic_poisson_solve.py +215 -0
  495. struphy-3.5.0/src/struphy/propagators/hall.py +180 -0
  496. struphy-3.5.0/src/struphy/propagators/implicit_diffusion.py +655 -0
  497. struphy-3.5.0/src/struphy/propagators/magnetosonic.py +249 -0
  498. struphy-3.5.0/src/struphy/propagators/magnetosonic_uniform.py +242 -0
  499. struphy-3.5.0/src/struphy/propagators/maxwell_weak_ampere.py +252 -0
  500. struphy-3.5.0/src/struphy/propagators/poisson_solve.py +204 -0
  501. struphy-3.5.0/src/struphy/propagators/pressure_coupling_6d.py +389 -0
  502. struphy-3.5.0/src/struphy/propagators/push_deterministic_diffusion.py +169 -0
  503. struphy-3.5.0/src/struphy/propagators/push_eta.py +124 -0
  504. struphy-3.5.0/src/struphy/propagators/push_eta_pc.py +172 -0
  505. struphy-3.5.0/src/struphy/propagators/push_guiding_center_bx_estar.py +526 -0
  506. struphy-3.5.0/src/struphy/propagators/push_guiding_center_parallel.py +552 -0
  507. struphy-3.5.0/src/struphy/propagators/push_random_diffusion.py +161 -0
  508. struphy-3.5.0/src/struphy/propagators/push_v_in_force_field.py +194 -0
  509. struphy-3.5.0/src/struphy/propagators/push_v_in_sph_pressure.py +211 -0
  510. struphy-3.5.0/src/struphy/propagators/push_v_in_viscous_potential.py +209 -0
  511. struphy-3.5.0/src/struphy/propagators/push_vxb.py +167 -0
  512. struphy-3.5.0/src/struphy/propagators/shear_alfven_b1.py +214 -0
  513. struphy-3.5.0/src/struphy/propagators/shear_alfven_curl_curl_propagator.py +443 -0
  514. struphy-3.5.0/src/struphy/propagators/shear_alfven_current_coupling_5d.py +471 -0
  515. struphy-3.5.0/src/struphy/propagators/shear_alfven_propagator.py +349 -0
  516. struphy-3.5.0/src/struphy/propagators/tests/__init__.py +0 -0
  517. struphy-3.5.0/src/struphy/propagators/tests/test_adiabatic_poisson.py +220 -0
  518. struphy-3.5.0/src/struphy/propagators/tests/test_curl_curl.py +537 -0
  519. struphy-3.5.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +894 -0
  520. struphy-3.5.0/src/struphy/propagators/tests/test_poisson.py +1090 -0
  521. struphy-3.5.0/src/struphy/propagators/tests/test_push_random_diffusion.py +50 -0
  522. struphy-3.5.0/src/struphy/propagators/tests/test_shear_alfven.py +93 -0
  523. struphy-3.5.0/src/struphy/propagators/tests/test_shear_alfven_curl_curl.py +202 -0
  524. struphy-3.5.0/src/struphy/propagators/tests/test_time_dependent_source.py +54 -0
  525. struphy-3.5.0/src/struphy/propagators/tests/test_variational_mag_field_evolve.py +99 -0
  526. struphy-3.5.0/src/struphy/propagators/time_dependent_source.py +112 -0
  527. struphy-3.5.0/src/struphy/propagators/two_fluid_quasi_neutral_full.py +468 -0
  528. struphy-3.5.0/src/struphy/propagators/variational_density_evolve.py +627 -0
  529. struphy-3.5.0/src/struphy/propagators/variational_entropy_evolve.py +468 -0
  530. struphy-3.5.0/src/struphy/propagators/variational_mag_field_evolve.py +418 -0
  531. struphy-3.5.0/src/struphy/propagators/variational_momentum_advection.py +295 -0
  532. struphy-3.5.0/src/struphy/propagators/variational_pb_evolve.py +675 -0
  533. struphy-3.5.0/src/struphy/propagators/variational_qb_evolve.py +699 -0
  534. struphy-3.5.0/src/struphy/propagators/variational_resistivity.py +820 -0
  535. struphy-3.5.0/src/struphy/propagators/variational_viscosity.py +837 -0
  536. struphy-3.5.0/src/struphy/propagators/vlasov_ampere_coupling.py +243 -0
  537. struphy-3.5.0/src/struphy/simulation/__init__.py +0 -0
  538. struphy-3.5.0/src/struphy/simulation/sim.py +2435 -0
  539. struphy-3.5.0/src/struphy/simulation/tests/__init__.py +0 -0
  540. struphy-3.5.0/src/struphy/simulation/tests/test_compile_cuda_kernels.py +247 -0
  541. struphy-3.5.0/src/struphy/simulation/tests/test_output.py +478 -0
  542. struphy-3.5.0/src/struphy/simulation/tests/test_sim_comm_mpi.py +50 -0
  543. struphy-3.5.0/src/struphy/struphy_model_test/ColdPlasma/parameters.py +120 -0
  544. struphy-3.5.0/src/struphy/topology/__init__.py +0 -0
  545. struphy-3.5.0/src/struphy/utils/__init__.py +0 -0
  546. struphy-3.5.0/src/struphy/utils/clone_config.py +274 -0
  547. struphy-3.5.0/src/struphy/utils/compiler.py +266 -0
  548. struphy-3.5.0/src/struphy/utils/cuda_arguments.py +60 -0
  549. struphy-3.5.0/src/struphy/utils/kernel_compilation.py +52 -0
  550. struphy-3.5.0/src/struphy/utils/test_clone_config.py +47 -0
  551. struphy-3.5.0/src/struphy/utils/test_utils.py +22 -0
  552. struphy-3.5.0/src/struphy/utils/utils.py +261 -0
  553. struphy-3.5.0/src/struphy.egg-info/PKG-INFO +298 -0
  554. struphy-3.5.0/src/struphy.egg-info/SOURCES.txt +793 -0
  555. struphy-3.5.0/src/struphy.egg-info/requires.txt +85 -0
  556. struphy-3.4.0/PKG-INFO +0 -268
  557. struphy-3.4.0/README.md +0 -151
  558. struphy-3.4.0/pyproject.toml +0 -197
  559. struphy-3.4.0/setup.cfg +0 -13
  560. struphy-3.4.0/src/struphy/__init__.py +0 -253
  561. struphy-3.4.0/src/struphy/api/models/__init__.py +0 -81
  562. struphy-3.4.0/src/struphy/bsplines/evaluation_kernels_3d.py +0 -1924
  563. struphy-3.4.0/src/struphy/bsplines/tests/test_bsplines_kers.py +0 -210
  564. struphy-3.4.0/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -855
  565. struphy-3.4.0/src/struphy/console/compile.py +0 -365
  566. struphy-3.4.0/src/struphy/console/format.py +0 -1557
  567. struphy-3.4.0/src/struphy/console/main.py +0 -780
  568. struphy-3.4.0/src/struphy/console/test.py +0 -174
  569. struphy-3.4.0/src/struphy/console/tests/test_compile.py +0 -214
  570. struphy-3.4.0/src/struphy/console/tests/test_format.py +0 -38
  571. struphy-3.4.0/src/struphy/dependencies.py +0 -135
  572. struphy-3.4.0/src/struphy/examples/_draw_parallel.py +0 -100
  573. struphy-3.4.0/src/struphy/feec/basis_projection_kernels.py +0 -568
  574. struphy-3.4.0/src/struphy/feec/basis_projection_ops.py +0 -2406
  575. struphy-3.4.0/src/struphy/feec/boundary_mass.py +0 -588
  576. struphy-3.4.0/src/struphy/feec/linear_operators.py +0 -512
  577. struphy-3.4.0/src/struphy/feec/local_projectors_kernels.py +0 -1216
  578. struphy-3.4.0/src/struphy/feec/mass.py +0 -3428
  579. struphy-3.4.0/src/struphy/feec/mass_kernels.py +0 -1270
  580. struphy-3.4.0/src/struphy/feec/memory.py +0 -70
  581. struphy-3.4.0/src/struphy/feec/preconditioner.py +0 -994
  582. struphy-3.4.0/src/struphy/feec/projectors.py +0 -2238
  583. struphy-3.4.0/src/struphy/feec/psydac_derham.py +0 -4068
  584. struphy-3.4.0/src/struphy/feec/tests/test_basis_ops.py +0 -654
  585. struphy-3.4.0/src/struphy/feec/tests/test_boundary_integrals.py +0 -372
  586. struphy-3.4.0/src/struphy/feec/tests/test_derham.py +0 -160
  587. struphy-3.4.0/src/struphy/feec/tests/test_eval_field.py +0 -597
  588. struphy-3.4.0/src/struphy/feec/tests/test_field_init.py +0 -1463
  589. struphy-3.4.0/src/struphy/feec/tests/test_l2_projectors.py +0 -344
  590. struphy-3.4.0/src/struphy/feec/tests/test_local_projectors.py +0 -1619
  591. struphy-3.4.0/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -322
  592. struphy-3.4.0/src/struphy/feec/tests/test_mass_matrices.py +0 -1659
  593. struphy-3.4.0/src/struphy/feec/tests/test_mass_reassembly.py +0 -41
  594. struphy-3.4.0/src/struphy/feec/tests/test_preconditioner_transpose.py +0 -59
  595. struphy-3.4.0/src/struphy/feec/tests/test_toarray_struphy.py +0 -138
  596. struphy-3.4.0/src/struphy/feec/tests/test_tosparse_struphy.py +0 -154
  597. struphy-3.4.0/src/struphy/feec/tests/test_utilities_kernels.py +0 -41
  598. struphy-3.4.0/src/struphy/feec/tests/test_variational_utilities.py +0 -52
  599. struphy-3.4.0/src/struphy/feec/tests/xx_test_preconds.py +0 -116
  600. struphy-3.4.0/src/struphy/feec/utilities.py +0 -601
  601. struphy-3.4.0/src/struphy/feec/utilities_kernels.py +0 -216
  602. struphy-3.4.0/src/struphy/feec/variational_utilities.py +0 -1583
  603. struphy-3.4.0/src/struphy/fields_background/equils.py +0 -3448
  604. struphy-3.4.0/src/struphy/fields_background/tests/test_mhd_equils.py +0 -1050
  605. struphy-3.4.0/src/struphy/geometry/base.py +0 -2664
  606. struphy-3.4.0/src/struphy/geometry/domains/tokamak/tokamak.py +0 -126
  607. struphy-3.4.0/src/struphy/geometry/evaluation_kernels.py +0 -961
  608. struphy-3.4.0/src/struphy/geometry/tests/test_domain.py +0 -1183
  609. struphy-3.4.0/src/struphy/geometry/transform_kernels.py +0 -491
  610. struphy-3.4.0/src/struphy/geometry/utilities.py +0 -499
  611. struphy-3.4.0/src/struphy/initial/perturbations.py +0 -2525
  612. struphy-3.4.0/src/struphy/initial/tests/test_init_perturbations.py +0 -396
  613. struphy-3.4.0/src/struphy/io/options.py +0 -376
  614. struphy-3.4.0/src/struphy/io/output_handling.py +0 -172
  615. struphy-3.4.0/src/struphy/io/setup.py +0 -175
  616. struphy-3.4.0/src/struphy/kernel_arguments/pusher_args_kernels.py +0 -169
  617. struphy-3.4.0/src/struphy/kinetic_background/base.py +0 -1031
  618. struphy-3.4.0/src/struphy/kinetic_background/maxwellians.py +0 -863
  619. struphy-3.4.0/src/struphy/kinetic_background/tests/test_base.py +0 -166
  620. struphy-3.4.0/src/struphy/kinetic_background/tests/test_maxwellians.py +0 -1800
  621. struphy-3.4.0/src/struphy/linear_algebra/schur_solver.py +0 -400
  622. struphy-3.4.0/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +0 -446
  623. struphy-3.4.0/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +0 -457
  624. struphy-3.4.0/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +0 -300
  625. struphy-3.4.0/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +0 -284
  626. struphy-3.4.0/src/struphy/models/__init__.py +0 -138
  627. struphy-3.4.0/src/struphy/models/base.py +0 -1219
  628. struphy-3.4.0/src/struphy/models/cold_plasma_vlasov.py +0 -377
  629. struphy-3.4.0/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +0 -335
  630. struphy-3.4.0/src/struphy/models/guiding_center.py +0 -213
  631. struphy-3.4.0/src/struphy/models/incompressible_navier_stokes_sph.py +0 -277
  632. struphy-3.4.0/src/struphy/models/linear_mhd_driftkinetic_cc.py +0 -379
  633. struphy-3.4.0/src/struphy/models/linear_vlasov_ampere_one_species.py +0 -373
  634. struphy-3.4.0/src/struphy/models/linear_vlasov_maxwell_one_species.py +0 -300
  635. struphy-3.4.0/src/struphy/models/poisson.py +0 -189
  636. struphy-3.4.0/src/struphy/models/scalars.py +0 -375
  637. struphy-3.4.0/src/struphy/models/species.py +0 -461
  638. struphy-3.4.0/src/struphy/models/tests/test_examples.py +0 -72
  639. struphy-3.4.0/src/struphy/models/tests/test_scalars.py +0 -219
  640. struphy-3.4.0/src/struphy/models/tests/utils_testing.py +0 -162
  641. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_IncompressibleNavierStokesSPH.py +0 -483
  642. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_LinearMHD.py +0 -151
  643. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_LinearVlasovAmpereOneSpecies.py +0 -212
  644. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_Maxwell.py +0 -281
  645. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_Poisson.py +0 -130
  646. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +0 -1039
  647. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +0 -170
  648. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_VlasovMaxwellOneSpecies.py +0 -106
  649. struphy-3.4.0/src/struphy/models/toy_drift.py +0 -278
  650. struphy-3.4.0/src/struphy/models/variables.py +0 -1006
  651. struphy-3.4.0/src/struphy/models/vlasov_ampere_one_species.py +0 -341
  652. struphy-3.4.0/src/struphy/models/vlasov_maxwell_one_species.py +0 -381
  653. struphy-3.4.0/src/struphy/ode/tests/test_ode_feec.py +0 -192
  654. struphy-3.4.0/src/struphy/physics/physics.py +0 -152
  655. struphy-3.4.0/src/struphy/pic/accumulation/accum_kernels.py +0 -1176
  656. struphy-3.4.0/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -1274
  657. struphy-3.4.0/src/struphy/pic/accumulation/particles_to_grid.py +0 -754
  658. struphy-3.4.0/src/struphy/pic/base.py +0 -4966
  659. struphy-3.4.0/src/struphy/pic/particles.py +0 -996
  660. struphy-3.4.0/src/struphy/pic/pushing/eval_kernels_gc.py +0 -460
  661. struphy-3.4.0/src/struphy/pic/pushing/eval_kernels_sph.py +0 -567
  662. struphy-3.4.0/src/struphy/pic/pushing/kernel_setup.py +0 -82
  663. struphy-3.4.0/src/struphy/pic/pushing/pusher.py +0 -421
  664. struphy-3.4.0/src/struphy/pic/pushing/pusher_kernels.py +0 -1941
  665. struphy-3.4.0/src/struphy/pic/pushing/pusher_kernels_gc.py +0 -2995
  666. struphy-3.4.0/src/struphy/pic/pushing/pusher_kernels_sph.py +0 -670
  667. struphy-3.4.0/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -194
  668. struphy-3.4.0/src/struphy/pic/sampling_kernels.py +0 -118
  669. struphy-3.4.0/src/struphy/pic/sobol_seq.py +0 -733
  670. struphy-3.4.0/src/struphy/pic/sorting.py +0 -397
  671. struphy-3.4.0/src/struphy/pic/sorting_kernels.py +0 -249
  672. struphy-3.4.0/src/struphy/pic/sph_eval_kernels.py +0 -590
  673. struphy-3.4.0/src/struphy/pic/tests/_bench_push_vxb_analytic.py +0 -92
  674. struphy-3.4.0/src/struphy/pic/tests/bench_openmp_speedup.py +0 -99
  675. struphy-3.4.0/src/struphy/pic/tests/test_accum_gc_gradB.py +0 -78
  676. struphy-3.4.0/src/struphy/pic/tests/test_accum_pressure_coupling.py +0 -70
  677. struphy-3.4.0/src/struphy/pic/tests/test_accum_vec_H1.py +0 -624
  678. struphy-3.4.0/src/struphy/pic/tests/test_binning.py +0 -1490
  679. struphy-3.4.0/src/struphy/pic/tests/test_draw_parallel.py +0 -198
  680. struphy-3.4.0/src/struphy/pic/tests/test_estimate_mem.py +0 -110
  681. struphy-3.4.0/src/struphy/pic/tests/test_kernel_backends.py +0 -406
  682. struphy-3.4.0/src/struphy/pic/tests/test_kernel_setup.py +0 -280
  683. struphy-3.4.0/src/struphy/pic/tests/test_load_external.py +0 -43
  684. struphy-3.4.0/src/struphy/pic/tests/test_mat_vec_filler.py +0 -430
  685. struphy-3.4.0/src/struphy/pic/tests/test_neighbor_ranks.py +0 -138
  686. struphy-3.4.0/src/struphy/pic/tests/test_pusher_openmp_speedup.py +0 -100
  687. struphy-3.4.0/src/struphy/pic/tests/test_pushers.py +0 -862
  688. struphy-3.4.0/src/struphy/pic/tests/test_set_zero_velocity.py +0 -265
  689. struphy-3.4.0/src/struphy/pic/tests/test_sorting.py +0 -215
  690. struphy-3.4.0/src/struphy/pic/tests/test_sph.py +0 -2189
  691. struphy-3.4.0/src/struphy/pic/tests/test_tesselation.py +0 -189
  692. struphy-3.4.0/src/struphy/pic/tests/test_utilities.py +0 -45
  693. struphy-3.4.0/src/struphy/pic/utilities.py +0 -76
  694. struphy-3.4.0/src/struphy/pic/utilities_kernels.py +0 -802
  695. struphy-3.4.0/src/struphy/polar/basic.py +0 -541
  696. struphy-3.4.0/src/struphy/polar/extraction_operators.py +0 -938
  697. struphy-3.4.0/src/struphy/polar/linear_operators.py +0 -933
  698. struphy-3.4.0/src/struphy/polar/tests/test_polar.py +0 -506
  699. struphy-3.4.0/src/struphy/post_processing/manifest.py +0 -102
  700. struphy-3.4.0/src/struphy/post_processing/orbits/orbits_tools.py +0 -217
  701. struphy-3.4.0/src/struphy/post_processing/output.py +0 -2645
  702. struphy-3.4.0/src/struphy/post_processing/tests/test_eval_grids_mpi.py +0 -243
  703. struphy-3.4.0/src/struphy/post_processing/tests/test_orbits_tools.py +0 -56
  704. struphy-3.4.0/src/struphy/post_processing/tests/test_output.py +0 -888
  705. struphy-3.4.0/src/struphy/post_processing/tests/test_pproc.py +0 -102
  706. struphy-3.4.0/src/struphy/propagators/__init__.py +0 -156
  707. struphy-3.4.0/src/struphy/propagators/base.py +0 -268
  708. struphy-3.4.0/src/struphy/propagators/curl_curl_solve.py +0 -333
  709. struphy-3.4.0/src/struphy/propagators/current_coupling_5d_curlb.py +0 -325
  710. struphy-3.4.0/src/struphy/propagators/current_coupling_5d_density.py +0 -245
  711. struphy-3.4.0/src/struphy/propagators/current_coupling_5d_gradb.py +0 -860
  712. struphy-3.4.0/src/struphy/propagators/current_coupling_6d_current.py +0 -309
  713. struphy-3.4.0/src/struphy/propagators/current_coupling_6d_density.py +0 -301
  714. struphy-3.4.0/src/struphy/propagators/efield_weights_coupling.py +0 -314
  715. struphy-3.4.0/src/struphy/propagators/hall.py +0 -180
  716. struphy-3.4.0/src/struphy/propagators/implicit_diffusion.py +0 -471
  717. struphy-3.4.0/src/struphy/propagators/magnetosonic.py +0 -249
  718. struphy-3.4.0/src/struphy/propagators/magnetosonic_uniform.py +0 -242
  719. struphy-3.4.0/src/struphy/propagators/maxwell_weak_ampere.py +0 -252
  720. struphy-3.4.0/src/struphy/propagators/poisson_adiabatic_gyrokinetic.py +0 -208
  721. struphy-3.4.0/src/struphy/propagators/poisson_solve.py +0 -155
  722. struphy-3.4.0/src/struphy/propagators/pressure_coupling_6d.py +0 -396
  723. struphy-3.4.0/src/struphy/propagators/push_deterministic_diffusion.py +0 -170
  724. struphy-3.4.0/src/struphy/propagators/push_eta.py +0 -123
  725. struphy-3.4.0/src/struphy/propagators/push_eta_pc.py +0 -171
  726. struphy-3.4.0/src/struphy/propagators/push_guiding_center_bx_estar.py +0 -499
  727. struphy-3.4.0/src/struphy/propagators/push_guiding_center_parallel.py +0 -523
  728. struphy-3.4.0/src/struphy/propagators/push_random_diffusion.py +0 -161
  729. struphy-3.4.0/src/struphy/propagators/push_v_in_force_field.py +0 -160
  730. struphy-3.4.0/src/struphy/propagators/push_v_in_sph_pressure.py +0 -210
  731. struphy-3.4.0/src/struphy/propagators/push_v_in_viscous_potential.py +0 -208
  732. struphy-3.4.0/src/struphy/propagators/push_vxb.py +0 -170
  733. struphy-3.4.0/src/struphy/propagators/shear_alfven_b1.py +0 -214
  734. struphy-3.4.0/src/struphy/propagators/shear_alfven_current_coupling_5d.py +0 -472
  735. struphy-3.4.0/src/struphy/propagators/shear_alfven_propagator.py +0 -244
  736. struphy-3.4.0/src/struphy/propagators/tests/test_curl_curl.py +0 -469
  737. struphy-3.4.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +0 -830
  738. struphy-3.4.0/src/struphy/propagators/tests/test_poisson.py +0 -804
  739. struphy-3.4.0/src/struphy/propagators/tests/test_push_random_diffusion.py +0 -50
  740. struphy-3.4.0/src/struphy/propagators/tests/test_variational_mag_field_evolve.py +0 -99
  741. struphy-3.4.0/src/struphy/propagators/time_dependent_source.py +0 -114
  742. struphy-3.4.0/src/struphy/propagators/two_fluid_quasi_neutral_full.py +0 -468
  743. struphy-3.4.0/src/struphy/propagators/variational_density_evolve.py +0 -628
  744. struphy-3.4.0/src/struphy/propagators/variational_entropy_evolve.py +0 -467
  745. struphy-3.4.0/src/struphy/propagators/variational_mag_field_evolve.py +0 -417
  746. struphy-3.4.0/src/struphy/propagators/variational_momentum_advection.py +0 -294
  747. struphy-3.4.0/src/struphy/propagators/variational_pb_evolve.py +0 -674
  748. struphy-3.4.0/src/struphy/propagators/variational_qb_evolve.py +0 -698
  749. struphy-3.4.0/src/struphy/propagators/variational_resistivity.py +0 -817
  750. struphy-3.4.0/src/struphy/propagators/variational_viscosity.py +0 -835
  751. struphy-3.4.0/src/struphy/propagators/vlasov_ampere_coupling.py +0 -251
  752. struphy-3.4.0/src/struphy/simulation/sim.py +0 -2350
  753. struphy-3.4.0/src/struphy/simulation/tests/test_output.py +0 -477
  754. struphy-3.4.0/src/struphy/simulation/tests/test_sim_comm_mpi.py +0 -50
  755. struphy-3.4.0/src/struphy/utils/clone_config.py +0 -275
  756. struphy-3.4.0/src/struphy/utils/compiler.py +0 -250
  757. struphy-3.4.0/src/struphy/utils/cuda_arguments.py +0 -212
  758. struphy-3.4.0/src/struphy/utils/kernel_backends.py +0 -233
  759. struphy-3.4.0/src/struphy/utils/test_clone_config.py +0 -48
  760. struphy-3.4.0/src/struphy/utils/utils.py +0 -261
  761. struphy-3.4.0/src/struphy.egg-info/PKG-INFO +0 -268
  762. struphy-3.4.0/src/struphy.egg-info/SOURCES.txt +0 -446
  763. struphy-3.4.0/src/struphy.egg-info/requires.txt +0 -91
  764. {struphy-3.4.0 → struphy-3.5.0}/LICENSE +0 -0
  765. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/__init__.py +0 -0
  766. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/compiler/__init__.py +0 -0
  767. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/domains/__init__.py +0 -0
  768. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/equils/__init__.py +0 -0
  769. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/grids/__init__.py +0 -0
  770. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/maxwellians/__init__.py +0 -0
  771. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/ode/__init__.py +0 -0
  772. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/options/__init__.py +0 -0
  773. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/particles/__init__.py +0 -0
  774. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/perturbations/__init__.py +0 -0
  775. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/post_processing/__init__.py +0 -0
  776. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/api/simulation/__init__.py +0 -0
  777. {struphy-3.4.0/src/struphy/bsplines → struphy-3.5.0/src/struphy/api/tests}/__init__.py +0 -0
  778. {struphy-3.4.0/src/struphy/bsplines/tests → struphy-3.5.0/src/struphy/bsplines}/__init__.py +0 -0
  779. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/bsplines/bsplines.py +0 -0
  780. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/bsplines/bsplines_kernels.py +0 -0
  781. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  782. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  783. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  784. {struphy-3.4.0/src/struphy/console → struphy-3.5.0/src/struphy/bsplines/tests}/__init__.py +0 -0
  785. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/compile_struphy.mk +0 -0
  786. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/conftest.py +0 -0
  787. {struphy-3.4.0/src/struphy/diagnostics/tests → struphy-3.5.0/src/struphy/console}/__init__.py +0 -0
  788. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/likwid.py +0 -0
  789. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/output.py +0 -0
  790. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/params.py +0 -0
  791. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/parsers.py +0 -0
  792. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/profile.py +0 -0
  793. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/tests/test_params_profile.py +0 -0
  794. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/tests/test_state.py +0 -0
  795. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/console/tests/xx_test_console.py +0 -0
  796. {struphy-3.4.0/src/struphy/dispersion_relations → struphy-3.5.0/src/struphy/diagnostics/tests}/__init__.py +0 -0
  797. {struphy-3.4.0/src/struphy/dispersion_relations/tests → struphy-3.5.0/src/struphy/dispersion_relations}/__init__.py +0 -0
  798. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/dispersion_relations/analytic.py +0 -0
  799. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/dispersion_relations/base.py +0 -0
  800. {struphy-3.4.0/src/struphy/examples/restelli2018 → struphy-3.5.0/src/struphy/dispersion_relations/tests}/__init__.py +0 -0
  801. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/dispersion_relations/tests/test_analytic.py +0 -0
  802. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/dispersion_relations/utilities.py +0 -0
  803. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  804. {struphy-3.4.0/src/struphy/feec → struphy-3.5.0/src/struphy/examples/restelli2018}/__init__.py +0 -0
  805. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/examples/restelli2018/callables.py +0 -0
  806. {struphy-3.4.0/src/struphy/feec/tests → struphy-3.5.0/src/struphy/feec}/__init__.py +0 -0
  807. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  808. {struphy-3.4.0/src/struphy/fields_background → struphy-3.5.0/src/struphy/feec/local_projectors}/__init__.py +0 -0
  809. {struphy-3.4.0/src/struphy/fields_background/coil_fields → struphy-3.5.0/src/struphy/feec/tests}/__init__.py +0 -0
  810. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/feec/tests/test_estimate_mem.py +0 -0
  811. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/feec/tests/test_local_matrix_vector.py +0 -0
  812. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/feec/utilities_local_projectors.py +0 -0
  813. {struphy-3.4.0/src/struphy/fields_background/mhd_equil → struphy-3.5.0/src/struphy/fields_background}/__init__.py +0 -0
  814. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/base.py +0 -0
  815. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/eqdsk → struphy-3.5.0/src/struphy/fields_background/coil_fields}/__init__.py +0 -0
  816. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/coil_fields/base.py +0 -0
  817. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/coil_fields/coil_fields.py +0 -0
  818. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/eqdsk/data → struphy-3.5.0/src/struphy/fields_background/mhd_equil}/__init__.py +0 -0
  819. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/gvec → struphy-3.5.0/src/struphy/fields_background/mhd_equil/eqdsk}/__init__.py +0 -0
  820. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  821. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/gvec/output → struphy-3.5.0/src/struphy/fields_background/mhd_equil/eqdsk/data}/__init__.py +0 -0
  822. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
  823. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk → struphy-3.5.0/src/struphy/fields_background/mhd_equil/gvec}/__init__.py +0 -0
  824. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/vmec → struphy-3.5.0/src/struphy/fields_background/mhd_equil/gvec/output}/__init__.py +0 -0
  825. {struphy-3.4.0/src/struphy/fields_background/tests → struphy-3.5.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk}/__init__.py +0 -0
  826. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00000000.dat +0 -0
  827. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00001000.dat +0 -0
  828. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/parameter.ini +0 -0
  829. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000000.dat +0 -0
  830. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000100.dat +0 -0
  831. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/parameter-w7x.ini +0 -0
  832. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00000000.dat +0 -0
  833. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00003307.dat +0 -0
  834. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/Neo-spitzer-mirror23-well-opt-1-AR10-1.nc +0 -0
  835. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/parameter-fig8.ini +0 -0
  836. {struphy-3.4.0/src/struphy/geometry → struphy-3.5.0/src/struphy/fields_background/mhd_equil/vmec}/__init__.py +0 -0
  837. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/projected_equils.py +0 -0
  838. {struphy-3.4.0/src/struphy/geometry/map_coef → struphy-3.5.0/src/struphy/fields_background/tests}/__init__.py +0 -0
  839. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/tests/test_adhoc_tokamak_equils.py +0 -0
  840. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/tests/test_axisymm_gradB.py +0 -0
  841. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
  842. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/tests/test_generic_equils.py +0 -0
  843. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
  844. {struphy-3.4.0/src/struphy/geometry/tests → struphy-3.5.0/src/struphy/geometry}/__init__.py +0 -0
  845. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/__init__.py +0 -0
  846. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/colella/__init__.py +0 -0
  847. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/colella/colella.py +0 -0
  848. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/colella/colella_kernels.py +0 -0
  849. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/cuboid/__init__.py +0 -0
  850. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/cuboid/cuboid.py +0 -0
  851. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/cuboid/cuboid_kernels.py +0 -0
  852. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/desc_unit/__init__.py +0 -0
  853. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/desc_unit/desc_unit.py +0 -0
  854. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/gvec_unit/__init__.py +0 -0
  855. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/gvec_unit/gvec_unit.py +0 -0
  856. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/hollow_cylinder/__init__.py +0 -0
  857. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder.py +0 -0
  858. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder_kernels.py +0 -0
  859. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/hollow_torus/__init__.py +0 -0
  860. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/hollow_torus/hollow_torus.py +0 -0
  861. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/hollow_torus/hollow_torus_kernels.py +0 -0
  862. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/iga_polar_cylinder/__init__.py +0 -0
  863. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/iga_polar_cylinder/iga_polar_cylinder.py +0 -0
  864. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/iga_polar_torus/__init__.py +0 -0
  865. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/iga_polar_torus/iga_polar_torus.py +0 -0
  866. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/orthogonal/__init__.py +0 -0
  867. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/orthogonal/orthogonal.py +0 -0
  868. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/orthogonal/orthogonal_kernels.py +0 -0
  869. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/powered_elliptic_cylinder/__init__.py +0 -0
  870. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder.py +0 -0
  871. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder_kernels.py +0 -0
  872. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_dshaped_cylinder/__init__.py +0 -0
  873. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder.py +0 -0
  874. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder_kernels.py +0 -0
  875. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_shift_cylinder/__init__.py +0 -0
  876. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder.py +0 -0
  877. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder_kernels.py +0 -0
  878. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_sqrt_cylinder/__init__.py +0 -0
  879. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder.py +0 -0
  880. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder_kernels.py +0 -0
  881. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/domains/tokamak/__init__.py +0 -0
  882. {struphy-3.4.0/src/struphy/initial → struphy-3.5.0/src/struphy/geometry/map_coef}/__init__.py +0 -0
  883. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/spline_mappings_kernels.py +0 -0
  884. {struphy-3.4.0/src/struphy/initial → struphy-3.5.0/src/struphy/geometry}/tests/__init__.py +0 -0
  885. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/geometry/utilities_kernels.py +0 -0
  886. {struphy-3.4.0/src/struphy/io → struphy-3.5.0/src/struphy/initial}/__init__.py +0 -0
  887. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/initial/base.py +0 -0
  888. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/initial/eigenfunctions.py +0 -0
  889. {struphy-3.4.0/src/struphy/io → struphy-3.5.0/src/struphy/initial}/tests/__init__.py +0 -0
  890. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/initial/utilities.py +0 -0
  891. {struphy-3.4.0/src/struphy/kernel_arguments → struphy-3.5.0/src/struphy/io}/__init__.py +0 -0
  892. {struphy-3.4.0/src/struphy/kinetic_background → struphy-3.5.0/src/struphy/io/tests}/__init__.py +0 -0
  893. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/io/tests/test_output_handling.py +0 -0
  894. {struphy-3.4.0/src/struphy/kinetic_background/tests → struphy-3.5.0/src/struphy/kernel_arguments}/__init__.py +0 -0
  895. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/kernel_arguments/local_projectors_args_kernels.py +0 -0
  896. {struphy-3.4.0/src/struphy/linear_algebra → struphy-3.5.0/src/struphy/kinetic_background}/__init__.py +0 -0
  897. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/kinetic_background/moment_functions.py +0 -0
  898. {struphy-3.4.0/src/struphy/linear_algebra → struphy-3.5.0/src/struphy/kinetic_background}/tests/__init__.py +0 -0
  899. {struphy-3.4.0/src/struphy/models/tests → struphy-3.5.0/src/struphy/linear_algebra}/__init__.py +0 -0
  900. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  901. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  902. {struphy-3.4.0/src/struphy/models/tests/default_params → struphy-3.5.0/src/struphy/linear_algebra/multigrid}/__init__.py +0 -0
  903. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/linear_algebra/saddle_point.py +0 -0
  904. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/linear_algebra/solver.py +0 -0
  905. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  906. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  907. {struphy-3.4.0/src/struphy/models/tests/verification → struphy-3.5.0/src/struphy/linear_algebra/tests}/__init__.py +0 -0
  908. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/cold_plasma.py +0 -0
  909. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/deterministic_particle_diffusion.py +0 -0
  910. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/hasegawa_wakatani.py +0 -0
  911. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/linear_extended_mh_duniform.py +0 -0
  912. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/linear_mhd.py +0 -0
  913. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/linear_mhd_vlasov_cc.py +0 -0
  914. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/linear_mhd_vlasov_pc.py +0 -0
  915. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/maxwell.py +0 -0
  916. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/pressure_less_sph.py +0 -0
  917. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/random_particle_diffusion.py +0 -0
  918. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/shear_alfven.py +0 -0
  919. {struphy-3.4.0/src/struphy/ode → struphy-3.5.0/src/struphy/models/tests}/__init__.py +0 -0
  920. {struphy-3.4.0/src/struphy/ode/tests → struphy-3.5.0/src/struphy/models/tests/default_params}/__init__.py +0 -0
  921. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/tests/default_params/test_models.py +0 -0
  922. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/tests/test_estimate_mem.py +0 -0
  923. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/tests/test_hasegawa_wakatani.py +0 -0
  924. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/tests/test_variational_dissipation.py +0 -0
  925. {struphy-3.4.0/src/struphy/particles → struphy-3.5.0/src/struphy/models/tests/verification}/__init__.py +0 -0
  926. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/two_fluid_quasi_neutral_toy.py +0 -0
  927. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/utils.py +0 -0
  928. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/variational_barotropic_fluid.py +0 -0
  929. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/variational_compressible_fluid.py +0 -0
  930. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/variational_pressureless_fluid.py +0 -0
  931. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_deltaf_mhd.py +0 -0
  932. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_deltaf_mhd_with_q.py +0 -0
  933. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_linear_mhd.py +0 -0
  934. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_linear_mhd_with_q.py +0 -0
  935. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_mhd.py +0 -0
  936. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_mhd_with_p.py +0 -0
  937. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_mhd_with_q.py +0 -0
  938. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/viscous_euler_sph.py +0 -0
  939. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/viscous_fluid.py +0 -0
  940. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/models/vlasov.py +0 -0
  941. {struphy-3.4.0/src/struphy/physics → struphy-3.5.0/src/struphy/ode}/__init__.py +0 -0
  942. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/ode/solvers.py +0 -0
  943. {struphy-3.4.0/src/struphy/pic → struphy-3.5.0/src/struphy/ode/tests}/__init__.py +0 -0
  944. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/ode/tests/test_butcher.py +0 -0
  945. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/ode/utils.py +0 -0
  946. {struphy-3.4.0/src/struphy/pic/accumulation → struphy-3.5.0/src/struphy/particles}/__init__.py +0 -0
  947. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/particles/parameters.py +0 -0
  948. {struphy-3.4.0/src/struphy/pic/pushing → struphy-3.5.0/src/struphy/physics}/__init__.py +0 -0
  949. {struphy-3.4.0/src/struphy/pic/tests → struphy-3.5.0/src/struphy/pic}/__init__.py +0 -0
  950. {struphy-3.4.0/src/struphy/polar → struphy-3.5.0/src/struphy/pic/accumulation}/__init__.py +0 -0
  951. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  952. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/pic/accumulation/filter.py +0 -0
  953. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
  954. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
  955. {struphy-3.4.0/src/struphy/polar/tests → struphy-3.5.0/src/struphy/pic/diagnostics}/__init__.py +0 -0
  956. {struphy-3.4.0/src/struphy/post_processing → struphy-3.5.0/src/struphy/pic/pushing}/__init__.py +0 -0
  957. {struphy-3.4.0/src/struphy/post_processing/likwid → struphy-3.5.0/src/struphy/pic/sph}/__init__.py +0 -0
  958. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/pic/sph_smoothing_kernels.py +0 -0
  959. {struphy-3.4.0/src/struphy/post_processing/orbits → struphy-3.5.0/src/struphy/pic/tests}/__init__.py +0 -0
  960. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/pic/tests/test_gc_epsilon.py +0 -0
  961. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/pic/tests/test_show_distribution.py +0 -0
  962. {struphy-3.4.0/src/struphy/post_processing/tests → struphy-3.5.0/src/struphy/polar}/__init__.py +0 -0
  963. {struphy-3.4.0/src/struphy/propagators → struphy-3.5.0/src/struphy/polar}/tests/__init__.py +0 -0
  964. {struphy-3.4.0/src/struphy/simulation → struphy-3.5.0/src/struphy/post_processing}/__init__.py +0 -0
  965. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/arrays.py +0 -0
  966. {struphy-3.4.0/src/struphy/simulation/tests → struphy-3.5.0/src/struphy/post_processing/likwid}/__init__.py +0 -0
  967. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/hardware_dicts.py +0 -0
  968. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/likwid_parser.py +0 -0
  969. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/maxplotlylib.py +0 -0
  970. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/plot_likwidproject.py +0 -0
  971. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/roofline_plotter.py +0 -0
  972. {struphy-3.4.0/src/struphy/topology → struphy-3.5.0/src/struphy/post_processing/orbits}/__init__.py +0 -0
  973. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/orbits/orbits_kernels.py +0 -0
  974. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/profiling.py +0 -0
  975. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/si.py +0 -0
  976. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/store.py +0 -0
  977. {struphy-3.4.0/src/struphy/utils → struphy-3.5.0/src/struphy/post_processing/tests}/__init__.py +0 -0
  978. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/tests/test_arrays.py +0 -0
  979. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/post_processing/tests/test_eval_grids.py +0 -0
  980. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/adiabatic_phi.py +0 -0
  981. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/faraday_extended.py +0 -0
  982. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/hasegawa_wakatani_step.py +0 -0
  983. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/jxb_cold.py +0 -0
  984. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/ohm_cold.py +0 -0
  985. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_current_coupling_5d.py +0 -0
  986. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_current_coupling_5d_options.py +0 -0
  987. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_magnetosonic.py +0 -0
  988. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_pressure_coupling_6d.py +0 -0
  989. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_two_fluid_quasi_neutral_full.py +0 -0
  990. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_variational_density_evolve.py +0 -0
  991. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_variational_qb_evolve.py +0 -0
  992. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/propagators/tests/test_variational_solver_option.py +0 -0
  993. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/simulation/base.py +0 -0
  994. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/simulation/tests/test_estimate_mem.py +0 -0
  995. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/topology/grids.py +0 -0
  996. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/utils/cupy_vs_numpy.py +0 -0
  997. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/utils/docstring_converter.py +0 -0
  998. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/utils/ipython_compat.py +0 -0
  999. {struphy-3.4.0 → struphy-3.5.0}/src/struphy/utils/progress.py +0 -0
  1000. {struphy-3.4.0 → struphy-3.5.0}/src/struphy.egg-info/dependency_links.txt +0 -0
  1001. {struphy-3.4.0 → struphy-3.5.0}/src/struphy.egg-info/entry_points.txt +0 -0
  1002. {struphy-3.4.0 → struphy-3.5.0}/src/struphy.egg-info/top_level.txt +0 -0
struphy-3.5.0/PKG-INFO ADDED
@@ -0,0 +1,298 @@
1
+ Metadata-Version: 2.4
2
+ Name: struphy
3
+ Version: 3.5.0
4
+ Summary: Multi-model plasma physics package
5
+ Author: Max Planck Institute for Plasma Physics
6
+ Author-email: stefan.possanner@ipp.mpg.de, max.lindqvist@ipp.mpg.de, eric.sonnendruecker@ipp.mpg.de
7
+ License: Copyright (c) 2019-2026, Struphy developers, Max Planck Institute for Plasma Physics
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
10
+ associated documentation files (the "Software"), to deal in the Software without restriction,
11
+ including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
12
+ and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
13
+ subject to the following conditions:
14
+
15
+ The above copyright notice and this permission notice shall be included in all copies or substantial
16
+ portions of the Software.
17
+
18
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
19
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
21
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ Project-URL: homepage, https://struphy-hub.github.io/struphy/index.html
24
+ Project-URL: documentation, https://struphy-hub.github.io/struphy/index.html
25
+ Project-URL: repository, https://github.com/struphy-hub/struphy
26
+ Project-URL: changelog, https://github.com/struphy-hub/struphy/blob/devel/CHANGELOG.md
27
+ Project-URL: Bug Tracker, https://github.com/struphy-hub/struphy/issues
28
+ Keywords: plasma physics, fusion, numerical modeling, partial differential equations, energetic particles
29
+ Classifier: Programming Language :: Python :: 3
30
+ Requires-Python: >=3.10
31
+ Description-Content-Type: text/markdown
32
+ License-File: LICENSE
33
+ Requires-Dist: numpy<=2.5.0
34
+ Requires-Dist: cunumpy<=0.7.0,>=0.6.3
35
+ Requires-Dist: pyccel<=2.2.3,>=2.2.0
36
+ Requires-Dist: maybempi>=0.1.2
37
+ Requires-Dist: feectools<=0.9.0,>=0.9.0
38
+ Requires-Dist: scipy<=1.18.0
39
+ Requires-Dist: h5py<=3.16.0
40
+ Requires-Dist: h5netcdf<=1.8.1
41
+ Requires-Dist: xarray<=2026.9.0
42
+ Requires-Dist: matplotlib<=3.11.0
43
+ Requires-Dist: pyyaml<=6.0.3
44
+ Requires-Dist: vtk<=9.7.0
45
+ Requires-Dist: tqdm<=4.70.0
46
+ Requires-Dist: argcomplete<=3.7.0
47
+ Requires-Dist: ipywidgets<=8.1.8
48
+ Requires-Dist: plotly<=7.1.0
49
+ Requires-Dist: pyvista<=0.49.0
50
+ Requires-Dist: trame<=4.0.0
51
+ Requires-Dist: trame-vtk<=2.11.8
52
+ Requires-Dist: trame-vuetify<=3.3.0
53
+ Requires-Dist: nest_asyncio2<=1.7.2
54
+ Requires-Dist: vtk<=9.7.0
55
+ Requires-Dist: pytest<=9.1.0
56
+ Requires-Dist: pytest-mpi<=0.6
57
+ Requires-Dist: pytest-testmon<=2.2.0
58
+ Requires-Dist: ruff==0.16.10
59
+ Requires-Dist: line_profiler<=5.0.2
60
+ Requires-Dist: scope-profiler<=0.7.3,>=0.5.0
61
+ Provides-Extra: mpi
62
+ Requires-Dist: mpi4py<=4.1.1; extra == "mpi"
63
+ Provides-Extra: gpu
64
+ Requires-Dist: cupy-cuda12x; extra == "gpu"
65
+ Provides-Extra: phys
66
+ Requires-Dist: gvec<=1.5.0,>=1.1.0; extra == "phys"
67
+ Requires-Dist: desc-opt<=0.17.1; extra == "phys"
68
+ Provides-Extra: pproc
69
+ Requires-Dist: plasma-plots>=0.1.0; extra == "pproc"
70
+ Provides-Extra: dev
71
+ Requires-Dist: struphy[mpi]; extra == "dev"
72
+ Requires-Dist: struphy[pproc]; extra == "dev"
73
+ Requires-Dist: notebook; extra == "dev"
74
+ Requires-Dist: pre-commit; extra == "dev"
75
+ Requires-Dist: nbstripout; extra == "dev"
76
+ Requires-Dist: tomli-w; extra == "dev"
77
+ Requires-Dist: kaleido; extra == "dev"
78
+ Requires-Dist: pandas; extra == "dev"
79
+ Requires-Dist: scope-profiler[pproc]; extra == "dev"
80
+ Requires-Dist: slurm-script-generator>=0.3.6; extra == "dev"
81
+ Provides-Extra: doc
82
+ Requires-Dist: struphy[phys]; extra == "doc"
83
+ Requires-Dist: struphy[pproc]; extra == "doc"
84
+ Requires-Dist: jupyter; extra == "doc"
85
+ Requires-Dist: nbconvert; extra == "doc"
86
+ Requires-Dist: ipykernel; extra == "doc"
87
+ Requires-Dist: sphinx; extra == "doc"
88
+ Requires-Dist: sphinx-design; extra == "doc"
89
+ Requires-Dist: lxml_html_clean; extra == "doc"
90
+ Requires-Dist: sphinxcontrib-napoleon; extra == "doc"
91
+ Requires-Dist: sphinx-copybutton; extra == "doc"
92
+ Requires-Dist: sphinx-collections; extra == "doc"
93
+ Requires-Dist: pydata-sphinx-theme; extra == "doc"
94
+ Requires-Dist: nbsphinx; extra == "doc"
95
+ Requires-Dist: m2r2; extra == "doc"
96
+ Requires-Dist: myst-parser; extra == "doc"
97
+ Requires-Dist: docutils; extra == "doc"
98
+ Requires-Dist: ipyparallel; extra == "doc"
99
+ Requires-Dist: scope-profiler[pproc]; extra == "doc"
100
+ Provides-Extra: likwid
101
+ Requires-Dist: struphy[dev]; extra == "likwid"
102
+ Requires-Dist: pylikwid; extra == "likwid"
103
+ Provides-Extra: all
104
+ Requires-Dist: struphy[phys]; extra == "all"
105
+ Requires-Dist: struphy[pproc]; extra == "all"
106
+ Requires-Dist: struphy[dev]; extra == "all"
107
+ Requires-Dist: struphy[mpi]; extra == "all"
108
+ Requires-Dist: struphy[doc]; extra == "all"
109
+ Requires-Dist: struphy[likwid]; extra == "all"
110
+ Dynamic: license-file
111
+
112
+
113
+
114
+ ![STRUPHY Header](https://raw.githubusercontent.com/struphy-hub/.github/refs/heads/main/profile/struphy_header_with_subs.png)
115
+
116
+ <p>
117
+
118
+ <a href="https://github.com/struphy-hub/struphy/releases"><img src="https://img.shields.io/github/v/release/struphy-hub/struphy?label=Release" alt="Release"></a> <a href="https://github.com/struphy-hub/struphy/blob/devel/LICENSE"><img src="https://img.shields.io/badge/License-MIT-violet" alt="License"></a> <a href="https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main"><img src="https://img.shields.io/badge/launch-tutorials-579ACA.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAMAAABi1XidAAAB8lBMVEX///9XmsrmZYH1olJXmsr1olJXmsrmZYH1olJXmsr1olJXmsrmZYH1olL1olJXmsr1olJXmsrmZYH1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olJXmsrmZYH1olL1olL0nFf1olJXmsrmZYH1olJXmsq8dZb1olJXmsrmZYH1olJXmspXmspXmsr1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olLeaIVXmsrmZYH1olL1olL1olJXmsrmZYH1olLna31Xmsr1olJXmsr1olJXmsrmZYH1olLqoVr1olJXmsr1olJXmsrmZYH1olL1olKkfaPobXvviGabgadXmsqThKuofKHmZ4Dobnr1olJXmsr1olJXmspXmsr1olJXmsrfZ4TuhWn1olL1olJXmsqBi7X1olJXmspZmslbmMhbmsdemsVfl8ZgmsNim8Jpk8F0m7R4m7F5nLB6jbh7jbiDirOEibOGnKaMhq+PnaCVg6qWg6qegKaff6WhnpKofKGtnomxeZy3noG6dZi+n3vCcpPDcpPGn3bLb4/Mb47UbIrVa4rYoGjdaIbeaIXhoWHmZYHobXvpcHjqdHXreHLroVrsfG/uhGnuh2bwj2Hxk17yl1vzmljzm1j0nlX1olL3AJXWAAAAbXRSTlMAEBAQHx8gICAuLjAwMDw9PUBAQEpQUFBXV1hgYGBkcHBwcXl8gICAgoiIkJCQlJicnJ2goKCmqK+wsLC4usDAwMjP0NDQ1NbW3Nzg4ODi5+3v8PDw8/T09PX29vb39/f5+fr7+/z8/Pz9/v7+zczCxgAABC5JREFUeAHN1ul3k0UUBvCb1CTVpmpaitAGSLSpSuKCLWpbTKNJFGlcSMAFF63iUmRccNG6gLbuxkXU66JAUef/9LSpmXnyLr3T5AO/rzl5zj137p136BISy44fKJXuGN/d19PUfYeO67Znqtf2KH33Id1psXoFdW30sPZ1sMvs2D060AHqws4FHeJojLZqnw53cmfvg+XR8mC0OEjuxrXEkX5ydeVJLVIlV0e10PXk5k7dYeHu7Cj1j+49uKg7uLU61tGLw1lq27ugQYlclHC4bgv7VQ+TAyj5Zc/UjsPvs1sd5cWryWObtvWT2EPa4rtnWW3JkpjggEpbOsPr7F7EyNewtpBIslA7p43HCsnwooXTEc3UmPmCNn5lrqTJxy6nRmcavGZVt/3Da2pD5NHvsOHJCrdc1G2r3DITpU7yic7w/7Rxnjc0kt5GC4djiv2Sz3Fb2iEZg41/ddsFDoyuYrIkmFehz0HR2thPgQqMyQYb2OtB0WxsZ3BeG3+wpRb1vzl2UYBog8FfGhttFKjtAclnZYrRo9ryG9uG/FZQU4AEg8ZE9LjGMzTmqKXPLnlWVnIlQQTvxJf8ip7VgjZjyVPrjw1te5otM7RmP7xm+sK2Gv9I8Gi++BRbEkR9EBw8zRUcKxwp73xkaLiqQb+kGduJTNHG72zcW9LoJgqQxpP3/Tj//c3yB0tqzaml05/+orHLksVO+95kX7/7qgJvnjlrfr2Ggsyx0eoy9uPzN5SPd86aXggOsEKW2Prz7du3VID3/tzs/sSRs2w7ovVHKtjrX2pd7ZMlTxAYfBAL9jiDwfLkq55Tm7ifhMlTGPyCAs7RFRhn47JnlcB9RM5T97ASuZXIcVNuUDIndpDbdsfrqsOppeXl5Y+XVKdjFCTh+zGaVuj0d9zy05PPK3QzBamxdwtTCrzyg/2Rvf2EstUjordGwa/kx9mSJLr8mLLtCW8HHGJc2R5hS219IiF6PnTusOqcMl57gm0Z8kanKMAQg0qSyuZfn7zItsbGyO9QlnxY0eCuD1XL2ys/MsrQhltE7Ug0uFOzufJFE2PxBo/YAx8XPPdDwWN0MrDRYIZF0mSMKCNHgaIVFoBbNoLJ7tEQDKxGF0kcLQimojCZopv0OkNOyWCCg9XMVAi7ARJzQdM2QUh0gmBozjc3Skg6dSBRqDGYSUOu66Zg+I2fNZs/M3/f/Grl/XnyF1Gw3VKCez0PN5IUfFLqvgUN4C0qNqYs5YhPL+aVZYDE4IpUk57oSFnJm4FyCqqOE0jhY2SMyLFoo56zyo6becOS5UVDdj7Vih0zp+tcMhwRpBeLyqtIjlJKAIZSbI8SGSF3k0pA3mR5tHuwPFoa7N7reoq2bqCsAk1HqCu5uvI1n6JuRXI+S1Mco54YmYTwcn6Aeic+kssXi8XpXC4V3t7/ADuTNKaQJdScAAAAAElFTkSuQmCC" alt="badge"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml/badge.svg" alt="Ubuntu latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml/badge.svg" alt="MacOS latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml/badge.svg" alt="ruff"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/v/struphy?label=PyPI" alt="PyPI"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/dm/struphy.svg?label=PyPI%20downloads" alt="PyPI Downloads"></a>
119
+ </p>
120
+
121
+ # Welcome!
122
+
123
+ **This is a Python package for solving partial differential equations (PDEs) mainly - but not exclusively - for plasma physics.**
124
+
125
+ **STRUPHY** stands for **STRU**cture-**P**reserving **HY**brid code (or **STRU**cture-preserving **PHY**sics code). The package provides off-the-shelf models for plasma physics problems, such as
126
+
127
+ - Maxwell’s equations
128
+ - Magneto-hydrodynamics (MHD)
129
+ - Multi-fluid models
130
+ - Vlasov-Poisson and Vlasov-Maxwell kinetic models
131
+ - Drift-kinetic models for strongly magnetized plasma
132
+ - MHD-kinetic hybrid models
133
+
134
+ All models can be run on multiple cores through MPI (distributed memory) and OpenMP (shared memory). The compute-intensive parts of the code are translated and compiled (“transpiled”) using [pyccel](https://github.com/pyccel/pyccel), giving you the speed of Fortran or C while working within the familiar Python environment.
135
+
136
+ Explore Struphy on its website **[struphy-hub.github.io](https://struphy-hub.github.io/)**: the models and their equations, the numerical methods, domains, equilibria and a gallery of examples.
137
+
138
+ The code is freely available under an [MIT license](https://github.com/struphy-hub/struphy/blob/devel/LICENSE) - Copyright (c) 2019-2026, Struphy developers, Max Planck Institute for Plasma Physics.
139
+
140
+ ![Max Planck Institute Logo](https://raw.githubusercontent.com/struphy-hub/.github/refs/heads/main/profile/MPI_PP_Logo_Vertical_E_green_rgb_centered.png)
141
+
142
+ ## Quick install
143
+
144
+ Struphy is available on [PyPI](https://pypi.org/project/struphy/), so you can install it with pip:
145
+
146
+ pip install -U struphy
147
+ struphy compile -j 4
148
+
149
+ `-j 4` compiles the kernels in parallel on four cores. In case you face troubles with install/compile:
150
+
151
+ 1. check the [prerequisites](https://struphy-hub.github.io/struphy/sections/install.html#requirements)
152
+ 2. visit [trouble shooting](https://struphy-hub.github.io/struphy/sections/install.html#trouble-shooting)
153
+
154
+ ## Examples
155
+
156
+ Ready-to-run simulations, each with a parameter file and a post-processing script, are in the repository [struphy-examples](https://github.com/struphy-hub/struphy-examples), one folder per model and case. Its tags match the Struphy releases, so clone the tag of your installed version (`struphy --version`), for example
157
+
158
+ ```
159
+ git clone --branch vX.Y.Z https://github.com/struphy-hub/struphy-examples.git
160
+ cd struphy-examples/VlasovAmpereOneSpecies/two_stream
161
+ python params_two_stream.py
162
+ python pproc_two_stream.py
163
+ ```
164
+
165
+ ![Two-stream instability: phase space of the electrons at t = 0, 25 and 50](doc/pics/readme_two_stream.png)
166
+
167
+ *Two-stream instability: the electron distribution function f(x, v) at t = 0, 25 and 50, computed with the model [VlasovAmpereOneSpecies](https://struphy-hub.github.io/models/vlasov-ampere-one-species/) in a FEEC-PIC discretization (particle-in-cell markers for the electrons, finite element exterior calculus splines for the electric field). Two counter-streaming beams roll up into a phase-space vortex.*
168
+
169
+ To look at finished examples and their results without running anything, browse the [examples gallery](https://struphy-hub.github.io/examples/) on the Struphy website.
170
+
171
+ ## AI coding agents
172
+
173
+ Struphy ships a usage guide for AI coding agents (Claude Code, Codex, Copilot, Cursor, ...) that matches your installed version. It explains how to set up, run and post-process simulations. Print it with
174
+
175
+ ```
176
+ struphy agents
177
+ ```
178
+
179
+ To make it available in your own project, run this in the project folder:
180
+
181
+ ```
182
+ struphy agents --install
183
+ ```
184
+
185
+ This copies the Struphy skills (`setup-simulation`, `postprocess-simulation`) to `.claude/skills/` and adds a short pointer to the guide to `AGENTS.md` and `CLAUDE.md`, so your agent finds it automatically. Run it again after upgrading Struphy. Developers changing Struphy itself find the coding guidelines in [AGENTS.md](https://github.com/struphy-hub/struphy/blob/devel/AGENTS.md).
186
+
187
+ ## Available models
188
+
189
+ Check the list of currently [available models](https://struphy-hub.github.io/struphy/sections/models.html). If you want to see a particular model implemented, please let us know via [issues](https://github.com/struphy-hub/struphy/issues).
190
+
191
+ ## Documentation
192
+
193
+ The doc is on [Github pages](https://struphy-hub.github.io/struphy/index.html), we recommend in particular to visit:
194
+
195
+ - [Website](https://struphy-hub.github.io/) (overview of models, numerics and examples)
196
+ - [Install](https://struphy-hub.github.io/struphy/sections/install.html)
197
+ - [Userguide](https://struphy-hub.github.io/struphy/sections/userguide.html)
198
+ - [Available models](https://struphy-hub.github.io/struphy/sections/models.html)
199
+ - [Numerical methods](https://struphy-hub.github.io/struphy/sections/numerics.html)
200
+
201
+ ## Example: solve Maxwell’s equations
202
+
203
+ Use the command line to generate a default launch file:
204
+
205
+ struphy params Maxwell
206
+
207
+ This will create `params_Maxwell.py` in your current working directory (cwd). You can open the file and - if you feel like it already - change some parameters. Start the simulation with
208
+
209
+ python params_Maxwell.py
210
+
211
+ The default output is in `sim_1/` in your cwd. You can change the output path via the class `EnvironmentOptions` in the parameter file.
212
+
213
+ For plots and diagnostics of the output, install [plasma-plots](https://struphy-hub.github.io/plasma-plots) with `pip install "struphy[pproc]"`; `Output` loads it automatically, adding `out.plot`, `out.analysis` and `.plasma.plot` on every product.
214
+
215
+ Parallel simulations are run for example with
216
+
217
+ pip install -U mpi4py
218
+ mpirun -n 4 python params_Maxwell.py
219
+
220
+ You can also put the run command in a batch script.
221
+
222
+ ## Python API
223
+
224
+ Try out the Python API in a Jupyter notebook or any Python environment. For example, you can create a simulation object and show the domain and equilibrium magnetic field of the linear MHD model via
225
+
226
+ ``` python
227
+ from struphy import (
228
+ Simulation,
229
+ domains,
230
+ equils,
231
+ )
232
+ from struphy.models import LinearMHD
233
+
234
+ model = LinearMHD()
235
+
236
+ domain = domains.DESCunit()
237
+ equil = equils.DESCequilibrium(use_nfp=False)
238
+
239
+ sim = Simulation(
240
+ model=model,
241
+ domain=domain,
242
+ equil=equil,
243
+ )
244
+
245
+ sim.show_domain(scalars="absB0", window_size = (850, 250), zoom_factor=2.0)
246
+ ```
247
+
248
+ ![](README_files/figure-commonmark/cell-2-output-1.png)
249
+
250
+ This will show the domain and equilibrium magnetic field of the linear MHD model. You can find more examples in the [documentation](https://struphy-hub.github.io/struphy/index.html).
251
+
252
+ ## Tutorials on Binder
253
+
254
+ Get familiar with Struphy right away on [mybinder](https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main) - no installation needed.
255
+
256
+ ## Docker
257
+
258
+ If you want to get started right away without installing anything, you can use the [Docker image](https://hub.docker.com/r/spossann/struphy) - just pull and run:
259
+
260
+ docker pull spossann/struphy:main
261
+ docker run -it --rm spossann/struphy:main
262
+ ls struphy_*
263
+
264
+ This will show three available Struphy environments, which you can activate for example via
265
+
266
+ source struphy_fortran_/env_fortran_/bin/activate
267
+
268
+ There is also a [Docker image with just the prerequisites](https://hub.docker.com/r/spossann/ubuntu-for-struphy) (on Ubuntu), so you can install and compile Struphy on top of it yourself:
269
+
270
+ docker pull spossann/ubuntu-for-struphy:main
271
+ docker run -it --rm spossann/ubuntu-for-struphy:main
272
+
273
+ ## Get in touch
274
+
275
+ - [Issues](https://github.com/struphy-hub/struphy/issues)
276
+ - [Discussions](https://github.com/struphy-hub/struphy/discussions)
277
+ - [@spossann](https://github.com/spossann) [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de) (Maintainer)
278
+ - [@max-models](https://github.com/max-models) [max.lindqvist@ipp.mpg.de](mailto:Max.Lindqvist@ipp.mpg.de) (Maintainer)
279
+ - [LinkedIn profile](https://www.linkedin.com/company/struphy/)
280
+
281
+ ## Publications
282
+
283
+ - D. Bell, M.C. Pinto, S. Possanner, E. Sonnendrücker,
284
+ [**The linearized Vlasov–Maxwell system as a Hamiltonian system**](https://doi.org/10.1016/j.jcp.2026.114765),
285
+ Journal of Computational Physics, Volume 555, 114765 (2026).
286
+
287
+ - V. Carlier, M.C. Pinto, [**Variational discretizations of ideal magnetohydrodynamics in smooth regime using structure-preserving finite elements**](https://doi.org/10.1016/j.jcp.2024.113647),
288
+ Journal of Computational Physics, Volume 523, 113647 (2025).
289
+
290
+ - Y. Li, M.C. Pinto, F. Holderied, S. Possanner, E. Sonnendrücker, [**Geometric Particle-In-Cell discretizations of a plasma hybrid model with kinetic ions and mass-less fluid electrons**](https://doi.org/10.1016/j.jcp.2023.112671), Journal of Computational Physics 498, 112671 (2023).
291
+
292
+ - 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, 263-271, Springer Nature Switzerland (2023).
293
+
294
+ - F. Holderied, S. Possanner, [**Magneto-hydrodynamic eigenvalue solver for axisymmetric equilibria based on smooth polar splines**](https://doi.org/10.1016/j.jcp.2022.111329), Journal of Computational Physics 464, 111329 (2022).
295
+
296
+ - F. Holderied, S. Possanner, X. Wang, [**MHD-kinetic hybrid code based on structure-preserving finite elements with particles-in-cell**](https://doi.org/10.1016/j.jcp.2021.110143), Journal of Computational Physics 433, 110143 (2021).
297
+
298
+ - F. Holderied, S. Possanner, A. Ratnani, X. Wang, [**Structure-preserving vs. standard particle-in-cell methods: The case of an electron hybrid model**](https://doi.org/10.1016/j.jcp.2019.109108), Journal of Computational Physics 402, 109108 (2020).
@@ -0,0 +1,187 @@
1
+
2
+
3
+ ![STRUPHY Header](https://raw.githubusercontent.com/struphy-hub/.github/refs/heads/main/profile/struphy_header_with_subs.png)
4
+
5
+ <p>
6
+
7
+ <a href="https://github.com/struphy-hub/struphy/releases"><img src="https://img.shields.io/github/v/release/struphy-hub/struphy?label=Release" alt="Release"></a> <a href="https://github.com/struphy-hub/struphy/blob/devel/LICENSE"><img src="https://img.shields.io/badge/License-MIT-violet" alt="License"></a> <a href="https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main"><img src="https://img.shields.io/badge/launch-tutorials-579ACA.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAMAAABi1XidAAAB8lBMVEX///9XmsrmZYH1olJXmsr1olJXmsrmZYH1olJXmsr1olJXmsrmZYH1olL1olJXmsr1olJXmsrmZYH1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olJXmsrmZYH1olL1olL0nFf1olJXmsrmZYH1olJXmsq8dZb1olJXmsrmZYH1olJXmspXmspXmsr1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olLeaIVXmsrmZYH1olL1olL1olJXmsrmZYH1olLna31Xmsr1olJXmsr1olJXmsrmZYH1olLqoVr1olJXmsr1olJXmsrmZYH1olL1olKkfaPobXvviGabgadXmsqThKuofKHmZ4Dobnr1olJXmsr1olJXmspXmsr1olJXmsrfZ4TuhWn1olL1olJXmsqBi7X1olJXmspZmslbmMhbmsdemsVfl8ZgmsNim8Jpk8F0m7R4m7F5nLB6jbh7jbiDirOEibOGnKaMhq+PnaCVg6qWg6qegKaff6WhnpKofKGtnomxeZy3noG6dZi+n3vCcpPDcpPGn3bLb4/Mb47UbIrVa4rYoGjdaIbeaIXhoWHmZYHobXvpcHjqdHXreHLroVrsfG/uhGnuh2bwj2Hxk17yl1vzmljzm1j0nlX1olL3AJXWAAAAbXRSTlMAEBAQHx8gICAuLjAwMDw9PUBAQEpQUFBXV1hgYGBkcHBwcXl8gICAgoiIkJCQlJicnJ2goKCmqK+wsLC4usDAwMjP0NDQ1NbW3Nzg4ODi5+3v8PDw8/T09PX29vb39/f5+fr7+/z8/Pz9/v7+zczCxgAABC5JREFUeAHN1ul3k0UUBvCb1CTVpmpaitAGSLSpSuKCLWpbTKNJFGlcSMAFF63iUmRccNG6gLbuxkXU66JAUef/9LSpmXnyLr3T5AO/rzl5zj137p136BISy44fKJXuGN/d19PUfYeO67Znqtf2KH33Id1psXoFdW30sPZ1sMvs2D060AHqws4FHeJojLZqnw53cmfvg+XR8mC0OEjuxrXEkX5ydeVJLVIlV0e10PXk5k7dYeHu7Cj1j+49uKg7uLU61tGLw1lq27ugQYlclHC4bgv7VQ+TAyj5Zc/UjsPvs1sd5cWryWObtvWT2EPa4rtnWW3JkpjggEpbOsPr7F7EyNewtpBIslA7p43HCsnwooXTEc3UmPmCNn5lrqTJxy6nRmcavGZVt/3Da2pD5NHvsOHJCrdc1G2r3DITpU7yic7w/7Rxnjc0kt5GC4djiv2Sz3Fb2iEZg41/ddsFDoyuYrIkmFehz0HR2thPgQqMyQYb2OtB0WxsZ3BeG3+wpRb1vzl2UYBog8FfGhttFKjtAclnZYrRo9ryG9uG/FZQU4AEg8ZE9LjGMzTmqKXPLnlWVnIlQQTvxJf8ip7VgjZjyVPrjw1te5otM7RmP7xm+sK2Gv9I8Gi++BRbEkR9EBw8zRUcKxwp73xkaLiqQb+kGduJTNHG72zcW9LoJgqQxpP3/Tj//c3yB0tqzaml05/+orHLksVO+95kX7/7qgJvnjlrfr2Ggsyx0eoy9uPzN5SPd86aXggOsEKW2Prz7du3VID3/tzs/sSRs2w7ovVHKtjrX2pd7ZMlTxAYfBAL9jiDwfLkq55Tm7ifhMlTGPyCAs7RFRhn47JnlcB9RM5T97ASuZXIcVNuUDIndpDbdsfrqsOppeXl5Y+XVKdjFCTh+zGaVuj0d9zy05PPK3QzBamxdwtTCrzyg/2Rvf2EstUjordGwa/kx9mSJLr8mLLtCW8HHGJc2R5hS219IiF6PnTusOqcMl57gm0Z8kanKMAQg0qSyuZfn7zItsbGyO9QlnxY0eCuD1XL2ys/MsrQhltE7Ug0uFOzufJFE2PxBo/YAx8XPPdDwWN0MrDRYIZF0mSMKCNHgaIVFoBbNoLJ7tEQDKxGF0kcLQimojCZopv0OkNOyWCCg9XMVAi7ARJzQdM2QUh0gmBozjc3Skg6dSBRqDGYSUOu66Zg+I2fNZs/M3/f/Grl/XnyF1Gw3VKCez0PN5IUfFLqvgUN4C0qNqYs5YhPL+aVZYDE4IpUk57oSFnJm4FyCqqOE0jhY2SMyLFoo56zyo6becOS5UVDdj7Vih0zp+tcMhwRpBeLyqtIjlJKAIZSbI8SGSF3k0pA3mR5tHuwPFoa7N7reoq2bqCsAk1HqCu5uvI1n6JuRXI+S1Mco54YmYTwcn6Aeic+kssXi8XpXC4V3t7/ADuTNKaQJdScAAAAAElFTkSuQmCC" alt="badge"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml/badge.svg" alt="Ubuntu latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml/badge.svg" alt="MacOS latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml/badge.svg" alt="ruff"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/v/struphy?label=PyPI" alt="PyPI"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/dm/struphy.svg?label=PyPI%20downloads" alt="PyPI Downloads"></a>
8
+ </p>
9
+
10
+ # Welcome!
11
+
12
+ **This is a Python package for solving partial differential equations (PDEs) mainly - but not exclusively - for plasma physics.**
13
+
14
+ **STRUPHY** stands for **STRU**cture-**P**reserving **HY**brid code (or **STRU**cture-preserving **PHY**sics code). The package provides off-the-shelf models for plasma physics problems, such as
15
+
16
+ - Maxwell’s equations
17
+ - Magneto-hydrodynamics (MHD)
18
+ - Multi-fluid models
19
+ - Vlasov-Poisson and Vlasov-Maxwell kinetic models
20
+ - Drift-kinetic models for strongly magnetized plasma
21
+ - MHD-kinetic hybrid models
22
+
23
+ All models can be run on multiple cores through MPI (distributed memory) and OpenMP (shared memory). The compute-intensive parts of the code are translated and compiled (“transpiled”) using [pyccel](https://github.com/pyccel/pyccel), giving you the speed of Fortran or C while working within the familiar Python environment.
24
+
25
+ Explore Struphy on its website **[struphy-hub.github.io](https://struphy-hub.github.io/)**: the models and their equations, the numerical methods, domains, equilibria and a gallery of examples.
26
+
27
+ The code is freely available under an [MIT license](https://github.com/struphy-hub/struphy/blob/devel/LICENSE) - Copyright (c) 2019-2026, Struphy developers, Max Planck Institute for Plasma Physics.
28
+
29
+ ![Max Planck Institute Logo](https://raw.githubusercontent.com/struphy-hub/.github/refs/heads/main/profile/MPI_PP_Logo_Vertical_E_green_rgb_centered.png)
30
+
31
+ ## Quick install
32
+
33
+ Struphy is available on [PyPI](https://pypi.org/project/struphy/), so you can install it with pip:
34
+
35
+ pip install -U struphy
36
+ struphy compile -j 4
37
+
38
+ `-j 4` compiles the kernels in parallel on four cores. In case you face troubles with install/compile:
39
+
40
+ 1. check the [prerequisites](https://struphy-hub.github.io/struphy/sections/install.html#requirements)
41
+ 2. visit [trouble shooting](https://struphy-hub.github.io/struphy/sections/install.html#trouble-shooting)
42
+
43
+ ## Examples
44
+
45
+ Ready-to-run simulations, each with a parameter file and a post-processing script, are in the repository [struphy-examples](https://github.com/struphy-hub/struphy-examples), one folder per model and case. Its tags match the Struphy releases, so clone the tag of your installed version (`struphy --version`), for example
46
+
47
+ ```
48
+ git clone --branch vX.Y.Z https://github.com/struphy-hub/struphy-examples.git
49
+ cd struphy-examples/VlasovAmpereOneSpecies/two_stream
50
+ python params_two_stream.py
51
+ python pproc_two_stream.py
52
+ ```
53
+
54
+ ![Two-stream instability: phase space of the electrons at t = 0, 25 and 50](doc/pics/readme_two_stream.png)
55
+
56
+ *Two-stream instability: the electron distribution function f(x, v) at t = 0, 25 and 50, computed with the model [VlasovAmpereOneSpecies](https://struphy-hub.github.io/models/vlasov-ampere-one-species/) in a FEEC-PIC discretization (particle-in-cell markers for the electrons, finite element exterior calculus splines for the electric field). Two counter-streaming beams roll up into a phase-space vortex.*
57
+
58
+ To look at finished examples and their results without running anything, browse the [examples gallery](https://struphy-hub.github.io/examples/) on the Struphy website.
59
+
60
+ ## AI coding agents
61
+
62
+ Struphy ships a usage guide for AI coding agents (Claude Code, Codex, Copilot, Cursor, ...) that matches your installed version. It explains how to set up, run and post-process simulations. Print it with
63
+
64
+ ```
65
+ struphy agents
66
+ ```
67
+
68
+ To make it available in your own project, run this in the project folder:
69
+
70
+ ```
71
+ struphy agents --install
72
+ ```
73
+
74
+ This copies the Struphy skills (`setup-simulation`, `postprocess-simulation`) to `.claude/skills/` and adds a short pointer to the guide to `AGENTS.md` and `CLAUDE.md`, so your agent finds it automatically. Run it again after upgrading Struphy. Developers changing Struphy itself find the coding guidelines in [AGENTS.md](https://github.com/struphy-hub/struphy/blob/devel/AGENTS.md).
75
+
76
+ ## Available models
77
+
78
+ Check the list of currently [available models](https://struphy-hub.github.io/struphy/sections/models.html). If you want to see a particular model implemented, please let us know via [issues](https://github.com/struphy-hub/struphy/issues).
79
+
80
+ ## Documentation
81
+
82
+ The doc is on [Github pages](https://struphy-hub.github.io/struphy/index.html), we recommend in particular to visit:
83
+
84
+ - [Website](https://struphy-hub.github.io/) (overview of models, numerics and examples)
85
+ - [Install](https://struphy-hub.github.io/struphy/sections/install.html)
86
+ - [Userguide](https://struphy-hub.github.io/struphy/sections/userguide.html)
87
+ - [Available models](https://struphy-hub.github.io/struphy/sections/models.html)
88
+ - [Numerical methods](https://struphy-hub.github.io/struphy/sections/numerics.html)
89
+
90
+ ## Example: solve Maxwell’s equations
91
+
92
+ Use the command line to generate a default launch file:
93
+
94
+ struphy params Maxwell
95
+
96
+ This will create `params_Maxwell.py` in your current working directory (cwd). You can open the file and - if you feel like it already - change some parameters. Start the simulation with
97
+
98
+ python params_Maxwell.py
99
+
100
+ The default output is in `sim_1/` in your cwd. You can change the output path via the class `EnvironmentOptions` in the parameter file.
101
+
102
+ For plots and diagnostics of the output, install [plasma-plots](https://struphy-hub.github.io/plasma-plots) with `pip install "struphy[pproc]"`; `Output` loads it automatically, adding `out.plot`, `out.analysis` and `.plasma.plot` on every product.
103
+
104
+ Parallel simulations are run for example with
105
+
106
+ pip install -U mpi4py
107
+ mpirun -n 4 python params_Maxwell.py
108
+
109
+ You can also put the run command in a batch script.
110
+
111
+ ## Python API
112
+
113
+ Try out the Python API in a Jupyter notebook or any Python environment. For example, you can create a simulation object and show the domain and equilibrium magnetic field of the linear MHD model via
114
+
115
+ ``` python
116
+ from struphy import (
117
+ Simulation,
118
+ domains,
119
+ equils,
120
+ )
121
+ from struphy.models import LinearMHD
122
+
123
+ model = LinearMHD()
124
+
125
+ domain = domains.DESCunit()
126
+ equil = equils.DESCequilibrium(use_nfp=False)
127
+
128
+ sim = Simulation(
129
+ model=model,
130
+ domain=domain,
131
+ equil=equil,
132
+ )
133
+
134
+ sim.show_domain(scalars="absB0", window_size = (850, 250), zoom_factor=2.0)
135
+ ```
136
+
137
+ ![](README_files/figure-commonmark/cell-2-output-1.png)
138
+
139
+ This will show the domain and equilibrium magnetic field of the linear MHD model. You can find more examples in the [documentation](https://struphy-hub.github.io/struphy/index.html).
140
+
141
+ ## Tutorials on Binder
142
+
143
+ Get familiar with Struphy right away on [mybinder](https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main) - no installation needed.
144
+
145
+ ## Docker
146
+
147
+ If you want to get started right away without installing anything, you can use the [Docker image](https://hub.docker.com/r/spossann/struphy) - just pull and run:
148
+
149
+ docker pull spossann/struphy:main
150
+ docker run -it --rm spossann/struphy:main
151
+ ls struphy_*
152
+
153
+ This will show three available Struphy environments, which you can activate for example via
154
+
155
+ source struphy_fortran_/env_fortran_/bin/activate
156
+
157
+ There is also a [Docker image with just the prerequisites](https://hub.docker.com/r/spossann/ubuntu-for-struphy) (on Ubuntu), so you can install and compile Struphy on top of it yourself:
158
+
159
+ docker pull spossann/ubuntu-for-struphy:main
160
+ docker run -it --rm spossann/ubuntu-for-struphy:main
161
+
162
+ ## Get in touch
163
+
164
+ - [Issues](https://github.com/struphy-hub/struphy/issues)
165
+ - [Discussions](https://github.com/struphy-hub/struphy/discussions)
166
+ - [@spossann](https://github.com/spossann) [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de) (Maintainer)
167
+ - [@max-models](https://github.com/max-models) [max.lindqvist@ipp.mpg.de](mailto:Max.Lindqvist@ipp.mpg.de) (Maintainer)
168
+ - [LinkedIn profile](https://www.linkedin.com/company/struphy/)
169
+
170
+ ## Publications
171
+
172
+ - D. Bell, M.C. Pinto, S. Possanner, E. Sonnendrücker,
173
+ [**The linearized Vlasov–Maxwell system as a Hamiltonian system**](https://doi.org/10.1016/j.jcp.2026.114765),
174
+ Journal of Computational Physics, Volume 555, 114765 (2026).
175
+
176
+ - V. Carlier, M.C. Pinto, [**Variational discretizations of ideal magnetohydrodynamics in smooth regime using structure-preserving finite elements**](https://doi.org/10.1016/j.jcp.2024.113647),
177
+ Journal of Computational Physics, Volume 523, 113647 (2025).
178
+
179
+ - Y. Li, M.C. Pinto, F. Holderied, S. Possanner, E. Sonnendrücker, [**Geometric Particle-In-Cell discretizations of a plasma hybrid model with kinetic ions and mass-less fluid electrons**](https://doi.org/10.1016/j.jcp.2023.112671), Journal of Computational Physics 498, 112671 (2023).
180
+
181
+ - 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, 263-271, Springer Nature Switzerland (2023).
182
+
183
+ - F. Holderied, S. Possanner, [**Magneto-hydrodynamic eigenvalue solver for axisymmetric equilibria based on smooth polar splines**](https://doi.org/10.1016/j.jcp.2022.111329), Journal of Computational Physics 464, 111329 (2022).
184
+
185
+ - F. Holderied, S. Possanner, X. Wang, [**MHD-kinetic hybrid code based on structure-preserving finite elements with particles-in-cell**](https://doi.org/10.1016/j.jcp.2021.110143), Journal of Computational Physics 433, 110143 (2021).
186
+
187
+ - F. Holderied, S. Possanner, A. Ratnani, X. Wang, [**Structure-preserving vs. standard particle-in-cell methods: The case of an electron hybrid model**](https://doi.org/10.1016/j.jcp.2019.109108), Journal of Computational Physics 402, 109108 (2020).