struphy 2.4.1__tar.gz → 2.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {struphy-2.4.1/src/struphy.egg-info → struphy-2.4.2}/PKG-INFO +45 -4
- struphy-2.4.2/README.md +55 -0
- {struphy-2.4.1 → struphy-2.4.2}/pyproject.toml +3 -3
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/conftest.py +5 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/compile.py +6 -2
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/format.py +18 -34
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/main.py +15 -3
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/params.py +4 -4
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/pproc.py +15 -3
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/test.py +12 -5
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/kernels_2d.py +8 -12
- struphy-2.4.2/src/struphy/eigenvalue_solvers/kernels_3d.py +234 -0
- struphy-2.4.2/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +1434 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/basis_projection_ops.py +40 -34
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/mass.py +47 -43
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/preconditioner.py +36 -36
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/projectors.py +22 -22
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/psydac_derham.py +376 -44
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_basis_ops.py +13 -12
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_local_projectors.py +17 -17
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/xx_test_preconds.py +37 -34
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/utilities.py +139 -103
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/variational_utilities.py +1 -1
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/utilities.py +33 -3
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/setup.py +5 -1
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/base.py +21 -11
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/maxwellians.py +1 -2
- struphy-2.4.2/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +292 -0
- struphy-2.4.2/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +276 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/main.py +9 -8
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/fluid.py +4 -1
- struphy-2.4.2/src/struphy/models/tests/test_fluid_models.py +28 -0
- struphy-2.4.2/src/struphy/models/tests/test_hybrid_models.py +28 -0
- struphy-2.4.2/src/struphy/models/tests/test_kinetic_models.py +28 -0
- struphy-2.4.2/src/struphy/models/tests/test_toy_models.py +28 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/util.py +145 -8
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/verification.py +1 -1
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/accum_kernels.py +8 -8
- struphy-2.4.2/src/struphy/pic/accumulation/accum_kernels_gc.py +850 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/particles_to_grid.py +6 -6
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_kernels.py +25 -27
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_kernels_gc.py +721 -427
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/utilities.py +26 -16
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/utilities_kernels.py +3 -6
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/cprofile_analyser.py +55 -55
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/post_processing_tools.py +6 -12
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/pproc_struphy.py +12 -5
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/propagators_coupling.py +4 -3
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/propagators_markers.py +4 -4
- struphy-2.4.2/src/struphy/psydac-2.4.2.dev0-py3-none-any.whl +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/clone_config.py +42 -3
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/test_clone_config.py +3 -3
- {struphy-2.4.1 → struphy-2.4.2/src/struphy.egg-info}/PKG-INFO +45 -4
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/SOURCES.txt +1 -1
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/requires.txt +1 -1
- struphy-2.4.1/README.md +0 -15
- struphy-2.4.1/src/struphy/eigenvalue_solvers/kernels_3d.py +0 -152
- struphy-2.4.1/src/struphy/eigenvalue_solvers/kernels_projectors_global_mhd.py +0 -965
- struphy-2.4.1/src/struphy/linear_algebra/tests/test_stencil_dot_kernels.py +0 -296
- struphy-2.4.1/src/struphy/linear_algebra/tests/test_stencil_transpose_kernels.py +0 -282
- struphy-2.4.1/src/struphy/models/tests/test_fluid_models.py +0 -121
- struphy-2.4.1/src/struphy/models/tests/test_hybrid_models.py +0 -108
- struphy-2.4.1/src/struphy/models/tests/test_kinetic_models.py +0 -108
- struphy-2.4.1/src/struphy/models/tests/test_toy_models.py +0 -110
- struphy-2.4.1/src/struphy/pic/accumulation/accum_kernels_gc.py +0 -862
- struphy-2.4.1/src/struphy/psydac-2.4.1-py3-none-any.whl +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/LICENSE +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/setup.cfg +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/bsplines.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/bsplines_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/tests/test_bsplines_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/compile_struphy.mk +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/profile.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/run.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/tests/test_console.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/console/units.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dependencies.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/console_diagn.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/continuous_spectra.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/diagn_tools.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/paraview/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/analytic.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/base.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/dispersion_relations/utilities.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/kernels_projectors_global.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/MHD_eigenvalues_cylinder_1D.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kernels_control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fB_massless_kernels_control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_cv_kernel_2.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/fnB_massless_kernels_control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_cvker.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/control_variates/kinetic_extended/massless_kernels_control_variate.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/emw_operators.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/inner_products_1d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/inner_products_2d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/inner_products_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/l2_error_1d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/l2_error_2d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/l2_error_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/mass_matrices_3d_pre.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_arrays.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bb_kernel.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_bv_kernel.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_massless_linear_operators.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/massless_operators/fB_vv_kernel.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/mhd_operators_MF.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/kernels_projectors_local_mhd.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/mhd_operators_3d_local.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/pro_local/projectors_local.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_L2_projector_kernel.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_L2.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_function_projectors_local.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/legacy/projectors_local/shape_pro_local/shape_local_projector_kernel.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mass_matrices_1d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mass_matrices_2d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mass_matrices_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_main.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_axisymmetric_pproc.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_operators.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/mhd_operators_core.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/projectors_global.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/spline_space.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/eigenvalue_solvers/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/examples/_draw_parallel.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/basis_projection_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/linear_operators.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/local_projectors_args_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/local_projectors_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/mass_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_derham.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_eval_field.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_field_init.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_l2_projectors.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_mass_matrices.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/utilities_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/feec/utilities_local_projectors.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/base.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/equils.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/generic.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E1D6_M6N6/parameter.ini +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/newBC_E4D6_M6N6/parameter.ini +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/GVEC_ELLIPSTELL_V2_State_0000_00200000.dat +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/ellipstell_v2/oldBC_E40D5M6N6/parameter.ini +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/projected_equils.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_generic_equils.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_gvec_equil.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/base.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/domains.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/evaluation_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/map_coef/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/mappings_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/tests/test_domain.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/transform_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/utilities.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/geometry/utilities_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/eigenfunctions.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/perturbations.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/initial/tests/test_init_perturbations.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/batch_cobra.sh +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_016.sh +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_032.sh +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_064.sh +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_128.sh +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_256.sh +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/batch/p_512.sh +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_TAE_tokamak.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovcc.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_hybridmhdvlasovpc.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linearextendedmhd.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_landau.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_streaming_weibel.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/longer_examples/params_linvlasovmaxwell_weibel.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/parameters.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_02.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_03.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_04a.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_04b.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_04c.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05a.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05b.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05c.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05d.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05e.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_05f.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_12a.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/tutorials/params_12b.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/IsothermalEulerSPH_soundwave.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/LinearVlasovAmpereOneSpecies_weakLandau.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/VlasovAmpereOneSpecies_weakLandau.yml +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/inp/verification/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/out/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/io/output_handling.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/moment_functions.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/tests/test_base.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/kinetic_background/tests/test_maxwellians.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/linalg_kron.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/schur_solver.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/linear_algebra/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/base.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/hybrid.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/kinetic.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/tests/test_xxpproc.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/models/toy.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/filler_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/base.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/particles.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/eval_kernels_gc.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_args_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sampling_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sobol_seq.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sorting_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sph_eval_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/sph_smoothing_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_accum_vec_H1.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_accumulation.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_binning.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_draw_parallel.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/accumulation.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/accumulation_kernels_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/mappings_3d_fast.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher_pos.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_2d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/pusher_vel_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_2d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pic_legacy_files/spline_evaluation_3d.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_pushers.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_sorting.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_sph.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/pic/tests/test_tesselation.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/basic.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/extraction_operators.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/linear_operators.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/tests/test_legacy_polar_splines.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/polar/tests/test_polar.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/orbits/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/orbits/orbits_kernels.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/orbits/orbits_tools.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/profile_struphy.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/post_processing/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/profiling/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/profiling/profiling.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/base.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/propagators_fields.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/tests/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/propagators/tests/test_poisson.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/tutorials/tests/test_tutorials.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/__init__.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy/utils/utils.py +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/dependency_links.txt +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/entry_points.txt +0 -0
- {struphy-2.4.1 → struphy-2.4.2}/src/struphy.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: struphy
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: Multi-model plasma physics package
|
|
5
5
|
Author: Max Planck Institute for Plasma Physics
|
|
6
6
|
Author-email: stefan.possanner@ipp.mpg.de, eric.sonnendruecker@ipp.mpg.de
|
|
@@ -32,7 +32,7 @@ Description-Content-Type: text/markdown
|
|
|
32
32
|
License-File: LICENSE
|
|
33
33
|
Requires-Dist: numpy
|
|
34
34
|
Requires-Dist: pyccel>=1.11.1
|
|
35
|
-
Requires-Dist: mpi4py
|
|
35
|
+
Requires-Dist: mpi4py
|
|
36
36
|
Requires-Dist: scipy
|
|
37
37
|
Requires-Dist: h5py
|
|
38
38
|
Requires-Dist: matplotlib
|
|
@@ -67,12 +67,53 @@ Requires-Dist: myst-parser; extra == "doc"
|
|
|
67
67
|
Requires-Dist: mistune; extra == "doc"
|
|
68
68
|
Requires-Dist: docutils; extra == "doc"
|
|
69
69
|
Requires-Dist: ipyparallel; extra == "doc"
|
|
70
|
+
Dynamic: license-file
|
|
70
71
|
|
|
71
72
|
# Struphy - Structure-preserving hybrid codes
|
|
72
73
|
|
|
73
74
|
A Python package for plasma physics PDEs.
|
|
74
75
|
|
|
75
|
-
|
|
76
|
+
Join the [Struphy mailing list](https://listserv.gwdg.de/mailman/listinfo/struphy) and stay informed on updates.
|
|
77
|
+
|
|
78
|
+
## Documentation
|
|
79
|
+
See the [Struphy pages](https://struphy.pages.mpcdf.de/struphy/index.html) for details regarding installation, tutorials, use and development.
|
|
80
|
+
|
|
81
|
+
## Quick install
|
|
82
|
+
|
|
83
|
+
Use a virtual environment:
|
|
84
|
+
|
|
85
|
+
python3 -m pip install -U virtualenv
|
|
86
|
+
python3 -m venv struphy_env
|
|
87
|
+
source struphy_env/bin/activate
|
|
88
|
+
|
|
89
|
+
Install latest release (with test packages):
|
|
90
|
+
|
|
91
|
+
pip install --no-cache-dir -U struphy[test]
|
|
92
|
+
|
|
93
|
+
Compile kernels:
|
|
94
|
+
|
|
95
|
+
struphy compile
|
|
96
|
+
|
|
97
|
+
Quick help:
|
|
98
|
+
|
|
99
|
+
struphy -h
|
|
100
|
+
|
|
101
|
+
In case of problems visit [Trouble shooting](https://struphy.pages.mpcdf.de/struphy/sections/install.html#trouble-shooting).
|
|
102
|
+
|
|
103
|
+
## Run tests from the command-line
|
|
104
|
+
|
|
105
|
+
Run available verification tests for [Struphy models](https://struphy.pages.mpcdf.de/struphy/sections/models.html):
|
|
106
|
+
|
|
107
|
+
struphy test models --verification --fast --show-plots
|
|
108
|
+
|
|
109
|
+
The corresponding parameter files are in [struphy/io/inp/verification/](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/src/struphy/io/inp/verification).
|
|
110
|
+
The corresponding diagnostics functions are in [struphy/models/tests/verification.py](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/blob/devel/src/struphy/models/tests/verification.py). You can repeat the verification run of a single `<model_name>` by typing
|
|
111
|
+
|
|
112
|
+
struphy test <model_name> --verification --fast --show-plots
|
|
113
|
+
|
|
114
|
+
## Tutorial notebooks
|
|
115
|
+
|
|
116
|
+
Struphy tutorials are available in the form of [Jupyter notebooks](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/doc/tutorials).
|
|
76
117
|
|
|
77
118
|
## Reference paper
|
|
78
119
|
|
struphy-2.4.2/README.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Struphy - Structure-preserving hybrid codes
|
|
2
|
+
|
|
3
|
+
A Python package for plasma physics PDEs.
|
|
4
|
+
|
|
5
|
+
Join the [Struphy mailing list](https://listserv.gwdg.de/mailman/listinfo/struphy) and stay informed on updates.
|
|
6
|
+
|
|
7
|
+
## Documentation
|
|
8
|
+
See the [Struphy pages](https://struphy.pages.mpcdf.de/struphy/index.html) for details regarding installation, tutorials, use and development.
|
|
9
|
+
|
|
10
|
+
## Quick install
|
|
11
|
+
|
|
12
|
+
Use a virtual environment:
|
|
13
|
+
|
|
14
|
+
python3 -m pip install -U virtualenv
|
|
15
|
+
python3 -m venv struphy_env
|
|
16
|
+
source struphy_env/bin/activate
|
|
17
|
+
|
|
18
|
+
Install latest release (with test packages):
|
|
19
|
+
|
|
20
|
+
pip install --no-cache-dir -U struphy[test]
|
|
21
|
+
|
|
22
|
+
Compile kernels:
|
|
23
|
+
|
|
24
|
+
struphy compile
|
|
25
|
+
|
|
26
|
+
Quick help:
|
|
27
|
+
|
|
28
|
+
struphy -h
|
|
29
|
+
|
|
30
|
+
In case of problems visit [Trouble shooting](https://struphy.pages.mpcdf.de/struphy/sections/install.html#trouble-shooting).
|
|
31
|
+
|
|
32
|
+
## Run tests from the command-line
|
|
33
|
+
|
|
34
|
+
Run available verification tests for [Struphy models](https://struphy.pages.mpcdf.de/struphy/sections/models.html):
|
|
35
|
+
|
|
36
|
+
struphy test models --verification --fast --show-plots
|
|
37
|
+
|
|
38
|
+
The corresponding parameter files are in [struphy/io/inp/verification/](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/src/struphy/io/inp/verification).
|
|
39
|
+
The corresponding diagnostics functions are in [struphy/models/tests/verification.py](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/blob/devel/src/struphy/models/tests/verification.py). You can repeat the verification run of a single `<model_name>` by typing
|
|
40
|
+
|
|
41
|
+
struphy test <model_name> --verification --fast --show-plots
|
|
42
|
+
|
|
43
|
+
## Tutorial notebooks
|
|
44
|
+
|
|
45
|
+
Struphy tutorials are available in the form of [Jupyter notebooks](https://gitlab.mpcdf.mpg.de/struphy/struphy/-/tree/devel/doc/tutorials).
|
|
46
|
+
|
|
47
|
+
## Reference paper
|
|
48
|
+
|
|
49
|
+
* 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 2023, 263-271, Springer Nature Switzerland.
|
|
50
|
+
|
|
51
|
+
## Contact
|
|
52
|
+
|
|
53
|
+
* Stefan Possanner [stefan.possanner@ipp.mpg.de](mailto:spossann@ipp.mpg.de)
|
|
54
|
+
* Eric Sonnendrücker [eric.sonnendruecker@ipp.mpg.de](mailto:eric.sonnendruecker@ipp.mpg.de)
|
|
55
|
+
* Xin Wang [xin.wang@ipp.mpg.de](mailto:xin.wang@ipp.mpg.de)
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "struphy"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.2"
|
|
8
8
|
readme = "README.md"
|
|
9
9
|
requires-python = ">=3.10"
|
|
10
10
|
license = {file = "LICENSE"}
|
|
@@ -21,7 +21,7 @@ classifiers = [
|
|
|
21
21
|
dependencies = [
|
|
22
22
|
'numpy',
|
|
23
23
|
'pyccel>=1.11.1',
|
|
24
|
-
'mpi4py
|
|
24
|
+
'mpi4py',
|
|
25
25
|
'scipy',
|
|
26
26
|
'h5py',
|
|
27
27
|
'matplotlib',
|
|
@@ -99,7 +99,7 @@ kinetic-diagnostics = "struphy.diagnostics.console_diagn:main"
|
|
|
99
99
|
]
|
|
100
100
|
|
|
101
101
|
struphy = ['compile_struphy.mk',
|
|
102
|
-
'psydac-2.4.
|
|
102
|
+
'psydac-2.4.2.dev0-py3-none-any.whl',]
|
|
103
103
|
|
|
104
104
|
[tool.autopep8]
|
|
105
105
|
# Add specific settings for autopep8
|
|
@@ -4,6 +4,7 @@ def pytest_addoption(parser):
|
|
|
4
4
|
parser.addoption("--vrbose", action="store_true")
|
|
5
5
|
parser.addoption("--verification", action="store_true")
|
|
6
6
|
parser.addoption("--show-plots", action="store_true")
|
|
7
|
+
parser.addoption("--nclones", type=int, default=1)
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
def pytest_generate_tests(metafunc):
|
|
@@ -25,6 +26,10 @@ def pytest_generate_tests(metafunc):
|
|
|
25
26
|
if "verification" in metafunc.fixturenames and option_value is not None:
|
|
26
27
|
metafunc.parametrize("verification", [option_value])
|
|
27
28
|
|
|
29
|
+
option_value = metafunc.config.option.nclones
|
|
30
|
+
if "nclones" in metafunc.fixturenames and option_value is not None:
|
|
31
|
+
metafunc.parametrize("nclones", [option_value])
|
|
32
|
+
|
|
28
33
|
option_value = metafunc.config.option.show_plots
|
|
29
34
|
if "show_plots" in metafunc.fixturenames and option_value is not None:
|
|
30
35
|
metafunc.parametrize("show_plots", [option_value])
|
|
@@ -40,6 +40,7 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
|
|
|
40
40
|
|
|
41
41
|
import importlib.metadata
|
|
42
42
|
import os
|
|
43
|
+
import re
|
|
43
44
|
import sysconfig
|
|
44
45
|
|
|
45
46
|
import pyccel
|
|
@@ -255,14 +256,17 @@ def struphy_compile(language, compiler, omp_pic, omp_feec, delete, status, verbo
|
|
|
255
256
|
install_psydac = False
|
|
256
257
|
if psydac_installed:
|
|
257
258
|
# only install (from .whl) if psydac not up-to-date
|
|
258
|
-
if psydac_ver != struphy_ver:
|
|
259
|
+
if ".".join(psydac_ver.split(".")[:3]) != ".".join(struphy_ver.split(".")[:3]):
|
|
259
260
|
print(f"You have psydac version {psydac_ver}, but version {struphy_ver} is required.\n")
|
|
260
261
|
install_psydac = True
|
|
261
262
|
else:
|
|
262
263
|
install_psydac = True
|
|
263
264
|
|
|
264
265
|
if install_psydac:
|
|
265
|
-
|
|
266
|
+
for filename in os.listdir(libpath):
|
|
267
|
+
if re.match("psydac-", filename):
|
|
268
|
+
psydac_file = filename
|
|
269
|
+
|
|
266
270
|
cmd = ["pip", "uninstall", "-y", "psydac"]
|
|
267
271
|
subp_run(cmd)
|
|
268
272
|
print("\nInstalling Psydac ...")
|
|
@@ -99,8 +99,7 @@ PASS_GREEN = f"{GREEN_COLOR}PASS{BLACK_COLOR}"
|
|
|
99
99
|
|
|
100
100
|
|
|
101
101
|
def check_omp_flags(file_path, verbose=False):
|
|
102
|
-
"""
|
|
103
|
-
Checks if a file contains incorrect OpenMP-like flags (`# $`).
|
|
102
|
+
"""Checks if a file contains incorrect OpenMP-like flags (`# $`).
|
|
104
103
|
|
|
105
104
|
Parameters:
|
|
106
105
|
-----------
|
|
@@ -124,8 +123,7 @@ def check_omp_flags(file_path, verbose=False):
|
|
|
124
123
|
|
|
125
124
|
|
|
126
125
|
def check_ruff(file_path, verbose=False):
|
|
127
|
-
"""
|
|
128
|
-
Check if a file passes Ruff linting.
|
|
126
|
+
"""Check if a file passes Ruff linting.
|
|
129
127
|
|
|
130
128
|
Parameters
|
|
131
129
|
----------
|
|
@@ -175,8 +173,7 @@ def check_ruff(file_path, verbose=False):
|
|
|
175
173
|
|
|
176
174
|
|
|
177
175
|
def check_isort(file_path, verbose=False):
|
|
178
|
-
"""
|
|
179
|
-
Check if a file is sorted according to isort.
|
|
176
|
+
"""Check if a file is sorted according to isort.
|
|
180
177
|
|
|
181
178
|
Parameters
|
|
182
179
|
----------
|
|
@@ -204,8 +201,7 @@ def check_isort(file_path, verbose=False):
|
|
|
204
201
|
|
|
205
202
|
|
|
206
203
|
def check_autopep8(file_path, verbose=False):
|
|
207
|
-
"""
|
|
208
|
-
Check if a file is formatted according to autopep8.
|
|
204
|
+
"""Check if a file is formatted according to autopep8.
|
|
209
205
|
|
|
210
206
|
Parameters
|
|
211
207
|
----------
|
|
@@ -235,8 +231,7 @@ def check_autopep8(file_path, verbose=False):
|
|
|
235
231
|
|
|
236
232
|
|
|
237
233
|
def check_flake8(file_path, verbose=False):
|
|
238
|
-
"""
|
|
239
|
-
Check if a file is formatted according to flake8.
|
|
234
|
+
"""Check if a file is formatted according to flake8.
|
|
240
235
|
|
|
241
236
|
Parameters
|
|
242
237
|
----------
|
|
@@ -265,8 +260,7 @@ def check_flake8(file_path, verbose=False):
|
|
|
265
260
|
|
|
266
261
|
|
|
267
262
|
def get_pylint_score(file_path, verbose=False, pass_score=8.0):
|
|
268
|
-
"""
|
|
269
|
-
Get pylint score for a file and determine if it passes.
|
|
263
|
+
"""Get pylint score for a file and determine if it passes.
|
|
270
264
|
|
|
271
265
|
Parameters
|
|
272
266
|
----------
|
|
@@ -320,8 +314,7 @@ def get_pylint_score(file_path, verbose=False, pass_score=8.0):
|
|
|
320
314
|
|
|
321
315
|
|
|
322
316
|
def check_trailing_commas(file_path, verbose=False):
|
|
323
|
-
"""
|
|
324
|
-
Check if a file contains trailing commas as required by add-trailing-commas.
|
|
317
|
+
"""Check if a file contains trailing commas as required by add-trailing-commas.
|
|
325
318
|
|
|
326
319
|
Parameters
|
|
327
320
|
----------
|
|
@@ -367,8 +360,7 @@ def check_trailing_commas(file_path, verbose=False):
|
|
|
367
360
|
|
|
368
361
|
|
|
369
362
|
def parse_path(directory):
|
|
370
|
-
"""
|
|
371
|
-
Traverse a directory to find Python files, excluding '__XYZ__.py'.
|
|
363
|
+
"""Traverse a directory to find Python files, excluding '__XYZ__.py'.
|
|
372
364
|
|
|
373
365
|
Parameters
|
|
374
366
|
----------
|
|
@@ -391,8 +383,7 @@ def parse_path(directory):
|
|
|
391
383
|
|
|
392
384
|
|
|
393
385
|
def get_python_files(input_type, path=None):
|
|
394
|
-
"""
|
|
395
|
-
Retrieve Python files based on the specified input type
|
|
386
|
+
"""Retrieve Python files based on the specified input type.
|
|
396
387
|
|
|
397
388
|
Parameters
|
|
398
389
|
----------
|
|
@@ -480,8 +471,7 @@ def get_python_files(input_type, path=None):
|
|
|
480
471
|
|
|
481
472
|
|
|
482
473
|
def struphy_lint(config, verbose):
|
|
483
|
-
"""
|
|
484
|
-
Lint Python files based on the given configuration and specified linters.
|
|
474
|
+
"""Lint Python files based on the given configuration and specified linters.
|
|
485
475
|
|
|
486
476
|
Parameters
|
|
487
477
|
----------
|
|
@@ -614,8 +604,7 @@ def confirm_formatting(python_files, linters, yes):
|
|
|
614
604
|
|
|
615
605
|
|
|
616
606
|
def files_require_formatting(python_files, linters):
|
|
617
|
-
"""
|
|
618
|
-
Check if any of the specified files still require formatting based on the specified linters.
|
|
607
|
+
"""Check if any of the specified files still require formatting based on the specified linters.
|
|
619
608
|
|
|
620
609
|
Parameters
|
|
621
610
|
----------
|
|
@@ -674,8 +663,7 @@ def run_linters_on_files(linters, python_files, flags, verbose):
|
|
|
674
663
|
|
|
675
664
|
|
|
676
665
|
def struphy_format(config, verbose, yes=False):
|
|
677
|
-
"""
|
|
678
|
-
Format Python files with specified linters, optionally iterating multiple times.
|
|
666
|
+
"""Format Python files with specified linters, optionally iterating multiple times.
|
|
679
667
|
|
|
680
668
|
Parameters
|
|
681
669
|
----------
|
|
@@ -755,8 +743,7 @@ def struphy_format(config, verbose, yes=False):
|
|
|
755
743
|
|
|
756
744
|
|
|
757
745
|
def print_stats_plain(stats, linters, ci_linters=["ruff"]):
|
|
758
|
-
"""
|
|
759
|
-
Print statistics for a single file in plain text format.
|
|
746
|
+
"""Print statistics for a single file in plain text format.
|
|
760
747
|
|
|
761
748
|
Parameters
|
|
762
749
|
----------
|
|
@@ -789,8 +776,7 @@ def print_stats_plain(stats, linters, ci_linters=["ruff"]):
|
|
|
789
776
|
|
|
790
777
|
|
|
791
778
|
def print_stats_table(stats_list, linters, print_header=True, pathlen=0, ci_linters=["ruff"]):
|
|
792
|
-
"""
|
|
793
|
-
Print statistics for Python files in a tabular format.
|
|
779
|
+
"""Print statistics for Python files in a tabular format.
|
|
794
780
|
|
|
795
781
|
Parameters
|
|
796
782
|
----------
|
|
@@ -850,8 +836,7 @@ def print_stats_table(stats_list, linters, print_header=True, pathlen=0, ci_lint
|
|
|
850
836
|
|
|
851
837
|
|
|
852
838
|
def analyze_file(file_path, linters=None, verbose=False):
|
|
853
|
-
"""
|
|
854
|
-
Analyze a Python file with list of linters
|
|
839
|
+
"""Analyze a Python file with list of linters.
|
|
855
840
|
|
|
856
841
|
Parameters
|
|
857
842
|
----------
|
|
@@ -936,8 +921,7 @@ def analyze_file(file_path, linters=None, verbose=False):
|
|
|
936
921
|
|
|
937
922
|
|
|
938
923
|
def replace_backticks_with_code_tags(text):
|
|
939
|
-
"""
|
|
940
|
-
Recursively replaces inline backticks with <code> tags.
|
|
924
|
+
"""Recursively replaces inline backticks with <code> tags.
|
|
941
925
|
Handles multiple or nested occurrences.
|
|
942
926
|
|
|
943
927
|
Args:
|
|
@@ -971,7 +955,7 @@ def generate_html_table_from_combined_data(combined_data, sort_descending=True):
|
|
|
971
955
|
|
|
972
956
|
|
|
973
957
|
def parse_json_file_to_html(json_file_path, html_output_path):
|
|
974
|
-
"""
|
|
958
|
+
"""Parses a JSON file containing code issues and writes an HTML report.
|
|
975
959
|
Parses a JSON file containing code issues, groups them by filename,
|
|
976
960
|
reads the source code to extract context, and writes an HTML report.
|
|
977
961
|
Each file's section is foldable using <details> and <summary> tags.
|
|
@@ -1288,7 +1272,7 @@ document.addEventListener('DOMContentLoaded', (event) => {
|
|
|
1288
1272
|
html_content.append("</div>")
|
|
1289
1273
|
else:
|
|
1290
1274
|
html_content.append(
|
|
1291
|
-
f"<p>Cannot read file <code>{filename}</code> or invalid row
|
|
1275
|
+
f"<p>Cannot read file <code>{filename}</code> or invalid row <code>{row}</code>.</p>"
|
|
1292
1276
|
)
|
|
1293
1277
|
|
|
1294
1278
|
html_content.append("</div>")
|
|
@@ -13,9 +13,7 @@ __version__ = importlib.metadata.version("struphy")
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def struphy():
|
|
16
|
-
"""
|
|
17
|
-
Struphy main executable. Performs argument parsing and sub-command call.
|
|
18
|
-
"""
|
|
16
|
+
"""Struphy main executable. Performs argument parsing and sub-command call."""
|
|
19
17
|
|
|
20
18
|
import argparse
|
|
21
19
|
import pickle
|
|
@@ -622,6 +620,12 @@ def struphy():
|
|
|
622
620
|
action="store_true",
|
|
623
621
|
)
|
|
624
622
|
|
|
623
|
+
parser_pproc.add_argument(
|
|
624
|
+
"--no-vtk",
|
|
625
|
+
help="whether vtk files creation should be skipped",
|
|
626
|
+
action="store_true",
|
|
627
|
+
)
|
|
628
|
+
|
|
625
629
|
# 7. "test" sub-command
|
|
626
630
|
try:
|
|
627
631
|
import pytest_mpi
|
|
@@ -693,6 +697,14 @@ def struphy():
|
|
|
693
697
|
action="store_true",
|
|
694
698
|
)
|
|
695
699
|
|
|
700
|
+
parser_test.add_argument(
|
|
701
|
+
"--nclones",
|
|
702
|
+
type=int,
|
|
703
|
+
metavar="N",
|
|
704
|
+
help="number of domain clones (default=1)",
|
|
705
|
+
default=1,
|
|
706
|
+
)
|
|
707
|
+
|
|
696
708
|
parser_test.add_argument(
|
|
697
709
|
"--show-plots",
|
|
698
710
|
help="show plots of tests",
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
def struphy_params(model, file, yes=False, options=False):
|
|
2
|
-
|
|
2
|
+
"""Create a model's default parameter file and save in current input path.
|
|
3
3
|
|
|
4
4
|
Parameters
|
|
5
5
|
----------
|
|
6
6
|
model : str
|
|
7
7
|
The name of the Struphy model.
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
yes : bool
|
|
10
10
|
If true, say yes on prompt to overwrite .yml FILE
|
|
11
11
|
|
|
@@ -14,9 +14,9 @@ def struphy_params(model, file, yes=False, options=False):
|
|
|
14
14
|
|
|
15
15
|
show_options : bool
|
|
16
16
|
Whether to print to screen all possible options for the model.
|
|
17
|
-
|
|
17
|
+
"""
|
|
18
18
|
|
|
19
|
-
from struphy.models import fluid,
|
|
19
|
+
from struphy.models import fluid, hybrid, kinetic, toy
|
|
20
20
|
|
|
21
21
|
# load model class
|
|
22
22
|
objs = [fluid, kinetic, hybrid, toy]
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
from struphy.console.run import subp_run
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
def struphy_pproc(
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
def struphy_pproc(
|
|
5
|
+
dirr,
|
|
6
|
+
dir_abs=None,
|
|
7
|
+
step=1,
|
|
8
|
+
celldivide=1,
|
|
9
|
+
physical=False,
|
|
10
|
+
guiding_center=False,
|
|
11
|
+
classify=False,
|
|
12
|
+
no_vtk=False,
|
|
13
|
+
):
|
|
14
|
+
"""Post process data from finished Struphy runs.
|
|
7
15
|
|
|
8
16
|
Parameters
|
|
9
17
|
----------
|
|
@@ -56,4 +64,8 @@ def struphy_pproc(dirr, dir_abs=None, step=1, celldivide=1, physical=False, guid
|
|
|
56
64
|
if classify:
|
|
57
65
|
command += ["--classify"]
|
|
58
66
|
|
|
67
|
+
# Whether vtk files should be created
|
|
68
|
+
if no_vtk:
|
|
69
|
+
command += ["--no-vtk"]
|
|
70
|
+
|
|
59
71
|
subp_run(command)
|
|
@@ -11,6 +11,7 @@ def struphy_test(
|
|
|
11
11
|
vrbose: bool = False,
|
|
12
12
|
verification: bool = False,
|
|
13
13
|
show_plots: bool = False,
|
|
14
|
+
nclones: int = 1,
|
|
14
15
|
):
|
|
15
16
|
"""
|
|
16
17
|
Run Struphy unit and/or model tests.
|
|
@@ -92,6 +93,8 @@ def struphy_test(
|
|
|
92
93
|
cmd += ["--vrbose"]
|
|
93
94
|
if verification:
|
|
94
95
|
cmd += ["--verification"]
|
|
96
|
+
if nclones > 1:
|
|
97
|
+
cmd += ["--nclones", f"{nclones}"]
|
|
95
98
|
if show_plots:
|
|
96
99
|
cmd += ["--show-plots"]
|
|
97
100
|
subp_run(cmd)
|
|
@@ -123,6 +126,8 @@ def struphy_test(
|
|
|
123
126
|
cmd += ["--vrbose"]
|
|
124
127
|
if verification:
|
|
125
128
|
cmd += ["--verification"]
|
|
129
|
+
if nclones > 1:
|
|
130
|
+
cmd += ["--nclones", f"{nclones}"]
|
|
126
131
|
if show_plots:
|
|
127
132
|
cmd += ["--show-plots"]
|
|
128
133
|
subp_run(cmd)
|
|
@@ -146,17 +151,17 @@ def struphy_test(
|
|
|
146
151
|
)
|
|
147
152
|
|
|
148
153
|
if group in toy_message:
|
|
149
|
-
|
|
154
|
+
mtype = "toy"
|
|
150
155
|
elif group in fluid_message:
|
|
151
|
-
|
|
156
|
+
mtype = "fluid"
|
|
152
157
|
elif group in kinetic_message:
|
|
153
|
-
|
|
158
|
+
mtype = "kinetic"
|
|
154
159
|
elif group in hybrid_message:
|
|
155
|
-
|
|
160
|
+
mtype = "hybrid"
|
|
156
161
|
else:
|
|
157
162
|
raise ValueError(f"{group} is not a valid model name.")
|
|
158
163
|
|
|
159
|
-
py_file = os.path.join(libpath, "models", "tests",
|
|
164
|
+
py_file = os.path.join(libpath, "models", "tests", "util.py")
|
|
160
165
|
|
|
161
166
|
cmd = [
|
|
162
167
|
"mpirun",
|
|
@@ -164,11 +169,13 @@ def struphy_test(
|
|
|
164
169
|
str(mpi),
|
|
165
170
|
"python3",
|
|
166
171
|
py_file,
|
|
172
|
+
mtype,
|
|
167
173
|
group,
|
|
168
174
|
str(Tend),
|
|
169
175
|
str(fast),
|
|
170
176
|
str(vrbose),
|
|
171
177
|
str(verification),
|
|
178
|
+
str(nclones),
|
|
172
179
|
str(show_plots),
|
|
173
180
|
]
|
|
174
181
|
subp_run(cmd)
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
from pyccel.decorators import pure
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
@pure
|
|
7
6
|
def kernel_mass(
|
|
8
7
|
nel: "int[:]",
|
|
9
8
|
p: "int[:]",
|
|
@@ -23,7 +22,7 @@ def kernel_mass(
|
|
|
23
22
|
):
|
|
24
23
|
mat[:, :, :, :] = 0.0
|
|
25
24
|
|
|
26
|
-
#$ omp parallel private(ie1, ie2, il1, il2, jl1, jl2,
|
|
25
|
+
#$ omp parallel private(ie1, ie2, il1, il2, jl1, jl2, value1, q1, q2, wvol, bi, bj) shared(mat)
|
|
27
26
|
#$ omp for reduction ( + : mat)
|
|
28
27
|
for ie1 in range(nel[0]):
|
|
29
28
|
for ie2 in range(nel[1]):
|
|
@@ -31,7 +30,7 @@ def kernel_mass(
|
|
|
31
30
|
for il2 in range(p[1] + 1 - ni[1]):
|
|
32
31
|
for jl1 in range(p[0] + 1 - nj[0]):
|
|
33
32
|
for jl2 in range(p[1] + 1 - nj[1]):
|
|
34
|
-
|
|
33
|
+
value1 = 0.0
|
|
35
34
|
|
|
36
35
|
for q1 in range(nq[0]):
|
|
37
36
|
for q2 in range(nq[1]):
|
|
@@ -39,15 +38,14 @@ def kernel_mass(
|
|
|
39
38
|
bi = bi1[ie1, il1, 0, q1] * bi2[ie2, il2, 0, q2]
|
|
40
39
|
bj = bj1[ie1, jl1, 0, q1] * bj2[ie2, jl2, 0, q2]
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
value1 += wvol * bi * bj
|
|
43
42
|
|
|
44
|
-
mat[ind_base1[ie1, il1], ind_base2[ie2, il2], p[0] + jl1 - il1, p[1] + jl2 - il2] +=
|
|
43
|
+
mat[ind_base1[ie1, il1], ind_base2[ie2, il2], p[0] + jl1 - il1, p[1] + jl2 - il2] += value1
|
|
45
44
|
#$ omp end parallel
|
|
46
45
|
|
|
47
46
|
ierr = 0
|
|
48
47
|
|
|
49
48
|
|
|
50
|
-
@pure
|
|
51
49
|
def kernel_inner(
|
|
52
50
|
nel: "int[:]",
|
|
53
51
|
n3: "int",
|
|
@@ -65,29 +63,28 @@ def kernel_inner(
|
|
|
65
63
|
):
|
|
66
64
|
mat[:, :, :] = 0.0
|
|
67
65
|
|
|
68
|
-
#$ omp parallel private(ie1, ie2, ie3, il1, il2,
|
|
66
|
+
#$ omp parallel private(ie1, ie2, ie3, il1, il2, value1, q1, q2, wvol, bi) shared(mat)
|
|
69
67
|
#$ omp for reduction ( + : mat)
|
|
70
68
|
for ie1 in range(nel[0]):
|
|
71
69
|
for ie2 in range(nel[1]):
|
|
72
70
|
for ie3 in range(n3):
|
|
73
71
|
for il1 in range(p[0] + 1 - ni[0]):
|
|
74
72
|
for il2 in range(p[1] + 1 - ni[1]):
|
|
75
|
-
|
|
73
|
+
value1 = 0.0
|
|
76
74
|
|
|
77
75
|
for q1 in range(nq[0]):
|
|
78
76
|
for q2 in range(nq[1]):
|
|
79
77
|
wvol = w1[ie1, q1] * w2[ie2, q2] * mat_fun[ie1, q1, ie2, q2, ie3]
|
|
80
78
|
bi = bi1[ie1, il1, 0, q1] * bi2[ie2, il2, 0, q2]
|
|
81
79
|
|
|
82
|
-
|
|
80
|
+
value1 += wvol * bi
|
|
83
81
|
|
|
84
|
-
mat[ind_base1[ie1, il1], ind_base2[ie2, il2], ie3] +=
|
|
82
|
+
mat[ind_base1[ie1, il1], ind_base2[ie2, il2], ie3] += value1
|
|
85
83
|
#$ omp end parallel
|
|
86
84
|
|
|
87
85
|
ierr = 0
|
|
88
86
|
|
|
89
87
|
|
|
90
|
-
@pure
|
|
91
88
|
def kernel_l2error(
|
|
92
89
|
nel: "int[:]",
|
|
93
90
|
p: "int[:]",
|
|
@@ -147,7 +144,6 @@ def kernel_l2error(
|
|
|
147
144
|
ierr = 0
|
|
148
145
|
|
|
149
146
|
|
|
150
|
-
@pure
|
|
151
147
|
def kernel_evaluate_2form(
|
|
152
148
|
nel: "int[:]",
|
|
153
149
|
n3: "int",
|