struphy 3.0.2__tar.gz → 3.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. {struphy-3.0.2/src/struphy.egg-info → struphy-3.0.3}/PKG-INFO +50 -50
  2. {struphy-3.0.2 → struphy-3.0.3}/pyproject.toml +52 -57
  3. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/__init__.py +5 -0
  4. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/models/__init__.py +0 -2
  5. struphy-3.0.3/src/struphy/api/post_processing/__init__.py +3 -0
  6. struphy-3.0.3/src/struphy/api/simulation/__init__.py +3 -0
  7. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/psydac_derham.py +7 -6
  8. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/base.py +110 -32
  9. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/equils.py +87 -14
  10. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/projected_equils.py +13 -5
  11. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/base.py +86 -4
  12. struphy-3.0.3/src/struphy/initial/base.py +105 -0
  13. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/initial/perturbations.py +23 -25
  14. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/initial/tests/test_init_perturbations.py +12 -12
  15. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/io/options.py +22 -0
  16. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/io/setup.py +0 -60
  17. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kinetic_background/base.py +7 -0
  18. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/__init__.py +0 -2
  19. struphy-3.0.3/src/struphy/models/base.py +804 -0
  20. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/cold_plasma.py +5 -6
  21. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/cold_plasma_vlasov.py +33 -38
  22. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/deterministic_particle_diffusion.py +1 -3
  23. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +12 -18
  24. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/guiding_center.py +6 -4
  25. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/hasegawa_wakatani.py +5 -10
  26. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/linear_extended_mh_duniform.py +12 -13
  27. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/linear_mhd.py +12 -13
  28. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/linear_mhd_driftkinetic_cc.py +8 -9
  29. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/linear_mhd_vlasov_cc.py +6 -7
  30. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/linear_mhd_vlasov_pc.py +7 -8
  31. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/linear_vlasov_ampere_one_species.py +47 -53
  32. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/linear_vlasov_maxwell_one_species.py +2 -3
  33. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/maxwell.py +4 -5
  34. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/poisson.py +7 -15
  35. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/pressure_less_sph.py +1 -3
  36. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/random_particle_diffusion.py +1 -3
  37. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/shear_alfven.py +9 -16
  38. struphy-3.0.3/src/struphy/models/species.py +424 -0
  39. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/utils_testing.py +13 -32
  40. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/verification/test_verif_LinearMHD.py +31 -27
  41. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/verification/test_verif_Maxwell.py +43 -48
  42. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/verification/test_verif_Poisson.py +29 -33
  43. struphy-3.0.2/src/struphy/models/tests/verification/test_verif_EulerSPH.py → struphy-3.0.3/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +15 -18
  44. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +12 -20
  45. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/two_fluid_quasi_neutral_toy.py +1 -3
  46. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/variables.py +273 -42
  47. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/variational_barotropic_fluid.py +4 -5
  48. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/variational_compressible_fluid.py +5 -6
  49. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/variational_pressureless_fluid.py +3 -4
  50. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/visco_resistive_deltaf_mhd.py +13 -14
  51. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/visco_resistive_deltaf_mhd_with_q.py +10 -11
  52. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/visco_resistive_linear_mhd.py +13 -14
  53. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/visco_resistive_linear_mhd_with_q.py +10 -11
  54. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/visco_resistive_mhd.py +10 -11
  55. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/visco_resistive_mhd_with_p.py +10 -11
  56. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/visco_resistive_mhd_with_q.py +10 -11
  57. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/viscous_euler_sph.py +29 -21
  58. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/viscous_fluid.py +6 -7
  59. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/vlasov.py +1 -3
  60. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/vlasov_ampere_one_species.py +32 -38
  61. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/vlasov_maxwell_one_species.py +37 -43
  62. struphy-3.0.3/src/struphy/particles/parameters.py +285 -0
  63. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/base.py +172 -31
  64. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/particles.py +27 -71
  65. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/pushing/eval_kernels_gc.py +27 -23
  66. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/pushing/pusher_kernels.py +1 -1
  67. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/sph_smoothing_kernels.py +18 -0
  68. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_binning.py +35 -35
  69. struphy-3.0.3/src/struphy/pic/tests/test_set_zero_velocity.py +264 -0
  70. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_sph.py +381 -2
  71. struphy-3.0.3/src/struphy/post_processing/post_processing_tools.py +1345 -0
  72. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/base.py +16 -9
  73. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/propagators_coupling.py +6 -30
  74. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/propagators_fields.py +23 -120
  75. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/propagators_markers.py +39 -79
  76. struphy-3.0.3/src/struphy/simulation/base.py +40 -0
  77. struphy-3.0.3/src/struphy/simulation/sim.py +1377 -0
  78. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/topology/grids.py +5 -0
  79. struphy-3.0.3/src/struphy/utils/__init__.py +0 -0
  80. {struphy-3.0.2 → struphy-3.0.3/src/struphy.egg-info}/PKG-INFO +50 -50
  81. {struphy-3.0.2 → struphy-3.0.3}/src/struphy.egg-info/SOURCES.txt +7 -3
  82. struphy-3.0.3/src/struphy.egg-info/requires.txt +70 -0
  83. struphy-3.0.2/src/struphy/initial/base.py +0 -48
  84. struphy-3.0.2/src/struphy/main.py +0 -847
  85. struphy-3.0.2/src/struphy/models/base.py +0 -1809
  86. struphy-3.0.2/src/struphy/models/euler_sph.py +0 -140
  87. struphy-3.0.2/src/struphy/models/species.py +0 -250
  88. struphy-3.0.2/src/struphy/particles/parameters.py +0 -238
  89. struphy-3.0.2/src/struphy/post_processing/post_processing_tools.py +0 -835
  90. struphy-3.0.2/src/struphy.egg-info/requires.txt +0 -70
  91. {struphy-3.0.2 → struphy-3.0.3}/LICENSE +0 -0
  92. {struphy-3.0.2 → struphy-3.0.3}/README.md +0 -0
  93. {struphy-3.0.2 → struphy-3.0.3}/setup.cfg +0 -0
  94. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/__init__.py +0 -0
  95. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/domains/__init__.py +0 -0
  96. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/equils/__init__.py +0 -0
  97. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/grids/__init__.py +0 -0
  98. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/maxwellians/__init__.py +0 -0
  99. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/ode/__init__.py +0 -0
  100. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/options/__init__.py +0 -0
  101. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/particles/__init__.py +0 -0
  102. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/api/perturbations/__init__.py +0 -0
  103. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/__init__.py +0 -0
  104. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/bsplines.py +0 -0
  105. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/bsplines_kernels.py +0 -0
  106. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  107. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  108. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
  109. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  110. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/tests/__init__.py +0 -0
  111. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/tests/test_bsplines_kers.py +0 -0
  112. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
  113. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/compile_struphy.mk +0 -0
  114. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/conftest.py +0 -0
  115. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/__init__.py +0 -0
  116. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/compile.py +0 -0
  117. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/format.py +0 -0
  118. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/likwid.py +0 -0
  119. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/main.py +0 -0
  120. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/params.py +0 -0
  121. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/parsers.py +0 -0
  122. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/profile.py +0 -0
  123. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/test.py +0 -0
  124. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/console/tests/test_console.py +0 -0
  125. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/dependencies.py +0 -0
  126. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/diagnostics/__init__.py +0 -0
  127. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/diagnostics/console_diagn.py +0 -0
  128. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/diagnostics/diagn_tools.py +0 -0
  129. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/diagnostics/paraview/__init__.py +0 -0
  130. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
  131. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
  132. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/dispersion_relations/__init__.py +0 -0
  133. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/dispersion_relations/analytic.py +0 -0
  134. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/dispersion_relations/base.py +0 -0
  135. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/dispersion_relations/utilities.py +0 -0
  136. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  137. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/examples/_draw_parallel.py +0 -0
  138. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/examples/restelli2018/__init__.py +0 -0
  139. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/examples/restelli2018/callables.py +0 -0
  140. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/__init__.py +0 -0
  141. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  142. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/basis_projection_kernels.py +0 -0
  143. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/basis_projection_ops.py +0 -0
  144. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/linear_operators.py +0 -0
  145. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/local_projectors_kernels.py +0 -0
  146. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/mass.py +0 -0
  147. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/mass_kernels.py +0 -0
  148. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/preconditioner.py +0 -0
  149. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/projectors.py +0 -0
  150. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/__init__.py +0 -0
  151. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_basis_ops.py +0 -0
  152. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_derham.py +0 -0
  153. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_eval_field.py +0 -0
  154. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_field_init.py +0 -0
  155. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_l2_projectors.py +0 -0
  156. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_local_projectors.py +0 -0
  157. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -0
  158. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_mass_matrices.py +0 -0
  159. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
  160. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
  161. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
  162. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/utilities.py +0 -0
  163. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/utilities_kernels.py +0 -0
  164. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/utilities_local_projectors.py +0 -0
  165. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/feec/variational_utilities.py +0 -0
  166. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/__init__.py +0 -0
  167. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/coil_fields/__init__.py +0 -0
  168. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/coil_fields/base.py +0 -0
  169. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/coil_fields/coil_fields.py +0 -0
  170. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
  171. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
  172. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  173. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
  174. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
  175. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
  176. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
  177. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
  178. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00000000.dat +0 -0
  179. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00001000.dat +0 -0
  180. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_01/parameter.ini +0 -0
  181. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000000.dat +0 -0
  182. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000100.dat +0 -0
  183. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_02/parameter-w7x.ini +0 -0
  184. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00000000.dat +0 -0
  185. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00003307.dat +0 -0
  186. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_03/Neo-spitzer-mirror23-well-opt-1-AR10-1.nc +0 -0
  187. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/gvec/run_03/parameter-fig8.ini +0 -0
  188. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
  189. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/tests/__init__.py +0 -0
  190. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
  191. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/tests/test_generic_equils.py +0 -0
  192. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
  193. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
  194. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/__init__.py +0 -0
  195. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/domains.py +0 -0
  196. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/evaluation_kernels.py +0 -0
  197. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/map_coef/__init__.py +0 -0
  198. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/mappings_kernels.py +0 -0
  199. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/tests/__init__.py +0 -0
  200. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/tests/test_domain.py +0 -0
  201. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/transform_kernels.py +0 -0
  202. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/utilities.py +0 -0
  203. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/geometry/utilities_kernels.py +0 -0
  204. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/initial/__init__.py +0 -0
  205. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/initial/eigenfunctions.py +0 -0
  206. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/initial/tests/__init__.py +0 -0
  207. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/initial/utilities.py +0 -0
  208. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/io/__init__.py +0 -0
  209. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/io/output_handling.py +0 -0
  210. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kernel_arguments/__init__.py +0 -0
  211. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kernel_arguments/local_projectors_args_kernels.py +0 -0
  212. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kernel_arguments/pusher_args_kernels.py +0 -0
  213. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kinetic_background/__init__.py +0 -0
  214. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kinetic_background/maxwellians.py +0 -0
  215. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kinetic_background/moment_functions.py +0 -0
  216. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kinetic_background/tests/__init__.py +0 -0
  217. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kinetic_background/tests/test_base.py +0 -0
  218. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/kinetic_background/tests/test_maxwellians.py +0 -0
  219. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/__init__.py +0 -0
  220. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  221. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  222. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/saddle_point.py +0 -0
  223. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/schur_solver.py +0 -0
  224. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/solver.py +0 -0
  225. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  226. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  227. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/tests/__init__.py +0 -0
  228. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +0 -0
  229. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +0 -0
  230. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +0 -0
  231. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +0 -0
  232. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/__init__.py +0 -0
  233. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/default_params/__init__.py +0 -0
  234. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/default_params/test_models.py +0 -0
  235. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/tests/verification/__init__.py +0 -0
  236. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/models/utils.py +0 -0
  237. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/ode/__init__.py +0 -0
  238. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/ode/solvers.py +0 -0
  239. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/ode/tests/__init__.py +0 -0
  240. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/ode/tests/test_ode_feec.py +0 -0
  241. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/ode/utils.py +0 -0
  242. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/particles/__init__.py +0 -0
  243. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/physics/__init__.py +0 -0
  244. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/physics/physics.py +0 -0
  245. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/__init__.py +0 -0
  246. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/__init__.py +0 -0
  247. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/accum_kernels.py +0 -0
  248. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -0
  249. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  250. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/filter.py +0 -0
  251. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
  252. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
  253. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/accumulation/particles_to_grid.py +0 -0
  254. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/pushing/__init__.py +0 -0
  255. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/pushing/pusher.py +0 -0
  256. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/pushing/pusher_kernels_gc.py +0 -0
  257. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
  258. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/sampling_kernels.py +0 -0
  259. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/sobol_seq.py +0 -0
  260. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/sorting_kernels.py +0 -0
  261. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/sph_eval_kernels.py +0 -0
  262. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/__init__.py +0 -0
  263. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_accum_vec_H1.py +0 -0
  264. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_draw_parallel.py +0 -0
  265. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
  266. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_pushers.py +0 -0
  267. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_sorting.py +0 -0
  268. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/tests/test_tesselation.py +0 -0
  269. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/utilities.py +0 -0
  270. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/pic/utilities_kernels.py +0 -0
  271. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/polar/__init__.py +0 -0
  272. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/polar/basic.py +0 -0
  273. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/polar/extraction_operators.py +0 -0
  274. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/polar/linear_operators.py +0 -0
  275. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/polar/tests/__init__.py +0 -0
  276. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/polar/tests/test_polar.py +0 -0
  277. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/__init__.py +0 -0
  278. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/cprofile_analyser.py +0 -0
  279. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/likwid/__init__.py +0 -0
  280. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/likwid/hardware_dicts.py +0 -0
  281. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/likwid/likwid_parser.py +0 -0
  282. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/likwid/maxplotlylib.py +0 -0
  283. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/likwid/plot_likwidproject.py +0 -0
  284. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/likwid/plot_time_traces.py +0 -0
  285. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/likwid/roofline_plotter.py +0 -0
  286. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/orbits/__init__.py +0 -0
  287. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/orbits/orbits_kernels.py +0 -0
  288. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/orbits/orbits_tools.py +0 -0
  289. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/profile_struphy.py +0 -0
  290. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/post_processing/tests/__init__.py +0 -0
  291. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/__init__.py +0 -0
  292. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/tests/__init__.py +0 -0
  293. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +0 -0
  294. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/propagators/tests/test_poisson.py +0 -0
  295. {struphy-3.0.2/src/struphy/topology → struphy-3.0.3/src/struphy/simulation}/__init__.py +0 -0
  296. {struphy-3.0.2/src/struphy/utils → struphy-3.0.3/src/struphy/topology}/__init__.py +0 -0
  297. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/utils/clone_config.py +0 -0
  298. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/utils/cupy_vs_numpy.py +0 -0
  299. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/utils/pyccel.py +0 -0
  300. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/utils/test_clone_config.py +0 -0
  301. {struphy-3.0.2 → struphy-3.0.3}/src/struphy/utils/utils.py +0 -0
  302. {struphy-3.0.2 → struphy-3.0.3}/src/struphy.egg-info/dependency_links.txt +0 -0
  303. {struphy-3.0.2 → struphy-3.0.3}/src/struphy.egg-info/entry_points.txt +0 -0
  304. {struphy-3.0.2 → struphy-3.0.3}/src/struphy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: struphy
