struphy 3.2.0__tar.gz → 3.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {struphy-3.2.0/src/struphy.egg-info → struphy-3.3.0}/PKG-INFO +18 -15
- {struphy-3.2.0 → struphy-3.3.0}/pyproject.toml +19 -15
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/__init__.py +48 -7
- struphy-3.3.0/src/struphy/api/compiler/__init__.py +3 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/options/__init__.py +3 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/bsplines.py +2 -2
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/compile_struphy.mk +2 -3
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/compile.py +87 -80
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/format.py +160 -97
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/main.py +42 -9
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/test.py +2 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/tests/xx_test_console.py +1 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/diagnostics/diagn_tools.py +1 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/basis_projection_ops.py +12 -13
- struphy-3.3.0/src/struphy/feec/boundary_mass.py +588 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/mass.py +382 -146
- struphy-3.3.0/src/struphy/feec/mass_kernels.py +1268 -0
- struphy-3.3.0/src/struphy/feec/memory.py +70 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/preconditioner.py +8 -10
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/psydac_derham.py +46 -16
- struphy-3.3.0/src/struphy/feec/tests/test_boundary_integrals.py +372 -0
- struphy-3.3.0/src/struphy/feec/tests/test_estimate_mem.py +77 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_mass_matrices.py +200 -41
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/utilities_kernels.py +6 -2
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/base.py +55 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/equils.py +281 -377
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/base.py +219 -48
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/domains.py +193 -269
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/utilities.py +9 -9
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/initial/base.py +55 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/initial/perturbations.py +453 -366
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/io/options.py +24 -9
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/io/output_handling.py +29 -16
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kernel_arguments/pusher_args_kernels.py +14 -12
- struphy-3.3.0/src/struphy/kinetic_background/base.py +1013 -0
- struphy-3.3.0/src/struphy/kinetic_background/maxwellians.py +846 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kinetic_background/tests/test_base.py +25 -26
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kinetic_background/tests/test_maxwellians.py +199 -213
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/saddle_point.py +2 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/schur_solver.py +4 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/__init__.py +2 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/base.py +187 -36
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/cold_plasma.py +17 -39
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/cold_plasma_vlasov.py +74 -111
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/deterministic_particle_diffusion.py +8 -29
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/drift_kinetic_electrostatic_adiabatic.py +65 -57
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/guiding_center.py +27 -48
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/hasegawa_wakatani.py +47 -72
- struphy-3.3.0/src/struphy/models/incompressible_navier_stokes_sph.py +277 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/linear_extended_mh_duniform.py +70 -102
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/linear_mhd.py +4 -24
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/linear_mhd_driftkinetic_cc.py +63 -171
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/linear_mhd_vlasov_cc.py +58 -107
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/linear_mhd_vlasov_pc.py +39 -105
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/linear_vlasov_ampere_one_species.py +113 -171
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/linear_vlasov_maxwell_one_species.py +23 -76
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/maxwell.py +1 -5
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/poisson.py +38 -40
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/pressure_less_sph.py +31 -34
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/random_particle_diffusion.py +8 -28
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/shear_alfven.py +59 -77
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/species.py +1 -1
- struphy-3.3.0/src/struphy/models/tests/test_estimate_mem.py +114 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/utils_testing.py +24 -11
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_IncompressibleNavierStokesSPH.py +504 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/verification/test_verif_LinearMHD.py +0 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/verification/test_verif_Poisson.py +1 -2
- struphy-3.3.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +1048 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/verification/test_verif_VlasovAmpereOneSpecies.py +5 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/toy_drift.py +27 -39
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/two_fluid_quasi_neutral_toy.py +40 -56
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/variables.py +156 -4
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/variational_barotropic_fluid.py +31 -51
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/variational_compressible_fluid.py +77 -105
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/variational_pressureless_fluid.py +31 -49
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/visco_resistive_deltaf_mhd.py +80 -108
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/visco_resistive_deltaf_mhd_with_q.py +84 -120
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/visco_resistive_linear_mhd.py +84 -116
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/visco_resistive_linear_mhd_with_q.py +84 -119
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/visco_resistive_mhd.py +91 -129
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/visco_resistive_mhd_with_p.py +64 -95
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/visco_resistive_mhd_with_q.py +73 -103
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/viscous_euler_sph.py +47 -35
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/viscous_fluid.py +89 -87
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/vlasov.py +13 -25
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/vlasov_ampere_one_species.py +65 -79
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/vlasov_maxwell_one_species.py +119 -112
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/ode/solvers.py +2 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/ode/utils.py +10 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/particles/parameters.py +10 -6
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/accum_kernels.py +43 -321
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/accum_kernels_gc.py +47 -94
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/filler_kernels.py +0 -60
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/filter.py +3 -4
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/particle_to_mat_kernels.py +0 -61
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/particles_to_grid.py +164 -41
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/base.py +3170 -3070
- struphy-3.3.0/src/struphy/pic/particles.py +952 -0
- struphy-3.3.0/src/struphy/pic/pushing/eval_kernels_gc.py +469 -0
- struphy-3.3.0/src/struphy/pic/pushing/eval_kernels_sph.py +535 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/pushing/pusher.py +43 -19
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/pushing/pusher_kernels.py +101 -648
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/pushing/pusher_kernels_gc.py +10 -6
- struphy-3.3.0/src/struphy/pic/pushing/pusher_kernels_sph.py +674 -0
- struphy-3.3.0/src/struphy/pic/sorting.py +401 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/sph_eval_kernels.py +148 -109
- struphy-3.3.0/src/struphy/pic/tests/_bench_push_vxb_analytic.py +91 -0
- struphy-3.3.0/src/struphy/pic/tests/bench_openmp_speedup.py +99 -0
- struphy-3.3.0/src/struphy/pic/tests/test_accum_vec_H1.py +624 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_binning.py +82 -32
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_draw_parallel.py +2 -0
- struphy-3.3.0/src/struphy/pic/tests/test_estimate_mem.py +110 -0
- struphy-3.3.0/src/struphy/pic/tests/test_neighbor_ranks.py +106 -0
- struphy-3.3.0/src/struphy/pic/tests/test_pusher_openmp_speedup.py +100 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_pushers.py +8 -11
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_set_zero_velocity.py +1 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_sorting.py +10 -6
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_sph.py +129 -3
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_tesselation.py +4 -2
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/utilities_kernels.py +39 -18
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/orbits/orbits_tools.py +2 -2
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/post_processing_tools.py +601 -336
- struphy-3.3.0/src/struphy/post_processing/tests/test_eval_grids.py +259 -0
- struphy-3.3.0/src/struphy/post_processing/tests/test_eval_grids_mpi.py +243 -0
- struphy-3.3.0/src/struphy/post_processing/tests/test_pproc.py +108 -0
- struphy-3.3.0/src/struphy/propagators/__init__.py +91 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/adiabatic_phi.py +3 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/base.py +9 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/curl_curl_solve.py +39 -29
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/current_coupling_5d_curlb.py +23 -24
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/current_coupling_5d_density.py +33 -27
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/current_coupling_5d_gradb.py +43 -41
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/current_coupling_6d_current.py +16 -14
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/current_coupling_6d_density.py +26 -21
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/efield_weights_coupling.py +3 -3
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/hall.py +14 -9
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/hasegawa_wakatani_step.py +19 -18
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/implicit_diffusion.py +144 -43
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/jxb_cold.py +3 -1
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/magnetosonic.py +11 -11
- struphy-3.3.0/src/struphy/propagators/poisson_adiabatic_gyrokinetic.py +208 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/poisson_solve.py +32 -22
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/pressure_coupling_6d.py +5 -5
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/push_deterministic_diffusion.py +4 -8
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/push_eta.py +3 -10
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/push_eta_pc.py +15 -16
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/push_guiding_center_bx_estar.py +35 -31
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/push_guiding_center_parallel.py +35 -31
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/push_random_diffusion.py +3 -7
- struphy-3.3.0/src/struphy/propagators/push_v_in_force_field.py +159 -0
- struphy-3.2.0/src/struphy/propagators/push_vin_sph_pressure.py → struphy-3.3.0/src/struphy/propagators/push_v_in_sph_pressure.py +39 -16
- struphy-3.2.0/src/struphy/propagators/push_vin_viscous_potential.py → struphy-3.3.0/src/struphy/propagators/push_v_in_viscous_potential.py +5 -5
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/push_vxb.py +20 -20
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/shear_alfven_current_coupling_5d.py +16 -9
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/tests/test_curl_curl.py +3 -5
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/tests/test_gyrokinetic_poisson.py +7 -14
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/tests/test_poisson.py +13 -18
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_density_evolve.py +11 -7
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_entropy_evolve.py +10 -7
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_momentum_advection.py +5 -2
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_pb_evolve.py +31 -21
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_qb_evolve.py +31 -21
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_resistivity.py +20 -17
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_viscosity.py +16 -13
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/vlasov_ampere_coupling.py +3 -3
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/simulation/sim.py +904 -415
- struphy-3.3.0/src/struphy/simulation/tests/test_estimate_mem.py +165 -0
- struphy-3.3.0/src/struphy/utils/__init__.py +0 -0
- struphy-3.3.0/src/struphy/utils/compiler.py +238 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/utils/docstring_converter.py +159 -0
- struphy-3.3.0/src/struphy/utils/mpi_launch.py +82 -0
- struphy-3.3.0/src/struphy/utils/progress.py +13 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/utils/utils.py +1 -1
- {struphy-3.2.0 → struphy-3.3.0/src/struphy.egg-info}/PKG-INFO +18 -15
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy.egg-info/SOURCES.txt +28 -5
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy.egg-info/requires.txt +17 -14
- struphy-3.2.0/src/struphy/feec/mass_kernels.py +0 -768
- struphy-3.2.0/src/struphy/kinetic_background/base.py +0 -865
- struphy-3.2.0/src/struphy/kinetic_background/maxwellians.py +0 -729
- struphy-3.2.0/src/struphy/models/tests/verification/test_verif_ViscousEulerSPH.py +0 -165
- struphy-3.2.0/src/struphy/pic/particles.py +0 -707
- struphy-3.2.0/src/struphy/pic/pushing/eval_kernels_gc.py +0 -1022
- struphy-3.2.0/src/struphy/pic/tests/test_accum_vec_H1.py +0 -206
- struphy-3.2.0/src/struphy/post_processing/likwid/plot_time_traces.py +0 -380
- struphy-3.2.0/src/struphy/propagators/__init__.py +0 -93
- struphy-3.2.0/src/struphy/propagators/push_vin_efield.py +0 -143
- struphy-3.2.0/src/struphy/utils/pyccel.py +0 -25
- {struphy-3.2.0 → struphy-3.3.0}/LICENSE +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/README.md +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/setup.cfg +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/domains/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/equils/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/grids/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/maxwellians/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/models/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/ode/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/particles/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/perturbations/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/post_processing/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/api/simulation/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/bsplines_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/evaluation_kernels_1d.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/evaluation_kernels_2d.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/evaluation_kernels_3d.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/shapefunc_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/tests/test_bsplines_kers.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/bsplines/tests/test_eval_spline_mpi.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/conftest.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/likwid.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/params.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/parsers.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/console/profile.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/dependencies.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/diagnostics/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/diagnostics/console_diagn.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/diagnostics/paraview/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/diagnostics/paraview/mesh_creator.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/diagnostics/paraview/vtk_writer.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/dispersion_relations/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/dispersion_relations/analytic.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/dispersion_relations/base.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/dispersion_relations/utilities.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/eigenvalue_solvers/derivatives.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/examples/_draw_parallel.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/examples/restelli2018/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/examples/restelli2018/callables.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/banded_to_stencil_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/basis_projection_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/linear_operators.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/local_projectors_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/projectors.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_basis_ops.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_derham.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_eval_field.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_field_init.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_l2_projectors.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_local_matrix_vector.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_local_projectors.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_lowdim_nel_is_1.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_toarray_struphy.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/test_tosparse_struphy.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/tests/xx_test_preconds.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/utilities.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/utilities_local_projectors.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/feec/variational_utilities.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/coil_fields/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/coil_fields/base.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/coil_fields/coil_fields.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/AUGNLED_g031213.00830.high +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/data/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/eqdsk/readeqdsk.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/output/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/output/vtk/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00000000.dat +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/CIRCTOK_State_0000_00001000.dat +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_01/parameter.ini +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000000.dat +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/W7X_State_0000_00000100.dat +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_02/parameter-w7x.ini +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00000000.dat +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/NEO-SPITZER_State_0000_00003307.dat +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/Neo-spitzer-mirror23-well-opt-1-AR10-1.nc +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/gvec/run_03/parameter-fig8.ini +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/mhd_equil/vmec/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/projected_equils.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/tests/test_desc_equil.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/tests/test_generic_equils.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/tests/test_mhd_equils.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/fields_background/tests/test_numerical_mhd_equil.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/evaluation_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/map_coef/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/mappings_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/tests/test_domain.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/transform_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/geometry/utilities_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/initial/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/initial/eigenfunctions.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/initial/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/initial/tests/test_init_perturbations.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/initial/utilities.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/io/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/io/setup.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kernel_arguments/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kernel_arguments/local_projectors_args_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kinetic_background/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kinetic_background/moment_functions.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/kinetic_background/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/linalg_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/linalg_kron.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/solver.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/stencil_dot_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/stencil_transpose_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/tests/test_saddle_point_propagator.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/tests/test_saddlepoint_massmatrices.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/tests/test_stencil_dot_kers.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/linear_algebra/tests/test_stencil_transpose_kers.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/scalars.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/default_params/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/default_params/test_models.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/test_examples.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/verification/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/tests/verification/test_verif_Maxwell.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/models/utils.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/ode/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/ode/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/ode/tests/test_ode_feec.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/particles/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/physics/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/physics/physics.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/accumulation/filter_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/pushing/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/pushing/pusher_utilities_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/sampling_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/sobol_seq.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/sorting_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/sph_smoothing_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/tests/test_mat_vec_filler.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/pic/utilities.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/polar/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/polar/basic.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/polar/extraction_operators.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/polar/linear_operators.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/polar/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/polar/tests/test_polar.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/cprofile_analyser.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/likwid/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/likwid/hardware_dicts.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/likwid/likwid_parser.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/likwid/maxplotlylib.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/likwid/plot_likwidproject.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/likwid/roofline_plotter.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/orbits/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/orbits/orbits_kernels.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/profile_struphy.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/post_processing/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/faraday_extended.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/magnetosonic_uniform.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/maxwell_weak_ampere.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/ohm_cold.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/shear_alfven_b1.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/shear_alfven_propagator.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/tests/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/time_dependent_source.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/two_fluid_quasi_neutral_full.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/propagators/variational_mag_field_evolve.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/simulation/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/simulation/base.py +0 -0
- {struphy-3.2.0/src/struphy/topology → struphy-3.3.0/src/struphy/simulation/tests}/__init__.py +0 -0
- {struphy-3.2.0/src/struphy/utils → struphy-3.3.0/src/struphy/topology}/__init__.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/topology/grids.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/utils/clone_config.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/utils/cupy_vs_numpy.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy/utils/test_clone_config.py +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy.egg-info/dependency_links.txt +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy.egg-info/entry_points.txt +0 -0
- {struphy-3.2.0 → struphy-3.3.0}/src/struphy.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: struphy
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.3.0
|
|
4
4
|
Summary: Multi-model plasma physics package
|
|
5
5
|
Author: Max Planck Institute for Plasma Physics
|
|
6
6
|
Author-email: stefan.possanner@ipp.mpg.de, max.lindqvist@ipp.mpg.de, eric.sonnendruecker@ipp.mpg.de
|
|
@@ -30,35 +30,35 @@ Classifier: Programming Language :: Python :: 3
|
|
|
30
30
|
Requires-Python: >=3.10
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
License-File: LICENSE
|
|
33
|
-
Requires-Dist: numpy<=2.
|
|
34
|
-
Requires-Dist: cunumpy<=0.1.1
|
|
33
|
+
Requires-Dist: numpy<=2.5.0
|
|
34
|
+
Requires-Dist: cunumpy<=0.1.5,>=0.1.4
|
|
35
35
|
Requires-Dist: pyccel<=2.2.3,>=2.2.0
|
|
36
|
-
Requires-Dist: feectools<=0.1.
|
|
37
|
-
Requires-Dist: scipy<=1.
|
|
36
|
+
Requires-Dist: feectools<=0.1.10,>=0.1.10
|
|
37
|
+
Requires-Dist: scipy<=1.18.0
|
|
38
38
|
Requires-Dist: h5py<=3.16.0
|
|
39
|
-
Requires-Dist: matplotlib<=3.
|
|
39
|
+
Requires-Dist: matplotlib<=3.11.0
|
|
40
40
|
Requires-Dist: pyyaml<=6.0.3
|
|
41
|
-
Requires-Dist: vtk<=9.
|
|
42
|
-
Requires-Dist: tqdm<=4.
|
|
43
|
-
Requires-Dist: argcomplete<=3.
|
|
41
|
+
Requires-Dist: vtk<=9.7.0
|
|
42
|
+
Requires-Dist: tqdm<=4.70.0
|
|
43
|
+
Requires-Dist: argcomplete<=3.7.0
|
|
44
44
|
Requires-Dist: ipywidgets<=8.1.8
|
|
45
|
-
Requires-Dist: plotly<=6.
|
|
45
|
+
Requires-Dist: plotly<=6.9.0
|
|
46
46
|
Requires-Dist: pyvista<=0.48.0
|
|
47
47
|
Requires-Dist: trame<=3.13.0
|
|
48
48
|
Requires-Dist: trame-vtk<=2.11.8
|
|
49
49
|
Requires-Dist: trame-vuetify<=3.2.2
|
|
50
50
|
Requires-Dist: nest_asyncio2<=1.7.2
|
|
51
|
-
Requires-Dist: vtk<=9.
|
|
52
|
-
Requires-Dist: pytest<=9.0
|
|
51
|
+
Requires-Dist: vtk<=9.7.0
|
|
52
|
+
Requires-Dist: pytest<=9.1.0
|
|
53
53
|
Requires-Dist: pytest-mpi<=0.6
|
|
54
54
|
Requires-Dist: pytest-testmon<=2.2.0
|
|
55
|
-
Requires-Dist: ruff<=0.
|
|
55
|
+
Requires-Dist: ruff<=0.16.0,==0.15.0
|
|
56
56
|
Requires-Dist: line_profiler<=5.0.2
|
|
57
|
-
Requires-Dist: scope-profiler<=0.
|
|
57
|
+
Requires-Dist: scope-profiler<=0.5.0,>=0.5.0
|
|
58
58
|
Provides-Extra: mpi
|
|
59
59
|
Requires-Dist: mpi4py<=4.1.1; extra == "mpi"
|
|
60
60
|
Provides-Extra: phys
|
|
61
|
-
Requires-Dist: gvec<=1.
|
|
61
|
+
Requires-Dist: gvec<=1.5.0,>=1.1.0; extra == "phys"
|
|
62
62
|
Requires-Dist: desc-opt<=0.17.1; extra == "phys"
|
|
63
63
|
Provides-Extra: dev
|
|
64
64
|
Requires-Dist: struphy[mpi]; extra == "dev"
|
|
@@ -75,6 +75,8 @@ Requires-Dist: tabulate; extra == "dev"
|
|
|
75
75
|
Requires-Dist: tomli-w; extra == "dev"
|
|
76
76
|
Requires-Dist: kaleido; extra == "dev"
|
|
77
77
|
Requires-Dist: pandas; extra == "dev"
|
|
78
|
+
Requires-Dist: scope-profiler[pproc]; extra == "dev"
|
|
79
|
+
Requires-Dist: slurm-script-generator>=0.3.6; extra == "dev"
|
|
78
80
|
Provides-Extra: doc
|
|
79
81
|
Requires-Dist: struphy[phys]; extra == "doc"
|
|
80
82
|
Requires-Dist: jupyter; extra == "doc"
|
|
@@ -92,6 +94,7 @@ Requires-Dist: m2r2; extra == "doc"
|
|
|
92
94
|
Requires-Dist: myst-parser; extra == "doc"
|
|
93
95
|
Requires-Dist: docutils; extra == "doc"
|
|
94
96
|
Requires-Dist: ipyparallel; extra == "doc"
|
|
97
|
+
Requires-Dist: scope-profiler[pproc]; extra == "doc"
|
|
95
98
|
Provides-Extra: likwid
|
|
96
99
|
Requires-Dist: struphy[dev]; extra == "likwid"
|
|
97
100
|
Requires-Dist: pylikwid; extra == "likwid"
|
|
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "struphy"
|
|
9
|
-
version = "3.
|
|
9
|
+
version = "3.3.0"
|
|
10
10
|
readme = "README.md"
|
|
11
11
|
requires-python = ">=3.10"
|
|
12
12
|
authors = [
|
|
@@ -23,31 +23,31 @@ classifiers = [
|
|
|
23
23
|
"Programming Language :: Python :: 3",
|
|
24
24
|
]
|
|
25
25
|
dependencies = [
|
|
26
|
-
"numpy<=2.
|
|
27
|
-
"cunumpy<=0.1.
|
|
26
|
+
"numpy<=2.5.0",
|
|
27
|
+
"cunumpy>=0.1.4, <=0.1.5",
|
|
28
28
|
"pyccel>=2.2.0, <=2.2.3",
|
|
29
|
-
"feectools<=0.1.
|
|
30
|
-
"scipy<=1.
|
|
29
|
+
"feectools >= 0.1.10, <=0.1.10",
|
|
30
|
+
"scipy<=1.18.0",
|
|
31
31
|
"h5py<=3.16.0",
|
|
32
|
-
"matplotlib<=3.
|
|
32
|
+
"matplotlib<=3.11.0",
|
|
33
33
|
"pyyaml<=6.0.3",
|
|
34
|
-
"vtk<=9.
|
|
35
|
-
"tqdm<=4.
|
|
36
|
-
"argcomplete<=3.
|
|
34
|
+
"vtk<=9.7.0",
|
|
35
|
+
"tqdm<=4.70.0",
|
|
36
|
+
"argcomplete<=3.7.0",
|
|
37
37
|
"ipywidgets<=8.1.8",
|
|
38
|
-
"plotly<=6.
|
|
38
|
+
"plotly<=6.9.0",
|
|
39
39
|
"pyvista<=0.48.0",
|
|
40
40
|
"trame<=3.13.0",
|
|
41
41
|
"trame-vtk<=2.11.8",
|
|
42
42
|
"trame-vuetify<=3.2.2",
|
|
43
43
|
"nest_asyncio2<=1.7.2",
|
|
44
|
-
"vtk<=9.
|
|
45
|
-
"pytest<=9.0
|
|
44
|
+
"vtk<=9.7.0",
|
|
45
|
+
"pytest<=9.1.0",
|
|
46
46
|
"pytest-mpi<=0.6",
|
|
47
47
|
"pytest-testmon<=2.2.0",
|
|
48
|
-
"ruff
|
|
48
|
+
"ruff==0.15.0, <=0.16.0",
|
|
49
49
|
"line_profiler<=5.0.2",
|
|
50
|
-
"scope-profiler>=0.
|
|
50
|
+
"scope-profiler >= 0.5.0, <=0.5.0",
|
|
51
51
|
]
|
|
52
52
|
|
|
53
53
|
[project.license]
|
|
@@ -58,7 +58,7 @@ mpi = [
|
|
|
58
58
|
"mpi4py<=4.1.1",
|
|
59
59
|
]
|
|
60
60
|
phys = [
|
|
61
|
-
"gvec>=1.1.0, <=1.
|
|
61
|
+
"gvec>=1.1.0, <=1.5.0",
|
|
62
62
|
"desc-opt<=0.17.1",
|
|
63
63
|
]
|
|
64
64
|
dev = [
|
|
@@ -76,6 +76,8 @@ dev = [
|
|
|
76
76
|
"tomli-w",
|
|
77
77
|
"kaleido",
|
|
78
78
|
"pandas",
|
|
79
|
+
"scope-profiler[pproc]",
|
|
80
|
+
"slurm-script-generator>=0.3.6",
|
|
79
81
|
]
|
|
80
82
|
doc = [
|
|
81
83
|
"struphy[phys]",
|
|
@@ -94,6 +96,7 @@ doc = [
|
|
|
94
96
|
"myst-parser",
|
|
95
97
|
"docutils",
|
|
96
98
|
"ipyparallel",
|
|
99
|
+
"scope-profiler[pproc]",
|
|
97
100
|
]
|
|
98
101
|
likwid = [
|
|
99
102
|
"struphy[dev]",
|
|
@@ -177,4 +180,5 @@ markers = [
|
|
|
177
180
|
"kinetic",
|
|
178
181
|
"hybrid",
|
|
179
182
|
"single",
|
|
183
|
+
"mpi_pic",
|
|
180
184
|
]
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
import atexit
|
|
3
3
|
import logging
|
|
4
4
|
import logging.config
|
|
5
|
+
import os
|
|
5
6
|
|
|
6
7
|
from feectools.ddm.mpi import mpi as MPI
|
|
7
8
|
|
|
9
|
+
from struphy.utils.mpi_launch import launched_under_mpi
|
|
10
|
+
|
|
8
11
|
|
|
9
12
|
class RankZeroFilter(logging.Filter):
|
|
10
13
|
def __init__(self, rank: int):
|
|
@@ -15,6 +18,13 @@ class RankZeroFilter(logging.Filter):
|
|
|
15
18
|
return self.rank == 0
|
|
16
19
|
|
|
17
20
|
|
|
21
|
+
class BelowWarningFilter(logging.Filter):
|
|
22
|
+
"""Let only DEBUG and INFO records pass (WARNING and above go to stderr)."""
|
|
23
|
+
|
|
24
|
+
def filter(self, record):
|
|
25
|
+
return record.levelno < logging.WARNING
|
|
26
|
+
|
|
27
|
+
|
|
18
28
|
# logger configuration
|
|
19
29
|
config = {
|
|
20
30
|
"version": 1,
|
|
@@ -26,7 +36,17 @@ config = {
|
|
|
26
36
|
"datefmt": "%Y-%m-%dT%H:%M:%S%z",
|
|
27
37
|
},
|
|
28
38
|
},
|
|
39
|
+
"filters": {
|
|
40
|
+
"below_warning": {"()": BelowWarningFilter},
|
|
41
|
+
},
|
|
29
42
|
"handlers": {
|
|
43
|
+
"stdout": {
|
|
44
|
+
"class": "logging.StreamHandler",
|
|
45
|
+
"level": "DEBUG",
|
|
46
|
+
"formatter": "simple",
|
|
47
|
+
"filters": ["below_warning"],
|
|
48
|
+
"stream": "ext://sys.stdout",
|
|
49
|
+
},
|
|
30
50
|
"stderr": {
|
|
31
51
|
"class": "logging.StreamHandler",
|
|
32
52
|
"level": "WARNING",
|
|
@@ -35,14 +55,18 @@ config = {
|
|
|
35
55
|
},
|
|
36
56
|
"file": {
|
|
37
57
|
"class": "logging.handlers.RotatingFileHandler",
|
|
38
|
-
"level": "
|
|
58
|
+
"level": "DEBUG",
|
|
39
59
|
"formatter": "detailed",
|
|
40
|
-
|
|
60
|
+
# Overridable via STRUPHY_LOG_FILE so processes sharing a cwd (e.g. several
|
|
61
|
+
# profiling jobs launched from the same case directory) don't rotate the
|
|
62
|
+
# same file concurrently -- RotatingFileHandler's rollover isn't safe across
|
|
63
|
+
# separate OS processes and races with FileNotFoundError when they collide.
|
|
64
|
+
"filename": os.environ.get("STRUPHY_LOG_FILE", "struphy.log"),
|
|
41
65
|
"maxBytes": 10000,
|
|
42
66
|
"backupCount": 3,
|
|
43
67
|
},
|
|
44
68
|
},
|
|
45
|
-
"loggers": {"struphy": {"level": "WARNING", "handlers": ["stderr", "file"]}},
|
|
69
|
+
"loggers": {"struphy": {"level": "WARNING", "handlers": ["stdout", "stderr", "file"]}},
|
|
46
70
|
}
|
|
47
71
|
|
|
48
72
|
|
|
@@ -55,11 +79,12 @@ def set_logging_level(level: int = logging.WARNING):
|
|
|
55
79
|
* logging.WARNING: for warnings about potential issues that do not stop the simulation.
|
|
56
80
|
* logging.ERROR: for errors that occur during the simulation, which may affect results but do not necessarily stop the simulation.
|
|
57
81
|
* logging.CRITICAL: for critical errors that likely cause the simulation to stop or produce invalid results.
|
|
82
|
+
|
|
83
|
+
Which handler a record ends up in is fixed by the configuration and not changed here:
|
|
84
|
+
DEBUG/INFO go to stdout, WARNING and above to stderr; records that pass the logger level are also written to the log file.
|
|
58
85
|
"""
|
|
59
86
|
logger = logging.getLogger("struphy")
|
|
60
87
|
logger.setLevel(level)
|
|
61
|
-
for handler in logger.handlers:
|
|
62
|
-
handler.setLevel(level)
|
|
63
88
|
|
|
64
89
|
logger.debug(
|
|
65
90
|
f"\nNew logger level: {logger.level}, effective: {logger.getEffectiveLevel()}, propagate: {logger.propagate}"
|
|
@@ -72,12 +97,24 @@ def setup_logging(logging_level: int = logging.WARNING):
|
|
|
72
97
|
"""Setup logging configuration for struphy."""
|
|
73
98
|
logger = logging.getLogger("struphy")
|
|
74
99
|
|
|
100
|
+
log_path = config["handlers"]["file"]["filename"]
|
|
101
|
+
os.makedirs(os.path.dirname(log_path) or ".", exist_ok=True)
|
|
102
|
+
|
|
75
103
|
logging.config.dictConfig(config)
|
|
76
104
|
|
|
77
105
|
set_logging_level(logging_level)
|
|
78
106
|
|
|
79
107
|
# Add RankZeroFilter to all handlers
|
|
80
|
-
|
|
108
|
+
# This helper function figures out whether
|
|
109
|
+
# the current process is launched with mpirun
|
|
110
|
+
# or not without importing mpi4py, which would initialize MPI
|
|
111
|
+
# and cause issues if imported prematurely.
|
|
112
|
+
# Instead, it checks for the presence of certain environment
|
|
113
|
+
# variables that are typically set by MPI launchers (like mpirun or mpiexec).
|
|
114
|
+
if not launched_under_mpi():
|
|
115
|
+
rank = 0
|
|
116
|
+
else:
|
|
117
|
+
rank = MPI.COMM_WORLD.Get_rank()
|
|
81
118
|
rank_filter = RankZeroFilter(rank)
|
|
82
119
|
|
|
83
120
|
# Apply filter to struphy logger handlers
|
|
@@ -103,9 +140,10 @@ def setup_logging(logging_level: int = logging.WARNING):
|
|
|
103
140
|
# Default logging setup
|
|
104
141
|
logger = logging.getLogger("struphy")
|
|
105
142
|
setup_logging(logging_level=logging.WARNING)
|
|
106
|
-
logger.info("Logging setup complete
|
|
143
|
+
logger.info(f"Logging setup complete, log-file at {config['handlers']['file']['filename']}")
|
|
107
144
|
|
|
108
145
|
# Import API components
|
|
146
|
+
from struphy.api.compiler import Compiler
|
|
109
147
|
from struphy.api.domains import domains
|
|
110
148
|
from struphy.api.equils import equils
|
|
111
149
|
from struphy.api.grids import grids
|
|
@@ -116,6 +154,7 @@ from struphy.api.options import (
|
|
|
116
154
|
DerhamOptions,
|
|
117
155
|
EnvironmentOptions,
|
|
118
156
|
FieldsBackground,
|
|
157
|
+
ProfilingOptions,
|
|
119
158
|
Time,
|
|
120
159
|
)
|
|
121
160
|
from struphy.api.particles import (
|
|
@@ -132,6 +171,7 @@ from struphy.api.post_processing import PlottingData, PostProcessor
|
|
|
132
171
|
from struphy.api.simulation import Simulation
|
|
133
172
|
|
|
134
173
|
__all__ = [
|
|
174
|
+
"Compiler",
|
|
135
175
|
"domains",
|
|
136
176
|
"equils",
|
|
137
177
|
"grids",
|
|
@@ -139,6 +179,7 @@ __all__ = [
|
|
|
139
179
|
"EnvironmentOptions",
|
|
140
180
|
"BaseUnits",
|
|
141
181
|
"Time",
|
|
182
|
+
"ProfilingOptions",
|
|
142
183
|
"perturbations",
|
|
143
184
|
"LoadingParameters",
|
|
144
185
|
"WeightsParameters",
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
from scope_profiler import ProfilingOptions
|
|
2
|
+
|
|
1
3
|
from struphy.io.options import (
|
|
2
4
|
BaseUnits,
|
|
3
5
|
DerhamOptions,
|
|
@@ -10,6 +12,7 @@ __all__ = [
|
|
|
10
12
|
"EnvironmentOptions",
|
|
11
13
|
"BaseUnits",
|
|
12
14
|
"Time",
|
|
15
|
+
"ProfilingOptions",
|
|
13
16
|
#
|
|
14
17
|
"DerhamOptions",
|
|
15
18
|
"FieldsBackground",
|
|
@@ -611,8 +611,8 @@ def make_knots(breaks, degree, periodic):
|
|
|
611
611
|
|
|
612
612
|
if periodic:
|
|
613
613
|
period = breaks[-1] - breaks[0]
|
|
614
|
-
T[0:p] = [xi - period for xi in breaks[-p - 1 : -1]]
|
|
615
|
-
T[-p:] = [xi + period for xi in breaks[1 : p + 1]]
|
|
614
|
+
T[0:p] = xp.asarray([xi - period for xi in breaks[-p - 1 : -1]])
|
|
615
|
+
T[-p:] = xp.asarray([xi + period for xi in breaks[1 : p + 1]])
|
|
616
616
|
else:
|
|
617
617
|
T[0:p] = breaks[0]
|
|
618
618
|
T[-p:] = breaks[-1]
|
|
@@ -10,8 +10,7 @@ struphy_path := $(shell $(PYTHON) -c "import struphy; print(struphy.__path__[0])
|
|
|
10
10
|
# Arguments to this script are:
|
|
11
11
|
STRUPHY_SOURCES := $(sources)
|
|
12
12
|
FLAGS := --libdir $(LIBDIR) $(flags) #--debug
|
|
13
|
-
|
|
14
|
-
FLAGS_openmp_mhd := $(flags_openmp_mhd)
|
|
13
|
+
FLAGS_openmp := $(flags_openmp)
|
|
15
14
|
|
|
16
15
|
#--------------------------------------
|
|
17
16
|
# SOURCE FILES
|
|
@@ -35,7 +34,7 @@ all: $(OUTPUTS)
|
|
|
35
34
|
@for dep in $^ ; do \
|
|
36
35
|
echo $$dep ; \
|
|
37
36
|
done
|
|
38
|
-
pyccel compile -v $(FLAGS) $(
|
|
37
|
+
pyccel compile -v $(FLAGS) $(FLAGS_openmp) $<
|
|
39
38
|
@echo ""
|
|
40
39
|
|
|
41
40
|
#--------------------------------------
|
|
@@ -1,16 +1,64 @@
|
|
|
1
1
|
import logging
|
|
2
|
+
import os
|
|
3
|
+
import sysconfig
|
|
2
4
|
|
|
3
5
|
from struphy.utils.utils import STRUPHY_LIBPATH, subp_run
|
|
4
6
|
|
|
5
7
|
logger = logging.getLogger("struphy")
|
|
8
|
+
from struphy import set_logging_level
|
|
9
|
+
|
|
10
|
+
set_logging_level(logging.WARNING)
|
|
11
|
+
so_suffix = sysconfig.get_config_var("EXT_SUFFIX")
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def count_compiled_kernels(state):
|
|
15
|
+
"""Count the number of compiled kernels in the state dictionary."""
|
|
16
|
+
count_c = 0
|
|
17
|
+
count_f90 = 0
|
|
18
|
+
list_not_compiled = [s for s in state["kernels"]]
|
|
19
|
+
for subdir, _, files in os.walk(STRUPHY_LIBPATH):
|
|
20
|
+
# logger.info(f'{subdir = }')
|
|
21
|
+
if subdir[-10:] == "__pyccel__" and "__epyccel__" not in subdir:
|
|
22
|
+
dir_stem = "/".join(subdir.split("/")[:-1])
|
|
23
|
+
# logger.info(f'{dir_stem = }')
|
|
24
|
+
for file in files:
|
|
25
|
+
if file[-2:] == ".c" and "wrapper" not in file and "bind_c_" not in file:
|
|
26
|
+
stem = file[:-2]
|
|
27
|
+
is_c = True
|
|
28
|
+
elif file[-4:] == ".f90" and "wrapper" not in file and "bind_c_" not in file:
|
|
29
|
+
stem = file[:-4]
|
|
30
|
+
is_c = False
|
|
31
|
+
else:
|
|
32
|
+
continue
|
|
33
|
+
|
|
34
|
+
py_file = stem + ".py"
|
|
35
|
+
matches = [ker for ker in state["kernels"] if py_file in ker and dir_stem in ker]
|
|
36
|
+
# logger.info(f'{matches = }')
|
|
37
|
+
matching = None
|
|
38
|
+
for match in matches:
|
|
39
|
+
py_ker = match.split("/")[-1]
|
|
40
|
+
if py_ker == py_file:
|
|
41
|
+
matching = match
|
|
42
|
+
if matching is None:
|
|
43
|
+
continue
|
|
44
|
+
matching_so = matching.replace(".py", so_suffix)
|
|
45
|
+
# logger.info(f'{matching_so = }')
|
|
46
|
+
if os.path.isfile(matching_so):
|
|
47
|
+
if is_c and state["last_used_language"] == "c":
|
|
48
|
+
count_c += 1
|
|
49
|
+
elif not is_c and state["last_used_language"] == "fortran":
|
|
50
|
+
count_f90 += 1
|
|
51
|
+
if matching in list_not_compiled:
|
|
52
|
+
list_not_compiled.remove(matching)
|
|
53
|
+
|
|
54
|
+
return count_c, count_f90, list_not_compiled
|
|
6
55
|
|
|
7
56
|
|
|
8
57
|
def struphy_compile(
|
|
9
58
|
language,
|
|
10
59
|
compiler,
|
|
11
60
|
compiler_config,
|
|
12
|
-
|
|
13
|
-
omp_feec,
|
|
61
|
+
openmp,
|
|
14
62
|
delete,
|
|
15
63
|
status,
|
|
16
64
|
verbose,
|
|
@@ -32,11 +80,8 @@ def struphy_compile(
|
|
|
32
80
|
compiler_config : str
|
|
33
81
|
Path to a JSON compiler file.
|
|
34
82
|
|
|
35
|
-
|
|
36
|
-
Whether to compile
|
|
37
|
-
|
|
38
|
-
omp_feec : bool
|
|
39
|
-
WHether to compile FEEC kernels with OpenMP (default=False).
|
|
83
|
+
openmp : bool
|
|
84
|
+
Whether to compile all kernels with OpenMP (default=False).
|
|
40
85
|
|
|
41
86
|
delete : bool
|
|
42
87
|
If True, deletes generated Fortran/C files and .so files (default=False).
|
|
@@ -59,9 +104,7 @@ def struphy_compile(
|
|
|
59
104
|
|
|
60
105
|
import importlib.metadata
|
|
61
106
|
import importlib.util
|
|
62
|
-
import os
|
|
63
107
|
import re
|
|
64
|
-
import sysconfig
|
|
65
108
|
|
|
66
109
|
import pyccel
|
|
67
110
|
|
|
@@ -83,23 +126,27 @@ def struphy_compile(
|
|
|
83
126
|
|
|
84
127
|
# collect kernels
|
|
85
128
|
if "kernels" not in state:
|
|
86
|
-
|
|
129
|
+
tmp = []
|
|
87
130
|
for subdir, dirs, files in os.walk(libpath):
|
|
131
|
+
logger.debug(f"\n{subdir = }")
|
|
88
132
|
for file in files:
|
|
133
|
+
logger.debug(f"{file = }")
|
|
89
134
|
if (
|
|
90
135
|
"kernels" in file
|
|
91
136
|
and ".py" in file
|
|
92
137
|
and "_tmp.py" not in file
|
|
93
138
|
and "test" not in file
|
|
94
139
|
and "__pycache__" not in subdir
|
|
140
|
+
and "__pyccel__" not in subdir
|
|
95
141
|
):
|
|
96
|
-
|
|
142
|
+
tmp += [os.path.join(subdir, file)]
|
|
143
|
+
|
|
144
|
+
state["kernels"] = sorted(tmp)
|
|
97
145
|
|
|
98
146
|
# set initial compiler infos to None
|
|
99
147
|
state["last_used_language"] = None
|
|
100
148
|
state["last_used_compiler"] = None
|
|
101
|
-
state["
|
|
102
|
-
state["last_used_omp_feec"] = None
|
|
149
|
+
state["last_used_omp"] = None
|
|
103
150
|
|
|
104
151
|
utils.save_state(state)
|
|
105
152
|
# source files
|
|
@@ -108,7 +155,7 @@ def struphy_compile(
|
|
|
108
155
|
# actions
|
|
109
156
|
if delete:
|
|
110
157
|
# (change dir not to be in source path)
|
|
111
|
-
|
|
158
|
+
print("\nDeleting .f90/.c and .so files ...")
|
|
112
159
|
# TODO: for using pyccel clean in the future
|
|
113
160
|
# cmd = [
|
|
114
161
|
# "pyccel",
|
|
@@ -122,72 +169,37 @@ def struphy_compile(
|
|
|
122
169
|
"sources=" + sources,
|
|
123
170
|
]
|
|
124
171
|
subp_run(cmd)
|
|
125
|
-
|
|
172
|
+
print("Done.")
|
|
126
173
|
|
|
127
|
-
|
|
174
|
+
print("\nDeleting psydac kernels ...")
|
|
128
175
|
cmd = [
|
|
129
176
|
"psydac-accelerate",
|
|
130
177
|
"--cleanup",
|
|
131
178
|
]
|
|
132
179
|
subp_run(cmd)
|
|
133
|
-
|
|
180
|
+
print("Done.")
|
|
134
181
|
|
|
135
|
-
|
|
182
|
+
print("\nDeleting state.yml ...")
|
|
136
183
|
os.remove(os.path.join(libpath, "state.yml"))
|
|
137
|
-
|
|
184
|
+
print("Done.")
|
|
138
185
|
|
|
139
186
|
elif status:
|
|
140
187
|
# update status
|
|
141
|
-
count_c =
|
|
142
|
-
count_f90 = 0
|
|
143
|
-
list_not_compiled = [s for s in state["kernels"]]
|
|
144
|
-
for subdir, _, files in os.walk(libpath):
|
|
145
|
-
# logger.info(f'{subdir = }')
|
|
146
|
-
if subdir[-10:] == "__pyccel__" and "__epyccel__" not in subdir:
|
|
147
|
-
dir_stem = "/".join(subdir.split("/")[:-1])
|
|
148
|
-
# logger.info(f'{dir_stem = }')
|
|
149
|
-
for file in files:
|
|
150
|
-
if file[-2:] == ".c" and "wrapper" not in file and "bind_c_" not in file:
|
|
151
|
-
stem = file[:-2]
|
|
152
|
-
is_c = True
|
|
153
|
-
elif file[-4:] == ".f90" and "wrapper" not in file and "bind_c_" not in file:
|
|
154
|
-
stem = file[:-4]
|
|
155
|
-
is_c = False
|
|
156
|
-
else:
|
|
157
|
-
continue
|
|
158
|
-
|
|
159
|
-
py_file = stem + ".py"
|
|
160
|
-
matches = [ker for ker in state["kernels"] if py_file in ker and dir_stem in ker]
|
|
161
|
-
# logger.info(f'{matches = }')
|
|
162
|
-
matching = None
|
|
163
|
-
for match in matches:
|
|
164
|
-
py_ker = match.split("/")[-1]
|
|
165
|
-
if py_ker == py_file:
|
|
166
|
-
matching = match
|
|
167
|
-
matching_so = matching.replace(".py", so_suffix)
|
|
168
|
-
# logger.info(f'{matching_so = }')
|
|
169
|
-
if os.path.isfile(matching_so):
|
|
170
|
-
if is_c and state["last_used_language"] == "c":
|
|
171
|
-
count_c += 1
|
|
172
|
-
elif not is_c and state["last_used_language"] == "fortran":
|
|
173
|
-
count_f90 += 1
|
|
174
|
-
if matching in list_not_compiled:
|
|
175
|
-
list_not_compiled.remove(matching)
|
|
176
|
-
|
|
188
|
+
count_c, count_f90, list_not_compiled = count_compiled_kernels(state)
|
|
177
189
|
n_kernels = len(state["kernels"])
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
190
|
+
print("")
|
|
191
|
+
print(f"{count_c} of {n_kernels} Struphy kernels are compiled with language C.")
|
|
192
|
+
print(
|
|
181
193
|
f"{count_f90} of {n_kernels} Struphy kernels are compiled with language Fortran.",
|
|
182
194
|
)
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
f"\ncompiler={state['last_used_compiler']}\
|
|
195
|
+
print(f"{n_kernels - count_c - count_f90} of {n_kernels} Struphy kernels are not compiled (pure Python).")
|
|
196
|
+
print(
|
|
197
|
+
f"\ncompiler={state['last_used_compiler']}\nflags_omp={state.get('last_used_omp')}",
|
|
186
198
|
)
|
|
187
199
|
if len(list_not_compiled) > 0:
|
|
188
|
-
|
|
200
|
+
print("\nPure Python kernels (not compiled) are:")
|
|
189
201
|
for ker in list_not_compiled:
|
|
190
|
-
|
|
202
|
+
print(ker)
|
|
191
203
|
|
|
192
204
|
state["kernels_n"] = n_kernels
|
|
193
205
|
state["compiled_in_c"] = count_c
|
|
@@ -198,23 +210,20 @@ def struphy_compile(
|
|
|
198
210
|
utils.save_state(state)
|
|
199
211
|
|
|
200
212
|
elif dependencies:
|
|
201
|
-
|
|
213
|
+
print("\nAuto-detect dependencies ...")
|
|
202
214
|
for ker in state["kernels"]:
|
|
203
215
|
deps = depmod.get_dependencies(ker.replace(".py", so_suffix))
|
|
204
216
|
deps_li = deps.split(" ")
|
|
205
|
-
|
|
206
|
-
|
|
217
|
+
print("-" * 28)
|
|
218
|
+
print(f"{ker =}")
|
|
207
219
|
for dep in deps_li:
|
|
208
|
-
|
|
220
|
+
print(f"{dep =}")
|
|
209
221
|
|
|
210
222
|
else:
|
|
211
223
|
# struphy and psydac (change dir not to be in source path)
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
flag_omp_pic = " --openmp"
|
|
216
|
-
if omp_feec:
|
|
217
|
-
flag_omp_feec = " --openmp"
|
|
224
|
+
flag_omp = ""
|
|
225
|
+
if openmp:
|
|
226
|
+
flag_omp = " --openmp"
|
|
218
227
|
|
|
219
228
|
# pyccel flags
|
|
220
229
|
flags = "--language=" + language
|
|
@@ -248,15 +257,14 @@ def struphy_compile(
|
|
|
248
257
|
|
|
249
258
|
state["last_used_language"] = language
|
|
250
259
|
state["last_used_compiler"] = compiler
|
|
251
|
-
state["
|
|
252
|
-
state["last_used_omp_feec"] = flag_omp_feec
|
|
260
|
+
state["last_used_omp"] = flag_omp
|
|
253
261
|
|
|
254
262
|
utils.save_state(state)
|
|
255
263
|
|
|
256
264
|
# Compile psydac kernels, note that this is a special function call in psydac-for-struphy.
|
|
257
265
|
# Otherwise, psydac only allows for recompiling the kernels when installed in editable mode.
|
|
258
266
|
|
|
259
|
-
|
|
267
|
+
print("\nCompiling Psydac kernels ...")
|
|
260
268
|
cmd = [
|
|
261
269
|
"psydac-accelerate",
|
|
262
270
|
"--language=" + language,
|
|
@@ -278,7 +286,7 @@ def struphy_compile(
|
|
|
278
286
|
flags += " --verbose"
|
|
279
287
|
|
|
280
288
|
# compilation
|
|
281
|
-
|
|
289
|
+
print("\nCompiling Struphy kernels ...")
|
|
282
290
|
kernel_file = os.path.join(libpath, "kernels.txt")
|
|
283
291
|
# TODO: for using pyccel make in the future
|
|
284
292
|
# cmd = [
|
|
@@ -294,11 +302,10 @@ def struphy_compile(
|
|
|
294
302
|
"compile_struphy.mk",
|
|
295
303
|
"sources=" + sources,
|
|
296
304
|
"flags=" + flags,
|
|
297
|
-
"
|
|
298
|
-
"flags_openmp_mhd=" + flag_omp_feec,
|
|
305
|
+
"flags_openmp=" + flag_omp,
|
|
299
306
|
]
|
|
300
307
|
subp_run(cmd)
|
|
301
|
-
|
|
308
|
+
print("Done.")
|
|
302
309
|
|
|
303
310
|
cmd = [
|
|
304
311
|
"struphy",
|