gragra 0.2.0rc1__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.
- gragra-0.2.0rc1/.github/workflows/ci.yml +226 -0
- gragra-0.2.0rc1/.github/workflows/deploy-pages.yml +103 -0
- gragra-0.2.0rc1/.github/workflows/publish-pypi.yml +119 -0
- gragra-0.2.0rc1/.gitignore +83 -0
- gragra-0.2.0rc1/CHANGELOG.md +31 -0
- gragra-0.2.0rc1/CITATION.cff +11 -0
- gragra-0.2.0rc1/CMakeLists.txt +23 -0
- gragra-0.2.0rc1/CONTRIBUTING.md +27 -0
- gragra-0.2.0rc1/LICENSE +21 -0
- gragra-0.2.0rc1/PKG-INFO +98 -0
- gragra-0.2.0rc1/PYPI_README.md +41 -0
- gragra-0.2.0rc1/README.md +144 -0
- gragra-0.2.0rc1/SECURITY.md +5 -0
- gragra-0.2.0rc1/THIRD_PARTY_NOTICES.md +34 -0
- gragra-0.2.0rc1/codemeta.json +27 -0
- gragra-0.2.0rc1/cpp/inverse_square_backend.cpp +514 -0
- gragra-0.2.0rc1/cpp/kernels.hpp +388 -0
- gragra-0.2.0rc1/docs/architecture/public_api.md +590 -0
- gragra-0.2.0rc1/docs/design/cupy_backend.md +475 -0
- gragra-0.2.0rc1/docs_site/docs/api/core.md +406 -0
- gragra-0.2.0rc1/docs_site/docs/api/experimental.md +363 -0
- gragra-0.2.0rc1/docs_site/docs/api/index.md +142 -0
- gragra-0.2.0rc1/docs_site/docs/api/interactions.md +18 -0
- gragra-0.2.0rc1/docs_site/docs/api/physics.md +969 -0
- gragra-0.2.0rc1/docs_site/docs/api/reference.md +72 -0
- gragra-0.2.0rc1/docs_site/docs/api/results.md +322 -0
- gragra-0.2.0rc1/docs_site/docs/api/top-level.md +173 -0
- gragra-0.2.0rc1/docs_site/docs/api/water.md +81 -0
- gragra-0.2.0rc1/docs_site/docs/api/wave456.md +173 -0
- gragra-0.2.0rc1/docs_site/docs/assets/.gitkeep +10 -0
- gragra-0.2.0rc1/docs_site/docs/assets/brand/gragra-apple-red.svg +3 -0
- gragra-0.2.0rc1/docs_site/docs/assets/brand/gragra-apple-white.svg +3 -0
- gragra-0.2.0rc1/docs_site/docs/assets/branding/gragra-logo-horizontal.png +0 -0
- gragra-0.2.0rc1/docs_site/docs/assets/branding/gragra-logo-stacked.png +0 -0
- gragra-0.2.0rc1/docs_site/docs/assets/branding/gragra-logo-symbol.png +0 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/fields/density_perturbation_xy_slice.svg +6325 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/fields/displacement_amplitude_xy.svg +4035 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/fields/displacement_phase_xy.svg +4095 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/fields/displacement_quiver_xy.svg +2986 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/contribution_hist_delta_a_x.svg +1023 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/contribution_hist_norm.svg +1011 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/cumulative_norm.svg +1228 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/dynamic_interference_share_x.svg +2164 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/hist_density_volume.svg +922 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/map_xz_delta_a_x.svg +1973 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/map_xz_kernel_norm.svg +1934 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/plot_result_spectrum_magnitude.svg +1280 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/plot_result_spectrum_phase.svg +1214 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/plot_result_static_field_xy.svg +1199 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/plot_result_time_series.svg +1255 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/plot_shape_cuboid.svg +1136 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/radial_gg_components_signed.svg +2204 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/radial_gg_xx_signed.svg +1171 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/radial_mass_over_r2_fraction.svg +957 -0
- gragra-0.2.0rc1/docs_site/docs/assets/guide/source-diagnostics/source_field_mass_over_r2_xz_sum.svg +6344 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/advected_temperature_turbulence.svg +72 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/atmospheric_acoustic_halfspace.svg +70 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/causal_point_force.svg +68 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/cylinder-3d.svg +33 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/fixed_axis_rotation.svg +68 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/frozen_advection_channel_water.svg +74 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/individual_p_sv_reflection.svg +77 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/isobaric_temperature_perturbation.svg +66 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/isotropic_stochastic_body_waves.svg +71 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/isotropic_stochastic_rayleigh.svg +76 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/oriented_cuboid.svg +84 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/p_sv_free_surface.svg +76 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/prescribed_point_mass_translation.svg +83 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/rayleigh_wave_halfspace.svg +75 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/rigid_acoustic_cavity_modes.svg +71 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/rigid_body_fourier_response.svg +161 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/small_cavity_wall.svg +77 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/small_translational_oscillation.svg +66 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/sphere-3d.svg +1 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/sphere-section.svg +1 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/spherical_cavity_shell.svg +79 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/stochastic_atmospheric_infrasound.svg +68 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/advected_atmospheric_temperature_turbulence_step4_comparison.svg +1625 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/atmospheric_acoustic_halfspace_step4_comparison.svg +1479 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/causal_point_force_step4_comparison.svg +1327 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/causal_point_force_step4_gwexpy.svg +2728 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/fixed_axis_rotation_step4_comparison.svg +1873 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/fixed_axis_rotation_step4_gwexpy.svg +2792 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/frozen_advection_channel_water_noise_step4_comparison.svg +1580 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/individual_p_sv_and_reflected_p_benchmarks_step4_comparison.svg +1316 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/isobaric_temperature_perturbation_step4_comparison.svg +1319 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/isotropic_stochastic_elastic_body_waves_step4_comparison.svg +1568 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/isotropic_stochastic_rayleigh_field_step4_comparison.svg +1462 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/oriented_cuboid_step4_comparison.svg +1867 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/p_sv_waves_at_a_free_surface_step4_comparison.svg +1594 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/prescribed_point_mass_translation_step4_comparison.svg +1304 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/prescribed_point_mass_translation_step4_gwexpy.svg +2575 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/rayleigh_wave_at_an_elastic_halfspace_setup_xz.svg +1800 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/rayleigh_wave_at_an_elastic_halfspace_step4_az_magnitude.svg +1986 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/rayleigh_wave_at_an_elastic_halfspace_step4_az_phase.svg +1675 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/rigid_acoustic_cavity_modes_step4_comparison.svg +1473 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/rigid_body_time_series_and_fourier_response_step4_gwexpy_fft.svg +2584 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/rigid_body_time_series_and_fourier_response_step4_spectrum.svg +1612 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/small_cavity_wall_approximation_step4_comparison.svg +1860 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/small_translational_oscillation_step4_comparison.svg +1574 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/spherical_cavity_and_finite_spherical_shell_step4_comparison.svg +1511 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/stochastic_atmospheric_infrasound_step4_comparison.svg +1433 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/uniform_density_cuboid_setup_3d.svg +1344 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/uniform_density_cuboid_step4_az_lz_sweep.svg +2006 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/uniform_density_cylinder_step4_comparison.svg +1433 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/uniform_density_sphere_step4_comparison.svg +1464 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/water_channel_inflow_step_step4_comparison.svg +1502 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/tutorials/waterfall_and_spatially_uncorrelated_water_surface_step4_comparison.svg +1807 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/uniform_density_cuboid.svg +90 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/water_channel_inflow_step.svg +80 -0
- gragra-0.2.0rc1/docs_site/docs/assets/models/waterfall_uncorrelated_surface.svg +80 -0
- gragra-0.2.0rc1/docs_site/docs/concepts/arrays.md +67 -0
- gragra-0.2.0rc1/docs_site/docs/concepts/complex-outputs.md +81 -0
- gragra-0.2.0rc1/docs_site/docs/concepts/conventions.md +53 -0
- gragra-0.2.0rc1/docs_site/docs/concepts/model-and-scope.md +79 -0
- gragra-0.2.0rc1/docs_site/docs/concepts/numerics.md +94 -0
- gragra-0.2.0rc1/docs_site/docs/examples/rayleigh_phasor_workflow.md +16 -0
- gragra-0.2.0rc1/docs_site/docs/examples/rayleigh_response_workflow.md +16 -0
- gragra-0.2.0rc1/docs_site/docs/examples/uniform_sphere_workflow.md +25 -0
- gragra-0.2.0rc1/docs_site/docs/external/hdf5-fields.md +120 -0
- gragra-0.2.0rc1/docs_site/docs/external/specfem3d.md +131 -0
- gragra-0.2.0rc1/docs_site/docs/getting-started/choosing.md +68 -0
- gragra-0.2.0rc1/docs_site/docs/getting-started/installation.md +82 -0
- gragra-0.2.0rc1/docs_site/docs/getting-started/minimal-example.md +43 -0
- gragra-0.2.0rc1/docs_site/docs/guide/analytic-benchmarks.md +149 -0
- gragra-0.2.0rc1/docs_site/docs/guide/backends.md +142 -0
- gragra-0.2.0rc1/docs_site/docs/guide/coherent.md +134 -0
- gragra-0.2.0rc1/docs_site/docs/guide/continuous-sources.md +63 -0
- gragra-0.2.0rc1/docs_site/docs/guide/fields.md +258 -0
- gragra-0.2.0rc1/docs_site/docs/guide/formulas.md +54 -0
- gragra-0.2.0rc1/docs_site/docs/guide/gen1-analytic-models.md +278 -0
- gragra-0.2.0rc1/docs_site/docs/guide/geometry.md +60 -0
- gragra-0.2.0rc1/docs_site/docs/guide/meshes.md +76 -0
- gragra-0.2.0rc1/docs_site/docs/guide/model-and-method-catalogue.md +167 -0
- gragra-0.2.0rc1/docs_site/docs/guide/numerical-methods.md +54 -0
- gragra-0.2.0rc1/docs_site/docs/guide/observables.md +98 -0
- gragra-0.2.0rc1/docs_site/docs/guide/physics-reference.md +51 -0
- gragra-0.2.0rc1/docs_site/docs/guide/point-sources.md +137 -0
- gragra-0.2.0rc1/docs_site/docs/guide/rigid-motion-fourier.md +154 -0
- gragra-0.2.0rc1/docs_site/docs/guide/source-diagnostics.md +365 -0
- gragra-0.2.0rc1/docs_site/docs/guide/static-sources.md +140 -0
- gragra-0.2.0rc1/docs_site/docs/guide/stochastic-nn.md +52 -0
- gragra-0.2.0rc1/docs_site/docs/guide/water-newtonian-noise.md +104 -0
- gragra-0.2.0rc1/docs_site/docs/guide/waves.md +88 -0
- gragra-0.2.0rc1/docs_site/docs/help/citation.md +66 -0
- gragra-0.2.0rc1/docs_site/docs/help/contributing.md +69 -0
- gragra-0.2.0rc1/docs_site/docs/help/troubleshooting.md +102 -0
- gragra-0.2.0rc1/docs_site/docs/index.md +73 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/catalogue.js +56 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/LICENSE.txt +202 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/input/tex/extensions/boldsymbol.js +1 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax/tex-mml-chtml.js +1 -0
- gragra-0.2.0rc1/docs_site/docs/javascripts/mathjax-config.js +68 -0
- gragra-0.2.0rc1/docs_site/docs/models/advected_atmospheric_temperature_turbulence.md +303 -0
- gragra-0.2.0rc1/docs_site/docs/models/atmospheric_acoustic_halfspace.md +320 -0
- gragra-0.2.0rc1/docs_site/docs/models/causal_point_force.md +401 -0
- gragra-0.2.0rc1/docs_site/docs/models/fixed_axis_rotation.md +333 -0
- gragra-0.2.0rc1/docs_site/docs/models/frozen_advection_channel_water_noise.md +339 -0
- gragra-0.2.0rc1/docs_site/docs/models/individual_p_sv_and_reflected_p_benchmarks.md +320 -0
- gragra-0.2.0rc1/docs_site/docs/models/isobaric_temperature_perturbation.md +359 -0
- gragra-0.2.0rc1/docs_site/docs/models/isotropic_stochastic_elastic_body_waves.md +295 -0
- gragra-0.2.0rc1/docs_site/docs/models/isotropic_stochastic_rayleigh_field.md +279 -0
- gragra-0.2.0rc1/docs_site/docs/models/oriented_cuboid.md +285 -0
- gragra-0.2.0rc1/docs_site/docs/models/p_sv_waves_at_a_free_surface.md +372 -0
- gragra-0.2.0rc1/docs_site/docs/models/prescribed_point_mass_translation.md +309 -0
- gragra-0.2.0rc1/docs_site/docs/models/rayleigh_wave_at_an_elastic_halfspace.md +414 -0
- gragra-0.2.0rc1/docs_site/docs/models/rigid_acoustic_cavity_modes.md +384 -0
- gragra-0.2.0rc1/docs_site/docs/models/rigid_body_time_series_and_fourier_response.md +364 -0
- gragra-0.2.0rc1/docs_site/docs/models/small_cavity_wall_approximation.md +339 -0
- gragra-0.2.0rc1/docs_site/docs/models/small_translational_oscillation.md +294 -0
- gragra-0.2.0rc1/docs_site/docs/models/spherical_cavity_and_finite_spherical_shell.md +306 -0
- gragra-0.2.0rc1/docs_site/docs/models/stochastic_atmospheric_infrasound.md +333 -0
- gragra-0.2.0rc1/docs_site/docs/models/uniform_density_cuboid.md +398 -0
- gragra-0.2.0rc1/docs_site/docs/models/uniform_density_cylinder.md +368 -0
- gragra-0.2.0rc1/docs_site/docs/models/uniform_density_sphere.md +319 -0
- gragra-0.2.0rc1/docs_site/docs/models/water_channel_inflow_step.md +252 -0
- gragra-0.2.0rc1/docs_site/docs/models/waterfall_and_spatially_uncorrelated_water_surface.md +305 -0
- gragra-0.2.0rc1/docs_site/docs/stylesheets/catalogue.css +138 -0
- gragra-0.2.0rc1/docs_site/docs/tutorials/numerical-reference.md +117 -0
- gragra-0.2.0rc1/docs_site/docs/verification/coverage.md +103 -0
- gragra-0.2.0rc1/docs_site/docs/verification/index.md +96 -0
- gragra-0.2.0rc1/docs_site/docs/verification/limitations.md +146 -0
- gragra-0.2.0rc1/docs_site/docs/verification/matrix.md +61 -0
- gragra-0.2.0rc1/docs_site/scripts/generate_fields_figures.py +135 -0
- gragra-0.2.0rc1/docs_site/scripts/generate_source_diagnostics_figures.py +652 -0
- gragra-0.2.0rc1/docs_site/snippets/README.md +53 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_acoustic_halfspace.py +37 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_cavity_cuboid.py +37 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_cavity_cylinder.py +46 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_cavity_sphere.py +40 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_motion.py +78 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_seismic_models.py +58 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_temperature.py +62 -0
- gragra-0.2.0rc1/docs_site/snippets/analytic_gen1_temperature_grid.py +54 -0
- gragra-0.2.0rc1/docs_site/snippets/backends_error_contract.py +70 -0
- gragra-0.2.0rc1/docs_site/snippets/point_sources_weighted_point_source.py +9 -0
- gragra-0.2.0rc1/docs_site/snippets/quickstart_array_conventions.py +65 -0
- gragra-0.2.0rc1/docs_site/snippets/quickstart_complex_amplitude.py +49 -0
- gragra-0.2.0rc1/docs_site/snippets/quickstart_point_mass_acceleration.py +38 -0
- gragra-0.2.0rc1/docs_site/snippets/quickstart_sign_conventions.py +42 -0
- gragra-0.2.0rc1/docs_site/snippets/quickstart_softening_and_chunking.py +76 -0
- gragra-0.2.0rc1/docs_site/snippets/quickstart_verify_install.py +24 -0
- gragra-0.2.0rc1/docs_site/snippets/readme_analytic_benchmark.py +18 -0
- gragra-0.2.0rc1/docs_site/snippets/readme_coherent_response.py +40 -0
- gragra-0.2.0rc1/docs_site/snippets/readme_continuous_sources.py +15 -0
- gragra-0.2.0rc1/docs_site/snippets/readme_geometry_primitives.py +21 -0
- gragra-0.2.0rc1/docs_site/snippets/readme_point_mass_acceleration.py +12 -0
- gragra-0.2.0rc1/examples/01_point_mass.py +42 -0
- gragra-0.2.0rc1/examples/02_weighted_point_source.py +69 -0
- gragra-0.2.0rc1/examples/03_geometry_primitives.py +33 -0
- gragra-0.2.0rc1/examples/04_analytic_benchmark.py +47 -0
- gragra-0.2.0rc1/examples/05_gravity_gradient_tensor.py +69 -0
- gragra-0.2.0rc1/examples/06_continuous_sources.py +191 -0
- gragra-0.2.0rc1/examples/07_coherent_response.py +159 -0
- gragra-0.2.0rc1/examples/08_meshio_surface_adapter.py +149 -0
- gragra-0.2.0rc1/examples/09_external_field_density.py +60 -0
- gragra-0.2.0rc1/examples/10_halfspace_rayleigh.py +101 -0
- gragra-0.2.0rc1/examples/12_cross_statistics_witness.py +159 -0
- gragra-0.2.0rc1/examples/13_sca_lower_limit_gate.py +211 -0
- gragra-0.2.0rc1/examples/15_analytic_stage1_benchmarks.py +234 -0
- gragra-0.2.0rc1/examples/README.md +65 -0
- gragra-0.2.0rc1/examples/cylinder_potential.py +38 -0
- gragra-0.2.0rc1/examples/finite_body_mesh_comparison.py +106 -0
- gragra-0.2.0rc1/examples/gravity_result.py +170 -0
- gragra-0.2.0rc1/examples/literature_b.py +119 -0
- gragra-0.2.0rc1/examples/literature_c.py +64 -0
- gragra-0.2.0rc1/examples/literature_r.py +74 -0
- gragra-0.2.0rc1/examples/openfoam_density_pipeline.py +214 -0
- gragra-0.2.0rc1/examples/oriented_analytic_fields.py +39 -0
- gragra-0.2.0rc1/examples/rayleigh_phasor_workflow.ipynb +342 -0
- gragra-0.2.0rc1/examples/rayleigh_response_workflow.ipynb +250 -0
- gragra-0.2.0rc1/examples/rigid_motion_fourier_workflow.ipynb +155 -0
- gragra-0.2.0rc1/examples/static_sources_workflow.py +139 -0
- gragra-0.2.0rc1/examples/trajectory_passage_and_rotation.py +99 -0
- gragra-0.2.0rc1/examples/uniform_sphere_workflow.ipynb +228 -0
- gragra-0.2.0rc1/mkdocs.yml +249 -0
- gragra-0.2.0rc1/pyproject.toml +197 -0
- gragra-0.2.0rc1/scripts/bench_five_model_common.py +87 -0
- gragra-0.2.0rc1/scripts/check_git_blob_pins.py +333 -0
- gragra-0.2.0rc1/scripts/check_import_boundaries.py +519 -0
- gragra-0.2.0rc1/scripts/check_pin_reconciliation.py +171 -0
- gragra-0.2.0rc1/scripts/check_spherical_cavity_symbolic.py +101 -0
- gragra-0.2.0rc1/scripts/check_u10_spherical_shell_general_symbolic.py +88 -0
- gragra-0.2.0rc1/scripts/check_u11_rayleigh_small_cavity_symbolic.py +37 -0
- gragra-0.2.0rc1/scripts/check_u9_sca_wall_observables_symbolic.py +109 -0
- gragra-0.2.0rc1/scripts/ci/classify_changes.py +52 -0
- gragra-0.2.0rc1/scripts/m3_p6_report.py +978 -0
- gragra-0.2.0rc1/scripts/prepare_anna_comparison.py +747 -0
- gragra-0.2.0rc1/scripts/pytest_origin_guard.py +18 -0
- gragra-0.2.0rc1/scripts/reproduce_analytic_stage1_report.py +946 -0
- gragra-0.2.0rc1/scripts/research_export_dt_half.py +96 -0
- gragra-0.2.0rc1/scripts/research_export_mesh_200m_blockwise.py +122 -0
- gragra-0.2.0rc1/scripts/research_m3a_rigid_motion.py +295 -0
- gragra-0.2.0rc1/scripts/research_make_part_array_from_rank_vtk.py +65 -0
- gragra-0.2.0rc1/scripts/research_openfoam_cosine_bell.py +1234 -0
- gragra-0.2.0rc1/scripts/research_openfoam_cosine_bell_precision.py +1118 -0
- gragra-0.2.0rc1/scripts/research_openfoam_density_export.py +133 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_b6.py +411 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_b6_12km.py +178 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_cadence.py +411 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_domain_sensitivity.py +597 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_dt_sensitivity.py +157 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_gravity_window_diagnostics.py +373 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_mesh_sensitivity.py +153 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_mpi_sensitivity.py +130 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_sampling_sensitivity.py +114 -0
- gragra-0.2.0rc1/scripts/research_rayleigh_window_fit_diagnostics.py +273 -0
- gragra-0.2.0rc1/scripts/research_water_surface_models.py +1044 -0
- gragra-0.2.0rc1/scripts/research_wave456_rotation.py +772 -0
- gragra-0.2.0rc1/scripts/research_wave456_rotation_a_compare.py +359 -0
- gragra-0.2.0rc1/scripts/research_wave4_environment.py +205 -0
- gragra-0.2.0rc1/scripts/research_wave4_finite_body.py +563 -0
- gragra-0.2.0rc1/scripts/research_wave4_specfem_protocol.py +995 -0
- gragra-0.2.0rc1/scripts/research_wave5_crosspaths.py +2033 -0
- gragra-0.2.0rc1/scripts/research_wave5_environment_transport.py +1111 -0
- gragra-0.2.0rc1/scripts/research_wave5_environment_transport_centroids.py +171 -0
- gragra-0.2.0rc1/scripts/research_wave5_finite_body.py +507 -0
- gragra-0.2.0rc1/scripts/research_wave5_rayleigh_crosspaths.py +1240 -0
- gragra-0.2.0rc1/scripts/research_wave5_specfem_export.py +1181 -0
- gragra-0.2.0rc1/scripts/research_wave6_environment_acoustic.py +628 -0
- gragra-0.2.0rc1/scripts/research_wave6_environment_acoustic_series.py +547 -0
- gragra-0.2.0rc1/scripts/research_wave6_environment_gwexpy_bridge.py +164 -0
- gragra-0.2.0rc1/scripts/research_wave6_finite_body_cavity.py +589 -0
- gragra-0.2.0rc1/scripts/research_wave6_finite_body_oracle_retry.py +207 -0
- gragra-0.2.0rc1/scripts/research_wave6_finite_motion_mesh.py +329 -0
- gragra-0.2.0rc1/scripts/research_wave6_heterogeneous_box_reference.py +505 -0
- gragra-0.2.0rc1/scripts/research_wave6_mesh_exchange_e2e.py +393 -0
- gragra-0.2.0rc1/scripts/research_wave6_quadrature_library_comparison.py +390 -0
- gragra-0.2.0rc1/scripts/research_wave6_quadrature_order_study.py +412 -0
- gragra-0.2.0rc1/scripts/research_wave6_specfem_analysis.py +1016 -0
- gragra-0.2.0rc1/scripts/research_wave6_spherical_cavity_general_point.py +671 -0
- gragra-0.2.0rc1/scripts/research_wave6_spherical_cavity_near_wall.py +454 -0
- gragra-0.2.0rc1/scripts/run_rayleigh_phasor_notebook.py +146 -0
- gragra-0.2.0rc1/scripts/run_rayleigh_response_notebook.py +148 -0
- gragra-0.2.0rc1/scripts/run_uniform_sphere_notebook.py +151 -0
- gragra-0.2.0rc1/scripts/validate_spherical_cavity_axis.py +145 -0
- gragra-0.2.0rc1/scripts/validate_u10_spherical_shell_general.py +345 -0
- gragra-0.2.0rc1/scripts/validate_u11_rayleigh_small_cavity.py +434 -0
- gragra-0.2.0rc1/scripts/validate_u9_sca_wall_observables.py +306 -0
- gragra-0.2.0rc1/scripts/verify_cylinder_sca.py +34 -0
- gragra-0.2.0rc1/scripts/verify_gen1_clean.py +275 -0
- gragra-0.2.0rc1/scripts/verify_halfspace_psv.py +87 -0
- gragra-0.2.0rc1/src/gragra/__init__.py +46 -0
- gragra-0.2.0rc1/src/gragra/_analytic_evaluation.py +413 -0
- gragra-0.2.0rc1/src/gragra/_arrays.py +194 -0
- gragra-0.2.0rc1/src/gragra/_continuous_contract.py +427 -0
- gragra-0.2.0rc1/src/gragra/_continuous_fourier.py +890 -0
- gragra-0.2.0rc1/src/gragra/_continuous_rigid_motion.py +275 -0
- gragra-0.2.0rc1/src/gragra/_evaluation_setup.py +680 -0
- gragra-0.2.0rc1/src/gragra/_finite_window_fourier.py +627 -0
- gragra-0.2.0rc1/src/gragra/_interactions.py +26 -0
- gragra-0.2.0rc1/src/gragra/_periodic_fourier.py +522 -0
- gragra-0.2.0rc1/src/gragra/_phasor_matrix.py +74 -0
- gragra-0.2.0rc1/src/gragra/_plotting/__init__.py +1 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_appearance.py +38 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_contribution.py +363 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_diagnostics.py +662 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_dynamic_contribution.py +1281 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_field.py +704 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_formula_latex.py +59 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_hist.py +775 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_map.py +316 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_radial_histogram.py +1029 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_rayleigh_setup.py +567 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_result_field.py +670 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_setup.py +447 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_setup_shapes.py +308 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_source_contracts.py +287 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_source_data.py +478 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_source_field.py +1243 -0
- gragra-0.2.0rc1/src/gragra/_plotting/_source_quantities.py +541 -0
- gragra-0.2.0rc1/src/gragra/_rayleigh_contract.py +859 -0
- gragra-0.2.0rc1/src/gragra/_rayleigh_evaluation_setup.py +214 -0
- gragra-0.2.0rc1/src/gragra/_rayleigh_response_setup.py +151 -0
- gragra-0.2.0rc1/src/gragra/_spectral_from_timeseries.py +136 -0
- gragra-0.2.0rc1/src/gragra/_time_matrix.py +146 -0
- gragra-0.2.0rc1/src/gragra/adapters/__init__.py +136 -0
- gragra-0.2.0rc1/src/gragra/adapters/_gwexpy_series.py +210 -0
- gragra-0.2.0rc1/src/gragra/adapters/field_series_hdf5.py +906 -0
- gragra-0.2.0rc1/src/gragra/adapters/finite_body_mesh.py +153 -0
- gragra-0.2.0rc1/src/gragra/adapters/gwexpy_adapter.py +243 -0
- gragra-0.2.0rc1/src/gragra/adapters/gwexpy_density_series.py +69 -0
- gragra-0.2.0rc1/src/gragra/adapters/gwexpy_displacement_series.py +35 -0
- gragra-0.2.0rc1/src/gragra/adapters/gwexpy_observable.py +545 -0
- gragra-0.2.0rc1/src/gragra/adapters/gwexpy_source.py +336 -0
- gragra-0.2.0rc1/src/gragra/adapters/gwexpy_surface_density_series.py +42 -0
- gragra-0.2.0rc1/src/gragra/adapters/hdf5_field.py +814 -0
- gragra-0.2.0rc1/src/gragra/adapters/hex8_series.py +174 -0
- gragra-0.2.0rc1/src/gragra/adapters/lebedev.py +59 -0
- gragra-0.2.0rc1/src/gragra/adapters/mesh_quality.py +252 -0
- gragra-0.2.0rc1/src/gragra/adapters/meshio_adapter.py +658 -0
- gragra-0.2.0rc1/src/gragra/adapters/openfoam_density.py +531 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/__init__.py +55 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/__main__.py +8 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/_validation.py +501 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/cli.py +137 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/export.py +844 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/gll.py +569 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/provenance.py +939 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/reader.py +152 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/schema.py +1248 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/specfem_bin.py +970 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/streaming.py +412 -0
- gragra-0.2.0rc1/src/gragra/adapters/specfem/writer.py +332 -0
- gragra-0.2.0rc1/src/gragra/analytic/__init__.py +130 -0
- gragra-0.2.0rc1/src/gragra/analytic/_bessel.py +376 -0
- gragra-0.2.0rc1/src/gragra/analytic/_fullspace_bodywave.py +126 -0
- gragra-0.2.0rc1/src/gragra/analytic/_u10_shell_series.py +240 -0
- gragra-0.2.0rc1/src/gragra/analytic/_u9_spatial_derivatives.py +295 -0
- gragra-0.2.0rc1/src/gragra/analytic/_validation.py +140 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/__init__.py +59 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_acoustic.py +372 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_cavity/__init__.py +1 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_cavity/_cuboid.py +1674 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_cavity/_cylinder.py +3236 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_cavity/_model.py +760 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_cavity/_numerics.py +1168 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_cavity/_sphere_harmonics.py +177 -0
- gragra-0.2.0rc1/src/gragra/analytic/atmospheric/_temperature.py +591 -0
- gragra-0.2.0rc1/src/gragra/analytic/bodywave_literature.py +562 -0
- gragra-0.2.0rc1/src/gragra/analytic/cavity_coupling.py +193 -0
- gragra-0.2.0rc1/src/gragra/analytic/cavity_cuboid.py +488 -0
- gragra-0.2.0rc1/src/gragra/analytic/cavity_cylinder.py +1345 -0
- gragra-0.2.0rc1/src/gragra/analytic/cavity_sphere.py +848 -0
- gragra-0.2.0rc1/src/gragra/analytic/cylinder_potential.py +215 -0
- gragra-0.2.0rc1/src/gragra/analytic/cylinder_sca.py +47 -0
- gragra-0.2.0rc1/src/gragra/analytic/halfspace.py +155 -0
- gragra-0.2.0rc1/src/gragra/analytic/halfspace_psv.py +202 -0
- gragra-0.2.0rc1/src/gragra/analytic/objects/__init__.py +44 -0
- gragra-0.2.0rc1/src/gragra/analytic/objects/_cuboid_model.py +370 -0
- gragra-0.2.0rc1/src/gragra/analytic/objects/_cylinder_model.py +287 -0
- gragra-0.2.0rc1/src/gragra/analytic/objects/_gen1_motion.py +789 -0
- gragra-0.2.0rc1/src/gragra/analytic/objects/_uniform_sphere.py +59 -0
- gragra-0.2.0rc1/src/gragra/analytic/oriented.py +104 -0
- gragra-0.2.0rc1/src/gragra/analytic/rayleigh_literature.py +367 -0
- gragra-0.2.0rc1/src/gragra/analytic/sca_tensor.py +308 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/__init__.py +36 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_gen1_point_force.py +422 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_gen1_sca_wall.py +404 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_halfspace_psv_model.py +629 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_phase_speed.py +139 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_rayleigh.py +73 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_rayleigh_response.py +104 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_spherical_cavity_model.py +572 -0
- gragra-0.2.0rc1/src/gragra/analytic/seismic/_spherical_shell_model.py +563 -0
- gragra-0.2.0rc1/src/gragra/analytic/spherical_cavity_series.py +343 -0
- gragra-0.2.0rc1/src/gragra/analytic/stochastic_acoustic.py +375 -0
- gragra-0.2.0rc1/src/gragra/analytic/stochastic_bodywave.py +201 -0
- gragra-0.2.0rc1/src/gragra/analytic/stochastic_rayleigh.py +170 -0
- gragra-0.2.0rc1/src/gragra/analytic/stochastic_temperature.py +221 -0
- gragra-0.2.0rc1/src/gragra/analytic/u10_spherical_shell_general.py +308 -0
- gragra-0.2.0rc1/src/gragra/analytic/u11_rayleigh_small_cavity.py +246 -0
- gragra-0.2.0rc1/src/gragra/analytic/u9_sca_wall_observables.py +213 -0
- gragra-0.2.0rc1/src/gragra/analytic/uniform_sphere.py +245 -0
- gragra-0.2.0rc1/src/gragra/analytic/values.py +279 -0
- gragra-0.2.0rc1/src/gragra/analytic/water.py +893 -0
- gragra-0.2.0rc1/src/gragra/analytic/wave456_reference.py +1192 -0
- gragra-0.2.0rc1/src/gragra/array_types.py +35 -0
- gragra-0.2.0rc1/src/gragra/coherent/__init__.py +20 -0
- gragra-0.2.0rc1/src/gragra/coherent/average.py +165 -0
- gragra-0.2.0rc1/src/gragra/coherent/bulk_weights.py +156 -0
- gragra-0.2.0rc1/src/gragra/coherent/cross.py +103 -0
- gragra-0.2.0rc1/src/gragra/coherent/ensemble.py +110 -0
- gragra-0.2.0rc1/src/gragra/coherent/weights.py +177 -0
- gragra-0.2.0rc1/src/gragra/constants.py +5 -0
- gragra-0.2.0rc1/src/gragra/evaluation.py +611 -0
- gragra-0.2.0rc1/src/gragra/exceptions.py +184 -0
- gragra-0.2.0rc1/src/gragra/fields/__init__.py +135 -0
- gragra-0.2.0rc1/src/gragra/fields/_series.py +157 -0
- gragra-0.2.0rc1/src/gragra/fields/_temperature.py +313 -0
- gragra-0.2.0rc1/src/gragra/fields/background.py +52 -0
- gragra-0.2.0rc1/src/gragra/fields/batch.py +285 -0
- gragra-0.2.0rc1/src/gragra/fields/density_series.py +100 -0
- gragra-0.2.0rc1/src/gragra/fields/dipole_diagnostics.py +288 -0
- gragra-0.2.0rc1/src/gragra/fields/displacement_series.py +69 -0
- gragra-0.2.0rc1/src/gragra/fields/evaluation.py +300 -0
- gragra-0.2.0rc1/src/gragra/fields/finite_body.py +441 -0
- gragra-0.2.0rc1/src/gragra/fields/finite_body_p1.py +595 -0
- gragra-0.2.0rc1/src/gragra/fields/generic_integration.py +597 -0
- gragra-0.2.0rc1/src/gragra/fields/hex8_geometry.py +198 -0
- gragra-0.2.0rc1/src/gragra/fields/material_hex8.py +249 -0
- gragra-0.2.0rc1/src/gragra/fields/regular_grid.py +364 -0
- gragra-0.2.0rc1/src/gragra/fields/surface.py +247 -0
- gragra-0.2.0rc1/src/gragra/fields/surface_density_series.py +83 -0
- gragra-0.2.0rc1/src/gragra/fields/surface_orientation.py +354 -0
- gragra-0.2.0rc1/src/gragra/fields/thermodynamic.py +115 -0
- gragra-0.2.0rc1/src/gragra/fields/unstructured.py +396 -0
- gragra-0.2.0rc1/src/gragra/geometry/__init__.py +62 -0
- gragra-0.2.0rc1/src/gragra/geometry/_appearance.py +34 -0
- gragra-0.2.0rc1/src/gragra/geometry/_cuboid.py +58 -0
- gragra-0.2.0rc1/src/gragra/geometry/_cylinder.py +64 -0
- gragra-0.2.0rc1/src/gragra/geometry/_frame.py +242 -0
- gragra-0.2.0rc1/src/gragra/geometry/_grid.py +202 -0
- gragra-0.2.0rc1/src/gragra/geometry/_halfspace.py +20 -0
- gragra-0.2.0rc1/src/gragra/geometry/_sphere.py +59 -0
- gragra-0.2.0rc1/src/gragra/geometry/_spherical_shell.py +64 -0
- gragra-0.2.0rc1/src/gragra/geometry/primitives.py +981 -0
- gragra-0.2.0rc1/src/gragra/geometry/surface_mesh.py +467 -0
- gragra-0.2.0rc1/src/gragra/geometry/tetra_quadrature.py +155 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/__init__.py +74 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/_discretize.py +77 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/_force_history.py +411 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/_models.py +165 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/_rigid_motion_model.py +505 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/surface.py +158 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/trajectory.py +313 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/volume.py +107 -0
- gragra-0.2.0rc1/src/gragra/gravity_sources/weighted_points.py +127 -0
- gragra-0.2.0rc1/src/gragra/integrators/__init__.py +22 -0
- gragra-0.2.0rc1/src/gragra/integrators/generic.py +1343 -0
- gragra-0.2.0rc1/src/gragra/integrators/point_direct.py +393 -0
- gragra-0.2.0rc1/src/gragra/integrators/rigid_motion.py +981 -0
- gragra-0.2.0rc1/src/gragra/integrators/streaming.py +684 -0
- gragra-0.2.0rc1/src/gragra/integrators/trajectory_direct.py +191 -0
- gragra-0.2.0rc1/src/gragra/interactions/__init__.py +5 -0
- gragra-0.2.0rc1/src/gragra/kernels/__init__.py +23 -0
- gragra-0.2.0rc1/src/gragra/kernels/_collision.py +20 -0
- gragra-0.2.0rc1/src/gragra/kernels/_cpp_inverse_square.py +184 -0
- gragra-0.2.0rc1/src/gragra/kernels/_cpp_parametric.py +140 -0
- gragra-0.2.0rc1/src/gragra/kernels/_cpp_planewave.py +55 -0
- gragra-0.2.0rc1/src/gragra/kernels/_cpp_required.py +38 -0
- gragra-0.2.0rc1/src/gragra/kernels/_cupy_inverse_square.py +263 -0
- gragra-0.2.0rc1/src/gragra/kernels/_cupy_parametric.py +101 -0
- gragra-0.2.0rc1/src/gragra/kernels/_cupy_planewave.py +127 -0
- gragra-0.2.0rc1/src/gragra/kernels/_numba_inverse_square.py +796 -0
- gragra-0.2.0rc1/src/gragra/kernels/_numba_parametric.py +366 -0
- gragra-0.2.0rc1/src/gragra/kernels/_numba_planewave.py +57 -0
- gragra-0.2.0rc1/src/gragra/kernels/_source_terms.py +137 -0
- gragra-0.2.0rc1/src/gragra/kernels/generic_backend.py +1021 -0
- gragra-0.2.0rc1/src/gragra/kernels/inverse_square.py +679 -0
- gragra-0.2.0rc1/src/gragra/kernels/parametric.py +358 -0
- gragra-0.2.0rc1/src/gragra/observables/__init__.py +171 -0
- gragra-0.2.0rc1/src/gragra/observables/_source_terms.py +64 -0
- gragra-0.2.0rc1/src/gragra/observables/acceleration.py +131 -0
- gragra-0.2.0rc1/src/gragra/observables/analytic.py +818 -0
- gragra-0.2.0rc1/src/gragra/observables/bodywave_literature.py +97 -0
- gragra-0.2.0rc1/src/gragra/observables/coherent.py +274 -0
- gragra-0.2.0rc1/src/gragra/observables/dipole.py +145 -0
- gragra-0.2.0rc1/src/gragra/observables/gradient.py +60 -0
- gragra-0.2.0rc1/src/gragra/observables/gravitoelastic.py +196 -0
- gragra-0.2.0rc1/src/gragra/observables/halfspace_psv.py +39 -0
- gragra-0.2.0rc1/src/gragra/observables/potential.py +57 -0
- gragra-0.2.0rc1/src/gragra/observables/projection.py +102 -0
- gragra-0.2.0rc1/src/gragra/observables/rayleigh_literature.py +50 -0
- gragra-0.2.0rc1/src/gragra/observables/rigid_motion.py +253 -0
- gragra-0.2.0rc1/src/gragra/observables/series.py +195 -0
- gragra-0.2.0rc1/src/gragra/observables/stochastic_acoustic.py +91 -0
- gragra-0.2.0rc1/src/gragra/observables/stochastic_bodywave.py +71 -0
- gragra-0.2.0rc1/src/gragra/observables/stochastic_rayleigh.py +52 -0
- gragra-0.2.0rc1/src/gragra/observables/stochastic_temperature.py +50 -0
- gragra-0.2.0rc1/src/gragra/observables/streaming.py +115 -0
- gragra-0.2.0rc1/src/gragra/observables/trajectory.py +190 -0
- gragra-0.2.0rc1/src/gragra/observables/u10_spherical_shell_general.py +28 -0
- gragra-0.2.0rc1/src/gragra/observables/u11_rayleigh_small_cavity.py +21 -0
- gragra-0.2.0rc1/src/gragra/observables/u9_sca_wall_observables.py +29 -0
- gragra-0.2.0rc1/src/gragra/observables/water.py +458 -0
- gragra-0.2.0rc1/src/gragra/observables/wave456_reference.py +86 -0
- gragra-0.2.0rc1/src/gragra/plotting/__init__.py +119 -0
- gragra-0.2.0rc1/src/gragra/py.typed +1 -0
- gragra-0.2.0rc1/src/gragra/reference/__init__.py +23 -0
- gragra-0.2.0rc1/src/gragra/reference/_cavern.py +130 -0
- gragra-0.2.0rc1/src/gragra/reference/_context.py +69 -0
- gragra-0.2.0rc1/src/gragra/reference/_types.py +49 -0
- gragra-0.2.0rc1/src/gragra/research/__init__.py +1 -0
- gragra-0.2.0rc1/src/gragra/research/rayleigh_timefit.py +55 -0
- gragra-0.2.0rc1/src/gragra/results/__init__.py +150 -0
- gragra-0.2.0rc1/src/gragra/results/_binding.py +70 -0
- gragra-0.2.0rc1/src/gragra/results/_comparison.py +655 -0
- gragra-0.2.0rc1/src/gragra/results/_context.py +301 -0
- gragra-0.2.0rc1/src/gragra/results/_coords.py +92 -0
- gragra-0.2.0rc1/src/gragra/results/_evaluation.py +574 -0
- gragra-0.2.0rc1/src/gragra/results/_field_definition.py +213 -0
- gragra-0.2.0rc1/src/gragra/results/_gen1_definitions.py +142 -0
- gragra-0.2.0rc1/src/gragra/results/_protocols.py +45 -0
- gragra-0.2.0rc1/src/gragra/results/_record.py +65 -0
- gragra-0.2.0rc1/src/gragra/results/_representation.py +18 -0
- gragra-0.2.0rc1/src/gragra/results/_response.py +589 -0
- gragra-0.2.0rc1/src/gragra/results/_spectral.py +163 -0
- gragra-0.2.0rc1/src/gragra/results/_time.py +64 -0
- gragra-0.2.0rc1/src/gragra/results/_time_grid.py +149 -0
- gragra-0.2.0rc1/src/gragra/targets/__init__.py +19 -0
- gragra-0.2.0rc1/src/gragra/targets/_high_points.py +71 -0
- gragra-0.2.0rc1/src/gragra/targets/points.py +45 -0
- gragra-0.2.0rc1/src/gragra/waves/__init__.py +61 -0
- gragra-0.2.0rc1/src/gragra/waves/directions.py +115 -0
- gragra-0.2.0rc1/src/gragra/waves/displacement.py +112 -0
- gragra-0.2.0rc1/src/gragra/waves/halfspace.py +53 -0
- gragra-0.2.0rc1/src/gragra/waves/phase.py +154 -0
- gragra-0.2.0rc1/src/gragra/waves/plane.py +331 -0
- gragra-0.2.0rc1/src/gragra/waves/polarization.py +198 -0
- gragra-0.2.0rc1/src/gragra/waves/rayleigh.py +352 -0
- gragra-0.2.0rc1/src/gragra/waves/stochastic.py +345 -0
- gragra-0.2.0rc1/tests/_continuous_fixtures.py +305 -0
- gragra-0.2.0rc1/tests/_convergence_utils.py +41 -0
- gragra-0.2.0rc1/tests/_finite_body_p1_reference.py +131 -0
- gragra-0.2.0rc1/tests/_finite_body_reference.py +145 -0
- gragra-0.2.0rc1/tests/_hex_volume_oracle.py +192 -0
- gragra-0.2.0rc1/tests/_m3_p6_oracles.py +302 -0
- gragra-0.2.0rc1/tests/_openfoam_synthetic.py +70 -0
- gragra-0.2.0rc1/tests/_provenance_contract.py +137 -0
- gragra-0.2.0rc1/tests/_reference_test_isolation.py +85 -0
- gragra-0.2.0rc1/tests/_specfem_synthetic.py +993 -0
- gragra-0.2.0rc1/tests/_tier_a_checks.py +717 -0
- gragra-0.2.0rc1/tests/conftest.py +240 -0
- gragra-0.2.0rc1/tests/continuous_acceptance.json +316 -0
- gragra-0.2.0rc1/tests/external_model/fixture_models.py +165 -0
- gragra-0.2.0rc1/tests/external_model/test_external_workflows.py +68 -0
- gragra-0.2.0rc1/tests/external_model/workflow_runner.py +140 -0
- gragra-0.2.0rc1/tests/fixtures/two_tetra_host_cavity.msh +21 -0
- gragra-0.2.0rc1/tests/high_level/_plot_extract.py +138 -0
- gragra-0.2.0rc1/tests/high_level/test_c2_compare_baseline.py +154 -0
- gragra-0.2.0rc1/tests/high_level/test_c2_rayleigh_definition.py +101 -0
- gragra-0.2.0rc1/tests/high_level/test_c2_result_integration.py +365 -0
- gragra-0.2.0rc1/tests/high_level/test_c2_sphere_definition.py +71 -0
- gragra-0.2.0rc1/tests/high_level/test_c4_contract_d.py +480 -0
- gragra-0.2.0rc1/tests/high_level/test_c5a_result_contract.py +233 -0
- gragra-0.2.0rc1/tests/high_level/test_common_contract.py +282 -0
- gragra-0.2.0rc1/tests/high_level/test_compare.py +345 -0
- gragra-0.2.0rc1/tests/high_level/test_context.py +247 -0
- gragra-0.2.0rc1/tests/high_level/test_d3_cuboid_model.py +307 -0
- gragra-0.2.0rc1/tests/high_level/test_d3_cylinder_model.py +218 -0
- gragra-0.2.0rc1/tests/high_level/test_d3_halfspace_psv_model.py +241 -0
- gragra-0.2.0rc1/tests/high_level/test_d3_public_factories.py +404 -0
- gragra-0.2.0rc1/tests/high_level/test_d3_spherical_cavity_model.py +392 -0
- gragra-0.2.0rc1/tests/high_level/test_d3_spherical_shell_model.py +477 -0
- gragra-0.2.0rc1/tests/high_level/test_discretize.py +138 -0
- gragra-0.2.0rc1/tests/high_level/test_docs_examples.py +65 -0
- gragra-0.2.0rc1/tests/high_level/test_evaluation.py +560 -0
- gragra-0.2.0rc1/tests/high_level/test_evaluation_result.py +220 -0
- gragra-0.2.0rc1/tests/high_level/test_field_definition.py +547 -0
- gragra-0.2.0rc1/tests/high_level/test_formula_latex.py +82 -0
- gragra-0.2.0rc1/tests/high_level/test_frame_basis_bool.py +99 -0
- gragra-0.2.0rc1/tests/high_level/test_frame_origin_bool.py +39 -0
- gragra-0.2.0rc1/tests/high_level/test_frame_precision.py +51 -0
- gragra-0.2.0rc1/tests/high_level/test_gravity_response_b.py +430 -0
- gragra-0.2.0rc1/tests/high_level/test_hist.py +1549 -0
- gragra-0.2.0rc1/tests/high_level/test_inputs.py +385 -0
- gragra-0.2.0rc1/tests/high_level/test_plot_contribution_hist.py +226 -0
- gragra-0.2.0rc1/tests/high_level/test_plot_hist.py +253 -0
- gragra-0.2.0rc1/tests/high_level/test_plot_result_field.py +684 -0
- gragra-0.2.0rc1/tests/high_level/test_plot_setup.py +472 -0
- gragra-0.2.0rc1/tests/high_level/test_plot_setup_shapes.py +191 -0
- gragra-0.2.0rc1/tests/high_level/test_plotting_lazy_import.py +260 -0
- gragra-0.2.0rc1/tests/high_level/test_point_sum_sources.py +355 -0
- gragra-0.2.0rc1/tests/high_level/test_pure_geometry_common.py +134 -0
- gragra-0.2.0rc1/tests/high_level/test_radial_histogram.py +1038 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_contract_d.py +428 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_gwexpy_contract.py +79 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_integration_i.py +224 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_model.py +216 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_plot_setup_c.py +456 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_response_a.py +327 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_response_integration_i.py +709 -0
- gragra-0.2.0rc1/tests/high_level/test_rayleigh_results_b.py +374 -0
- gragra-0.2.0rc1/tests/high_level/test_source_contribution_contracts.py +534 -0
- gragra-0.2.0rc1/tests/high_level/test_source_diagnostics_integration.py +204 -0
- gragra-0.2.0rc1/tests/high_level/test_source_field.py +1073 -0
- gragra-0.2.0rc1/tests/high_level/test_source_quantities.py +290 -0
- gragra-0.2.0rc1/tests/high_level/test_spherical_phase_speed.py +298 -0
- gragra-0.2.0rc1/tests/high_level/test_static_density_mesh.py +333 -0
- gragra-0.2.0rc1/tests/high_level/test_static_source_compare.py +278 -0
- gragra-0.2.0rc1/tests/high_level/test_workflow.py +51 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_axis_potential_check.py +190 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_axis_potential_reference.py +75 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_elliptic_derivation.py +119 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_potential_derivation.py +95 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_potential_reference.py +75 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_potential_validation_report.py +64 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_surface_reference.py +68 -0
- gragra-0.2.0rc1/tests/oracles/cylinder_validation_report.py +70 -0
- gragra-0.2.0rc1/tests/oracles/data/finite_body_affine_v1.json +1104 -0
- gragra-0.2.0rc1/tests/oracles/data/halfspace_v1.json +1314 -0
- gragra-0.2.0rc1/tests/oracles/data/rayleigh_v1.json +2047 -0
- gragra-0.2.0rc1/tests/oracles/data/specfem_pilot_s1_v1.json +33 -0
- gragra-0.2.0rc1/tests/oracles/gen1/README.md +89 -0
- gragra-0.2.0rc1/tests/oracles/gen1/TRACE-F_B1_v2-obligations.md +93 -0
- gragra-0.2.0rc1/tests/oracles/gen1/acceptance.py +105 -0
- gragra-0.2.0rc1/tests/oracles/gen1/audit_frozen_refinement_traces.py +1815 -0
- gragra-0.2.0rc1/tests/oracles/gen1/audit_frozen_refinement_traces_v3.py +2110 -0
- gragra-0.2.0rc1/tests/oracles/gen1/audit_frozen_refinement_traces_v4.py +2195 -0
- gragra-0.2.0rc1/tests/oracles/gen1/b1-production-comparator-policy-v1.json +223 -0
- gragra-0.2.0rc1/tests/oracles/gen1/b1_analytic_enclosure.py +929 -0
- gragra-0.2.0rc1/tests/oracles/gen1/b1_exact_record_adapter.py +453 -0
- gragra-0.2.0rc1/tests/oracles/gen1/b1_formal_generator.py +831 -0
- gragra-0.2.0rc1/tests/oracles/gen1/cavity_fixtures.py +80 -0
- gragra-0.2.0rc1/tests/oracles/gen1/certify_frozen_zero_estimates.py +197 -0
- gragra-0.2.0rc1/tests/oracles/gen1/compare_noncavity_production.py +419 -0
- gragra-0.2.0rc1/tests/oracles/gen1/compare_source_production.py +386 -0
- gragra-0.2.0rc1/tests/oracles/gen1/compare_sphere_production.py +246 -0
- gragra-0.2.0rc1/tests/oracles/gen1/compare_stochastic_production.py +1639 -0
- gragra-0.2.0rc1/tests/oracles/gen1/compare_surface_production.py +342 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/certified_tail_envelopes.py +163 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/check_cuboid_transform.py +214 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/check_cylinder_cap_residual.py +215 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/check_cylinder_spectral.py +408 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/run_derivations.py +215 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_cuboid_volume.py +302 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_cylinder_cap_residual.py +314 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_cylinder_cartesian.py +119 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_cylinder_conditioning.py +274 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_cylinder_paired_sensitivity.py +276 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_cylinder_single_cap_sensitivity_domain.py +120 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_non_cavity.py +298 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_point_force.py +82 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_polynomial_quadrature.py +288 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_sphere.py +109 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_stochastic_rayleigh.py +65 -0
- gragra-0.2.0rc1/tests/oracles/gen1/derivations/verify_transforms.py +169 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/__init__.py +1 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/v1/__init__.py +1 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/v1/bootstrap.py +769 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/v1/deadline.py +511 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/v1/governor.py +3335 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/v1/ledger.py +1120 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/v1/procfs.py +485 -0
- gragra-0.2.0rc1/tests/oracles/gen1/diagnostic_runtime/v1/source_catalog.py +308 -0
- gragra-0.2.0rc1/tests/oracles/gen1/noncavity_fixtures.py +76 -0
- gragra-0.2.0rc1/tests/oracles/gen1/noncavity_reference.py +533 -0
- gragra-0.2.0rc1/tests/oracles/gen1/plane_static_reference.py +168 -0
- gragra-0.2.0rc1/tests/oracles/gen1/record_cylinder_root_normalization.py +135 -0
- gragra-0.2.0rc1/tests/oracles/gen1/record_frozen_refinement_traces.py +3402 -0
- gragra-0.2.0rc1/tests/oracles/gen1/record_frozen_refinement_traces_v3.py +4446 -0
- gragra-0.2.0rc1/tests/oracles/gen1/record_frozen_refinement_traces_v4.py +4756 -0
- gragra-0.2.0rc1/tests/oracles/gen1/refinement_trace_provenance_v3.py +195 -0
- gragra-0.2.0rc1/tests/oracles/gen1/refinement_trace_provenance_v4.py +732 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_noncavity_reference.py +102 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_refinement_trace_validation.py +180 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_refinement_trace_validation_v4.py +1105 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_source_reference.py +112 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_sphere_high_degree_reference.py +119 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_sphere_reference.py +96 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_stochastic_acoustic_reference.py +122 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_stochastic_local.py +1041 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_stochastic_seismic_reference.py +82 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_stochastic_temperature_reference.py +36 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_surface_parallel.py +179 -0
- gragra-0.2.0rc1/tests/oracles/gen1/run_surface_reference.py +109 -0
- gragra-0.2.0rc1/tests/oracles/gen1/source_fixtures.py +80 -0
- gragra-0.2.0rc1/tests/oracles/gen1/source_reference.py +397 -0
- gragra-0.2.0rc1/tests/oracles/gen1/sphere_fixtures.py +42 -0
- gragra-0.2.0rc1/tests/oracles/gen1/sphere_high_degree_fixtures.py +20 -0
- gragra-0.2.0rc1/tests/oracles/gen1/sphere_high_degree_reference.py +271 -0
- gragra-0.2.0rc1/tests/oracles/gen1/sphere_reference.py +392 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_acceptance.py +510 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_acoustic_reference.py +976 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_attempt.py +484 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/A2-profile.md +100 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/README.md +155 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/__init__.py +1 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/a2.py +929 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/archive.py +183 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/arithmetic.py +226 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/authorship.py +120 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/b1.py +1012 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/closure.py +187 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/graph.py +686 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/reader.py +212 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/retrieval.py +131 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/source.py +161 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_delivery/v2.py +747 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_f_common_v2.py +307 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a1/generator.py +303 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a1/runner.py +627 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a1/verify_derivations.py +36 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/README.md +53 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/budget.py +561 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/freeze.py +174 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/oracle.py +293 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/purpose.py +79 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/review.py +175 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/runner.py +486 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/__init__.py +1 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/family_connections.py +790 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/family_driver.py +789 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/family_execution.py +132 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/family_source_review.py +144 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/family_supervisor.py +456 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/inventory.py +89 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/reader_contract.py +63 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v1/resource_adapter.py +1246 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v2/__init__.py +2 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v2/binding.py +823 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v2/coverage.py +463 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v2/manifest.py +123 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v2/retained_reference.py +1069 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v2/runner.py +225 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v2/worker.py +670 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v3/__init__.py +1 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/v3/binding.py +988 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a2/worker.py +91 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/a3/generator.py +65 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/b1_aux/reference.py +240 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/b1_aux/runner.py +537 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/b2/README.md +35 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/b2/generator.py +276 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/b2/runner.py +865 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/__init__.py +1 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/b1_connections.py +740 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/b1_driver.py +509 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/controller.py +188 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/dependencies.py +487 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/execution.py +126 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_adapter.py +376 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_connections_acoustic.py +272 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_connections_seismic.py +494 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_connections_temperature.py +434 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_controller.py +133 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_driver.py +728 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_execution.py +124 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_inventory.py +65 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_scales.py +193 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_source_review.py +139 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/family_supervisor.py +426 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/inventory.py +259 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/supervisor.py +228 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/common/transport.py +489 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/r1/README.md +57 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/r1/generator.py +266 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/r1/runner.py +865 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/t1/DERIVATION.md +103 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/t1/laplace.py +67 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/t1/reference.py +226 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_formal/t1/runner.py +778 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_seismic_reference.py +713 -0
- gragra-0.2.0rc1/tests/oracles/gen1/stochastic_temperature_reference.py +376 -0
- gragra-0.2.0rc1/tests/oracles/gen1/surface_crosschecks.py +130 -0
- gragra-0.2.0rc1/tests/oracles/gen1/surface_high_precision.py +318 -0
- gragra-0.2.0rc1/tests/oracles/gen1/surface_reference.py +501 -0
- gragra-0.2.0rc1/tests/oracles/gen1/test_frozen_refinement_trace_audit.py +810 -0
- gragra-0.2.0rc1/tests/oracles/gen1/test_refinement_trace_observer_v3.py +1691 -0
- gragra-0.2.0rc1/tests/oracles/gen1/test_refinement_trace_observer_v4.py +4054 -0
- gragra-0.2.0rc1/tests/oracles/gen1/test_refinement_trace_recorder.py +1215 -0
- gragra-0.2.0rc1/tests/oracles/gen1/test_run_refinement_trace_validation_v4.py +744 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/README.md +43 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/ac3_cas_checks.py +349 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/ac3_case_matrix.json +382 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/ac3_evaluation.py +546 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/gravity.py +300 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/oracle.py +156 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/t4_cas_checks.py +227 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/t4_case_matrix.json +444 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/t4_evaluation.py +665 -0
- gragra-0.2.0rc1/tests/oracles/gen1/wave1_3/verify_wave1_3.py +50 -0
- gragra-0.2.0rc1/tests/oracles/generate_finite_body_affine_oracle.py +366 -0
- gragra-0.2.0rc1/tests/oracles/generate_halfspace_oracle.py +548 -0
- gragra-0.2.0rc1/tests/oracles/generate_openfoam_volume_spike.py +498 -0
- gragra-0.2.0rc1/tests/oracles/generate_rayleigh_oracle.py +776 -0
- gragra-0.2.0rc1/tests/oracles/generate_specfem_pilot_invariants.py +164 -0
- gragra-0.2.0rc1/tests/oracles/halfspace_psv_derivation.py +55 -0
- gragra-0.2.0rc1/tests/oracles/rigid_motion.py +113 -0
- gragra-0.2.0rc1/tests/oracles/u10_spherical_shell_general_reference.py +346 -0
- gragra-0.2.0rc1/tests/oracles/u11_rayleigh_small_cavity_reference.py +243 -0
- gragra-0.2.0rc1/tests/oracles/u9_sca_wall_observables_reference.py +225 -0
- gragra-0.2.0rc1/tests/oracles/verify_generic_integration_m2_derivation.py +153 -0
- gragra-0.2.0rc1/tests/oracles/water_analytic_reference.py +861 -0
- gragra-0.2.0rc1/tests/oracles/water_surface_reference.py +271 -0
- gragra-0.2.0rc1/tests/oracles/wave456/assumptions.yaml +11 -0
- gragra-0.2.0rc1/tests/oracles/wave456/generate_references.py +352 -0
- gragra-0.2.0rc1/tests/oracles/wave456/run_generation.py +118 -0
- gragra-0.2.0rc1/tests/oracles/wave456/verify_derivations.py +164 -0
- gragra-0.2.0rc1/tests/reference_fixtures/generate_acoustic_halfspace.py +70 -0
- gragra-0.2.0rc1/tests/test_analytic_bodywave_literature.py +580 -0
- gragra-0.2.0rc1/tests/test_analytic_cavity_coupling.py +117 -0
- gragra-0.2.0rc1/tests/test_analytic_cavity_cuboid.py +167 -0
- gragra-0.2.0rc1/tests/test_analytic_cavity_cylinder.py +204 -0
- gragra-0.2.0rc1/tests/test_analytic_cavity_sphere.py +228 -0
- gragra-0.2.0rc1/tests/test_analytic_cavity_sphere_finite.py +381 -0
- gragra-0.2.0rc1/tests/test_analytic_cavity_sphere_shell_s.py +513 -0
- gragra-0.2.0rc1/tests/test_analytic_cavity_sphere_shell_s_stability.py +185 -0
- gragra-0.2.0rc1/tests/test_analytic_cross_validation.py +45 -0
- gragra-0.2.0rc1/tests/test_analytic_cuboid.py +471 -0
- gragra-0.2.0rc1/tests/test_analytic_cylinder.py +343 -0
- gragra-0.2.0rc1/tests/test_analytic_cylinder_offaxis.py +447 -0
- gragra-0.2.0rc1/tests/test_analytic_cylinder_potential.py +520 -0
- gragra-0.2.0rc1/tests/test_analytic_halfspace.py +127 -0
- gragra-0.2.0rc1/tests/test_analytic_observables_si.py +146 -0
- gragra-0.2.0rc1/tests/test_analytic_oriented.py +231 -0
- gragra-0.2.0rc1/tests/test_analytic_rayleigh_literature.py +1026 -0
- gragra-0.2.0rc1/tests/test_analytic_sca_tensor.py +236 -0
- gragra-0.2.0rc1/tests/test_analytic_uniform_sphere.py +224 -0
- gragra-0.2.0rc1/tests/test_analytic_values.py +197 -0
- gragra-0.2.0rc1/tests/test_analytic_water.py +730 -0
- gragra-0.2.0rc1/tests/test_anna_comparison_contract.py +473 -0
- gragra-0.2.0rc1/tests/test_anna_fullspace_fixture_contract.py +220 -0
- gragra-0.2.0rc1/tests/test_anna_halfspace_fixture_contract.py +203 -0
- gragra-0.2.0rc1/tests/test_arrays.py +97 -0
- gragra-0.2.0rc1/tests/test_background_advection.py +391 -0
- gragra-0.2.0rc1/tests/test_bodywave_literature_oracle.py +1442 -0
- gragra-0.2.0rc1/tests/test_check_pin_reconciliation.py +133 -0
- gragra-0.2.0rc1/tests/test_ci_policy.py +194 -0
- gragra-0.2.0rc1/tests/test_coherent_average.py +186 -0
- gragra-0.2.0rc1/tests/test_coherent_bulk_weights.py +120 -0
- gragra-0.2.0rc1/tests/test_coherent_ensemble.py +79 -0
- gragra-0.2.0rc1/tests/test_coherent_gravitoelastic.py +211 -0
- gragra-0.2.0rc1/tests/test_coherent_observables.py +213 -0
- gragra-0.2.0rc1/tests/test_coherent_weights.py +85 -0
- gragra-0.2.0rc1/tests/test_continuous_contract.py +732 -0
- gragra-0.2.0rc1/tests/test_continuous_docs_surface.py +58 -0
- gragra-0.2.0rc1/tests/test_continuous_fourier_integration.py +560 -0
- gragra-0.2.0rc1/tests/test_continuous_gates.py +381 -0
- gragra-0.2.0rc1/tests/test_continuous_public_api.py +461 -0
- gragra-0.2.0rc1/tests/test_continuous_rigid_motion.py +446 -0
- gragra-0.2.0rc1/tests/test_convergence_cuboid.py +201 -0
- gragra-0.2.0rc1/tests/test_convergence_cylinder.py +198 -0
- gragra-0.2.0rc1/tests/test_convergence_half_primitives.py +404 -0
- gragra-0.2.0rc1/tests/test_convergence_suite.py +127 -0
- gragra-0.2.0rc1/tests/test_cpp_backend_available.py +308 -0
- gragra-0.2.0rc1/tests/test_cpp_backend_missing.py +189 -0
- gragra-0.2.0rc1/tests/test_cpp_core_purity.py +34 -0
- gragra-0.2.0rc1/tests/test_cpp_dipole.py +272 -0
- gragra-0.2.0rc1/tests/test_cpp_required_symbols.py +58 -0
- gragra-0.2.0rc1/tests/test_cupy_backend_available.py +280 -0
- gragra-0.2.0rc1/tests/test_cupy_backend_missing.py +182 -0
- gragra-0.2.0rc1/tests/test_cupy_dipole.py +413 -0
- gragra-0.2.0rc1/tests/test_cupy_dipole_missing.py +126 -0
- gragra-0.2.0rc1/tests/test_cupy_parametric_missing.py +169 -0
- gragra-0.2.0rc1/tests/test_cupy_planewave.py +296 -0
- gragra-0.2.0rc1/tests/test_cupy_registry_contract.py +157 -0
- gragra-0.2.0rc1/tests/test_cylinder_elliptic.py +26 -0
- gragra-0.2.0rc1/tests/test_cylinder_potential_series.py +76 -0
- gragra-0.2.0rc1/tests/test_cylinder_sca_tensor.py +207 -0
- gragra-0.2.0rc1/tests/test_displacement_observables.py +154 -0
- gragra-0.2.0rc1/tests/test_docs_snippets.py +481 -0
- gragra-0.2.0rc1/tests/test_docs_status_blocks.py +545 -0
- gragra-0.2.0rc1/tests/test_dynamic_contributions.py +1043 -0
- gragra-0.2.0rc1/tests/test_examples.py +110 -0
- gragra-0.2.0rc1/tests/test_field_batch.py +306 -0
- gragra-0.2.0rc1/tests/test_field_dipole_diagnostics.py +430 -0
- gragra-0.2.0rc1/tests/test_field_endtoend.py +139 -0
- gragra-0.2.0rc1/tests/test_field_series_hdf5_lane_l.py +844 -0
- gragra-0.2.0rc1/tests/test_fields_evaluation.py +115 -0
- gragra-0.2.0rc1/tests/test_finite_body.py +497 -0
- gragra-0.2.0rc1/tests/test_finite_body_mesh_adapter.py +327 -0
- gragra-0.2.0rc1/tests/test_finite_body_mesh_rigid.py +143 -0
- gragra-0.2.0rc1/tests/test_finite_body_p1.py +426 -0
- gragra-0.2.0rc1/tests/test_finite_body_p1_quadrature.py +386 -0
- gragra-0.2.0rc1/tests/test_first_wave_imports.py +45 -0
- gragra-0.2.0rc1/tests/test_fixed_mesh_series.py +215 -0
- gragra-0.2.0rc1/tests/test_fullspace_bodywave_private.py +204 -0
- gragra-0.2.0rc1/tests/test_gate_mutation.py +265 -0
- gragra-0.2.0rc1/tests/test_generic_contraction_backend.py +327 -0
- gragra-0.2.0rc1/tests/test_generic_displacement_contraction.py +530 -0
- gragra-0.2.0rc1/tests/test_generic_enigma_harms_cylinder.py +378 -0
- gragra-0.2.0rc1/tests/test_generic_execution_planner.py +809 -0
- gragra-0.2.0rc1/tests/test_generic_execution_strategies.py +410 -0
- gragra-0.2.0rc1/tests/test_generic_mass_coupling.py +229 -0
- gragra-0.2.0rc1/tests/test_generic_quadrature_field_sampler.py +373 -0
- gragra-0.2.0rc1/tests/test_generic_source_provider.py +341 -0
- gragra-0.2.0rc1/tests/test_geometry.py +347 -0
- gragra-0.2.0rc1/tests/test_geometry_integration.py +225 -0
- gragra-0.2.0rc1/tests/test_geometry_primitives.py +293 -0
- gragra-0.2.0rc1/tests/test_geometry_surface_mesh.py +198 -0
- gragra-0.2.0rc1/tests/test_geometry_vs_analytic.py +92 -0
- gragra-0.2.0rc1/tests/test_git_blob_pins.py +273 -0
- gragra-0.2.0rc1/tests/test_gravity_result.py +237 -0
- gragra-0.2.0rc1/tests/test_gravity_result_examples.py +138 -0
- gragra-0.2.0rc1/tests/test_gwexpy_adapter_available.py +226 -0
- gragra-0.2.0rc1/tests/test_gwexpy_adapter_missing.py +42 -0
- gragra-0.2.0rc1/tests/test_gwexpy_observable.py +341 -0
- gragra-0.2.0rc1/tests/test_gwexpy_observable_missing.py +34 -0
- gragra-0.2.0rc1/tests/test_gwexpy_series.py +466 -0
- gragra-0.2.0rc1/tests/test_gwexpy_series_missing.py +26 -0
- gragra-0.2.0rc1/tests/test_gwexpy_source.py +277 -0
- gragra-0.2.0rc1/tests/test_gwexpy_source_missing.py +31 -0
- gragra-0.2.0rc1/tests/test_halfspace_gravity_oracle.py +226 -0
- gragra-0.2.0rc1/tests/test_halfspace_psv.py +432 -0
- gragra-0.2.0rc1/tests/test_hdf5_field_io.py +730 -0
- gragra-0.2.0rc1/tests/test_hex8_geometry.py +90 -0
- gragra-0.2.0rc1/tests/test_import.py +350 -0
- gragra-0.2.0rc1/tests/test_kernel_contract.py +98 -0
- gragra-0.2.0rc1/tests/test_kernel_dipole_contract.py +218 -0
- gragra-0.2.0rc1/tests/test_kernel_displacement_contracts.py +259 -0
- gragra-0.2.0rc1/tests/test_lebedev_grid.py +81 -0
- gragra-0.2.0rc1/tests/test_m3_p6_science.py +1633 -0
- gragra-0.2.0rc1/tests/test_m3b_h1_rigid_motion.py +197 -0
- gragra-0.2.0rc1/tests/test_m3b_h1_science.py +149 -0
- gragra-0.2.0rc1/tests/test_m3b_h2_h3_spectral.py +198 -0
- gragra-0.2.0rc1/tests/test_m3b_p2_regressions.py +164 -0
- gragra-0.2.0rc1/tests/test_m3b_rot_dft.py +137 -0
- gragra-0.2.0rc1/tests/test_material_hex8.py +491 -0
- gragra-0.2.0rc1/tests/test_mathjax_rendering.py +269 -0
- gragra-0.2.0rc1/tests/test_mesh_quality.py +180 -0
- gragra-0.2.0rc1/tests/test_meshio_adapter.py +128 -0
- gragra-0.2.0rc1/tests/test_meshio_volume_adapter.py +473 -0
- gragra-0.2.0rc1/tests/test_metadata.py +134 -0
- gragra-0.2.0rc1/tests/test_nonuniform_rho0.py +373 -0
- gragra-0.2.0rc1/tests/test_numba_backend_available.py +152 -0
- gragra-0.2.0rc1/tests/test_numba_backend_missing.py +111 -0
- gragra-0.2.0rc1/tests/test_numba_dipole.py +178 -0
- gragra-0.2.0rc1/tests/test_numba_displacement_derivatives.py +231 -0
- gragra-0.2.0rc1/tests/test_observable_series.py +195 -0
- gragra-0.2.0rc1/tests/test_observables.py +306 -0
- gragra-0.2.0rc1/tests/test_observables_bodywave_literature.py +72 -0
- gragra-0.2.0rc1/tests/test_observables_dipole.py +58 -0
- gragra-0.2.0rc1/tests/test_observables_rayleigh_literature.py +46 -0
- gragra-0.2.0rc1/tests/test_openfoam_density.py +164 -0
- gragra-0.2.0rc1/tests/test_openfoam_density_missing.py +244 -0
- gragra-0.2.0rc1/tests/test_parametric_contracts.py +220 -0
- gragra-0.2.0rc1/tests/test_parametric_cpp.py +150 -0
- gragra-0.2.0rc1/tests/test_parametric_numba.py +111 -0
- gragra-0.2.0rc1/tests/test_periodic_fourier.py +544 -0
- gragra-0.2.0rc1/tests/test_plane_wave_sources.py +123 -0
- gragra-0.2.0rc1/tests/test_planewave_backends.py +216 -0
- gragra-0.2.0rc1/tests/test_point_sources.py +233 -0
- gragra-0.2.0rc1/tests/test_prescribed_trajectory_csv.py +63 -0
- gragra-0.2.0rc1/tests/test_public_docs.py +82 -0
- gragra-0.2.0rc1/tests/test_r6_multipole_science.py +198 -0
- gragra-0.2.0rc1/tests/test_rayleigh_cadence.py +178 -0
- gragra-0.2.0rc1/tests/test_rayleigh_domain_sensitivity.py +130 -0
- gragra-0.2.0rc1/tests/test_rayleigh_gravity_oracle.py +242 -0
- gragra-0.2.0rc1/tests/test_rayleigh_production_path.py +164 -0
- gragra-0.2.0rc1/tests/test_rayleigh_timefit.py +44 -0
- gragra-0.2.0rc1/tests/test_regular_grid.py +322 -0
- gragra-0.2.0rc1/tests/test_reproduce_report.py +189 -0
- gragra-0.2.0rc1/tests/test_research_rayleigh_gravity_window_diagnostics.py +95 -0
- gragra-0.2.0rc1/tests/test_research_rayleigh_window_fit_diagnostics.py +85 -0
- gragra-0.2.0rc1/tests/test_research_wave456_finite_body.py +285 -0
- gragra-0.2.0rc1/tests/test_research_wave456_rotation.py +181 -0
- gragra-0.2.0rc1/tests/test_research_wave4_specfem_protocol.py +522 -0
- gragra-0.2.0rc1/tests/test_research_wave5_crosspaths_gwexpy.py +88 -0
- gragra-0.2.0rc1/tests/test_research_wave5_crosspaths_hdf5.py +70 -0
- gragra-0.2.0rc1/tests/test_research_wave5_rayleigh_crosspaths.py +690 -0
- gragra-0.2.0rc1/tests/test_research_wave5_specfem_export.py +551 -0
- gragra-0.2.0rc1/tests/test_research_wave6_heterogeneous_box_reference.py +131 -0
- gragra-0.2.0rc1/tests/test_research_wave6_quadrature_order_study.py +134 -0
- gragra-0.2.0rc1/tests/test_research_wave6_specfem_analysis.py +503 -0
- gragra-0.2.0rc1/tests/test_research_wave6_spherical_cavity_general_point.py +200 -0
- gragra-0.2.0rc1/tests/test_research_wave6_spherical_cavity_near_wall.py +75 -0
- gragra-0.2.0rc1/tests/test_rigid_motion.py +476 -0
- gragra-0.2.0rc1/tests/test_rigid_motion_observables.py +806 -0
- gragra-0.2.0rc1/tests/test_rigid_motion_science.py +210 -0
- gragra-0.2.0rc1/tests/test_ruff_exclusion_identity_v1.py +692 -0
- gragra-0.2.0rc1/tests/test_scipy_dependency_scope.py +75 -0
- gragra-0.2.0rc1/tests/test_softening.py +65 -0
- gragra-0.2.0rc1/tests/test_source_kernel_terms.py +152 -0
- gragra-0.2.0rc1/tests/test_specfem_bin.py +394 -0
- gragra-0.2.0rc1/tests/test_specfem_exporter.py +568 -0
- gragra-0.2.0rc1/tests/test_specfem_gll.py +462 -0
- gragra-0.2.0rc1/tests/test_specfem_pilot_gate.py +229 -0
- gragra-0.2.0rc1/tests/test_specfem_provenance.py +771 -0
- gragra-0.2.0rc1/tests/test_specfem_reader.py +638 -0
- gragra-0.2.0rc1/tests/test_specfem_schema.py +564 -0
- gragra-0.2.0rc1/tests/test_specfem_streaming_lane_l.py +390 -0
- gragra-0.2.0rc1/tests/test_specfem_streaming_numba.py +61 -0
- gragra-0.2.0rc1/tests/test_spectral_conventions.py +541 -0
- gragra-0.2.0rc1/tests/test_spectral_representation.py +236 -0
- gragra-0.2.0rc1/tests/test_spherical_cavity_series.py +263 -0
- gragra-0.2.0rc1/tests/test_stochastic_a2_continuity.py +212 -0
- gragra-0.2.0rc1/tests/test_stochastic_acoustic.py +232 -0
- gragra-0.2.0rc1/tests/test_stochastic_acoustic_zero_radius.py +68 -0
- gragra-0.2.0rc1/tests/test_stochastic_bodywave.py +283 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_a2.py +601 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_arithmetic.py +228 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_authorship.py +153 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_b1.py +1154 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_dispatch.py +71 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_evidence.py +847 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_retrieval.py +168 -0
- gragra-0.2.0rc1/tests/test_stochastic_delivery_v2.py +761 -0
- gragra-0.2.0rc1/tests/test_stochastic_family_comparator.py +873 -0
- gragra-0.2.0rc1/tests/test_stochastic_family_connections_a2.py +693 -0
- gragra-0.2.0rc1/tests/test_stochastic_family_connections_acoustic.py +251 -0
- gragra-0.2.0rc1/tests/test_stochastic_family_connections_seismic.py +491 -0
- gragra-0.2.0rc1/tests/test_stochastic_family_record_serialization.py +172 -0
- gragra-0.2.0rc1/tests/test_stochastic_rayleigh.py +204 -0
- gragra-0.2.0rc1/tests/test_stochastic_reference_test_isolation.py +91 -0
- gragra-0.2.0rc1/tests/test_stochastic_temperature.py +128 -0
- gragra-0.2.0rc1/tests/test_stochastic_temperature_stability.py +90 -0
- gragra-0.2.0rc1/tests/test_streaming_lane_l.py +647 -0
- gragra-0.2.0rc1/tests/test_surface_field.py +344 -0
- gragra-0.2.0rc1/tests/test_surface_orientation.py +522 -0
- gragra-0.2.0rc1/tests/test_surface_sources.py +216 -0
- gragra-0.2.0rc1/tests/test_thermodynamic.py +129 -0
- gragra-0.2.0rc1/tests/test_third_wave_imports.py +30 -0
- gragra-0.2.0rc1/tests/test_trajectory.py +306 -0
- gragra-0.2.0rc1/tests/test_u10_spherical_shell_general.py +557 -0
- gragra-0.2.0rc1/tests/test_u11_rayleigh_small_cavity.py +381 -0
- gragra-0.2.0rc1/tests/test_u9_sca_wall_observables.py +500 -0
- gragra-0.2.0rc1/tests/test_u9_u10_u11_integration.py +183 -0
- gragra-0.2.0rc1/tests/test_unstructured_field.py +315 -0
- gragra-0.2.0rc1/tests/test_validation_extra_available.py +139 -0
- gragra-0.2.0rc1/tests/test_volume_sources.py +153 -0
- gragra-0.2.0rc1/tests/test_water_surface_models.py +479 -0
- gragra-0.2.0rc1/tests/test_wave456_observable_wrappers.py +25 -0
- gragra-0.2.0rc1/tests/test_wave456_reference.py +377 -0
- gragra-0.2.0rc1/tests/test_wave4_environment.py +45 -0
- gragra-0.2.0rc1/tests/test_wave5_environment_transport.py +169 -0
- gragra-0.2.0rc1/tests/test_wave6_environment_acoustic.py +146 -0
- gragra-0.2.0rc1/tests/test_wave6_mesh_exchange_e2e.py +63 -0
- gragra-0.2.0rc1/tests/test_wave_directions.py +131 -0
- gragra-0.2.0rc1/tests/test_wave_halfspace.py +128 -0
- gragra-0.2.0rc1/tests/test_wave_phase.py +123 -0
- gragra-0.2.0rc1/tests/test_wave_polarization.py +210 -0
- gragra-0.2.0rc1/tests/test_wave_rayleigh.py +302 -0
- gragra-0.2.0rc1/tests/test_waves_displacement.py +88 -0
- gragra-0.2.0rc1/tests/test_waves_stochastic.py +570 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
concurrency:
|
|
10
|
+
group: public-ci-${{ github.event.pull_request.number || github.ref }}
|
|
11
|
+
cancel-in-progress: true
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
policy:
|
|
18
|
+
if: github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public'
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
timeout-minutes: 10
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
23
|
+
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c
|
|
24
|
+
with:
|
|
25
|
+
python-version: '3.11'
|
|
26
|
+
- run: python -m pip install '.[dev]'
|
|
27
|
+
- run: python -m pytest -q tests/test_ci_policy.py
|
|
28
|
+
|
|
29
|
+
changes:
|
|
30
|
+
if: github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public' && needs.policy.result == 'success'
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
timeout-minutes: 10
|
|
33
|
+
needs: policy
|
|
34
|
+
outputs:
|
|
35
|
+
docs_only: ${{ steps.classify.outputs.docs_only }}
|
|
36
|
+
reason: ${{ steps.classify.outputs.reason }}
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
39
|
+
with:
|
|
40
|
+
fetch-depth: 0
|
|
41
|
+
- id: classify
|
|
42
|
+
env:
|
|
43
|
+
BASE_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.base.sha || github.event.before }}
|
|
44
|
+
HEAD_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
|
|
45
|
+
run: |
|
|
46
|
+
set -euo pipefail
|
|
47
|
+
if [[ "$BASE_SHA" == "0000000000000000000000000000000000000000" ]]; then
|
|
48
|
+
{
|
|
49
|
+
echo 'docs_only=false'
|
|
50
|
+
echo 'reason=full: initial push has no base commit'
|
|
51
|
+
} >> "$GITHUB_OUTPUT"
|
|
52
|
+
exit 0
|
|
53
|
+
fi
|
|
54
|
+
git diff --name-status --find-renames "$BASE_SHA" "$HEAD_SHA" > changes.status
|
|
55
|
+
python scripts/ci/classify_changes.py < changes.status > classification.out
|
|
56
|
+
cat classification.out >> "$GITHUB_OUTPUT"
|
|
57
|
+
|
|
58
|
+
docs:
|
|
59
|
+
if: github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public' && needs.changes.result == 'success' && needs.changes.outputs.docs_only == 'true'
|
|
60
|
+
runs-on: ubuntu-latest
|
|
61
|
+
timeout-minutes: 15
|
|
62
|
+
needs: changes
|
|
63
|
+
steps:
|
|
64
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
65
|
+
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c
|
|
66
|
+
with:
|
|
67
|
+
python-version: '3.11'
|
|
68
|
+
- run: python -m pip install '.[dev,reference,field-io,docs,mesh]'
|
|
69
|
+
- run: ruff check src
|
|
70
|
+
- run: mkdocs build --strict
|
|
71
|
+
- run: python -m pytest -q tests/test_public_docs.py
|
|
72
|
+
|
|
73
|
+
reference:
|
|
74
|
+
if: github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public' && needs.changes.result == 'success' && needs.changes.outputs.docs_only != 'true'
|
|
75
|
+
runs-on: ubuntu-latest
|
|
76
|
+
timeout-minutes: 20
|
|
77
|
+
needs: changes
|
|
78
|
+
strategy:
|
|
79
|
+
matrix:
|
|
80
|
+
python-version: ['3.11', '3.12']
|
|
81
|
+
steps:
|
|
82
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
83
|
+
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c
|
|
84
|
+
with:
|
|
85
|
+
python-version: ${{ matrix.python-version }}
|
|
86
|
+
- run: python -m pip install -e '.[dev,reference,field-io,docs,mesh]'
|
|
87
|
+
- run: ruff check src
|
|
88
|
+
- run: ruff format --check src
|
|
89
|
+
- run: python -m pytest -q
|
|
90
|
+
- run: mkdocs build --strict
|
|
91
|
+
|
|
92
|
+
numba-parity:
|
|
93
|
+
if: github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public' && needs.changes.result == 'success' && needs.changes.outputs.docs_only != 'true'
|
|
94
|
+
runs-on: ubuntu-latest
|
|
95
|
+
timeout-minutes: 20
|
|
96
|
+
needs: changes
|
|
97
|
+
steps:
|
|
98
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
99
|
+
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c
|
|
100
|
+
with:
|
|
101
|
+
python-version: '3.11'
|
|
102
|
+
- run: python -m pip install '.[dev,reference,field-io,numba]'
|
|
103
|
+
- run: GRAGRA_SPECFEM_BACKEND=numba python -m pytest -q tests/test_specfem_reader.py::test_displacement_acceleration_backend_matches_numpy_when_required
|
|
104
|
+
|
|
105
|
+
cpp-parity:
|
|
106
|
+
if: github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public' && needs.changes.result == 'success' && needs.changes.outputs.docs_only != 'true'
|
|
107
|
+
runs-on: ubuntu-latest
|
|
108
|
+
timeout-minutes: 30
|
|
109
|
+
needs: changes
|
|
110
|
+
steps:
|
|
111
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
112
|
+
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c
|
|
113
|
+
with:
|
|
114
|
+
python-version: '3.11'
|
|
115
|
+
- name: Build and install the C++ backend from a copied tree
|
|
116
|
+
run: |
|
|
117
|
+
set -euo pipefail
|
|
118
|
+
source_copy=$(mktemp -d)
|
|
119
|
+
build_cwd=$(mktemp -d)
|
|
120
|
+
cp -a "$GITHUB_WORKSPACE"/. "$source_copy"/
|
|
121
|
+
cd "$build_cwd"
|
|
122
|
+
CMAKE_ARGS=-DGRAGRA_BUILD_CPP=ON python -m pip install "$source_copy[dev,reference,field-io,docs,mesh]"
|
|
123
|
+
python - <<'PY'
|
|
124
|
+
import os
|
|
125
|
+
import pathlib
|
|
126
|
+
import gragra
|
|
127
|
+
import gragra._cpp_backend as backend
|
|
128
|
+
from gragra.kernels._cpp_required import ALL_REQUIRED
|
|
129
|
+
|
|
130
|
+
missing = [name for name in ALL_REQUIRED if not hasattr(backend, name)]
|
|
131
|
+
if missing:
|
|
132
|
+
raise SystemExit(f"missing required C++ symbols: {missing}")
|
|
133
|
+
if pathlib.Path(gragra.__file__).resolve().is_relative_to(
|
|
134
|
+
pathlib.Path(os.environ["CHECKOUT_ROOT"]).resolve()
|
|
135
|
+
):
|
|
136
|
+
raise SystemExit(f"source-tree import: {gragra.__file__}")
|
|
137
|
+
PY
|
|
138
|
+
env:
|
|
139
|
+
CHECKOUT_ROOT: ${{ github.workspace }}
|
|
140
|
+
- name: Run strict C++ parity outside the checkout
|
|
141
|
+
run: |
|
|
142
|
+
set -euo pipefail
|
|
143
|
+
test_cwd=$(mktemp -d)
|
|
144
|
+
cd "$test_cwd"
|
|
145
|
+
GRAGRA_SPECFEM_BACKEND=cpp python -m pytest -q "$GITHUB_WORKSPACE/tests/test_specfem_reader.py::test_displacement_acceleration_backend_matches_numpy_when_required"
|
|
146
|
+
|
|
147
|
+
package-smoke:
|
|
148
|
+
if: github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public' && needs.changes.result == 'success' && needs.changes.outputs.docs_only != 'true'
|
|
149
|
+
runs-on: ubuntu-latest
|
|
150
|
+
timeout-minutes: 25
|
|
151
|
+
needs: changes
|
|
152
|
+
steps:
|
|
153
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
|
|
154
|
+
- uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c
|
|
155
|
+
with:
|
|
156
|
+
python-version: '3.11'
|
|
157
|
+
- name: Build artifacts and test them in fresh environments
|
|
158
|
+
run: |
|
|
159
|
+
set -euo pipefail
|
|
160
|
+
artifact_dir=$(mktemp -d)
|
|
161
|
+
python -m pip install build
|
|
162
|
+
python -m build --wheel --sdist --outdir "$artifact_dir"
|
|
163
|
+
for artifact in "$artifact_dir"/*.whl "$artifact_dir"/*.tar.gz; do
|
|
164
|
+
venv_dir=$(mktemp -d)
|
|
165
|
+
python -m venv "$venv_dir"
|
|
166
|
+
"$venv_dir/bin/python" -m pip install "$artifact"
|
|
167
|
+
"$venv_dir/bin/python" - <<PY
|
|
168
|
+
import pathlib
|
|
169
|
+
import gragra
|
|
170
|
+
|
|
171
|
+
checkout = pathlib.Path(r"$GITHUB_WORKSPACE").resolve()
|
|
172
|
+
imported = pathlib.Path(gragra.__file__).resolve()
|
|
173
|
+
if checkout == imported or checkout in imported.parents:
|
|
174
|
+
raise SystemExit(f"source-tree import: {imported}")
|
|
175
|
+
print(imported)
|
|
176
|
+
PY
|
|
177
|
+
done
|
|
178
|
+
|
|
179
|
+
required:
|
|
180
|
+
if: always() && github.repository == 'tatsuki-washimi/gragra' && github.event.repository.visibility == 'public'
|
|
181
|
+
runs-on: ubuntu-latest
|
|
182
|
+
timeout-minutes: 10
|
|
183
|
+
needs: [policy, changes, docs, reference, numba-parity, cpp-parity, package-smoke]
|
|
184
|
+
steps:
|
|
185
|
+
- name: Require the selected public checks
|
|
186
|
+
env:
|
|
187
|
+
POLICY: ${{ needs.policy.result }}
|
|
188
|
+
CHANGES: ${{ needs.changes.result }}
|
|
189
|
+
DOCS: ${{ needs.docs.result }}
|
|
190
|
+
REFERENCE: ${{ needs.reference.result }}
|
|
191
|
+
NUMBA: ${{ needs.numba-parity.result }}
|
|
192
|
+
CPP: ${{ needs.cpp-parity.result }}
|
|
193
|
+
PACKAGE: ${{ needs.package-smoke.result }}
|
|
194
|
+
DOCS_ONLY: ${{ needs.changes.outputs.docs_only }}
|
|
195
|
+
run: |
|
|
196
|
+
set -euo pipefail
|
|
197
|
+
for status in "$POLICY" "$CHANGES" "$DOCS" "$REFERENCE" "$NUMBA" "$CPP" "$PACKAGE"; do
|
|
198
|
+
case "$status" in
|
|
199
|
+
failure|cancelled)
|
|
200
|
+
echo "selected check ended with $status"
|
|
201
|
+
exit 1
|
|
202
|
+
;;
|
|
203
|
+
esac
|
|
204
|
+
done
|
|
205
|
+
[[ "$POLICY" == success ]] || { echo "policy=$POLICY"; exit 1; }
|
|
206
|
+
[[ "$CHANGES" == success ]] || { echo "changes=$CHANGES"; exit 1; }
|
|
207
|
+
case "$DOCS_ONLY" in
|
|
208
|
+
true)
|
|
209
|
+
[[ "$DOCS" == success ]] || { echo "docs=$DOCS"; exit 1; }
|
|
210
|
+
[[ "$REFERENCE" == skipped ]] || { echo "reference=$REFERENCE"; exit 1; }
|
|
211
|
+
[[ "$NUMBA" == skipped ]] || { echo "numba-parity=$NUMBA"; exit 1; }
|
|
212
|
+
[[ "$CPP" == skipped ]] || { echo "cpp-parity=$CPP"; exit 1; }
|
|
213
|
+
[[ "$PACKAGE" == skipped ]] || { echo "package-smoke=$PACKAGE"; exit 1; }
|
|
214
|
+
;;
|
|
215
|
+
false)
|
|
216
|
+
[[ "$DOCS" == skipped ]] || { echo "docs=$DOCS"; exit 1; }
|
|
217
|
+
[[ "$REFERENCE" == success ]] || { echo "reference=$REFERENCE"; exit 1; }
|
|
218
|
+
[[ "$NUMBA" == success ]] || { echo "numba-parity=$NUMBA"; exit 1; }
|
|
219
|
+
[[ "$CPP" == success ]] || { echo "cpp-parity=$CPP"; exit 1; }
|
|
220
|
+
[[ "$PACKAGE" == success ]] || { echo "package-smoke=$PACKAGE"; exit 1; }
|
|
221
|
+
;;
|
|
222
|
+
*)
|
|
223
|
+
echo "invalid docs_only=$DOCS_ONLY"
|
|
224
|
+
exit 1
|
|
225
|
+
;;
|
|
226
|
+
esac
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
name: Deploy Pages
|
|
2
|
+
|
|
3
|
+
'on':
|
|
4
|
+
# G3 production: deploy the pushed main commit. Manual SHA previews remain available.
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
source_sha:
|
|
10
|
+
description: 'Exact commit SHA in main or historical PR #6 for manual preview'
|
|
11
|
+
required: true
|
|
12
|
+
default: 'b9f54481ec748aa28925dc30b349c7144336acfa'
|
|
13
|
+
|
|
14
|
+
concurrency:
|
|
15
|
+
group: pages-${{ github.workflow }}-${{ github.ref }}
|
|
16
|
+
cancel-in-progress: true
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
build:
|
|
20
|
+
name: Build site (strict)
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
timeout-minutes: 15
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
steps:
|
|
26
|
+
- name: Validate source revision input
|
|
27
|
+
env:
|
|
28
|
+
SOURCE_SHA: ${{ github.event_name == 'push' && github.sha || inputs.source_sha }}
|
|
29
|
+
run: |
|
|
30
|
+
set -euo pipefail
|
|
31
|
+
if [[ ! "$SOURCE_SHA" =~ ^[0-9a-fA-F]{40}$ ]]; then
|
|
32
|
+
echo '::error::source_sha must be a complete 40-character commit SHA'
|
|
33
|
+
exit 1
|
|
34
|
+
fi
|
|
35
|
+
- name: Checkout source repository
|
|
36
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
37
|
+
with:
|
|
38
|
+
ref: ${{ github.event_name == 'push' && github.sha || inputs.source_sha }}
|
|
39
|
+
fetch-depth: 0
|
|
40
|
+
|
|
41
|
+
- name: Record and verify target revision
|
|
42
|
+
env:
|
|
43
|
+
SOURCE_SHA: ${{ github.event_name == 'push' && github.sha || inputs.source_sha }}
|
|
44
|
+
RUN_EVENT: ${{ github.event_name }}
|
|
45
|
+
run: |
|
|
46
|
+
set -euo pipefail
|
|
47
|
+
RESOLVED_SHA="$(git rev-parse HEAD)"
|
|
48
|
+
if [[ "${SOURCE_SHA,,}" != "$RESOLVED_SHA" ]]; then
|
|
49
|
+
echo '::error::Checked-out revision does not match requested source_sha'
|
|
50
|
+
exit 1
|
|
51
|
+
fi
|
|
52
|
+
# Manual previews may use a reviewed main or historical PR #6 commit.
|
|
53
|
+
# The main push path always checks out the event's exact commit SHA.
|
|
54
|
+
if [[ "$RUN_EVENT" == "workflow_dispatch" ]]; then
|
|
55
|
+
git fetch --no-tags origin main 'refs/pull/6/head:refs/remotes/origin/pr-6-preview'
|
|
56
|
+
if ! git merge-base --is-ancestor "$RESOLVED_SHA" refs/remotes/origin/main &&
|
|
57
|
+
! git merge-base --is-ancestor "$RESOLVED_SHA" refs/remotes/origin/pr-6-preview; then
|
|
58
|
+
echo '::error::source_sha must be in main or PR #6 history'
|
|
59
|
+
exit 1
|
|
60
|
+
fi
|
|
61
|
+
fi
|
|
62
|
+
echo "Requested source_sha: $SOURCE_SHA"
|
|
63
|
+
echo "Resolved commit SHA: $RESOLVED_SHA"
|
|
64
|
+
echo "Commit Author: $(git log -1 --format='%an <%ae>')"
|
|
65
|
+
echo "Commit Date: $(git log -1 --format='%cd')"
|
|
66
|
+
echo "Commit Subject: $(git log -1 --format='%s')"
|
|
67
|
+
echo "RESOLVED_SHA=$RESOLVED_SHA" >> "$GITHUB_ENV"
|
|
68
|
+
|
|
69
|
+
- name: Set up Python 3.11
|
|
70
|
+
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.3.0
|
|
71
|
+
with:
|
|
72
|
+
python-version: '3.11'
|
|
73
|
+
cache: 'pip'
|
|
74
|
+
|
|
75
|
+
- name: Install documentation dependencies
|
|
76
|
+
run: |
|
|
77
|
+
python -m pip install --upgrade pip
|
|
78
|
+
python -m pip install '.[dev,field-io,docs]'
|
|
79
|
+
|
|
80
|
+
- name: Build documentation (strict)
|
|
81
|
+
run: |
|
|
82
|
+
python -m mkdocs build --strict
|
|
83
|
+
|
|
84
|
+
- name: Upload Pages artifact
|
|
85
|
+
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1
|
|
86
|
+
with:
|
|
87
|
+
path: site/
|
|
88
|
+
|
|
89
|
+
deploy:
|
|
90
|
+
name: Deploy to GitHub Pages
|
|
91
|
+
needs: build
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
timeout-minutes: 10
|
|
94
|
+
permissions:
|
|
95
|
+
pages: write
|
|
96
|
+
id-token: write
|
|
97
|
+
environment:
|
|
98
|
+
name: github-pages
|
|
99
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
100
|
+
steps:
|
|
101
|
+
- name: Deploy to GitHub Pages
|
|
102
|
+
id: deployment
|
|
103
|
+
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
name: Publish gragra 0.2.0rc1 to PyPI (manual)
|
|
2
|
+
|
|
3
|
+
# One-time, opt-in launch for the ENIGMA 2026 presentation.
|
|
4
|
+
# Run from the main branch on 2026-11-11 UTC, after the Trusted Publisher
|
|
5
|
+
# is registered at pypi.org (owner tatsuki-washimi, repo gragra,
|
|
6
|
+
# workflow publish-pypi.yml, no GitHub environment).
|
|
7
|
+
on:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
build-and-check:
|
|
15
|
+
name: Build and smoke-test frozen release
|
|
16
|
+
# A release can only be initiated explicitly from main.
|
|
17
|
+
if: github.event_name == 'workflow_dispatch' && github.ref == 'refs/heads/main'
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
timeout-minutes: 30
|
|
20
|
+
steps:
|
|
21
|
+
- name: Require UTC release day
|
|
22
|
+
shell: bash
|
|
23
|
+
run: |
|
|
24
|
+
set -euo pipefail
|
|
25
|
+
today="$(date -u +%F)"
|
|
26
|
+
if [[ "$today" != "2026-11-11" ]]; then
|
|
27
|
+
echo "::error::Publish only on 2026-11-11 UTC (09:00 KST onwards). Current UTC date: $today"
|
|
28
|
+
exit 1
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
# Pin the distribution to the already verified public main revision.
|
|
32
|
+
# The workflow addition itself does not modify the source of the release.
|
|
33
|
+
- name: Check out frozen release source
|
|
34
|
+
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
35
|
+
with:
|
|
36
|
+
ref: f44716387d6c894efc0e20898ca7521ca4d97e53
|
|
37
|
+
persist-credentials: false
|
|
38
|
+
|
|
39
|
+
- name: Verify exact release commit and metadata
|
|
40
|
+
shell: bash
|
|
41
|
+
run: |
|
|
42
|
+
set -euo pipefail
|
|
43
|
+
test "$(git rev-parse HEAD)" = "f44716387d6c894efc0e20898ca7521ca4d97e53"
|
|
44
|
+
python - <<'PY'
|
|
45
|
+
import tomllib
|
|
46
|
+
from pathlib import Path
|
|
47
|
+
|
|
48
|
+
project = tomllib.loads(Path("pyproject.toml").read_text())["project"]
|
|
49
|
+
assert project["name"] == "gragra", project["name"]
|
|
50
|
+
assert project["version"] == "0.2.0rc1", project["version"]
|
|
51
|
+
assert 'version: 0.2.0rc1' in Path("CITATION.cff").read_text()
|
|
52
|
+
PY
|
|
53
|
+
|
|
54
|
+
- name: Set up Python 3.11
|
|
55
|
+
uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.3.0
|
|
56
|
+
with:
|
|
57
|
+
python-version: '3.11'
|
|
58
|
+
|
|
59
|
+
- name: Build wheel and sdist
|
|
60
|
+
shell: bash
|
|
61
|
+
run: |
|
|
62
|
+
set -euo pipefail
|
|
63
|
+
python -m pip install --upgrade build twine
|
|
64
|
+
python -m build --sdist --wheel --outdir dist
|
|
65
|
+
python -m twine check dist/*
|
|
66
|
+
test -f dist/gragra-0.2.0rc1-py3-none-any.whl
|
|
67
|
+
test -f dist/gragra-0.2.0rc1.tar.gz
|
|
68
|
+
sha256sum dist/*
|
|
69
|
+
|
|
70
|
+
- name: Install each artifact into a new environment and compute gravity
|
|
71
|
+
shell: bash
|
|
72
|
+
run: |
|
|
73
|
+
set -euo pipefail
|
|
74
|
+
for artifact in "$PWD"/dist/*.whl "$PWD"/dist/*.tar.gz; do
|
|
75
|
+
venv_dir="$(mktemp -d)"
|
|
76
|
+
test_dir="$(mktemp -d)"
|
|
77
|
+
python -m venv "$venv_dir"
|
|
78
|
+
"$venv_dir/bin/python" -m pip install "$artifact"
|
|
79
|
+
(
|
|
80
|
+
cd "$test_dir"
|
|
81
|
+
"$venv_dir/bin/python" - <<'PY'
|
|
82
|
+
from importlib.metadata import version
|
|
83
|
+
import numpy as np
|
|
84
|
+
from gragra import G_SI, PointMass, point_acceleration
|
|
85
|
+
|
|
86
|
+
assert version("gragra") == "0.2.0rc1"
|
|
87
|
+
a = point_acceleration(PointMass(1.0, [-1.0, 0.0, 0.0]), [[0.0, 0.0, 0.0]])
|
|
88
|
+
np.testing.assert_allclose(a, [[-G_SI, 0.0, 0.0]], rtol=0.0, atol=1e-25)
|
|
89
|
+
print("Fresh-install gravity smoke passed.")
|
|
90
|
+
PY
|
|
91
|
+
)
|
|
92
|
+
done
|
|
93
|
+
|
|
94
|
+
- name: Upload verified distributions for publish job
|
|
95
|
+
uses: actions/upload-artifact@v4
|
|
96
|
+
with:
|
|
97
|
+
name: gragra-0.2.0rc1-distributions
|
|
98
|
+
path: dist/*
|
|
99
|
+
if-no-files-found: error
|
|
100
|
+
retention-days: 14
|
|
101
|
+
|
|
102
|
+
publish:
|
|
103
|
+
name: Publish to PyPI using Trusted Publishing
|
|
104
|
+
needs: build-and-check
|
|
105
|
+
runs-on: ubuntu-latest
|
|
106
|
+
timeout-minutes: 15
|
|
107
|
+
permissions:
|
|
108
|
+
id-token: write
|
|
109
|
+
steps:
|
|
110
|
+
- name: Download checked distributions
|
|
111
|
+
uses: actions/download-artifact@v4
|
|
112
|
+
with:
|
|
113
|
+
name: gragra-0.2.0rc1-distributions
|
|
114
|
+
path: dist/
|
|
115
|
+
|
|
116
|
+
- name: Publish verified distributions
|
|
117
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
118
|
+
with:
|
|
119
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# === Local AI tooling ===
|
|
2
|
+
# .harness/ holds the local AI agent harness (hooks, agents, rules, skills,
|
|
3
|
+
# workflows). The tool directories below are symlinks into .harness/ plus
|
|
4
|
+
# generated per-tool config and personal permission settings
|
|
5
|
+
# (e.g. .claude/settings.local.json). None of this is part of the package
|
|
6
|
+
# and it must not be published.
|
|
7
|
+
.harness/
|
|
8
|
+
.claude/
|
|
9
|
+
.codex/
|
|
10
|
+
.gemini/
|
|
11
|
+
.agent/
|
|
12
|
+
CLAUDE.md
|
|
13
|
+
AGENTS.md
|
|
14
|
+
paseo.json
|
|
15
|
+
|
|
16
|
+
# === Python build, packaging, caches ===
|
|
17
|
+
__pycache__/
|
|
18
|
+
*.py[cod]
|
|
19
|
+
*.egg
|
|
20
|
+
*.egg-info/
|
|
21
|
+
.eggs/
|
|
22
|
+
build/
|
|
23
|
+
dist/
|
|
24
|
+
*.so
|
|
25
|
+
*.o
|
|
26
|
+
*.a
|
|
27
|
+
CMakeCache.txt
|
|
28
|
+
CMakeFiles/
|
|
29
|
+
.ruff_cache/
|
|
30
|
+
.pytest_cache/
|
|
31
|
+
# MkDocs build output (mkdocs.yml has no explicit site_dir, so `mkdocs build`
|
|
32
|
+
# writes to ./site/). The built site is a generated artifact; the sources live
|
|
33
|
+
# in docs_site/.
|
|
34
|
+
site/
|
|
35
|
+
.mypy_cache/
|
|
36
|
+
.coverage
|
|
37
|
+
.coverage.*
|
|
38
|
+
htmlcov/
|
|
39
|
+
.tox/
|
|
40
|
+
.nox/
|
|
41
|
+
|
|
42
|
+
# === Virtual environments ===
|
|
43
|
+
.venv/
|
|
44
|
+
venv/
|
|
45
|
+
env/
|
|
46
|
+
|
|
47
|
+
# === Editor / OS noise ===
|
|
48
|
+
.idea/
|
|
49
|
+
.vscode/
|
|
50
|
+
*.swp
|
|
51
|
+
.DS_Store
|
|
52
|
+
|
|
53
|
+
# === Generated artifacts (see .harness/rules/common/scope.md) ===
|
|
54
|
+
# Computation/verification outputs (CSV / PNG / result JSON / large binaries)
|
|
55
|
+
# are never committed. Intentional figures or reference data under docs/ and
|
|
56
|
+
# tests/ are re-included by the negation patterns below.
|
|
57
|
+
*.csv
|
|
58
|
+
*.png
|
|
59
|
+
result*.json
|
|
60
|
+
*.npy
|
|
61
|
+
*.npz
|
|
62
|
+
*.h5
|
|
63
|
+
*.hdf5
|
|
64
|
+
!docs/**/*.png
|
|
65
|
+
!docs/**/*.csv
|
|
66
|
+
# Documentation-site assets. The blanket *.csv / *.png excludes above were
|
|
67
|
+
# written when docs/ was the only documentation tree, so their re-inclusions
|
|
68
|
+
# only cover docs/**. Without the line below, a diagram or reference dataset
|
|
69
|
+
# placed under docs_site/docs/assets/ is silently never committed: the local
|
|
70
|
+
# build stays green, the CI clean checkout has no such file, and MkDocs does
|
|
71
|
+
# not treat a missing image as an error -- so CI stays green too and the
|
|
72
|
+
# local documentation site simply loses the figure. Keep source assets visible
|
|
73
|
+
# to a clean checkout.
|
|
74
|
+
!docs_site/docs/assets/**
|
|
75
|
+
!tests/**/*.csv
|
|
76
|
+
!tests/**/*.npy
|
|
77
|
+
!tests/**/*.npz
|
|
78
|
+
!tests/**/*.h5
|
|
79
|
+
!tests/**/*.hdf5
|
|
80
|
+
|
|
81
|
+
# === References / Large Binaries ===
|
|
82
|
+
*.pdf
|
|
83
|
+
*.zip
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.2.0rc1] - 2026-11-11
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- R2 analytic formulas, R6 trajectory and rigid motion, R3 plane-wave and field
|
|
10
|
+
evaluation paths, and R4 material-region / hex8 geometry support from the
|
|
11
|
+
development line (source revision `b19ccbb`).
|
|
12
|
+
- Expanded documentation site, examples, and public regression tests aligned
|
|
13
|
+
with the above API surface.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- Package version and dependencies aligned with the development line (Astropy,
|
|
18
|
+
pandas, GWexpy, SciPy, Matplotlib, optional backends unchanged in role).
|
|
19
|
+
- Root public API follows `gragra.gravity_sources` and consolidated observables;
|
|
20
|
+
rc2 `gragra.sources` and root-level projection helpers are removed (breaking).
|
|
21
|
+
|
|
22
|
+
### Removed
|
|
23
|
+
|
|
24
|
+
- `water_channel_uncorrelated_chen_taup2019_displacement_asd` from the public
|
|
25
|
+
API (independent uncorrelated channel models remain).
|
|
26
|
+
|
|
27
|
+
### Migration from 0.1.0rc2
|
|
28
|
+
|
|
29
|
+
- Replace `gragra.sources` imports with `gragra.gravity_sources`.
|
|
30
|
+
- Replace removed root projection helpers with `gragra.observables` entry points
|
|
31
|
+
documented in the API reference.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: If you use gragra, please cite this software.
|
|
3
|
+
title: gragra
|
|
4
|
+
authors:
|
|
5
|
+
- family-names: Washimi
|
|
6
|
+
given-names: Tatsuki
|
|
7
|
+
version: 0.2.0rc1
|
|
8
|
+
date-released: 2026-11-11
|
|
9
|
+
license: MIT
|
|
10
|
+
url: https://github.com/tatsuki-washimi/gragra
|
|
11
|
+
repository-code: https://github.com/tatsuki-washimi/gragra
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
cmake_minimum_required(VERSION 3.18)
|
|
2
|
+
project(gragra LANGUAGES NONE)
|
|
3
|
+
|
|
4
|
+
option(GRAGRA_BUILD_CPP "Build gragra C++ backend" OFF)
|
|
5
|
+
|
|
6
|
+
if(GRAGRA_BUILD_CPP)
|
|
7
|
+
enable_language(CXX)
|
|
8
|
+
|
|
9
|
+
# Modern C++ standard
|
|
10
|
+
set(CMAKE_CXX_STANDARD 17)
|
|
11
|
+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
12
|
+
|
|
13
|
+
find_package(pybind11 CONFIG REQUIRED)
|
|
14
|
+
find_package(OpenMP)
|
|
15
|
+
|
|
16
|
+
pybind11_add_module(_cpp_backend MODULE cpp/inverse_square_backend.cpp)
|
|
17
|
+
|
|
18
|
+
if(OpenMP_CXX_FOUND)
|
|
19
|
+
target_link_libraries(_cpp_backend PRIVATE OpenMP::OpenMP_CXX)
|
|
20
|
+
endif()
|
|
21
|
+
|
|
22
|
+
install(TARGETS _cpp_backend DESTINATION gragra)
|
|
23
|
+
endif()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Please open an issue before proposing a substantial change. Contributions must
|
|
4
|
+
include focused tests and must not add private research material, solver output
|
|
5
|
+
or third-party source text without a documented redistribution permission.
|
|
6
|
+
|
|
7
|
+
## Verification responsibility
|
|
8
|
+
|
|
9
|
+
The public repository covers public candidate code and user-facing package
|
|
10
|
+
quality. It does not cover private research branches or private data. The CI
|
|
11
|
+
workflow selects documentation-only checks for documentation changes and full
|
|
12
|
+
public-scope checks for source, tests, builds, dependencies, workflows,
|
|
13
|
+
scripts, and unknown paths. Full checks include the declared Python 3.11 and
|
|
14
|
+
3.12 environments, NumPy/Numba and C++ parity, package wheel/sdist smoke
|
|
15
|
+
tests, and a strict docs build.
|
|
16
|
+
|
|
17
|
+
Supported environments are not the same as environments actually tested by CI.
|
|
18
|
+
CI success does not certify arbitrary scientific conditions. Run research-
|
|
19
|
+
required scientific verification locally with the exact code, environment,
|
|
20
|
+
inputs, and conditions relevant to the claim, and record those conditions in
|
|
21
|
+
the change description or accompanying research log. GitHub Actions success is
|
|
22
|
+
not a universal adoption condition for research PRs. Automatic Actions or
|
|
23
|
+
environment matrices are not reintroduced without an explicit policy change;
|
|
24
|
+
moving execution location or frequency does not weaken scientific acceptance
|
|
25
|
+
conditions.
|
|
26
|
+
|
|
27
|
+
The workflow performs no publication, deployment, or upload operation.
|
gragra-0.2.0rc1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tatsuki Washimi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|