3
- Version: 3.0.2
3
+ Version: 3.0.3
4
4
  Summary: Multi-model plasma physics package
5
5
  Author: Max Planck Institute for Plasma Physics
6
6
  Author-email: stefan.possanner@ipp.mpg.de, max.lindqvist@ipp.mpg.de, eric.sonnendruecker@ipp.mpg.de
@@ -30,61 +30,61 @@ Classifier: Programming Language :: Python :: 3
30
30
  Requires-Python: >=3.10
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE
33
- Requires-Dist: numpy
34
- Requires-Dist: cunumpy
35
- Requires-Dist: pyccel>=2.1
36
- Requires-Dist: feectools
37
- Requires-Dist: scipy
38
- Requires-Dist: h5py
39
- Requires-Dist: matplotlib
40
- Requires-Dist: pyyaml
41
- Requires-Dist: vtk
42
- Requires-Dist: tqdm
43
- Requires-Dist: argcomplete
44
- Requires-Dist: pytest
45
- Requires-Dist: pytest-mpi
46
- Requires-Dist: pytest-testmon
47
- Requires-Dist: line_profiler
48
- Requires-Dist: scope-profiler>=0.1.7
33
+ Requires-Dist: numpy<=2.2.6
34
+ Requires-Dist: cunumpy<=0.1
35
+ Requires-Dist: pyccel<=2.1.0,>=2.1
36
+ Requires-Dist: feectools<=0.1.3
37
+ Requires-Dist: scipy<=1.15.3
38
+ Requires-Dist: h5py<=3.15.1
39
+ Requires-Dist: matplotlib<=3.10.7
40
+ Requires-Dist: pyyaml<=6.0.3
41
+ Requires-Dist: vtk<=9.6.0
42
+ Requires-Dist: tqdm<=4.67.3
43
+ Requires-Dist: argcomplete<=3.6.3
44
+ Requires-Dist: plotly<=6.4.0
45
+ Requires-Dist: pytest<=9.0.2
46
+ Requires-Dist: pytest-mpi<=0.6
47
+ Requires-Dist: pytest-testmon<=2.2.0
48
+ Requires-Dist: line_profiler<=5.0.1
49
+ Requires-Dist: scope-profiler<=0.1.7,>=0.1.7
49
50
  Provides-Extra: phys
