struphy 3.4.0__tar.gz → 3.6.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 (1165) hide show
  1. struphy-3.6.0/PKG-INFO +300 -0
  2. struphy-3.6.0/README.md +189 -0
  3. struphy-3.6.0/pyproject.toml +192 -0
  4. struphy-3.6.0/setup.cfg +10 -0
  5. struphy-3.6.0/src/struphy/__init__.py +247 -0
  6. struphy-3.6.0/src/struphy/agent_guides/USAGE.md +72 -0
  7. struphy-3.6.0/src/struphy/agent_guides/skills/postprocess-simulation/SKILL.md +101 -0
  8. struphy-3.6.0/src/struphy/agent_guides/skills/setup-simulation/SKILL.md +159 -0
  9. struphy-3.6.0/src/struphy/api/linear_algebra/__init__.py +3 -0
  10. struphy-3.6.0/src/struphy/api/models/__init__.py +97 -0
  11. struphy-3.6.0/src/struphy/api/tests/test_public_api.py +59 -0
  12. struphy-3.6.0/src/struphy/bsplines/bsplines_kernels.cuh +171 -0
  13. struphy-3.6.0/src/struphy/bsplines/evaluation_kernels_2d.cuh +29 -0
  14. struphy-3.6.0/src/struphy/bsplines/evaluation_kernels_3d.cuh +218 -0
  15. struphy-3.6.0/src/struphy/bsplines/evaluation_kernels_3d.py +1600 -0
  16. struphy-3.6.0/src/struphy/bsplines/kernels/__init__.py +9 -0
  17. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/__init__.py +10 -0
  18. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/eval_spline_mpi_markers_cuda.cu +33 -0
  19. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/eval_spline_mpi_markers_kernels.py +48 -0
  20. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/__init__.py +10 -0
  21. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/eval_spline_mpi_matrix_cuda.cu +37 -0
  22. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/eval_spline_mpi_matrix_kernels.py +56 -0
  23. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/__init__.py +10 -0
  24. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/eval_spline_mpi_sparse_meshgrid_cuda.cu +37 -0
  25. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/eval_spline_mpi_sparse_meshgrid_kernels.py +58 -0
  26. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/__init__.py +12 -0
  27. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/eval_spline_mpi_tensor_product_fixed_cuda.cu +56 -0
  28. struphy-3.6.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/eval_spline_mpi_tensor_product_fixed_kernels.py +82 -0
  29. struphy-3.6.0/src/struphy/bsplines/tests/test_bsplines_kers.py +210 -0
  30. struphy-3.6.0/src/struphy/bsplines/tests/test_eval_spline_mpi.py +804 -0
  31. struphy-3.6.0/src/struphy/bsplines/tests/test_evaluation_cuda.py +123 -0
  32. struphy-3.6.0/src/struphy/conftest.py +70 -0
  33. struphy-3.6.0/src/struphy/console/agents.py +111 -0
  34. struphy-3.6.0/src/struphy/console/build_init_files.py +169 -0
  35. struphy-3.6.0/src/struphy/console/compile.py +378 -0
  36. struphy-3.6.0/src/struphy/console/main.py +678 -0
  37. struphy-3.6.0/src/struphy/console/params.py +70 -0
  38. struphy-3.6.0/src/struphy/console/test.py +180 -0
  39. struphy-3.6.0/src/struphy/console/tests/test_agents.py +89 -0
  40. struphy-3.6.0/src/struphy/console/tests/test_compile.py +290 -0
  41. struphy-3.6.0/src/struphy/dependencies.py +138 -0
  42. struphy-3.6.0/src/struphy/examples/_draw_parallel.py +100 -0
  43. struphy-3.6.0/src/struphy/feec/basis_projection_ops.py +2446 -0
  44. struphy-3.6.0/src/struphy/feec/boundary_mass.py +587 -0
  45. struphy-3.6.0/src/struphy/feec/fused_derivatives.py +217 -0
  46. struphy-3.6.0/src/struphy/feec/fused_derivatives_cuda.cu +97 -0
  47. struphy-3.6.0/src/struphy/feec/kernels/__init__.py +17 -0
  48. struphy-3.6.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_1d/__init__.py +16 -0
  49. struphy-3.6.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_1d/assemble_dofs_for_weighted_basisfuns_1d_kernels.py +128 -0
  50. struphy-3.6.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_2d/__init__.py +16 -0
  51. struphy-3.6.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_2d/assemble_dofs_for_weighted_basisfuns_2d_kernels.py +186 -0
  52. struphy-3.6.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_3d/__init__.py +16 -0
  53. struphy-3.6.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_3d/assemble_dofs_for_weighted_basisfuns_3d_kernels.py +259 -0
  54. struphy-3.6.0/src/struphy/feec/kernels/hybrid_weight/__init__.py +10 -0
  55. struphy-3.6.0/src/struphy/feec/kernels/hybrid_weight/hybrid_weight_kernels.py +101 -0
  56. struphy-3.6.0/src/struphy/feec/kernels/kernel_1d_eval/__init__.py +16 -0
  57. struphy-3.6.0/src/struphy/feec/kernels/kernel_1d_eval/kernel_1d_eval_kernels.py +55 -0
  58. struphy-3.6.0/src/struphy/feec/kernels/kernel_1d_mat/__init__.py +16 -0
  59. struphy-3.6.0/src/struphy/feec/kernels/kernel_1d_mat/kernel_1d_mat_kernels.py +68 -0
  60. struphy-3.6.0/src/struphy/feec/kernels/kernel_1d_vec/__init__.py +16 -0
  61. struphy-3.6.0/src/struphy/feec/kernels/kernel_1d_vec/kernel_1d_vec_kernels.py +59 -0
  62. struphy-3.6.0/src/struphy/feec/kernels/kernel_2d_eval/__init__.py +16 -0
  63. struphy-3.6.0/src/struphy/feec/kernels/kernel_2d_eval/kernel_2d_eval_kernels.py +72 -0
  64. struphy-3.6.0/src/struphy/feec/kernels/kernel_2d_mat/__init__.py +16 -0
  65. struphy-3.6.0/src/struphy/feec/kernels/kernel_2d_mat/kernel_2d_mat_kernels.py +88 -0
  66. struphy-3.6.0/src/struphy/feec/kernels/kernel_2d_vec/__init__.py +16 -0
  67. struphy-3.6.0/src/struphy/feec/kernels/kernel_2d_vec/kernel_2d_vec_kernels.py +76 -0
  68. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_diag/__init__.py +16 -0
  69. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_diag/kernel_3d_diag_kernels.py +118 -0
  70. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_eval/__init__.py +16 -0
  71. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_eval/kernel_3d_eval_kernels.py +85 -0
  72. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_mat/__init__.py +22 -0
  73. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_mat/kernel_3d_mat_cuda.cu +92 -0
  74. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_mat/kernel_3d_mat_kernels.py +147 -0
  75. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_matrixfree/__init__.py +16 -0
  76. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_matrixfree/kernel_3d_matrixfree_kernels.py +173 -0
  77. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_vec/__init__.py +16 -0
  78. struphy-3.6.0/src/struphy/feec/kernels/kernel_3d_vec/kernel_3d_vec_kernels.py +96 -0
  79. struphy-3.6.0/src/struphy/feec/kernels/surface_kernel_3d_mat/__init__.py +16 -0
  80. struphy-3.6.0/src/struphy/feec/kernels/surface_kernel_3d_mat/surface_kernel_3d_mat_kernels.py +170 -0
  81. struphy-3.6.0/src/struphy/feec/kernels/surface_kernel_3d_vec/__init__.py +16 -0
  82. struphy-3.6.0/src/struphy/feec/kernels/surface_kernel_3d_vec/surface_kernel_3d_vec_kernels.py +91 -0
  83. struphy-3.6.0/src/struphy/feec/kron_band_pass_cuda.cu +35 -0
  84. struphy-3.6.0/src/struphy/feec/kronecker_block.py +397 -0
  85. struphy-3.6.0/src/struphy/feec/kronecker_mass.py +249 -0
  86. struphy-3.6.0/src/struphy/feec/linear_operators.py +318 -0
  87. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/__init__.py +9 -0
  88. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component/__init__.py +12 -0
  89. struphy-3.6.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
  90. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component_weighted/__init__.py +12 -0
  91. struphy-3.6.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
  92. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component/__init__.py +12 -0
  93. struphy-3.6.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
  94. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component_weighted/__init__.py +12 -0
  95. struphy-3.6.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
  96. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form/__init__.py +10 -0
  97. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form/get_dofs_local_3_form_kernels.py +46 -0
  98. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form_weighted/__init__.py +10 -0
  99. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form_weighted/get_dofs_local_3_form_weighted_kernels.py +76 -0
  100. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop/__init__.py +10 -0
  101. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop/solve_local_main_loop_kernels.py +90 -0
  102. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop_weighted/__init__.py +10 -0
  103. struphy-3.6.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop_weighted/solve_local_main_loop_weighted_kernels.py +173 -0
  104. struphy-3.6.0/src/struphy/feec/local_projectors_kernels.py +538 -0
  105. struphy-3.6.0/src/struphy/feec/mass.py +4108 -0
  106. struphy-3.6.0/src/struphy/feec/memory.py +71 -0
  107. struphy-3.6.0/src/struphy/feec/preconditioner.py +3111 -0
  108. struphy-3.6.0/src/struphy/feec/projectors.py +2239 -0
  109. struphy-3.6.0/src/struphy/feec/psydac_derham.py +4185 -0
  110. struphy-3.6.0/src/struphy/feec/tests/test_basis_ops.py +654 -0
  111. struphy-3.6.0/src/struphy/feec/tests/test_boundary_integrals.py +371 -0
  112. struphy-3.6.0/src/struphy/feec/tests/test_derham.py +160 -0
  113. struphy-3.6.0/src/struphy/feec/tests/test_derham_gpu.py +69 -0
  114. struphy-3.6.0/src/struphy/feec/tests/test_eval_field.py +596 -0
  115. struphy-3.6.0/src/struphy/feec/tests/test_field_init.py +1462 -0
  116. struphy-3.6.0/src/struphy/feec/tests/test_fused_derivatives.py +145 -0
  117. struphy-3.6.0/src/struphy/feec/tests/test_hiptmair_xu.py +114 -0
  118. struphy-3.6.0/src/struphy/feec/tests/test_kinetic_metric.py +74 -0
  119. struphy-3.6.0/src/struphy/feec/tests/test_kronecker_block.py +157 -0
  120. struphy-3.6.0/src/struphy/feec/tests/test_l2_projectors.py +408 -0
  121. struphy-3.6.0/src/struphy/feec/tests/test_local_projectors.py +1606 -0
  122. struphy-3.6.0/src/struphy/feec/tests/test_lowdim_nel_is_1.py +322 -0
  123. struphy-3.6.0/src/struphy/feec/tests/test_mass_matrices.py +1820 -0
  124. struphy-3.6.0/src/struphy/feec/tests/test_mass_reassembly.py +113 -0
  125. struphy-3.6.0/src/struphy/feec/tests/test_preconditioner_cupy.py +150 -0
  126. struphy-3.6.0/src/struphy/feec/tests/test_preconditioner_transpose.py +151 -0
  127. struphy-3.6.0/src/struphy/feec/tests/test_stiffness_preconditioner.py +432 -0
  128. struphy-3.6.0/src/struphy/feec/tests/test_toarray_struphy.py +139 -0
  129. struphy-3.6.0/src/struphy/feec/tests/test_tosparse_struphy.py +240 -0
  130. struphy-3.6.0/src/struphy/feec/tests/test_utilities_kernels.py +41 -0
  131. struphy-3.6.0/src/struphy/feec/tests/test_variational_utilities.py +52 -0
  132. struphy-3.6.0/src/struphy/feec/tests/test_weighted_average_projection.py +95 -0
  133. struphy-3.6.0/src/struphy/feec/tests/xx_test_preconds.py +116 -0
  134. struphy-3.6.0/src/struphy/feec/utilities.py +596 -0
  135. struphy-3.6.0/src/struphy/feec/utilities_kernels.py +123 -0
  136. struphy-3.6.0/src/struphy/feec/variational_utilities.py +2125 -0
  137. struphy-3.6.0/src/struphy/fields_background/equils.py +3441 -0
  138. struphy-3.6.0/src/struphy/fields_background/tests/test_equils_cupy.py +283 -0
  139. struphy-3.6.0/src/struphy/fields_background/tests/test_gvec_equil.py +53 -0
  140. struphy-3.6.0/src/struphy/fields_background/tests/test_mhd_equils.py +1052 -0
  141. struphy-3.6.0/src/struphy/geometry/base.py +2660 -0
  142. struphy-3.6.0/src/struphy/geometry/domains/colella/__init__.py +23 -0
  143. struphy-3.6.0/src/struphy/geometry/domains/colella/colella_cuda.cuh +49 -0
  144. struphy-3.6.0/src/struphy/geometry/domains/constants_cuda.cuh +5 -0
  145. struphy-3.6.0/src/struphy/geometry/domains/cuboid/__init__.py +23 -0
  146. struphy-3.6.0/src/struphy/geometry/domains/cuboid/cuboid_cuda.cuh +48 -0
  147. struphy-3.6.0/src/struphy/geometry/domains/desc_unit/__init__.py +23 -0
  148. struphy-3.6.0/src/struphy/geometry/domains/gvec_unit/__init__.py +23 -0
  149. struphy-3.6.0/src/struphy/geometry/domains/hollow_cylinder/__init__.py +23 -0
  150. struphy-3.6.0/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder_cuda.cuh +51 -0
  151. struphy-3.6.0/src/struphy/geometry/domains/hollow_torus/__init__.py +23 -0
  152. struphy-3.6.0/src/struphy/geometry/domains/hollow_torus/hollow_torus_cuda.cuh +101 -0
  153. struphy-3.6.0/src/struphy/geometry/domains/iga_polar_cylinder/__init__.py +23 -0
  154. struphy-3.6.0/src/struphy/geometry/domains/iga_polar_torus/__init__.py +23 -0
  155. struphy-3.6.0/src/struphy/geometry/domains/orthogonal/__init__.py +23 -0
  156. struphy-3.6.0/src/struphy/geometry/domains/orthogonal/orthogonal_cuda.cuh +48 -0
  157. struphy-3.6.0/src/struphy/geometry/domains/powered_elliptic_cylinder/__init__.py +23 -0
  158. struphy-3.6.0/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder_cuda.cuh +50 -0
  159. struphy-3.6.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/__init__.py +25 -0
  160. struphy-3.6.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder_cuda.cuh +62 -0
  161. struphy-3.6.0/src/struphy/geometry/domains/shafranov_shift_cylinder/__init__.py +23 -0
  162. struphy-3.6.0/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder_cuda.cuh +49 -0
  163. struphy-3.6.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/__init__.py +23 -0
  164. struphy-3.6.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder_cuda.cuh +49 -0
  165. struphy-3.6.0/src/struphy/geometry/domains/tokamak/__init__.py +23 -0
  166. struphy-3.6.0/src/struphy/geometry/domains/tokamak/tokamak.py +132 -0
  167. struphy-3.6.0/src/struphy/geometry/evaluation_kernels.cuh +530 -0
  168. struphy-3.6.0/src/struphy/geometry/evaluation_kernels.py +830 -0
  169. struphy-3.6.0/src/struphy/geometry/kernels/__init__.py +9 -0
  170. struphy-3.6.0/src/struphy/geometry/kernels/kernel_evaluate/__init__.py +10 -0
  171. struphy-3.6.0/src/struphy/geometry/kernels/kernel_evaluate/kernel_evaluate_cuda.cu +55 -0
  172. struphy-3.6.0/src/struphy/geometry/kernels/kernel_evaluate/kernel_evaluate_kernels.py +68 -0
  173. struphy-3.6.0/src/struphy/geometry/kernels/kernel_evaluate_pic/__init__.py +10 -0
  174. struphy-3.6.0/src/struphy/geometry/kernels/kernel_evaluate_pic/kernel_evaluate_pic_cuda.cu +81 -0
  175. struphy-3.6.0/src/struphy/geometry/kernels/kernel_evaluate_pic/kernel_evaluate_pic_kernels.py +79 -0
  176. struphy-3.6.0/src/struphy/geometry/kernels/kernel_pullpush/__init__.py +10 -0
  177. struphy-3.6.0/src/struphy/geometry/kernels/kernel_pullpush/kernel_pullpush_cuda.cu +62 -0
  178. struphy-3.6.0/src/struphy/geometry/kernels/kernel_pullpush/kernel_pullpush_kernels.py +81 -0
  179. struphy-3.6.0/src/struphy/geometry/kernels/kernel_pullpush_pic/__init__.py +10 -0
  180. struphy-3.6.0/src/struphy/geometry/kernels/kernel_pullpush_pic/kernel_pullpush_pic_cuda.cu +96 -0
  181. struphy-3.6.0/src/struphy/geometry/kernels/kernel_pullpush_pic/kernel_pullpush_pic_kernels.py +98 -0
  182. struphy-3.6.0/src/struphy/geometry/spline_mappings_kernels.cuh +334 -0
  183. struphy-3.6.0/src/struphy/geometry/tests/spline_mapping_cases.py +172 -0
  184. struphy-3.6.0/src/struphy/geometry/tests/test_domain.py +1294 -0
  185. struphy-3.6.0/src/struphy/geometry/transform_kernels.cuh +219 -0
  186. struphy-3.6.0/src/struphy/geometry/transform_kernels.py +328 -0
  187. struphy-3.6.0/src/struphy/geometry/utilities.py +511 -0
  188. struphy-3.6.0/src/struphy/initial/perturbations.py +2595 -0
  189. struphy-3.6.0/src/struphy/initial/tests/test_init_perturbations.py +396 -0
  190. struphy-3.6.0/src/struphy/io/options.py +412 -0
  191. struphy-3.6.0/src/struphy/io/output_handling.py +171 -0
  192. struphy-3.6.0/src/struphy/io/setup.py +175 -0
  193. struphy-3.6.0/src/struphy/kernel_arguments/array_view.cuh +58 -0
  194. struphy-3.6.0/src/struphy/kernel_arguments/local_projectors_args.cuh +32 -0
  195. struphy-3.6.0/src/struphy/kernel_arguments/local_projectors_args_cuda.py +91 -0
  196. struphy-3.6.0/src/struphy/kernel_arguments/pusher_args.cuh +51 -0
  197. struphy-3.6.0/src/struphy/kernel_arguments/pusher_args_cuda.py +152 -0
  198. struphy-3.6.0/src/struphy/kernel_arguments/pusher_args_kernels.py +177 -0
  199. struphy-3.6.0/src/struphy/kernel_arguments/spline_args.cuh +16 -0
  200. struphy-3.6.0/src/struphy/kernel_arguments/spline_args_cuda.py +39 -0
  201. struphy-3.6.0/src/struphy/kernel_arguments/spline_args_kernels.py +48 -0
  202. struphy-3.6.0/src/struphy/kinetic_background/base.py +1026 -0
  203. struphy-3.6.0/src/struphy/kinetic_background/maxwellians.py +872 -0
  204. struphy-3.6.0/src/struphy/kinetic_background/tests/test_base.py +166 -0
  205. struphy-3.6.0/src/struphy/kinetic_background/tests/test_maxwellians.py +1829 -0
  206. struphy-3.6.0/src/struphy/linear_algebra/linalg_kernels.cuh +114 -0
  207. struphy-3.6.0/src/struphy/linear_algebra/multigrid/coarsen.py +181 -0
  208. struphy-3.6.0/src/struphy/linear_algebra/multigrid/hierarchy.py +106 -0
  209. struphy-3.6.0/src/struphy/linear_algebra/multigrid/preconditioner.py +445 -0
  210. struphy-3.6.0/src/struphy/linear_algebra/multigrid/smoothers.py +534 -0
  211. struphy-3.6.0/src/struphy/linear_algebra/multigrid/transfer.py +257 -0
  212. struphy-3.6.0/src/struphy/linear_algebra/schur_solver.py +443 -0
  213. struphy-3.6.0/src/struphy/linear_algebra/tests/test_multigrid_coarsen.py +184 -0
  214. struphy-3.6.0/src/struphy/linear_algebra/tests/test_multigrid_solver.py +281 -0
  215. struphy-3.6.0/src/struphy/linear_algebra/tests/test_multigrid_transfer.py +113 -0
  216. struphy-3.6.0/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +446 -0
  217. struphy-3.6.0/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +457 -0
  218. struphy-3.6.0/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +300 -0
  219. struphy-3.6.0/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +284 -0
  220. struphy-3.6.0/src/struphy/models/__init__.py +159 -0
  221. struphy-3.6.0/src/struphy/models/base.py +1502 -0
  222. struphy-3.6.0/src/struphy/models/cold_euler_sph.py +224 -0
  223. struphy-3.6.0/src/struphy/models/cold_plasma.py +232 -0
  224. struphy-3.6.0/src/struphy/models/cold_plasma_vlasov.py +335 -0
  225. struphy-3.6.0/src/struphy/models/curl_curl.py +182 -0
  226. struphy-3.6.0/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +320 -0
  227. struphy-3.6.0/src/struphy/models/drift_kinetic_maxwell.py +313 -0
  228. struphy-3.6.0/src/struphy/models/euler_sph.py +193 -0
  229. struphy-3.6.0/src/struphy/models/guiding_center.py +186 -0
  230. struphy-3.6.0/src/struphy/models/gyrokinetic_poisson.py +200 -0
  231. struphy-3.6.0/src/struphy/models/incompressible_navier_stokes_sph.py +250 -0
  232. struphy-3.6.0/src/struphy/models/linear_euler.py +269 -0
  233. struphy-3.6.0/src/struphy/models/linear_mhd.py +379 -0
  234. struphy-3.6.0/src/struphy/models/linear_mhd_driftkinetic_cc.py +344 -0
  235. struphy-3.6.0/src/struphy/models/linear_mhd_vlasov_cc.py +281 -0
  236. struphy-3.6.0/src/struphy/models/linear_mhd_vlasov_pc.py +236 -0
  237. struphy-3.6.0/src/struphy/models/linear_vlasov_ampere_one_species.py +286 -0
  238. struphy-3.6.0/src/struphy/models/linear_vlasov_maxwell_one_species.py +196 -0
  239. struphy-3.6.0/src/struphy/models/maxwell.py +165 -0
  240. struphy-3.6.0/src/struphy/models/poisson.py +193 -0
  241. struphy-3.6.0/src/struphy/models/scalars.py +420 -0
  242. struphy-3.6.0/src/struphy/models/shear_alfven.py +269 -0
  243. struphy-3.6.0/src/struphy/models/species.py +489 -0
  244. struphy-3.6.0/src/struphy/models/tests/gpu_e2e.py +263 -0
  245. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ColdEulerSPH.json +47 -0
  246. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ColdPlasma.json +83 -0
  247. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ColdPlasmaVlasov.json +103 -0
  248. struphy-3.6.0/src/struphy/models/tests/regression/baselines/CurlCurl.json +33 -0
  249. struphy-3.6.0/src/struphy/models/tests/regression/baselines/DeterministicParticleDiffusion.json +35 -0
  250. struphy-3.6.0/src/struphy/models/tests/regression/baselines/DriftKineticElectrostaticAdiabatic.json +71 -0
  251. struphy-3.6.0/src/struphy/models/tests/regression/baselines/DriftKineticMaxwell.json +99 -0
  252. struphy-3.6.0/src/struphy/models/tests/regression/baselines/EulerSPH.json +47 -0
  253. struphy-3.6.0/src/struphy/models/tests/regression/baselines/GuidingCenter.json +83 -0
  254. struphy-3.6.0/src/struphy/models/tests/regression/baselines/GyrokineticPoisson.json +31 -0
  255. struphy-3.6.0/src/struphy/models/tests/regression/baselines/HasegawaWakatani.json +35 -0
  256. struphy-3.6.0/src/struphy/models/tests/regression/baselines/IncompressibleNavierStokesSPH.json +49 -0
  257. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearEuler.json +95 -0
  258. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearExtendedMHDuniform.json +145 -0
  259. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearMHD-b_space=Hcurl-projected=False.json +133 -0
  260. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearMHD-b_space=Hcurl-projected=True.json +133 -0
  261. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearMHD.json +133 -0
  262. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearMHDDriftkineticCC.json +175 -0
  263. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearMHDVlasovCC.json +163 -0
  264. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearMHDVlasovPC.json +163 -0
  265. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearVlasovAmpereOneSpecies.json +75 -0
  266. struphy-3.6.0/src/struphy/models/tests/regression/baselines/LinearVlasovMaxwellOneSpecies.json +89 -0
  267. struphy-3.6.0/src/struphy/models/tests/regression/baselines/Maxwell.json +69 -0
  268. struphy-3.6.0/src/struphy/models/tests/regression/baselines/Poisson.json +33 -0
  269. struphy-3.6.0/src/struphy/models/tests/regression/baselines/RandomParticleDiffusion.json +35 -0
  270. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ShearAlfven-b_space=Hcurl-projected=False.json +105 -0
  271. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ShearAlfven-b_space=Hcurl-projected=True.json +105 -0
  272. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ShearAlfven.json +105 -0
  273. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ToyDrift.json +73 -0
  274. struphy-3.6.0/src/struphy/models/tests/regression/baselines/TwoFluidQuasiNeutralToy.json +20 -0
  275. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalBarotropicFluid.json +69 -0
  276. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalCompressibleFluid.json +71 -0
  277. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalMHD.json +121 -0
  278. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalMHD_with_p.json +113 -0
  279. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalMHD_with_q.json +113 -0
  280. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalPerturbativeMHD-linear-crank_nicolson=False.json +141 -0
  281. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalPerturbativeMHD-linear-crank_nicolson=True.json +141 -0
  282. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalPerturbativeMHD.json +141 -0
  283. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalPerturbativeMHD_with_q-linear-crank_nicolson=False.json +117 -0
  284. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalPerturbativeMHD_with_q-linear-crank_nicolson=True.json +117 -0
  285. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalPerturbativeMHD_with_q.json +117 -0
  286. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VariationalPressurelessFluid.json +45 -0
  287. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ViscousEulerSPH.json +47 -0
  288. struphy-3.6.0/src/struphy/models/tests/regression/baselines/ViscousFluid.json +95 -0
  289. struphy-3.6.0/src/struphy/models/tests/regression/baselines/Vlasov.json +47 -0
  290. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VlasovAmpereOneSpecies.json +75 -0
  291. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VlasovMaxwellOneSpecies.json +101 -0
  292. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VlasovMaxwellQuasiNeutral.json +101 -0
  293. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VlasovPauli.json +83 -0
  294. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VlasovPoissonAdiabatic.json +73 -0
  295. struphy-3.6.0/src/struphy/models/tests/regression/baselines/VlasovPoissonAdiabaticPauli.json +97 -0
  296. struphy-3.6.0/src/struphy/models/tests/regression/test_models.py +202 -0
  297. struphy-3.6.0/src/struphy/models/tests/regression/utils_regression.py +279 -0
  298. struphy-3.6.0/src/struphy/models/tests/test_diagnostics_on_device.py +346 -0
  299. struphy-3.6.0/src/struphy/models/tests/test_examples.py +86 -0
  300. struphy-3.6.0/src/struphy/models/tests/test_gpu_LinearVlasovAmpereOneSpecies.py +194 -0
  301. struphy-3.6.0/src/struphy/models/tests/test_gpu_VlasovAmpereOneSpecies.py +217 -0
  302. struphy-3.6.0/src/struphy/models/tests/test_scalars.py +195 -0
  303. struphy-3.6.0/src/struphy/models/tests/test_splitting_order.py +421 -0
  304. struphy-3.6.0/src/struphy/models/tests/test_variational_dissipation.py +51 -0
  305. struphy-3.6.0/src/struphy/models/tests/test_variational_divdiv.py +88 -0
  306. struphy-3.6.0/src/struphy/models/tests/utils_testing.py +207 -0
  307. struphy-3.6.0/src/struphy/models/tests/verification/spectrum_utils.py +36 -0
  308. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_CurlCurl.py +107 -0
  309. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_DriftKineticMaxwell.py +144 -0
  310. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_EulerSPH.py +163 -0
  311. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_IncompressibleNavierStokesSPH.py +487 -0
  312. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_LinearEuler.py +257 -0
  313. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_LinearMHD.py +129 -0
  314. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_LinearVlasovAmpereOneSpecies.py +274 -0
  315. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_Maxwell.py +281 -0
  316. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_Poisson.py +130 -0
  317. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +907 -0
  318. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +385 -0
  319. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_VlasovMaxwellOneSpecies.py +124 -0
  320. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_VlasovMaxwellQuasiNeutral.py +116 -0
  321. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_VlasovPauli.py +252 -0
  322. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_VlasovPoissonAdiabatic.py +214 -0
  323. struphy-3.6.0/src/struphy/models/tests/verification/test_verif_variational_linear_cn.py +189 -0
  324. struphy-3.6.0/src/struphy/models/tests/verification/variational_mhd_utils.py +224 -0
  325. struphy-3.6.0/src/struphy/models/toy_drift.py +277 -0
  326. struphy-3.6.0/src/struphy/models/utils.py +84 -0
  327. struphy-3.6.0/src/struphy/models/variables.py +1034 -0
  328. struphy-3.6.0/src/struphy/models/variational_compressible_fluid.py +284 -0
  329. struphy-3.6.0/src/struphy/models/variational_mhd.py +366 -0
  330. struphy-3.6.0/src/struphy/models/variational_mhd_with_p.py +320 -0
  331. struphy-3.6.0/src/struphy/models/variational_mhd_with_q.py +320 -0
  332. struphy-3.6.0/src/struphy/models/variational_perturbative_mhd.py +472 -0
  333. struphy-3.6.0/src/struphy/models/variational_perturbative_mhd_with_q.py +536 -0
  334. struphy-3.6.0/src/struphy/models/viscous_euler_sph.py +165 -0
  335. struphy-3.6.0/src/struphy/models/vlasov.py +327 -0
  336. struphy-3.6.0/src/struphy/models/vlasov_ampere_one_species.py +225 -0
  337. struphy-3.6.0/src/struphy/models/vlasov_maxwell_one_species.py +214 -0
  338. struphy-3.6.0/src/struphy/models/vlasov_maxwell_quasi_neutral.py +284 -0
  339. struphy-3.6.0/src/struphy/models/vlasov_pauli.py +256 -0
  340. struphy-3.6.0/src/struphy/models/vlasov_poisson_adiabatic.py +307 -0
  341. struphy-3.6.0/src/struphy/models/vlasov_poisson_adiabatic_pauli.py +259 -0
  342. struphy-3.6.0/src/struphy/ode/tests/test_ode_feec.py +192 -0
  343. struphy-3.6.0/src/struphy/physics/physics.py +152 -0
  344. struphy-3.6.0/src/struphy/pic/accumulation/filler_kernels.cuh +164 -0
  345. struphy-3.6.0/src/struphy/pic/accumulation/kernels/__init__.py +8 -0
  346. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D/__init__.py +10 -0
  347. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D/cc_lin_mhd_5d_D_kernels.py +218 -0
  348. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D_mf/__init__.py +10 -0
  349. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D_mf/cc_lin_mhd_5d_D_mf_kernels.py +110 -0
  350. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_M/__init__.py +10 -0
  351. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_M/cc_lin_mhd_5d_M_kernels.py +123 -0
  352. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb/__init__.py +10 -0
  353. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb/cc_lin_mhd_5d_curlb_kernels.py +220 -0
  354. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb_mf/__init__.py +10 -0
  355. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb_mf/cc_lin_mhd_5d_curlb_mf_kernels.py +113 -0
  356. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB/__init__.py +10 -0
  357. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB/cc_lin_mhd_5d_gradB_kernels.py +212 -0
  358. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg/__init__.py +10 -0
  359. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg/cc_lin_mhd_5d_gradB_dg_kernels.py +249 -0
  360. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg_init/__init__.py +10 -0
  361. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg_init/cc_lin_mhd_5d_gradB_dg_init_kernels.py +241 -0
  362. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1/__init__.py +10 -0
  363. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1/cc_lin_mhd_6d_1_kernels.py +197 -0
  364. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1_mf/__init__.py +10 -0
  365. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1_mf/cc_lin_mhd_6d_1_mf_kernels.py +101 -0
  366. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2/__init__.py +10 -0
  367. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2/cc_lin_mhd_6d_2_kernels.py +295 -0
  368. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2_mf/__init__.py +10 -0
  369. struphy-3.6.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2_mf/cc_lin_mhd_6d_2_mf_kernels.py +168 -0
  370. struphy-3.6.0/src/struphy/pic/accumulation/kernels/charge_density_0form/__init__.py +10 -0
  371. struphy-3.6.0/src/struphy/pic/accumulation/kernels/charge_density_0form/charge_density_0form_cuda.cu +37 -0
  372. struphy-3.6.0/src/struphy/pic/accumulation/kernels/charge_density_0form/charge_density_0form_kernels.py +63 -0
  373. struphy-3.6.0/src/struphy/pic/accumulation/kernels/div_u_weak_1form/__init__.py +10 -0
  374. struphy-3.6.0/src/struphy/pic/accumulation/kernels/div_u_weak_1form/div_u_weak_1form_kernels.py +82 -0
  375. struphy-3.6.0/src/struphy/pic/accumulation/kernels/dk_maxwell/__init__.py +10 -0
  376. struphy-3.6.0/src/struphy/pic/accumulation/kernels/dk_maxwell/dk_maxwell_kernels.py +156 -0
  377. struphy-3.6.0/src/struphy/pic/accumulation/kernels/dk_maxwell_mf/__init__.py +10 -0
  378. struphy-3.6.0/src/struphy/pic/accumulation/kernels/dk_maxwell_mf/dk_maxwell_mf_kernels.py +117 -0
  379. struphy-3.6.0/src/struphy/pic/accumulation/kernels/gc_density_0form/__init__.py +10 -0
  380. struphy-3.6.0/src/struphy/pic/accumulation/kernels/gc_density_0form/gc_density_0form_kernels.py +61 -0
  381. struphy-3.6.0/src/struphy/pic/accumulation/kernels/gc_mag_density_0form/__init__.py +10 -0
  382. struphy-3.6.0/src/struphy/pic/accumulation/kernels/gc_mag_density_0form/gc_mag_density_0form_kernels.py +59 -0
  383. struphy-3.6.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/__init__.py +10 -0
  384. struphy-3.6.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/linear_vlasov_ampere_cuda.cu +93 -0
  385. struphy-3.6.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/linear_vlasov_ampere_kernels.py +141 -0
  386. struphy-3.6.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere_mf/__init__.py +10 -0
  387. struphy-3.6.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere_mf/linear_vlasov_ampere_mf_kernels.py +100 -0
  388. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_asym_dot/__init__.py +10 -0
  389. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_asym_dot/marker_operator_asym_dot_kernels.py +79 -0
  390. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_pressure_dot/__init__.py +10 -0
  391. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_pressure_dot/marker_operator_pressure_dot_kernels.py +111 -0
  392. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_rank1_dot/__init__.py +10 -0
  393. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_rank1_dot/marker_operator_rank1_dot_kernels.py +82 -0
  394. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_symm_dot/__init__.py +10 -0
  395. struphy-3.6.0/src/struphy/pic/accumulation/kernels/marker_operator_symm_dot/marker_operator_symm_dot_kernels.py +80 -0
  396. struphy-3.6.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d/__init__.py +12 -0
  397. struphy-3.6.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d/pc_lin_mhd_6d_kernels.py +182 -0
  398. struphy-3.6.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_full/__init__.py +10 -0
  399. struphy-3.6.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_full/pc_lin_mhd_6d_full_kernels.py +205 -0
  400. struphy-3.6.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_mf/__init__.py +10 -0
  401. struphy-3.6.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_mf/pc_lin_mhd_6d_mf_kernels.py +125 -0
  402. struphy-3.6.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/__init__.py +10 -0
  403. struphy-3.6.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/vlasov_maxwell_cuda.cu +81 -0
  404. struphy-3.6.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/vlasov_maxwell_kernels.py +133 -0
  405. struphy-3.6.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell_mf/__init__.py +10 -0
  406. struphy-3.6.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell_mf/vlasov_maxwell_mf_kernels.py +83 -0
  407. struphy-3.6.0/src/struphy/pic/accumulation/particle_to_mat_kernels.cuh +106 -0
  408. struphy-3.6.0/src/struphy/pic/accumulation/particles_to_grid.py +910 -0
  409. struphy-3.6.0/src/struphy/pic/base.py +5475 -0
  410. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/__init__.py +9 -0
  411. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/canonical_kinetic_particles/__init__.py +10 -0
  412. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/canonical_kinetic_particles/canonical_kinetic_particles_kernels.py +100 -0
  413. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_5d/__init__.py +12 -0
  414. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_5d/eval_canonical_toroidal_moment_5d_kernels.py +57 -0
  415. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_6d/__init__.py +12 -0
  416. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_6d/eval_canonical_toroidal_moment_6d_kernels.py +55 -0
  417. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_energy_5d/__init__.py +10 -0
  418. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_energy_5d/eval_energy_5d_kernels.py +48 -0
  419. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_gradB_ediff/__init__.py +10 -0
  420. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_gradB_ediff/eval_gradB_ediff_kernels.py +107 -0
  421. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_guiding_center_from_6d/__init__.py +10 -0
  422. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_guiding_center_from_6d/eval_guiding_center_from_6d_kernels.py +120 -0
  423. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_background_energy/__init__.py +10 -0
  424. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_background_energy/eval_magnetic_background_energy_kernels.py +65 -0
  425. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_energy_PBb/__init__.py +10 -0
  426. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_energy_PBb/eval_magnetic_energy_PBb_kernels.py +75 -0
  427. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_moment_5d/__init__.py +10 -0
  428. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_moment_5d/eval_magnetic_moment_5d_kernels.py +47 -0
  429. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/thermal_energy/__init__.py +10 -0
  430. struphy-3.6.0/src/struphy/pic/diagnostics/kernels/thermal_energy/thermal_energy_kernels.py +112 -0
  431. struphy-3.6.0/src/struphy/pic/kernels/__init__.py +10 -0
  432. struphy-3.6.0/src/struphy/pic/kernels/box_and_sort_particles/__init__.py +16 -0
  433. struphy-3.6.0/src/struphy/pic/kernels/box_and_sort_particles/box_and_sort_particles_kernels.py +43 -0
  434. struphy-3.6.0/src/struphy/pic/kernels/box_particles/__init__.py +16 -0
  435. struphy-3.6.0/src/struphy/pic/kernels/box_particles/box_particles_kernels.py +29 -0
  436. struphy-3.6.0/src/struphy/pic/kernels/fill_boxes/__init__.py +16 -0
  437. struphy-3.6.0/src/struphy/pic/kernels/fill_boxes/fill_boxes_kernels.py +24 -0
  438. struphy-3.6.0/src/struphy/pic/kernels/sort_and_fill_boxes/__init__.py +16 -0
  439. struphy-3.6.0/src/struphy/pic/kernels/sort_and_fill_boxes/sort_and_fill_boxes_kernels.py +34 -0
  440. struphy-3.6.0/src/struphy/pic/marker_layout.py +35 -0
  441. struphy-3.6.0/src/struphy/pic/mpi_sort_cuda.cu +79 -0
  442. struphy-3.6.0/src/struphy/pic/mpi_sort_cuda.py +99 -0
  443. struphy-3.6.0/src/struphy/pic/particles.py +1164 -0
  444. struphy-3.6.0/src/struphy/pic/pushing/kernel_setup.py +94 -0
  445. struphy-3.6.0/src/struphy/pic/pushing/kernels/__init__.py +8 -0
  446. struphy-3.6.0/src/struphy/pic/pushing/kernels/bstar_2form/__init__.py +10 -0
  447. struphy-3.6.0/src/struphy/pic/pushing/kernels/bstar_2form/bstar_2form_kernels.py +103 -0
  448. struphy-3.6.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/__init__.py +10 -0
  449. struphy-3.6.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/bstar_parallel_3form_cuda.cu +78 -0
  450. struphy-3.6.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/bstar_parallel_3form_kernels.py +102 -0
  451. struphy-3.6.0/src/struphy/pic/pushing/kernels/driftkinetic_hamiltonian/__init__.py +10 -0
  452. struphy-3.6.0/src/struphy/pic/pushing/kernels/driftkinetic_hamiltonian/driftkinetic_hamiltonian_kernels.py +91 -0
  453. struphy-3.6.0/src/struphy/pic/pushing/kernels/grad_driftkinetic_hamiltonian/__init__.py +10 -0
  454. struphy-3.6.0/src/struphy/pic/pushing/kernels/grad_driftkinetic_hamiltonian/grad_driftkinetic_hamiltonian_kernels.py +111 -0
  455. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_H1vec/__init__.py +10 -0
  456. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_H1vec/push_bxu_H1vec_kernels.py +139 -0
  457. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_Hcurl/__init__.py +10 -0
  458. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_Hcurl/push_bxu_Hcurl_kernels.py +143 -0
  459. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv/__init__.py +10 -0
  460. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv/push_bxu_Hdiv_kernels.py +139 -0
  461. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv_pauli/__init__.py +10 -0
  462. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv_pauli/push_bxu_Hdiv_pauli_kernels.py +229 -0
  463. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_deterministic_diffusion_stage/__init__.py +12 -0
  464. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_deterministic_diffusion_stage/push_deterministic_diffusion_stage_kernels.py +140 -0
  465. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_eta_stage/__init__.py +10 -0
  466. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_eta_stage/push_eta_stage_cuda.cu +65 -0
  467. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_eta_stage/push_eta_stage_kernels.py +90 -0
  468. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order/__init__.py +12 -0
  469. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order/push_gc_Bstar_discrete_gradient_1st_order_kernels.py +193 -0
  470. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order_newton/__init__.py +12 -0
  471. struphy-3.6.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
  472. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_2nd_order/__init__.py +12 -0
  473. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_2nd_order/push_gc_Bstar_discrete_gradient_2nd_order_kernels.py +273 -0
  474. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_explicit_multistage/__init__.py +12 -0
  475. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_explicit_multistage/push_gc_Bstar_explicit_multistage_kernels.py +214 -0
  476. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_dg_1st_order_newton/__init__.py +12 -0
  477. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_dg_1st_order_newton/push_gc_bxEstar_dg_1st_order_newton_kernels.py +291 -0
  478. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_1st_order/__init__.py +12 -0
  479. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_1st_order/push_gc_bxEstar_discrete_gradient_1st_order_kernels.py +167 -0
  480. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_2nd_order/__init__.py +12 -0
  481. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_2nd_order/push_gc_bxEstar_discrete_gradient_2nd_order_kernels.py +223 -0
  482. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_explicit_multistage/__init__.py +12 -0
  483. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_explicit_multistage/push_gc_bxEstar_explicit_multistage_kernels.py +172 -0
  484. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_H1vec/__init__.py +10 -0
  485. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_H1vec/push_gc_cc_J1_H1vec_kernels.py +150 -0
  486. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hcurl/__init__.py +10 -0
  487. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hcurl/push_gc_cc_J1_Hcurl_kernels.py +157 -0
  488. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hdiv/__init__.py +10 -0
  489. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hdiv/push_gc_cc_J1_Hdiv_kernels.py +148 -0
  490. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_Hdiv/__init__.py +10 -0
  491. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_Hdiv/push_gc_cc_J2_dg_Hdiv_kernels.py +209 -0
  492. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_init_Hdiv/__init__.py +10 -0
  493. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_init_Hdiv/push_gc_cc_J2_dg_init_Hdiv_kernels.py +176 -0
  494. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_H1vec/__init__.py +10 -0
  495. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_H1vec/push_gc_cc_J2_stage_H1vec_kernels.py +212 -0
  496. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_Hdiv/__init__.py +10 -0
  497. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_Hdiv/push_gc_cc_J2_stage_Hdiv_kernels.py +213 -0
  498. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_GXu/__init__.py +10 -0
  499. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_GXu/push_pc_GXu_kernels.py +128 -0
  500. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_GXu_full/__init__.py +10 -0
  501. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_GXu_full/push_pc_GXu_full_kernels.py +139 -0
  502. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_H1vec/__init__.py +10 -0
  503. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_H1vec/push_pc_eta_stage_H1vec_kernels.py +140 -0
  504. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hcurl/__init__.py +10 -0
  505. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hcurl/push_pc_eta_stage_Hcurl_kernels.py +136 -0
  506. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hdiv/__init__.py +10 -0
  507. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hdiv/push_pc_eta_stage_Hdiv_kernels.py +137 -0
  508. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_random_diffusion_stage/__init__.py +10 -0
  509. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_random_diffusion_stage/push_random_diffusion_stage_kernels.py +58 -0
  510. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure/__init__.py +10 -0
  511. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure/push_v_sph_pressure_kernels.py +259 -0
  512. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure_ideal_gas/__init__.py +10 -0
  513. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure_ideal_gas/push_v_sph_pressure_ideal_gas_kernels.py +261 -0
  514. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_viscosity/__init__.py +10 -0
  515. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_viscosity/push_v_viscosity_kernels.py +156 -0
  516. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_with_efield/__init__.py +10 -0
  517. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_with_efield/push_v_with_efield_cuda.cu +60 -0
  518. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_with_efield/push_v_with_efield_kernels.py +112 -0
  519. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_with_efield_mu/__init__.py +10 -0
  520. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_v_with_efield_mu/push_v_with_efield_mu_kernels.py +136 -0
  521. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vpar_with_efield/__init__.py +10 -0
  522. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vpar_with_efield/push_vpar_with_efield_kernels.py +90 -0
  523. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/__init__.py +10 -0
  524. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/push_vxb_analytic_cuda.cu +89 -0
  525. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/push_vxb_analytic_kernels.py +133 -0
  526. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/__init__.py +10 -0
  527. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/push_vxb_implicit_cuda.cu +84 -0
  528. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/push_vxb_implicit_kernels.py +144 -0
  529. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/__init__.py +10 -0
  530. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/push_weights_with_efield_lin_va_cuda.cu +73 -0
  531. struphy-3.6.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/push_weights_with_efield_lin_va_kernels.py +124 -0
  532. struphy-3.6.0/src/struphy/pic/pushing/kernels/reflect/__init__.py +10 -0
  533. struphy-3.6.0/src/struphy/pic/pushing/kernels/reflect/reflect_cuda.cu +21 -0
  534. struphy-3.6.0/src/struphy/pic/pushing/kernels/reflect/reflect_kernels.py +77 -0
  535. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_isotherm_kappa/__init__.py +10 -0
  536. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_isotherm_kappa/sph_isotherm_kappa_kernels.py +28 -0
  537. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_mean_velocity_coeffs/__init__.py +10 -0
  538. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_mean_velocity_coeffs/sph_mean_velocity_coeffs_kernels.py +95 -0
  539. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_pressure_coeffs/__init__.py +10 -0
  540. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_pressure_coeffs/sph_pressure_coeffs_kernels.py +85 -0
  541. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_viscosity_tensor/__init__.py +10 -0
  542. struphy-3.6.0/src/struphy/pic/pushing/kernels/sph_viscosity_tensor/sph_viscosity_tensor_kernels.py +165 -0
  543. struphy-3.6.0/src/struphy/pic/pushing/kernels/unit_b_1form/__init__.py +10 -0
  544. struphy-3.6.0/src/struphy/pic/pushing/kernels/unit_b_1form/unit_b_1form_kernels.py +73 -0
  545. struphy-3.6.0/src/struphy/pic/pushing/prepare_push_cuda.cu +28 -0
  546. struphy-3.6.0/src/struphy/pic/pushing/pusher.py +473 -0
  547. struphy-3.6.0/src/struphy/pic/pushing/pusher_utilities_kernels.cuh +126 -0
  548. struphy-3.6.0/src/struphy/pic/pushing/pusher_utilities_kernels.py +239 -0
  549. struphy-3.6.0/src/struphy/pic/sampling_kernels.py +118 -0
  550. struphy-3.6.0/src/struphy/pic/sobol_seq.py +736 -0
  551. struphy-3.6.0/src/struphy/pic/sorting.py +401 -0
  552. struphy-3.6.0/src/struphy/pic/sorting_kernels.py +277 -0
  553. struphy-3.6.0/src/struphy/pic/sph/kernels/__init__.py +9 -0
  554. struphy-3.6.0/src/struphy/pic/sph/kernels/box_based_evaluation_flat/__init__.py +10 -0
  555. struphy-3.6.0/src/struphy/pic/sph/kernels/box_based_evaluation_flat/box_based_evaluation_flat_kernels.py +113 -0
  556. struphy-3.6.0/src/struphy/pic/sph/kernels/box_based_evaluation_meshgrid/__init__.py +10 -0
  557. struphy-3.6.0/src/struphy/pic/sph/kernels/box_based_evaluation_meshgrid/box_based_evaluation_meshgrid_kernels.py +128 -0
  558. struphy-3.6.0/src/struphy/pic/sph/kernels/naive_evaluation_flat/__init__.py +10 -0
  559. struphy-3.6.0/src/struphy/pic/sph/kernels/naive_evaluation_flat/naive_evaluation_flat_kernels.py +78 -0
  560. struphy-3.6.0/src/struphy/pic/sph/kernels/naive_evaluation_meshgrid/__init__.py +10 -0
  561. struphy-3.6.0/src/struphy/pic/sph/kernels/naive_evaluation_meshgrid/naive_evaluation_meshgrid_kernels.py +80 -0
  562. struphy-3.6.0/src/struphy/pic/sph_eval_kernels.py +217 -0
  563. struphy-3.6.0/src/struphy/pic/tests/_bench_push_vxb_analytic.py +91 -0
  564. struphy-3.6.0/src/struphy/pic/tests/bench_marker_layout.py +211 -0
  565. struphy-3.6.0/src/struphy/pic/tests/bench_openmp_speedup.py +99 -0
  566. struphy-3.6.0/src/struphy/pic/tests/cuda_emulation.py +130 -0
  567. struphy-3.6.0/src/struphy/pic/tests/cuda_parity_cases.py +445 -0
  568. struphy-3.6.0/src/struphy/pic/tests/kernel_test_args.py +227 -0
  569. struphy-3.6.0/src/struphy/pic/tests/test_accum_gc_gradB.py +77 -0
  570. struphy-3.6.0/src/struphy/pic/tests/test_accum_matrix_cupy.py +204 -0
  571. struphy-3.6.0/src/struphy/pic/tests/test_accum_pressure_coupling.py +70 -0
  572. struphy-3.6.0/src/struphy/pic/tests/test_accum_vec_H1.py +621 -0
  573. struphy-3.6.0/src/struphy/pic/tests/test_binning.py +1487 -0
  574. struphy-3.6.0/src/struphy/pic/tests/test_cuda_emulation.py +133 -0
  575. struphy-3.6.0/src/struphy/pic/tests/test_cuda_parity.py +163 -0
  576. struphy-3.6.0/src/struphy/pic/tests/test_device_helpers.py +455 -0
  577. struphy-3.6.0/src/struphy/pic/tests/test_draw_parallel.py +288 -0
  578. struphy-3.6.0/src/struphy/pic/tests/test_estimate_mem.py +110 -0
  579. struphy-3.6.0/src/struphy/pic/tests/test_kernel_backends.py +251 -0
  580. struphy-3.6.0/src/struphy/pic/tests/test_kernel_setup.py +302 -0
  581. struphy-3.6.0/src/struphy/pic/tests/test_load_external.py +43 -0
  582. struphy-3.6.0/src/struphy/pic/tests/test_marker_layout.py +277 -0
  583. struphy-3.6.0/src/struphy/pic/tests/test_mat_vec_filler.py +439 -0
  584. struphy-3.6.0/src/struphy/pic/tests/test_neighbor_ranks.py +145 -0
  585. struphy-3.6.0/src/struphy/pic/tests/test_openmp.py +155 -0
  586. struphy-3.6.0/src/struphy/pic/tests/test_pauli_particles.py +100 -0
  587. struphy-3.6.0/src/struphy/pic/tests/test_pole.py +372 -0
  588. struphy-3.6.0/src/struphy/pic/tests/test_pusher_openmp_speedup.py +100 -0
  589. struphy-3.6.0/src/struphy/pic/tests/test_pushers.py +861 -0
  590. struphy-3.6.0/src/struphy/pic/tests/test_reflect.py +89 -0
  591. struphy-3.6.0/src/struphy/pic/tests/test_set_zero_velocity.py +263 -0
  592. struphy-3.6.0/src/struphy/pic/tests/test_sorting.py +341 -0
  593. struphy-3.6.0/src/struphy/pic/tests/test_sorting_device.py +326 -0
  594. struphy-3.6.0/src/struphy/pic/tests/test_sph.py +2188 -0
  595. struphy-3.6.0/src/struphy/pic/tests/test_tesselation.py +189 -0
  596. struphy-3.6.0/src/struphy/pic/tests/test_utilities.py +45 -0
  597. struphy-3.6.0/src/struphy/pic/utilities.py +77 -0
  598. struphy-3.6.0/src/struphy/pic/utilities_kernels.py +121 -0
  599. struphy-3.6.0/src/struphy/polar/basic.py +567 -0
  600. struphy-3.6.0/src/struphy/polar/extraction_operators.py +943 -0
  601. struphy-3.6.0/src/struphy/polar/kron_2dx1d.py +1287 -0
  602. struphy-3.6.0/src/struphy/polar/linear_operators.py +1043 -0
  603. struphy-3.6.0/src/struphy/polar/tests/test_factorization_cache.py +176 -0
  604. struphy-3.6.0/src/struphy/polar/tests/test_polar.py +869 -0
  605. struphy-3.6.0/src/struphy/polar/tests/test_polar_cupy.py +429 -0
  606. struphy-3.6.0/src/struphy/post_processing/manifest.py +107 -0
  607. struphy-3.6.0/src/struphy/post_processing/orbits/orbits_tools.py +217 -0
  608. struphy-3.6.0/src/struphy/post_processing/output.py +2780 -0
  609. struphy-3.6.0/src/struphy/post_processing/particle_diagnostics.py +156 -0
  610. struphy-3.6.0/src/struphy/post_processing/plot_3d.py +425 -0
  611. struphy-3.6.0/src/struphy/post_processing/slices.py +301 -0
  612. struphy-3.6.0/src/struphy/post_processing/tests/test_eval_grids_mpi.py +243 -0
  613. struphy-3.6.0/src/struphy/post_processing/tests/test_orbits_tools.py +56 -0
  614. struphy-3.6.0/src/struphy/post_processing/tests/test_output.py +968 -0
  615. struphy-3.6.0/src/struphy/post_processing/tests/test_particle_diagnostics.py +58 -0
  616. struphy-3.6.0/src/struphy/post_processing/tests/test_plot_3d.py +143 -0
  617. struphy-3.6.0/src/struphy/post_processing/tests/test_pproc.py +161 -0
  618. struphy-3.6.0/src/struphy/post_processing/tests/test_slices.py +249 -0
  619. struphy-3.6.0/src/struphy/propagators/__init__.py +192 -0
  620. struphy-3.6.0/src/struphy/propagators/adiabatic_poisson_solve.py +235 -0
  621. struphy-3.6.0/src/struphy/propagators/background_current.py +183 -0
  622. struphy-3.6.0/src/struphy/propagators/background_pressure_gradient.py +138 -0
  623. struphy-3.6.0/src/struphy/propagators/base.py +295 -0
  624. struphy-3.6.0/src/struphy/propagators/curl_curl_solve.py +400 -0
  625. struphy-3.6.0/src/struphy/propagators/current_coupling_5d_curlb.py +368 -0
  626. struphy-3.6.0/src/struphy/propagators/current_coupling_5d_density.py +292 -0
  627. struphy-3.6.0/src/struphy/propagators/current_coupling_5d_gradb.py +871 -0
  628. struphy-3.6.0/src/struphy/propagators/current_coupling_6d_current.py +351 -0
  629. struphy-3.6.0/src/struphy/propagators/current_coupling_6d_density.py +345 -0
  630. struphy-3.6.0/src/struphy/propagators/drift_kinetic_maxwell_coupling.py +707 -0
  631. struphy-3.6.0/src/struphy/propagators/efield_weights_coupling.py +349 -0
  632. struphy-3.6.0/src/struphy/propagators/gyrokinetic_poisson_solve.py +215 -0
  633. struphy-3.6.0/src/struphy/propagators/hall.py +180 -0
  634. struphy-3.6.0/src/struphy/propagators/implicit_diffusion.py +691 -0
  635. struphy-3.6.0/src/struphy/propagators/magnetosonic.py +304 -0
  636. struphy-3.6.0/src/struphy/propagators/magnetosonic_uniform.py +242 -0
  637. struphy-3.6.0/src/struphy/propagators/maxwell_weak_ampere.py +324 -0
  638. struphy-3.6.0/src/struphy/propagators/poisson_solve.py +204 -0
  639. struphy-3.6.0/src/struphy/propagators/pressure_coupling_6d.py +445 -0
  640. struphy-3.6.0/src/struphy/propagators/push_deterministic_diffusion.py +169 -0
  641. struphy-3.6.0/src/struphy/propagators/push_eta.py +124 -0
  642. struphy-3.6.0/src/struphy/propagators/push_eta_pc.py +172 -0
  643. struphy-3.6.0/src/struphy/propagators/push_guiding_center_bx_estar.py +549 -0
  644. struphy-3.6.0/src/struphy/propagators/push_guiding_center_parallel.py +585 -0
  645. struphy-3.6.0/src/struphy/propagators/push_random_diffusion.py +161 -0
  646. struphy-3.6.0/src/struphy/propagators/push_v_in_force_field.py +199 -0
  647. struphy-3.6.0/src/struphy/propagators/push_v_in_sph_pressure.py +211 -0
  648. struphy-3.6.0/src/struphy/propagators/push_v_in_viscous_potential.py +209 -0
  649. struphy-3.6.0/src/struphy/propagators/push_vxb.py +194 -0
  650. struphy-3.6.0/src/struphy/propagators/shear_alfven_b1.py +214 -0
  651. struphy-3.6.0/src/struphy/propagators/shear_alfven_curl_curl_propagator.py +469 -0
  652. struphy-3.6.0/src/struphy/propagators/shear_alfven_current_coupling_5d.py +479 -0
  653. struphy-3.6.0/src/struphy/propagators/shear_alfven_propagator.py +358 -0
  654. struphy-3.6.0/src/struphy/propagators/sound_wave_linear.py +279 -0
  655. struphy-3.6.0/src/struphy/propagators/tests/__init__.py +0 -0
  656. struphy-3.6.0/src/struphy/propagators/tests/test_adiabatic_poisson.py +220 -0
  657. struphy-3.6.0/src/struphy/propagators/tests/test_background_current.py +74 -0
  658. struphy-3.6.0/src/struphy/propagators/tests/test_background_pressure_gradient.py +88 -0
  659. struphy-3.6.0/src/struphy/propagators/tests/test_curl_curl.py +537 -0
  660. struphy-3.6.0/src/struphy/propagators/tests/test_current_coupling_5d.py +332 -0
  661. struphy-3.6.0/src/struphy/propagators/tests/test_drift_kinetic_maxwell_coupling.py +311 -0
  662. struphy-3.6.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +894 -0
  663. struphy-3.6.0/src/struphy/propagators/tests/test_magnetosonic.py +115 -0
  664. struphy-3.6.0/src/struphy/propagators/tests/test_matrix_free_6d.py +302 -0
  665. struphy-3.6.0/src/struphy/propagators/tests/test_maxwell_weak_ampere.py +140 -0
  666. struphy-3.6.0/src/struphy/propagators/tests/test_poisson.py +1090 -0
  667. struphy-3.6.0/src/struphy/propagators/tests/test_push_guiding_center_e_field.py +98 -0
  668. struphy-3.6.0/src/struphy/propagators/tests/test_push_guiding_center_full_b.py +106 -0
  669. struphy-3.6.0/src/struphy/propagators/tests/test_push_random_diffusion.py +50 -0
  670. struphy-3.6.0/src/struphy/propagators/tests/test_shear_alfven.py +132 -0
  671. struphy-3.6.0/src/struphy/propagators/tests/test_shear_alfven_curl_curl.py +231 -0
  672. struphy-3.6.0/src/struphy/propagators/tests/test_sound_wave_linear.py +280 -0
  673. struphy-3.6.0/src/struphy/propagators/tests/test_time_dependent_source.py +54 -0
  674. struphy-3.6.0/src/struphy/propagators/tests/test_variational_linear_dissipative.py +111 -0
  675. struphy-3.6.0/src/struphy/propagators/tests/test_variational_linear_hdiv.py +123 -0
  676. struphy-3.6.0/src/struphy/propagators/tests/test_variational_linear_midpoint.py +167 -0
  677. struphy-3.6.0/src/struphy/propagators/tests/test_variational_mag_field_evolve.py +99 -0
  678. struphy-3.6.0/src/struphy/propagators/tests/test_variational_qb_evolve.py +52 -0
  679. struphy-3.6.0/src/struphy/propagators/tests/test_variational_schur_precond.py +67 -0
  680. struphy-3.6.0/src/struphy/propagators/tests/test_vlasov_maxwell_coupling.py +326 -0
  681. struphy-3.6.0/src/struphy/propagators/time_dependent_source.py +112 -0
  682. struphy-3.6.0/src/struphy/propagators/two_fluid_quasi_neutral_full.py +468 -0
  683. struphy-3.6.0/src/struphy/propagators/variational_alfven_evolve.py +450 -0
  684. struphy-3.6.0/src/struphy/propagators/variational_density_evolve.py +680 -0
  685. struphy-3.6.0/src/struphy/propagators/variational_entropy_evolve.py +489 -0
  686. struphy-3.6.0/src/struphy/propagators/variational_linear_alfven_evolve.py +380 -0
  687. struphy-3.6.0/src/struphy/propagators/variational_linear_base.py +147 -0
  688. struphy-3.6.0/src/struphy/propagators/variational_linear_sound_evolve.py +451 -0
  689. struphy-3.6.0/src/struphy/propagators/variational_mag_field_evolve.py +441 -0
  690. struphy-3.6.0/src/struphy/propagators/variational_momentum_advection.py +321 -0
  691. struphy-3.6.0/src/struphy/propagators/variational_pb_evolve.py +718 -0
  692. struphy-3.6.0/src/struphy/propagators/variational_qb_evolve.py +785 -0
  693. struphy-3.6.0/src/struphy/propagators/variational_resistivity.py +856 -0
  694. struphy-3.6.0/src/struphy/propagators/variational_sound_evolve.py +441 -0
  695. struphy-3.6.0/src/struphy/propagators/variational_viscosity.py +1007 -0
  696. struphy-3.6.0/src/struphy/propagators/vlasov_ampere_coupling.py +325 -0
  697. struphy-3.6.0/src/struphy/propagators/vlasov_maxwell_coupling.py +569 -0
  698. struphy-3.6.0/src/struphy/simulation/__init__.py +0 -0
  699. struphy-3.6.0/src/struphy/simulation/sim.py +2454 -0
  700. struphy-3.6.0/src/struphy/simulation/tests/__init__.py +0 -0
  701. struphy-3.6.0/src/struphy/simulation/tests/test_compile_cuda_kernels.py +247 -0
  702. struphy-3.6.0/src/struphy/simulation/tests/test_estimate_mem.py +165 -0
  703. struphy-3.6.0/src/struphy/simulation/tests/test_output.py +523 -0
  704. struphy-3.6.0/src/struphy/simulation/tests/test_sim_comm_mpi.py +50 -0
  705. struphy-3.6.0/src/struphy/struphy_model_test/ColdPlasma/parameters.py +120 -0
  706. struphy-3.6.0/src/struphy/topology/__init__.py +0 -0
  707. struphy-3.6.0/src/struphy/utils/__init__.py +0 -0
  708. struphy-3.6.0/src/struphy/utils/clone_config.py +278 -0
  709. struphy-3.6.0/src/struphy/utils/compiler.py +266 -0
  710. struphy-3.6.0/src/struphy/utils/cuda_arguments.py +60 -0
  711. struphy-3.6.0/src/struphy/utils/docstring_converter.py +1327 -0
  712. struphy-3.6.0/src/struphy/utils/kernel_compilation.py +52 -0
  713. struphy-3.6.0/src/struphy/utils/test_clone_config.py +47 -0
  714. struphy-3.6.0/src/struphy/utils/test_utils.py +22 -0
  715. struphy-3.6.0/src/struphy/utils/utils.py +261 -0
  716. struphy-3.6.0/src/struphy.egg-info/PKG-INFO +300 -0
  717. struphy-3.6.0/src/struphy.egg-info/SOURCES.txt +915 -0
  718. struphy-3.6.0/src/struphy.egg-info/requires.txt +85 -0
  719. struphy-3.4.0/PKG-INFO +0 -268
  720. struphy-3.4.0/README.md +0 -151
  721. struphy-3.4.0/pyproject.toml +0 -197
  722. struphy-3.4.0/setup.cfg +0 -13
  723. struphy-3.4.0/src/struphy/__init__.py +0 -253
  724. struphy-3.4.0/src/struphy/api/models/__init__.py +0 -81
  725. struphy-3.4.0/src/struphy/bsplines/evaluation_kernels_3d.py +0 -1924
  726. struphy-3.4.0/src/struphy/bsplines/tests/test_bsplines_kers.py +0 -210
  727. struphy-3.4.0/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -855
  728. struphy-3.4.0/src/struphy/conftest.py +0 -59
  729. struphy-3.4.0/src/struphy/console/compile.py +0 -365
  730. struphy-3.4.0/src/struphy/console/format.py +0 -1557
  731. struphy-3.4.0/src/struphy/console/main.py +0 -780
  732. struphy-3.4.0/src/struphy/console/params.py +0 -69
  733. struphy-3.4.0/src/struphy/console/test.py +0 -174
  734. struphy-3.4.0/src/struphy/console/tests/test_compile.py +0 -214
  735. struphy-3.4.0/src/struphy/console/tests/test_format.py +0 -38
  736. struphy-3.4.0/src/struphy/dependencies.py +0 -135
  737. struphy-3.4.0/src/struphy/examples/_draw_parallel.py +0 -100
  738. struphy-3.4.0/src/struphy/feec/basis_projection_kernels.py +0 -568
  739. struphy-3.4.0/src/struphy/feec/basis_projection_ops.py +0 -2406
  740. struphy-3.4.0/src/struphy/feec/boundary_mass.py +0 -588
  741. struphy-3.4.0/src/struphy/feec/linear_operators.py +0 -512
  742. struphy-3.4.0/src/struphy/feec/local_projectors_kernels.py +0 -1216
  743. struphy-3.4.0/src/struphy/feec/mass.py +0 -3428
  744. struphy-3.4.0/src/struphy/feec/mass_kernels.py +0 -1270
  745. struphy-3.4.0/src/struphy/feec/memory.py +0 -70
  746. struphy-3.4.0/src/struphy/feec/preconditioner.py +0 -994
  747. struphy-3.4.0/src/struphy/feec/projectors.py +0 -2238
  748. struphy-3.4.0/src/struphy/feec/psydac_derham.py +0 -4068
  749. struphy-3.4.0/src/struphy/feec/tests/test_basis_ops.py +0 -654
  750. struphy-3.4.0/src/struphy/feec/tests/test_boundary_integrals.py +0 -372
  751. struphy-3.4.0/src/struphy/feec/tests/test_derham.py +0 -160
  752. struphy-3.4.0/src/struphy/feec/tests/test_eval_field.py +0 -597
  753. struphy-3.4.0/src/struphy/feec/tests/test_field_init.py +0 -1463
  754. struphy-3.4.0/src/struphy/feec/tests/test_l2_projectors.py +0 -344
  755. struphy-3.4.0/src/struphy/feec/tests/test_local_projectors.py +0 -1619
  756. struphy-3.4.0/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -322
  757. struphy-3.4.0/src/struphy/feec/tests/test_mass_matrices.py +0 -1659
  758. struphy-3.4.0/src/struphy/feec/tests/test_mass_reassembly.py +0 -41
  759. struphy-3.4.0/src/struphy/feec/tests/test_preconditioner_transpose.py +0 -59
  760. struphy-3.4.0/src/struphy/feec/tests/test_toarray_struphy.py +0 -138
  761. struphy-3.4.0/src/struphy/feec/tests/test_tosparse_struphy.py +0 -154
  762. struphy-3.4.0/src/struphy/feec/tests/test_utilities_kernels.py +0 -41
  763. struphy-3.4.0/src/struphy/feec/tests/test_variational_utilities.py +0 -52
  764. struphy-3.4.0/src/struphy/feec/tests/xx_test_preconds.py +0 -116
  765. struphy-3.4.0/src/struphy/feec/utilities.py +0 -601
  766. struphy-3.4.0/src/struphy/feec/utilities_kernels.py +0 -216
  767. struphy-3.4.0/src/struphy/feec/variational_utilities.py +0 -1583
  768. struphy-3.4.0/src/struphy/fields_background/equils.py +0 -3448
  769. struphy-3.4.0/src/struphy/fields_background/tests/test_mhd_equils.py +0 -1050
  770. struphy-3.4.0/src/struphy/geometry/base.py +0 -2664
  771. struphy-3.4.0/src/struphy/geometry/domains/colella/__init__.py +0 -18
  772. struphy-3.4.0/src/struphy/geometry/domains/cuboid/__init__.py +0 -18
  773. struphy-3.4.0/src/struphy/geometry/domains/desc_unit/__init__.py +0 -18
  774. struphy-3.4.0/src/struphy/geometry/domains/gvec_unit/__init__.py +0 -18
  775. struphy-3.4.0/src/struphy/geometry/domains/hollow_cylinder/__init__.py +0 -18
  776. struphy-3.4.0/src/struphy/geometry/domains/hollow_torus/__init__.py +0 -18
  777. struphy-3.4.0/src/struphy/geometry/domains/iga_polar_cylinder/__init__.py +0 -18
  778. struphy-3.4.0/src/struphy/geometry/domains/iga_polar_torus/__init__.py +0 -18
  779. struphy-3.4.0/src/struphy/geometry/domains/orthogonal/__init__.py +0 -18
  780. struphy-3.4.0/src/struphy/geometry/domains/powered_elliptic_cylinder/__init__.py +0 -18
  781. struphy-3.4.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/__init__.py +0 -20
  782. struphy-3.4.0/src/struphy/geometry/domains/shafranov_shift_cylinder/__init__.py +0 -18
  783. struphy-3.4.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/__init__.py +0 -18
  784. struphy-3.4.0/src/struphy/geometry/domains/tokamak/__init__.py +0 -18
  785. struphy-3.4.0/src/struphy/geometry/domains/tokamak/tokamak.py +0 -126
  786. struphy-3.4.0/src/struphy/geometry/evaluation_kernels.py +0 -961
  787. struphy-3.4.0/src/struphy/geometry/tests/test_domain.py +0 -1183
  788. struphy-3.4.0/src/struphy/geometry/transform_kernels.py +0 -491
  789. struphy-3.4.0/src/struphy/geometry/utilities.py +0 -499
  790. struphy-3.4.0/src/struphy/initial/perturbations.py +0 -2525
  791. struphy-3.4.0/src/struphy/initial/tests/test_init_perturbations.py +0 -396
  792. struphy-3.4.0/src/struphy/io/options.py +0 -376
  793. struphy-3.4.0/src/struphy/io/output_handling.py +0 -172
  794. struphy-3.4.0/src/struphy/io/setup.py +0 -175
  795. struphy-3.4.0/src/struphy/kernel_arguments/pusher_args_kernels.py +0 -169
  796. struphy-3.4.0/src/struphy/kinetic_background/base.py +0 -1031
  797. struphy-3.4.0/src/struphy/kinetic_background/maxwellians.py +0 -863
  798. struphy-3.4.0/src/struphy/kinetic_background/tests/test_base.py +0 -166
  799. struphy-3.4.0/src/struphy/kinetic_background/tests/test_maxwellians.py +0 -1800
  800. struphy-3.4.0/src/struphy/linear_algebra/schur_solver.py +0 -400
  801. struphy-3.4.0/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +0 -446
  802. struphy-3.4.0/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +0 -457
  803. struphy-3.4.0/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +0 -300
  804. struphy-3.4.0/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +0 -284
  805. struphy-3.4.0/src/struphy/models/__init__.py +0 -138
  806. struphy-3.4.0/src/struphy/models/base.py +0 -1219
  807. struphy-3.4.0/src/struphy/models/cold_plasma.py +0 -241
  808. struphy-3.4.0/src/struphy/models/cold_plasma_vlasov.py +0 -377
  809. struphy-3.4.0/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +0 -335
  810. struphy-3.4.0/src/struphy/models/guiding_center.py +0 -213
  811. struphy-3.4.0/src/struphy/models/incompressible_navier_stokes_sph.py +0 -277
  812. struphy-3.4.0/src/struphy/models/linear_mhd.py +0 -280
  813. struphy-3.4.0/src/struphy/models/linear_mhd_driftkinetic_cc.py +0 -379
  814. struphy-3.4.0/src/struphy/models/linear_mhd_vlasov_cc.py +0 -336
  815. struphy-3.4.0/src/struphy/models/linear_mhd_vlasov_pc.py +0 -308
  816. struphy-3.4.0/src/struphy/models/linear_vlasov_ampere_one_species.py +0 -373
  817. struphy-3.4.0/src/struphy/models/linear_vlasov_maxwell_one_species.py +0 -300
  818. struphy-3.4.0/src/struphy/models/maxwell.py +0 -160
  819. struphy-3.4.0/src/struphy/models/poisson.py +0 -189
  820. struphy-3.4.0/src/struphy/models/pressure_less_sph.py +0 -209
  821. struphy-3.4.0/src/struphy/models/scalars.py +0 -375
  822. struphy-3.4.0/src/struphy/models/shear_alfven.py +0 -187
  823. struphy-3.4.0/src/struphy/models/species.py +0 -461
  824. struphy-3.4.0/src/struphy/models/tests/default_params/test_models.py +0 -115
  825. struphy-3.4.0/src/struphy/models/tests/test_examples.py +0 -72
  826. struphy-3.4.0/src/struphy/models/tests/test_scalars.py +0 -219
  827. struphy-3.4.0/src/struphy/models/tests/test_variational_dissipation.py +0 -48
  828. struphy-3.4.0/src/struphy/models/tests/utils_testing.py +0 -162
  829. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_IncompressibleNavierStokesSPH.py +0 -483
  830. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_LinearMHD.py +0 -151
  831. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_LinearVlasovAmpereOneSpecies.py +0 -212
  832. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_Maxwell.py +0 -281
  833. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_Poisson.py +0 -130
  834. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +0 -1039
  835. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +0 -170
  836. struphy-3.4.0/src/struphy/models/tests/verification/test_verif_VlasovMaxwellOneSpecies.py +0 -106
  837. struphy-3.4.0/src/struphy/models/toy_drift.py +0 -278
  838. struphy-3.4.0/src/struphy/models/utils.py +0 -75
  839. struphy-3.4.0/src/struphy/models/variables.py +0 -1006
  840. struphy-3.4.0/src/struphy/models/variational_compressible_fluid.py +0 -259
  841. struphy-3.4.0/src/struphy/models/visco_resistive_deltaf_mhd.py +0 -328
  842. struphy-3.4.0/src/struphy/models/visco_resistive_deltaf_mhd_with_q.py +0 -328
  843. struphy-3.4.0/src/struphy/models/visco_resistive_linear_mhd.py +0 -327
  844. struphy-3.4.0/src/struphy/models/visco_resistive_linear_mhd_with_q.py +0 -321
  845. struphy-3.4.0/src/struphy/models/visco_resistive_mhd.py +0 -337
  846. struphy-3.4.0/src/struphy/models/visco_resistive_mhd_with_p.py +0 -325
  847. struphy-3.4.0/src/struphy/models/visco_resistive_mhd_with_q.py +0 -320
  848. struphy-3.4.0/src/struphy/models/viscous_euler_sph.py +0 -252
  849. struphy-3.4.0/src/struphy/models/vlasov.py +0 -172
  850. struphy-3.4.0/src/struphy/models/vlasov_ampere_one_species.py +0 -341
  851. struphy-3.4.0/src/struphy/models/vlasov_maxwell_one_species.py +0 -381
  852. struphy-3.4.0/src/struphy/ode/tests/test_ode_feec.py +0 -192
  853. struphy-3.4.0/src/struphy/physics/physics.py +0 -152
  854. struphy-3.4.0/src/struphy/pic/accumulation/accum_kernels.py +0 -1176
  855. struphy-3.4.0/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -1274
  856. struphy-3.4.0/src/struphy/pic/accumulation/particles_to_grid.py +0 -754
  857. struphy-3.4.0/src/struphy/pic/base.py +0 -4966
  858. struphy-3.4.0/src/struphy/pic/particles.py +0 -996
  859. struphy-3.4.0/src/struphy/pic/pushing/eval_kernels_gc.py +0 -460
  860. struphy-3.4.0/src/struphy/pic/pushing/eval_kernels_sph.py +0 -567
  861. struphy-3.4.0/src/struphy/pic/pushing/kernel_setup.py +0 -82
  862. struphy-3.4.0/src/struphy/pic/pushing/pusher.py +0 -421
  863. struphy-3.4.0/src/struphy/pic/pushing/pusher_kernels.py +0 -1941
  864. struphy-3.4.0/src/struphy/pic/pushing/pusher_kernels_gc.py +0 -2995
  865. struphy-3.4.0/src/struphy/pic/pushing/pusher_kernels_sph.py +0 -670
  866. struphy-3.4.0/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -194
  867. struphy-3.4.0/src/struphy/pic/sampling_kernels.py +0 -118
  868. struphy-3.4.0/src/struphy/pic/sobol_seq.py +0 -733
  869. struphy-3.4.0/src/struphy/pic/sorting.py +0 -397
  870. struphy-3.4.0/src/struphy/pic/sorting_kernels.py +0 -249
  871. struphy-3.4.0/src/struphy/pic/sph_eval_kernels.py +0 -590
  872. struphy-3.4.0/src/struphy/pic/tests/_bench_push_vxb_analytic.py +0 -92
  873. struphy-3.4.0/src/struphy/pic/tests/bench_openmp_speedup.py +0 -99
  874. struphy-3.4.0/src/struphy/pic/tests/test_accum_gc_gradB.py +0 -78
  875. struphy-3.4.0/src/struphy/pic/tests/test_accum_pressure_coupling.py +0 -70
  876. struphy-3.4.0/src/struphy/pic/tests/test_accum_vec_H1.py +0 -624
  877. struphy-3.4.0/src/struphy/pic/tests/test_binning.py +0 -1490
  878. struphy-3.4.0/src/struphy/pic/tests/test_draw_parallel.py +0 -198
  879. struphy-3.4.0/src/struphy/pic/tests/test_estimate_mem.py +0 -110
  880. struphy-3.4.0/src/struphy/pic/tests/test_kernel_backends.py +0 -406
  881. struphy-3.4.0/src/struphy/pic/tests/test_kernel_setup.py +0 -280
  882. struphy-3.4.0/src/struphy/pic/tests/test_load_external.py +0 -43
  883. struphy-3.4.0/src/struphy/pic/tests/test_mat_vec_filler.py +0 -430
  884. struphy-3.4.0/src/struphy/pic/tests/test_neighbor_ranks.py +0 -138
  885. struphy-3.4.0/src/struphy/pic/tests/test_pusher_openmp_speedup.py +0 -100
  886. struphy-3.4.0/src/struphy/pic/tests/test_pushers.py +0 -862
  887. struphy-3.4.0/src/struphy/pic/tests/test_set_zero_velocity.py +0 -265
  888. struphy-3.4.0/src/struphy/pic/tests/test_sorting.py +0 -215
  889. struphy-3.4.0/src/struphy/pic/tests/test_sph.py +0 -2189
  890. struphy-3.4.0/src/struphy/pic/tests/test_tesselation.py +0 -189
  891. struphy-3.4.0/src/struphy/pic/tests/test_utilities.py +0 -45
  892. struphy-3.4.0/src/struphy/pic/utilities.py +0 -76
  893. struphy-3.4.0/src/struphy/pic/utilities_kernels.py +0 -802
  894. struphy-3.4.0/src/struphy/polar/basic.py +0 -541
  895. struphy-3.4.0/src/struphy/polar/extraction_operators.py +0 -938
  896. struphy-3.4.0/src/struphy/polar/linear_operators.py +0 -933
  897. struphy-3.4.0/src/struphy/polar/tests/test_polar.py +0 -506
  898. struphy-3.4.0/src/struphy/post_processing/manifest.py +0 -102
  899. struphy-3.4.0/src/struphy/post_processing/orbits/orbits_tools.py +0 -217
  900. struphy-3.4.0/src/struphy/post_processing/output.py +0 -2645
  901. struphy-3.4.0/src/struphy/post_processing/tests/test_eval_grids_mpi.py +0 -243
  902. struphy-3.4.0/src/struphy/post_processing/tests/test_orbits_tools.py +0 -56
  903. struphy-3.4.0/src/struphy/post_processing/tests/test_output.py +0 -888
  904. struphy-3.4.0/src/struphy/post_processing/tests/test_pproc.py +0 -102
  905. struphy-3.4.0/src/struphy/propagators/__init__.py +0 -156
  906. struphy-3.4.0/src/struphy/propagators/base.py +0 -268
  907. struphy-3.4.0/src/struphy/propagators/curl_curl_solve.py +0 -333
  908. struphy-3.4.0/src/struphy/propagators/current_coupling_5d_curlb.py +0 -325
  909. struphy-3.4.0/src/struphy/propagators/current_coupling_5d_density.py +0 -245
  910. struphy-3.4.0/src/struphy/propagators/current_coupling_5d_gradb.py +0 -860
  911. struphy-3.4.0/src/struphy/propagators/current_coupling_6d_current.py +0 -309
  912. struphy-3.4.0/src/struphy/propagators/current_coupling_6d_density.py +0 -301
  913. struphy-3.4.0/src/struphy/propagators/efield_weights_coupling.py +0 -314
  914. struphy-3.4.0/src/struphy/propagators/hall.py +0 -180
  915. struphy-3.4.0/src/struphy/propagators/implicit_diffusion.py +0 -471
  916. struphy-3.4.0/src/struphy/propagators/magnetosonic.py +0 -249
  917. struphy-3.4.0/src/struphy/propagators/magnetosonic_uniform.py +0 -242
  918. struphy-3.4.0/src/struphy/propagators/maxwell_weak_ampere.py +0 -252
  919. struphy-3.4.0/src/struphy/propagators/poisson_adiabatic_gyrokinetic.py +0 -208
  920. struphy-3.4.0/src/struphy/propagators/poisson_solve.py +0 -155
  921. struphy-3.4.0/src/struphy/propagators/pressure_coupling_6d.py +0 -396
  922. struphy-3.4.0/src/struphy/propagators/push_deterministic_diffusion.py +0 -170
  923. struphy-3.4.0/src/struphy/propagators/push_eta.py +0 -123
  924. struphy-3.4.0/src/struphy/propagators/push_eta_pc.py +0 -171
  925. struphy-3.4.0/src/struphy/propagators/push_guiding_center_bx_estar.py +0 -499
  926. struphy-3.4.0/src/struphy/propagators/push_guiding_center_parallel.py +0 -523
  927. struphy-3.4.0/src/struphy/propagators/push_random_diffusion.py +0 -161
  928. struphy-3.4.0/src/struphy/propagators/push_v_in_force_field.py +0 -160
  929. struphy-3.4.0/src/struphy/propagators/push_v_in_sph_pressure.py +0 -210
  930. struphy-3.4.0/src/struphy/propagators/push_v_in_viscous_potential.py +0 -208
  931. struphy-3.4.0/src/struphy/propagators/push_vxb.py +0 -170
  932. struphy-3.4.0/src/struphy/propagators/shear_alfven_b1.py +0 -214
  933. struphy-3.4.0/src/struphy/propagators/shear_alfven_current_coupling_5d.py +0 -472
  934. struphy-3.4.0/src/struphy/propagators/shear_alfven_propagator.py +0 -244
  935. struphy-3.4.0/src/struphy/propagators/tests/test_curl_curl.py +0 -469
  936. struphy-3.4.0/src/struphy/propagators/tests/test_current_coupling_5d.py +0 -61
  937. struphy-3.4.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +0 -830
  938. struphy-3.4.0/src/struphy/propagators/tests/test_magnetosonic.py +0 -42
  939. struphy-3.4.0/src/struphy/propagators/tests/test_poisson.py +0 -804
  940. struphy-3.4.0/src/struphy/propagators/tests/test_push_random_diffusion.py +0 -50
  941. struphy-3.4.0/src/struphy/propagators/tests/test_variational_mag_field_evolve.py +0 -99
  942. struphy-3.4.0/src/struphy/propagators/tests/test_variational_qb_evolve.py +0 -44
  943. struphy-3.4.0/src/struphy/propagators/time_dependent_source.py +0 -114
  944. struphy-3.4.0/src/struphy/propagators/two_fluid_quasi_neutral_full.py +0 -468
  945. struphy-3.4.0/src/struphy/propagators/variational_density_evolve.py +0 -628
  946. struphy-3.4.0/src/struphy/propagators/variational_entropy_evolve.py +0 -467
  947. struphy-3.4.0/src/struphy/propagators/variational_mag_field_evolve.py +0 -417
  948. struphy-3.4.0/src/struphy/propagators/variational_momentum_advection.py +0 -294
  949. struphy-3.4.0/src/struphy/propagators/variational_pb_evolve.py +0 -674
  950. struphy-3.4.0/src/struphy/propagators/variational_qb_evolve.py +0 -698
  951. struphy-3.4.0/src/struphy/propagators/variational_resistivity.py +0 -817
  952. struphy-3.4.0/src/struphy/propagators/variational_viscosity.py +0 -835
  953. struphy-3.4.0/src/struphy/propagators/vlasov_ampere_coupling.py +0 -251
  954. struphy-3.4.0/src/struphy/simulation/sim.py +0 -2350
  955. struphy-3.4.0/src/struphy/simulation/tests/test_estimate_mem.py +0 -165
  956. struphy-3.4.0/src/struphy/simulation/tests/test_output.py +0 -477
  957. struphy-3.4.0/src/struphy/simulation/tests/test_sim_comm_mpi.py +0 -50
  958. struphy-3.4.0/src/struphy/utils/clone_config.py +0 -275
  959. struphy-3.4.0/src/struphy/utils/compiler.py +0 -250
  960. struphy-3.4.0/src/struphy/utils/cuda_arguments.py +0 -212
  961. struphy-3.4.0/src/struphy/utils/docstring_converter.py +0 -1371
  962. struphy-3.4.0/src/struphy/utils/kernel_backends.py +0 -233
  963. struphy-3.4.0/src/struphy/utils/test_clone_config.py +0 -48
  964. struphy-3.4.0/src/struphy/utils/utils.py +0 -261
  965. struphy-3.4.0/src/struphy.egg-info/PKG-INFO +0 -268
  966. struphy-3.4.0/src/struphy.egg-info/SOURCES.txt +0 -446
  967. struphy-3.4.0/src/struphy.egg-info/requires.txt +0 -91
  968. {struphy-3.4.0 → struphy-3.6.0}/LICENSE +0 -0
  969. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/__init__.py +0 -0
  970. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/compiler/__init__.py +0 -0
  971. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/domains/__init__.py +0 -0
  972. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/equils/__init__.py +0 -0
  973. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/grids/__init__.py +0 -0
  974. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/maxwellians/__init__.py +0 -0
  975. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/ode/__init__.py +0 -0
  976. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/options/__init__.py +0 -0
  977. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/particles/__init__.py +0 -0
  978. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/perturbations/__init__.py +0 -0
  979. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/post_processing/__init__.py +0 -0
  980. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/api/simulation/__init__.py +0 -0
  981. {struphy-3.4.0/src/struphy/bsplines → struphy-3.6.0/src/struphy/api/tests}/__init__.py +0 -0
  982. {struphy-3.4.0/src/struphy/bsplines/tests → struphy-3.6.0/src/struphy/bsplines}/__init__.py +0 -0
  983. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/bsplines/bsplines.py +0 -0
  984. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/bsplines/bsplines_kernels.py +0 -0
  985. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  986. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  987. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  988. {struphy-3.4.0/src/struphy/console → struphy-3.6.0/src/struphy/bsplines/tests}/__init__.py +0 -0
  989. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/compile_struphy.mk +0 -0
  990. {struphy-3.4.0/src/struphy/diagnostics/tests → struphy-3.6.0/src/struphy/console}/__init__.py +0 -0
  991. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/console/likwid.py +0 -0
  992. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/console/output.py +0 -0
  993. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/console/parsers.py +0 -0
  994. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/console/profile.py +0 -0
  995. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/console/tests/test_params_profile.py +0 -0
  996. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/console/tests/test_state.py +0 -0
  997. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/console/tests/xx_test_console.py +0 -0
  998. {struphy-3.4.0/src/struphy/dispersion_relations → struphy-3.6.0/src/struphy/diagnostics/tests}/__init__.py +0 -0
  999. {struphy-3.4.0/src/struphy/dispersion_relations/tests → struphy-3.6.0/src/struphy/dispersion_relations}/__init__.py +0 -0
  1000. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/dispersion_relations/analytic.py +0 -0
  1001. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/dispersion_relations/base.py +0 -0
  1002. {struphy-3.4.0/src/struphy/examples/restelli2018 → struphy-3.6.0/src/struphy/dispersion_relations/tests}/__init__.py +0 -0
  1003. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/dispersion_relations/tests/test_analytic.py +0 -0
  1004. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/dispersion_relations/utilities.py +0 -0
  1005. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  1006. {struphy-3.4.0/src/struphy/feec → struphy-3.6.0/src/struphy/examples/restelli2018}/__init__.py +0 -0
  1007. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/examples/restelli2018/callables.py +0 -0
  1008. {struphy-3.4.0/src/struphy/feec/tests → struphy-3.6.0/src/struphy/feec}/__init__.py +0 -0
  1009. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  1010. {struphy-3.4.0/src/struphy/fields_background → struphy-3.6.0/src/struphy/feec/local_projectors}/__init__.py +0 -0
  1011. {struphy-3.4.0/src/struphy/fields_background/coil_fields → struphy-3.6.0/src/struphy/feec/tests}/__init__.py +0 -0
  1012. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/feec/tests/test_estimate_mem.py +0 -0
  1013. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/feec/tests/test_local_matrix_vector.py +0 -0
  1014. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/feec/utilities_local_projectors.py +0 -0
  1015. {struphy-3.4.0/src/struphy/fields_background/mhd_equil → struphy-3.6.0/src/struphy/fields_background}/__init__.py +0 -0
  1016. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/base.py +0 -0
  1017. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/eqdsk → struphy-3.6.0/src/struphy/fields_background/coil_fields}/__init__.py +0 -0
  1018. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/coil_fields/base.py +0 -0
  1019. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/coil_fields/coil_fields.py +0 -0
  1020. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/eqdsk/data → struphy-3.6.0/src/struphy/fields_background/mhd_equil}/__init__.py +0 -0
  1021. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/gvec → struphy-3.6.0/src/struphy/fields_background/mhd_equil/eqdsk}/__init__.py +0 -0
  1022. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  1023. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/gvec/output → struphy-3.6.0/src/struphy/fields_background/mhd_equil/eqdsk/data}/__init__.py +0 -0
  1024. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
  1025. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk → struphy-3.6.0/src/struphy/fields_background/mhd_equil/gvec}/__init__.py +0 -0
  1026. {struphy-3.4.0/src/struphy/fields_background/mhd_equil/vmec → struphy-3.6.0/src/struphy/fields_background/mhd_equil/gvec/output}/__init__.py +0 -0
  1027. {struphy-3.4.0/src/struphy/fields_background/tests → struphy-3.6.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk}/__init__.py +0 -0
  1028. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00000000.dat +0 -0
  1029. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00001000.dat +0 -0
  1030. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/parameter.ini +0 -0
  1031. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000000.dat +0 -0
  1032. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000100.dat +0 -0
  1033. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/parameter-w7x.ini +0 -0
  1034. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00000000.dat +0 -0
  1035. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00003307.dat +0 -0
  1036. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/Neo-spitzer-mirror23-well-opt-1-AR10-1.nc +0 -0
  1037. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/parameter-fig8.ini +0 -0
  1038. {struphy-3.4.0/src/struphy/geometry → struphy-3.6.0/src/struphy/fields_background/mhd_equil/vmec}/__init__.py +0 -0
  1039. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/projected_equils.py +0 -0
  1040. {struphy-3.4.0/src/struphy/geometry/map_coef → struphy-3.6.0/src/struphy/fields_background/tests}/__init__.py +0 -0
  1041. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/tests/test_adhoc_tokamak_equils.py +0 -0
  1042. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/tests/test_axisymm_gradB.py +0 -0
  1043. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
  1044. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/tests/test_generic_equils.py +0 -0
  1045. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
  1046. {struphy-3.4.0/src/struphy/geometry/tests → struphy-3.6.0/src/struphy/geometry}/__init__.py +0 -0
  1047. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/__init__.py +0 -0
  1048. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/colella/colella.py +0 -0
  1049. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/colella/colella_kernels.py +0 -0
  1050. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/cuboid/cuboid.py +0 -0
  1051. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/cuboid/cuboid_kernels.py +0 -0
  1052. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/desc_unit/desc_unit.py +0 -0
  1053. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/gvec_unit/gvec_unit.py +0 -0
  1054. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder.py +0 -0
  1055. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder_kernels.py +0 -0
  1056. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/hollow_torus/hollow_torus.py +0 -0
  1057. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/hollow_torus/hollow_torus_kernels.py +0 -0
  1058. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/iga_polar_cylinder/iga_polar_cylinder.py +0 -0
  1059. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/iga_polar_torus/iga_polar_torus.py +0 -0
  1060. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/orthogonal/orthogonal.py +0 -0
  1061. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/orthogonal/orthogonal_kernels.py +0 -0
  1062. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder.py +0 -0
  1063. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder_kernels.py +0 -0
  1064. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder.py +0 -0
  1065. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder_kernels.py +0 -0
  1066. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder.py +0 -0
  1067. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder_kernels.py +0 -0
  1068. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder.py +0 -0
  1069. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder_kernels.py +0 -0
  1070. {struphy-3.4.0/src/struphy/initial → struphy-3.6.0/src/struphy/geometry/map_coef}/__init__.py +0 -0
  1071. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/spline_mappings_kernels.py +0 -0
  1072. {struphy-3.4.0/src/struphy/initial → struphy-3.6.0/src/struphy/geometry}/tests/__init__.py +0 -0
  1073. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/geometry/utilities_kernels.py +0 -0
  1074. {struphy-3.4.0/src/struphy/io → struphy-3.6.0/src/struphy/initial}/__init__.py +0 -0
  1075. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/initial/base.py +0 -0
  1076. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/initial/eigenfunctions.py +0 -0
  1077. {struphy-3.4.0/src/struphy/io → struphy-3.6.0/src/struphy/initial}/tests/__init__.py +0 -0
  1078. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/initial/utilities.py +0 -0
  1079. {struphy-3.4.0/src/struphy/kernel_arguments → struphy-3.6.0/src/struphy/io}/__init__.py +0 -0
  1080. {struphy-3.4.0/src/struphy/kinetic_background → struphy-3.6.0/src/struphy/io/tests}/__init__.py +0 -0
  1081. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/io/tests/test_output_handling.py +0 -0
  1082. {struphy-3.4.0/src/struphy/kinetic_background/tests → struphy-3.6.0/src/struphy/kernel_arguments}/__init__.py +0 -0
  1083. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/kernel_arguments/local_projectors_args_kernels.py +0 -0
  1084. {struphy-3.4.0/src/struphy/linear_algebra → struphy-3.6.0/src/struphy/kinetic_background}/__init__.py +0 -0
  1085. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/kinetic_background/moment_functions.py +0 -0
  1086. {struphy-3.4.0/src/struphy/linear_algebra → struphy-3.6.0/src/struphy/kinetic_background}/tests/__init__.py +0 -0
  1087. {struphy-3.4.0/src/struphy/models/tests → struphy-3.6.0/src/struphy/linear_algebra}/__init__.py +0 -0
  1088. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  1089. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  1090. {struphy-3.4.0/src/struphy/models/tests/default_params → struphy-3.6.0/src/struphy/linear_algebra/multigrid}/__init__.py +0 -0
  1091. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/linear_algebra/saddle_point.py +0 -0
  1092. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/linear_algebra/solver.py +0 -0
  1093. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  1094. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  1095. {struphy-3.4.0/src/struphy/models/tests/verification → struphy-3.6.0/src/struphy/linear_algebra/tests}/__init__.py +0 -0
  1096. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/deterministic_particle_diffusion.py +0 -0
  1097. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/hasegawa_wakatani.py +0 -0
  1098. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/linear_extended_mh_duniform.py +0 -0
  1099. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/random_particle_diffusion.py +0 -0
  1100. {struphy-3.4.0/src/struphy/ode → struphy-3.6.0/src/struphy/models/tests}/__init__.py +0 -0
  1101. {struphy-3.4.0/src/struphy/ode/tests → struphy-3.6.0/src/struphy/models/tests/regression}/__init__.py +0 -0
  1102. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/tests/test_estimate_mem.py +0 -0
  1103. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/tests/test_hasegawa_wakatani.py +0 -0
  1104. {struphy-3.4.0/src/struphy/particles → struphy-3.6.0/src/struphy/models/tests/verification}/__init__.py +0 -0
  1105. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/two_fluid_quasi_neutral_toy.py +0 -0
  1106. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/variational_barotropic_fluid.py +0 -0
  1107. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/variational_pressureless_fluid.py +0 -0
  1108. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/models/viscous_fluid.py +0 -0
  1109. {struphy-3.4.0/src/struphy/physics → struphy-3.6.0/src/struphy/ode}/__init__.py +0 -0
  1110. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/ode/solvers.py +0 -0
  1111. {struphy-3.4.0/src/struphy/pic → struphy-3.6.0/src/struphy/ode/tests}/__init__.py +0 -0
  1112. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/ode/tests/test_butcher.py +0 -0
  1113. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/ode/utils.py +0 -0
  1114. {struphy-3.4.0/src/struphy/pic/accumulation → struphy-3.6.0/src/struphy/particles}/__init__.py +0 -0
  1115. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/particles/parameters.py +0 -0
  1116. {struphy-3.4.0/src/struphy/pic/pushing → struphy-3.6.0/src/struphy/physics}/__init__.py +0 -0
  1117. {struphy-3.4.0/src/struphy/pic/tests → struphy-3.6.0/src/struphy/pic}/__init__.py +0 -0
  1118. {struphy-3.4.0/src/struphy/polar → struphy-3.6.0/src/struphy/pic/accumulation}/__init__.py +0 -0
  1119. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  1120. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/pic/accumulation/filter.py +0 -0
  1121. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
  1122. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
  1123. {struphy-3.4.0/src/struphy/polar/tests → struphy-3.6.0/src/struphy/pic/diagnostics}/__init__.py +0 -0
  1124. {struphy-3.4.0/src/struphy/post_processing → struphy-3.6.0/src/struphy/pic/pushing}/__init__.py +0 -0
  1125. {struphy-3.4.0/src/struphy/post_processing/likwid → struphy-3.6.0/src/struphy/pic/sph}/__init__.py +0 -0
  1126. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/pic/sph_smoothing_kernels.py +0 -0
  1127. {struphy-3.4.0/src/struphy/post_processing/orbits → struphy-3.6.0/src/struphy/pic/tests}/__init__.py +0 -0
  1128. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/pic/tests/test_gc_epsilon.py +0 -0
  1129. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/pic/tests/test_show_distribution.py +0 -0
  1130. {struphy-3.4.0/src/struphy/post_processing/tests → struphy-3.6.0/src/struphy/polar}/__init__.py +0 -0
  1131. {struphy-3.4.0/src/struphy/propagators → struphy-3.6.0/src/struphy/polar}/tests/__init__.py +0 -0
  1132. {struphy-3.4.0/src/struphy/simulation → struphy-3.6.0/src/struphy/post_processing}/__init__.py +0 -0
  1133. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/arrays.py +0 -0
  1134. {struphy-3.4.0/src/struphy/simulation/tests → struphy-3.6.0/src/struphy/post_processing/likwid}/__init__.py +0 -0
  1135. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/likwid/hardware_dicts.py +0 -0
  1136. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/likwid/likwid_parser.py +0 -0
  1137. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/likwid/maxplotlylib.py +0 -0
  1138. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/likwid/plot_likwidproject.py +0 -0
  1139. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/likwid/roofline_plotter.py +0 -0
  1140. {struphy-3.4.0/src/struphy/topology → struphy-3.6.0/src/struphy/post_processing/orbits}/__init__.py +0 -0
  1141. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/orbits/orbits_kernels.py +0 -0
  1142. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/profiling.py +0 -0
  1143. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/si.py +0 -0
  1144. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/store.py +0 -0
  1145. {struphy-3.4.0/src/struphy/utils → struphy-3.6.0/src/struphy/post_processing/tests}/__init__.py +0 -0
  1146. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/tests/test_arrays.py +0 -0
  1147. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/post_processing/tests/test_eval_grids.py +0 -0
  1148. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/adiabatic_phi.py +0 -0
  1149. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/faraday_extended.py +0 -0
  1150. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/hasegawa_wakatani_step.py +0 -0
  1151. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/jxb_cold.py +0 -0
  1152. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/ohm_cold.py +0 -0
  1153. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/tests/test_current_coupling_5d_options.py +0 -0
  1154. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/tests/test_pressure_coupling_6d.py +0 -0
  1155. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/tests/test_two_fluid_quasi_neutral_full.py +0 -0
  1156. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/tests/test_variational_density_evolve.py +0 -0
  1157. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/propagators/tests/test_variational_solver_option.py +0 -0
  1158. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/simulation/base.py +0 -0
  1159. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/topology/grids.py +0 -0
  1160. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/utils/cupy_vs_numpy.py +0 -0
  1161. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/utils/ipython_compat.py +0 -0
  1162. {struphy-3.4.0 → struphy-3.6.0}/src/struphy/utils/progress.py +0 -0
  1163. {struphy-3.4.0 → struphy-3.6.0}/src/struphy.egg-info/dependency_links.txt +0 -0
  1164. {struphy-3.4.0 → struphy-3.6.0}/src/struphy.egg-info/entry_points.txt +0 -0
  1165. {struphy-3.4.0 → struphy-3.6.0}/src/struphy.egg-info/top_level.txt +0 -0
