psipy — Documentation
\(\psi\pi\) — A Python package for semiclassical analysis, microlocal methods, and geometric PDEs
psipy provides a unified symbolic‑numerical framework for studying linear partial differential equations using techniques from semiclassical analysis, microlocal analysis, and differential geometry. It is designed for both pedagogical exploration and research, with a strong emphasis on asymptotic methods, pseudodifferential operators, and geometric structures.
The package is organised into several modules, each focusing on a specific aspect of the theory. All modules automatically detect the spatial dimension (1D or 2D) from the input data, allowing a consistent interface across problems.
Modules
- asymptotic
Asymptotic evaluation of oscillatory and Laplace‑type integrals I(λ) = ∫ a(x) exp(iλ φ(x)) dx as λ → ∞. Implements stationary phase, Laplace’s method, and saddle‑point (steepest descent) with automatic method selection based on the phase φ.
- caustics
Catastrophe classification (Arnold’s A₂, A₃, A₄, D₄±), detection of ray caustics via the stability matrix, and uniform asymptotic corrections using Airy (fold), Pearcey (cusp), and swallowtail integrals.
- fio_bridge
Fourier Integral Operators: links the pseudodifferential calculus (psiop) with asymptotic evaluation (asymptotic). Builds FIOs for operator actions, propagators, and compositions, delegating all critical‑point work to the asymptotic module.
- geometry
Geometric visualisation and semiclassical analysis of Hamiltonian symbols H(x,ξ). Computes Hamiltonian flows, caustics, periodic orbits, Maslov indices, Gutzwiller trace formula, and produces richly annotated multi‑panel figures.
- microlocal
High‑level microlocal analysis toolkit. Handles characteristic varieties, bicharacteristic flows, wavefront sets, WKB approximations, caustic detection, and Bohr–Sommerfeld quantisation in a dimension‑agnostic way.
- physics
Lagrangian and Hamiltonian mechanics utilities. Performs symbolic and numerical Legendre (and Legendre–Fenchel) transforms, decomposes Hamiltonians into local (polynomial) and non‑local parts, and generates formal PDEs (Schrödinger, wave, stationary).
- psiop
Comprehensive symbolic‑numerical environment for pseudodifferential operators. Constructs symbols, computes asymptotic expansions, composes operators (Kohn–Nirenberg / Weyl), builds formal inverses, adjoints, exponentials, and visualises pseudospectra.
- riemannian
Unified Riemannian geometry in 1D and 2D. Defines a metric, computes Christoffel symbols, geodesics, curvature tensors, Laplace–Beltrami operator, and (in 2D) exponential maps, Jacobi fields, and de Rham cohomology quantities.
- solver
Spectral PDE solver for 1D/2D equations with periodic or Dirichlet conditions. Supports linear/nonlinear problems, pseudo‑differential operators, and time‑dependent/stationary equations. Uses Fourier spectral methods and exponential time‑stepping (ETD‑RK4).
- symplectic
Symplectic geometry toolkit for Hamiltonian mechanics with arbitrary degrees of freedom. Provides symplectic integrators (Euler, Verlet), Poisson brackets, fixed‑point analysis, action‑angle variables (1‑DOF), and Poincaré sections / monodromy matrices (2‑DOF).
- wkb
Multidimensional WKB (Wentzel–Kramers–Brillouin) approximation with caustic corrections. Traces rays (bicharacteristics), solves transport equations to arbitrary order, detects caustics via the stability matrix, and applies uniform Airy / Pearcey corrections.
All modules are designed to work together seamlessly while remaining independently usable. The package relies on SymPy for symbolic manipulation, NumPy/SciPy for numerical computation, and Matplotlib for visualisation.
For detailed mathematical background and references, consult the individual module docstrings.
Modules
- asymptotic
- caustics
- caustics.py — Catastrophe classification, ray caustic detection, and uniform asymptotic corrections
AdaptiveCriticalPointSolverCausticEventCausticFunctionsRayCausticDetectorclassify_arnold_1d()classify_arnold_2d()detect_catastrophes()find_critical_points_numerical()plot_catastrophe()plot_caustic_events()
- fio_bridge
- geometry
- geometry.py — Geometric visualisation of pseudodifferential symbols in 1D and 2D
CausticStructureGeodesicGeodesic1DGeodesic2DGeodesicBasePeriodicOrbitPeriodicOrbit1DPeriodicOrbit2DPeriodicOrbitBaseSpectralAnalysisSpectrumSymbolGeometrySymbolGeometry2DSymbolGeometryBaseSymbolVisualizerSymbolVisualizer2DSymbolVisualizerBaseUtilities2Dprint_theory()print_theory_summary()visualize_symbol()visualize_symbol_2d()
- hamiltonian_catalog
- hamiltonian_catalog.py — Hamiltonian catalog for analysis, visualization and more…
analyze_hamiltonian()batch_export_hamiltonians()export_latex_table()find_similar_hamiltonians()get_catalog_summary()get_dimensional_analysis()get_hamiltonian()get_hamiltonians_by_keywords()get_operator()get_parameters()get_tree()interactive_hamiltonian()list_categories()list_hamiltonians()print_hamiltonian_info()search_hamiltonians()trace_hamiltonian()validate_hamiltonians()visualize_hamiltonian()
- microlocal
- microlocal.py — Unified microlocal analysis toolkit for 1D and 2D problems
bicharacteristic_flow()bohr_sommerfeld_quantization()characteristic_variety()compute_caustics_2d()compute_maslov_index()find_caustics_1d()plot_bicharacteristics()plot_characteristic_set()plot_wavefront_set()propagate_singularity()test_bicharacteristic_flow()test_bohr_sommerfeld()test_characteristic_variety()test_wkb()
- misc
- physics
- psiop
- riemannian
- riemannian.py — Unified 1D/2D Riemannian geometry toolkit
Metricchristoffel()de_rham_laplacian()distance()exponential_map()geodesic_hamiltonian_flow()geodesic_solver()hodge_star()jacobi_equation_solver()laplace_beltrami()sturm_liouville_reduce()test_distance_and_exp_map()test_error_handling_1d()test_euclidean_metric()test_geodesic_integrators_2d()test_geodesic_integrators_accuracy()test_hamiltonian_construction()test_hamiltonian_flow_conservation()test_hodge_star_and_volume()test_integration_methods_consistency()test_jacobi_field_stability()test_laplace_beltrami_properties()test_metric_geometry_and_sl()test_poincare_half_plane()test_polar_coordinates()test_sphere_metric()verify_gauss_bonnet()visualize_curvature()visualize_geodesics()
- solver
- symplectic
- symplectic.py — Unified symplectic geometry toolkit for Hamiltonian mechanics
SymplecticFormSymplecticForm1D()SymplecticForm2D()action_angle_transform()action_integral()find_fixed_points()first_return_map()frequency()hamiltonian_flow()hamiltonian_flow_4d()linearize_at_fixed_point()lyapunov_exponents()monodromy_matrix()phase_portrait()poincare_section()poisson_bracket()project()separatrix_analysis()test_coupled_oscillators()test_fixed_points_1d()test_harmonic_oscillator()test_monodromy_simple()test_poincare_section()visualize_phase_space_structure()visualize_poincare_section()
- wkb
- wkb.py — Multidimensional WKB approximation with caustic corrections
compare_orders()create_initial_data_circle()create_initial_data_line()create_initial_data_point_source()plot_amplitude_decomposition()plot_caustic_analysis()plot_phase_space()plot_with_caustics()visualize_wkb_rays()wkb_approximation()