struphy 3.3.0__tar.gz → 3.5.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-3.5.0/PKG-INFO +298 -0
- struphy-3.5.0/README.md +187 -0
- struphy-3.5.0/pyproject.toml +189 -0
- struphy-3.5.0/setup.cfg +10 -0
- struphy-3.5.0/src/struphy/__init__.py +247 -0
- struphy-3.5.0/src/struphy/agent_guides/USAGE.md +72 -0
- struphy-3.5.0/src/struphy/agent_guides/skills/postprocess-simulation/SKILL.md +101 -0
- struphy-3.5.0/src/struphy/agent_guides/skills/setup-simulation/SKILL.md +159 -0
- struphy-3.5.0/src/struphy/api/linear_algebra/__init__.py +3 -0
- struphy-3.5.0/src/struphy/api/models/__init__.py +97 -0
- struphy-3.5.0/src/struphy/api/post_processing/__init__.py +3 -0
- struphy-3.5.0/src/struphy/api/tests/test_public_api.py +59 -0
- struphy-3.5.0/src/struphy/bsplines/bsplines_kernels.cuh +171 -0
- struphy-3.5.0/src/struphy/bsplines/evaluation_kernels_2d.cuh +29 -0
- struphy-3.5.0/src/struphy/bsplines/evaluation_kernels_3d.cuh +218 -0
- struphy-3.5.0/src/struphy/bsplines/evaluation_kernels_3d.py +1600 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/__init__.py +9 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/__init__.py +10 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/eval_spline_mpi_markers_cuda.cu +33 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_markers/eval_spline_mpi_markers_kernels.py +48 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/__init__.py +10 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/eval_spline_mpi_matrix_cuda.cu +37 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_matrix/eval_spline_mpi_matrix_kernels.py +56 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/__init__.py +10 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/eval_spline_mpi_sparse_meshgrid_cuda.cu +37 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_sparse_meshgrid/eval_spline_mpi_sparse_meshgrid_kernels.py +58 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/__init__.py +12 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/eval_spline_mpi_tensor_product_fixed_cuda.cu +56 -0
- struphy-3.5.0/src/struphy/bsplines/kernels/eval_spline_mpi_tensor_product_fixed/eval_spline_mpi_tensor_product_fixed_kernels.py +82 -0
- struphy-3.5.0/src/struphy/bsplines/tests/test_bsplines_kers.py +210 -0
- struphy-3.5.0/src/struphy/bsplines/tests/test_eval_spline_mpi.py +804 -0
- struphy-3.5.0/src/struphy/bsplines/tests/test_evaluation_cuda.py +123 -0
- struphy-3.5.0/src/struphy/compile_struphy.mk +51 -0
- struphy-3.5.0/src/struphy/console/agents.py +111 -0
- struphy-3.5.0/src/struphy/console/build_init_files.py +169 -0
- struphy-3.5.0/src/struphy/console/compile.py +378 -0
- struphy-3.5.0/src/struphy/console/main.py +678 -0
- struphy-3.5.0/src/struphy/console/output.py +47 -0
- struphy-3.5.0/src/struphy/console/params.py +69 -0
- struphy-3.5.0/src/struphy/console/profile.py +91 -0
- struphy-3.5.0/src/struphy/console/test.py +178 -0
- struphy-3.5.0/src/struphy/console/tests/test_agents.py +89 -0
- struphy-3.5.0/src/struphy/console/tests/test_compile.py +290 -0
- struphy-3.5.0/src/struphy/console/tests/test_params_profile.py +61 -0
- struphy-3.5.0/src/struphy/console/tests/test_state.py +22 -0
- struphy-3.5.0/src/struphy/console/tests/xx_test_console.py +151 -0
- struphy-3.5.0/src/struphy/dependencies.py +138 -0
- struphy-3.5.0/src/struphy/dispersion_relations/analytic.py +1166 -0
- struphy-3.5.0/src/struphy/dispersion_relations/tests/test_analytic.py +80 -0
- struphy-3.5.0/src/struphy/examples/_draw_parallel.py +100 -0
- struphy-3.5.0/src/struphy/feec/basis_projection_ops.py +2435 -0
- struphy-3.5.0/src/struphy/feec/boundary_mass.py +587 -0
- struphy-3.5.0/src/struphy/feec/kernels/__init__.py +17 -0
- struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_1d/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_1d/assemble_dofs_for_weighted_basisfuns_1d_kernels.py +128 -0
- struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_2d/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_2d/assemble_dofs_for_weighted_basisfuns_2d_kernels.py +186 -0
- struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_3d/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/assemble_dofs_for_weighted_basisfuns_3d/assemble_dofs_for_weighted_basisfuns_3d_kernels.py +259 -0
- struphy-3.5.0/src/struphy/feec/kernels/hybrid_weight/__init__.py +10 -0
- struphy-3.5.0/src/struphy/feec/kernels/hybrid_weight/hybrid_weight_kernels.py +101 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_eval/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_eval/kernel_1d_eval_kernels.py +55 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_mat/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_mat/kernel_1d_mat_kernels.py +68 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_vec/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_1d_vec/kernel_1d_vec_kernels.py +59 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_eval/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_eval/kernel_2d_eval_kernels.py +72 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_mat/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_mat/kernel_2d_mat_kernels.py +88 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_vec/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_2d_vec/kernel_2d_vec_kernels.py +76 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_diag/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_diag/kernel_3d_diag_kernels.py +118 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_eval/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_eval/kernel_3d_eval_kernels.py +85 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_mat/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_mat/kernel_3d_mat_kernels.py +147 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_matrixfree/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_matrixfree/kernel_3d_matrixfree_kernels.py +173 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_vec/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/kernel_3d_vec/kernel_3d_vec_kernels.py +96 -0
- struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_mat/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_mat/surface_kernel_3d_mat_kernels.py +170 -0
- struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_vec/__init__.py +16 -0
- struphy-3.5.0/src/struphy/feec/kernels/surface_kernel_3d_vec/surface_kernel_3d_vec_kernels.py +91 -0
- struphy-3.5.0/src/struphy/feec/kronecker_block.py +397 -0
- struphy-3.5.0/src/struphy/feec/linear_operators.py +210 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/__init__.py +9 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component/__init__.py +12 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component/get_dofs_local_1_form_ec_component_kernels.py +62 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component_weighted/__init__.py +12 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_1_form_ec_component_weighted/get_dofs_local_1_form_ec_component_weighted_kernels.py +97 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component/__init__.py +12 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component/get_dofs_local_2_form_ec_component_kernels.py +70 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component_weighted/__init__.py +12 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_2_form_ec_component_weighted/get_dofs_local_2_form_ec_component_weighted_kernels.py +113 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form/get_dofs_local_3_form_kernels.py +46 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form_weighted/__init__.py +10 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/get_dofs_local_3_form_weighted/get_dofs_local_3_form_weighted_kernels.py +76 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop/__init__.py +10 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop/solve_local_main_loop_kernels.py +90 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop_weighted/__init__.py +10 -0
- struphy-3.5.0/src/struphy/feec/local_projectors/kernels/solve_local_main_loop_weighted/solve_local_main_loop_weighted_kernels.py +173 -0
- struphy-3.5.0/src/struphy/feec/local_projectors_kernels.py +538 -0
- struphy-3.5.0/src/struphy/feec/mass.py +3938 -0
- struphy-3.5.0/src/struphy/feec/memory.py +71 -0
- struphy-3.5.0/src/struphy/feec/preconditioner.py +2871 -0
- struphy-3.5.0/src/struphy/feec/projectors.py +2239 -0
- struphy-3.5.0/src/struphy/feec/psydac_derham.py +4160 -0
- struphy-3.5.0/src/struphy/feec/tests/test_basis_ops.py +654 -0
- struphy-3.5.0/src/struphy/feec/tests/test_boundary_integrals.py +371 -0
- struphy-3.5.0/src/struphy/feec/tests/test_derham.py +160 -0
- struphy-3.5.0/src/struphy/feec/tests/test_derham_gpu.py +69 -0
- struphy-3.5.0/src/struphy/feec/tests/test_estimate_mem.py +92 -0
- struphy-3.5.0/src/struphy/feec/tests/test_eval_field.py +596 -0
- struphy-3.5.0/src/struphy/feec/tests/test_field_init.py +1463 -0
- struphy-3.5.0/src/struphy/feec/tests/test_hiptmair_xu.py +114 -0
- struphy-3.5.0/src/struphy/feec/tests/test_kronecker_block.py +157 -0
- struphy-3.5.0/src/struphy/feec/tests/test_l2_projectors.py +408 -0
- struphy-3.5.0/src/struphy/feec/tests/test_local_projectors.py +1618 -0
- struphy-3.5.0/src/struphy/feec/tests/test_lowdim_nel_is_1.py +322 -0
- struphy-3.5.0/src/struphy/feec/tests/test_mass_matrices.py +1817 -0
- struphy-3.5.0/src/struphy/feec/tests/test_mass_reassembly.py +73 -0
- struphy-3.5.0/src/struphy/feec/tests/test_preconditioner_cupy.py +150 -0
- struphy-3.5.0/src/struphy/feec/tests/test_preconditioner_transpose.py +125 -0
- struphy-3.5.0/src/struphy/feec/tests/test_stiffness_preconditioner.py +432 -0
- struphy-3.5.0/src/struphy/feec/tests/test_toarray_struphy.py +139 -0
- struphy-3.5.0/src/struphy/feec/tests/test_tosparse_struphy.py +240 -0
- struphy-3.5.0/src/struphy/feec/tests/test_utilities_kernels.py +41 -0
- struphy-3.5.0/src/struphy/feec/tests/test_variational_utilities.py +52 -0
- struphy-3.5.0/src/struphy/feec/tests/test_weighted_average_projection.py +95 -0
- struphy-3.5.0/src/struphy/feec/tests/xx_test_preconds.py +116 -0
- struphy-3.5.0/src/struphy/feec/utilities.py +596 -0
- struphy-3.5.0/src/struphy/feec/utilities_kernels.py +123 -0
- struphy-3.5.0/src/struphy/feec/utilities_local_projectors.py +928 -0
- struphy-3.5.0/src/struphy/feec/variational_utilities.py +1551 -0
- struphy-3.5.0/src/struphy/fields_background/base.py +1663 -0
- struphy-3.5.0/src/struphy/fields_background/coil_fields/coil_fields.py +93 -0
- struphy-3.5.0/src/struphy/fields_background/equils.py +3441 -0
- struphy-3.5.0/src/struphy/fields_background/projected_equils.py +414 -0
- struphy-3.5.0/src/struphy/fields_background/tests/test_adhoc_tokamak_equils.py +45 -0
- struphy-3.5.0/src/struphy/fields_background/tests/test_axisymm_gradB.py +36 -0
- struphy-3.5.0/src/struphy/fields_background/tests/test_equils_cupy.py +283 -0
- struphy-3.5.0/src/struphy/fields_background/tests/test_generic_equils.py +102 -0
- struphy-3.5.0/src/struphy/fields_background/tests/test_gvec_equil.py +53 -0
- struphy-3.5.0/src/struphy/fields_background/tests/test_mhd_equils.py +1052 -0
- struphy-3.5.0/src/struphy/geometry/base.py +2660 -0
- struphy-3.5.0/src/struphy/geometry/domains/__init__.py +76 -0
- struphy-3.5.0/src/struphy/geometry/domains/colella/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/colella/colella.py +51 -0
- struphy-3.5.0/src/struphy/geometry/domains/colella/colella_cuda.cuh +49 -0
- struphy-3.5.0/src/struphy/geometry/domains/colella/colella_kernels.py +58 -0
- struphy-3.5.0/src/struphy/geometry/domains/constants_cuda.cuh +5 -0
- struphy-3.5.0/src/struphy/geometry/domains/cuboid/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/cuboid/cuboid.py +57 -0
- struphy-3.5.0/src/struphy/geometry/domains/cuboid/cuboid_cuda.cuh +48 -0
- struphy-3.5.0/src/struphy/geometry/domains/cuboid/cuboid_kernels.py +63 -0
- struphy-3.5.0/src/struphy/geometry/domains/desc_unit/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/desc_unit/desc_unit.py +50 -0
- struphy-3.5.0/src/struphy/geometry/domains/gvec_unit/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/gvec_unit/gvec_unit.py +64 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_cylinder/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder.py +55 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder_cuda.cuh +51 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_cylinder/hollow_cylinder_kernels.py +61 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_torus/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_torus/hollow_torus.py +114 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_torus/hollow_torus_cuda.cuh +101 -0
- struphy-3.5.0/src/struphy/geometry/domains/hollow_torus/hollow_torus_kernels.py +160 -0
- struphy-3.5.0/src/struphy/geometry/domains/iga_polar_cylinder/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/iga_polar_cylinder/iga_polar_cylinder.py +62 -0
- struphy-3.5.0/src/struphy/geometry/domains/iga_polar_torus/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/iga_polar_torus/iga_polar_torus.py +86 -0
- struphy-3.5.0/src/struphy/geometry/domains/orthogonal/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/orthogonal/orthogonal.py +51 -0
- struphy-3.5.0/src/struphy/geometry/domains/orthogonal/orthogonal_cuda.cuh +48 -0
- struphy-3.5.0/src/struphy/geometry/domains/orthogonal/orthogonal_kernels.py +58 -0
- struphy-3.5.0/src/struphy/geometry/domains/powered_elliptic_cylinder/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder.py +51 -0
- struphy-3.5.0/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder_cuda.cuh +50 -0
- struphy-3.5.0/src/struphy/geometry/domains/powered_elliptic_cylinder/powered_elliptic_cylinder_kernels.py +72 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/__init__.py +20 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder.py +60 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder_cuda.cuh +62 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_dshaped_cylinder/shafranov_dshaped_cylinder_kernels.py +101 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_shift_cylinder/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder.py +51 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder_cuda.cuh +49 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_shift_cylinder/shafranov_shift_cylinder_kernels.py +73 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder.py +51 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder_cuda.cuh +49 -0
- struphy-3.5.0/src/struphy/geometry/domains/shafranov_sqrt_cylinder/shafranov_sqrt_cylinder_kernels.py +73 -0
- struphy-3.5.0/src/struphy/geometry/domains/tokamak/__init__.py +18 -0
- struphy-3.5.0/src/struphy/geometry/domains/tokamak/tokamak.py +132 -0
- struphy-3.5.0/src/struphy/geometry/evaluation_kernels.cuh +530 -0
- struphy-3.5.0/src/struphy/geometry/evaluation_kernels.py +830 -0
- struphy-3.5.0/src/struphy/geometry/kernels/__init__.py +9 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate/__init__.py +10 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate/kernel_evaluate_cuda.cu +55 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate/kernel_evaluate_kernels.py +68 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate_pic/__init__.py +10 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate_pic/kernel_evaluate_pic_cuda.cu +81 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_evaluate_pic/kernel_evaluate_pic_kernels.py +79 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush/__init__.py +10 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush/kernel_pullpush_cuda.cu +62 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush/kernel_pullpush_kernels.py +81 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush_pic/__init__.py +10 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush_pic/kernel_pullpush_pic_cuda.cu +96 -0
- struphy-3.5.0/src/struphy/geometry/kernels/kernel_pullpush_pic/kernel_pullpush_pic_kernels.py +98 -0
- struphy-3.5.0/src/struphy/geometry/spline_mappings_kernels.cuh +334 -0
- struphy-3.5.0/src/struphy/geometry/spline_mappings_kernels.py +485 -0
- struphy-3.5.0/src/struphy/geometry/tests/spline_mapping_cases.py +172 -0
- struphy-3.5.0/src/struphy/geometry/tests/test_domain.py +1268 -0
- struphy-3.5.0/src/struphy/geometry/transform_kernels.cuh +219 -0
- struphy-3.5.0/src/struphy/geometry/transform_kernels.py +328 -0
- struphy-3.5.0/src/struphy/geometry/utilities.py +511 -0
- struphy-3.5.0/src/struphy/initial/base.py +228 -0
- struphy-3.5.0/src/struphy/initial/eigenfunctions.py +212 -0
- struphy-3.5.0/src/struphy/initial/perturbations.py +2531 -0
- struphy-3.5.0/src/struphy/initial/tests/test_init_perturbations.py +396 -0
- struphy-3.5.0/src/struphy/io/options.py +409 -0
- struphy-3.5.0/src/struphy/io/output_handling.py +171 -0
- struphy-3.5.0/src/struphy/io/setup.py +175 -0
- struphy-3.5.0/src/struphy/io/tests/test_output_handling.py +51 -0
- struphy-3.5.0/src/struphy/kernel_arguments/array_view.cuh +58 -0
- struphy-3.5.0/src/struphy/kernel_arguments/local_projectors_args.cuh +32 -0
- struphy-3.5.0/src/struphy/kernel_arguments/local_projectors_args_cuda.py +91 -0
- struphy-3.5.0/src/struphy/kernel_arguments/pusher_args.cuh +50 -0
- struphy-3.5.0/src/struphy/kernel_arguments/pusher_args_cuda.py +149 -0
- struphy-3.5.0/src/struphy/kernel_arguments/pusher_args_kernels.py +177 -0
- struphy-3.5.0/src/struphy/kernel_arguments/spline_args.cuh +16 -0
- struphy-3.5.0/src/struphy/kernel_arguments/spline_args_cuda.py +39 -0
- struphy-3.5.0/src/struphy/kernel_arguments/spline_args_kernels.py +48 -0
- struphy-3.5.0/src/struphy/kinetic_background/base.py +1026 -0
- struphy-3.5.0/src/struphy/kinetic_background/maxwellians.py +857 -0
- struphy-3.5.0/src/struphy/kinetic_background/moment_functions.py +54 -0
- struphy-3.5.0/src/struphy/kinetic_background/tests/test_base.py +166 -0
- struphy-3.5.0/src/struphy/kinetic_background/tests/test_maxwellians.py +1798 -0
- struphy-3.5.0/src/struphy/linear_algebra/linalg_kernels.cuh +114 -0
- struphy-3.5.0/src/struphy/linear_algebra/linalg_kron.py +445 -0
- struphy-3.5.0/src/struphy/linear_algebra/multigrid/coarsen.py +181 -0
- struphy-3.5.0/src/struphy/linear_algebra/multigrid/hierarchy.py +106 -0
- struphy-3.5.0/src/struphy/linear_algebra/multigrid/preconditioner.py +445 -0
- struphy-3.5.0/src/struphy/linear_algebra/multigrid/smoothers.py +534 -0
- struphy-3.5.0/src/struphy/linear_algebra/multigrid/transfer.py +257 -0
- struphy-3.5.0/src/struphy/linear_algebra/saddle_point.py +577 -0
- struphy-3.5.0/src/struphy/linear_algebra/schur_solver.py +414 -0
- struphy-3.5.0/src/struphy/linear_algebra/tests/test_multigrid_coarsen.py +184 -0
- struphy-3.5.0/src/struphy/linear_algebra/tests/test_multigrid_solver.py +281 -0
- struphy-3.5.0/src/struphy/linear_algebra/tests/test_multigrid_transfer.py +113 -0
- struphy-3.5.0/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +446 -0
- struphy-3.5.0/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +457 -0
- struphy-3.5.0/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +300 -0
- struphy-3.5.0/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +284 -0
- struphy-3.5.0/src/struphy/models/__init__.py +156 -0
- struphy-3.5.0/src/struphy/models/base.py +1226 -0
- struphy-3.5.0/src/struphy/models/cold_plasma_vlasov.py +378 -0
- struphy-3.5.0/src/struphy/models/curl_curl.py +182 -0
- struphy-3.5.0/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +345 -0
- struphy-3.5.0/src/struphy/models/guiding_center.py +213 -0
- struphy-3.5.0/src/struphy/models/gyrokinetic_poisson.py +200 -0
- struphy-3.5.0/src/struphy/models/hasegawa_wakatani.py +204 -0
- struphy-3.5.0/src/struphy/models/incompressible_navier_stokes_sph.py +275 -0
- struphy-3.5.0/src/struphy/models/linear_extended_mh_duniform.py +310 -0
- struphy-3.5.0/src/struphy/models/linear_mhd.py +280 -0
- struphy-3.5.0/src/struphy/models/linear_mhd_driftkinetic_cc.py +379 -0
- struphy-3.5.0/src/struphy/models/linear_vlasov_ampere_one_species.py +375 -0
- struphy-3.5.0/src/struphy/models/linear_vlasov_maxwell_one_species.py +298 -0
- struphy-3.5.0/src/struphy/models/poisson.py +193 -0
- struphy-3.5.0/src/struphy/models/scalars.py +418 -0
- struphy-3.5.0/src/struphy/models/shear_alfven_curl_curl.py +208 -0
- struphy-3.5.0/src/struphy/models/shear_alfven_curl_curl_with_proj.py +79 -0
- struphy-3.5.0/src/struphy/models/species.py +461 -0
- struphy-3.5.0/src/struphy/models/tests/default_params/test_models.py +115 -0
- struphy-3.5.0/src/struphy/models/tests/gpu_e2e.py +255 -0
- struphy-3.5.0/src/struphy/models/tests/test_diagnostics_on_device.py +346 -0
- struphy-3.5.0/src/struphy/models/tests/test_examples.py +75 -0
- struphy-3.5.0/src/struphy/models/tests/test_gpu_LinearVlasovAmpereOneSpecies.py +194 -0
- struphy-3.5.0/src/struphy/models/tests/test_gpu_VlasovAmpereOneSpecies.py +217 -0
- struphy-3.5.0/src/struphy/models/tests/test_hasegawa_wakatani.py +8 -0
- struphy-3.5.0/src/struphy/models/tests/test_scalars.py +219 -0
- struphy-3.5.0/src/struphy/models/tests/test_variational_dissipation.py +48 -0
- struphy-3.5.0/src/struphy/models/tests/utils_testing.py +161 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_CurlCurl.py +107 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_IncompressibleNavierStokesSPH.py +483 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_LinearMHD.py +151 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_LinearVlasovAmpereOneSpecies.py +271 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_Maxwell.py +281 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_Poisson.py +130 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +1039 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +380 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovMaxwellOneSpecies.py +120 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovPoissonAdiabatic.py +214 -0
- struphy-3.5.0/src/struphy/models/tests/verification/test_verif_VlasovPoissonAdiabaticPauli.py +248 -0
- struphy-3.5.0/src/struphy/models/toy_drift.py +277 -0
- struphy-3.5.0/src/struphy/models/variables.py +1034 -0
- struphy-3.5.0/src/struphy/models/visco_resistive_mhd_with_p.py +325 -0
- struphy-3.5.0/src/struphy/models/vlasov_ampere_one_species.py +340 -0
- struphy-3.5.0/src/struphy/models/vlasov_maxwell_one_species.py +397 -0
- struphy-3.5.0/src/struphy/models/vlasov_poisson_adiabatic.py +352 -0
- struphy-3.5.0/src/struphy/models/vlasov_poisson_adiabatic_pauli.py +424 -0
- struphy-3.5.0/src/struphy/ode/tests/test_butcher.py +48 -0
- struphy-3.5.0/src/struphy/ode/tests/test_ode_feec.py +192 -0
- struphy-3.5.0/src/struphy/ode/utils.py +164 -0
- struphy-3.5.0/src/struphy/particles/parameters.py +355 -0
- struphy-3.5.0/src/struphy/physics/physics.py +152 -0
- struphy-3.5.0/src/struphy/pic/accumulation/filler_kernels.cuh +164 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/__init__.py +8 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_D/cc_lin_mhd_5d_D_kernels.py +218 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_M/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_M/cc_lin_mhd_5d_M_kernels.py +123 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_curlb/cc_lin_mhd_5d_curlb_kernels.py +220 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB/cc_lin_mhd_5d_gradB_kernels.py +218 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg/cc_lin_mhd_5d_gradB_dg_kernels.py +249 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg_init/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_5d_gradB_dg_init/cc_lin_mhd_5d_gradB_dg_init_kernels.py +241 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_1/cc_lin_mhd_6d_1_kernels.py +197 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/cc_lin_mhd_6d_2/cc_lin_mhd_6d_2_kernels.py +295 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/charge_density_0form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/charge_density_0form/charge_density_0form_cuda.cu +37 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/charge_density_0form/charge_density_0form_kernels.py +63 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/div_u_weak_1form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/div_u_weak_1form/div_u_weak_1form_kernels.py +82 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_density_0form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_density_0form/gc_density_0form_kernels.py +61 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_mag_density_0form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/gc_mag_density_0form/gc_mag_density_0form_kernels.py +59 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/linear_vlasov_ampere_cuda.cu +93 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/linear_vlasov_ampere/linear_vlasov_ampere_kernels.py +141 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d/pc_lin_mhd_6d_kernels.py +182 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_full/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/pc_lin_mhd_6d_full/pc_lin_mhd_6d_full_kernels.py +205 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/vlasov_maxwell_cuda.cu +81 -0
- struphy-3.5.0/src/struphy/pic/accumulation/kernels/vlasov_maxwell/vlasov_maxwell_kernels.py +133 -0
- struphy-3.5.0/src/struphy/pic/accumulation/particle_to_mat_kernels.cuh +106 -0
- struphy-3.5.0/src/struphy/pic/accumulation/particles_to_grid.py +768 -0
- struphy-3.5.0/src/struphy/pic/base.py +5280 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/__init__.py +9 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/canonical_kinetic_particles/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/canonical_kinetic_particles/canonical_kinetic_particles_kernels.py +100 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_5d/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_5d/eval_canonical_toroidal_moment_5d_kernels.py +57 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_6d/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_canonical_toroidal_moment_6d/eval_canonical_toroidal_moment_6d_kernels.py +55 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_energy_5d/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_energy_5d/eval_energy_5d_kernels.py +48 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_gradB_ediff/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_gradB_ediff/eval_gradB_ediff_kernels.py +107 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_guiding_center_from_6d/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_guiding_center_from_6d/eval_guiding_center_from_6d_kernels.py +120 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_background_energy/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_background_energy/eval_magnetic_background_energy_kernels.py +65 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_energy_PBb/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_energy_PBb/eval_magnetic_energy_PBb_kernels.py +75 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_moment_5d/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/eval_magnetic_moment_5d/eval_magnetic_moment_5d_kernels.py +47 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/thermal_energy/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/diagnostics/kernels/thermal_energy/thermal_energy_kernels.py +112 -0
- struphy-3.5.0/src/struphy/pic/kernels/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/kernels/box_and_sort_particles/__init__.py +16 -0
- struphy-3.5.0/src/struphy/pic/kernels/box_and_sort_particles/box_and_sort_particles_kernels.py +43 -0
- struphy-3.5.0/src/struphy/pic/kernels/box_particles/__init__.py +16 -0
- struphy-3.5.0/src/struphy/pic/kernels/box_particles/box_particles_kernels.py +29 -0
- struphy-3.5.0/src/struphy/pic/kernels/fill_boxes/__init__.py +16 -0
- struphy-3.5.0/src/struphy/pic/kernels/fill_boxes/fill_boxes_kernels.py +24 -0
- struphy-3.5.0/src/struphy/pic/kernels/sort_and_fill_boxes/__init__.py +16 -0
- struphy-3.5.0/src/struphy/pic/kernels/sort_and_fill_boxes/sort_and_fill_boxes_kernels.py +34 -0
- struphy-3.5.0/src/struphy/pic/marker_layout.py +35 -0
- struphy-3.5.0/src/struphy/pic/particles.py +1158 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernel_setup.py +94 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/__init__.py +8 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_2form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_2form/bstar_2form_kernels.py +103 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/bstar_parallel_3form_cuda.cu +78 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/bstar_parallel_3form/bstar_parallel_3form_kernels.py +102 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/driftkinetic_hamiltonian/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/driftkinetic_hamiltonian/driftkinetic_hamiltonian_kernels.py +91 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/grad_driftkinetic_hamiltonian/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/grad_driftkinetic_hamiltonian/grad_driftkinetic_hamiltonian_kernels.py +111 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_H1vec/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_H1vec/push_bxu_H1vec_kernels.py +139 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hcurl/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hcurl/push_bxu_Hcurl_kernels.py +143 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv/push_bxu_Hdiv_kernels.py +139 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv_pauli/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_bxu_Hdiv_pauli/push_bxu_Hdiv_pauli_kernels.py +229 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_deterministic_diffusion_stage/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_deterministic_diffusion_stage/push_deterministic_diffusion_stage_kernels.py +140 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_eta_stage/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_eta_stage/push_eta_stage_cuda.cu +62 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_eta_stage/push_eta_stage_kernels.py +90 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order/push_gc_Bstar_discrete_gradient_1st_order_kernels.py +193 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order_newton/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_1st_order_newton/push_gc_Bstar_discrete_gradient_1st_order_newton_kernels.py +340 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_2nd_order/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_discrete_gradient_2nd_order/push_gc_Bstar_discrete_gradient_2nd_order_kernels.py +273 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_explicit_multistage/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_Bstar_explicit_multistage/push_gc_Bstar_explicit_multistage_kernels.py +214 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_dg_1st_order_newton/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_dg_1st_order_newton/push_gc_bxEstar_dg_1st_order_newton_kernels.py +291 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_1st_order/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_1st_order/push_gc_bxEstar_discrete_gradient_1st_order_kernels.py +167 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_2nd_order/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_discrete_gradient_2nd_order/push_gc_bxEstar_discrete_gradient_2nd_order_kernels.py +223 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_explicit_multistage/__init__.py +12 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_bxEstar_explicit_multistage/push_gc_bxEstar_explicit_multistage_kernels.py +172 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_H1vec/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_H1vec/push_gc_cc_J1_H1vec_kernels.py +150 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hcurl/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hcurl/push_gc_cc_J1_Hcurl_kernels.py +157 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hdiv/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J1_Hdiv/push_gc_cc_J1_Hdiv_kernels.py +148 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_Hdiv/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_Hdiv/push_gc_cc_J2_dg_Hdiv_kernels.py +209 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_init_Hdiv/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_dg_init_Hdiv/push_gc_cc_J2_dg_init_Hdiv_kernels.py +176 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_H1vec/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_H1vec/push_gc_cc_J2_stage_H1vec_kernels.py +212 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_Hdiv/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_gc_cc_J2_stage_Hdiv/push_gc_cc_J2_stage_Hdiv_kernels.py +213 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu/push_pc_GXu_kernels.py +128 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu_full/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_GXu_full/push_pc_GXu_full_kernels.py +139 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_H1vec/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_H1vec/push_pc_eta_stage_H1vec_kernels.py +140 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hcurl/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hcurl/push_pc_eta_stage_Hcurl_kernels.py +136 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hdiv/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_pc_eta_stage_Hdiv/push_pc_eta_stage_Hdiv_kernels.py +137 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_random_diffusion_stage/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_random_diffusion_stage/push_random_diffusion_stage_kernels.py +58 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure/push_v_sph_pressure_kernels.py +259 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure_ideal_gas/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_sph_pressure_ideal_gas/push_v_sph_pressure_ideal_gas_kernels.py +261 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_viscosity/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_viscosity/push_v_viscosity_kernels.py +156 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield/push_v_with_efield_cuda.cu +60 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield/push_v_with_efield_kernels.py +112 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield_mu/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_v_with_efield_mu/push_v_with_efield_mu_kernels.py +136 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/push_vxb_analytic_cuda.cu +85 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_analytic/push_vxb_analytic_kernels.py +133 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/push_vxb_implicit_cuda.cu +84 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_vxb_implicit/push_vxb_implicit_kernels.py +144 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/push_weights_with_efield_lin_va_cuda.cu +73 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/push_weights_with_efield_lin_va/push_weights_with_efield_lin_va_kernels.py +124 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/reflect/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/reflect/reflect_cuda.cu +21 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/reflect/reflect_kernels.py +77 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_isotherm_kappa/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_isotherm_kappa/sph_isotherm_kappa_kernels.py +28 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_mean_velocity_coeffs/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_mean_velocity_coeffs/sph_mean_velocity_coeffs_kernels.py +95 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_pressure_coeffs/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_pressure_coeffs/sph_pressure_coeffs_kernels.py +85 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_viscosity_tensor/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/sph_viscosity_tensor/sph_viscosity_tensor_kernels.py +165 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/unit_b_1form/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/pushing/kernels/unit_b_1form/unit_b_1form_kernels.py +73 -0
- struphy-3.5.0/src/struphy/pic/pushing/prepare_push_cuda.cu +28 -0
- struphy-3.5.0/src/struphy/pic/pushing/pusher.py +451 -0
- struphy-3.5.0/src/struphy/pic/pushing/pusher_utilities_kernels.cuh +112 -0
- struphy-3.5.0/src/struphy/pic/pushing/pusher_utilities_kernels.py +239 -0
- struphy-3.5.0/src/struphy/pic/sampling_kernels.py +118 -0
- struphy-3.5.0/src/struphy/pic/sobol_seq.py +736 -0
- struphy-3.5.0/src/struphy/pic/sorting.py +401 -0
- struphy-3.5.0/src/struphy/pic/sorting_kernels.py +277 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/__init__.py +9 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_flat/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_flat/box_based_evaluation_flat_kernels.py +113 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_meshgrid/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/box_based_evaluation_meshgrid/box_based_evaluation_meshgrid_kernels.py +128 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_flat/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_flat/naive_evaluation_flat_kernels.py +78 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_meshgrid/__init__.py +10 -0
- struphy-3.5.0/src/struphy/pic/sph/kernels/naive_evaluation_meshgrid/naive_evaluation_meshgrid_kernels.py +80 -0
- struphy-3.5.0/src/struphy/pic/sph_eval_kernels.py +217 -0
- struphy-3.5.0/src/struphy/pic/sph_smoothing_kernels.py +678 -0
- struphy-3.5.0/src/struphy/pic/tests/_bench_push_vxb_analytic.py +91 -0
- struphy-3.5.0/src/struphy/pic/tests/bench_marker_layout.py +211 -0
- struphy-3.5.0/src/struphy/pic/tests/bench_openmp_speedup.py +99 -0
- struphy-3.5.0/src/struphy/pic/tests/cuda_emulation.py +127 -0
- struphy-3.5.0/src/struphy/pic/tests/cuda_parity_cases.py +419 -0
- struphy-3.5.0/src/struphy/pic/tests/kernel_test_args.py +227 -0
- struphy-3.5.0/src/struphy/pic/tests/test_accum_gc_gradB.py +79 -0
- struphy-3.5.0/src/struphy/pic/tests/test_accum_matrix_cupy.py +204 -0
- struphy-3.5.0/src/struphy/pic/tests/test_accum_pressure_coupling.py +70 -0
- struphy-3.5.0/src/struphy/pic/tests/test_accum_vec_H1.py +621 -0
- struphy-3.5.0/src/struphy/pic/tests/test_binning.py +1487 -0
- struphy-3.5.0/src/struphy/pic/tests/test_cuda_emulation.py +133 -0
- struphy-3.5.0/src/struphy/pic/tests/test_cuda_parity.py +163 -0
- struphy-3.5.0/src/struphy/pic/tests/test_device_helpers.py +455 -0
- struphy-3.5.0/src/struphy/pic/tests/test_draw_parallel.py +288 -0
- struphy-3.5.0/src/struphy/pic/tests/test_estimate_mem.py +110 -0
- struphy-3.5.0/src/struphy/pic/tests/test_gc_epsilon.py +13 -0
- struphy-3.5.0/src/struphy/pic/tests/test_kernel_backends.py +251 -0
- struphy-3.5.0/src/struphy/pic/tests/test_kernel_setup.py +302 -0
- struphy-3.5.0/src/struphy/pic/tests/test_load_external.py +43 -0
- struphy-3.5.0/src/struphy/pic/tests/test_marker_layout.py +277 -0
- struphy-3.5.0/src/struphy/pic/tests/test_mat_vec_filler.py +439 -0
- struphy-3.5.0/src/struphy/pic/tests/test_neighbor_ranks.py +145 -0
- struphy-3.5.0/src/struphy/pic/tests/test_openmp.py +155 -0
- struphy-3.5.0/src/struphy/pic/tests/test_pauli_particles.py +100 -0
- struphy-3.5.0/src/struphy/pic/tests/test_pole.py +372 -0
- struphy-3.5.0/src/struphy/pic/tests/test_pusher_openmp_speedup.py +100 -0
- struphy-3.5.0/src/struphy/pic/tests/test_pushers.py +861 -0
- struphy-3.5.0/src/struphy/pic/tests/test_reflect.py +89 -0
- struphy-3.5.0/src/struphy/pic/tests/test_set_zero_velocity.py +263 -0
- struphy-3.5.0/src/struphy/pic/tests/test_show_distribution.py +76 -0
- struphy-3.5.0/src/struphy/pic/tests/test_sorting.py +341 -0
- struphy-3.5.0/src/struphy/pic/tests/test_sorting_device.py +292 -0
- struphy-3.5.0/src/struphy/pic/tests/test_sph.py +2188 -0
- struphy-3.5.0/src/struphy/pic/tests/test_tesselation.py +189 -0
- struphy-3.5.0/src/struphy/pic/tests/test_utilities.py +45 -0
- struphy-3.5.0/src/struphy/pic/utilities.py +77 -0
- struphy-3.5.0/src/struphy/pic/utilities_kernels.py +121 -0
- struphy-3.5.0/src/struphy/polar/basic.py +567 -0
- struphy-3.5.0/src/struphy/polar/extraction_operators.py +943 -0
- struphy-3.5.0/src/struphy/polar/kron_2dx1d.py +1287 -0
- struphy-3.5.0/src/struphy/polar/linear_operators.py +1043 -0
- struphy-3.5.0/src/struphy/polar/tests/test_factorization_cache.py +176 -0
- struphy-3.5.0/src/struphy/polar/tests/test_polar.py +869 -0
- struphy-3.5.0/src/struphy/polar/tests/test_polar_cupy.py +429 -0
- struphy-3.5.0/src/struphy/post_processing/arrays.py +229 -0
- struphy-3.5.0/src/struphy/post_processing/manifest.py +107 -0
- struphy-3.5.0/src/struphy/post_processing/orbits/orbits_tools.py +217 -0
- struphy-3.5.0/src/struphy/post_processing/output.py +2753 -0
- struphy-3.5.0/src/struphy/post_processing/particle_diagnostics.py +156 -0
- struphy-3.5.0/src/struphy/post_processing/plot_3d.py +425 -0
- struphy-3.5.0/src/struphy/post_processing/profiling.py +138 -0
- struphy-3.5.0/src/struphy/post_processing/si.py +65 -0
- struphy-3.5.0/src/struphy/post_processing/slices.py +301 -0
- struphy-3.5.0/src/struphy/post_processing/store.py +64 -0
- struphy-3.5.0/src/struphy/post_processing/tests/__init__.py +0 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_arrays.py +102 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_eval_grids.py +259 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_eval_grids_mpi.py +243 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_orbits_tools.py +56 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_output.py +968 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_particle_diagnostics.py +58 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_plot_3d.py +143 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_pproc.py +161 -0
- struphy-3.5.0/src/struphy/post_processing/tests/test_slices.py +249 -0
- struphy-3.5.0/src/struphy/propagators/__init__.py +167 -0
- struphy-3.5.0/src/struphy/propagators/adiabatic_poisson_solve.py +235 -0
- struphy-3.5.0/src/struphy/propagators/base.py +295 -0
- struphy-3.5.0/src/struphy/propagators/curl_curl_solve.py +400 -0
- struphy-3.5.0/src/struphy/propagators/current_coupling_5d_curlb.py +325 -0
- struphy-3.5.0/src/struphy/propagators/current_coupling_5d_density.py +244 -0
- struphy-3.5.0/src/struphy/propagators/current_coupling_5d_gradb.py +864 -0
- struphy-3.5.0/src/struphy/propagators/current_coupling_6d_current.py +310 -0
- struphy-3.5.0/src/struphy/propagators/current_coupling_6d_density.py +300 -0
- struphy-3.5.0/src/struphy/propagators/efield_weights_coupling.py +313 -0
- struphy-3.5.0/src/struphy/propagators/faraday_extended.py +240 -0
- struphy-3.5.0/src/struphy/propagators/gyrokinetic_poisson_solve.py +215 -0
- struphy-3.5.0/src/struphy/propagators/hall.py +180 -0
- struphy-3.5.0/src/struphy/propagators/hasegawa_wakatani_step.py +348 -0
- struphy-3.5.0/src/struphy/propagators/implicit_diffusion.py +655 -0
- struphy-3.5.0/src/struphy/propagators/magnetosonic.py +249 -0
- struphy-3.5.0/src/struphy/propagators/magnetosonic_uniform.py +242 -0
- struphy-3.5.0/src/struphy/propagators/maxwell_weak_ampere.py +252 -0
- struphy-3.5.0/src/struphy/propagators/poisson_solve.py +204 -0
- struphy-3.5.0/src/struphy/propagators/pressure_coupling_6d.py +389 -0
- struphy-3.5.0/src/struphy/propagators/push_deterministic_diffusion.py +169 -0
- struphy-3.5.0/src/struphy/propagators/push_eta.py +124 -0
- struphy-3.5.0/src/struphy/propagators/push_eta_pc.py +172 -0
- struphy-3.5.0/src/struphy/propagators/push_guiding_center_bx_estar.py +526 -0
- struphy-3.5.0/src/struphy/propagators/push_guiding_center_parallel.py +552 -0
- struphy-3.5.0/src/struphy/propagators/push_random_diffusion.py +161 -0
- struphy-3.5.0/src/struphy/propagators/push_v_in_force_field.py +194 -0
- struphy-3.5.0/src/struphy/propagators/push_v_in_sph_pressure.py +211 -0
- struphy-3.5.0/src/struphy/propagators/push_v_in_viscous_potential.py +209 -0
- struphy-3.5.0/src/struphy/propagators/push_vxb.py +167 -0
- struphy-3.5.0/src/struphy/propagators/shear_alfven_b1.py +214 -0
- struphy-3.5.0/src/struphy/propagators/shear_alfven_curl_curl_propagator.py +443 -0
- struphy-3.5.0/src/struphy/propagators/shear_alfven_current_coupling_5d.py +471 -0
- struphy-3.5.0/src/struphy/propagators/shear_alfven_propagator.py +349 -0
- struphy-3.5.0/src/struphy/propagators/tests/__init__.py +0 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_adiabatic_poisson.py +220 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_curl_curl.py +537 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_current_coupling_5d.py +61 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_current_coupling_5d_options.py +31 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +894 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_magnetosonic.py +42 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_poisson.py +1090 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_pressure_coupling_6d.py +31 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_push_random_diffusion.py +50 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_shear_alfven.py +93 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_shear_alfven_curl_curl.py +202 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_time_dependent_source.py +54 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_two_fluid_quasi_neutral_full.py +96 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_variational_density_evolve.py +49 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_variational_mag_field_evolve.py +99 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_variational_qb_evolve.py +44 -0
- struphy-3.5.0/src/struphy/propagators/tests/test_variational_solver_option.py +49 -0
- struphy-3.5.0/src/struphy/propagators/time_dependent_source.py +112 -0
- struphy-3.5.0/src/struphy/propagators/two_fluid_quasi_neutral_full.py +468 -0
- struphy-3.5.0/src/struphy/propagators/variational_density_evolve.py +627 -0
- struphy-3.5.0/src/struphy/propagators/variational_entropy_evolve.py +468 -0
- struphy-3.5.0/src/struphy/propagators/variational_mag_field_evolve.py +418 -0
- struphy-3.5.0/src/struphy/propagators/variational_momentum_advection.py +295 -0
- struphy-3.5.0/src/struphy/propagators/variational_pb_evolve.py +675 -0
- struphy-3.5.0/src/struphy/propagators/variational_qb_evolve.py +699 -0
- struphy-3.5.0/src/struphy/propagators/variational_resistivity.py +820 -0
- struphy-3.5.0/src/struphy/propagators/variational_viscosity.py +837 -0
- struphy-3.5.0/src/struphy/propagators/vlasov_ampere_coupling.py +243 -0
- struphy-3.5.0/src/struphy/simulation/__init__.py +0 -0
- struphy-3.5.0/src/struphy/simulation/base.py +67 -0
- struphy-3.5.0/src/struphy/simulation/sim.py +2435 -0
- struphy-3.5.0/src/struphy/simulation/tests/__init__.py +0 -0
- struphy-3.5.0/src/struphy/simulation/tests/test_compile_cuda_kernels.py +247 -0
- struphy-3.5.0/src/struphy/simulation/tests/test_output.py +478 -0
- struphy-3.5.0/src/struphy/simulation/tests/test_sim_comm_mpi.py +50 -0
- struphy-3.5.0/src/struphy/struphy_model_test/ColdPlasma/parameters.py +120 -0
- struphy-3.5.0/src/struphy/topology/__init__.py +0 -0
- struphy-3.5.0/src/struphy/utils/__init__.py +0 -0
- struphy-3.5.0/src/struphy/utils/clone_config.py +274 -0
- struphy-3.5.0/src/struphy/utils/compiler.py +266 -0
- struphy-3.5.0/src/struphy/utils/cuda_arguments.py +60 -0
- struphy-3.5.0/src/struphy/utils/ipython_compat.py +31 -0
- struphy-3.5.0/src/struphy/utils/kernel_compilation.py +52 -0
- struphy-3.5.0/src/struphy/utils/test_clone_config.py +47 -0
- struphy-3.5.0/src/struphy/utils/test_utils.py +22 -0
- struphy-3.5.0/src/struphy/utils/utils.py +261 -0
- struphy-3.5.0/src/struphy.egg-info/PKG-INFO +298 -0
- struphy-3.5.0/src/struphy.egg-info/SOURCES.txt +793 -0
- struphy-3.5.0/src/struphy.egg-info/entry_points.txt +2 -0
- struphy-3.5.0/src/struphy.egg-info/requires.txt +85 -0
- struphy-3.3.0/PKG-INFO +0 -257
- struphy-3.3.0/README.md +0 -149
- struphy-3.3.0/pyproject.toml +0 -184
- struphy-3.3.0/setup.cfg +0 -13
- struphy-3.3.0/src/struphy/__init__.py +0 -197
- struphy-3.3.0/src/struphy/api/models/__init__.py +0 -81
- struphy-3.3.0/src/struphy/api/post_processing/__init__.py +0 -3
- struphy-3.3.0/src/struphy/bsplines/evaluation_kernels_3d.py +0 -1924
- struphy-3.3.0/src/struphy/bsplines/tests/test_bsplines_kers.py +0 -210
- struphy-3.3.0/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -855
- struphy-3.3.0/src/struphy/compile_struphy.mk +0 -51
- struphy-3.3.0/src/struphy/console/compile.py +0 -315
- struphy-3.3.0/src/struphy/console/format.py +0 -1488
- struphy-3.3.0/src/struphy/console/main.py +0 -755
- struphy-3.3.0/src/struphy/console/params.py +0 -49
- struphy-3.3.0/src/struphy/console/profile.py +0 -228
- struphy-3.3.0/src/struphy/console/test.py +0 -172
- struphy-3.3.0/src/struphy/console/tests/xx_test_console.py +0 -151
- struphy-3.3.0/src/struphy/dependencies.py +0 -96
- struphy-3.3.0/src/struphy/diagnostics/console_diagn.py +0 -411
- struphy-3.3.0/src/struphy/diagnostics/diagn_tools.py +0 -1088
- struphy-3.3.0/src/struphy/diagnostics/paraview/mesh_creator.py +0 -323
- struphy-3.3.0/src/struphy/diagnostics/paraview/vtk_writer.py +0 -88
- struphy-3.3.0/src/struphy/dispersion_relations/analytic.py +0 -1154
- struphy-3.3.0/src/struphy/examples/_draw_parallel.py +0 -100
- struphy-3.3.0/src/struphy/feec/basis_projection_kernels.py +0 -568
- struphy-3.3.0/src/struphy/feec/basis_projection_ops.py +0 -2404
- struphy-3.3.0/src/struphy/feec/boundary_mass.py +0 -588
- struphy-3.3.0/src/struphy/feec/linear_operators.py +0 -510
- struphy-3.3.0/src/struphy/feec/local_projectors_kernels.py +0 -1216
- struphy-3.3.0/src/struphy/feec/mass.py +0 -3395
- struphy-3.3.0/src/struphy/feec/mass_kernels.py +0 -1268
- struphy-3.3.0/src/struphy/feec/memory.py +0 -70
- struphy-3.3.0/src/struphy/feec/preconditioner.py +0 -994
- struphy-3.3.0/src/struphy/feec/projectors.py +0 -2237
- struphy-3.3.0/src/struphy/feec/psydac_derham.py +0 -4016
- struphy-3.3.0/src/struphy/feec/tests/test_basis_ops.py +0 -529
- struphy-3.3.0/src/struphy/feec/tests/test_boundary_integrals.py +0 -372
- struphy-3.3.0/src/struphy/feec/tests/test_derham.py +0 -160
- struphy-3.3.0/src/struphy/feec/tests/test_estimate_mem.py +0 -77
- struphy-3.3.0/src/struphy/feec/tests/test_eval_field.py +0 -557
- struphy-3.3.0/src/struphy/feec/tests/test_field_init.py +0 -1397
- struphy-3.3.0/src/struphy/feec/tests/test_l2_projectors.py +0 -295
- struphy-3.3.0/src/struphy/feec/tests/test_local_projectors.py +0 -1528
- struphy-3.3.0/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -322
- struphy-3.3.0/src/struphy/feec/tests/test_mass_matrices.py +0 -1401
- struphy-3.3.0/src/struphy/feec/tests/test_toarray_struphy.py +0 -138
- struphy-3.3.0/src/struphy/feec/tests/test_tosparse_struphy.py +0 -154
- struphy-3.3.0/src/struphy/feec/tests/xx_test_preconds.py +0 -116
- struphy-3.3.0/src/struphy/feec/utilities.py +0 -588
- struphy-3.3.0/src/struphy/feec/utilities_kernels.py +0 -216
- struphy-3.3.0/src/struphy/feec/utilities_local_projectors.py +0 -928
- struphy-3.3.0/src/struphy/feec/variational_utilities.py +0 -1569
- struphy-3.3.0/src/struphy/fields_background/base.py +0 -1667
- struphy-3.3.0/src/struphy/fields_background/coil_fields/coil_fields.py +0 -93
- struphy-3.3.0/src/struphy/fields_background/equils.py +0 -3430
- struphy-3.3.0/src/struphy/fields_background/projected_equils.py +0 -401
- struphy-3.3.0/src/struphy/fields_background/tests/test_generic_equils.py +0 -88
- struphy-3.3.0/src/struphy/fields_background/tests/test_mhd_equils.py +0 -961
- struphy-3.3.0/src/struphy/geometry/base.py +0 -2605
- struphy-3.3.0/src/struphy/geometry/domains.py +0 -898
- struphy-3.3.0/src/struphy/geometry/evaluation_kernels.py +0 -952
- struphy-3.3.0/src/struphy/geometry/mappings_kernels.py +0 -1166
- struphy-3.3.0/src/struphy/geometry/tests/test_domain.py +0 -986
- struphy-3.3.0/src/struphy/geometry/transform_kernels.py +0 -454
- struphy-3.3.0/src/struphy/geometry/utilities.py +0 -498
- struphy-3.3.0/src/struphy/initial/base.py +0 -236
- struphy-3.3.0/src/struphy/initial/eigenfunctions.py +0 -212
- struphy-3.3.0/src/struphy/initial/perturbations.py +0 -2521
- struphy-3.3.0/src/struphy/initial/tests/test_init_perturbations.py +0 -348
- struphy-3.3.0/src/struphy/io/options.py +0 -376
- struphy-3.3.0/src/struphy/io/output_handling.py +0 -171
- struphy-3.3.0/src/struphy/io/setup.py +0 -175
- struphy-3.3.0/src/struphy/kernel_arguments/pusher_args_kernels.py +0 -162
- struphy-3.3.0/src/struphy/kinetic_background/base.py +0 -1013
- struphy-3.3.0/src/struphy/kinetic_background/maxwellians.py +0 -846
- struphy-3.3.0/src/struphy/kinetic_background/moment_functions.py +0 -54
- struphy-3.3.0/src/struphy/kinetic_background/tests/test_base.py +0 -146
- struphy-3.3.0/src/struphy/kinetic_background/tests/test_maxwellians.py +0 -1733
- struphy-3.3.0/src/struphy/linear_algebra/linalg_kron.py +0 -439
- struphy-3.3.0/src/struphy/linear_algebra/saddle_point.py +0 -565
- struphy-3.3.0/src/struphy/linear_algebra/schur_solver.py +0 -400
- struphy-3.3.0/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +0 -446
- struphy-3.3.0/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +0 -415
- struphy-3.3.0/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +0 -300
- struphy-3.3.0/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +0 -284
- struphy-3.3.0/src/struphy/models/__init__.py +0 -81
- struphy-3.3.0/src/struphy/models/base.py +0 -1098
- struphy-3.3.0/src/struphy/models/cold_plasma_vlasov.py +0 -377
- struphy-3.3.0/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +0 -333
- struphy-3.3.0/src/struphy/models/guiding_center.py +0 -215
- struphy-3.3.0/src/struphy/models/hasegawa_wakatani.py +0 -217
- struphy-3.3.0/src/struphy/models/incompressible_navier_stokes_sph.py +0 -277
- struphy-3.3.0/src/struphy/models/linear_extended_mh_duniform.py +0 -302
- struphy-3.3.0/src/struphy/models/linear_mhd.py +0 -271
- struphy-3.3.0/src/struphy/models/linear_mhd_driftkinetic_cc.py +0 -379
- struphy-3.3.0/src/struphy/models/linear_vlasov_ampere_one_species.py +0 -371
- struphy-3.3.0/src/struphy/models/linear_vlasov_maxwell_one_species.py +0 -284
- struphy-3.3.0/src/struphy/models/poisson.py +0 -189
- struphy-3.3.0/src/struphy/models/scalars.py +0 -355
- struphy-3.3.0/src/struphy/models/species.py +0 -423
- struphy-3.3.0/src/struphy/models/tests/default_params/test_models.py +0 -99
- struphy-3.3.0/src/struphy/models/tests/test_examples.py +0 -67
- struphy-3.3.0/src/struphy/models/tests/utils_testing.py +0 -136
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_IncompressibleNavierStokesSPH.py +0 -504
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_LinearMHD.py +0 -153
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_Maxwell.py +0 -267
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_Poisson.py +0 -136
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +0 -1048
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +0 -170
- struphy-3.3.0/src/struphy/models/toy_drift.py +0 -278
- struphy-3.3.0/src/struphy/models/variables.py +0 -990
- struphy-3.3.0/src/struphy/models/visco_resistive_mhd_with_p.py +0 -309
- struphy-3.3.0/src/struphy/models/vlasov_ampere_one_species.py +0 -341
- struphy-3.3.0/src/struphy/models/vlasov_maxwell_one_species.py +0 -377
- struphy-3.3.0/src/struphy/ode/tests/test_ode_feec.py +0 -192
- struphy-3.3.0/src/struphy/ode/utils.py +0 -150
- struphy-3.3.0/src/struphy/particles/parameters.py +0 -355
- struphy-3.3.0/src/struphy/physics/physics.py +0 -152
- struphy-3.3.0/src/struphy/pic/accumulation/accum_kernels.py +0 -1173
- struphy-3.3.0/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -1269
- struphy-3.3.0/src/struphy/pic/accumulation/particles_to_grid.py +0 -807
- struphy-3.3.0/src/struphy/pic/base.py +0 -4883
- struphy-3.3.0/src/struphy/pic/particles.py +0 -952
- struphy-3.3.0/src/struphy/pic/pushing/eval_kernels_gc.py +0 -469
- struphy-3.3.0/src/struphy/pic/pushing/eval_kernels_sph.py +0 -535
- struphy-3.3.0/src/struphy/pic/pushing/pusher.py +0 -431
- struphy-3.3.0/src/struphy/pic/pushing/pusher_kernels.py +0 -2635
- struphy-3.3.0/src/struphy/pic/pushing/pusher_kernels_gc.py +0 -2952
- struphy-3.3.0/src/struphy/pic/pushing/pusher_kernels_sph.py +0 -674
- struphy-3.3.0/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -79
- struphy-3.3.0/src/struphy/pic/sampling_kernels.py +0 -118
- struphy-3.3.0/src/struphy/pic/sobol_seq.py +0 -732
- struphy-3.3.0/src/struphy/pic/sorting.py +0 -401
- struphy-3.3.0/src/struphy/pic/sorting_kernels.py +0 -249
- struphy-3.3.0/src/struphy/pic/sph_eval_kernels.py +0 -589
- struphy-3.3.0/src/struphy/pic/sph_smoothing_kernels.py +0 -672
- struphy-3.3.0/src/struphy/pic/tests/_bench_push_vxb_analytic.py +0 -91
- struphy-3.3.0/src/struphy/pic/tests/bench_openmp_speedup.py +0 -99
- struphy-3.3.0/src/struphy/pic/tests/test_accum_vec_H1.py +0 -624
- struphy-3.3.0/src/struphy/pic/tests/test_binning.py +0 -1490
- struphy-3.3.0/src/struphy/pic/tests/test_draw_parallel.py +0 -151
- struphy-3.3.0/src/struphy/pic/tests/test_estimate_mem.py +0 -110
- struphy-3.3.0/src/struphy/pic/tests/test_mat_vec_filler.py +0 -430
- struphy-3.3.0/src/struphy/pic/tests/test_neighbor_ranks.py +0 -106
- struphy-3.3.0/src/struphy/pic/tests/test_pusher_openmp_speedup.py +0 -100
- struphy-3.3.0/src/struphy/pic/tests/test_pushers.py +0 -752
- struphy-3.3.0/src/struphy/pic/tests/test_set_zero_velocity.py +0 -265
- struphy-3.3.0/src/struphy/pic/tests/test_sorting.py +0 -174
- struphy-3.3.0/src/struphy/pic/tests/test_sph.py +0 -2118
- struphy-3.3.0/src/struphy/pic/tests/test_tesselation.py +0 -189
- struphy-3.3.0/src/struphy/pic/utilities.py +0 -78
- struphy-3.3.0/src/struphy/pic/utilities_kernels.py +0 -802
- struphy-3.3.0/src/struphy/polar/basic.py +0 -541
- struphy-3.3.0/src/struphy/polar/extraction_operators.py +0 -1247
- struphy-3.3.0/src/struphy/polar/linear_operators.py +0 -929
- struphy-3.3.0/src/struphy/polar/tests/test_polar.py +0 -412
- struphy-3.3.0/src/struphy/post_processing/cprofile_analyser.py +0 -190
- struphy-3.3.0/src/struphy/post_processing/orbits/orbits_tools.py +0 -229
- struphy-3.3.0/src/struphy/post_processing/post_processing_tools.py +0 -1580
- struphy-3.3.0/src/struphy/post_processing/profile_struphy.py +0 -175
- struphy-3.3.0/src/struphy/post_processing/tests/test_eval_grids.py +0 -259
- struphy-3.3.0/src/struphy/post_processing/tests/test_eval_grids_mpi.py +0 -243
- struphy-3.3.0/src/struphy/post_processing/tests/test_pproc.py +0 -108
- struphy-3.3.0/src/struphy/propagators/__init__.py +0 -91
- struphy-3.3.0/src/struphy/propagators/base.py +0 -342
- struphy-3.3.0/src/struphy/propagators/curl_curl_solve.py +0 -335
- struphy-3.3.0/src/struphy/propagators/current_coupling_5d_curlb.py +0 -318
- struphy-3.3.0/src/struphy/propagators/current_coupling_5d_density.py +0 -244
- struphy-3.3.0/src/struphy/propagators/current_coupling_5d_gradb.py +0 -836
- struphy-3.3.0/src/struphy/propagators/current_coupling_6d_current.py +0 -308
- struphy-3.3.0/src/struphy/propagators/current_coupling_6d_density.py +0 -301
- struphy-3.3.0/src/struphy/propagators/efield_weights_coupling.py +0 -310
- struphy-3.3.0/src/struphy/propagators/faraday_extended.py +0 -229
- struphy-3.3.0/src/struphy/propagators/hall.py +0 -180
- struphy-3.3.0/src/struphy/propagators/hasegawa_wakatani_step.py +0 -344
- struphy-3.3.0/src/struphy/propagators/implicit_diffusion.py +0 -473
- struphy-3.3.0/src/struphy/propagators/magnetosonic.py +0 -244
- struphy-3.3.0/src/struphy/propagators/magnetosonic_uniform.py +0 -242
- struphy-3.3.0/src/struphy/propagators/maxwell_weak_ampere.py +0 -252
- struphy-3.3.0/src/struphy/propagators/poisson_adiabatic_gyrokinetic.py +0 -208
- struphy-3.3.0/src/struphy/propagators/poisson_solve.py +0 -155
- struphy-3.3.0/src/struphy/propagators/pressure_coupling_6d.py +0 -394
- struphy-3.3.0/src/struphy/propagators/push_deterministic_diffusion.py +0 -169
- struphy-3.3.0/src/struphy/propagators/push_eta.py +0 -122
- struphy-3.3.0/src/struphy/propagators/push_eta_pc.py +0 -170
- struphy-3.3.0/src/struphy/propagators/push_guiding_center_bx_estar.py +0 -486
- struphy-3.3.0/src/struphy/propagators/push_guiding_center_parallel.py +0 -510
- struphy-3.3.0/src/struphy/propagators/push_random_diffusion.py +0 -158
- struphy-3.3.0/src/struphy/propagators/push_v_in_force_field.py +0 -159
- struphy-3.3.0/src/struphy/propagators/push_v_in_sph_pressure.py +0 -208
- struphy-3.3.0/src/struphy/propagators/push_v_in_viscous_potential.py +0 -196
- struphy-3.3.0/src/struphy/propagators/push_vxb.py +0 -169
- struphy-3.3.0/src/struphy/propagators/shear_alfven_b1.py +0 -214
- struphy-3.3.0/src/struphy/propagators/shear_alfven_current_coupling_5d.py +0 -472
- struphy-3.3.0/src/struphy/propagators/shear_alfven_propagator.py +0 -244
- struphy-3.3.0/src/struphy/propagators/tests/test_curl_curl.py +0 -422
- struphy-3.3.0/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +0 -830
- struphy-3.3.0/src/struphy/propagators/tests/test_poisson.py +0 -675
- struphy-3.3.0/src/struphy/propagators/time_dependent_source.py +0 -114
- struphy-3.3.0/src/struphy/propagators/two_fluid_quasi_neutral_full.py +0 -462
- struphy-3.3.0/src/struphy/propagators/variational_density_evolve.py +0 -617
- struphy-3.3.0/src/struphy/propagators/variational_entropy_evolve.py +0 -470
- struphy-3.3.0/src/struphy/propagators/variational_mag_field_evolve.py +0 -420
- struphy-3.3.0/src/struphy/propagators/variational_momentum_advection.py +0 -294
- struphy-3.3.0/src/struphy/propagators/variational_pb_evolve.py +0 -677
- struphy-3.3.0/src/struphy/propagators/variational_qb_evolve.py +0 -700
- struphy-3.3.0/src/struphy/propagators/variational_resistivity.py +0 -812
- struphy-3.3.0/src/struphy/propagators/variational_viscosity.py +0 -830
- struphy-3.3.0/src/struphy/propagators/vlasov_ampere_coupling.py +0 -250
- struphy-3.3.0/src/struphy/simulation/base.py +0 -69
- struphy-3.3.0/src/struphy/simulation/sim.py +0 -2057
- struphy-3.3.0/src/struphy/utils/clone_config.py +0 -275
- struphy-3.3.0/src/struphy/utils/compiler.py +0 -238
- struphy-3.3.0/src/struphy/utils/mpi_launch.py +0 -82
- struphy-3.3.0/src/struphy/utils/test_clone_config.py +0 -48
- struphy-3.3.0/src/struphy/utils/utils.py +0 -231
- struphy-3.3.0/src/struphy.egg-info/PKG-INFO +0 -257
- struphy-3.3.0/src/struphy.egg-info/SOURCES.txt +0 -364
- struphy-3.3.0/src/struphy.egg-info/entry_points.txt +0 -3
- struphy-3.3.0/src/struphy.egg-info/requires.txt +0 -80
- {struphy-3.3.0 → struphy-3.5.0}/LICENSE +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/compiler/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/domains/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/equils/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/grids/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/maxwellians/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/ode/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/options/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/particles/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/perturbations/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/api/simulation/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/bsplines → struphy-3.5.0/src/struphy/api/tests}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/bsplines/tests → struphy-3.5.0/src/struphy/bsplines}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/bsplines/bsplines.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/bsplines/bsplines_kernels.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
- {struphy-3.3.0/src/struphy/console → struphy-3.5.0/src/struphy/bsplines/tests}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/conftest.py +0 -0
- {struphy-3.3.0/src/struphy/diagnostics → struphy-3.5.0/src/struphy/console}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/console/likwid.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/console/parsers.py +0 -0
- {struphy-3.3.0/src/struphy/diagnostics/paraview → struphy-3.5.0/src/struphy/diagnostics/tests}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/dispersion_relations/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/dispersion_relations/base.py +0 -0
- {struphy-3.3.0/src/struphy/examples/restelli2018 → struphy-3.5.0/src/struphy/dispersion_relations/tests}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/dispersion_relations/utilities.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
- {struphy-3.3.0/src/struphy/feec → struphy-3.5.0/src/struphy/examples/restelli2018}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/examples/restelli2018/callables.py +0 -0
- {struphy-3.3.0/src/struphy/feec/tests → struphy-3.5.0/src/struphy/feec}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background → struphy-3.5.0/src/struphy/feec/local_projectors}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/coil_fields → struphy-3.5.0/src/struphy/feec/tests}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/feec/tests/test_local_matrix_vector.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/mhd_equil → struphy-3.5.0/src/struphy/fields_background}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/mhd_equil/eqdsk → struphy-3.5.0/src/struphy/fields_background/coil_fields}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/coil_fields/base.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/mhd_equil/eqdsk/data → struphy-3.5.0/src/struphy/fields_background/mhd_equil}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/mhd_equil/gvec → struphy-3.5.0/src/struphy/fields_background/mhd_equil/eqdsk}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
- {struphy-3.3.0/src/struphy/fields_background/mhd_equil/gvec/output → struphy-3.5.0/src/struphy/fields_background/mhd_equil/eqdsk/data}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk → struphy-3.5.0/src/struphy/fields_background/mhd_equil/gvec}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/mhd_equil/vmec → struphy-3.5.0/src/struphy/fields_background/mhd_equil/gvec/output}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/fields_background/tests → struphy-3.5.0/src/struphy/fields_background/mhd_equil/gvec/output/vtk}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00000000.dat +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00001000.dat +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/parameter.ini +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000000.dat +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000100.dat +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/parameter-w7x.ini +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00000000.dat +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00003307.dat +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/Neo-spitzer-mirror23-well-opt-1-AR10-1.nc +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/parameter-fig8.ini +0 -0
- {struphy-3.3.0/src/struphy/geometry → struphy-3.5.0/src/struphy/fields_background/mhd_equil/vmec}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/geometry/map_coef → struphy-3.5.0/src/struphy/fields_background/tests}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
- {struphy-3.3.0/src/struphy/geometry/tests → struphy-3.5.0/src/struphy/geometry}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/initial → struphy-3.5.0/src/struphy/geometry/map_coef}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/initial → struphy-3.5.0/src/struphy/geometry}/tests/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/geometry/utilities_kernels.py +0 -0
- {struphy-3.3.0/src/struphy/io → struphy-3.5.0/src/struphy/initial}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/kernel_arguments → struphy-3.5.0/src/struphy/initial/tests}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/initial/utilities.py +0 -0
- {struphy-3.3.0/src/struphy/kinetic_background → struphy-3.5.0/src/struphy/io}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/kinetic_background → struphy-3.5.0/src/struphy/io}/tests/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/linear_algebra → struphy-3.5.0/src/struphy/kernel_arguments}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/kernel_arguments/local_projectors_args_kernels.py +0 -0
- {struphy-3.3.0/src/struphy/linear_algebra/tests → struphy-3.5.0/src/struphy/kinetic_background}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/models → struphy-3.5.0/src/struphy/kinetic_background}/tests/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/models/tests/default_params → struphy-3.5.0/src/struphy/linear_algebra}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
- {struphy-3.3.0/src/struphy/models/tests/verification → struphy-3.5.0/src/struphy/linear_algebra/multigrid}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/linear_algebra/solver.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
- {struphy-3.3.0/src/struphy/ode → struphy-3.5.0/src/struphy/linear_algebra/tests}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/cold_plasma.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/deterministic_particle_diffusion.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/linear_mhd_vlasov_cc.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/linear_mhd_vlasov_pc.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/maxwell.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/pressure_less_sph.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/random_particle_diffusion.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/shear_alfven.py +0 -0
- {struphy-3.3.0/src/struphy/ode → struphy-3.5.0/src/struphy/models}/tests/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/particles → struphy-3.5.0/src/struphy/models/tests/default_params}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/tests/test_estimate_mem.py +0 -0
- {struphy-3.3.0/src/struphy/physics → struphy-3.5.0/src/struphy/models/tests/verification}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/two_fluid_quasi_neutral_toy.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/utils.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/variational_barotropic_fluid.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/variational_compressible_fluid.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/variational_pressureless_fluid.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_deltaf_mhd.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_deltaf_mhd_with_q.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_linear_mhd.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_linear_mhd_with_q.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_mhd.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/visco_resistive_mhd_with_q.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/viscous_euler_sph.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/viscous_fluid.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/models/vlasov.py +0 -0
- {struphy-3.3.0/src/struphy/pic → struphy-3.5.0/src/struphy/ode}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/ode/solvers.py +0 -0
- {struphy-3.3.0/src/struphy/pic/accumulation → struphy-3.5.0/src/struphy/ode/tests}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/pic/pushing → struphy-3.5.0/src/struphy/particles}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/pic/tests → struphy-3.5.0/src/struphy/physics}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/polar → struphy-3.5.0/src/struphy/pic}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/polar/tests → struphy-3.5.0/src/struphy/pic/accumulation}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/pic/accumulation/filter.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
- {struphy-3.3.0/src/struphy/post_processing → struphy-3.5.0/src/struphy/pic/diagnostics}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/post_processing/likwid → struphy-3.5.0/src/struphy/pic/pushing}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/post_processing/orbits → struphy-3.5.0/src/struphy/pic/sph}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/post_processing → struphy-3.5.0/src/struphy/pic}/tests/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/propagators/tests → struphy-3.5.0/src/struphy/polar}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/simulation → struphy-3.5.0/src/struphy/polar/tests}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/simulation/tests → struphy-3.5.0/src/struphy/post_processing}/__init__.py +0 -0
- {struphy-3.3.0/src/struphy/topology → struphy-3.5.0/src/struphy/post_processing/likwid}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/hardware_dicts.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/likwid_parser.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/maxplotlylib.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/plot_likwidproject.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/post_processing/likwid/roofline_plotter.py +0 -0
- {struphy-3.3.0/src/struphy/utils → struphy-3.5.0/src/struphy/post_processing/orbits}/__init__.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/post_processing/orbits/orbits_kernels.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/propagators/adiabatic_phi.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/propagators/jxb_cold.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/propagators/ohm_cold.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/simulation/tests/test_estimate_mem.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/topology/grids.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/utils/cupy_vs_numpy.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/utils/docstring_converter.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy/utils/progress.py +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy.egg-info/dependency_links.txt +0 -0
- {struphy-3.3.0 → struphy-3.5.0}/src/struphy.egg-info/top_level.txt +0 -0
struphy-3.5.0/PKG-INFO
ADDED
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: struphy
|
|
3
|
+
Version: 3.5.0
|
|
4
|
+
Summary: Multi-model plasma physics package
|
|
5
|
+
Author: Max Planck Institute for Plasma Physics
|
|
6
|
+
Author-email: stefan.possanner@ipp.mpg.de, max.lindqvist@ipp.mpg.de, eric.sonnendruecker@ipp.mpg.de
|
|
7
|
+
License: Copyright (c) 2019-2026, Struphy developers, Max Planck Institute for Plasma Physics
|
|
8
|
+
|
|
9
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
10
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
11
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
12
|
+
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
|
|
13
|
+
subject to the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial
|
|
16
|
+
portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
19
|
+
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
20
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
21
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
23
|
+
Project-URL: homepage, https://struphy-hub.github.io/struphy/index.html
|
|
24
|
+
Project-URL: documentation, https://struphy-hub.github.io/struphy/index.html
|
|
25
|
+
Project-URL: repository, https://github.com/struphy-hub/struphy
|
|
26
|
+
Project-URL: changelog, https://github.com/struphy-hub/struphy/blob/devel/CHANGELOG.md
|
|
27
|
+
Project-URL: Bug Tracker, https://github.com/struphy-hub/struphy/issues
|
|
28
|
+
Keywords: plasma physics, fusion, numerical modeling, partial differential equations, energetic particles
|
|
29
|
+
Classifier: Programming Language :: Python :: 3
|
|
30
|
+
Requires-Python: >=3.10
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
License-File: LICENSE
|
|
33
|
+
Requires-Dist: numpy<=2.5.0
|
|
34
|
+
Requires-Dist: cunumpy<=0.7.0,>=0.6.3
|
|
35
|
+
Requires-Dist: pyccel<=2.2.3,>=2.2.0
|
|
36
|
+
Requires-Dist: maybempi>=0.1.2
|
|
37
|
+
Requires-Dist: feectools<=0.9.0,>=0.9.0
|
|
38
|
+
Requires-Dist: scipy<=1.18.0
|
|
39
|
+
Requires-Dist: h5py<=3.16.0
|
|
40
|
+
Requires-Dist: h5netcdf<=1.8.1
|
|
41
|
+
Requires-Dist: xarray<=2026.9.0
|
|
42
|
+
Requires-Dist: matplotlib<=3.11.0
|
|
43
|
+
Requires-Dist: pyyaml<=6.0.3
|
|
44
|
+
Requires-Dist: vtk<=9.7.0
|
|
45
|
+
Requires-Dist: tqdm<=4.70.0
|
|
46
|
+
Requires-Dist: argcomplete<=3.7.0
|
|
47
|
+
Requires-Dist: ipywidgets<=8.1.8
|
|
48
|
+
Requires-Dist: plotly<=7.1.0
|
|
49
|
+
Requires-Dist: pyvista<=0.49.0
|
|
50
|
+
Requires-Dist: trame<=4.0.0
|
|
51
|
+
Requires-Dist: trame-vtk<=2.11.8
|
|
52
|
+
Requires-Dist: trame-vuetify<=3.3.0
|
|
53
|
+
Requires-Dist: nest_asyncio2<=1.7.2
|
|
54
|
+
Requires-Dist: vtk<=9.7.0
|
|
55
|
+
Requires-Dist: pytest<=9.1.0
|
|
56
|
+
Requires-Dist: pytest-mpi<=0.6
|
|
57
|
+
Requires-Dist: pytest-testmon<=2.2.0
|
|
58
|
+
Requires-Dist: ruff==0.16.10
|
|
59
|
+
Requires-Dist: line_profiler<=5.0.2
|
|
60
|
+
Requires-Dist: scope-profiler<=0.7.3,>=0.5.0
|
|
61
|
+
Provides-Extra: mpi
|
|
62
|
+
Requires-Dist: mpi4py<=4.1.1; extra == "mpi"
|
|
63
|
+
Provides-Extra: gpu
|
|
64
|
+
Requires-Dist: cupy-cuda12x; extra == "gpu"
|
|
65
|
+
Provides-Extra: phys
|
|
66
|
+
Requires-Dist: gvec<=1.5.0,>=1.1.0; extra == "phys"
|
|
67
|
+
Requires-Dist: desc-opt<=0.17.1; extra == "phys"
|
|
68
|
+
Provides-Extra: pproc
|
|
69
|
+
Requires-Dist: plasma-plots>=0.1.0; extra == "pproc"
|
|
70
|
+
Provides-Extra: dev
|
|
71
|
+
Requires-Dist: struphy[mpi]; extra == "dev"
|
|
72
|
+
Requires-Dist: struphy[pproc]; extra == "dev"
|
|
73
|
+
Requires-Dist: notebook; extra == "dev"
|
|
74
|
+
Requires-Dist: pre-commit; extra == "dev"
|
|
75
|
+
Requires-Dist: nbstripout; extra == "dev"
|
|
76
|
+
Requires-Dist: tomli-w; extra == "dev"
|
|
77
|
+
Requires-Dist: kaleido; extra == "dev"
|
|
78
|
+
Requires-Dist: pandas; extra == "dev"
|
|
79
|
+
Requires-Dist: scope-profiler[pproc]; extra == "dev"
|
|
80
|
+
Requires-Dist: slurm-script-generator>=0.3.6; extra == "dev"
|
|
81
|
+
Provides-Extra: doc
|
|
82
|
+
Requires-Dist: struphy[phys]; extra == "doc"
|
|
83
|
+
Requires-Dist: struphy[pproc]; extra == "doc"
|
|
84
|
+
Requires-Dist: jupyter; extra == "doc"
|
|
85
|
+
Requires-Dist: nbconvert; extra == "doc"
|
|
86
|
+
Requires-Dist: ipykernel; extra == "doc"
|
|
87
|
+
Requires-Dist: sphinx; extra == "doc"
|
|
88
|
+
Requires-Dist: sphinx-design; extra == "doc"
|
|
89
|
+
Requires-Dist: lxml_html_clean; extra == "doc"
|
|
90
|
+
Requires-Dist: sphinxcontrib-napoleon; extra == "doc"
|
|
91
|
+
Requires-Dist: sphinx-copybutton; extra == "doc"
|
|
92
|
+
Requires-Dist: sphinx-collections; extra == "doc"
|
|
93
|
+
Requires-Dist: pydata-sphinx-theme; extra == "doc"
|
|
94
|
+
Requires-Dist: nbsphinx; extra == "doc"
|
|
95
|
+
Requires-Dist: m2r2; extra == "doc"
|
|
96
|
+
Requires-Dist: myst-parser; extra == "doc"
|
|
97
|
+
Requires-Dist: docutils; extra == "doc"
|
|
98
|
+
Requires-Dist: ipyparallel; extra == "doc"
|
|
99
|
+
Requires-Dist: scope-profiler[pproc]; extra == "doc"
|
|
100
|
+
Provides-Extra: likwid
|
|
101
|
+
Requires-Dist: struphy[dev]; extra == "likwid"
|
|
102
|
+
Requires-Dist: pylikwid; extra == "likwid"
|
|
103
|
+
Provides-Extra: all
|
|
104
|
+
Requires-Dist: struphy[phys]; extra == "all"
|
|
105
|
+
Requires-Dist: struphy[pproc]; extra == "all"
|
|
106
|
+
Requires-Dist: struphy[dev]; extra == "all"
|
|
107
|
+
Requires-Dist: struphy[mpi]; extra == "all"
|
|
108
|
+
Requires-Dist: struphy[doc]; extra == "all"
|
|
109
|
+
Requires-Dist: struphy[likwid]; extra == "all"
|
|
110
|
+
Dynamic: license-file
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+