50
- Requires-Dist: gvec>=1.1.0; extra == "phys"
51
- Requires-Dist: desc-opt; extra == "phys"
51
+ Requires-Dist: gvec<=1.3.1,>=1.1.0; extra == "phys"
52
+ Requires-Dist: desc-opt<=0.16.0; extra == "phys"
52
53
  Provides-Extra: dev
53
54
  Requires-Dist: struphy[mpi]; extra == "dev"
54
- Requires-Dist: notebook; extra == "dev"
55
- Requires-Dist: autopep8; extra == "dev"
56
- Requires-Dist: isort; extra == "dev"
57
- Requires-Dist: flake8; extra == "dev"
58
- Requires-Dist: pylint; extra == "dev"
59
- Requires-Dist: ssort; extra == "dev"
60
- Requires-Dist: add-trailing-comma; extra == "dev"
61
- Requires-Dist: ruff>=0.15.0; extra == "dev"
62
- Requires-Dist: pre-commit; extra == "dev"
63
- Requires-Dist: nbstripout; extra == "dev"
64
- Requires-Dist: tabulate; extra == "dev"
65
- Requires-Dist: tomli-w; extra == "dev"
66
- Requires-Dist: kaleido; extra == "dev"
67
- Requires-Dist: pandas; extra == "dev"
68
- Requires-Dist: plotly; extra == "dev"
55
+ Requires-Dist: notebook<=7.5.3; extra == "dev"
56
+ Requires-Dist: autopep8<=2.3.2; extra == "dev"
57
+ Requires-Dist: isort<=8.0.0; extra == "dev"
58
+ Requires-Dist: flake8<=7.3.0; extra == "dev"
59
+ Requires-Dist: pylint<=4.0.5; extra == "dev"
60
+ Requires-Dist: ssort<=0.16.0; extra == "dev"
61
+ Requires-Dist: add-trailing-comma<=4.0.0; extra == "dev"
62
+ Requires-Dist: ruff<=0.15.2,>=0.15.0; extra == "dev"
63
+ Requires-Dist: pre-commit<=4.5.1; extra == "dev"
64
+ Requires-Dist: nbstripout<=0.9.1; extra == "dev"
65
+ Requires-Dist: tabulate<=0.9.0; extra == "dev"
66
+ Requires-Dist: tomli-w<=1.2.0; extra == "dev"
67
+ Requires-Dist: kaleido<=1.2.0; extra == "dev"
68
+ Requires-Dist: pandas<=3.0.1; extra == "dev"
69
69
  Provides-Extra: mpi
