linstabpy 1.0.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.
Files changed (213) hide show
  1. linstabpy-1.0.0/CITATION.cff +61 -0
  2. linstabpy-1.0.0/LICENSE +674 -0
  3. linstabpy-1.0.0/MANIFEST.in +2 -0
  4. linstabpy-1.0.0/NOTICE +53 -0
  5. linstabpy-1.0.0/PKG-INFO +1071 -0
  6. linstabpy-1.0.0/README.md +1032 -0
  7. linstabpy-1.0.0/pyproject.toml +146 -0
  8. linstabpy-1.0.0/setup.cfg +4 -0
  9. linstabpy-1.0.0/src/linstabpy/__init__.py +83 -0
  10. linstabpy-1.0.0/src/linstabpy/baseflow/__init__.py +8 -0
  11. linstabpy-1.0.0/src/linstabpy/baseflow/baseflow.py +58 -0
  12. linstabpy-1.0.0/src/linstabpy/baseflow/grid_fields.py +146 -0
  13. linstabpy-1.0.0/src/linstabpy/baseflow/preprocess.py +250 -0
  14. linstabpy-1.0.0/src/linstabpy/baseflow/shock_cleanup.py +465 -0
  15. linstabpy-1.0.0/src/linstabpy/baseflow/sponge.py +443 -0
  16. linstabpy-1.0.0/src/linstabpy/baseflow/viscosity.py +66 -0
  17. linstabpy-1.0.0/src/linstabpy/boundary_conditions/__init__.py +44 -0
  18. linstabpy-1.0.0/src/linstabpy/boundary_conditions/dirichlet.py +436 -0
  19. linstabpy-1.0.0/src/linstabpy/boundary_conditions/neumann.py +349 -0
  20. linstabpy-1.0.0/src/linstabpy/boundary_conditions/recipe.py +543 -0
  21. linstabpy-1.0.0/src/linstabpy/config/__init__.py +29 -0
  22. linstabpy-1.0.0/src/linstabpy/config/defaults.py +89 -0
  23. linstabpy-1.0.0/src/linstabpy/config/env_registry.py +261 -0
  24. linstabpy-1.0.0/src/linstabpy/config/schema.py +341 -0
  25. linstabpy-1.0.0/src/linstabpy/config/typed.py +668 -0
  26. linstabpy-1.0.0/src/linstabpy/driver/__init__.py +14 -0
  27. linstabpy-1.0.0/src/linstabpy/driver/cli.py +242 -0
  28. linstabpy-1.0.0/src/linstabpy/driver/io.py +111 -0
  29. linstabpy-1.0.0/src/linstabpy/driver/payload.py +120 -0
  30. linstabpy-1.0.0/src/linstabpy/driver/preflight.py +625 -0
  31. linstabpy-1.0.0/src/linstabpy/driver/run.py +1826 -0
  32. linstabpy-1.0.0/src/linstabpy/linalg/__init__.py +40 -0
  33. linstabpy-1.0.0/src/linstabpy/linalg/backends.py +641 -0
  34. linstabpy-1.0.0/src/linstabpy/linalg/cudss_factor.py +426 -0
  35. linstabpy-1.0.0/src/linstabpy/linalg/factorize.py +1115 -0
  36. linstabpy-1.0.0/src/linstabpy/linalg/shifted.py +62 -0
  37. linstabpy-1.0.0/src/linstabpy/mesh/__init__.py +44 -0
  38. linstabpy-1.0.0/src/linstabpy/mesh/fdweights.py +38 -0
  39. linstabpy-1.0.0/src/linstabpy/mesh/filters.py +489 -0
  40. linstabpy-1.0.0/src/linstabpy/mesh/mesh.py +1859 -0
  41. linstabpy-1.0.0/src/linstabpy/mesh/sbp.py +951 -0
  42. linstabpy-1.0.0/src/linstabpy/mesh/sbp_generator.py +438 -0
  43. linstabpy-1.0.0/src/linstabpy/metrics_schema.py +151 -0
  44. linstabpy-1.0.0/src/linstabpy/mumps_options.py +14 -0
  45. linstabpy-1.0.0/src/linstabpy/operators/__init__.py +20 -0
  46. linstabpy-1.0.0/src/linstabpy/operators/assembly.py +1988 -0
  47. linstabpy-1.0.0/src/linstabpy/operators/coefficients.py +1831 -0
  48. linstabpy-1.0.0/src/linstabpy/operators/energy_norm.py +92 -0
  49. linstabpy-1.0.0/src/linstabpy/operators/metrics.py +297 -0
  50. linstabpy-1.0.0/src/linstabpy/operators/spatial.py +293 -0
  51. linstabpy-1.0.0/src/linstabpy/resolvent/__init__.py +29 -0
  52. linstabpy-1.0.0/src/linstabpy/resolvent/analysis.py +513 -0
  53. linstabpy-1.0.0/src/linstabpy/resolvent/conservative_forcing.py +341 -0
  54. linstabpy-1.0.0/src/linstabpy/resolvent/gain.py +205 -0
  55. linstabpy-1.0.0/src/linstabpy/resolvent/operator.py +128 -0
  56. linstabpy-1.0.0/src/linstabpy/solvers/__init__.py +31 -0
  57. linstabpy-1.0.0/src/linstabpy/solvers/_eps_helpers.py +142 -0
  58. linstabpy-1.0.0/src/linstabpy/solvers/eigenvalue.py +757 -0
  59. linstabpy-1.0.0/src/linstabpy/solvers/petsc_utils.py +20 -0
  60. linstabpy-1.0.0/src/linstabpy/solvers/router/__init__.py +79 -0
  61. linstabpy-1.0.0/src/linstabpy/solvers/router/anchors.py +363 -0
  62. linstabpy-1.0.0/src/linstabpy/solvers/router/band_marking.py +306 -0
  63. linstabpy-1.0.0/src/linstabpy/solvers/router/break_even.py +277 -0
  64. linstabpy-1.0.0/src/linstabpy/solvers/router/certification.py +411 -0
  65. linstabpy-1.0.0/src/linstabpy/solvers/router/map_record.py +174 -0
  66. linstabpy-1.0.0/src/linstabpy/solvers/router/map_walk.py +621 -0
  67. linstabpy-1.0.0/src/linstabpy/solvers/router/ram_autoselect.py +435 -0
  68. linstabpy-1.0.0/src/linstabpy/solvers/router/recycling.py +346 -0
  69. linstabpy-1.0.0/src/linstabpy/solvers/router/resolvent_map.py +1690 -0
  70. linstabpy-1.0.0/src/linstabpy/solvers/router/stable_sweep.py +1183 -0
  71. linstabpy-1.0.0/src/linstabpy/solvers/spatial_eig.py +218 -0
  72. linstabpy-1.0.0/src/linstabpy/stability/__init__.py +38 -0
  73. linstabpy-1.0.0/src/linstabpy/stability/_eigenvalues.py +831 -0
  74. linstabpy-1.0.0/src/linstabpy/stability/acceptance.py +303 -0
  75. linstabpy-1.0.0/src/linstabpy/stability/sensitivity.py +216 -0
  76. linstabpy-1.0.0/src/linstabpy/utils/__init__.py +10 -0
  77. linstabpy-1.0.0/src/linstabpy/utils/_solver_cfg.py +169 -0
  78. linstabpy-1.0.0/src/linstabpy/utils/cost_metrics.py +147 -0
  79. linstabpy-1.0.0/src/linstabpy/utils/floquet.py +71 -0
  80. linstabpy-1.0.0/src/linstabpy/utils/petsc_core.py +912 -0
  81. linstabpy-1.0.0/src/linstabpy/utils/petsc_init.py +120 -0
  82. linstabpy-1.0.0/src/linstabpy/utils/provenance.py +216 -0
  83. linstabpy-1.0.0/src/linstabpy/utils/yaml_io.py +65 -0
  84. linstabpy-1.0.0/src/linstabpy.egg-info/PKG-INFO +1071 -0
  85. linstabpy-1.0.0/src/linstabpy.egg-info/SOURCES.txt +211 -0
  86. linstabpy-1.0.0/src/linstabpy.egg-info/dependency_links.txt +1 -0
  87. linstabpy-1.0.0/src/linstabpy.egg-info/entry_points.txt +2 -0
  88. linstabpy-1.0.0/src/linstabpy.egg-info/requires.txt +15 -0
  89. linstabpy-1.0.0/src/linstabpy.egg-info/top_level.txt +1 -0
  90. linstabpy-1.0.0/tests/test_adaptive_anchors.py +237 -0
  91. linstabpy-1.0.0/tests/test_analytical.py +474 -0
  92. linstabpy-1.0.0/tests/test_assembly_axy_distributed_raises.py +86 -0
  93. linstabpy-1.0.0/tests/test_assembly_block_oracle.py +140 -0
  94. linstabpy-1.0.0/tests/test_assembly_dedup.py +71 -0
  95. linstabpy-1.0.0/tests/test_assembly_dissipation.py +273 -0
  96. linstabpy-1.0.0/tests/test_assembly_metrics_diff_tool.py +103 -0
  97. linstabpy-1.0.0/tests/test_assembly_parity_tool.py +124 -0
  98. linstabpy-1.0.0/tests/test_assembly_perf.py +100 -0
  99. linstabpy-1.0.0/tests/test_backend_probe.py +250 -0
  100. linstabpy-1.0.0/tests/test_band_marking.py +213 -0
  101. linstabpy-1.0.0/tests/test_baseflow.py +187 -0
  102. linstabpy-1.0.0/tests/test_boundary_conditions.py +1228 -0
  103. linstabpy-1.0.0/tests/test_boundary_conditions_oracle.py +105 -0
  104. linstabpy-1.0.0/tests/test_break_even.py +216 -0
  105. linstabpy-1.0.0/tests/test_case_fields.py +461 -0
  106. linstabpy-1.0.0/tests/test_certification_gate.py +261 -0
  107. linstabpy-1.0.0/tests/test_coefficients.py +103 -0
  108. linstabpy-1.0.0/tests/test_compressed_anchors.py +205 -0
  109. linstabpy-1.0.0/tests/test_config.py +1062 -0
  110. linstabpy-1.0.0/tests/test_config_load.py +47 -0
  111. linstabpy-1.0.0/tests/test_config_schema.py +312 -0
  112. linstabpy-1.0.0/tests/test_console_script.py +12 -0
  113. linstabpy-1.0.0/tests/test_cost_metrics.py +210 -0
  114. linstabpy-1.0.0/tests/test_cudss_backend.py +290 -0
  115. linstabpy-1.0.0/tests/test_deny_list_math_frozen.py +230 -0
  116. linstabpy-1.0.0/tests/test_dissipation_one_block.py +81 -0
  117. linstabpy-1.0.0/tests/test_driver_cli.py +505 -0
  118. linstabpy-1.0.0/tests/test_driver_heartbeat.py +50 -0
  119. linstabpy-1.0.0/tests/test_driver_io.py +182 -0
  120. linstabpy-1.0.0/tests/test_driver_raw_eigs.py +64 -0
  121. linstabpy-1.0.0/tests/test_driver_resolvent_region.py +249 -0
  122. linstabpy-1.0.0/tests/test_dual_factor_adjoint.py +357 -0
  123. linstabpy-1.0.0/tests/test_energy_norm_oracle.py +135 -0
  124. linstabpy-1.0.0/tests/test_env_registry.py +168 -0
  125. linstabpy-1.0.0/tests/test_environment_yml.py +117 -0
  126. linstabpy-1.0.0/tests/test_evp_growthrate_sign.py +195 -0
  127. linstabpy-1.0.0/tests/test_example_dmudt_flag.py +39 -0
  128. linstabpy-1.0.0/tests/test_example_runner_selectors.py +90 -0
  129. linstabpy-1.0.0/tests/test_factor_backends.py +1522 -0
  130. linstabpy-1.0.0/tests/test_factor_solve_block_mpi.py +61 -0
  131. linstabpy-1.0.0/tests/test_figure_style.py +70 -0
  132. linstabpy-1.0.0/tests/test_filters.py +235 -0
  133. linstabpy-1.0.0/tests/test_flatplate_sawtooth_clean.py +75 -0
  134. linstabpy-1.0.0/tests/test_floquet_spatial_shift.py +184 -0
  135. linstabpy-1.0.0/tests/test_forcing_norm_selection.py +192 -0
  136. linstabpy-1.0.0/tests/test_forcing_response_mats_loud_fail.py +28 -0
  137. linstabpy-1.0.0/tests/test_gpu_backend_comparison.py +226 -0
  138. linstabpy-1.0.0/tests/test_grid_fields.py +183 -0
  139. linstabpy-1.0.0/tests/test_input_validation.py +207 -0
  140. linstabpy-1.0.0/tests/test_install_isolation.py +230 -0
  141. linstabpy-1.0.0/tests/test_integration.py +240 -0
  142. linstabpy-1.0.0/tests/test_lnse_equivalence_harness.py +190 -0
  143. linstabpy-1.0.0/tests/test_lnse_verification.py +1394 -0
  144. linstabpy-1.0.0/tests/test_map_record.py +71 -0
  145. linstabpy-1.0.0/tests/test_map_walk.py +376 -0
  146. linstabpy-1.0.0/tests/test_map_walk_mpi.py +121 -0
  147. linstabpy-1.0.0/tests/test_mark_unstable_band.py +215 -0
  148. linstabpy-1.0.0/tests/test_martini_example_layout.py +61 -0
  149. linstabpy-1.0.0/tests/test_martini_hdf5_extract.py +39 -0
  150. linstabpy-1.0.0/tests/test_martini_parity_compare.py +678 -0
  151. linstabpy-1.0.0/tests/test_matlab_source_parity.py +56 -0
  152. linstabpy-1.0.0/tests/test_mesh.py +1423 -0
  153. linstabpy-1.0.0/tests/test_mesh_dissipation.py +237 -0
  154. linstabpy-1.0.0/tests/test_mesh_utilities.py +68 -0
  155. linstabpy-1.0.0/tests/test_metamorphic.py +359 -0
  156. linstabpy-1.0.0/tests/test_metrics_schema.py +146 -0
  157. linstabpy-1.0.0/tests/test_mpi_collective_lint.py +200 -0
  158. linstabpy-1.0.0/tests/test_mpi_thread_level.py +188 -0
  159. linstabpy-1.0.0/tests/test_mumps_blr_ordering_parity.py +313 -0
  160. linstabpy-1.0.0/tests/test_mumps_parity_baseline.py +129 -0
  161. linstabpy-1.0.0/tests/test_neumann_oracle.py +190 -0
  162. linstabpy-1.0.0/tests/test_numerics.py +497 -0
  163. linstabpy-1.0.0/tests/test_operators.py +2561 -0
  164. linstabpy-1.0.0/tests/test_parity_vs_mumps.py +448 -0
  165. linstabpy-1.0.0/tests/test_payload.py +125 -0
  166. linstabpy-1.0.0/tests/test_petsc_vec_mpi.py +77 -0
  167. linstabpy-1.0.0/tests/test_planar_limit_coefficients.py +213 -0
  168. linstabpy-1.0.0/tests/test_preflight.py +582 -0
  169. linstabpy-1.0.0/tests/test_provenance.py +238 -0
  170. linstabpy-1.0.0/tests/test_public_provenance_checker.py +73 -0
  171. linstabpy-1.0.0/tests/test_ram_autoselect.py +213 -0
  172. linstabpy-1.0.0/tests/test_recycling.py +337 -0
  173. linstabpy-1.0.0/tests/test_refactorize_fast_path.py +77 -0
  174. linstabpy-1.0.0/tests/test_refactorize_mpi_guard.py +129 -0
  175. linstabpy-1.0.0/tests/test_resolvent_analysis_flag.py +41 -0
  176. linstabpy-1.0.0/tests/test_resolvent_conservative_forcing.py +570 -0
  177. linstabpy-1.0.0/tests/test_resolvent_discount.py +208 -0
  178. linstabpy-1.0.0/tests/test_resolvent_map_amortized_parity.py +162 -0
  179. linstabpy-1.0.0/tests/test_resolvent_map_regime_b.py +226 -0
  180. linstabpy-1.0.0/tests/test_resolvent_map_store_mpi.py +51 -0
  181. linstabpy-1.0.0/tests/test_resolvent_operator.py +115 -0
  182. linstabpy-1.0.0/tests/test_resolvent_sign_convention.py +128 -0
  183. linstabpy-1.0.0/tests/test_resolvent_sign_effect.py +85 -0
  184. linstabpy-1.0.0/tests/test_resolvent_sign_oracle.py +162 -0
  185. linstabpy-1.0.0/tests/test_results_alpha_filter.py +133 -0
  186. linstabpy-1.0.0/tests/test_router_e2e.py +189 -0
  187. linstabpy-1.0.0/tests/test_router_entry.py +625 -0
  188. linstabpy-1.0.0/tests/test_runtime_dissipation.py +475 -0
  189. linstabpy-1.0.0/tests/test_savarino_line_campaign.py +241 -0
  190. linstabpy-1.0.0/tests/test_savarino_mapwalk.py +228 -0
  191. linstabpy-1.0.0/tests/test_sawtooth_field.py +20 -0
  192. linstabpy-1.0.0/tests/test_sbp_dissipation.py +258 -0
  193. linstabpy-1.0.0/tests/test_sbp_generator.py +249 -0
  194. linstabpy-1.0.0/tests/test_sensitivity.py +191 -0
  195. linstabpy-1.0.0/tests/test_sensitivity_inputs.py +133 -0
  196. linstabpy-1.0.0/tests/test_shock_cleanup.py +387 -0
  197. linstabpy-1.0.0/tests/test_solver_config.py +371 -0
  198. linstabpy-1.0.0/tests/test_solvers.py +1513 -0
  199. linstabpy-1.0.0/tests/test_solvers_inexact.py +224 -0
  200. linstabpy-1.0.0/tests/test_song2023_validation.py +157 -0
  201. linstabpy-1.0.0/tests/test_song_integration.py +165 -0
  202. linstabpy-1.0.0/tests/test_song_parametric_parity.py +219 -0
  203. linstabpy-1.0.0/tests/test_song_reference_baseflow.py +36 -0
  204. linstabpy-1.0.0/tests/test_sponge.py +398 -0
  205. linstabpy-1.0.0/tests/test_st_sub_pc_applied.py +114 -0
  206. linstabpy-1.0.0/tests/test_stability_acceptance.py +236 -0
  207. linstabpy-1.0.0/tests/test_stable_sweep.py +178 -0
  208. linstabpy-1.0.0/tests/test_symbolic_equation_parity.py +1191 -0
  209. linstabpy-1.0.0/tests/test_symbolic_multirhs.py +200 -0
  210. linstabpy-1.0.0/tests/test_tracked_file_size.py +64 -0
  211. linstabpy-1.0.0/tests/test_utils.py +417 -0
  212. linstabpy-1.0.0/tests/test_version_consistency.py +63 -0
  213. linstabpy-1.0.0/tests/test_viscosity.py +122 -0