|
|
115
|
+
|
|
116
|
+
<p>
|
|
117
|
+
|
|
118
|
+
<a href="https://github.com/struphy-hub/struphy/releases"><img src="https://img.shields.io/github/v/release/struphy-hub/struphy?label=Release" alt="Release"></a> <a href="https://github.com/struphy-hub/struphy/blob/devel/LICENSE"><img src="https://img.shields.io/badge/License-MIT-violet" alt="License"></a> <a href="https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main"><img src="https://img.shields.io/badge/launch-tutorials-579ACA.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAMAAABi1XidAAAB8lBMVEX///9XmsrmZYH1olJXmsr1olJXmsrmZYH1olJXmsr1olJXmsrmZYH1olL1olJXmsr1olJXmsrmZYH1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olJXmsrmZYH1olL1olL0nFf1olJXmsrmZYH1olJXmsq8dZb1olJXmsrmZYH1olJXmspXmspXmsr1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olLeaIVXmsrmZYH1olL1olL1olJXmsrmZYH1olLna31Xmsr1olJXmsr1olJXmsrmZYH1olLqoVr1olJXmsr1olJXmsrmZYH1olL1olKkfaPobXvviGabgadXmsqThKuofKHmZ4Dobnr1olJXmsr1olJXmspXmsr1olJXmsrfZ4TuhWn1olL1olJXmsqBi7X1olJXmspZmslbmMhbmsdemsVfl8ZgmsNim8Jpk8F0m7R4m7F5nLB6jbh7jbiDirOEibOGnKaMhq+PnaCVg6qWg6qegKaff6WhnpKofKGtnomxeZy3noG6dZi+n3vCcpPDcpPGn3bLb4/Mb47UbIrVa4rYoGjdaIbeaIXhoWHmZYHobXvpcHjqdHXreHLroVrsfG/uhGnuh2bwj2Hxk17yl1vzmljzm1j0nlX1olL3AJXWAAAAbXRSTlMAEBAQHx8gICAuLjAwMDw9PUBAQEpQUFBXV1hgYGBkcHBwcXl8gICAgoiIkJCQlJicnJ2goKCmqK+wsLC4usDAwMjP0NDQ1NbW3Nzg4ODi5+3v8PDw8/T09PX29vb39/f5+fr7+/z8/Pz9/v7+zczCxgAABC5JREFUeAHN1ul3k0UUBvCb1CTVpmpaitAGSLSpSuKCLWpbTKNJFGlcSMAFF63iUmRccNG6gLbuxkXU66JAUef/9LSpmXnyLr3T5AO/rzl5zj137p136BISy44fKJXuGN/d19PUfYeO67Znqtf2KH33Id1psXoFdW30sPZ1sMvs2D060AHqws4FHeJojLZqnw53cmfvg+XR8mC0OEjuxrXEkX5ydeVJLVIlV0e10PXk5k7dYeHu7Cj1j+49uKg7uLU61tGLw1lq27ugQYlclHC4bgv7VQ+TAyj5Zc/UjsPvs1sd5cWryWObtvWT2EPa4rtnWW3JkpjggEpbOsPr7F7EyNewtpBIslA7p43HCsnwooXTEc3UmPmCNn5lrqTJxy6nRmcavGZVt/3Da2pD5NHvsOHJCrdc1G2r3DITpU7yic7w/7Rxnjc0kt5GC4djiv2Sz3Fb2iEZg41/ddsFDoyuYrIkmFehz0HR2thPgQqMyQYb2OtB0WxsZ3BeG3+wpRb1vzl2UYBog8FfGhttFKjtAclnZYrRo9ryG9uG/FZQU4AEg8ZE9LjGMzTmqKXPLnlWVnIlQQTvxJf8ip7VgjZjyVPrjw1te5otM7RmP7xm+sK2Gv9I8Gi++BRbEkR9EBw8zRUcKxwp73xkaLiqQb+kGduJTNHG72zcW9LoJgqQxpP3/Tj//c3yB0tqzaml05/+orHLksVO+95kX7/7qgJvnjlrfr2Ggsyx0eoy9uPzN5SPd86aXggOsEKW2Prz7du3VID3/tzs/sSRs2w7ovVHKtjrX2pd7ZMlTxAYfBAL9jiDwfLkq55Tm7ifhMlTGPyCAs7RFRhn47JnlcB9RM5T97ASuZXIcVNuUDIndpDbdsfrqsOppeXl5Y+XVKdjFCTh+zGaVuj0d9zy05PPK3QzBamxdwtTCrzyg/2Rvf2EstUjordGwa/kx9mSJLr8mLLtCW8HHGJc2R5hS219IiF6PnTusOqcMl57gm0Z8kanKMAQg0qSyuZfn7zItsbGyO9QlnxY0eCuD1XL2ys/MsrQhltE7Ug0uFOzufJFE2PxBo/YAx8XPPdDwWN0MrDRYIZF0mSMKCNHgaIVFoBbNoLJ7tEQDKxGF0kcLQimojCZopv0OkNOyWCCg9XMVAi7ARJzQdM2QUh0gmBozjc3Skg6dSBRqDGYSUOu66Zg+I2fNZs/M3/f/Grl/XnyF1Gw3VKCez0PN5IUfFLqvgUN4C0qNqYs5YhPL+aVZYDE4IpUk57oSFnJm4FyCqqOE0jhY2SMyLFoo56zyo6becOS5UVDdj7Vih0zp+tcMhwRpBeLyqtIjlJKAIZSbI8SGSF3k0pA3mR5tHuwPFoa7N7reoq2bqCsAk1HqCu5uvI1n6JuRXI+S1Mco54YmYTwcn6Aeic+kssXi8XpXC4V3t7/ADuTNKaQJdScAAAAAElFTkSuQmCC" alt="badge"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml/badge.svg" alt="Ubuntu latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml/badge.svg" alt="MacOS latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml/badge.svg" alt="ruff"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/v/struphy?label=PyPI" alt="PyPI"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/dm/struphy.svg?label=PyPI%20downloads" alt="PyPI Downloads"></a>
|
|
119
|
+
</p>
|
|
120
|
+
|
|
121
|
+
# Welcome!
|
|
122
|
+
|
|
123
|
+
**This is a Python package for solving partial differential equations (PDEs) mainly - but not exclusively - for plasma physics.**
|
|
124
|
+
|
|
125
|
+
**STRUPHY** stands for **STRU**cture-**P**reserving **HY**brid code (or **STRU**cture-preserving **PHY**sics code). The package provides off-the-shelf models for plasma physics problems, such as
|
|
126
|
+
|
|
127
|
+
- Maxwell’s equations
|
|
128
|
+
- Magneto-hydrodynamics (MHD)
|
|
129
|
+
- Multi-fluid models
|
|
130
|
+
- Vlasov-Poisson and Vlasov-Maxwell kinetic models
|
|
131
|
+
- Drift-kinetic models for strongly magnetized plasma
|
|
132
|
+
- MHD-kinetic hybrid models
|
|
133
|
+
|
|
134
|
+
All models can be run on multiple cores through MPI (distributed memory) and OpenMP (shared memory). The compute-intensive parts of the code are translated and compiled (“transpiled”) using [pyccel](https://github.com/pyccel/pyccel), giving you the speed of Fortran or C while working within the familiar Python environment.
|
|
135
|
+
|
|
136
|
+
Explore Struphy on its website **[struphy-hub.github.io](https://struphy-hub.github.io/)**: the models and their equations, the numerical methods, domains, equilibria and a gallery of examples.
|
|
137
|
+
|
|
138
|
+
The code is freely available under an [MIT license](https://github.com/struphy-hub/struphy/blob/devel/LICENSE) - Copyright (c) 2019-2026, Struphy developers, Max Planck Institute for Plasma Physics.
|
|
139
|
+
|
|
140
|
+

|
|
141
|
+
|
|
142
|
+
## Quick install
|
|
143
|
+
|
|
144
|
+
Struphy is available on [PyPI](https://pypi.org/project/struphy/), so you can install it with pip:
|
|
145
|
+
|
|
146
|
+
pip install -U struphy
|
|
147
|
+
struphy compile -j 4
|
|
148
|
+
|
|
149
|
+
`-j 4` compiles the kernels in parallel on four cores. In case you face troubles with install/compile:
|
|
150
|
+
|
|
151
|
+
1. check the [prerequisites](https://struphy-hub.github.io/struphy/sections/install.html#requirements)
|
|
152
|
+
2. visit [trouble shooting](https://struphy-hub.github.io/struphy/sections/install.html#trouble-shooting)
|
|
153
|
+
|
|
154
|
+
## Examples
|
|
155
|
+
|
|
156
|
+
Ready-to-run simulations, each with a parameter file and a post-processing script, are in the repository [struphy-examples](https://github.com/struphy-hub/struphy-examples), one folder per model and case. Its tags match the Struphy releases, so clone the tag of your installed version (`struphy --version`), for example
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
git clone --branch vX.Y.Z https://github.com/struphy-hub/struphy-examples.git
|
|
160
|
+
cd struphy-examples/VlasovAmpereOneSpecies/two_stream
|
|
161
|
+
python params_two_stream.py
|
|
162
|
+
python pproc_two_stream.py
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+

|
|
166
|
+
|
|
167
|
+
*Two-stream instability: the electron distribution function f(x, v) at t = 0, 25 and 50, computed with the model [VlasovAmpereOneSpecies](https://struphy-hub.github.io/models/vlasov-ampere-one-species/) in a FEEC-PIC discretization (particle-in-cell markers for the electrons, finite element exterior calculus splines for the electric field). Two counter-streaming beams roll up into a phase-space vortex.*
|
|
168
|
+
|
|
169
|
+
To look at finished examples and their results without running anything, browse the [examples gallery](https://struphy-hub.github.io/examples/) on the Struphy website.
|
|
170
|
+
|
|
171
|
+
## AI coding agents
|
|
172
|
+
|
|
173
|
+
Struphy ships a usage guide for AI coding agents (Claude Code, Codex, Copilot, Cursor, ...) that matches your installed version. It explains how to set up, run and post-process simulations. Print it with
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
struphy agents
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
To make it available in your own project, run this in the project folder:
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
struphy agents --install
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
This copies the Struphy skills (`setup-simulation`, `postprocess-simulation`) to `.claude/skills/` and adds a short pointer to the guide to `AGENTS.md` and `CLAUDE.md`, so your agent finds it automatically. Run it again after upgrading Struphy. Developers changing Struphy itself find the coding guidelines in [AGENTS.md](https://github.com/struphy-hub/struphy/blob/devel/AGENTS.md).
|
|
186
|
+
|
|
187
|
+
## Available models
|
|
188
|
+
|
|
189
|
+
Check the list of currently [available models](https://struphy-hub.github.io/struphy/sections/models.html). If you want to see a particular model implemented, please let us know via [issues](https://github.com/struphy-hub/struphy/issues).
|
|
190
|
+
|
|
191
|
+
## Documentation
|
|
192
|
+
|
|
193
|
+
The doc is on [Github pages](https://struphy-hub.github.io/struphy/index.html), we recommend in particular to visit:
|
|
194
|
+
|
|
195
|
+
- [Website](https://struphy-hub.github.io/) (overview of models, numerics and examples)
|
|
196
|
+
- [Install](https://struphy-hub.github.io/struphy/sections/install.html)
|
|
197
|
+
- [Userguide](https://struphy-hub.github.io/struphy/sections/userguide.html)
|
|
198
|
+
- [Available models](https://struphy-hub.github.io/struphy/sections/models.html)
|
|
199
|
+
- [Numerical methods](https://struphy-hub.github.io/struphy/sections/numerics.html)
|
|
200
|
+
|
|
201
|
+
## Example: solve Maxwell’s equations
|
|
202
|
+
|
|
203
|
+
Use the command line to generate a default launch file:
|
|
204
|
+
|
|
205
|
+
struphy params Maxwell
|
|
206
|
+
|
|
207
|
+
This will create `params_Maxwell.py` in your current working directory (cwd). You can open the file and - if you feel like it already - change some parameters. Start the simulation with
|
|
208
|
+
|
|
209
|
+
python params_Maxwell.py
|
|
210
|
+
|
|
211
|
+
The default output is in `sim_1/` in your cwd. You can change the output path via the class `EnvironmentOptions` in the parameter file.
|
|
212
|
+
|
|
213
|
+
For plots and diagnostics of the output, install [plasma-plots](https://struphy-hub.github.io/plasma-plots) with `pip install "struphy[pproc]"`; `Output` loads it automatically, adding `out.plot`, `out.analysis` and `.plasma.plot` on every product.
|
|
214
|
+
|
|
215
|
+
Parallel simulations are run for example with
|
|
216
|
+
|
|
217
|
+
pip install -U mpi4py
|
|
218
|
+
mpirun -n 4 python params_Maxwell.py
|
|
219
|
+
|
|
220
|
+
You can also put the run command in a batch script.
|
|
221
|
+
|
|
222
|
+
## Python API
|
|
223
|
+
|
|
224
|
+
Try out the Python API in a Jupyter notebook or any Python environment. For example, you can create a simulation object and show the domain and equilibrium magnetic field of the linear MHD model via
|
|
225
|
+
|
|
226
|
+
``` python
|
|
227
|
+
from struphy import (
|
|
228
|
+
Simulation,
|
|
229
|
+
domains,
|
|
230
|
+
equils,
|
|
231
|
+
)
|
|
232
|
+
from struphy.models import LinearMHD
|
|
233
|
+
|
|
234
|
+
model = LinearMHD()
|
|
235
|
+
|
|
236
|
+
domain = domains.DESCunit()
|
|
237
|
+
equil = equils.DESCequilibrium(use_nfp=False)
|
|
238
|
+
|
|
239
|
+
sim = Simulation(
|
|
240
|
+
model=model,
|
|
241
|
+
domain=domain,
|
|
242
|
+
equil=equil,
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
sim.show_domain(scalars="absB0", window_size = (850, 250), zoom_factor=2.0)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+

|
|
249
|
+
|
|
250
|
+
This will show the domain and equilibrium magnetic field of the linear MHD model. You can find more examples in the [documentation](https://struphy-hub.github.io/struphy/index.html).
|
|
251
|
+
|
|
252
|
+
## Tutorials on Binder
|
|
253
|
+
|
|
254
|
+
Get familiar with Struphy right away on [mybinder](https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main) - no installation needed.
|
|
255
|
+
|
|
256
|
+
## Docker
|
|
257
|
+
|
|
258
|
+
If you want to get started right away without installing anything, you can use the [Docker image](https://hub.docker.com/r/spossann/struphy) - just pull and run:
|
|
259
|
+
|
|
260
|
+
docker pull spossann/struphy:main
|
|
261
|
+
docker run -it --rm spossann/struphy:main
|
|
262
|
+
ls struphy_*
|
|
263
|
+
|
|
264
|
+
This will show three available Struphy environments, which you can activate for example via
|
|
265
|
+
|
|
266
|
+
source struphy_fortran_/env_fortran_/bin/activate
|
|
267
|
+
|
|
268
|
+
There is also a [Docker image with just the prerequisites](https://hub.docker.com/r/spossann/ubuntu-for-struphy) (on Ubuntu), so you can install and compile Struphy on top of it yourself:
|
|
269
|
+
|
|
270
|
+
docker pull spossann/ubuntu-for-struphy:main
|
|
271
|
+
docker run -it --rm spossann/ubuntu-for-struphy:main
|
|
272
|
+
|
|
273
|
+
## Get in touch
|
|
274
|
+
|
|
275
|
+
- [Issues](https://github.com/struphy-hub/struphy/issues)
|
|
276
|
+
- [Discussions](https://github.com/struphy-hub/struphy/discussions)
|
|
277
|
+
- [@spossann](https://github.com/spossann) [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de) (Maintainer)
|
|
278
|
+
- [@max-models](https://github.com/max-models) [max.lindqvist@ipp.mpg.de](mailto:Max.Lindqvist@ipp.mpg.de) (Maintainer)
|
|
279
|
+
- [LinkedIn profile](https://www.linkedin.com/company/struphy/)
|
|
280
|
+
|
|
281
|
+
## Publications
|
|
282
|
+
|
|
283
|
+
- D. Bell, M.C. Pinto, S. Possanner, E. Sonnendrücker,
|
|
284
|
+
[**The linearized Vlasov–Maxwell system as a Hamiltonian system**](https://doi.org/10.1016/j.jcp.2026.114765),
|
|
285
|
+
Journal of Computational Physics, Volume 555, 114765 (2026).
|
|
286
|
+
|
|
287
|
+
- V. Carlier, M.C. Pinto, [**Variational discretizations of ideal magnetohydrodynamics in smooth regime using structure-preserving finite elements**](https://doi.org/10.1016/j.jcp.2024.113647),
|
|
288
|
+
Journal of Computational Physics, Volume 523, 113647 (2025).
|
|
289
|
+
|
|
290
|
+
- Y. Li, M.C. Pinto, F. Holderied, S. Possanner, E. Sonnendrücker, [**Geometric Particle-In-Cell discretizations of a plasma hybrid model with kinetic ions and mass-less fluid electrons**](https://doi.org/10.1016/j.jcp.2023.112671), Journal of Computational Physics 498, 112671 (2023).
|
|
291
|
+
|
|
292
|
+
- S. Possanner, F. Holderied, Y. Li, B.-K. Na, D. Bell, S. Hadjout and Y. Güçlü, [**High-Order Structure-Preserving Algorithms for Plasma Hybrid Models**](https://link.springer.com/chapter/10.1007/978-3-031-38299-4_28), International Conference on Geometric Science of Information, 263-271, Springer Nature Switzerland (2023).
|
|
293
|
+
|
|
294
|
+
- F. Holderied, S. Possanner, [**Magneto-hydrodynamic eigenvalue solver for axisymmetric equilibria based on smooth polar splines**](https://doi.org/10.1016/j.jcp.2022.111329), Journal of Computational Physics 464, 111329 (2022).
|
|
295
|
+
|
|
296
|
+
- F. Holderied, S. Possanner, X. Wang, [**MHD-kinetic hybrid code based on structure-preserving finite elements with particles-in-cell**](https://doi.org/10.1016/j.jcp.2021.110143), Journal of Computational Physics 433, 110143 (2021).
|
|
297
|
+
|
|
298
|
+
- F. Holderied, S. Possanner, A. Ratnani, X. Wang, [**Structure-preserving vs. standard particle-in-cell methods: The case of an electron hybrid model**](https://doi.org/10.1016/j.jcp.2019.109108), Journal of Computational Physics 402, 109108 (2020).
|
struphy-3.5.0/README.md
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
<p>
|
|
6
|
+
|
|
7
|
+
<a href="https://github.com/struphy-hub/struphy/releases"><img src="https://img.shields.io/github/v/release/struphy-hub/struphy?label=Release" alt="Release"></a> <a href="https://github.com/struphy-hub/struphy/blob/devel/LICENSE"><img src="https://img.shields.io/badge/License-MIT-violet" alt="License"></a> <a href="https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main"><img src="https://img.shields.io/badge/launch-tutorials-579ACA.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFkAAABZCAMAAABi1XidAAAB8lBMVEX///9XmsrmZYH1olJXmsr1olJXmsrmZYH1olJXmsr1olJXmsrmZYH1olL1olJXmsr1olJXmsrmZYH1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olJXmsrmZYH1olL1olL0nFf1olJXmsrmZYH1olJXmsq8dZb1olJXmsrmZYH1olJXmspXmspXmsr1olL1olJXmsrmZYH1olJXmsr1olL1olJXmsrmZYH1olL1olLeaIVXmsrmZYH1olL1olL1olJXmsrmZYH1olLna31Xmsr1olJXmsr1olJXmsrmZYH1olLqoVr1olJXmsr1olJXmsrmZYH1olL1olKkfaPobXvviGabgadXmsqThKuofKHmZ4Dobnr1olJXmsr1olJXmspXmsr1olJXmsrfZ4TuhWn1olL1olJXmsqBi7X1olJXmspZmslbmMhbmsdemsVfl8ZgmsNim8Jpk8F0m7R4m7F5nLB6jbh7jbiDirOEibOGnKaMhq+PnaCVg6qWg6qegKaff6WhnpKofKGtnomxeZy3noG6dZi+n3vCcpPDcpPGn3bLb4/Mb47UbIrVa4rYoGjdaIbeaIXhoWHmZYHobXvpcHjqdHXreHLroVrsfG/uhGnuh2bwj2Hxk17yl1vzmljzm1j0nlX1olL3AJXWAAAAbXRSTlMAEBAQHx8gICAuLjAwMDw9PUBAQEpQUFBXV1hgYGBkcHBwcXl8gICAgoiIkJCQlJicnJ2goKCmqK+wsLC4usDAwMjP0NDQ1NbW3Nzg4ODi5+3v8PDw8/T09PX29vb39/f5+fr7+/z8/Pz9/v7+zczCxgAABC5JREFUeAHN1ul3k0UUBvCb1CTVpmpaitAGSLSpSuKCLWpbTKNJFGlcSMAFF63iUmRccNG6gLbuxkXU66JAUef/9LSpmXnyLr3T5AO/rzl5zj137p136BISy44fKJXuGN/d19PUfYeO67Znqtf2KH33Id1psXoFdW30sPZ1sMvs2D060AHqws4FHeJojLZqnw53cmfvg+XR8mC0OEjuxrXEkX5ydeVJLVIlV0e10PXk5k7dYeHu7Cj1j+49uKg7uLU61tGLw1lq27ugQYlclHC4bgv7VQ+TAyj5Zc/UjsPvs1sd5cWryWObtvWT2EPa4rtnWW3JkpjggEpbOsPr7F7EyNewtpBIslA7p43HCsnwooXTEc3UmPmCNn5lrqTJxy6nRmcavGZVt/3Da2pD5NHvsOHJCrdc1G2r3DITpU7yic7w/7Rxnjc0kt5GC4djiv2Sz3Fb2iEZg41/ddsFDoyuYrIkmFehz0HR2thPgQqMyQYb2OtB0WxsZ3BeG3+wpRb1vzl2UYBog8FfGhttFKjtAclnZYrRo9ryG9uG/FZQU4AEg8ZE9LjGMzTmqKXPLnlWVnIlQQTvxJf8ip7VgjZjyVPrjw1te5otM7RmP7xm+sK2Gv9I8Gi++BRbEkR9EBw8zRUcKxwp73xkaLiqQb+kGduJTNHG72zcW9LoJgqQxpP3/Tj//c3yB0tqzaml05/+orHLksVO+95kX7/7qgJvnjlrfr2Ggsyx0eoy9uPzN5SPd86aXggOsEKW2Prz7du3VID3/tzs/sSRs2w7ovVHKtjrX2pd7ZMlTxAYfBAL9jiDwfLkq55Tm7ifhMlTGPyCAs7RFRhn47JnlcB9RM5T97ASuZXIcVNuUDIndpDbdsfrqsOppeXl5Y+XVKdjFCTh+zGaVuj0d9zy05PPK3QzBamxdwtTCrzyg/2Rvf2EstUjordGwa/kx9mSJLr8mLLtCW8HHGJc2R5hS219IiF6PnTusOqcMl57gm0Z8kanKMAQg0qSyuZfn7zItsbGyO9QlnxY0eCuD1XL2ys/MsrQhltE7Ug0uFOzufJFE2PxBo/YAx8XPPdDwWN0MrDRYIZF0mSMKCNHgaIVFoBbNoLJ7tEQDKxGF0kcLQimojCZopv0OkNOyWCCg9XMVAi7ARJzQdM2QUh0gmBozjc3Skg6dSBRqDGYSUOu66Zg+I2fNZs/M3/f/Grl/XnyF1Gw3VKCez0PN5IUfFLqvgUN4C0qNqYs5YhPL+aVZYDE4IpUk57oSFnJm4FyCqqOE0jhY2SMyLFoo56zyo6becOS5UVDdj7Vih0zp+tcMhwRpBeLyqtIjlJKAIZSbI8SGSF3k0pA3mR5tHuwPFoa7N7reoq2bqCsAk1HqCu5uvI1n6JuRXI+S1Mco54YmYTwcn6Aeic+kssXi8XpXC4V3t7/ADuTNKaQJdScAAAAAElFTkSuQmCC" alt="badge"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-ubuntu.yml/badge.svg" alt="Ubuntu latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/scheduled-macos.yml/badge.svg" alt="MacOS latest"></a> <a href="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml"><img src="https://github.com/struphy-hub/struphy/actions/workflows/static_analysis.yml/badge.svg" alt="ruff"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/v/struphy?label=PyPI" alt="PyPI"></a> <a href="https://pypi.org/project/struphy/"><img src="https://img.shields.io/pypi/dm/struphy.svg?label=PyPI%20downloads" alt="PyPI Downloads"></a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
# Welcome!
|
|
11
|
+
|
|
12
|
+
**This is a Python package for solving partial differential equations (PDEs) mainly - but not exclusively - for plasma physics.**
|
|
13
|
+
|
|
14
|
+
**STRUPHY** stands for **STRU**cture-**P**reserving **HY**brid code (or **STRU**cture-preserving **PHY**sics code). The package provides off-the-shelf models for plasma physics problems, such as
|
|
15
|
+
|
|
16
|
+
- Maxwell’s equations
|
|
17
|
+
- Magneto-hydrodynamics (MHD)
|
|
18
|
+
- Multi-fluid models
|
|
19
|
+
- Vlasov-Poisson and Vlasov-Maxwell kinetic models
|
|
20
|
+
- Drift-kinetic models for strongly magnetized plasma
|
|
21
|
+
- MHD-kinetic hybrid models
|
|
22
|
+
|
|
23
|
+
All models can be run on multiple cores through MPI (distributed memory) and OpenMP (shared memory). The compute-intensive parts of the code are translated and compiled (“transpiled”) using [pyccel](https://github.com/pyccel/pyccel), giving you the speed of Fortran or C while working within the familiar Python environment.
|
|
24
|
+
|
|
25
|
+
Explore Struphy on its website **[struphy-hub.github.io](https://struphy-hub.github.io/)**: the models and their equations, the numerical methods, domains, equilibria and a gallery of examples.
|
|
26
|
+
|
|
27
|
+
The code is freely available under an [MIT license](https://github.com/struphy-hub/struphy/blob/devel/LICENSE) - Copyright (c) 2019-2026, Struphy developers, Max Planck Institute for Plasma Physics.
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
## Quick install
|
|
32
|
+
|
|
33
|
+
Struphy is available on [PyPI](https://pypi.org/project/struphy/), so you can install it with pip:
|
|
34
|
+
|
|
35
|
+
pip install -U struphy
|
|
36
|
+
struphy compile -j 4
|
|
37
|
+
|
|
38
|
+
`-j 4` compiles the kernels in parallel on four cores. In case you face troubles with install/compile:
|
|
39
|
+
|
|
40
|
+
1. check the [prerequisites](https://struphy-hub.github.io/struphy/sections/install.html#requirements)
|
|
41
|
+
2. visit [trouble shooting](https://struphy-hub.github.io/struphy/sections/install.html#trouble-shooting)
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
Ready-to-run simulations, each with a parameter file and a post-processing script, are in the repository [struphy-examples](https://github.com/struphy-hub/struphy-examples), one folder per model and case. Its tags match the Struphy releases, so clone the tag of your installed version (`struphy --version`), for example
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
git clone --branch vX.Y.Z https://github.com/struphy-hub/struphy-examples.git
|
|
49
|
+
cd struphy-examples/VlasovAmpereOneSpecies/two_stream
|
|
50
|
+
python params_two_stream.py
|
|
51
|
+
python pproc_two_stream.py
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
*Two-stream instability: the electron distribution function f(x, v) at t = 0, 25 and 50, computed with the model [VlasovAmpereOneSpecies](https://struphy-hub.github.io/models/vlasov-ampere-one-species/) in a FEEC-PIC discretization (particle-in-cell markers for the electrons, finite element exterior calculus splines for the electric field). Two counter-streaming beams roll up into a phase-space vortex.*
|
|
57
|
+
|
|
58
|
+
To look at finished examples and their results without running anything, browse the [examples gallery](https://struphy-hub.github.io/examples/) on the Struphy website.
|
|
59
|
+
|
|
60
|
+
## AI coding agents
|
|
61
|
+
|
|
62
|
+
Struphy ships a usage guide for AI coding agents (Claude Code, Codex, Copilot, Cursor, ...) that matches your installed version. It explains how to set up, run and post-process simulations. Print it with
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
struphy agents
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
To make it available in your own project, run this in the project folder:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
struphy agents --install
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
This copies the Struphy skills (`setup-simulation`, `postprocess-simulation`) to `.claude/skills/` and adds a short pointer to the guide to `AGENTS.md` and `CLAUDE.md`, so your agent finds it automatically. Run it again after upgrading Struphy. Developers changing Struphy itself find the coding guidelines in [AGENTS.md](https://github.com/struphy-hub/struphy/blob/devel/AGENTS.md).
|
|
75
|
+
|
|
76
|
+
## Available models
|
|
77
|
+
|
|
78
|
+
Check the list of currently [available models](https://struphy-hub.github.io/struphy/sections/models.html). If you want to see a particular model implemented, please let us know via [issues](https://github.com/struphy-hub/struphy/issues).
|
|
79
|
+
|
|
80
|
+
## Documentation
|
|
81
|
+
|
|
82
|
+
The doc is on [Github pages](https://struphy-hub.github.io/struphy/index.html), we recommend in particular to visit:
|
|
83
|
+
|
|
84
|
+
- [Website](https://struphy-hub.github.io/) (overview of models, numerics and examples)
|
|
85
|
+
- [Install](https://struphy-hub.github.io/struphy/sections/install.html)
|
|
86
|
+
- [Userguide](https://struphy-hub.github.io/struphy/sections/userguide.html)
|
|
87
|
+
- [Available models](https://struphy-hub.github.io/struphy/sections/models.html)
|
|
88
|
+
- [Numerical methods](https://struphy-hub.github.io/struphy/sections/numerics.html)
|
|
89
|
+
|
|
90
|
+
## Example: solve Maxwell’s equations
|
|
91
|
+
|
|
92
|
+
Use the command line to generate a default launch file:
|
|
93
|
+
|
|
94
|
+
struphy params Maxwell
|
|
95
|
+
|
|
96
|
+
This will create `params_Maxwell.py` in your current working directory (cwd). You can open the file and - if you feel like it already - change some parameters. Start the simulation with
|
|
97
|
+
|
|
98
|
+
python params_Maxwell.py
|
|
99
|
+
|
|
100
|
+
The default output is in `sim_1/` in your cwd. You can change the output path via the class `EnvironmentOptions` in the parameter file.
|
|
101
|
+
|
|
102
|
+
For plots and diagnostics of the output, install [plasma-plots](https://struphy-hub.github.io/plasma-plots) with `pip install "struphy[pproc]"`; `Output` loads it automatically, adding `out.plot`, `out.analysis` and `.plasma.plot` on every product.
|
|
103
|
+
|
|
104
|
+
Parallel simulations are run for example with
|
|
105
|
+
|
|
106
|
+
pip install -U mpi4py
|
|
107
|
+
mpirun -n 4 python params_Maxwell.py
|
|
108
|
+
|
|
109
|
+
You can also put the run command in a batch script.
|
|
110
|
+
|
|
111
|
+
## Python API
|
|
112
|
+
|
|
113
|
+
Try out the Python API in a Jupyter notebook or any Python environment. For example, you can create a simulation object and show the domain and equilibrium magnetic field of the linear MHD model via
|
|
114
|
+
|
|
115
|
+
``` python
|
|
116
|
+
from struphy import (
|
|
117
|
+
Simulation,
|
|
118
|
+
domains,
|
|
119
|
+
equils,
|
|
120
|
+
)
|
|
121
|
+
from struphy.models import LinearMHD
|
|
122
|
+
|
|
123
|
+
model = LinearMHD()
|
|
124
|
+
|
|
125
|
+
domain = domains.DESCunit()
|
|
126
|
+
equil = equils.DESCequilibrium(use_nfp=False)
|
|
127
|
+
|
|
128
|
+
sim = Simulation(
|
|
129
|
+
model=model,
|
|
130
|
+
domain=domain,
|
|
131
|
+
equil=equil,
|
|
132
|
+
)
|
|
133
|
+
|
|
134
|
+
sim.show_domain(scalars="absB0", window_size = (850, 250), zoom_factor=2.0)
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+

|
|
138
|
+
|
|
139
|
+
This will show the domain and equilibrium magnetic field of the linear MHD model. You can find more examples in the [documentation](https://struphy-hub.github.io/struphy/index.html).
|
|
140
|
+
|
|
141
|
+
## Tutorials on Binder
|
|
142
|
+
|
|
143
|
+
Get familiar with Struphy right away on [mybinder](https://mybinder.org/v2/gh/struphy-hub/struphy-tutorials/main) - no installation needed.
|
|
144
|
+
|
|
145
|
+
## Docker
|
|
146
|
+
|
|
147
|
+
If you want to get started right away without installing anything, you can use the [Docker image](https://hub.docker.com/r/spossann/struphy) - just pull and run:
|
|
148
|
+
|
|
149
|
+
docker pull spossann/struphy:main
|
|
150
|
+
docker run -it --rm spossann/struphy:main
|
|
151
|
+
ls struphy_*
|
|
152
|
+
|
|
153
|
+
This will show three available Struphy environments, which you can activate for example via
|
|
154
|
+
|
|
155
|
+
source struphy_fortran_/env_fortran_/bin/activate
|
|
156
|
+
|
|
157
|
+
There is also a [Docker image with just the prerequisites](https://hub.docker.com/r/spossann/ubuntu-for-struphy) (on Ubuntu), so you can install and compile Struphy on top of it yourself:
|
|
158
|
+
|
|
159
|
+
docker pull spossann/ubuntu-for-struphy:main
|
|
160
|
+
docker run -it --rm spossann/ubuntu-for-struphy:main
|
|
161
|
+
|
|
162
|
+
## Get in touch
|
|
163
|
+
|
|
164
|
+
- [Issues](https://github.com/struphy-hub/struphy/issues)
|
|
165
|
+
- [Discussions](https://github.com/struphy-hub/struphy/discussions)
|
|
166
|
+
- [@spossann](https://github.com/spossann) [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de) (Maintainer)
|
|
167
|
+
- [@max-models](https://github.com/max-models) [max.lindqvist@ipp.mpg.de](mailto:Max.Lindqvist@ipp.mpg.de) (Maintainer)
|
|
168
|
+
- [LinkedIn profile](https://www.linkedin.com/company/struphy/)
|
|
169
|
+
|
|
170
|
+
## Publications
|
|
171
|
+
|
|
172
|
+
- D. Bell, M.C. Pinto, S. Possanner, E. Sonnendrücker,
|
|
173
|
+
[**The linearized Vlasov–Maxwell system as a Hamiltonian system**](https://doi.org/10.1016/j.jcp.2026.114765),
|
|
174
|
+
Journal of Computational Physics, Volume 555, 114765 (2026).
|
|
175
|
+
|
|
176
|
+
- V. Carlier, M.C. Pinto, [**Variational discretizations of ideal magnetohydrodynamics in smooth regime using structure-preserving finite elements**](https://doi.org/10.1016/j.jcp.2024.113647),
|
|
177
|
+
Journal of Computational Physics, Volume 523, 113647 (2025).
|
|
178
|
+
|
|
179
|
+
- Y. Li, M.C. Pinto, F. Holderied, S. Possanner, E. Sonnendrücker, [**Geometric Particle-In-Cell discretizations of a plasma hybrid model with kinetic ions and mass-less fluid electrons**](https://doi.org/10.1016/j.jcp.2023.112671), Journal of Computational Physics 498, 112671 (2023).
|
|
180
|
+
|
|
181
|
+
- S. Possanner, F. Holderied, Y. Li, B.-K. Na, D. Bell, S. Hadjout and Y. Güçlü, [**High-Order Structure-Preserving Algorithms for Plasma Hybrid Models**](https://link.springer.com/chapter/10.1007/978-3-031-38299-4_28), International Conference on Geometric Science of Information, 263-271, Springer Nature Switzerland (2023).
|
|
182
|
+
|
|
183
|
+
- F. Holderied, S. Possanner, [**Magneto-hydrodynamic eigenvalue solver for axisymmetric equilibria based on smooth polar splines**](https://doi.org/10.1016/j.jcp.2022.111329), Journal of Computational Physics 464, 111329 (2022).
|
|
184
|
+
|
|
185
|
+
- F. Holderied, S. Possanner, X. Wang, [**MHD-kinetic hybrid code based on structure-preserving finite elements with particles-in-cell**](https://doi.org/10.1016/j.jcp.2021.110143), Journal of Computational Physics 433, 110143 (2021).
|
|
186
|
+
|
|
187
|
+
- F. Holderied, S. Possanner, A. Ratnani, X. Wang, [**Structure-preserving vs. standard particle-in-cell methods: The case of an electron hybrid model**](https://doi.org/10.1016/j.jcp.2019.109108), Journal of Computational Physics 402, 109108 (2020).
|