70
- Requires-Dist: mpi4py; extra == "mpi"
70
+ Requires-Dist: mpi4py<=4.1.1; extra == "mpi"
71
71
  Provides-Extra: doc
72
72
  Requires-Dist: struphy[phys]; extra == "doc"
73
- Requires-Dist: jupyter; extra == "doc"
74
- Requires-Dist: nbconvert; extra == "doc"
75
- Requires-Dist: ipykernel; extra == "doc"
76
- Requires-Dist: sphinx; extra == "doc"
77
- Requires-Dist: sphinx-design; extra == "doc"
78
- Requires-Dist: lxml_html_clean; extra == "doc"
79
- Requires-Dist: sphinxcontrib-napoleon; extra == "doc"
80
- Requires-Dist: sphinx-copybutton; extra == "doc"
81
- Requires-Dist: pydata-sphinx-theme; extra == "doc"
82
- Requires-Dist: nbsphinx; extra == "doc"
83
- Requires-Dist: m2r2; extra == "doc"
84
- Requires-Dist: myst-parser; extra == "doc"
85
- Requires-Dist: mistune; extra == "doc"
86
- Requires-Dist: docutils; extra == "doc"
87
- Requires-Dist: ipyparallel; extra == "doc"
73
+ Requires-Dist: jupyter<=1.1.1; extra == "doc"
74
+ Requires-Dist: nbconvert<=6.5.4; extra == "doc"
75
+ Requires-Dist: ipykernel<=7.1.0; extra == "doc"
76
+ Requires-Dist: sphinx<=9.1.0; extra == "doc"
77
+ Requires-Dist: sphinx-design<=0.7.0; extra == "doc"
78
+ Requires-Dist: lxml_html_clean<=0.4.3; extra == "doc"
79
+ Requires-Dist: sphinxcontrib-napoleon<=0.7; extra == "doc"
80
+ Requires-Dist: sphinx-copybutton<=0.5.2; extra == "doc"
81
+ Requires-Dist: pydata-sphinx-theme<=0.16.1; extra == "doc"
82
+ Requires-Dist: nbsphinx<=0.9.8; extra == "doc"
83
+ Requires-Dist: m2r2<=0.3.4; extra == "doc"
84
+ Requires-Dist: myst-parser<=5.0.0; extra == "doc"
85
+ Requires-Dist: mistune<=0.8.4; extra == "doc"
86
+ Requires-Dist: docutils<=0.22.4; extra == "doc"
87
+ Requires-Dist: ipyparallel<=9.0.2; extra == "doc"
88
88
  Provides-Extra: likwid