struphy-3.6.0/PKG-INFO ADDED
@@ -0,0 +1,300 @@
1
+ Metadata-Version: 2.4
2
+ Name: struphy
3
+ Version: 3.6.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.10.0,>=0.10.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://pepy.tech/projects/struphy"><img src="https://img.shields.io/pepy/dt/struphy?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](https://raw.githubusercontent.com/struphy-hub/struphy/main/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
+ The same doc is also on [Read the Docs](https://struphy.readthedocs.io/en/latest/), which also has the doc pages of older Struphy versions, starting from 3.1.0 (version menu of Read the Docs). The Read the Docs build does not execute the notebooks in the doc (e.g. the tutorials): they appear there without any outputs. The GitHub pages build executes them.
202
+
203
+ ## Example: solve Maxwell’s equations
204
+
205
+ Use the command line to generate a default launch file:
206
+
207
+ struphy params Maxwell
208
+
209
+ 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
210
+
211
+ python params_Maxwell.py
212
+
213
+ The default output is in `sim_1/` in your cwd. You can change the output path via the class `EnvironmentOptions` in the parameter file.
214
+
215
+ 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.
216
+
217
+ Parallel simulations are run for example with
218
+
219
+ pip install -U mpi4py
220
+ mpirun -n 4 python params_Maxwell.py
221
+
222
+ You can also put the run command in a batch script.
223
+
224
+ ## Python API
225
+
226
+ 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
227
+
228
+ ``` python
229
+ from struphy import (
230
+ Simulation,
231
+ domains,
232
+ equils,
233
+ )
234
+ from struphy.models import LinearMHD
235
+
236
+ model = LinearMHD()
237
+
238
+ domain = domains.DESCunit()
239
+ equil = equils.DESCequilibrium(use_nfp=False)
240
+
241
+ sim = Simulation(
242
+ model=model,
243
+ domain=domain,
244
+ equil=equil,
245
+ )
246
+
247
+ sim.show_domain(scalars="absB0", window_size = (850, 250), zoom_factor=2.0)
248
+ ```
249
+
250
+ ![](https://raw.githubusercontent.com/struphy-hub/struphy/main/README_files/figure-commonmark/cell-2-output-1.png)
251
+
252
+ 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).
253
+
254
+ ## Tutorials on Binder
255
+
256
+ Get familiar with Struphy right away on [mybinder](https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main) - no installation needed.
257
+
258
+ ## Docker
259
+
260
+ 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:
261
+
262
+ docker pull spossann/struphy:main
263
+ docker run -it --rm spossann/struphy:main
264
+ ls struphy_*
265
+
266
+ This will show three available Struphy environments, which you can activate for example via
267
+
268
+ source struphy_fortran_/env_fortran_/bin/activate
269
+
270
+ 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:
271
+
272
+ docker pull spossann/ubuntu-for-struphy:main
273
+ docker run -it --rm spossann/ubuntu-for-struphy:main
274
+
275
+ ## Get in touch
276
+
277
+ - [Issues](https://github.com/struphy-hub/struphy/issues)
278
+ - [Discussions](https://github.com/struphy-hub/struphy/discussions)
279
+ - [@spossann](https://github.com/spossann) [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de) (Maintainer)
280
+ - [@max-models](https://github.com/max-models) [max.lindqvist@ipp.mpg.de](mailto:Max.Lindqvist@ipp.mpg.de) (Maintainer)
281
+ - [LinkedIn profile](https://www.linkedin.com/company/struphy/)
282
+
283
+ ## Publications
284
+
285
+ - D. Bell, M.C. Pinto, S. Possanner, E. Sonnendrücker,
286
+ [**The linearized Vlasov–Maxwell system as a Hamiltonian system**](https://doi.org/10.1016/j.jcp.2026.114765),
287
+ Journal of Computational Physics, Volume 555, 114765 (2026).
288
+
289
+ - 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),
290
+ Journal of Computational Physics, Volume 523, 113647 (2025).
291
+
292
+ - 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).
293
+
294
+ - 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).
295
+
296
+ - 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).
297
+
298
+ - 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).
299
+
300
+ - 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,189 @@
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://pepy.tech/projects/struphy"><img src="https://img.shields.io/pepy/dt/struphy?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](https://raw.githubusercontent.com/struphy-hub/struphy/main/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
+ The same doc is also on [Read the Docs](https://struphy.readthedocs.io/en/latest/), which also has the doc pages of older Struphy versions, starting from 3.1.0 (version menu of Read the Docs). The Read the Docs build does not execute the notebooks in the doc (e.g. the tutorials): they appear there without any outputs. The GitHub pages build executes them.
91
+
92
+ ## Example: solve Maxwell’s equations
93
+
94
+ Use the command line to generate a default launch file:
95
+
96
+ struphy params Maxwell
97
+
98
+ 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
99
+
100
+ python params_Maxwell.py
101
+
102
+ The default output is in `sim_1/` in your cwd. You can change the output path via the class `EnvironmentOptions` in the parameter file.
103
+
104
+ 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.
105
+
106
+ Parallel simulations are run for example with
107
+
108
+ pip install -U mpi4py
109
+ mpirun -n 4 python params_Maxwell.py
110
+
111
+ You can also put the run command in a batch script.
112
+
113
+ ## Python API
114
+
115
+ 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
116
+
117
+ ``` python
118
+ from struphy import (
119
+ Simulation,
120
+ domains,
121
+ equils,
122
+ )
123
+ from struphy.models import LinearMHD
124
+
125
+ model = LinearMHD()
126
+
127
+ domain = domains.DESCunit()
128
+ equil = equils.DESCequilibrium(use_nfp=False)
129
+
130
+ sim = Simulation(
131
+ model=model,
132
+ domain=domain,
133
+ equil=equil,
134
+ )
135
+
136
+ sim.show_domain(scalars="absB0", window_size = (850, 250), zoom_factor=2.0)
137
+ ```
138
+
139
+ ![](https://raw.githubusercontent.com/struphy-hub/struphy/main/README_files/figure-commonmark/cell-2-output-1.png)
140
+
141
+ 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).
142
+
143
+ ## Tutorials on Binder
144
+
145
+ Get familiar with Struphy right away on [mybinder](https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main) - no installation needed.
146
+
147
+ ## Docker
148
+
149
+ 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:
150
+
151
+ docker pull spossann/struphy:main
152
+ docker run -it --rm spossann/struphy:main
153
+ ls struphy_*
154
+
155
+ This will show three available Struphy environments, which you can activate for example via
156
+
157
+ source struphy_fortran_/env_fortran_/bin/activate
158
+
159
+ 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:
160
+
161
+ docker pull spossann/ubuntu-for-struphy:main
162
+ docker run -it --rm spossann/ubuntu-for-struphy:main
163
+
164
+ ## Get in touch
165
+
166
+ - [Issues](https://github.com/struphy-hub/struphy/issues)
167
+ - [Discussions](https://github.com/struphy-hub/struphy/discussions)
168
+ - [@spossann](https://github.com/spossann) [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de) (Maintainer)
169
+ - [@max-models](https://github.com/max-models) [max.lindqvist@ipp.mpg.de](mailto:Max.Lindqvist@ipp.mpg.de) (Maintainer)
170
+ - [LinkedIn profile](https://www.linkedin.com/company/struphy/)
171
+
172
+ ## Publications
173
+
174
+ - D. Bell, M.C. Pinto, S. Possanner, E. Sonnendrücker,
175
+ [**The linearized Vlasov–Maxwell system as a Hamiltonian system**](https://doi.org/10.1016/j.jcp.2026.114765),
176
+ Journal of Computational Physics, Volume 555, 114765 (2026).
177
+
178
+ - 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),
179
+ Journal of Computational Physics, Volume 523, 113647 (2025).
180
+
181
+ - 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).
182
+
183
+ - 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).
184
+
185
+ - 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).
186
+
187
+ - 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).
188
+
189
+ - 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).