{
  "created_utc": "2026-09-15T16:17:12.075512+00:00",
  "reference": "SPGRN2020 full wavefield (max_slowness=0)",
  "method": "Linear interpolation to 1 s on all five backends' common valid origin-time interval at each distance through 500 s",
  "fitted_time_shifts": false,
  "fitted_amplitude_factors": false,
  "relative_l2_definition": "norm(values-reference)/norm(reference), over ENU and time for each distance",
  "correlation_definition": "Pearson correlation; null when either demeaned trace has zero norm",
  "components": [
    "E",
    "N",
    "U"
  ],
  "unit": "m",
  "comparison_time_ranges_s": [
    [
      3.0,
      500.0
    ],
    [
      40.0,
      500.0
    ],
    [
      78.0,
      500.0
    ]
  ],
  "provenance": {
    "qseis06": {
      "npz_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\disp.npz",
      "npz_sha256": "0eaf1dffa71b092bb01254f111c849efaab9926372f852068a4d9ddc4015314d",
      "summary_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\summary.json",
      "summary": {
        "backend": "QSEIS06",
        "started_utc": "2026-09-15T14:35:21Z",
        "platform": "Windows-11-10.0.26200-SP0",
        "python": "3.12.13",
        "dependencies": {
          "numpy": "2.3.5",
          "scipy": "1.18.0",
          "pandas": "3.0.0",
          "matplotlib": "3.11.0",
          "obspy": "1.5.0"
        },
        "source_depth_km": 10.0,
        "receiver_depth_km": 0.0,
        "moment_nm": 1000000000000000.0,
        "strike_dip_rake_deg": [
          30.0,
          45.0,
          90.0
        ],
        "azimuth_deg": 30.0,
        "reuse": false,
        "model": "Bundled AK135 elastic properties; illustrative constant Qp=600, Qs=300",
        "outputs": {
          "disp": {
            "shape": [
              3,
              3,
              256
            ],
            "components": [
              "E",
              "N",
              "U"
            ],
            "unit": "m",
            "finite": true,
            "peak_absolute": 1.386252680647693e-08
          }
        },
        "display_name": "QSEIS06 (deprecated)",
        "sampling_interval_s": 4.0,
        "max_frequency_hz": 0.125,
        "time_window_s": 4092.0,
        "distances_km": [
          300.0,
          600.0,
          900.0
        ],
        "output_time_range_s": [
          0.0,
          1020.0
        ],
        "native_samples": 1024,
        "earth_model_numeric_rows": 24,
        "wavelet_type": 0,
        "wavelet_duration_samples": 16,
        "wavelet_duration_s": 64.0,
        "flat_earth_transform": true,
        "regional": true,
        "source_radius_ratio": 0.05,
        "source_time_function": {
          "scheme_id": "normalized_sin_squared_64s_damping_compensated_v1",
          "duration_s": 64.0,
          "samples": 1024,
          "sample_spacing_s": 0.06256109481915934,
          "wavelet_type": 0,
          "wavelet_duration_samples": 16,
          "sampling_interval_s": 4.0,
          "native_time_window_s": 4092.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017911427147591097,
          "rate_unit": "1/s",
          "time_unit": "s",
          "physical_definition": "r(t) = 2/64 * sin(pi*t/64)^2 for 0 <= t <= 64 s; zero otherwise",
          "input_definition": "piecewise-linear samples of r(t) * exp(2*pi*fi*t); no input-area renormalization",
          "effective_definition": "piecewise-linear input(t) * exp(-2*pi*fi*t)",
          "target_rate_integral": 1.0,
          "input_rate_integral": 0.9647094485300882,
          "effective_rate_integral": 1.0000000004130927,
          "target_centroid_s": 32.0,
          "effective_centroid_s": 32.00000073412074,
          "effective_rate_relative_l2": 1.9884466105608343e-06,
          "spectral_relative_l2_0_to_0_125_hz": 1.7827637217585575e-06,
          "validated_max_frequency_hz": 0.125,
          "spectral_max_absolute_error_0_to_0_0625_hz": 1.5646882209943217e-06,
          "physical_validation_limits": {
            "area_absolute_error": 1e-08,
            "centroid_absolute_error_s": 1e-05,
            "rate_relative_l2": 1e-05,
            "spectral_relative_l2": 1e-05
          },
          "reader_instruction": "Request disp/strain/stress; the reader integrates the type-0 rate kernels once",
          "input_relative_path": "10.00/0.00/0_0/grn.inp",
          "input_original_sha256": "73e1996946b763bb449c2bd2040a1c0210bbbe0d95494d85bc7d2c3ae8c41373",
          "input_prepared_sha256": "cc84f2af0babb4c819a33036fd76746df67ccccf0561b7020092f50d7d77da0c",
          "samples_relative_path": "../source_time_function.npz",
          "description_relative_path": "../source_time_function.json",
          "samples_sha256": "338b4f06ebd8d08487d654680d42ec451effbace3de55d48a38a3a3d4a38c7c3"
        },
        "physical_source_time_function": {
          "shape": "normalized_sin_squared_moment_rate",
          "duration_s": 64.0,
          "physical_integral": 1.0,
          "centroid_s": 32.0
        },
        "spectral_settings": {
          "requested_max_frequency_hz": 0.125,
          "nyquist_frequency_hz": 0.125,
          "highest_computed_frequency_hz": 0.124755859375,
          "nyquist_bin_zeroed": true,
          "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
          "sampling_interval_s": 4.0,
          "fft_samples": 1024,
          "frequency_spacing_hz": 0.000244140625,
          "computed_frequency_samples": 512,
          "spec_time_window_s": 4092.0,
          "fft_period_s": 4096.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017911427147591097,
          "fi_window_s": 4092.0,
          "fi_source": "Validated library anti_alias and the solver window formula",
          "ldegup": null,
          "native_header": {
            "nt": 1024,
            "ntcut": 1024,
            "dt": 4.0,
            "nf": 512,
            "nfcut": 512,
            "df": 0.000244140625,
            "ldegup": null
          },
          "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\library\\10.00\\0.00\\0_0\\ss.tz",
          "validation_source": "Native input, all native T_sec output rows, and library metadata; nf, nfcut and df derived from qsgetinp.f (not stored in the text header)",
          "native_input_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\library\\10.00\\0.00\\0_0\\grn.inp",
          "native_output_columns": [
            "T_sec",
            "Uz0001",
            "Uz0002",
            "Uz0003"
          ]
        },
        "elapsed_seconds": 175.066,
        "file_count": 31,
        "output_bytes": 1243934
      },
      "native_time_ranges_s": [
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ]
      ],
      "library_metadata_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\library\\green_lib_info.json",
      "library_metadata": {
        "processes_num": 1,
        "event_depth_list": [
          10.0
        ],
        "receiver_depth_list": [
          0.0
        ],
        "grn_dist_range": [
          300.0,
          900.0
        ],
        "grn_delta_dist": 300.0,
        "N_dist": 3,
        "N_dist_group": 1,
        "N_each_group": 3,
        "time_window": 4092.0,
        "sampling_interval": 4.0,
        "sampling_num": 1024,
        "slowness_int_algorithm": 0,
        "slowness_window": null,
        "time_reduction_velo": 0,
        "wavenumber_sampling_rate": 12,
        "anti_alias": 0.01,
        "free_surface": true,
        "wavelet_duration": 16,
        "wavelet_type": 0,
        "flat_earth_transform": true,
        "path_nd": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\ak135_tutorial.nd",
        "path_nd_without_Q": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\library\\noQ.nd",
        "earth_model_layer_num": 24
      },
      "verified_spectral_settings": {
        "requested_max_frequency_hz": 0.125,
        "nyquist_frequency_hz": 0.125,
        "highest_computed_frequency_hz": 0.124755859375,
        "nyquist_bin_zeroed": true,
        "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
        "sampling_interval_s": 4.0,
        "fft_samples": 1024,
        "frequency_spacing_hz": 0.000244140625,
        "computed_frequency_samples": 512,
        "spec_time_window_s": 4092.0,
        "fft_period_s": 4096.0,
        "anti_alias": 0.01,
        "fi_hz": -0.00017911427147591097,
        "fi_window_s": 4092.0,
        "fi_source": "Validated library anti_alias and the solver window formula",
        "ldegup": null,
        "native_header": {
          "nt": 1024,
          "ntcut": 1024,
          "dt": 4.0,
          "nf": 512,
          "nfcut": 512,
          "df": 0.000244140625,
          "ldegup": null
        },
        "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\library\\10.00\\0.00\\0_0\\ss.tz",
        "validation_source": "Native input, all native T_sec output rows, and library metadata; nf, nfcut and df derived from qsgetinp.f (not stored in the text header)",
        "native_input_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis06-regional-seek-disp\\library\\10.00\\0.00\\0_0\\grn.inp",
        "native_output_columns": [
          "T_sec",
          "Uz0001",
          "Uz0002",
          "Uz0003"
        ]
      }
    },
    "qseis2025": {
      "npz_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\disp.npz",
      "npz_sha256": "0eaf1dffa71b092bb01254f111c849efaab9926372f852068a4d9ddc4015314d",
      "summary_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\summary.json",
      "summary": {
        "backend": "QSEIS2025",
        "started_utc": "2026-09-15T14:38:17Z",
        "platform": "Windows-11-10.0.26200-SP0",
        "python": "3.12.13",
        "dependencies": {
          "numpy": "2.3.5",
          "scipy": "1.18.0",
          "pandas": "3.0.0",
          "matplotlib": "3.11.0",
          "obspy": "1.5.0"
        },
        "source_depth_km": 10.0,
        "receiver_depth_km": 0.0,
        "moment_nm": 1000000000000000.0,
        "strike_dip_rake_deg": [
          30.0,
          45.0,
          90.0
        ],
        "azimuth_deg": 30.0,
        "reuse": false,
        "model": "Bundled AK135 elastic properties; illustrative constant Qp=600, Qs=300",
        "outputs": {
          "disp": {
            "shape": [
              3,
              3,
              256
            ],
            "components": [
              "E",
              "N",
              "U"
            ],
            "unit": "m",
            "finite": true,
            "peak_absolute": 1.386252680647693e-08
          },
          "strain": {
            "shape": [
              3,
              6,
              256
            ],
            "components": [
              "EE",
              "EN",
              "EU",
              "NN",
              "NU",
              "UU"
            ],
            "unit": "1",
            "finite": true,
            "peak_absolute": 2.05370111318372e-13
          },
          "stress": {
            "shape": [
              3,
              6,
              256
            ],
            "components": [
              "EE",
              "EN",
              "EU",
              "NN",
              "NU",
              "UU"
            ],
            "unit": "Pa",
            "finite": true,
            "peak_absolute": 0.01279058879999433
          }
        },
        "sampling_interval_s": 4.0,
        "max_frequency_hz": 0.125,
        "time_window_s": 4092.0,
        "output_time_range_s": [
          0.0,
          1020.0
        ],
        "distances_km": [
          300.0,
          600.0,
          900.0
        ],
        "native_samples": 1024,
        "earth_model_numeric_rows": 24,
        "wavelet_type": 0,
        "wavelet_duration_samples": 16,
        "wavelet_duration_s": 64.0,
        "flat_earth_transform": true,
        "regional": true,
        "source_radius_ratio": 0.05,
        "point_source": false,
        "source_time_function": {
          "scheme_id": "normalized_sin_squared_64s_damping_compensated_v1",
          "duration_s": 64.0,
          "samples": 1024,
          "sample_spacing_s": 0.06256109481915934,
          "wavelet_type": 0,
          "wavelet_duration_samples": 16,
          "sampling_interval_s": 4.0,
          "native_time_window_s": 4092.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017911427147591097,
          "rate_unit": "1/s",
          "time_unit": "s",
          "physical_definition": "r(t) = 2/64 * sin(pi*t/64)^2 for 0 <= t <= 64 s; zero otherwise",
          "input_definition": "piecewise-linear samples of r(t) * exp(2*pi*fi*t); no input-area renormalization",
          "effective_definition": "piecewise-linear input(t) * exp(-2*pi*fi*t)",
          "target_rate_integral": 1.0,
          "input_rate_integral": 0.9647094485300882,
          "effective_rate_integral": 1.0000000004130927,
          "target_centroid_s": 32.0,
          "effective_centroid_s": 32.00000073412074,
          "effective_rate_relative_l2": 1.9884466105608343e-06,
          "spectral_relative_l2_0_to_0_125_hz": 1.7827637217585575e-06,
          "validated_max_frequency_hz": 0.125,
          "spectral_max_absolute_error_0_to_0_0625_hz": 1.5646882209943217e-06,
          "physical_validation_limits": {
            "area_absolute_error": 1e-08,
            "centroid_absolute_error_s": 1e-05,
            "rate_relative_l2": 1e-05,
            "spectral_relative_l2": 1e-05
          },
          "reader_instruction": "Request disp/strain/stress; the reader integrates the type-0 rate kernels once",
          "input_relative_path": "10.00/0.00/0_0/grn.inp",
          "input_original_sha256": "60e1d673030b4beb47f564b8e358adcdd76da148a029446ffeca44e1d03c5b5e",
          "input_prepared_sha256": "fc95e2e799e808f0afc7f2822ca7824d12254c3ee4e6a55df2a7998db661b5f1",
          "samples_relative_path": "../source_time_function.npz",
          "description_relative_path": "../source_time_function.json",
          "samples_sha256": "338b4f06ebd8d08487d654680d42ec451effbace3de55d48a38a3a3d4a38c7c3"
        },
        "physical_source_time_function": {
          "shape": "normalized_sin_squared_moment_rate",
          "duration_s": 64.0,
          "physical_integral": 1.0,
          "centroid_s": 32.0
        },
        "spectral_settings": {
          "requested_max_frequency_hz": 0.125,
          "nyquist_frequency_hz": 0.125,
          "highest_computed_frequency_hz": 0.124755859375,
          "nyquist_bin_zeroed": true,
          "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
          "sampling_interval_s": 4.0,
          "fft_samples": 1024,
          "frequency_spacing_hz": 0.000244140625,
          "computed_frequency_samples": 512,
          "spec_time_window_s": 4092.0,
          "fft_period_s": 4096.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017911427147591097,
          "fi_window_s": 4092.0,
          "fi_source": "Validated library anti_alias and the solver window formula",
          "ldegup": null,
          "native_header": {
            "nt": 1024,
            "ntcut": 1024,
            "dt": 4.0,
            "nf": 512,
            "nfcut": 512,
            "df": 0.000244140625,
            "ldegup": null
          },
          "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\library\\10.00\\0.00\\0_0\\ss.tz",
          "validation_source": "Native input, all native T_sec output rows, and library metadata; nf, nfcut and df derived from qsgetinp.f (not stored in the text header)",
          "native_input_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\library\\10.00\\0.00\\0_0\\grn.inp",
          "native_output_columns": [
            "T_sec",
            "Uz0001",
            "Uz0002",
            "Uz0003"
          ]
        },
        "elapsed_seconds": 175.929,
        "file_count": 83,
        "output_bytes": 3833804
      },
      "native_time_ranges_s": [
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ]
      ],
      "library_metadata_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\library\\green_lib_info.json",
      "library_metadata": {
        "processes_num": 1,
        "event_depth_list": [
          10.0
        ],
        "receiver_depth_list": [
          0.0
        ],
        "grn_dist_range": [
          300.0,
          900.0
        ],
        "grn_delta_dist": 300.0,
        "N_dist": 3,
        "N_dist_group": 1,
        "N_each_group": 3,
        "time_window": 4092.0,
        "sampling_interval": 4.0,
        "sampling_num": 1024,
        "slowness_int_algorithm": 0,
        "slowness_window": null,
        "time_reduction_velo": 0,
        "wavenumber_sampling_rate": 12,
        "anti_alias": 0.01,
        "free_surface": 0,
        "wavelet_duration": 16,
        "wavelet_type": 0,
        "flat_earth_transform": true,
        "path_nd": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\ak135_tutorial.nd",
        "path_nd_without_Q": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\library\\noQ.nd",
        "earth_model_layer_num": 24
      },
      "verified_spectral_settings": {
        "requested_max_frequency_hz": 0.125,
        "nyquist_frequency_hz": 0.125,
        "highest_computed_frequency_hz": 0.124755859375,
        "nyquist_bin_zeroed": true,
        "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
        "sampling_interval_s": 4.0,
        "fft_samples": 1024,
        "frequency_spacing_hz": 0.000244140625,
        "computed_frequency_samples": 512,
        "spec_time_window_s": 4092.0,
        "fft_period_s": 4096.0,
        "anti_alias": 0.01,
        "fi_hz": -0.00017911427147591097,
        "fi_window_s": 4092.0,
        "fi_source": "Validated library anti_alias and the solver window formula",
        "ldegup": null,
        "native_header": {
          "nt": 1024,
          "ntcut": 1024,
          "dt": 4.0,
          "nf": 512,
          "nfcut": 512,
          "df": 0.000244140625,
          "ldegup": null
        },
        "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\library\\10.00\\0.00\\0_0\\ss.tz",
        "validation_source": "Native input, all native T_sec output rows, and library metadata; nf, nfcut and df derived from qsgetinp.f (not stored in the text header)",
        "native_input_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-seek-disp\\library\\10.00\\0.00\\0_0\\grn.inp",
        "native_output_columns": [
          "T_sec",
          "Uz0001",
          "Uz0002",
          "Uz0003"
        ]
      }
    },
    "spgrn2012": {
      "npz_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\disp.npz",
      "npz_sha256": "8acd312f0e86dc6df91572b44732bfff2a61082764c36f8ea99207b42bbdb2b7",
      "summary_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\summary.json",
      "summary": {
        "backend": "SPGRN2012",
        "started_utc": "2026-09-15T16:16:30Z",
        "platform": "Windows-11-10.0.26200-SP0",
        "python": "3.12.13",
        "dependencies": {
          "numpy": "2.3.5",
          "scipy": "1.18.0",
          "pandas": "3.0.0",
          "matplotlib": "3.11.0",
          "obspy": "1.5.0"
        },
        "source_depth_km": 10.0,
        "receiver_depth_km": 0.0,
        "moment_nm": 1000000000000000.0,
        "strike_dip_rake_deg": [
          30.0,
          45.0,
          90.0
        ],
        "azimuth_deg": 30.0,
        "reuse": false,
        "model": "Bundled AK135 elastic properties; illustrative constant Qp=600, Qs=300",
        "outputs": {
          "disp": {
            "shape": [
              3,
              3,
              256
            ],
            "components": [
              "E",
              "N",
              "U"
            ],
            "unit": "m",
            "finite": true,
            "peak_absolute": 1.4704159932805561e-08
          }
        },
        "display_name": "SPGRN2012 (deprecated)",
        "sampling_interval_s": 4.0,
        "time_window_s": 4092.0,
        "native_samples": 1024,
        "output_window_s": 1020.0,
        "output_time_ranges_s": [
          [
            -10.0,
            1010.0
          ],
          [
            20.0,
            1040.0
          ],
          [
            50.0,
            1070.0
          ]
        ],
        "distances_km": [
          300.0,
          600.0,
          900.0
        ],
        "spec_time_window_s": 4092.0,
        "max_frequency_hz": 0.125,
        "last_retained_frequency_hz": 0.124755859375,
        "nyquist_bin_zero": true,
        "t0_s": -40.0,
        "v0_km_s": 10.0,
        "trace_start_times_s": [
          -10.0,
          20.0,
          50.0
        ],
        "native_source_duration_s": 0.0,
        "source_duration_s": 64.0,
        "effective_source_duration_s": 64.0,
        "physical_source_time_function": {
          "shape": "normalized_sin_squared_moment_rate",
          "duration_s": 64.0,
          "physical_integral": 1.0,
          "centroid_s": 32.0
        },
        "full_wavefield": true,
        "max_slowness_s_km": 0.0,
        "source_radius_km": 0.0,
        "spectral_settings": {
          "requested_max_frequency_hz": 0.125,
          "nyquist_frequency_hz": 0.125,
          "highest_computed_frequency_hz": 0.124755859375,
          "nyquist_bin_zeroed": true,
          "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
          "sampling_interval_s": 4.0,
          "fft_samples": 1024,
          "frequency_spacing_hz": 0.000244140625,
          "computed_frequency_samples": 512,
          "spec_time_window_s": 4092.0,
          "fft_period_s": 4096.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017893935519517278,
          "fi_window_s": 4096.0,
          "fi_source": "Validated library anti_alias and the solver window formula",
          "ldegup": 5293,
          "native_header": {
            "nt": 1024,
            "ntcut": 1024,
            "dt": 4.0,
            "nf": 512,
            "nfcut": 512,
            "df": 0.000244140625,
            "ldegup": 5293
          },
          "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\library\\GreenSpec\\10.00\\0.00\\T_grn_d10.00",
          "validation_source": "Native Fortran spectrum header and library metadata"
        },
        "source_time_function": {
          "scheme_id": "normalized_sin_squared_64s_complex_frequency_forward_green_functions_v2",
          "physical_source_time_function": {
            "shape": "normalized_sin_squared_moment_rate",
            "duration_s": 64.0,
            "physical_integral": 1.0,
            "centroid_s": 32.0
          },
          "native_source_duration_s": 0.0,
          "effective_source_duration_s": 64.0,
          "method": "full-period damped-domain analytic forward convolution of every native impulse Green function",
          "spectral_division": false,
          "fitted_amplitude": false,
          "fitted_time_shift": false,
          "native": {
            "fft_header": {
              "nt": 1024,
              "ntcut": 1024,
              "dt": 4.0,
              "nf": 512,
              "nfcut": 512,
              "df": 0.000244140625,
              "ldegup": 5293
            },
            "fft_period_s": 4096.0,
            "fi_hz": -0.00017893935519517278,
            "requested_max_frequency_hz": 0.125,
            "last_retained_frequency_hz": 0.124755859375,
            "nyquist_bin_zero": true,
            "trace_start_times_s": [
              -10.0,
              20.0,
              50.0
            ],
            "input_sha256": "018cab3bdb56234d3383cb421feb3a6bb15c3e5d3d22eaae547ed4c598cc63b2",
            "native_velocity_sha256": "26efb10c519beddc78a54b7671377f37cd6edec971972a94ad27b8415f0987d3"
          },
          "physical_rate_integral": 1.0000000000000013,
          "analytic_transform_relative_l2_vs_quadrature": 1.752096421854238e-15,
          "damped_dc_coefficient": 0.9647432173888302,
          "matched_library": "library-source-matched",
          "integration": "seek_spgrn2012(output_type='disp') integrates all 1024 matched samples; the example then retains the first 256",
          "archive_sha256": {
            "source_time_function.npz": "603b5e3b0f0878ac9dc0eb38ed87033eb1428972efa10bcfccbb7ae28e41259c",
            "disp.npz": "8acd312f0e86dc6df91572b44732bfff2a61082764c36f8ea99207b42bbdb2b7",
            "library-source-matched/GreenFunc/10.00/0.00/grn_d10.00": "e9a2ebbc1bccc561dd306c7bc4477adb65c1fb046768c6e399c1644248ff6f0a"
          }
        },
        "elapsed_seconds": 40.517,
        "file_count": 21,
        "output_bytes": 213266558
      },
      "native_time_ranges_s": [
        [
          -10.0,
          1010.0
        ],
        [
          20.0,
          1040.0
        ],
        [
          50.0,
          1070.0
        ]
      ],
      "library_metadata_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\library\\green_lib_info.json",
      "library_metadata": {
        "processes_num": 1,
        "path_green": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\library",
        "event_depth_list": [
          10.0
        ],
        "receiver_depth_list": [
          0.0
        ],
        "spec_time_window": 4092.0,
        "sampling_interval": 4.0,
        "max_frequency": 0.125,
        "max_slowness": 0.0,
        "anti_alias": 0.01,
        "gravity_fc": 0.0,
        "gravity_harmonic": 0,
        "cal_sph": 1,
        "cal_tor": 1,
        "source_radius": 0.0,
        "cal_gf": 1,
        "time_window": 4092.0,
        "t0": -40.0,
        "v0": 10.0,
        "source_duration": 0.0,
        "dist_range": [
          300.0,
          900.0
        ],
        "delta_dist_range": [
          300.0,
          300.0
        ],
        "path_nd": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\ak135_tutorial.nd",
        "earth_model_layer_num": null,
        "physical_dispersion": 0,
        "path_nd_without_Q": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\library\\noQ.nd",
        "dist_list": [
          300.0,
          600.0,
          900.0
        ],
        "samples_num": 1024
      },
      "verified_spectral_settings": {
        "requested_max_frequency_hz": 0.125,
        "nyquist_frequency_hz": 0.125,
        "highest_computed_frequency_hz": 0.124755859375,
        "nyquist_bin_zeroed": true,
        "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
        "sampling_interval_s": 4.0,
        "fft_samples": 1024,
        "frequency_spacing_hz": 0.000244140625,
        "computed_frequency_samples": 512,
        "spec_time_window_s": 4092.0,
        "fft_period_s": 4096.0,
        "anti_alias": 0.01,
        "fi_hz": -0.00017893935519517278,
        "fi_window_s": 4096.0,
        "fi_source": "Validated library anti_alias and the solver window formula",
        "ldegup": 5293,
        "native_header": {
          "nt": 1024,
          "ntcut": 1024,
          "dt": 4.0,
          "nf": 512,
          "nfcut": 512,
          "df": 0.000244140625,
          "ldegup": 5293
        },
        "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2012-seek-disp\\library\\GreenSpec\\10.00\\0.00\\T_grn_d10.00",
        "validation_source": "Native Fortran spectrum header and library metadata"
      }
    },
    "spgrn2020": {
      "npz_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\disp.npz",
      "npz_sha256": "c37197e6b7f71a977c9ea727d0d455ed5809108cde0d51992c234ef74ac7b687",
      "summary_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\summary-reuse.json",
      "summary": {
        "backend": "SPGRN2020",
        "started_utc": "2026-09-14T12:36:49Z",
        "platform": "Windows-11-10.0.26200-SP0",
        "python": "3.12.13",
        "dependencies": {
          "numpy": "2.3.5",
          "scipy": "1.18.0",
          "pandas": "3.0.0",
          "matplotlib": "3.11.0",
          "obspy": "1.5.0"
        },
        "source_depth_km": 10.0,
        "receiver_depth_km": 0.0,
        "moment_nm": 1000000000000000.0,
        "strike_dip_rake_deg": [
          30.0,
          45.0,
          90.0
        ],
        "azimuth_deg": 30.0,
        "reuse": true,
        "model": "Bundled AK135 elastic properties; illustrative constant Qp=600, Qs=300",
        "outputs": {
          "disp": {
            "shape": [
              3,
              3,
              256
            ],
            "components": [
              "E",
              "N",
              "U"
            ],
            "unit": "m",
            "finite": true,
            "peak_absolute": 1.4688964615463429e-08
          }
        },
        "sampling_interval_s": 4.0,
        "time_window_s": 1020.0,
        "distances_km": [
          300.0,
          600.0,
          900.0
        ],
        "spec_time_window_s": 4092.0,
        "max_frequency_hz": 0.125,
        "green_before_p_s": 40.0,
        "source_duration_s": 64.0,
        "max_slowness_s_km": 0.0,
        "full_wavefield": true,
        "trace_start_times_s": [
          3.0,
          40.0,
          78.0
        ],
        "physical_source_time_function": {
          "shape": "normalized_sin_squared_moment_rate",
          "duration_s": 64.0,
          "physical_integral": 1.0,
          "centroid_s": 32.0
        },
        "spectral_settings": {
          "requested_max_frequency_hz": 0.125,
          "nyquist_frequency_hz": 0.125,
          "highest_computed_frequency_hz": 0.124755859375,
          "nyquist_bin_zeroed": true,
          "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
          "sampling_interval_s": 4.0,
          "fft_samples": 1024,
          "frequency_spacing_hz": 0.000244140625,
          "computed_frequency_samples": 512,
          "spec_time_window_s": 4092.0,
          "fft_period_s": 4096.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017893935519517278,
          "fi_window_s": 4096.0,
          "fi_source": "Validated library anti_alias and the solver window formula",
          "ldegup": 4304,
          "native_header": {
            "nt": 1024,
            "ntcut": 1024,
            "dt": 4.0,
            "nf": 512,
            "nfcut": 512,
            "df": 0.000244140625,
            "ldegup": 4304
          },
          "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\library\\GreenSpec\\10.00\\0.00\\T_grn_d10.00",
          "validation_source": "Native Fortran spectrum header and library metadata"
        },
        "source_radius_km": 0.0,
        "elapsed_seconds": 0.141,
        "file_count": 15,
        "output_bytes": 279069176
      },
      "native_time_ranges_s": [
        [
          3.0,
          1023.0
        ],
        [
          40.0,
          1060.0
        ],
        [
          78.0,
          1098.0
        ]
      ],
      "library_metadata_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\library\\green_lib_info.json",
      "library_metadata": {
        "processes_num": 1,
        "path_green": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\library",
        "event_depth_list": [
          10.0
        ],
        "receiver_depth_list": [
          0.0
        ],
        "spec_time_window": 4092.0,
        "sampling_interval": 4.0,
        "max_frequency": 0.125,
        "max_slowness": 0.0,
        "anti_alias": 0.01,
        "gravity_fc": 0.0,
        "gravity_harmonic": 0,
        "cal_sph": 1,
        "cal_tor": 1,
        "source_radius": 0.0,
        "cal_gf": 1,
        "time_window": 1020.0,
        "green_before_p": 40.0,
        "source_duration": 64.0,
        "dist_range": [
          300.0,
          900.0
        ],
        "delta_dist_range": [
          300.0,
          300.0
        ],
        "path_nd": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\ak135_tutorial.nd",
        "earth_model_layer_num": null,
        "physical_dispersion": 0,
        "path_nd_without_Q": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\library\\noQ.nd",
        "dist_list": [
          300.0,
          600.0,
          900.0
        ],
        "samples_num": 256
      },
      "verified_spectral_settings": {
        "requested_max_frequency_hz": 0.125,
        "nyquist_frequency_hz": 0.125,
        "highest_computed_frequency_hz": 0.124755859375,
        "nyquist_bin_zeroed": true,
        "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
        "sampling_interval_s": 4.0,
        "fft_samples": 1024,
        "frequency_spacing_hz": 0.000244140625,
        "computed_frequency_samples": 512,
        "spec_time_window_s": 4092.0,
        "fft_period_s": 4096.0,
        "anti_alias": 0.01,
        "fi_hz": -0.00017893935519517278,
        "fi_window_s": 4096.0,
        "fi_source": "Validated library anti_alias and the solver window formula",
        "ldegup": 4304,
        "native_header": {
          "nt": 1024,
          "ntcut": 1024,
          "dt": 4.0,
          "nf": 512,
          "nfcut": 512,
          "df": 0.000244140625,
          "ldegup": 4304
        },
        "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\spgrn2020-matched-band\\library\\GreenSpec\\10.00\\0.00\\T_grn_d10.00",
        "validation_source": "Native Fortran spectrum header and library metadata"
      }
    },
    "qssp2020": {
      "npz_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qssp2020-matched-band\\disp.npz",
      "npz_sha256": "90bf684e73b47dbb5c003970908340aa0004ca3fe55c9eeff7ca2e7a2c4cd3a3",
      "summary_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qssp2020-matched-band\\summary-reuse.json",
      "summary": {
        "backend": "QSSP2020",
        "started_utc": "2026-09-14T12:38:27Z",
        "platform": "Windows-11-10.0.26200-SP0",
        "python": "3.12.13",
        "dependencies": {
          "numpy": "2.3.5",
          "scipy": "1.18.0",
          "pandas": "3.0.0",
          "matplotlib": "3.11.0",
          "obspy": "1.5.0"
        },
        "source_depth_km": 10.0,
        "receiver_depth_km": 0.0,
        "moment_nm": 1000000000000000.0,
        "strike_dip_rake_deg": [
          30.0,
          45.0,
          90.0
        ],
        "azimuth_deg": 30.0,
        "reuse": true,
        "model": "Bundled AK135 elastic properties; illustrative constant Qp=600, Qs=300",
        "outputs": {
          "disp": {
            "shape": [
              3,
              3,
              256
            ],
            "components": [
              "E",
              "N",
              "U"
            ],
            "unit": "m",
            "finite": true,
            "peak_absolute": 1.4577784680315633e-08
          }
        },
        "sampling_interval_s": 4.0,
        "time_window_s": 1020.0,
        "distances_km": [
          300.0,
          600.0,
          900.0
        ],
        "spec_time_window_s": 4092.0,
        "max_frequency_hz": 0.125,
        "harmonic_bounds": [
          2000,
          8000
        ],
        "source_duration_s": 64.0,
        "physical_source_time_function": {
          "shape": "normalized_sin_squared_moment_rate",
          "duration_s": 64.0,
          "physical_integral": 1.0,
          "centroid_s": 32.0
        },
        "spectral_settings": {
          "requested_max_frequency_hz": 0.125,
          "nyquist_frequency_hz": 0.125,
          "highest_computed_frequency_hz": 0.124755859375,
          "nyquist_bin_zeroed": true,
          "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
          "sampling_interval_s": 4.0,
          "fft_samples": 1024,
          "frequency_spacing_hz": 0.000244140625,
          "computed_frequency_samples": 512,
          "spec_time_window_s": 4092.0,
          "fft_period_s": 4096.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017893935519517278,
          "fi_window_s": 4096.0,
          "fi_source": "Validated library anti_alias and the solver window formula",
          "ldegup": 2001,
          "native_header": {
            "nt": 1024,
            "ntcut": 1024,
            "dt": 4.0,
            "nf": 512,
            "nfcut": 512,
            "df": 0.000244140625,
            "ldegup": 2001
          },
          "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qssp2020-matched-band\\library\\GreenSpec\\10.00\\0.00\\U_Green_10.00km",
          "validation_source": "Native Fortran spectrum header and library metadata"
        },
        "source_radius_km": 0.0,
        "elapsed_seconds": 0.137,
        "file_count": 67,
        "output_bytes": 689936808
      },
      "native_time_ranges_s": [
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ]
      ],
      "library_metadata_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qssp2020-matched-band\\library\\green_lib_info.json",
      "library_metadata": {
        "processes_num": 1,
        "event_depth_list": [
          10.0
        ],
        "receiver_depth_list": [
          0.0
        ],
        "spec_time_window": 4092.0,
        "sampling_interval": 4.0,
        "max_frequency": 0.125,
        "max_slowness": 0.3,
        "anti_alias": 0.01,
        "turning_point_filter": 0,
        "turning_point_d1": 0.0,
        "turning_point_d2": 6371.0,
        "free_surface_filter": 1,
        "gravity_fc": 0.0,
        "gravity_harmonic": 0,
        "cal_sph": 1,
        "cal_tor": 1,
        "min_harmonic": 2000,
        "max_harmonic": 8000,
        "source_radius": 0.0,
        "source_duration": 64.0,
        "output_observables": [
          1,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0
        ],
        "time_window": 1020.0,
        "sampling_num": 256,
        "time_reduction": 0.0,
        "grn_dist_range": [
          300.0,
          900.0
        ],
        "grn_delta_dist": 300.0,
        "path_nd": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qssp2020-matched-band\\ak135_tutorial.nd",
        "path_nd_without_Q": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qssp2020-matched-band\\library\\noQ.nd",
        "earth_model_layer_num": null,
        "physical_dispersion": 0
      },
      "verified_spectral_settings": {
        "requested_max_frequency_hz": 0.125,
        "nyquist_frequency_hz": 0.125,
        "highest_computed_frequency_hz": 0.124755859375,
        "nyquist_bin_zeroed": true,
        "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
        "sampling_interval_s": 4.0,
        "fft_samples": 1024,
        "frequency_spacing_hz": 0.000244140625,
        "computed_frequency_samples": 512,
        "spec_time_window_s": 4092.0,
        "fft_period_s": 4096.0,
        "anti_alias": 0.01,
        "fi_hz": -0.00017893935519517278,
        "fi_window_s": 4096.0,
        "fi_source": "Validated library anti_alias and the solver window formula",
        "ldegup": 2001,
        "native_header": {
          "nt": 1024,
          "ntcut": 1024,
          "dt": 4.0,
          "nf": 512,
          "nfcut": 512,
          "df": 0.000244140625,
          "ldegup": 2001
        },
        "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qssp2020-matched-band\\library\\GreenSpec\\10.00\\0.00\\U_Green_10.00km",
        "validation_source": "Native Fortran spectrum header and library metadata"
      }
    }
  },
  "limitations": [
    "QSEIS uses a transformed finite-depth model over a half-space; spherical examples use the complete Earth model.",
    "QSEIS uses a damping-compensated custom 64 s sin-squared rate matching the SPGRN2020/QSSP physical source to the recorded interpolation tolerance.",
    "SPGRN2012 uses a forward-convolved full-period impulse response with the same physical 64 s moment-rate pulse.",
    "All backends use dt=4 s and the 0.125 Hz Nyquist band; the highest computed frequency is 0.124755859375 Hz and the Nyquist bin is zero.",
    "The standard QSEIS pair uses source_radius_ratio=0.05 spatial smoothing; the spherical examples use point sources.",
    "Displacement integration baselines and native time windows differ between backends.",
    "Thresholds check these tutorial settings; they do not establish general backend equivalence."
  ],
  "distances": [
    {
      "distance_km": 300.0,
      "backends": {
        "qseis06": {
          "relative_l2": 0.12740950516164076,
          "correlation": 0.9979871053405538,
          "peak_absolute_m": 1.386252680647693e-08,
          "reference_peak_absolute_m": 1.4688964615463429e-08,
          "absolute_peak_time_s": 120.0,
          "components": {
            "E": {
              "relative_l2": 0.21415812731783374,
              "correlation": 0.9959376175677032,
              "peak_absolute_m": 4.718671664468096e-09,
              "reference_peak_absolute_m": 5.434959575901812e-09,
              "absolute_peak_time_s": 88.0
            },
            "N": {
              "relative_l2": 0.21415812731783443,
              "correlation": 0.9959376175677027,
              "peak_absolute_m": 8.172979067094345e-09,
              "reference_peak_absolute_m": 9.413626122544937e-09,
              "absolute_peak_time_s": 88.0
            },
            "U": {
              "relative_l2": 0.07052088682617678,
              "correlation": 0.9976044610777185,
              "peak_absolute_m": 1.386252680647693e-08,
              "reference_peak_absolute_m": 1.4688964615463429e-08,
              "absolute_peak_time_s": 120.0
            }
          }
        },
        "qseis2025": {
          "relative_l2": 0.12740950516164076,
          "correlation": 0.9979871053405538,
          "peak_absolute_m": 1.386252680647693e-08,
          "reference_peak_absolute_m": 1.4688964615463429e-08,
          "absolute_peak_time_s": 120.0,
          "components": {
            "E": {
              "relative_l2": 0.21415812731783374,
              "correlation": 0.9959376175677032,
              "peak_absolute_m": 4.718671664468096e-09,
              "reference_peak_absolute_m": 5.434959575901812e-09,
              "absolute_peak_time_s": 88.0
            },
            "N": {
              "relative_l2": 0.21415812731783443,
              "correlation": 0.9959376175677027,
              "peak_absolute_m": 8.172979067094345e-09,
              "reference_peak_absolute_m": 9.413626122544937e-09,
              "absolute_peak_time_s": 88.0
            },
            "U": {
              "relative_l2": 0.07052088682617678,
              "correlation": 0.9976044610777185,
              "peak_absolute_m": 1.386252680647693e-08,
              "reference_peak_absolute_m": 1.4688964615463429e-08,
              "absolute_peak_time_s": 120.0
            }
          }
        },
        "spgrn2012": {
          "relative_l2": 0.012265902769378449,
          "correlation": 0.9999248439792946,
          "peak_absolute_m": 1.4704159932805561e-08,
          "reference_peak_absolute_m": 1.4688964615463429e-08,
          "absolute_peak_time_s": 122.0,
          "components": {
            "E": {
              "relative_l2": 0.01494650874859298,
              "correlation": 0.9998208476546107,
              "peak_absolute_m": 5.493308890354972e-09,
              "reference_peak_absolute_m": 5.434959575901812e-09,
              "absolute_peak_time_s": 90.0
            },
            "N": {
              "relative_l2": 0.014946508748592973,
              "correlation": 0.9998208476546102,
              "peak_absolute_m": 9.514690099764624e-09,
              "reference_peak_absolute_m": 9.413626122544937e-09,
              "absolute_peak_time_s": 90.0
            },
            "U": {
              "relative_l2": 0.011078448831667273,
              "correlation": 0.9998821293086955,
              "peak_absolute_m": 1.4704159932805561e-08,
              "reference_peak_absolute_m": 1.4688964615463429e-08,
              "absolute_peak_time_s": 122.0
            }
          }
        },
        "spgrn2020": {
          "relative_l2": 0.0,
          "correlation": 1.0,
          "peak_absolute_m": 1.4688964615463429e-08,
          "reference_peak_absolute_m": 1.4688964615463429e-08,
          "absolute_peak_time_s": 123.0,
          "components": {
            "E": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 5.434959575901812e-09,
              "reference_peak_absolute_m": 5.434959575901812e-09,
              "absolute_peak_time_s": 91.0
            },
            "N": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 9.413626122544937e-09,
              "reference_peak_absolute_m": 9.413626122544937e-09,
              "absolute_peak_time_s": 91.0
            },
            "U": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 1.4688964615463429e-08,
              "reference_peak_absolute_m": 1.4688964615463429e-08,
              "absolute_peak_time_s": 123.0
            }
          }
        },
        "qssp2020": {
          "relative_l2": 0.012772480237692776,
          "correlation": 0.9999203139546053,
          "peak_absolute_m": 1.4577784680315633e-08,
          "reference_peak_absolute_m": 1.4688964615463429e-08,
          "absolute_peak_time_s": 124.0,
          "components": {
            "E": {
              "relative_l2": 0.016141881660193137,
              "correlation": 0.9998050616889279,
              "peak_absolute_m": 5.452043431299336e-09,
              "reference_peak_absolute_m": 5.434959575901812e-09,
              "absolute_peak_time_s": 88.0
            },
            "N": {
              "relative_l2": 0.016141913905811666,
              "correlation": 0.9998050616889275,
              "peak_absolute_m": 9.443214172810483e-09,
              "reference_peak_absolute_m": 9.413626122544937e-09,
              "absolute_peak_time_s": 88.0
            },
            "U": {
              "relative_l2": 0.011230027729599593,
              "correlation": 0.9998792575609086,
              "peak_absolute_m": 1.4577784680315633e-08,
              "reference_peak_absolute_m": 1.4688964615463429e-08,
              "absolute_peak_time_s": 124.0
            }
          }
        }
      }
    },
    {
      "distance_km": 600.0,
      "backends": {
        "qseis06": {
          "relative_l2": 0.1957403648536031,
          "correlation": 0.9940299811004638,
          "peak_absolute_m": 6.3218135045597715e-09,
          "reference_peak_absolute_m": 7.07739372400206e-09,
          "absolute_peak_time_s": 200.0,
          "components": {
            "E": {
              "relative_l2": 0.21235656473020204,
              "correlation": 0.9946687013001034,
              "peak_absolute_m": 3.3496046308401308e-09,
              "reference_peak_absolute_m": 3.991280505766944e-09,
              "absolute_peak_time_s": 144.0
            },
            "N": {
              "relative_l2": 0.21235656473020237,
              "correlation": 0.9946687013001037,
              "peak_absolute_m": 5.8016854058831015e-09,
              "reference_peak_absolute_m": 6.913100623247554e-09,
              "absolute_peak_time_s": 144.0
            },
            "U": {
              "relative_l2": 0.1669481345196108,
              "correlation": 0.992331936916556,
              "peak_absolute_m": 6.3218135045597715e-09,
              "reference_peak_absolute_m": 7.07739372400206e-09,
              "absolute_peak_time_s": 200.0
            }
          }
        },
        "qseis2025": {
          "relative_l2": 0.1957403648536031,
          "correlation": 0.9940299811004638,
          "peak_absolute_m": 6.3218135045597715e-09,
          "reference_peak_absolute_m": 7.07739372400206e-09,
          "absolute_peak_time_s": 200.0,
          "components": {
            "E": {
              "relative_l2": 0.21235656473020204,
              "correlation": 0.9946687013001034,
              "peak_absolute_m": 3.3496046308401308e-09,
              "reference_peak_absolute_m": 3.991280505766944e-09,
              "absolute_peak_time_s": 144.0
            },
            "N": {
              "relative_l2": 0.21235656473020237,
              "correlation": 0.9946687013001037,
              "peak_absolute_m": 5.8016854058831015e-09,
              "reference_peak_absolute_m": 6.913100623247554e-09,
              "absolute_peak_time_s": 144.0
            },
            "U": {
              "relative_l2": 0.1669481345196108,
              "correlation": 0.992331936916556,
              "peak_absolute_m": 6.3218135045597715e-09,
              "reference_peak_absolute_m": 7.07739372400206e-09,
              "absolute_peak_time_s": 200.0
            }
          }
        },
        "spgrn2012": {
          "relative_l2": 0.0007389209154489408,
          "correlation": 0.999999961672426,
          "peak_absolute_m": 7.0789703600213474e-09,
          "reference_peak_absolute_m": 7.07739372400206e-09,
          "absolute_peak_time_s": 200.0,
          "components": {
            "E": {
              "relative_l2": 0.0006265141445256323,
              "correlation": 0.9999999737021168,
              "peak_absolute_m": 3.990812509748222e-09,
              "reference_peak_absolute_m": 3.991280505766944e-09,
              "absolute_peak_time_s": 148.0
            },
            "N": {
              "relative_l2": 0.0006265141445267759,
              "correlation": 0.9999999737021171,
              "peak_absolute_m": 6.912290030365387e-09,
              "reference_peak_absolute_m": 6.913100623247554e-09,
              "absolute_peak_time_s": 148.0
            },
            "U": {
              "relative_l2": 0.000884514600028359,
              "correlation": 0.9999999985625954,
              "peak_absolute_m": 7.0789703600213474e-09,
              "reference_peak_absolute_m": 7.07739372400206e-09,
              "absolute_peak_time_s": 200.0
            }
          }
        },
        "spgrn2020": {
          "relative_l2": 0.0,
          "correlation": 0.9999999999999998,
          "peak_absolute_m": 7.07739372400206e-09,
          "reference_peak_absolute_m": 7.07739372400206e-09,
          "absolute_peak_time_s": 200.0,
          "components": {
            "E": {
              "relative_l2": 0.0,
              "correlation": 0.9999999999999998,
              "peak_absolute_m": 3.991280505766944e-09,
              "reference_peak_absolute_m": 3.991280505766944e-09,
              "absolute_peak_time_s": 148.0
            },
            "N": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 6.913100623247554e-09,
              "reference_peak_absolute_m": 6.913100623247554e-09,
              "absolute_peak_time_s": 148.0
            },
            "U": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 7.07739372400206e-09,
              "reference_peak_absolute_m": 7.07739372400206e-09,
              "absolute_peak_time_s": 200.0
            }
          }
        },
        "qssp2020": {
          "relative_l2": 0.004084794489382595,
          "correlation": 0.999992290407899,
          "peak_absolute_m": 7.065765991344448e-09,
          "reference_peak_absolute_m": 7.07739372400206e-09,
          "absolute_peak_time_s": 200.0,
          "components": {
            "E": {
              "relative_l2": 0.003844166604424268,
              "correlation": 0.9999931339547155,
              "peak_absolute_m": 3.992130695970552e-09,
              "reference_peak_absolute_m": 3.991280505766944e-09,
              "absolute_peak_time_s": 148.0
            },
            "N": {
              "relative_l2": 0.0038437423256230743,
              "correlation": 0.9999931370015325,
              "peak_absolute_m": 6.914574110533488e-09,
              "reference_peak_absolute_m": 6.913100623247554e-09,
              "absolute_peak_time_s": 148.0
            },
            "U": {
              "relative_l2": 0.004430291091308402,
              "correlation": 0.9999922722328612,
              "peak_absolute_m": 7.065765991344448e-09,
              "reference_peak_absolute_m": 7.07739372400206e-09,
              "absolute_peak_time_s": 200.0
            }
          }
        }
      }
    },
    {
      "distance_km": 900.0,
      "backends": {
        "qseis06": {
          "relative_l2": 0.22797851066132827,
          "correlation": 0.9902144875389441,
          "peak_absolute_m": 4.032786470521637e-09,
          "reference_peak_absolute_m": 4.703076361827965e-09,
          "absolute_peak_time_s": 276.0,
          "components": {
            "E": {
              "relative_l2": 0.23270270657920494,
              "correlation": 0.9915767608500791,
              "peak_absolute_m": 1.868896742419327e-09,
              "reference_peak_absolute_m": 1.983236345500928e-09,
              "absolute_peak_time_s": 256.0
            },
            "N": {
              "relative_l2": 0.2327027065792046,
              "correlation": 0.9915767608500792,
              "peak_absolute_m": 3.2370241119702395e-09,
              "reference_peak_absolute_m": 3.4350661138248336e-09,
              "absolute_peak_time_s": 256.0
            },
            "U": {
              "relative_l2": 0.22011983583755843,
              "correlation": 0.9880993423248939,
              "peak_absolute_m": 4.032786470521637e-09,
              "reference_peak_absolute_m": 4.703076361827965e-09,
              "absolute_peak_time_s": 276.0
            }
          }
        },
        "qseis2025": {
          "relative_l2": 0.22797851066132827,
          "correlation": 0.9902144875389441,
          "peak_absolute_m": 4.032786470521637e-09,
          "reference_peak_absolute_m": 4.703076361827965e-09,
          "absolute_peak_time_s": 276.0,
          "components": {
            "E": {
              "relative_l2": 0.23270270657920494,
              "correlation": 0.9915767608500791,
              "peak_absolute_m": 1.868896742419327e-09,
              "reference_peak_absolute_m": 1.983236345500928e-09,
              "absolute_peak_time_s": 256.0
            },
            "N": {
              "relative_l2": 0.2327027065792046,
              "correlation": 0.9915767608500792,
              "peak_absolute_m": 3.2370241119702395e-09,
              "reference_peak_absolute_m": 3.4350661138248336e-09,
              "absolute_peak_time_s": 256.0
            },
            "U": {
              "relative_l2": 0.22011983583755843,
              "correlation": 0.9880993423248939,
              "peak_absolute_m": 4.032786470521637e-09,
              "reference_peak_absolute_m": 4.703076361827965e-09,
              "absolute_peak_time_s": 276.0
            }
          }
        },
        "spgrn2012": {
          "relative_l2": 0.0005345646128700965,
          "correlation": 0.9999999885241487,
          "peak_absolute_m": 4.703827931691952e-09,
          "reference_peak_absolute_m": 4.703076361827965e-09,
          "absolute_peak_time_s": 278.0,
          "components": {
            "E": {
              "relative_l2": 0.00047173458242707485,
              "correlation": 0.9999999986622119,
              "peak_absolute_m": 1.983601067552779e-09,
              "reference_peak_absolute_m": 1.983236345500928e-09,
              "absolute_peak_time_s": 258.0
            },
            "N": {
              "relative_l2": 0.00047173458242654907,
              "correlation": 0.9999999986622118,
              "peak_absolute_m": 3.435697830949279e-09,
              "reference_peak_absolute_m": 3.4350661138248336e-09,
              "absolute_peak_time_s": 258.0
            },
            "U": {
              "relative_l2": 0.0006229465398006691,
              "correlation": 0.9999999996723746,
              "peak_absolute_m": 4.703827931691952e-09,
              "reference_peak_absolute_m": 4.703076361827965e-09,
              "absolute_peak_time_s": 278.0
            }
          }
        },
        "spgrn2020": {
          "relative_l2": 0.0,
          "correlation": 1.0,
          "peak_absolute_m": 4.703076361827965e-09,
          "reference_peak_absolute_m": 4.703076361827965e-09,
          "absolute_peak_time_s": 278.0,
          "components": {
            "E": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 1.983236345500928e-09,
              "reference_peak_absolute_m": 1.983236345500928e-09,
              "absolute_peak_time_s": 258.0
            },
            "N": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 3.4350661138248336e-09,
              "reference_peak_absolute_m": 3.4350661138248336e-09,
              "absolute_peak_time_s": 258.0
            },
            "U": {
              "relative_l2": 0.0,
              "correlation": 1.0,
              "peak_absolute_m": 4.703076361827965e-09,
              "reference_peak_absolute_m": 4.703076361827965e-09,
              "absolute_peak_time_s": 278.0
            }
          }
        },
        "qssp2020": {
          "relative_l2": 0.02302240999288494,
          "correlation": 0.9997296328387002,
          "peak_absolute_m": 4.710483313718251e-09,
          "reference_peak_absolute_m": 4.703076361827965e-09,
          "absolute_peak_time_s": 276.0,
          "components": {
            "E": {
              "relative_l2": 0.01783435967991834,
              "correlation": 0.9998258646338762,
              "peak_absolute_m": 2.0023288550828355e-09,
              "reference_peak_absolute_m": 1.983236345500928e-09,
              "absolute_peak_time_s": 256.0
            },
            "N": {
              "relative_l2": 0.017834359679923348,
              "correlation": 0.9998258646338761,
              "peak_absolute_m": 3.4681353104645814e-09,
              "reference_peak_absolute_m": 3.4350661138248336e-09,
              "absolute_peak_time_s": 256.0
            },
            "U": {
              "relative_l2": 0.029546681000247366,
              "correlation": 0.9995609352042928,
              "peak_absolute_m": 4.710483313718251e-09,
              "reference_peak_absolute_m": 4.703076361827965e-09,
              "absolute_peak_time_s": 276.0
            }
          }
        }
      }
    }
  ],
  "source_radius_control": {
    "backend": "QSEIS2025",
    "source_radius_ratio": 0.0,
    "default_source_radius_ratio": 0.05,
    "threshold_applied": false,
    "method": "Same physical STF, frequency band, origin-time grids and unscaled metrics",
    "provenance": {
      "npz_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\disp.npz",
      "npz_sha256": "d627bc21e2e15e2e3b10af3cc414dc1c135b1f5e4a35033a9bfe8594a4338096",
      "summary_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\summary.json",
      "summary": {
        "backend": "QSEIS2025",
        "started_utc": "2026-09-15T14:41:15Z",
        "platform": "Windows-11-10.0.26200-SP0",
        "python": "3.12.13",
        "dependencies": {
          "numpy": "2.3.5",
          "scipy": "1.18.0",
          "pandas": "3.0.0",
          "matplotlib": "3.11.0",
          "obspy": "1.5.0"
        },
        "source_depth_km": 10.0,
        "receiver_depth_km": 0.0,
        "moment_nm": 1000000000000000.0,
        "strike_dip_rake_deg": [
          30.0,
          45.0,
          90.0
        ],
        "azimuth_deg": 30.0,
        "reuse": false,
        "model": "Bundled AK135 elastic properties; illustrative constant Qp=600, Qs=300",
        "outputs": {
          "disp": {
            "shape": [
              3,
              3,
              256
            ],
            "components": [
              "E",
              "N",
              "U"
            ],
            "unit": "m",
            "finite": true,
            "peak_absolute": 1.416866183701976e-08
          }
        },
        "sampling_interval_s": 4.0,
        "max_frequency_hz": 0.125,
        "time_window_s": 4092.0,
        "output_time_range_s": [
          0.0,
          1020.0
        ],
        "distances_km": [
          300.0,
          600.0,
          900.0
        ],
        "native_samples": 1024,
        "earth_model_numeric_rows": 24,
        "wavelet_type": 0,
        "wavelet_duration_samples": 16,
        "wavelet_duration_s": 64.0,
        "flat_earth_transform": true,
        "regional": true,
        "source_radius_ratio": 0.0,
        "point_source": true,
        "source_time_function": {
          "scheme_id": "normalized_sin_squared_64s_damping_compensated_v1",
          "duration_s": 64.0,
          "samples": 1024,
          "sample_spacing_s": 0.06256109481915934,
          "wavelet_type": 0,
          "wavelet_duration_samples": 16,
          "sampling_interval_s": 4.0,
          "native_time_window_s": 4092.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017911427147591097,
          "rate_unit": "1/s",
          "time_unit": "s",
          "physical_definition": "r(t) = 2/64 * sin(pi*t/64)^2 for 0 <= t <= 64 s; zero otherwise",
          "input_definition": "piecewise-linear samples of r(t) * exp(2*pi*fi*t); no input-area renormalization",
          "effective_definition": "piecewise-linear input(t) * exp(-2*pi*fi*t)",
          "target_rate_integral": 1.0,
          "input_rate_integral": 0.9647094485300882,
          "effective_rate_integral": 1.0000000004130927,
          "target_centroid_s": 32.0,
          "effective_centroid_s": 32.00000073412074,
          "effective_rate_relative_l2": 1.9884466105608343e-06,
          "spectral_relative_l2_0_to_0_125_hz": 1.7827637217585575e-06,
          "validated_max_frequency_hz": 0.125,
          "spectral_max_absolute_error_0_to_0_0625_hz": 1.5646882209943217e-06,
          "physical_validation_limits": {
            "area_absolute_error": 1e-08,
            "centroid_absolute_error_s": 1e-05,
            "rate_relative_l2": 1e-05,
            "spectral_relative_l2": 1e-05
          },
          "reader_instruction": "Request disp/strain/stress; the reader integrates the type-0 rate kernels once",
          "input_relative_path": "10.00/0.00/0_0/grn.inp",
          "input_original_sha256": "66ded0e4209be985253c5c6409c3025fedd556a6e76e2d173ea0c5f1ee03c8b0",
          "input_prepared_sha256": "2c3859e0e472ac6cfafbc40225a069a3ef6511ec34b737e2034a63529ec57369",
          "samples_relative_path": "../source_time_function.npz",
          "description_relative_path": "../source_time_function.json",
          "samples_sha256": "338b4f06ebd8d08487d654680d42ec451effbace3de55d48a38a3a3d4a38c7c3"
        },
        "physical_source_time_function": {
          "shape": "normalized_sin_squared_moment_rate",
          "duration_s": 64.0,
          "physical_integral": 1.0,
          "centroid_s": 32.0
        },
        "spectral_settings": {
          "requested_max_frequency_hz": 0.125,
          "nyquist_frequency_hz": 0.125,
          "highest_computed_frequency_hz": 0.124755859375,
          "nyquist_bin_zeroed": true,
          "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
          "sampling_interval_s": 4.0,
          "fft_samples": 1024,
          "frequency_spacing_hz": 0.000244140625,
          "computed_frequency_samples": 512,
          "spec_time_window_s": 4092.0,
          "fft_period_s": 4096.0,
          "anti_alias": 0.01,
          "fi_hz": -0.00017911427147591097,
          "fi_window_s": 4092.0,
          "fi_source": "Validated library anti_alias and the solver window formula",
          "ldegup": null,
          "native_header": {
            "nt": 1024,
            "ntcut": 1024,
            "dt": 4.0,
            "nf": 512,
            "nfcut": 512,
            "df": 0.000244140625,
            "ldegup": null
          },
          "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\library\\10.00\\0.00\\0_0\\ss.tz",
          "validation_source": "Native input, all native T_sec output rows, and library metadata; nf, nfcut and df derived from qsgetinp.f (not stored in the text header)",
          "native_input_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\library\\10.00\\0.00\\0_0\\grn.inp",
          "native_output_columns": [
            "T_sec",
            "Uz0001",
            "Uz0002",
            "Uz0003"
          ]
        },
        "elapsed_seconds": 615.795,
        "file_count": 27,
        "output_bytes": 1005168
      },
      "native_time_ranges_s": [
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ],
        [
          0.0,
          1020.0
        ]
      ],
      "library_metadata_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\library\\green_lib_info.json",
      "library_metadata": {
        "processes_num": 1,
        "event_depth_list": [
          10.0
        ],
        "receiver_depth_list": [
          0.0
        ],
        "grn_dist_range": [
          300.0,
          900.0
        ],
        "grn_delta_dist": 300.0,
        "N_dist": 3,
        "N_dist_group": 1,
        "N_each_group": 3,
        "time_window": 4092.0,
        "sampling_interval": 4.0,
        "sampling_num": 1024,
        "slowness_int_algorithm": 0,
        "slowness_window": null,
        "time_reduction_velo": 0,
        "wavenumber_sampling_rate": 12,
        "anti_alias": 0.01,
        "free_surface": 0,
        "wavelet_duration": 16,
        "wavelet_type": 0,
        "flat_earth_transform": true,
        "path_nd": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\ak135_tutorial.nd",
        "path_nd_without_Q": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\library\\noQ.nd",
        "earth_model_layer_num": 24
      },
      "verified_spectral_settings": {
        "requested_max_frequency_hz": 0.125,
        "nyquist_frequency_hz": 0.125,
        "highest_computed_frequency_hz": 0.124755859375,
        "nyquist_bin_zeroed": true,
        "nyquist_bin_zeroed_source": "Fortran inverse FFT sets bin nf + 1 to zero",
        "sampling_interval_s": 4.0,
        "fft_samples": 1024,
        "frequency_spacing_hz": 0.000244140625,
        "computed_frequency_samples": 512,
        "spec_time_window_s": 4092.0,
        "fft_period_s": 4096.0,
        "anti_alias": 0.01,
        "fi_hz": -0.00017911427147591097,
        "fi_window_s": 4092.0,
        "fi_source": "Validated library anti_alias and the solver window formula",
        "ldegup": null,
        "native_header": {
          "nt": 1024,
          "ntcut": 1024,
          "dt": 4.0,
          "nf": 512,
          "nfcut": 512,
          "df": 0.000244140625,
          "ldegup": null
        },
        "native_header_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\library\\10.00\\0.00\\0_0\\ss.tz",
        "validation_source": "Native input, all native T_sec output rows, and library metadata; nf, nfcut and df derived from qsgetinp.f (not stored in the text header)",
        "native_input_path": "C:\\Users\\zjc\\python_works\\pygrnwang\\examples\\output\\qseis2025-regional-point-source-seek-disp\\library\\10.00\\0.00\\0_0\\grn.inp",
        "native_output_columns": [
          "T_sec",
          "Uz0001",
          "Uz0002",
          "Uz0003"
        ]
      }
    },
    "distances": [
      {
        "distance_km": 300.0,
        "vs_spgrn2020": {
          "relative_l2": 0.11492642864326566,
          "correlation": 0.9977246434867885,
          "peak_absolute_m": 1.416866183701976e-08,
          "reference_peak_absolute_m": 1.4688964615463429e-08,
          "absolute_peak_time_s": 120.0
        },
        "vs_qseis2025_default": {
          "relative_l2": 0.027622239429158656,
          "correlation": 0.9998062456843537,
          "peak_absolute_m": 1.416866183701976e-08,
          "reference_peak_absolute_m": 1.386252680647693e-08,
          "absolute_peak_time_s": 120.0
        }
      },
      {
        "distance_km": 600.0,
        "vs_spgrn2020": {
          "relative_l2": 0.1707580754334502,
          "correlation": 0.99354252109399,
          "peak_absolute_m": 6.730055920543166e-09,
          "reference_peak_absolute_m": 7.07739372400206e-09,
          "absolute_peak_time_s": 200.0
        },
        "vs_qseis2025_default": {
          "relative_l2": 0.06236793608576452,
          "correlation": 0.9995230122505029,
          "peak_absolute_m": 6.730055920543166e-09,
          "reference_peak_absolute_m": 6.3218135045597715e-09,
          "absolute_peak_time_s": 200.0
        }
      },
      {
        "distance_km": 900.0,
        "vs_spgrn2020": {
          "relative_l2": 0.19717563613400746,
          "correlation": 0.9900032040436229,
          "peak_absolute_m": 4.323458235953306e-09,
          "reference_peak_absolute_m": 4.703076361827965e-09,
          "absolute_peak_time_s": 276.0
        },
        "vs_qseis2025_default": {
          "relative_l2": 0.07397004525228487,
          "correlation": 0.9995904684848258,
          "peak_absolute_m": 4.323458235953306e-09,
          "reference_peak_absolute_m": 4.032786470521637e-09,
          "absolute_peak_time_s": 276.0
        }
      }
    ]
  },
  "checks": {
    "qseis06_vs_qseis2025": {
      "passed": true,
      "same_native_time_axes": true,
      "rtol": 1e-05,
      "atol_m": 1e-20,
      "scope": "all saved native displacement samples",
      "max_absolute_difference_m": 0.0
    },
    "qssp2020_vs_spgrn2020": {
      "passed": true,
      "relative_l2_limit": 0.05,
      "relative_l2_by_distance": [
        0.012772480237692776,
        0.004084794489382595,
        0.02302240999288494
      ]
    }
  },
  "passed": true,
  "figures": [
    "all-backends.png",
    "spherical-comparison.png",
    "qseis-comparison.png",
    "source-radius-comparison.png"
  ]
}