@@ -0,0 +1,61 @@
1
+ cff-version: 1.2.0
2
+ title: linstabpy
3
+ message: >-
4
+ If you use linstabpy in published work, please cite the LinStabPy
5
+ paper (Hamada et al., under revision) as the preferred citation,
6
+ together with the LinStab2D methodology paper (Martini & Schmidt
7
+ 2024) listed under references.
8
+ type: software
9
+ authors:
10
+ - given-names: Gabriel Y. R.
11
+ family-names: Hamada
12
+ - given-names: William R.
13
+ family-names: Wolf
14
+ - given-names: Carlos
15
+ family-names: Junqueira-Junior
16
+ - given-names: Jean-Christophe
17
+ family-names: Robinet
18
+ - given-names: Ricardo A. S.
19
+ family-names: Frantz
20
+ repository-code: 'https://github.com/openfluids/linstabpy'
21
+ url: 'https://github.com/openfluids/linstabpy'
22
+ license: GPL-3.0-only
23
+ version: 1.0.0
24
+ date-released: '2026-10-30'
25
+ # There is no software DOI: the public repository is the archive.
26
+ preferred-citation:
27
+ type: article
28
+ title: >-
29
+ LinStabPy: an efficient Python framework for compressible
30
+ stability and resolvent analysis
31
+ authors:
32
+ - given-names: Gabriel Y. R.
33
+ family-names: Hamada
34
+ - given-names: William R.
35
+ family-names: Wolf
36
+ - given-names: Carlos
37
+ family-names: Junqueira-Junior
38
+ - given-names: Jean-Christophe
39
+ family-names: Robinet
40
+ - given-names: Ricardo A. S.
41
+ family-names: Frantz
42
+ journal: Theoretical and Computational Fluid Dynamics
43
+ year: 2026
44
+ notes: Under revision.
45
+ references:
46
+ - type: article
47
+ title: >-
48
+ LinStab2D: stability and resolvent analysis of compressible
49
+ viscous flows in MATLAB
50
+ authors:
51
+ - given-names: Eduardo
52
+ family-names: Martini
53
+ - given-names: Oliver T.
54
+ family-names: Schmidt
55
+ journal: Theoretical and Computational Fluid Dynamics
56
+ year: 2024
57
+ volume: 38
58
+ issue: 5
59
+ start: 665
60
+ end: 685
61
+ doi: 10.1007/s00162-024-00706-0