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.
- {struphy-2.2.0 → struphy-2.3.0}/LICENSE +1 -1
- {struphy-2.2.0/src/struphy.egg-info → struphy-2.3.0}/PKG-INFO +14 -13
- {struphy-2.2.0 → struphy-2.3.0}/pyproject.toml +14 -13
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/bsplines.py +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/compile.py +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/main.py +16 -16
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/run.py +3 -2
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/test.py +3 -28
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/console_diagn.py +42 -7
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/diagn_tools.py +3 -6
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/examples/_draw_parallel.py +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/basis_projection_ops.py +37 -29
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/linear_operators.py +1 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/mass.py +238 -109
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/mass_kernels.py +92 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/preconditioner.py +384 -8
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/projectors.py +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/psydac_derham.py +245 -166
- struphy-2.3.0/src/struphy/feec/tests/test_field_init.py +909 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +10 -10
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_mass_matrices.py +44 -7
- struphy-2.3.0/src/struphy/feec/variational_utilities.py +207 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/base.py +9 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/equils.py +103 -32
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/tests/test_gvec_equil.py +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/base.py +12 -11
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/domains.py +13 -13
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/perturbations.py +272 -152
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/tests/test_init_perturbations.py +139 -107
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +2 -3
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +3 -4
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +11 -30
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +2 -24
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +11 -30
- struphy-2.3.0/src/struphy/io/inp/parameters.yml +109 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_02.yml +4 -18
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_03.yml +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_04a.yml +3 -2
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_04b.yml +3 -5
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_05a.yml +3 -13
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/inp/tutorials/params_05b.yml +3 -15
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/setup.py +25 -46
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/kinetic_background/base.py +63 -14
- struphy-2.3.0/src/struphy/kinetic_background/maxwellians.py +646 -0
- struphy-2.3.0/src/struphy/kinetic_background/tests/test_maxwellians.py +1550 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/schur_solver.py +4 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/main.py +2 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/base.py +338 -236
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/fluid.py +57 -26
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/hybrid.py +58 -77
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/kinetic.py +659 -245
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_fluid_models.py +3 -3
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_hybrid_models.py +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_kinetic_models.py +4 -4
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_toy_models.py +4 -4
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/test_xxpproc.py +11 -12
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/toy.py +128 -54
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/accum_kernels.py +14 -28
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/accum_kernels_gc.py +336 -194
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/particles_to_grid.py +54 -14
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/base.py +188 -123
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/particles.py +66 -87
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher_kernels.py +4 -4
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher_kernels_gc.py +13 -6
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_accum_vec_H1.py +6 -7
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_accumulation.py +1 -1
- struphy-2.3.0/src/struphy/pic/tests/test_binning.py +638 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_draw_parallel.py +28 -25
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pushers.py +14 -34
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/utilities_kernels.py +65 -16
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/post_processing_tools.py +2 -2
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/base.py +16 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/propagators_coupling.py +141 -198
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/propagators_fields.py +1539 -524
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/propagators_markers.py +4 -5
- struphy-2.3.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +587 -0
- struphy-2.3.0/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.0/src/struphy/psydac-0.1.12-py3-none-any.whl +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/tests/test_tutorials.py +1 -1
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/utilities.py +2 -0
- {struphy-2.2.0 → struphy-2.3.0/src/struphy.egg-info}/PKG-INFO +14 -13
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/SOURCES.txt +8 -6
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/requires.txt +12 -11
- 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/maxwellians.py +0 -831
- struphy-2.2.0/src/struphy/propagators/tests/test_fields_propagators.py +0 -357
- {struphy-2.2.0 → struphy-2.3.0}/README.md +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/setup.cfg +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/bsplines_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/tests/test_bsplines_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/compile_struphy.mk +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/conftest.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/params.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/pproc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/profile.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/console/units.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dependencies.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/continuous_spectra.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/paraview/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dispersion_relations/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dispersion_relations/analytic.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/dispersion_relations/base.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -0
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -0
- {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
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/eigenvalue_solvers/tests/test_legacy_mhd_projectors.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/basis_projection_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_basis_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_basis_ops.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_derham.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_eval_field.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_l2_projectors.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/utilities.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/feec/utilities_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/fields_background/electric_equil → struphy-2.3.0/src/struphy/fields_background/mhd_equil}/__init__.py +0 -0
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
- {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
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
- {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
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
- {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
- {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
- {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
- {struphy-2.2.0/src/struphy/fields_background/mhd_equil/vmec → struphy-2.3.0/src/struphy/fields_background/tests}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
- {struphy-2.2.0/src/struphy/fields_background/tests → struphy-2.3.0/src/struphy/geometry}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/evaluation_kernels.py +0 -0
- {struphy-2.2.0/src/struphy/geometry → struphy-2.3.0/src/struphy/geometry/map_coef}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/mappings_kernels.py +0 -0
- {struphy-2.2.0/src/struphy/geometry/map_coef → struphy-2.3.0/src/struphy/geometry/tests}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/tests/test_domain.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/transform_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/utilities.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/geometry/utilities_kernels.py +0 -0
- {struphy-2.2.0/src/struphy/geometry/tests → struphy-2.3.0/src/struphy/initial}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/eigenfunctions.py +0 -0
- {struphy-2.2.0/src/struphy/initial → struphy-2.3.0/src/struphy/initial/tests}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/initial/utilities.py +0 -0
- {struphy-2.2.0/src/struphy/initial/tests → struphy-2.3.0/src/struphy/io}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/batch_cobra.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_016.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_032.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_064.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_128.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_256.sh +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/batch/p_512.sh +0 -0
- {struphy-2.2.0/src/struphy/io → struphy-2.3.0/src/struphy/io/inp}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/io/inp → struphy-2.3.0/src/struphy/io/out}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/io/output_handling.py +0 -0
- {struphy-2.2.0/src/struphy/io/out → struphy-2.3.0/src/struphy/kinetic_background}/__init__.py +0 -0
- {struphy-2.2.0/src/struphy/kinetic_background → struphy-2.3.0/src/struphy/kinetic_background/tests}/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/linalg_kron.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/models/tests/util.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/eval_kernels_gc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/sampling_kernels.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/sobol_seq.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/pic/utilities.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/basic.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/extraction_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/linear_operators.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/polar/tests/test_polar.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/cprofile_analyser.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/pproc_struphy.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/profile_struphy.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/post_processing/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/propagators/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/TAE_tokamak.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/linearextendedmhd.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/linearmhdvlasov_cc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/longer_examples/linearmhdvlasov_pc.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy/tutorials/tests/__init__.py +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/dependency_links.txt +0 -0
- {struphy-2.2.0 → struphy-2.3.0}/src/struphy.egg-info/entry_points.txt +0 -0
- {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-
|
|
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.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-
|
|
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.
|
|
34
|
+
Requires-Dist: argcomplete==3.2.3
|
|
35
35
|
Requires-Dist: docutils==0.20.1
|
|
36
|
-
Requires-Dist: gvec-to-python==1.2.
|
|
36
|
+
Requires-Dist: gvec-to-python==1.2.1
|
|
37
37
|
Requires-Dist: h5py==3.10.0
|
|
38
|
-
Requires-Dist: ipyparallel==8.
|
|
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.
|
|
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.
|
|
46
|
+
Requires-Dist: notebook==7.1.2
|
|
46
47
|
Requires-Dist: numpy==1.24.4
|
|
47
|
-
Requires-Dist: pyccel==1.11.
|
|
48
|
-
Requires-Dist: pydata-sphinx-theme==0.15.
|
|
49
|
-
Requires-Dist: pytest==
|
|
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.
|
|
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.
|
|
56
|
+
Requires-Dist: tqdm==4.66.2
|
|
56
57
|
Requires-Dist: vtk==9.3.0
|
|
57
|
-
Requires-Dist: wheel==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.
|
|
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.
|
|
23
|
+
'argcomplete==3.2.3',
|
|
24
24
|
'docutils==0.20.1',
|
|
25
|
-
'gvec-to-python==1.2.
|
|
25
|
+
'gvec-to-python==1.2.1',
|
|
26
26
|
'h5py==3.10.0',
|
|
27
|
-
'ipyparallel==8.
|
|
27
|
+
'ipyparallel==8.7.0',
|
|
28
|
+
'lxml_html_clean==0.1.0',
|
|
28
29
|
'm2r2==0.3.3.post2',
|
|
29
|
-
'matplotlib==3.8.
|
|
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.
|
|
35
|
+
'notebook==7.1.2',
|
|
35
36
|
'numpy==1.24.4',
|
|
36
|
-
'pyccel==1.11.
|
|
37
|
-
'pydata-sphinx-theme==0.15.
|
|
38
|
-
'pytest==
|
|
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.
|
|
42
|
+
'scipy==1.12.0',
|
|
42
43
|
'Sphinx==7.2.6',
|
|
43
44
|
'sphinxcontrib-napoleon==0.7',
|
|
44
|
-
'tqdm==4.66.
|
|
45
|
+
'tqdm==4.66.2',
|
|
45
46
|
'vtk==9.3.0',
|
|
46
|
-
'wheel==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.
|
|
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 =
|
|
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.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-
|
|
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
|
|
@@ -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
|
|
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', '
|
|
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", "
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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)
|
|
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.
|
|
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
|
-
|
|
1292
|
-
\
|
|
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
|
-
|
|
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
|
-
|
|
1304
|
-
Finite element spline space (codomain, out space), must be
|
|
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,
|
|
1311
|
+
def __init__(self, mu, V, Vmu):
|
|
1308
1312
|
assert isinstance(V, FemSpace)
|
|
1309
|
-
assert isinstance(
|
|
1310
|
-
assert V.spaces[
|
|
1313
|
+
assert isinstance(mu, int)
|
|
1314
|
+
assert V.spaces[mu] == Vmu
|
|
1311
1315
|
|
|
1312
1316
|
self.full_space = V
|
|
1313
|
-
self.sub_space =
|
|
1314
|
-
self.dir =
|
|
1317
|
+
self.sub_space = Vmu
|
|
1318
|
+
self.dir = mu
|
|
1315
1319
|
self._domain = V.vector_space
|
|
1316
|
-
self._codomain =
|
|
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.
|
|
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
|
-
|
|
1371
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1383
|
-
Finite element spline space (domain, in space), must be
|
|
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,
|
|
1395
|
+
def __init__(self, mu, V, Vmu):
|
|
1387
1396
|
assert isinstance(V, FemSpace)
|
|
1388
|
-
assert isinstance(
|
|
1389
|
-
assert V.spaces[
|
|
1397
|
+
assert isinstance(mu, int)
|
|
1398
|
+
assert V.spaces[mu] == Vmu
|
|
1390
1399
|
|
|
1391
1400
|
self.full_space = V
|
|
1392
|
-
self.sub_space =
|
|
1393
|
-
self.dir =
|
|
1394
|
-
self._domain =
|
|
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()
|