89
89
  Requires-Dist: struphy[dev]; extra == "likwid"
90
90
  Requires-Dist: pylikwid; extra == "likwid"
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "struphy"
9
- version = "3.0.2"
9
+ version = "3.0.3"
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.10"
12
12
  authors = [
@@ -21,24 +21,25 @@ keywords = [
21
21
  ]
22
22
  classifiers = [
23
23
  "Programming Language :: Python :: 3",
24
- ]
24
+ ]
25
25
  dependencies = [
26
- 'numpy',
27
- 'cunumpy',
28
- 'pyccel>=2.1',
29
- 'feectools',
30
- 'scipy',
31
- 'h5py',
32
- 'matplotlib',
33
- 'pyyaml',
34
- 'vtk',
35
- 'tqdm',
36
- 'argcomplete',
37
- 'pytest',
38
- 'pytest-mpi',
39
- 'pytest-testmon',
40
- 'line_profiler',
41
- 'scope-profiler>=0.1.7',
26
+ "numpy<=2.2.6",
27
+ "cunumpy<=0.1",
28
+ "pyccel<=2.1.0, >=2.1",
29
+ "feectools<=0.1.3",
30
+ "scipy<=1.15.3",
31
+ "h5py<=3.15.1",
32
+ "matplotlib<=3.10.7",
33
+ "pyyaml<=6.0.3",
34
+ "vtk<=9.6.0",
35
+ "tqdm<=4.67.3",
36
+ "argcomplete<=3.6.3",
37
+ "plotly<=6.4.0",
38
+ "pytest<=9.0.2",
39
+ "pytest-mpi<=0.6",
40
+ "pytest-testmon<=2.2.0",
41
+ "line_profiler<=5.0.1",
42
+ "scope-profiler<=0.1.7, >=0.1.7",
42
43
  ]
43
44
 
44
45
  [project.license]
@@ -46,47 +47,46 @@ file = "LICENSE"
46
47
 
47
48
  [project.optional-dependencies]
48
49
  phys = [
49
- 'gvec>=1.1.0',
50
- 'desc-opt',
50
+ "gvec<=1.3.1, >=1.1.0",
51
+ "desc-opt<=0.16.0",
51
52
  ]
52
53
  dev = [
53
54
  "struphy[mpi]",
54
- "notebook",
55
- "autopep8",
56
- "isort",
57
- "flake8",
58
- "pylint",
59
- "ssort",
60
- "add-trailing-comma",
61
- "ruff>=0.15.0",
62
- "pre-commit",
63
- "nbstripout",
64
- "tabulate",
65
- "tomli-w",
66
- "kaleido",
67
- "pandas",
68
- "plotly",
55
+ "notebook<=7.5.3",
56
+ "autopep8<=2.3.2",
57
+ "isort<=8.0.0",
58
+ "flake8<=7.3.0",
59
+ "pylint<=4.0.5",
60
+ "ssort<=0.16.0",
61
+ "add-trailing-comma<=4.0.0",
62
+ "ruff<=0.15.2, >=0.15.0",
63
+ "pre-commit<=4.5.1",
64
+ "nbstripout<=0.9.1",
65
+ "tabulate<=0.9.0",
66
+ "tomli-w<=1.2.0",
67
+ "kaleido<=1.2.0",
68
+ "pandas<=3.0.1",
69
69
  ]
70
70
  mpi = [
71
- 'mpi4py',
71
+ "mpi4py<=4.1.1",
72
72
  ]
73
73
  doc = [
74
74
  "struphy[phys]",
75
- "jupyter",
76
- "nbconvert",
77
- "ipykernel",
78
- "sphinx",
79
- "sphinx-design",
80
- "lxml_html_clean",
81
- "sphinxcontrib-napoleon",
82
- "sphinx-copybutton",
83
- "pydata-sphinx-theme",
84
- "nbsphinx",
85
- "m2r2",
86
- "myst-parser",
87
- "mistune",
88
- "docutils",
89
- "ipyparallel",
75
+ "jupyter<=1.1.1",
76
+ "nbconvert<=6.5.4",
77
+ "ipykernel<=7.1.0",
78
+ "sphinx<=9.1.0",
79
+ "sphinx-design<=0.7.0",
80
+ "lxml_html_clean<=0.4.3",
81
+ "sphinxcontrib-napoleon<=0.7",
82
+ "sphinx-copybutton<=0.5.2",
83
+ "pydata-sphinx-theme<=0.16.1",
84
+ "nbsphinx<=0.9.8",
85
+ "m2r2<=0.3.4",
86
+ "myst-parser<=5.0.0",
87
+ "mistune<=0.8.4",
88
+ "docutils<=0.22.4",
89
+ "ipyparallel<=9.0.2",
90
90
  ]
