struphy 2.2.0__tar.gz → 2.3.1__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.
- {struphy-2.2.0 → struphy-2.3.1}/LICENSE +1 -1
- {struphy-2.2.0/src/struphy.egg-info → struphy-2.3.1}/PKG-INFO +23 -20
- {struphy-2.2.0 → struphy-2.3.1}/pyproject.toml +23 -20
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/bsplines.py +1 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/compile.py +1 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/main.py +16 -16
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/run.py +3 -2
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/test.py +3 -30
- struphy-2.3.1/src/struphy/diagnostics/console_diagn.py +217 -0
- struphy-2.3.1/src/struphy/diagnostics/diagn_tools.py +706 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/dispersion_relations/analytic.py +227 -163
- struphy-2.3.1/src/struphy/dispersion_relations/base.py +176 -0
- struphy-2.3.1/src/struphy/dispersion_relations/utilities.py +29 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/examples/_draw_parallel.py +1 -1
- struphy-2.3.1/src/struphy/feec/basis_projection_kernels.py +1967 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/basis_projection_ops.py +131 -205
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/linear_operators.py +1 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/mass.py +317 -154
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/mass_kernels.py +92 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/preconditioner.py +391 -8
- struphy-2.3.1/src/struphy/feec/projectors.py +1780 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/psydac_derham.py +775 -209
- struphy-2.3.1/src/struphy/feec/tests/test_field_init.py +930 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_l2_projectors.py +2 -2
- struphy-2.3.1/src/struphy/feec/tests/test_local_projectors.py +259 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +10 -10
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_mass_matrices.py +44 -7
- struphy-2.3.1/src/struphy/feec/variational_utilities.py +226 -0
- struphy-2.3.1/src/struphy/fields_background/braginskii_equil/base.py +546 -0
- struphy-2.3.1/src/struphy/fields_background/braginskii_equil/equils.py +120 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/base.py +286 -124
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/equils.py +944 -52
- struphy-2.3.1/src/struphy/fields_background/tests/test_desc_equil.py +219 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/test_gvec_equil.py +24 -18
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +4 -4
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/base.py +47 -26
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/domains.py +109 -30
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/perturbations.py +289 -161
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/tests/test_init_perturbations.py +139 -107
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +2 -3
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +3 -4
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +1 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +11 -30
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +2 -24
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +11 -30
- struphy-2.3.1/src/struphy/io/inp/parameters.yml +114 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_02.yml +4 -18
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_03.yml +1 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_04a.yml +3 -2
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_04b.yml +3 -5
- struphy-2.3.1/src/struphy/io/inp/tutorials/params_04c.yml +112 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_05a.yml +3 -13
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/tutorials/params_05b.yml +11 -21
- struphy-2.3.1/src/struphy/io/inp/tutorials/params_12a.yml +59 -0
- struphy-2.3.1/src/struphy/io/inp/tutorials/params_12b.yml +65 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/setup.py +89 -81
- struphy-2.3.1/src/struphy/kinetic_background/base.py +625 -0
- struphy-2.3.1/src/struphy/kinetic_background/maxwellians.py +1385 -0
- struphy-2.3.1/src/struphy/kinetic_background/tests/test_base.py +93 -0
- struphy-2.3.1/src/struphy/kinetic_background/tests/test_maxwellians.py +1817 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/schur_solver.py +118 -4
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/main.py +59 -8
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/base.py +609 -322
- struphy-2.3.1/src/struphy/models/fluid.py +1107 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/hybrid.py +69 -125
- struphy-2.3.1/src/struphy/models/kinetic.py +1911 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_fluid_models.py +3 -3
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_hybrid_models.py +1 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_kinetic_models.py +6 -5
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_toy_models.py +4 -4
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/test_xxpproc.py +12 -13
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/tests/util.py +0 -13
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/models/toy.py +343 -165
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/accum_kernels.py +137 -40
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/accum_kernels_gc.py +396 -274
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/particles_to_grid.py +54 -17
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/base.py +383 -182
- struphy-2.3.1/src/struphy/pic/particles.py +508 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/eval_kernels_gc.py +74 -74
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher.py +11 -9
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher_kernels.py +257 -4
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher_kernels_gc.py +801 -143
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_accum_vec_H1.py +6 -7
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_accumulation.py +1 -1
- struphy-2.3.1/src/struphy/pic/tests/test_binning.py +638 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_draw_parallel.py +28 -25
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pushers.py +14 -34
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/utilities_kernels.py +309 -54
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/basic.py +24 -2
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/post_processing_tools.py +101 -56
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/pproc_struphy.py +12 -5
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/propagators/base.py +16 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/propagators/propagators_coupling.py +722 -270
- struphy-2.3.1/src/struphy/propagators/propagators_fields.py +6170 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/propagators/propagators_markers.py +758 -66
- struphy-2.3.1/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +588 -0
- struphy-2.3.1/src/struphy/propagators/tests/test_poisson.py +430 -0
- struphy-2.2.0/src/struphy/psydac-0.1.9-py3-none-any.whl → struphy-2.3.1/src/struphy/psydac-0.1.13-py3-none-any.whl +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/linearextendedmhd.py +5 -5
- struphy-2.3.1/src/struphy/tutorials/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/tests/test_tutorials.py +32 -1
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/utilities.py +2 -0
- {struphy-2.2.0 → struphy-2.3.1/src/struphy.egg-info}/PKG-INFO +23 -20
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/SOURCES.txt +18 -6
- struphy-2.3.1/src/struphy.egg-info/requires.txt +28 -0
- struphy-2.2.0/src/struphy/diagnostics/console_diagn.py +0 -121
- struphy-2.2.0/src/struphy/diagnostics/diagn_tools.py +0 -366
- struphy-2.2.0/src/struphy/dispersion_relations/base.py +0 -153
- struphy-2.2.0/src/struphy/feec/basis_projection_kernels.py +0 -557
- struphy-2.2.0/src/struphy/feec/projectors.py +0 -662
- struphy-2.2.0/src/struphy/feec/tests/test_noise_init.py +0 -54
- struphy-2.2.0/src/struphy/fields_background/electric_equil/analytical.py +0 -24
- struphy-2.2.0/src/struphy/fields_background/electric_equil/base.py +0 -60
- struphy-2.2.0/src/struphy/io/inp/parameters.yml +0 -156
- struphy-2.2.0/src/struphy/kinetic_background/base.py +0 -137
- struphy-2.2.0/src/struphy/kinetic_background/maxwellians.py +0 -831
- struphy-2.2.0/src/struphy/models/fluid.py +0 -610
- struphy-2.2.0/src/struphy/models/kinetic.py +0 -1085
- struphy-2.2.0/src/struphy/pic/particles.py +0 -373
- struphy-2.2.0/src/struphy/propagators/propagators_fields.py +0 -3689
- struphy-2.2.0/src/struphy/propagators/tests/test_fields_propagators.py +0 -357
- struphy-2.2.0/src/struphy.egg-info/requires.txt +0 -25
- {struphy-2.2.0 → struphy-2.3.1}/README.md +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/setup.cfg +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/bsplines_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/tests/test_bsplines_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/compile_struphy.mk +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/conftest.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/params.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/pproc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/profile.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/console/units.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/dependencies.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/continuous_spectra.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/paraview/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/dispersion_relations/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_kernels_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_cv_kernel_2.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_kernels_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_L2_projector_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_L2.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_local.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_local_projector_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/eigenvalue_solvers/tests/test_legacy_mhd_projectors.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_basis_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_basis_ops.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_derham.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_eval_field.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/utilities.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/feec/utilities_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/fields_background/electric_equil → struphy-2.3.1/src/struphy/fields_background/braginskii_equil}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/evaluation_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/map_coef/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/mappings_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/tests/test_domain.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/transform_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/utilities.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/geometry/utilities_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/eigenfunctions.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/initial/utilities.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/batch_cobra.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_016.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_032.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_064.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_128.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_256.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/batch/p_512.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/inp/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/out/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/io/output_handling.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/kinetic_background/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/linear_algebra → struphy-2.3.1/src/struphy/kinetic_background/tests}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/linear_algebra/tests → struphy-2.3.1/src/struphy/linear_algebra}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/linalg_kron.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
- {struphy-2.2.0/src/struphy/models → struphy-2.3.1/src/struphy/linear_algebra/tests}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -0
- {struphy-2.2.0/src/struphy/models/tests → struphy-2.3.1/src/struphy/models}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/pic → struphy-2.3.1/src/struphy/models/tests}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/pic/accumulation → struphy-2.3.1/src/struphy/pic}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/pic/pushing → struphy-2.3.1/src/struphy/pic/accumulation}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
- {struphy-2.2.0/src/struphy/pic/tests → struphy-2.3.1/src/struphy/pic/pushing}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/sampling_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/sobol_seq.py +0 -0
- {struphy-2.2.0/src/struphy/pic/tests/test_pic_legacy_files → struphy-2.3.1/src/struphy/pic/tests}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
- {struphy-2.2.0/src/struphy/polar → struphy-2.3.1/src/struphy/pic/tests/test_pic_legacy_files}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/pic/utilities.py +0 -0
- {struphy-2.2.0/src/struphy/polar/tests → struphy-2.3.1/src/struphy/polar}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/extraction_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/linear_operators.py +0 -0
- {struphy-2.2.0/src/struphy/post_processing → struphy-2.3.1/src/struphy/polar/tests}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/polar/tests/test_polar.py +0 -0
- {struphy-2.2.0/src/struphy/post_processing/tests → struphy-2.3.1/src/struphy/post_processing}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/cprofile_analyser.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/post_processing/profile_struphy.py +0 -0
- {struphy-2.2.0/src/struphy/propagators → struphy-2.3.1/src/struphy/post_processing/tests}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/propagators/tests → struphy-2.3.1/src/struphy/propagators}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/tutorials → struphy-2.3.1/src/struphy/propagators/tests}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/tutorials/longer_examples → struphy-2.3.1/src/struphy/tutorials}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/TAE_tokamak.py +0 -0
- {struphy-2.2.0/src/struphy/tutorials/tests → struphy-2.3.1/src/struphy/tutorials/longer_examples}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/linearmhdvlasov_cc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy/tutorials/longer_examples/linearmhdvlasov_pc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/dependency_links.txt +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/entry_points.txt +0 -0
- {struphy-2.2.0 → struphy-2.3.1}/src/struphy.egg-info/top_level.txt +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (c) 2019-
|
|
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.
|
|
3
|
+
Version: 2.3.1
|
|
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-
|
|
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,
|
|
@@ -27,34 +27,37 @@ Project-URL: changelog, https://gitlab.mpcdf.mpg.de/struphy/struphy/-/blob/devel
|
|
|
27
27
|
Project-URL: Bug Tracker, https://gitlab.mpcdf.mpg.de/struphy/struphy/-/issues
|
|
28
28
|
Keywords: plasma physics, fusion, numerical modeling, partial differential equations, energetic particles
|
|
29
29
|
Classifier: Programming Language :: Python :: 3
|
|
30
|
-
Requires-Python: <3.12,>=3.
|
|
30
|
+
Requires-Python: <3.12,>=3.10
|
|
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.
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
38
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: argcomplete==3.4.0
|
|
35
|
+
Requires-Dist: desc-opt==0.11.1
|
|
36
|
+
Requires-Dist: docutils==0.21.2
|
|
37
|
+
Requires-Dist: gvec-to-python==1.2.2
|
|
38
|
+
Requires-Dist: h5py==3.11.0
|
|
39
|
+
Requires-Dist: ipyparallel==8.8.0
|
|
40
|
+
Requires-Dist: lxml_html_clean==0.1.1
|
|
39
41
|
Requires-Dist: m2r2==0.3.3.post2
|
|
40
|
-
Requires-Dist: matplotlib==3.
|
|
42
|
+
Requires-Dist: matplotlib==3.9.0
|
|
41
43
|
Requires-Dist: mistune==0.8.4
|
|
42
|
-
Requires-Dist: mpi4py==3.1.
|
|
43
|
-
Requires-Dist: myst-parser==
|
|
44
|
-
Requires-Dist: nbsphinx==0.9.
|
|
45
|
-
Requires-Dist:
|
|
44
|
+
Requires-Dist: mpi4py==3.1.6
|
|
45
|
+
Requires-Dist: myst-parser==3.0.1
|
|
46
|
+
Requires-Dist: nbsphinx==0.9.4
|
|
47
|
+
Requires-Dist: netCDF4==1.6.5
|
|
48
|
+
Requires-Dist: notebook==7.2.1
|
|
46
49
|
Requires-Dist: numpy==1.24.4
|
|
47
|
-
Requires-Dist: pyccel==1.
|
|
48
|
-
Requires-Dist: pydata-sphinx-theme==0.15.
|
|
49
|
-
Requires-Dist: pytest==
|
|
50
|
+
Requires-Dist: pyccel==1.12.0
|
|
51
|
+
Requires-Dist: pydata-sphinx-theme==0.15.3
|
|
52
|
+
Requires-Dist: pytest==8.2.2
|
|
50
53
|
Requires-Dist: pytest-monitor==1.6.6
|
|
51
54
|
Requires-Dist: pytest-mpi==0.6
|
|
52
|
-
Requires-Dist: scipy==1.
|
|
53
|
-
Requires-Dist: Sphinx==7.
|
|
55
|
+
Requires-Dist: scipy==1.13.1
|
|
56
|
+
Requires-Dist: Sphinx==7.3.7
|
|
54
57
|
Requires-Dist: sphinxcontrib-napoleon==0.7
|
|
55
|
-
Requires-Dist: tqdm==4.66.
|
|
58
|
+
Requires-Dist: tqdm==4.66.4
|
|
56
59
|
Requires-Dist: vtk==9.3.0
|
|
57
|
-
Requires-Dist: wheel==0.
|
|
60
|
+
Requires-Dist: wheel==0.43.0
|
|
58
61
|
|
|
59
62
|
# Struphy - Structure-preserving hybrid codes
|
|
60
63
|
|
|
@@ -4,9 +4,9 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "struphy"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.3.1"
|
|
8
8
|
readme = "README.md"
|
|
9
|
-
requires-python = ">=3.
|
|
9
|
+
requires-python = ">=3.10, <3.12"
|
|
10
10
|
license = {file = "LICENSE"}
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "Max Planck Institute for Plasma Physics"},
|
|
@@ -20,30 +20,33 @@ classifiers = [
|
|
|
20
20
|
]
|
|
21
21
|
dependencies = [
|
|
22
22
|
'PyYAML==6.0.1',
|
|
23
|
-
'argcomplete==3.
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'
|
|
27
|
-
'
|
|
23
|
+
'argcomplete==3.4.0',
|
|
24
|
+
'desc-opt==0.11.1',
|
|
25
|
+
'docutils==0.21.2',
|
|
26
|
+
'gvec-to-python==1.2.2',
|
|
27
|
+
'h5py==3.11.0',
|
|
28
|
+
'ipyparallel==8.8.0',
|
|
29
|
+
'lxml_html_clean==0.1.1',
|
|
28
30
|
'm2r2==0.3.3.post2',
|
|
29
|
-
'matplotlib==3.
|
|
31
|
+
'matplotlib==3.9.0',
|
|
30
32
|
'mistune==0.8.4',
|
|
31
|
-
'mpi4py==3.1.
|
|
32
|
-
'myst-parser==
|
|
33
|
-
'nbsphinx==0.9.
|
|
34
|
-
'
|
|
33
|
+
'mpi4py==3.1.6',
|
|
34
|
+
'myst-parser==3.0.1',
|
|
35
|
+
'nbsphinx==0.9.4',
|
|
36
|
+
'netCDF4==1.6.5',
|
|
37
|
+
'notebook==7.2.1',
|
|
35
38
|
'numpy==1.24.4',
|
|
36
|
-
'pyccel==1.
|
|
37
|
-
'pydata-sphinx-theme==0.15.
|
|
38
|
-
'pytest==
|
|
39
|
+
'pyccel==1.12.0',
|
|
40
|
+
'pydata-sphinx-theme==0.15.3',
|
|
41
|
+
'pytest==8.2.2',
|
|
39
42
|
'pytest-monitor==1.6.6',
|
|
40
43
|
'pytest-mpi==0.6',
|
|
41
|
-
'scipy==1.
|
|
42
|
-
'Sphinx==7.
|
|
44
|
+
'scipy==1.13.1',
|
|
45
|
+
'Sphinx==7.3.7',
|
|
43
46
|
'sphinxcontrib-napoleon==0.7',
|
|
44
|
-
'tqdm==4.66.
|
|
47
|
+
'tqdm==4.66.4',
|
|
45
48
|
'vtk==9.3.0',
|
|
46
|
-
'wheel==0.
|
|
49
|
+
'wheel==0.43.0',
|
|
47
50
|
]
|
|
48
51
|
|
|
49
52
|
[project.urls]
|
|
@@ -79,5 +82,5 @@ struphy = "struphy.console.main:struphy"
|
|
|
79
82
|
]
|
|
80
83
|
|
|
81
84
|
struphy = ['compile_struphy.mk',
|
|
82
|
-
'psydac-0.1.
|
|
85
|
+
'psydac-0.1.13-py3-none-any.whl',
|
|
83
86
|
]
|
|
@@ -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 =
|
|
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.
|
|
211
|
+
current_ver = '0.1.13'
|
|
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-
|
|
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(
|
|
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
|
|
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'] +
|
|
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) "
|
|
451
|
-
\ne) "
|
|
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('
|
|
152
|
+
print('\nCprofile turned on.')
|
|
153
153
|
else:
|
|
154
|
-
print('
|
|
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
|
|
@@ -31,8 +31,6 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
|
|
|
31
31
|
If group is a model name, simulation end time in units of the model (default=0.015 with dt=0.005). Data is only saved at Tend if set.
|
|
32
32
|
"""
|
|
33
33
|
|
|
34
|
-
assert mpi >= 2, 'Tests require at least 2 MPI processes.'
|
|
35
|
-
|
|
36
34
|
libpath = struphy.__path__[0]
|
|
37
35
|
|
|
38
36
|
pymon_abs = os.path.join(libpath, '_pymon/')
|
|
@@ -53,7 +51,7 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
|
|
|
53
51
|
'pytest',
|
|
54
52
|
'--no-monitor'*(not monitor),
|
|
55
53
|
'-k',
|
|
56
|
-
'not _models and not
|
|
54
|
+
'not _models and not _tutorial and not pproc',
|
|
57
55
|
'--with-mpi',
|
|
58
56
|
'--restrict-scope-to',
|
|
59
57
|
'module',
|
|
@@ -127,31 +125,6 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
|
|
|
127
125
|
'--no-monitor',],
|
|
128
126
|
check=True, cwd=libpath)
|
|
129
127
|
|
|
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
128
|
elif 'tutorials' in group:
|
|
156
129
|
pymon_file = os.path.join(pymon_abs, '.pymon_tutorials')
|
|
157
130
|
if os.path.isfile(pymon_file):
|
|
@@ -204,7 +177,7 @@ def struphy_test(group, mpi=2, fast=False, verbose=False, monitor=False, n=None,
|
|
|
204
177
|
|
|
205
178
|
elif 'timings' in group:
|
|
206
179
|
|
|
207
|
-
for gr in ['unit', 'models', '
|
|
180
|
+
for gr in ['unit', 'models', 'tutorials']:
|
|
208
181
|
_file = os.path.join(pymon_abs, '.pymon_' + gr)
|
|
209
182
|
if os.path.isfile(_file):
|
|
210
183
|
pymon_html_json(gr, verbose=verbose)
|
|
@@ -238,7 +211,7 @@ def pymon_html_json(group, verbose=False):
|
|
|
238
211
|
Parameters
|
|
239
212
|
----------
|
|
240
213
|
group : str
|
|
241
|
-
One of "unit", "models", "
|
|
214
|
+
One of "unit", "models", "tutorials" or "pproc".
|
|
242
215
|
'''
|
|
243
216
|
|
|
244
217
|
libpath = struphy.__path__[0]
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
""" An executable for quick access to the diagnostic tools in diagn_tools.py """
|
|
2
|
+
|
|
3
|
+
#!/usr/bin/env python3
|
|
4
|
+
import numpy as np
|
|
5
|
+
import argparse
|
|
6
|
+
import os
|
|
7
|
+
import h5py
|
|
8
|
+
import yaml
|
|
9
|
+
|
|
10
|
+
import struphy
|
|
11
|
+
from struphy.diagnostics.diagn_tools import plot_scalars, plot_distr_fun, phase_space_video
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def main():
|
|
15
|
+
parser = argparse.ArgumentParser(
|
|
16
|
+
formatter_class=argparse.RawTextHelpFormatter)
|
|
17
|
+
|
|
18
|
+
parser.add_argument('actions', nargs='+', type=str, default=[None],
|
|
19
|
+
help='''which actions to perform:\
|
|
20
|
+
\n - plot_scalars : plots the scalar quantities that were saved during the simulation\
|
|
21
|
+
\n - plot_distr : plots the distribution function and delta-f (if available)\
|
|
22
|
+
\n set points for slicing with options below (default is middle of the space)\
|
|
23
|
+
\n - phase_space : make a video of the distribution function (minus the background) in a 2D slice of phase space
|
|
24
|
+
''')
|
|
25
|
+
parser.add_argument('-f', nargs=1, type=str, default=['sim_1'],
|
|
26
|
+
help='name of the folder for the simulation data (in io/out)')
|
|
27
|
+
parser.add_argument('-scalars', nargs='+', action='append', default=[],
|
|
28
|
+
help='(for plot_scalars) which quantities to plot')
|
|
29
|
+
parser.add_argument('--log', action='store_true',
|
|
30
|
+
help='(for plot_scalars) if logarithmic y-axis should be used')
|
|
31
|
+
parser.add_argument('--show', action='store_true',
|
|
32
|
+
help='(for plot_scalars) if the plot should be shown')
|
|
33
|
+
parser.add_argument('--nosave', action='store_true',
|
|
34
|
+
help='(for plot_scalars) if the plot should not be displayed')
|
|
35
|
+
parser.add_argument('--fit', action='store_true',
|
|
36
|
+
help='(for plot_scalars) if a fit should be done (using maxima)')
|
|
37
|
+
parser.add_argument('--minfit', action='store_true',
|
|
38
|
+
help='(for plot_scalars) if a fit should be done using minima')
|
|
39
|
+
parser.add_argument('-degree', nargs=1, type=int, default=[1],
|
|
40
|
+
help='(for plot_scalars --fit) the degree of the fit curve')
|
|
41
|
+
parser.add_argument('-extrema', nargs=1, type=int, default=[4],
|
|
42
|
+
help='(for plot_scalars --fit) how many extrema should be used for the fit')
|
|
43
|
+
parser.add_argument('-startextr', nargs=1, type=int, default=[0],
|
|
44
|
+
help='(for plot_scalars --fit) which extremum should be used first for the fit (0 = first)')
|
|
45
|
+
parser.add_argument('-order', nargs=1, type=int, default=[4],
|
|
46
|
+
help='(for plot_scalars --fit) how many neighbouring points should be used for determining the extrema')
|
|
47
|
+
parser.add_argument('-t', nargs=1, type=float, default=[0.],
|
|
48
|
+
help='(for plot_distr) at which time to plot the distribution function')
|
|
49
|
+
parser.add_argument('-e1', nargs=1, type=float, default=[0.5],
|
|
50
|
+
help='(for plot_distr) at which position in eta1 direction to plot')
|
|
51
|
+
parser.add_argument('-e2', nargs=1, type=float, default=[0.5],
|
|
52
|
+
help='(for plot_distr) at which position in eta2 direction to plot')
|
|
53
|
+
parser.add_argument('-e3', nargs=1, type=float, default=[0.5],
|
|
54
|
+
help='(for plot_distr) at which position in eta3 direction to plot')
|
|
55
|
+
parser.add_argument('-v1', nargs=1, type=float, default=[None],
|
|
56
|
+
help='(for plot_distr) at which point in v1 direction to plot')
|
|
57
|
+
parser.add_argument('-v2', nargs=1, type=float, default=[None],
|
|
58
|
+
help='(for plot_distr) at which point in v2 direction to plot')
|
|
59
|
+
parser.add_argument('-v3', nargs=1, type=float, default=[None],
|
|
60
|
+
help='(for plot_distr) at which point in v3 direction to plot')
|
|
61
|
+
|
|
62
|
+
# Parse the arguments
|
|
63
|
+
args = parser.parse_args()
|
|
64
|
+
actions = args.actions
|
|
65
|
+
foldername = args.f[0]
|
|
66
|
+
time = args.t[0]
|
|
67
|
+
do_log = args.log
|
|
68
|
+
show = args.show
|
|
69
|
+
nosave = args.nosave
|
|
70
|
+
if len(args.scalars) != 0:
|
|
71
|
+
scalars_plot = args.scalars[0]
|
|
72
|
+
else:
|
|
73
|
+
scalars_plot = args.scalars
|
|
74
|
+
|
|
75
|
+
# Arguments for fitting
|
|
76
|
+
do_fit = args.fit
|
|
77
|
+
fit_minima = args.minfit
|
|
78
|
+
if fit_minima and do_fit:
|
|
79
|
+
do_fit = False
|
|
80
|
+
no_extrema = args.extrema[0]
|
|
81
|
+
order = args.order[0]
|
|
82
|
+
degree = args.degree[0]
|
|
83
|
+
start_extremum = args.startextr[0]
|
|
84
|
+
|
|
85
|
+
libpath = struphy.__path__[0]
|
|
86
|
+
with open(os.path.join(libpath, 'state.yml')) as f:
|
|
87
|
+
state = yaml.load(f, Loader=yaml.FullLoader)
|
|
88
|
+
|
|
89
|
+
o_path = state['o_path']
|
|
90
|
+
|
|
91
|
+
path = os.path.join(o_path, foldername)
|
|
92
|
+
|
|
93
|
+
grid_slices = {
|
|
94
|
+
'e1': args.e1[0], 'e2': args.e2[0], 'e3': args.e3[0],
|
|
95
|
+
'v1': args.v1[0], 'v2': args.v2[0], 'v3': args.v3[0]
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
# Get fields
|
|
99
|
+
file = h5py.File(os.path.join(path, 'data/', 'data_proc0.hdf5'), 'r')
|
|
100
|
+
saved_scalars = file['scalar']
|
|
101
|
+
saved_time = file['time']['value'][:]
|
|
102
|
+
|
|
103
|
+
# read in parameters
|
|
104
|
+
with open(path + '/parameters.yml') as file:
|
|
105
|
+
params = yaml.load(file, Loader=yaml.FullLoader)
|
|
106
|
+
|
|
107
|
+
# Get model name
|
|
108
|
+
with open(path + '/meta.txt', 'r') as file:
|
|
109
|
+
for line in file.readlines():
|
|
110
|
+
if line[0:10] == 'model_name':
|
|
111
|
+
model_name = line.split(':')[1].strip()
|
|
112
|
+
|
|
113
|
+
if 'plot_scalars' in actions:
|
|
114
|
+
plot_scalars(
|
|
115
|
+
time=saved_time, scalar_quantities=saved_scalars, scalars_plot=scalars_plot,
|
|
116
|
+
do_log=do_log, do_fit=do_fit, fit_minima=fit_minima, order=order,
|
|
117
|
+
no_extrema=no_extrema, degree=degree, show_plot=show, start_extremum=start_extremum,
|
|
118
|
+
save_plot=not nosave, savedir=path
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
if 'plot_distr' or 'phase_space' in actions:
|
|
122
|
+
for species in params['kinetic'].keys():
|
|
123
|
+
# Get model class
|
|
124
|
+
from struphy.models import fluid, kinetic, hybrid, toy
|
|
125
|
+
objs = [fluid, kinetic, hybrid, toy]
|
|
126
|
+
for obj in objs:
|
|
127
|
+
try:
|
|
128
|
+
model_class = getattr(obj, model_name)
|
|
129
|
+
except AttributeError:
|
|
130
|
+
pass
|
|
131
|
+
|
|
132
|
+
# get particles class name
|
|
133
|
+
species_dict = model_class.species()
|
|
134
|
+
particles_class_name = species_dict['kinetic'][species]
|
|
135
|
+
|
|
136
|
+
# Get default background of particles class
|
|
137
|
+
from struphy.pic import particles
|
|
138
|
+
default_bckgr_type = getattr(
|
|
139
|
+
particles, particles_class_name).default_bckgr_params()['type']
|
|
140
|
+
|
|
141
|
+
# Get default background parameters
|
|
142
|
+
from struphy.kinetic_background import maxwellians
|
|
143
|
+
default_bckgr_params = getattr(
|
|
144
|
+
maxwellians, default_bckgr_type).default_maxw_params()
|
|
145
|
+
|
|
146
|
+
marker_type = params['kinetic'][species]['markers']['type']
|
|
147
|
+
# Set velocity point of evaluation to v_shift of background params if not given by input
|
|
148
|
+
if marker_type == 'full_f':
|
|
149
|
+
for k in range(1, 4):
|
|
150
|
+
|
|
151
|
+
if grid_slices['v' + str(k)] is None:
|
|
152
|
+
key = 'u' + str(k)
|
|
153
|
+
bckgr_type = params['kinetic'][species]['background']['type']
|
|
154
|
+
|
|
155
|
+
if key not in params['kinetic'][species]['background'][bckgr_type].keys():
|
|
156
|
+
bckgr_param = default_bckgr_params[key]
|
|
157
|
+
else:
|
|
158
|
+
bckgr_param = params['kinetic'][species]['background'][bckgr_type][key]
|
|
159
|
+
|
|
160
|
+
if isinstance(bckgr_param, dict):
|
|
161
|
+
grid_slices['v' + str(k)] = \
|
|
162
|
+
bckgr_param['u0' + str(k)]
|
|
163
|
+
else:
|
|
164
|
+
grid_slices['v' + str(k)] = bckgr_param
|
|
165
|
+
elif marker_type in ['delta_f', 'control_variate']:
|
|
166
|
+
for k in range(1, 4):
|
|
167
|
+
|
|
168
|
+
if grid_slices['v' + str(k)] is None:
|
|
169
|
+
key = 'u' + str(k)
|
|
170
|
+
bckgr_type = params['kinetic'][species]['background']['type']
|
|
171
|
+
|
|
172
|
+
if key not in params['kinetic'][species]['background'][bckgr_type].keys():
|
|
173
|
+
bckgr_param = default_bckgr_params[key]
|
|
174
|
+
else:
|
|
175
|
+
bckgr_param = params['kinetic'][species]['background'][bckgr_type][key]
|
|
176
|
+
|
|
177
|
+
if isinstance(bckgr_param, dict):
|
|
178
|
+
grid_slices['v' + str(k)] = \
|
|
179
|
+
bckgr_param['u0' + str(k)]
|
|
180
|
+
else:
|
|
181
|
+
grid_slices['v' + str(k)] = bckgr_param
|
|
182
|
+
else:
|
|
183
|
+
raise NotImplementedError(
|
|
184
|
+
f"Diagnostics for markers of type {marker_type} are not implemented!")
|
|
185
|
+
|
|
186
|
+
if 'plot_distr' in actions:
|
|
187
|
+
# Get index of where to plot in time
|
|
188
|
+
time_idx = np.argmin(np.abs(time - saved_time))
|
|
189
|
+
|
|
190
|
+
plot_distr_fun(
|
|
191
|
+
path=os.path.join(
|
|
192
|
+
path, 'post_processing', 'kinetic_data', species
|
|
193
|
+
),
|
|
194
|
+
time_idx=time_idx,
|
|
195
|
+
grid_slices=grid_slices,
|
|
196
|
+
save_plot=True, savepath=path,
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
if 'phase_space' in actions:
|
|
200
|
+
for slice_name in os.listdir(os.path.join(
|
|
201
|
+
path, 'post_processing', 'kinetic_data', species, 'distribution_function'
|
|
202
|
+
)):
|
|
203
|
+
phase_space_video(
|
|
204
|
+
t_grid=saved_time, grid_slices=grid_slices,
|
|
205
|
+
slice_name=slice_name,
|
|
206
|
+
marker_type=params['kinetic'][species]['markers']['type'],
|
|
207
|
+
species=species,
|
|
208
|
+
path=path,
|
|
209
|
+
model_name=model_name,
|
|
210
|
+
background_params=params['kinetic'][species]['background']
|
|
211
|
+
)
|
|
212
|
+
|
|
213
|
+
file.close()
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
if __name__ == '__main__':
|
|
217
|
+
main()
|