struphy 2.2.0__tar.gz → 2.3.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 (294) hide show
  1. {struphy-2.2.0 → struphy-2.3.0}/LICENSE +1 -1
  2. {struphy-2.2.0/src/struphy.egg-info → struphy-2.3.0}/PKG-INFO +14 -13
  3. {struphy-2.2.0 → struphy-2.3.0}/pyproject.toml +14 -13
  4. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/bsplines.py +1 -1
  5. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/compile.py +1 -1
  6. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/main.py +16 -16
  7. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/run.py +3 -2
  8. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/test.py +3 -28
  9. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/console_diagn.py +42 -7
  10. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/diagn_tools.py +3 -6
  11. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/examples/_draw_parallel.py +1 -1
  12. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/basis_projection_ops.py +37 -29
  13. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/linear_operators.py +1 -0
  14. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/mass.py +238 -109
  15. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/mass_kernels.py +92 -1
  16. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/preconditioner.py +384 -8
  17. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/projectors.py +1 -1
  18. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/psydac_derham.py +245 -166
  19. struphy-2.3.0/src/struphy/feec/tests/test_field_init.py +909 -0
  20. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +10 -10
  21. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_mass_matrices.py +44 -7
  22. struphy-2.3.0/src/struphy/feec/variational_utilities.py +207 -0
  23. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/base.py +9 -0
  24. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/equils.py +103 -32
  25. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/tests/test_gvec_equil.py +1 -1
  26. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/base.py +12 -11
  27. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/domains.py +13 -13
  28. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/perturbations.py +272 -152
  29. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/tests/test_init_perturbations.py +139 -107
  30. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -1
  31. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +2 -3
  32. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +3 -4
  33. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +1 -1
  34. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +11 -30
  35. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +2 -24
  36. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +11 -30
  37. struphy-2.3.0/src/struphy/io/inp/parameters.yml +109 -0
  38. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_02.yml +4 -18
  39. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_03.yml +1 -1
  40. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_04a.yml +3 -2
  41. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_04b.yml +3 -5
  42. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_05a.yml +3 -13
  43. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_05b.yml +3 -15
  44. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/setup.py +25 -46
  45. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/kinetic_background/base.py +63 -14
  46. struphy-2.3.0/src/struphy/kinetic_background/maxwellians.py +646 -0
  47. struphy-2.3.0/src/struphy/kinetic_background/tests/test_maxwellians.py +1550 -0
  48. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/schur_solver.py +4 -0
  49. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/main.py +2 -1
  50. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/base.py +338 -236
  51. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/fluid.py +57 -26
  52. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/hybrid.py +58 -77
  53. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/kinetic.py +659 -245
  54. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_fluid_models.py +3 -3
  55. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_hybrid_models.py +1 -1
  56. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_kinetic_models.py +4 -4
  57. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_toy_models.py +4 -4
  58. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_xxpproc.py +11 -12
  59. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/toy.py +128 -54
  60. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/accum_kernels.py +14 -28
  61. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/accum_kernels_gc.py +336 -194
  62. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/particles_to_grid.py +54 -14
  63. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/base.py +188 -123
  64. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/particles.py +66 -87
  65. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher_kernels.py +4 -4
  66. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher_kernels_gc.py +13 -6
  67. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_accum_vec_H1.py +6 -7
  68. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_accumulation.py +1 -1
  69. struphy-2.3.0/src/struphy/pic/tests/test_binning.py +638 -0
  70. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_draw_parallel.py +28 -25
  71. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pushers.py +14 -34
  72. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/utilities_kernels.py +65 -16
  73. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/post_processing_tools.py +2 -2
  74. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/base.py +16 -0
  75. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/propagators_coupling.py +141 -198
  76. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/propagators_fields.py +1539 -524
  77. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/propagators_markers.py +4 -5
  78. struphy-2.3.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +587 -0
  79. struphy-2.3.0/src/struphy/propagators/tests/test_poisson.py +430 -0
  80. struphy-2.2.0/src/struphy/psydac-0.1.9-py3-none-any.whl → struphy-2.3.0/src/struphy/psydac-0.1.12-py3-none-any.whl +0 -0
  81. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/tests/test_tutorials.py +1 -1
  82. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/utilities.py +2 -0
  83. {struphy-2.2.0 → struphy-2.3.0/src/struphy.egg-info}/PKG-INFO +14 -13
  84. {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/SOURCES.txt +8 -6
  85. {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/requires.txt +12 -11
  86. struphy-2.2.0/src/struphy/feec/tests/test_noise_init.py +0 -54
  87. struphy-2.2.0/src/struphy/fields_background/electric_equil/analytical.py +0 -24
  88. struphy-2.2.0/src/struphy/fields_background/electric_equil/base.py +0 -60
  89. struphy-2.2.0/src/struphy/io/inp/parameters.yml +0 -156
  90. struphy-2.2.0/src/struphy/kinetic_background/maxwellians.py +0 -831
  91. struphy-2.2.0/src/struphy/propagators/tests/test_fields_propagators.py +0 -357
  92. {struphy-2.2.0 → struphy-2.3.0}/README.md +0 -0
  93. {struphy-2.2.0 → struphy-2.3.0}/setup.cfg +0 -0
  94. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/__init__.py +0 -0
  95. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/__init__.py +0 -0
  96. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/bsplines_kernels.py +0 -0
  97. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
  98. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
  99. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
  100. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
  101. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/tests/__init__.py +0 -0
  102. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/tests/test_bsplines_kernels.py +0 -0
  103. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
  104. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/compile_struphy.mk +0 -0
  105. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/conftest.py +0 -0
  106. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/__init__.py +0 -0
  107. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/params.py +0 -0
  108. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/pproc.py +0 -0
  109. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/profile.py +0 -0
  110. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/units.py +0 -0
  111. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dependencies.py +0 -0
  112. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/__init__.py +0 -0
  113. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/continuous_spectra.py +0 -0
  114. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/paraview/__init__.py +0 -0
  115. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
  116. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
  117. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dispersion_relations/__init__.py +0 -0
  118. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dispersion_relations/analytic.py +0 -0
  119. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dispersion_relations/base.py +0 -0
  120. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
  121. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
  122. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_2d.py +0 -0
  123. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -0
  124. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
  125. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +0 -0
  126. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
  127. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
  128. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
  129. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
  130. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
  131. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
  132. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -0
  133. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_kernels_control_variate.py +0 -0
  134. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -0
  135. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_cv_kernel_2.py +0 -0
  136. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_kernels_control_variate.py +0 -0
  137. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -0
  138. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
  139. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
  140. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
  141. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
  142. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
  143. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
  144. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
  145. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
  146. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
  147. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
  148. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
  149. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
  150. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
  151. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
  152. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
  153. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
  154. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +0 -0
  155. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
  156. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
  157. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
  158. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
  159. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
  160. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
  161. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
  162. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_L2_projector_kernel.py +0 -0
  163. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_L2.py +0 -0
  164. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_local.py +0 -0
  165. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_local_projector_kernel.py +0 -0
  166. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
  167. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
  168. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
  169. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +0 -0
  170. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +0 -0
  171. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
  172. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
  173. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
  174. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
  175. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
  176. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/tests/test_legacy_mhd_projectors.py +0 -0
  177. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/__init__.py +0 -0
  178. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
  179. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/basis_projection_kernels.py +0 -0
  180. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/__init__.py +0 -0
  181. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_basis_operators.py +0 -0
  182. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_basis_ops.py +0 -0
  183. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_derham.py +0 -0
  184. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_eval_field.py +0 -0
  185. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_l2_projectors.py +0 -0
  186. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
  187. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
  188. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
  189. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/utilities.py +0 -0
  190. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/utilities_kernels.py +0 -0
  191. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/__init__.py +0 -0
  192. {struphy-2.2.0/src/struphy/fields_background/electric_equil → struphy-2.3.0/src/struphy/fields_background/mhd_equil}/__init__.py +0 -0
  193. {struphy-2.2.0/src/struphy/fields_background/mhd_equil → struphy-2.3.0/src/struphy/fields_background/mhd_equil/eqdsk}/__init__.py +0 -0
  194. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
  195. {struphy-2.2.0/src/struphy/fields_background/mhd_equil/eqdsk → struphy-2.3.0/src/struphy/fields_background/mhd_equil/eqdsk/data}/__init__.py +0 -0
  196. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
  197. {struphy-2.2.0/src/struphy/fields_background/mhd_equil/eqdsk/data → struphy-2.3.0/src/struphy/fields_background/mhd_equil/gvec}/__init__.py +0 -0
  198. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  199. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
  200. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  201. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
  202. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
  203. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
  204. {struphy-2.2.0/src/struphy/fields_background/mhd_equil/gvec → struphy-2.3.0/src/struphy/fields_background/mhd_equil/gvec/output}/__init__.py +0 -0
  205. {struphy-2.2.0/src/struphy/fields_background/mhd_equil/gvec/output → struphy-2.3.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk}/__init__.py +0 -0
  206. {struphy-2.2.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk → struphy-2.3.0/src/struphy/fields_background/mhd_equil/vmec}/__init__.py +0 -0
  207. {struphy-2.2.0/src/struphy/fields_background/mhd_equil/vmec → struphy-2.3.0/src/struphy/fields_background/tests}/__init__.py +0 -0
  208. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
  209. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
  210. {struphy-2.2.0/src/struphy/fields_background/tests → struphy-2.3.0/src/struphy/geometry}/__init__.py +0 -0
  211. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/evaluation_kernels.py +0 -0
  212. {struphy-2.2.0/src/struphy/geometry → struphy-2.3.0/src/struphy/geometry/map_coef}/__init__.py +0 -0
  213. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/mappings_kernels.py +0 -0
  214. {struphy-2.2.0/src/struphy/geometry/map_coef → struphy-2.3.0/src/struphy/geometry/tests}/__init__.py +0 -0
  215. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/tests/test_domain.py +0 -0
  216. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/transform_kernels.py +0 -0
  217. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/utilities.py +0 -0
  218. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/utilities_kernels.py +0 -0
  219. {struphy-2.2.0/src/struphy/geometry/tests → struphy-2.3.0/src/struphy/initial}/__init__.py +0 -0
  220. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/eigenfunctions.py +0 -0
  221. {struphy-2.2.0/src/struphy/initial → struphy-2.3.0/src/struphy/initial/tests}/__init__.py +0 -0
  222. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/utilities.py +0 -0
  223. {struphy-2.2.0/src/struphy/initial/tests → struphy-2.3.0/src/struphy/io}/__init__.py +0 -0
  224. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/batch_cobra.sh +0 -0
  225. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_016.sh +0 -0
  226. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_032.sh +0 -0
  227. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_064.sh +0 -0
  228. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_128.sh +0 -0
  229. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_256.sh +0 -0
  230. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_512.sh +0 -0
  231. {struphy-2.2.0/src/struphy/io → struphy-2.3.0/src/struphy/io/inp}/__init__.py +0 -0
  232. {struphy-2.2.0/src/struphy/io/inp → struphy-2.3.0/src/struphy/io/out}/__init__.py +0 -0
  233. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/output_handling.py +0 -0
  234. {struphy-2.2.0/src/struphy/io/out → struphy-2.3.0/src/struphy/kinetic_background}/__init__.py +0 -0
  235. {struphy-2.2.0/src/struphy/kinetic_background → struphy-2.3.0/src/struphy/kinetic_background/tests}/__init__.py +0 -0
  236. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/__init__.py +0 -0
  237. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
  238. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/linalg_kron.py +0 -0
  239. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
  240. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
  241. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/tests/__init__.py +0 -0
  242. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -0
  243. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -0
  244. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/__init__.py +0 -0
  245. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/__init__.py +0 -0
  246. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/util.py +0 -0
  247. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/__init__.py +0 -0
  248. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/__init__.py +0 -0
  249. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
  250. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
  251. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/__init__.py +0 -0
  252. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/eval_kernels_gc.py +0 -0
  253. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher.py +0 -0
  254. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
  255. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/sampling_kernels.py +0 -0
  256. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/sobol_seq.py +0 -0
  257. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/__init__.py +0 -0
  258. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
  259. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/__init__.py +0 -0
  260. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
  261. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
  262. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
  263. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
  264. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
  265. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
  266. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
  267. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
  268. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
  269. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
  270. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/utilities.py +0 -0
  271. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/__init__.py +0 -0
  272. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/basic.py +0 -0
  273. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/extraction_operators.py +0 -0
  274. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/linear_operators.py +0 -0
  275. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/tests/__init__.py +0 -0
  276. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
  277. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/tests/test_polar.py +0 -0
  278. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/__init__.py +0 -0
  279. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/cprofile_analyser.py +0 -0
  280. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/pproc_struphy.py +0 -0
  281. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/profile_struphy.py +0 -0
  282. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/tests/__init__.py +0 -0
  283. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/__init__.py +0 -0
  284. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/tests/__init__.py +0 -0
  285. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/__init__.py +0 -0
  286. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/TAE_tokamak.py +0 -0
  287. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/__init__.py +0 -0
  288. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/linearextendedmhd.py +0 -0
  289. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/linearmhdvlasov_cc.py +0 -0
  290. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/linearmhdvlasov_pc.py +0 -0
  291. {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/tests/__init__.py +0 -0
  292. {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/dependency_links.txt +0 -0
  293. {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/entry_points.txt +0 -0
  294. {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- Copyright (c) 2019-2023, Struphy developers, Max Planck Institute for Plasma Physics
1
+ Copyright (c) 2019-2024, Struphy developers, Max Planck Institute for Plasma Physics
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
4
4
  associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: struphy
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: Multi-model plasma physics package
5
5
  Author: Max Planck Institute for Plasma Physics
6
6
  Author-email: stefan.possanner@ipp.mpg.de, eric.sonnendruecker@ipp.mpg.de
7
- License: Copyright (c) 2019-2023, Struphy developers, Max Planck Institute for Plasma Physics
7
+ License: Copyright (c) 2019-2024, Struphy developers, Max Planck Institute for Plasma Physics
8
8
 
9
9
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
10
10
  associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -31,30 +31,31 @@ Requires-Python: <3.12,>=3.7
31
31
  Description-Content-Type: text/markdown
32
32
  License-File: LICENSE
33
33
  Requires-Dist: PyYAML==6.0.1
34
- Requires-Dist: argcomplete==3.2.1
34
+ Requires-Dist: argcomplete==3.2.3
35
35
  Requires-Dist: docutils==0.20.1
36
- Requires-Dist: gvec-to-python==1.2.0
36
+ Requires-Dist: gvec-to-python==1.2.1
37
37
  Requires-Dist: h5py==3.10.0
38
- Requires-Dist: ipyparallel==8.6.1
38
+ Requires-Dist: ipyparallel==8.7.0
39
+ Requires-Dist: lxml_html_clean==0.1.0
39
40
  Requires-Dist: m2r2==0.3.3.post2
40
- Requires-Dist: matplotlib==3.8.2
41
+ Requires-Dist: matplotlib==3.8.3
41
42
  Requires-Dist: mistune==0.8.4
42
43
  Requires-Dist: mpi4py==3.1.5
43
44
  Requires-Dist: myst-parser==2.0.0
44
45
  Requires-Dist: nbsphinx==0.9.3
45
- Requires-Dist: notebook==7.0.6
46
+ Requires-Dist: notebook==7.1.2
46
47
  Requires-Dist: numpy==1.24.4
47
- Requires-Dist: pyccel==1.11.1
48
- Requires-Dist: pydata-sphinx-theme==0.15.1
49
- Requires-Dist: pytest==7.4.4
48
+ Requires-Dist: pyccel==1.11.2
49
+ Requires-Dist: pydata-sphinx-theme==0.15.2
50
+ Requires-Dist: pytest==8.1.1
50
51
  Requires-Dist: pytest-monitor==1.6.6
51
52
  Requires-Dist: pytest-mpi==0.6
52
- Requires-Dist: scipy==1.11.4
53
+ Requires-Dist: scipy==1.12.0
53
54
  Requires-Dist: Sphinx==7.2.6
54
55
  Requires-Dist: sphinxcontrib-napoleon==0.7
55
- Requires-Dist: tqdm==4.66.1
56
+ Requires-Dist: tqdm==4.66.2
56
57
  Requires-Dist: vtk==9.3.0
57
- Requires-Dist: wheel==0.42.0
58
+ Requires-Dist: wheel==0.43.0
58
59
 
59
60
  # Struphy - Structure-preserving hybrid codes
60
61
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "struphy"
7
- version = "2.2.0"
7
+ version = "2.3.0"
8
8
  readme = "README.md"
9
9
  requires-python = ">=3.7, <3.12"
10
10
  license = {file = "LICENSE"}
@@ -20,30 +20,31 @@ classifiers = [
20
20
  ]
21
21
  dependencies = [
22
22
  'PyYAML==6.0.1',
23
- 'argcomplete==3.2.1',
23
+ 'argcomplete==3.2.3',
24
24
  'docutils==0.20.1',
25
- 'gvec-to-python==1.2.0',
25
+ 'gvec-to-python==1.2.1',
26
26
  'h5py==3.10.0',
27
- 'ipyparallel==8.6.1',
27
+ 'ipyparallel==8.7.0',
28
+ 'lxml_html_clean==0.1.0',
28
29
  'm2r2==0.3.3.post2',
29
- 'matplotlib==3.8.2',
30
+ 'matplotlib==3.8.3',
30
31
  'mistune==0.8.4',
31
32
  'mpi4py==3.1.5',
32
33
  'myst-parser==2.0.0',
33
34
  'nbsphinx==0.9.3',
34
- 'notebook==7.0.6',
35
+ 'notebook==7.1.2',
35
36
  'numpy==1.24.4',
36
- 'pyccel==1.11.1',
37
- 'pydata-sphinx-theme==0.15.1',
38
- 'pytest==7.4.4',
37
+ 'pyccel==1.11.2',
38
+ 'pydata-sphinx-theme==0.15.2',
39
+ 'pytest==8.1.1',
39
40
  'pytest-monitor==1.6.6',
40
41
  'pytest-mpi==0.6',
41
- 'scipy==1.11.4',
42
+ 'scipy==1.12.0',
42
43
  'Sphinx==7.2.6',
43
44
  'sphinxcontrib-napoleon==0.7',
44
- 'tqdm==4.66.1',
45
+ 'tqdm==4.66.2',
45
46
  'vtk==9.3.0',
46
- 'wheel==0.42.0',
47
+ 'wheel==0.43.0',
47
48
  ]
48
49
 
49
50
  [project.urls]
@@ -79,5 +80,5 @@ struphy = "struphy.console.main:struphy"
79
80
  ]
80
81
 
81
82
  struphy = ['compile_struphy.mk',
82
- 'psydac-0.1.9-py3-none-any.whl',
83
+ 'psydac-0.1.12-py3-none-any.whl',
83
84
  ]
@@ -373,7 +373,7 @@ def collocation_matrix(knots, degree, xgrid, periodic, normalize=False):
373
373
  # ==============================================================================
374
374
  def histopolation_matrix(knots, degree, xgrid, periodic):
375
375
  """
376
- Computes the histopolation matrix $H_ij = int_x_i^x_{i+1} D_j(x) dx$ of the M_splines.
376
+ Computes the histopolation matrix $H_ij = int_{x_i}^x_{i+1} D_j(x) dx$ of the M_splines.
377
377
 
378
378
  Parameters
379
379
  ----------
@@ -208,7 +208,7 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
208
208
  flags += ' --verbose'
209
209
 
210
210
  # install psydac from wheel if not there
211
- current_ver = '0.1.9'
211
+ current_ver = '0.1.12'
212
212
  psydac_file = 'psydac-' + current_ver + '-py3-none-any.whl'
213
213
 
214
214
  try:
@@ -40,7 +40,7 @@ def struphy():
40
40
 
41
41
  # version message
42
42
  version_message = f'Struphy {__version__}\n'
43
- version_message += 'Copyright 2019-2023 (c) Struphy dev team | Max Planck Institute for Plasma Physics\n'
43
+ version_message += 'Copyright 2019-2024 (c) Struphy dev team | Max Planck Institute for Plasma Physics\n'
44
44
  version_message += 'MIT license\n'
45
45
 
46
46
  # state dictionary
@@ -88,7 +88,8 @@ def struphy():
88
88
  out_folders += [name]
89
89
 
90
90
  # check batch scripts in current batch path:
91
- batch_files = recursive_get_files(b_path, contains=('.sh'), out=[], prefix=[])
91
+ batch_files = recursive_get_files(
92
+ b_path, contains=('.sh'), out=[], prefix=[])
92
93
 
93
94
  # collect available model, contains=('.yml', '.yaml')s
94
95
  list_fluid = []
@@ -225,11 +226,11 @@ def struphy():
225
226
  parser_compile.add_argument('-v', '--verbose',
226
227
  help='call pyccel with --verbose compiler option',
227
228
  action='store_true')
228
-
229
+
229
230
  parser_compile.add_argument('--dependencies',
230
231
  help='print Struphy kernels to be compiled (.py) and their dependencies (.so) on screen',
231
232
  action='store_true')
232
-
233
+
233
234
  parser_compile.add_argument('-y', '--yes',
234
235
  help='say yes to prompt when changing the language',
235
236
  action='store_true')
@@ -306,7 +307,7 @@ def struphy():
306
307
  parser_run.add_argument('--debug',
307
308
  help='launch a Cobra debug run, see https://docs.mpcdf.mpg.de/doc/computing/cobra-user-guide.html#interactive-debug-runs',
308
309
  action='store_true',)
309
-
310
+
310
311
  parser_run.add_argument('--cprofile',
311
312
  help='run with Cprofile',
312
313
  action='store_true',)
@@ -436,20 +437,19 @@ def struphy():
436
437
  formatter_class=lambda prog: argparse.RawTextHelpFormatter(
437
438
  prog, max_help_position=30),
438
439
  help='run Struphy tests',
439
- description='Run available unit tests or test Struphy models, propagators or tutorials.')
440
+ description='Run available unit tests or test Struphy models or tutorials.')
440
441
 
441
442
  parser_test.add_argument('group',
442
443
  type=str,
443
444
  choices=list_models +
444
- ['models'] + ['unit'] + ['propagators'] +
445
+ ['models'] + ['unit'] +
445
446
  ['tutorials'] + ['timings'],
446
447
  metavar='GROUP',
447
448
  help='can be either:\na) a model name (tests on 1 MPI process in "Cuboid", "HollowTorus" and "Tokamak" geometries) \
448
449
  \nb) "models" for quick testing of all models \
449
450
  \nc) "unit" for performing unit tests \
450
- \nd) "propagators" for testing all propagators \
451
- \ne) "tutorials" for notebook tutorials, see `https://struphy.pages.mpcdf.de/struphy/sections/tutorials.html`_ \
452
- \nf) "timings" for creating .html and .json files of test metrics (include --verbose to print metrics to screen)',)
451
+ \nd) "tutorials" for notebook tutorials, see `https://struphy.pages.mpcdf.de/struphy/sections/tutorials.html`_ \
452
+ \ne) "timings" for creating .html and .json files of test metrics (include --verbose to print metrics to screen)',)
453
453
 
454
454
  parser_test.add_argument('--mpi',
455
455
  type=int,
@@ -464,7 +464,7 @@ def struphy():
464
464
  parser_test.add_argument('-v', '--verbose',
465
465
  help='print timings to screen',
466
466
  action='store_true')
467
-
467
+
468
468
  parser_test.add_argument('--monitor',
469
469
  help='use pytest-monitor in tests',
470
470
  action='store_true')
@@ -473,7 +473,7 @@ def struphy():
473
473
  type=int,
474
474
  help='specific tutorial simulation to run (int, optional)',
475
475
  default=None)
476
-
476
+
477
477
  parser_test.add_argument('-T', '--Tend',
478
478
  type=float,
479
479
  help='if GROUP=a), simulation end time in units of the model (default=0.015 with dt=0.005), data is only saved at TEND if set',
@@ -695,11 +695,11 @@ def recursive_get_files(path, contains=('.yml', '.yaml'), out=[], prefix=[]):
695
695
  prefix = [name]
696
696
  else:
697
697
  prefix += [os.path.join(prefix[-1], name)]
698
- recursive_get_files(os.path.join(path, name),
699
- contains=contains,
700
- out=out,
698
+ recursive_get_files(os.path.join(path, name),
699
+ contains=contains,
700
+ out=out,
701
701
  prefix=prefix)
702
702
  if n_folders == 0 and len(prefix) != 0:
703
703
  prefix.pop()
704
704
 
705
- return out
705
+ return out
@@ -149,11 +149,12 @@ def struphy_run(model,
149
149
  command += ['-r']
150
150
 
151
151
  if cprofile:
152
- print('Cprofile turned on.')
152
+ print('\nCprofile turned on.')
153
153
  else:
154
- print('Cprofile turned off.')
154
+ print('\nCprofile turned off.')
155
155
 
156
156
  # run command as subprocess
157
+ print(f"\nRunning the following command:\n{' '.join(command)}")
157
158
  subprocess.run(command, check=True, cwd=libpath)
158
159
 
159
160
  # run in batch mode
@@ -53,7 +53,7 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
53
53
  'pytest',
54
54
  '--no-monitor'*(not monitor),
55
55
  '-k',
56
- 'not _models and not _propagators and not _tutorial and not pproc',
56
+ 'not _models and not _tutorial and not pproc',
57
57
  '--with-mpi',
58
58
  '--restrict-scope-to',
59
59
  'module',
@@ -127,31 +127,6 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
127
127
  '--no-monitor',],
128
128
  check=True, cwd=libpath)
129
129
 
130
- elif 'propagators' in group:
131
- pymon_file = os.path.join(pymon_abs, '.pymon_propagators')
132
- if os.path.isfile(pymon_file):
133
- os.remove(pymon_file)
134
-
135
- subprocess.run(['mpirun',
136
- '-n',
137
- str(mpi),
138
- 'pytest',
139
- '--no-monitor'*(not monitor),
140
- '-k',
141
- '_propagators',
142
- '--with-mpi',
143
- '--restrict-scope-to',
144
- 'module',
145
- '--db',
146
- '_pymon/.pymon_propagators',
147
- '--description',
148
- f'language={state["last_used_language"]}, compiler={state["last_used_compiler"]}, omp_pic={state["last_used_omp_pic"]}, omp_feec={state["last_used_omp_feec"]}',
149
- '--tag',
150
- f'struphy={importlib.metadata.version("struphy")}',
151
- '--tag',
152
- f'pyccel={pyccel.__version__}',],
153
- check=True, cwd=libpath)
154
-
155
130
  elif 'tutorials' in group:
156
131
  pymon_file = os.path.join(pymon_abs, '.pymon_tutorials')
157
132
  if os.path.isfile(pymon_file):
@@ -204,7 +179,7 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
204
179
 
205
180
  elif 'timings' in group:
206
181
 
207
- for gr in ['unit', 'models', 'propagators', 'tutorials']:
182
+ for gr in ['unit', 'models', 'tutorials']:
208
183
  _file = os.path.join(pymon_abs, '.pymon_' + gr)
209
184
  if os.path.isfile(_file):
210
185
  pymon_html_json(gr, verbose=verbose)
@@ -238,7 +213,7 @@ def pymon_html_json(group, verbose=False):
238
213
  Parameters
239
214
  ----------
240
215
  group : str
241
- One of "unit", "models", "propagators", "tutorials" or "pproc".
216
+ One of "unit", "models", "tutorials" or "pproc".
242
217
  '''
243
218
 
244
219
  libpath = struphy.__path__[0]
@@ -71,6 +71,12 @@ def main():
71
71
  with open(path + '/parameters.yml') as file:
72
72
  params = yaml.load(file, Loader=yaml.FullLoader)
73
73
 
74
+ # Get model name
75
+ with open(path + '/meta.txt', 'r') as file:
76
+ for line in file.readlines():
77
+ if line[0:10] == 'model_name':
78
+ model_name = line.split(':')[1].strip()
79
+
74
80
  if 'plot_scalars' in actions:
75
81
  plot_scalars(saved_time,
76
82
  saved_scalars,
@@ -81,13 +87,38 @@ def main():
81
87
 
82
88
  if 'plot_distr' in actions:
83
89
  for species in params['kinetic'].keys():
90
+ # Get model class
91
+ from struphy.models import fluid, kinetic, hybrid, toy
92
+ objs = [fluid, kinetic, hybrid, toy]
93
+ for obj in objs:
94
+ try:
95
+ model_class = getattr(obj, model_name)
96
+ except AttributeError:
97
+ pass
98
+
99
+ # get particles class name
100
+ species_dict = model_class.species()
101
+ particles_class_name = species_dict['kinetic'][species]
102
+
103
+ # Get default background of particles class
104
+ from struphy.pic import particles
105
+ default_bckgr_type = getattr(particles, particles_class_name).default_bckgr_params()['type']
106
+
107
+ # Get default background parameters
108
+ from struphy.kinetic_background import maxwellians
109
+ default_bckgr_params = getattr(maxwellians, default_bckgr_type).default_bckgr_params()
110
+
84
111
  # Set velocity point of evaluation to v_shift of background params if not given by input
85
112
  if params['kinetic'][species]['markers']['type'] == 'full_f':
86
113
  for k in range(1, 4):
87
114
  if grid_slices['v' + str(k)] is None:
88
- bckgr_type = params['kinetic'][species]['init']['type']
89
- bckgr_param = params['kinetic'][species]['init'][bckgr_type]['u' + str(
90
- k)]
115
+ key = 'u' + str(k)
116
+ bckgr_type = params['kinetic'][species]['background']['type']
117
+
118
+ if key not in params['kinetic'][species]['background'][bckgr_type].keys():
119
+ bckgr_param = default_bckgr_params[key]
120
+ else:
121
+ bckgr_param = params['kinetic'][species]['background'][bckgr_type][key]
91
122
  if isinstance(bckgr_param, dict):
92
123
  grid_slices['v' + str(k)] = \
93
124
  bckgr_param['u0' + str(k)]
@@ -109,10 +140,14 @@ def main():
109
140
  # Get index of where to plot in time
110
141
  time_idx = np.argmin(np.abs(time - saved_time))
111
142
 
112
- plot_distr_fun(path=os.path.join(path, 'post_processing', 'kinetic_data', species),
113
- time_idx=time_idx,
114
- grid_slices=grid_slices,
115
- save_plot=True, savepath=path)
143
+ plot_distr_fun(
144
+ path=os.path.join(
145
+ path, 'post_processing', 'kinetic_data', species
146
+ ),
147
+ time_idx=time_idx,
148
+ grid_slices=grid_slices,
149
+ save_plot=True, savepath=path,
150
+ )
116
151
 
117
152
  file.close()
118
153
 
@@ -12,8 +12,7 @@ def power_spectrum_2d(values, name, code, grids,
12
12
  grids_mapped=None, component=0, slice_at=[None, 0, 0],
13
13
  do_plot=False, disp_name=None, disp_params={},
14
14
  save_plot=False, save_name=None, file_format='png'):
15
- """
16
- Perform fft in space-time, (t, x) -> (omega, k), where x can be a logical or physical coordinate.
15
+ """ Perform fft in space-time, (t, x) -> (omega, k), where x can be a logical or physical coordinate.
17
16
  Returns values if plot=False.
18
17
 
19
18
  Parameters
@@ -176,8 +175,7 @@ def power_spectrum_2d(values, name, code, grids,
176
175
 
177
176
 
178
177
  def plot_scalars(time, scalar_quantities, scalars_plot=[], do_log=False, save_plot=False, savedir=None, file_format='png'):
179
- """
180
- Plot the scalar quantities and the relative error in the total energy for a simulation.
178
+ """ Plot the scalar quantities and the relative error in the total energy for a simulation.
181
179
 
182
180
  Parameters
183
181
  ----------
@@ -251,8 +249,7 @@ def plot_scalars(time, scalar_quantities, scalars_plot=[], do_log=False, save_pl
251
249
 
252
250
 
253
251
  def plot_distr_fun(path, time_idx, grid_slices, save_plot=False, savepath=None, file_format='png'):
254
- """
255
- Plot the binned distribution function at given slices of the phase space.
252
+ """ Plot the binned distribution function at given slices of the phase space.
256
253
 
257
254
  Parameters
258
255
  ----------
@@ -40,7 +40,7 @@ def main():
40
40
 
41
41
  # create particles
42
42
  particles = Particles6D(
43
- 'energetic_ions', **marker_params, derham=derham)
43
+ 'energetic_ions', **marker_params, derham=derham, bckgr_params=None)
44
44
 
45
45
  comm.Barrier()
46
46
  print('Number of particles w/wo holes on each process before sorting : ')
@@ -41,7 +41,7 @@ class BasisProjectionOperators:
41
41
  if np.any([p == 1 and Nel > 1 for p, Nel in zip(derham.p, derham.Nel)]):
42
42
  if derham.comm.Get_rank() == 0:
43
43
  print(
44
- f'\nWARNING: Class "BasisProjectionOperators" called with p={derham.p} (interpolation of piece-wise constants should be avoided).\n')
44
+ f'\nWARNING: Class "BasisProjectionOperators" called with p={derham.p} (interpolation of piece-wise constants should be avoided).')
45
45
 
46
46
  self._derham = derham
47
47
  self._domain = domain
@@ -1285,35 +1285,39 @@ def get_span_and_basis(pts, space):
1285
1285
 
1286
1286
  class CoordinateProjector(LinearOperator):
1287
1287
  r"""
1288
- Class of projectors on one component of a ProductFemSpace. Represent the projection on the i-th component :
1288
+ Class of projectors on one component of a ProductFemSpace.
1289
+ Represent the projection on the :math:`\mu`-th component :
1289
1290
 
1290
1291
  .. math::
1291
- P_i : X = V_1 \times V_2 \times ... \times V_n \longrightarrow V_i \\
1292
- \mathbf{x} = (x_1,...,x_n) \mapsto x_i
1293
-
1292
+
1293
+ \begin{align}
1294
+ P_\mu : \ & V_1 \times \ldots \times V_\mu \times \ldots \times V_n \longrightarrow V_\mu \,,
1295
+ \\[2mm]
1296
+ &\vec{x} = (x_1,\ldots,x_\mu,\ldots ,x_n) \mapsto x_\mu \,.
1297
+ \end{align}
1294
1298
 
1295
1299
  Parameters
1296
1300
  ----------
1297
- i : int
1298
- The component on which to project
1301
+ mu : int
1302
+ The component on which to project.
1299
1303
 
1300
1304
  V : psydac.fem.basic.(Product)FemSpace
1301
1305
  Finite element spline space (domain, input space).
1302
1306
 
1303
- Vi : psydac.fem.basic.FemSpace
1304
- Finite element spline space (codomain, out space), must be V i-th space
1307
+ Vmu : psydac.fem.basic.FemSpace
1308
+ Finite element spline space (codomain, out space), must be :math:`\mu`-th space of V.
1305
1309
  """
1306
1310
 
1307
- def __init__(self, i, V, Vi):
1311
+ def __init__(self, mu, V, Vmu):
1308
1312
  assert isinstance(V, FemSpace)
1309
- assert isinstance(i, int)
1310
- assert V.spaces[i] == Vi
1313
+ assert isinstance(mu, int)
1314
+ assert V.spaces[mu] == Vmu
1311
1315
 
1312
1316
  self.full_space = V
1313
- self.sub_space = Vi
1314
- self.dir = i
1317
+ self.sub_space = Vmu
1318
+ self.dir = mu
1315
1319
  self._domain = V.vector_space
1316
- self._codomain = Vi.vector_space
1320
+ self._codomain = Vmu.vector_space
1317
1321
  self._dtype = V.vector_space.dtype
1318
1322
 
1319
1323
  @property
@@ -1364,34 +1368,39 @@ class CoordinateProjector(LinearOperator):
1364
1368
 
1365
1369
  class CoordinateInclusion(LinearOperator):
1366
1370
  r"""
1367
- Class of inclusion operator from one component of a ProductFemSpace. Represent the canonical inclusion on the i-th component :
1371
+ Class of inclusion operator from one component of a ProductFemSpace.
1372
+ Represent the canonical inclusion on the :math:`\mu`-th component :
1368
1373
 
1369
1374
  .. math::
1370
- I_i : V_i \longrightarrow X = V_1 \times V_2 \times ... \times V_n \\
1371
- x_i \mapsto \mathbf{x} = (0,...,x_i,...,0)
1375
+
1376
+ \begin{align}
1377
+ I_\mu : \ &V_\mu \longrightarrow V_1 \times \ldots \times V_\mu \times \ldots \times V_n \,,
1378
+ \\[2mm]
1379
+ &x_\mu \mapsto \vec{x} = (0,\ldots,x_\mu,\ldots , 0) \,.
1380
+ \end{align}
1372
1381
 
1373
1382
 
1374
1383
  Parameters
1375
1384
  ----------
1376
- i : int
1377
- The component on which to project
1385
+ mu : int
1386
+ The component on which to project.
1378
1387
 
1379
1388
  V : psydac.fem.basic.(Product)FemSpace
1380
1389
  Finite element spline space (codomain, out space).
1381
1390
 
1382
- Vi : psydac.fem.basic.FemSpace
1383
- Finite element spline space (domain, in space), must be V i-th space
1391
+ Vmu : psydac.fem.basic.FemSpace
1392
+ Finite element spline space (domain, in space), must be :math:`\mu`-th space of V.
1384
1393
  """
1385
1394
 
1386
- def __init__(self, i, V, Vi):
1395
+ def __init__(self, mu, V, Vmu):
1387
1396
  assert isinstance(V, FemSpace)
1388
- assert isinstance(i, int)
1389
- assert V.spaces[i] == Vi
1397
+ assert isinstance(mu, int)
1398
+ assert V.spaces[mu] == Vmu
1390
1399
 
1391
1400
  self.full_space = V
1392
- self.sub_space = Vi
1393
- self.dir = i
1394
- self._domain = Vi.vector_space
1401
+ self.sub_space = Vmu
1402
+ self.dir = mu
1403
+ self._domain = Vmu.vector_space
1395
1404
  self._codomain = V.vector_space
1396
1405
  self._dtype = V.vector_space.dtype
1397
1406
 
@@ -1430,7 +1439,6 @@ class CoordinateInclusion(LinearOperator):
1430
1439
  assert out.space == self._codomain
1431
1440
  out *= 0.
1432
1441
  out._blocks[self.dir] += v
1433
-
1434
1442
  else:
1435
1443
  blocks = [sspace.zeros() for sspace in self.codomain.spaces]
1436
1444
  blocks[self.dir] = v.copy()
@@ -509,3 +509,4 @@ class BoundaryOperator(LinOpWithTransp):
509
509
  Returns the transposed operator.
510
510
  """
511
511
  return BoundaryOperator(self._domain, self._space_id, self.bc)
512
+