91
91
  likwid = [
92
92
  "struphy[dev]",
@@ -137,17 +137,12 @@ ignore = [
137
137
  [tool.isort]
138
138
  profile = "black"
139
139
  line_length = 120
140
- # multi_line_output = 3
141
- # include_trailing_comma = true
142
- # force_grid_wrap = 0
143
- # combine_as_imports = true
144
140
 
145
141
  [tool.pylint]
146
142
  max-line-length = 120
147
143
 
148
144
  [tool.ruff]
149
145
  line-length = 120
150
- # exclude = ["__pyccel__"]
151
146
 
152
147
  [tool.ruff.lint]
153
148
  ignore = [
@@ -165,7 +160,7 @@ ignore = [
165
160
  "F405",
166
161
  "D211",
167
162
  "D213",
168
- "F841", # Ignore unused variables
163
+ "F841",
169
164
  ]
170
165
 
171
166
  [tool.pytest.ini_options]
@@ -18,6 +18,8 @@ from struphy.api.particles import (
18
18
  WeightsParameters,
19
19
  )
20
20
  from struphy.api.perturbations import perturbations
21
+ from struphy.api.post_processing import PlottingData, PostProcessor
22
+ from struphy.api.simulation import Simulation
21
23
 
22
24
  __all__ = [
23
25
  "domains",
@@ -36,4 +38,7 @@ __all__ = [
36
38
  "DerhamOptions",
37
39
  "FieldsBackground",
38
40
  "ButcherTableau",
41
+ "PostProcessor",
42
+ "PlottingData",
43
+ "Simulation",
39
44
  ]
@@ -6,7 +6,6 @@ from struphy.models.deterministic_particle_diffusion import (
6
6
  from struphy.models.drift_kinetic_electrostatic_adiabatic import (
7
7
  DriftKineticElectrostaticAdiabatic,
8
8
  )
9
- from struphy.models.euler_sph import EulerSPH
10
9
  from struphy.models.guiding_center import GuidingCenter
11
10
  from struphy.models.hasegawa_wakatani import HasegawaWakatani
12
11
  from struphy.models.linear_extended_mh_duniform import LinearExtendedMHDuniform
@@ -49,7 +48,6 @@ __all__ = [
49
48
  "ColdPlasmaVlasov",
50
49
  "DeterministicParticleDiffusion",
51
50
  "DriftKineticElectrostaticAdiabatic",
52
- "EulerSPH",
53
51
  "GuidingCenter",
54
52
  "HasegawaWakatani",
55
53
  "LinearExtendedMHDuniform",
@@ -0,0 +1,3 @@
1
+ from struphy.post_processing.post_processing_tools import PlottingData, PostProcessor
2
+
3
+ __all__ = ["PostProcessor", "PlottingData"]
@@ -0,0 +1,3 @@
1
+ from struphy.simulation.sim import Simulation
2
+
3
+ all = ["Simulation",]
@@ -890,7 +890,7 @@ class Derham:
890
890
  perturbations: Perturbation | list = None,
891
891
  domain: Domain = None,
892
892
  equil: FluidEquilibrium = None,
893
- verbose: bool = True,
893
+ verbose: bool = False,
894
894
  ):
895
895
  """Creat a callable spline function.
896
896
 
@@ -1442,7 +1442,7 @@ class SplineFunction:
1442
1442
  perturbations: Perturbation | list = None,
1443
1443
  domain: Domain = None,
1444
1444
  equil: FluidEquilibrium = None,
1445
- verbose: bool = True,
1445
+ verbose: bool = False,
1446
1446
  ):
1447
1447
  self._name = name
1448
1448
  self._space_id = space_id
@@ -1494,7 +1494,7 @@ class SplineFunction:
1494
1494
  print(f"\nAllocated SplineFuntion '{self.name}' in space '{self.space_id}'.")
1495
1495
 
1496
1496
  if self.backgrounds is not None or self.perturbations is not None:
1497
- self.initialize_coeffs(domain=self.domain, equil=self.equil)
1497
+ self.initialize_coeffs(domain=self.domain, equil=self.equil, verbose=verbose)
1498
1498
 
1499
1499
  @property
1500
1500
  def name(self):
@@ -1675,6 +1675,7 @@ class SplineFunction:
1675
1675
  perturbations: Perturbation | list = None,
1676
1676
  domain: Domain = None,
1677
1677
  equil: FluidEquilibrium = None,
1678
+ verbose: bool = False,
1678
1679
  ):
1679
1680
  """
1680
1681
  Set the initial conditions for self.vector.
@@ -1707,14 +1708,14 @@ class SplineFunction:
1707
1708
  # start from zero coeffs
1708
1709
  self._vector *= 0.0
1709
1710
 
1710
- if MPI.COMM_WORLD.Get_rank() == 0:
1711
+ if verbose and MPI.COMM_WORLD.Get_rank() == 0:
1711
1712
  print(f"Initializing {self.name} ...")
1712
1713
 
1713
1714
  # add backgrounds to initial vector
1714
1715
  if self.backgrounds is not None:
1715
1716
  for fb in self.backgrounds:
1716
1717
  assert isinstance(fb, FieldsBackground)
1717
- if MPI.COMM_WORLD.Get_rank() == 0:
1718
+ if verbose and MPI.COMM_WORLD.Get_rank() == 0:
1718
1719
  print(f"Adding background {fb} ...")
1719
1720
 
1720
1721
  # special case of const
@@ -1769,7 +1770,7 @@ class SplineFunction:
1769
1770
  # add perturbations to coefficient vector
1770
1771
  if self.perturbations is not None:
1771
1772
  for ptb in self.perturbations:
1772
- if MPI.COMM_WORLD.Get_rank() == 0:
1773
+ if verbose and MPI.COMM_WORLD.Get_rank() == 0:
1773
1774
  print(f"Adding perturbation {ptb} ...")
1774
1775
 
1775
1776
  # special case of white noise in logical space for different components
@@ -11,14 +11,60 @@ from struphy.geometry.base import Domain
11
11
 
12
12
  class FluidEquilibrium(metaclass=ABCMeta):
13
13
  """
14
- Base class for callable fluid equilibria consisting of at least
15
- u (velocity), p (pressure) and n (density).
16
-
17
- Any child class must provide the following callables:
18
-
19
- * either ``u_xyz`` or override ``uv``
20
- * either ``p_xyz`` or override ``p0``
21
- * either ``n_xyz`` or override ``n0``
14
+ Abstract base class for callable fluid equilibria on arbitrary domains.
15
+
16
+ This class provides a unified interface for representing fluid equilibrium states,
17
+ including velocity, pressure, and number density fields. It supports coordinate
18
+ transformations between logical (reference) and physical domains through the Domain
19
+ object, enabling computations on mapped domains.
20
+
21
+ Attributes
22
+ ----------
23
+ params : dict
24
+ Dictionary of parameters passed to the class initialization. Automatically
25
+ strips 'self' and '__class__' entries.
26
+ domain : Domain
27
+ Domain object that characterizes the mapping from the logical cube [0, 1]^3
28
+ to the physical domain. Enables coordinate transformations and differential
29
+ form conversions (0-forms, 1-forms, 2-forms, 3-forms).
30
+
31
+ Implementation Requirements
32
+ ---------------------------
33
+ Child classes must provide at least one method from each of these pairs:
34
+
35
+ * Velocity: either ``u_xyz`` (Cartesian) or override ``uv`` (logical coordinates)
36
+ * Pressure: either ``p_xyz`` (Cartesian) or override ``p0`` (0-form on logical domain)
37
+ * Number Density: either ``n_xyz`` (Cartesian) or override ``n0`` (0-form on logical domain)
38
+
39
+ Derived Quantities
40
+ ------------------
41
+ The class automatically provides derived fields computed from the basic fields:
42
+
43
+ * Temperature: ``t0``, ``t3`` (from p/n)
44
+ * Thermal velocity: ``vth0``, ``vth3`` (from temperature)
45
+ * Entropy density: ``s0_monoatomic``, ``s3_monoatomic``, ``s0_diatomic``, ``s3_diatomic``
46
+
47
+ Differential Forms
48
+ -------------------
49
+ Vector fields (velocity) are available as:
50
+
51
+ * ``uv``: contravariant components on logical domain
52
+ * ``u1``: 1-form components
53
+ * ``u2``: 2-form components
54
+ * ``u_cart``: Cartesian components with physical coordinates
55
+
56
+ Scalar fields are available as 0-forms (point values) and 3-forms (densities):
57
+
58
+ * ``p0``, ``p3``: pressure
59
+ * ``n0``, ``n3``: number density
60
+ * ``t0``, ``t3``: temperature
61
+ * ``q0``, ``q3``: square root of pressure
62
+
63
+ Notes
64
+ -----
65
+ The class uses abstract methods to enforce implementation in child classes.
66
+ Subclasses should override coordinate-appropriate base methods (CartesianFluidEquilibrium
67
+ or LogicalFluidEquilibrium) to simplify implementation.
22
68
  """
23
69
 
24
70
  @property
@@ -50,6 +96,13 @@ class FluidEquilibrium(metaclass=ABCMeta):
50
96
  assert isinstance(new_domain, Domain) or new_domain is None
51
97
  self._domain = new_domain
52
98
 
99
+ def __repr__(self):
100
+ out = f"{self.__class__.__name__}"
101
+ for k, v in self.params.items():
102
+ out += f"\n {k}:".ljust(20)
103
+ out += f"{v}"
104
+ return out
105
+
53
106
  ###########################
54
107
  # Vector-valued callables #
55
108
  ###########################
@@ -256,7 +309,11 @@ class FluidEquilibrium(metaclass=ABCMeta):
256
309
 
257
310
  class CartesianFluidEquilibrium(FluidEquilibrium):
258
311
  r"""
259
- The callables ``u_xyz``, ``p_xyz`` and ``n_xyz`` must be provided in Cartesian coordinates.
312
+ Specialization for equilibria defined in Cartesian coordinates.
313
+
314
+ Child classes must implement the abstract methods ``u_xyz``, ``p_xyz``, and ``n_xyz``,
315
+ which return velocity, pressure, and number density in Cartesian physical space (x, y, z).
316
+ The base class automatically handles coordinate transformations and differential form conversions.
260
317
  """
261
318
 
262
319
  @abstractmethod
@@ -282,7 +339,12 @@ class CartesianFluidEquilibrium(FluidEquilibrium):
282
339
 
283
340
  class LogicalFluidEquilibrium(FluidEquilibrium):
284
341
  r"""
285
- The callables ``uv``, ``p0`` and ``n0`` must be provided on the logical cube [0, 1]^3.
342
+ Specialization for equilibria defined on the logical cube [0, 1]^3.
343
+
344
+ Child classes must implement the abstract methods ``uv``, ``p0``, and ``n0``,
345
+ which return contravariant velocity, 0-form pressure, and 0-form number density
346
+ on the logical reference domain. Useful for direct implementation when physical
347
+ coordinates are obtained via coordinate transformation through the domain mapping.
286
348
  """
287
349
 
288
350
  @abstractmethod
@@ -309,8 +371,11 @@ class LogicalFluidEquilibrium(FluidEquilibrium):
309
371
 
310
372
  class NumericalFluidEquilibrium(LogicalFluidEquilibrium):
311
373
  r"""
312
- Must provide a (numerical) mapping from the logical cube [0, 1]^3 to the physical domain.
313
- Overrides base class domain.
374
+ Specialization for equilibria with numerically computed domain mappings.
375
+
376
+ Child classes must provide a ``numerical_domain`` property that returns a Domain object
377
+ representing the mapping from the logical cube [0, 1]^3 to the physical domain.
378
+ This class overrides the domain property to use the numerically computed mapping.
314
379
  """
315
380
 
316
381
  @property
@@ -327,12 +392,11 @@ class NumericalFluidEquilibrium(LogicalFluidEquilibrium):
327
392
 
328
393
  class FluidEquilibriumWithB(FluidEquilibrium):
329
394
  """
330
- :ref:`FluidEquilibrium` with B (magnetic field) in addition.
331
-
332
- Any child class must provide the following callables:
395
+ Extension of FluidEquilibrium with magnetic field and its gradient.
333
396
 
334
- * either ``b_xyz`` or override ``bv``
335
- * either ``gradB_xyz`` or override ``gradB1``
397
+ Child classes must implement either Cartesian (``b_xyz``, ``gradB_xyz``) or
398
+ logical (``bv``, ``gradB1``) methods for magnetic field and its gradient.
399
+ Provides methods for 1-form and 2-form transformations of the magnetic field.
336
400
  """
337
401
 
338
402
  @FluidEquilibrium.domain.setter
@@ -624,7 +688,10 @@ class FluidEquilibriumWithB(FluidEquilibrium):
624
688
 
625
689
  class CartesianFluidEquilibriumWithB(CartesianFluidEquilibrium):
626
690
  r"""
627
- The callables ``b_xyz`` and ``gradB_xyz`` must be provided in Cartesian coordinates.
691
+ Specialization for fluid equilibria with magnetic field in Cartesian coordinates.
692
+
693
+ Child classes must implement the abstract methods ``b_xyz`` and ``gradB_xyz``,
694
+ which return magnetic field and its gradient strength in Cartesian physical space.
628
695
  """
629
696
 
630
697
  @abstractmethod
@@ -645,7 +712,10 @@ class CartesianFluidEquilibriumWithB(CartesianFluidEquilibrium):
645
712
 
646
713
  class LogicalFluidEquilibriumWithB(LogicalFluidEquilibrium):
647
714
  r"""
648
- The callable ``bv`` must be provided on the logical cube [0, 1]^3.
715
+ Specialization for fluid equilibria with magnetic field on the logical cube [0, 1]^3.
716
+
717
+ Child classes must implement the abstract methods ``bv`` (contravariant magnetic field)
718
+ and ``gradB1`` (1-form gradient of magnetic field strength) on the logical domain.
649
719
  """
650
720
 
651
721
  @abstractmethod
@@ -669,8 +739,10 @@ class LogicalFluidEquilibriumWithB(LogicalFluidEquilibrium):
669
739
 
670
740
  class NumericalFluidEquilibriumWithB(LogicalFluidEquilibriumWithB):
671
741
  r"""
672
- Must provide a (numerical) mapping from the logical cube [0, 1]^3 to the physical domain.
673
- Overrides base class domain.
742
+ Specialization for fluid equilibria with magnetic field and numerically computed domain mappings.
743
+
744
+ Child classes must provide a ``numerical_domain`` property that returns a Domain object.
745
+ This class overrides the domain property to use the numerically computed mapping.
674
746
  """
675
747
 
676
748
  @property
@@ -687,12 +759,12 @@ class NumericalFluidEquilibriumWithB(LogicalFluidEquilibriumWithB):
687
759
 
688
760
  class MHDequilibrium(FluidEquilibriumWithB):
689
761
  """
690
- :ref:`FluidEquilibriumWithB` with j (current density) in addition.
691
- The mean velocity is returned as j/n (overriding the base class).
692
-
693
- Any child class must provide the following callables:
762
+ Extension of FluidEquilibriumWithB with current density field.
694
763
 
695
- * either ``j_xyz`` or override ``jv``
764
+ Child classes must implement either Cartesian (``j_xyz``) or logical (``jv``) methods
765
+ for current density. The velocity field is derived from current density as j/n,
766
+ overriding the base FluidEquilibrium. Provides methods for 1-form and 2-form
767
+ transformations of the current density.
696
768
  """
697
769
 
698
770
  @FluidEquilibriumWithB.domain.setter
@@ -1221,8 +1293,10 @@ class MHDequilibrium(FluidEquilibriumWithB):
1221
1293
 
1222
1294
  class CartesianMHDequilibrium(MHDequilibrium):
1223
1295
  r"""
1224
- The callables ``b_xyz``, ``j_xyz``, ``p_xyz``, ``n_xyz`` and ``gradB_xyz``
1225
- must be provided in Cartesian coordinates.
1296
+ Specialization for MHD equilibria in Cartesian coordinates.
1297
+
1298
+ Child classes must implement the abstract methods ``b_xyz``, ``j_xyz``, ``p_xyz``,
1299
+ ``n_xyz``, and ``gradB_xyz`` in Cartesian physical space.
1226
1300
  """
1227
1301
 
1228
1302
  @abstractmethod
@@ -1395,8 +1469,10 @@ class AxisymmMHDequilibrium(CartesianMHDequilibrium):
1395
1469
 
1396
1470
  class LogicalMHDequilibrium(MHDequilibrium):
1397
1471
  r"""
1398
- The callables ``bv``, ``jv``, ``p0``, ``n0`` and ``gradB1``
1399
- must be provided on the logical cube [0, 1]^3.
1472
+ Specialization for MHD equilibria on the logical cube [0, 1]^3.
1473
+
1474
+ Child classes must implement the abstract methods ``bv``, ``jv``, ``p0``, ``n0``,
1475
+ and ``gradB1`` on the logical reference domain.
1400
1476
  """
1401
1477
 
1402
1478
  @abstractmethod
@@ -1439,8 +1515,10 @@ class LogicalMHDequilibrium(MHDequilibrium):
1439
1515
 
1440
1516
  class NumericalMHDequilibrium(LogicalMHDequilibrium):
1441
1517
  r"""
1442
- Must provide a (numerical) mapping from the logical cube [0, 1]^3 to the physical domain.
1443
- Overrides base class domain.
1518
+ Specialization for MHD equilibria with numerically computed domain mappings.
1519
+
1520
+ Child classes must provide a ``numerical_domain`` property that returns a Domain object.
1521
+ This class overrides the domain property to use the numerically computed mapping.
1444
1522
  """
1445
1523
 
1446
1524
  @property