├── src ├── ffm │ ├── __init__.py │ ├── ffm_admin │ │ ├── __init__.py │ │ ├── fileutils.py │ │ ├── ffm.py │ │ └── datautils.py │ ├── plane_management.py │ └── modulo_logs.py └── test │ ├── __init__.py │ ├── data │ ├── end_to_end │ │ ├── results │ │ │ ├── NP1 │ │ │ │ ├── fsp_sol_file.txt │ │ │ │ ├── special_model_space.txt │ │ │ │ ├── outlier_strong_motion_waves.json │ │ │ │ ├── special_regularization_borders.txt │ │ │ │ ├── regularization_borders.txt │ │ │ │ ├── wave_properties.json │ │ │ │ ├── final_G_MPG_BHZ.sac │ │ │ │ ├── cgnss_gf.json │ │ │ │ ├── strong_motion_gf.json │ │ │ │ ├── model_space.txt │ │ │ │ ├── shakemap_polygon.txt │ │ │ │ ├── vel_model.txt │ │ │ │ ├── annealing_prop.json │ │ │ │ ├── Event_mult.in │ │ │ │ ├── imagery_data.json │ │ │ │ ├── tensor_info.json │ │ │ │ ├── model_space.json │ │ │ │ ├── segments_data.json │ │ │ │ ├── sampling_filter.json │ │ │ │ ├── gnss_data │ │ │ │ ├── velmodel_data.json │ │ │ │ ├── static_synthetics.txt │ │ │ │ └── multisegments_data.json │ │ │ ├── filter_cgnss.txt │ │ │ ├── filter_strong.txt │ │ │ ├── surf_filter.txt │ │ │ ├── filter_tele.txt │ │ │ ├── imagery_weights.txt │ │ │ ├── Green_cgnss.txt │ │ │ ├── Green_strong.txt │ │ │ ├── data │ │ │ │ ├── P │ │ │ │ │ ├── processed_G_MPG_BHZ.sac │ │ │ │ │ ├── processed_GE_SNAA_BHZ.sac │ │ │ │ │ ├── processed_G_CRZF_BHZ.sac │ │ │ │ │ ├── processed_II_SUR_BHZ.sac │ │ │ │ │ ├── processed_IU_KOWA_BHZ.sac │ │ │ │ │ ├── processed_IU_MACI_BHZ.sac │ │ │ │ │ ├── processed_IU_RCBR_BHZ.sac │ │ │ │ │ ├── processed_IU_TSUM_BHZ.sac │ │ │ │ │ ├── processed_US_BRAL_BHZ.sac │ │ │ │ │ └── processed_US_GOGA_BHZ.sac │ │ │ │ ├── LOVE │ │ │ │ │ ├── processed_G_MPG_BHT.sac │ │ │ │ │ ├── processed_GE_SNAA_BHT.sac │ │ │ │ │ ├── processed_G_CRZF_BHT.sac │ │ │ │ │ ├── processed_II_SUR_BHT.sac │ │ │ │ │ ├── processed_IU_KOWA_BHT.sac │ │ │ │ │ ├── processed_IU_MACI_BHT.sac │ │ │ │ │ ├── processed_IU_RCBR_BHT.sac │ │ │ │ │ ├── processed_IU_TSUM_BHT.sac │ │ │ │ │ ├── processed_US_BRAL_BHT.sac │ │ │ │ │ └── processed_US_GOGA_BHT.sac │ │ │ │ ├── SH │ │ │ │ │ ├── processed_GE_SNAA_BHT.sac │ │ │ │ │ ├── processed_G_CRZF_BHT.sac │ │ │ │ │ ├── processed_G_MPG_BHT.sac │ │ │ │ │ ├── processed_II_SUR_BHT.sac │ │ │ │ │ ├── processed_IU_KOWA_BHT.sac │ │ │ │ │ ├── processed_IU_MACI_BHT.sac │ │ │ │ │ ├── processed_IU_RCBR_BHT.sac │ │ │ │ │ ├── processed_IU_TSUM_BHT.sac │ │ │ │ │ ├── processed_US_BRAL_BHT.sac │ │ │ │ │ └── processed_US_GOGA_BHT.sac │ │ │ │ ├── cGNSS │ │ │ │ │ ├── processed_ovll_LXE.sac │ │ │ │ │ ├── processed_ovll_LXN.sac │ │ │ │ │ ├── processed_ovll_LXZ.sac │ │ │ │ │ ├── processed_pedr_LXE.sac │ │ │ │ │ ├── processed_pedr_LXN.sac │ │ │ │ │ ├── processed_pedr_LXZ.sac │ │ │ │ │ ├── processed_pfrj_LXE.sac │ │ │ │ │ ├── processed_pfrj_LXN.sac │ │ │ │ │ └── processed_pfrj_LXZ.sac │ │ │ │ ├── RAYLEIGH │ │ │ │ │ ├── processed_G_CRZF_BHZ.sac │ │ │ │ │ ├── processed_G_MPG_BHZ.sac │ │ │ │ │ ├── processed_II_SUR_BHZ.sac │ │ │ │ │ ├── processed_GE_SNAA_BHZ.sac │ │ │ │ │ ├── processed_IU_KOWA_BHZ.sac │ │ │ │ │ ├── processed_IU_MACI_BHZ.sac │ │ │ │ │ ├── processed_IU_RCBR_BHZ.sac │ │ │ │ │ ├── processed_IU_TSUM_BHZ.sac │ │ │ │ │ ├── processed_US_BRAL_BHZ.sac │ │ │ │ │ └── processed_US_GOGA_BHZ.sac │ │ │ │ └── STR │ │ │ │ │ ├── processed_vel_CO03_HNE_C1.sac │ │ │ │ │ ├── processed_vel_CO03_HNN_C1.sac │ │ │ │ │ ├── processed_vel_CO03_HNZ_C1.sac │ │ │ │ │ ├── processed_vel_GO04_HNE_C.sac │ │ │ │ │ ├── processed_vel_GO04_HNN_C.sac │ │ │ │ │ ├── processed_vel_GO04_HNZ_C.sac │ │ │ │ │ ├── processed_vel_VA03_HNE_C1.sac │ │ │ │ │ ├── processed_vel_VA03_HNN_C1.sac │ │ │ │ │ └── processed_vel_VA03_HNZ_C1.sac │ │ │ ├── cgnss_gf.json │ │ │ ├── strong_motion_gf.json │ │ │ ├── body_wave_weight.txt │ │ │ ├── wavelets_cgnss.txt │ │ │ ├── wavelets_strong.txt │ │ │ ├── channels_cgnss.txt │ │ │ ├── channels_strong.txt │ │ │ ├── Wavelets_surf_tele.txt │ │ │ ├── Wavelets_tele_body.txt │ │ │ ├── static_data.txt │ │ │ ├── wavelets_surf.txt │ │ │ ├── wavelets_body.txt │ │ │ ├── channels_body.txt │ │ │ └── channels_surf.txt │ │ ├── data │ │ │ ├── ovll.LXE.SAC │ │ │ ├── ovll.LXN.SAC │ │ │ ├── ovll.LXZ.SAC │ │ │ ├── pedr.LXE.SAC │ │ │ ├── pedr.LXN.SAC │ │ │ ├── pedr.LXZ.SAC │ │ │ ├── pfrj.LXE.SAC │ │ │ ├── pfrj.LXN.SAC │ │ │ ├── pfrj.LXZ.SAC │ │ │ ├── C.GO04.HNE.sac │ │ │ ├── C.GO04.HNN.sac │ │ │ ├── C.GO04.HNZ.sac │ │ │ ├── C1.CO03.HNE.sac │ │ │ ├── C1.CO03.HNN.sac │ │ │ ├── C1.CO03.HNZ.sac │ │ │ ├── C1.VA03.HNE.sac │ │ │ ├── C1.VA03.HNN.sac │ │ │ ├── C1.VA03.HNZ.sac │ │ │ ├── GESNAA_BHE__.sac │ │ │ ├── GESNAA_BHN__.sac │ │ │ ├── GESNAA_BHZ__.sac │ │ │ ├── G_CRZF_BHE00.sac │ │ │ ├── G_CRZF_BHN00.sac │ │ │ ├── G_CRZF_BHZ00.sac │ │ │ ├── G_MPG__BHE00.sac │ │ │ ├── G_MPG__BHN00.sac │ │ │ ├── G_MPG__BHZ00.sac │ │ │ ├── IISUR__BH100.sac │ │ │ ├── IISUR__BH110.sac │ │ │ ├── IISUR__BH200.sac │ │ │ ├── IISUR__BH210.sac │ │ │ ├── IISUR__BHZ00.sac │ │ │ ├── IISUR__BHZ10.sac │ │ │ ├── IUKOWA_BH100.sac │ │ │ ├── IUKOWA_BH200.sac │ │ │ ├── IUKOWA_BHZ00.sac │ │ │ ├── IUMACI_BHE__.sac │ │ │ ├── IUMACI_BHN__.sac │ │ │ ├── IUMACI_BHZ__.sac │ │ │ ├── IURCBR_BH100.sac │ │ │ ├── IURCBR_BH110.sac │ │ │ ├── IURCBR_BH200.sac │ │ │ ├── IURCBR_BH210.sac │ │ │ ├── IURCBR_BHZ00.sac │ │ │ ├── IURCBR_BHZ10.sac │ │ │ ├── IUTSUM_BH100.sac │ │ │ ├── IUTSUM_BH110.sac │ │ │ ├── IUTSUM_BH200.sac │ │ │ ├── IUTSUM_BH210.sac │ │ │ ├── IUTSUM_BHZ00.sac │ │ │ ├── IUTSUM_BHZ10.sac │ │ │ ├── USBRAL_BH100.sac │ │ │ ├── USBRAL_BH200.sac │ │ │ ├── USBRAL_BHZ00.sac │ │ │ ├── USGOGA_BH100.sac │ │ │ ├── USGOGA_BH110.sac │ │ │ ├── USGOGA_BH200.sac │ │ │ ├── USGOGA_BH210.sac │ │ │ ├── USGOGA_BHZ00.sac │ │ │ ├── USGOGA_BHZ10.sac │ │ │ ├── response_file.txt │ │ │ ├── SAC_PZs_G_CRZF_BHE_00 │ │ │ ├── SAC_PZs_G_CRZF_BHN_00 │ │ │ ├── SAC_PZs_G_CRZF_BHZ_00 │ │ │ ├── SAC_PZs_IU_MACI_BHE___ │ │ │ ├── SAC_PZs_IU_MACI_BHN___ │ │ │ ├── SAC_PZs_IU_MACI_BHZ___ │ │ │ ├── SAC_PZs_GE_SNAA_BHE___ │ │ │ ├── SAC_PZs_GE_SNAA_BHN___ │ │ │ ├── SAC_PZs_GE_SNAA_BHZ___ │ │ │ ├── SAC_PZs_IU_RCBR_BH1_00 │ │ │ ├── SAC_PZs_IU_RCBR_BH2_00 │ │ │ ├── SAC_PZs_IU_RCBR_BHZ_00 │ │ │ ├── SAC_PZs_US_GOGA_BH1_10 │ │ │ ├── SAC_PZs_US_GOGA_BH2_10 │ │ │ ├── SAC_PZs_US_GOGA_BHZ_10 │ │ │ ├── SAC_PZs_US_GOGA_BH1_00 │ │ │ ├── SAC_PZs_US_GOGA_BH2_00 │ │ │ ├── SAC_PZs_US_GOGA_BHZ_00 │ │ │ ├── SAC_PZs_IU_TSUM_BH1_00 │ │ │ ├── SAC_PZs_IU_TSUM_BH2_00 │ │ │ ├── SAC_PZs_IU_TSUM_BHZ_00 │ │ │ ├── SAC_PZs_II_SUR_BH1_00 │ │ │ ├── SAC_PZs_II_SUR_BH2_00 │ │ │ ├── SAC_PZs_II_SUR_BHZ_00 │ │ │ ├── SAC_PZs_IU_KOWA_BH1_00 │ │ │ ├── SAC_PZs_IU_KOWA_BH2_00 │ │ │ ├── SAC_PZs_IU_KOWA_BHZ_00 │ │ │ ├── SAC_PZs_G_MPG_BHE_00 │ │ │ ├── SAC_PZs_G_MPG_BHN_00 │ │ │ ├── SAC_PZs_G_MPG_BHZ_00 │ │ │ ├── SAC_PZs_IU_RCBR_BH1_10 │ │ │ ├── SAC_PZs_IU_RCBR_BH2_10 │ │ │ ├── SAC_PZs_IU_RCBR_BHZ_10 │ │ │ ├── SAC_PZs_IU_TSUM_BH1_10 │ │ │ ├── SAC_PZs_IU_TSUM_BH2_10 │ │ │ ├── SAC_PZs_IU_TSUM_BHZ_10 │ │ │ ├── SAC_PZs_US_BRAL_BH1_00 │ │ │ ├── SAC_PZs_US_BRAL_BH2_00 │ │ │ ├── SAC_PZs_US_BRAL_BHZ_00 │ │ │ ├── static_data.txt │ │ │ ├── gnss_data │ │ │ ├── SAC_PZs_II_SUR_BH1_10 │ │ │ ├── SAC_PZs_II_SUR_BH2_10 │ │ │ ├── SAC_PZs_II_SUR_BHZ_10 │ │ │ ├── SAC_PZs_C1_VA03_HNN___ │ │ │ ├── SAC_PZs_C1_VA03_HNZ___ │ │ │ ├── SAC_PZs_C1_CO03_HNE___ │ │ │ ├── SAC_PZs_C1_CO03_HNN___ │ │ │ ├── SAC_PZs_C1_CO03_HNZ___ │ │ │ ├── SAC_PZs_C1_VA03_HNE___ │ │ │ ├── SAC_PZs_C_GO04_HNE___ │ │ │ ├── SAC_PZs_C_GO04_HNN___ │ │ │ └── SAC_PZs_C_GO04_HNZ___ │ │ ├── Illapel_CMTSOLUTION │ │ └── info │ │ │ └── 20003k7a_cmt_CMT │ ├── __init__.py │ ├── config.ini │ ├── MockObspyClient.py │ └── generate_test_inventories.py │ ├── .coveragerc │ ├── plane_management_test.py │ ├── modulo_logs_test.py │ ├── modelling_parameters_test.py │ ├── plot_maps_test.py │ ├── write_KML_test.py │ ├── data_acquisition_test.py │ ├── plot_maps_NEIC_test.py │ ├── velocity_models_test.py │ └── shakemap_polygon_test.py ├── fortran_code ├── src_dc_f95 │ ├── cmodel_ │ ├── gf_static_f95 │ ├── green_bank_openmp_f95 │ ├── constants.f95 │ ├── layer.f95 │ ├── bessel.f │ ├── bessel.FF │ ├── besself.txt │ ├── retrieve_gf.f95 │ ├── Complex.c │ ├── radiation_sf.f95 │ ├── bessel2.f95 │ ├── makefile │ └── fk_source.f95 ├── gfs_nm │ └── long │ │ └── low.in ├── bin_str_f95 │ ├── .directory │ ├── get_strong_motion │ ├── constants.f95 │ ├── makefile │ └── vel_model_data.f95 ├── bin_inversion_gfortran_f95 │ ├── green_tele │ ├── run_forward │ ├── run_modelling │ ├── docs │ │ ├── favicon.png │ │ ├── src │ │ │ ├── wavelet_param.f95 │ │ │ ├── modelling_inputs.f95 │ │ │ ├── constants.f95 │ │ │ ├── run_forward.f95 │ │ │ └── run_modelling_save.f95 │ │ ├── tipuesearch │ │ │ ├── img │ │ │ │ ├── loader.gif │ │ │ │ └── search.png │ │ │ └── tipuesearch_set.js │ │ ├── fonts │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ └── js │ │ │ └── ie10-viewport-bug-workaround.js │ ├── wavelet_param.f95 │ ├── constants.f95 │ ├── run_modelling_save.f95 │ └── Makefile ├── info │ ├── DEFAULT1.RESP_NEW │ ├── STS-2 │ ├── DEFAULT.RESP │ ├── DEFAULT1.RESP │ ├── SAC_PZs_AZ_PFO_BHZ_ │ ├── DEFAULT.RESP_NEW │ ├── DEFAULT2.RESP_NEW │ ├── DEFAULT2.RESP │ ├── STS_1.RESP_new │ ├── STS_1.RESP │ ├── Station_problem_report │ ├── fault2.cpt │ ├── prem_mantle │ ├── as.txt │ ├── bathy.cpt │ ├── model_prem │ ├── model_prem_water │ ├── model_prem_s │ ├── relief_n.cpt │ ├── us.cpt │ ├── after_20080520.txt │ └── after.txt ├── Makefile └── rename_files.py ├── binaries_test ├── annealing_prop.json ├── special_model_space.txt ├── filtro_strong.txt ├── special_regularization_borders.txt ├── filtro_tele.txt ├── regularization_borders.txt ├── annealing.txt ├── Green_strong.txt ├── model_space.txt ├── vel_model.txt ├── wavelets_strong.txt ├── static_data.txt ├── body_wave_weight.txt └── channels_strong.txt ├── multi_segment_example ├── segment_data.json ├── model_space.json └── segments_data.json ├── pytest.ini ├── docs ├── figures │ ├── fork.png │ ├── clone.png │ ├── add-remote.png │ ├── start-review.png │ └── submit-review.png ├── examples │ └── config.ini ├── data-dependencies.md └── code-dependencies.md ├── examples ├── Tutorial_Figures │ ├── FDF_SH_shiftmatch.png │ ├── Fault_Orientation.png │ ├── Multi_Segment_Positions.png │ ├── SlipDistribution_example.png │ └── Chile_crustal_velocity_model.png └── Multisegment_Example │ ├── model_space.json │ └── segments_data.json ├── CODE_OF_CONDUCT.md ├── .dockerignore ├── .gitignore ├── .trivyignore ├── install.d └── environment.yml ├── DISCLAIMER.md ├── CONTRIBUTING.md ├── miniforge_install.sh ├── .gitlab-ci.yml ├── code.json ├── Dockerfile ├── pyproject.toml └── LICENSE.md /src/ffm/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/test/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/cmodel_: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/ffm/ffm_admin/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /binaries_test/annealing_prop.json: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /binaries_test/special_model_space.txt: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /multi_segment_example/segment_data.json: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /binaries_test/filtro_strong.txt: -------------------------------------------------------------------------------- 1 | Corners: 0.01 0.125 -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/fsp_sol_file.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /binaries_test/special_regularization_borders.txt: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /binaries_test/filtro_tele.txt: -------------------------------------------------------------------------------- 1 | Corners: 0.004 1.0 2 | dt: 0.2 -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | timeout = 15 3 | log_level=INFO 4 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/special_model_space.txt: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/filter_cgnss.txt: -------------------------------------------------------------------------------- 1 | Corners: 0.01 0.3 -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/outlier_strong_motion_waves.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/filter_strong.txt: -------------------------------------------------------------------------------- 1 | Corners: 0.01 0.125 -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/surf_filter.txt: -------------------------------------------------------------------------------- 1 | 0.003 0.004 0.006 0.007 -------------------------------------------------------------------------------- /binaries_test/regularization_borders.txt: -------------------------------------------------------------------------------- 1 | 1 2 | 0 0 3 | 0 0 4 | 0 0 5 | 0 0 6 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/special_regularization_borders.txt: -------------------------------------------------------------------------------- 1 | 0 2 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/filter_tele.txt: -------------------------------------------------------------------------------- 1 | Corners: 0.004 1.0 2 | dt: 0.2 -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/imagery_weights.txt: -------------------------------------------------------------------------------- 1 | 2 2 | 802 1.0 3 | 1364 1.0 4 | -------------------------------------------------------------------------------- /fortran_code/gfs_nm/long/low.in: -------------------------------------------------------------------------------- 1 | 2048 2 82020 1700 100 128 11000 2 | 4 2.5 50 3 | 20 0.1 1591 -------------------------------------------------------------------------------- /src/test/.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | concurrency = multiprocessing 3 | parallel = true 4 | sigterm = true -------------------------------------------------------------------------------- /docs/figures/fork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/docs/figures/fork.png -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/regularization_borders.txt: -------------------------------------------------------------------------------- 1 | 1 2 | 0 0 3 | 0 0 4 | 0 0 5 | 0 0 6 | -------------------------------------------------------------------------------- /docs/figures/clone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/docs/figures/clone.png -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/Green_cgnss.txt: -------------------------------------------------------------------------------- 1 | vel_model.txt 2 | 49.8 1 1 3 | 1000 0 1 4 | 10 0.4 50000 25 -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/Green_strong.txt: -------------------------------------------------------------------------------- 1 | vel_model.txt 2 | 49.8 1 1 3 | 1000 0 1 4 | 10 0.4 50000 10 -------------------------------------------------------------------------------- /src/test/data/__init__.py: -------------------------------------------------------------------------------- 1 | from .MockObspyClient import MockObspyClient 2 | 3 | __all__ = ["MockObspyClient"] 4 | -------------------------------------------------------------------------------- /docs/figures/add-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/docs/figures/add-remote.png -------------------------------------------------------------------------------- /fortran_code/bin_str_f95/.directory: -------------------------------------------------------------------------------- 1 | [Dolphin] 2 | PreviewsShown=true 3 | Timestamp=2023,7,13,11,30,7 4 | Version=4 5 | -------------------------------------------------------------------------------- /docs/figures/start-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/docs/figures/start-review.png -------------------------------------------------------------------------------- /docs/figures/submit-review.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/docs/figures/submit-review.png -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/wave_properties.json: -------------------------------------------------------------------------------- 1 | {"num_longwaves": "19", "num_pwaves": "10", "num_shwaves": "9"} -------------------------------------------------------------------------------- /binaries_test/annealing.txt: -------------------------------------------------------------------------------- 1 | 250 -7 1 3.2291872286240194e+28 90 2 | 0.01 0.97 4e-06 0.1 0.01 0.15 0.15 3 | 0 0.0001 0 124 4 | 1 5 | -------------------------------------------------------------------------------- /binaries_test/Green_strong.txt: -------------------------------------------------------------------------------- 1 | vel_model.txt 2 | 49.8 1 1 3 | 1000 0 1 4 | 10 0.4 50000 10 5 | /home/pkoch/binaries_test/GF_strong 6 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/gf_static_f95: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/src_dc_f95/gf_static_f95 -------------------------------------------------------------------------------- /fortran_code/bin_str_f95/get_strong_motion: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_str_f95/get_strong_motion -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/ovll.LXE.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/ovll.LXE.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/ovll.LXN.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/ovll.LXN.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/ovll.LXZ.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/ovll.LXZ.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/pedr.LXE.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/pedr.LXE.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/pedr.LXN.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/pedr.LXN.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/pedr.LXZ.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/pedr.LXZ.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/pfrj.LXE.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/pfrj.LXE.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/pfrj.LXN.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/pfrj.LXN.SAC -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/pfrj.LXZ.SAC: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/pfrj.LXZ.SAC -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/green_bank_openmp_f95: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/src_dc_f95/green_bank_openmp_f95 -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C.GO04.HNE.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C.GO04.HNE.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C.GO04.HNN.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C.GO04.HNN.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C.GO04.HNZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C.GO04.HNZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C1.CO03.HNE.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C1.CO03.HNE.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C1.CO03.HNN.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C1.CO03.HNN.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C1.CO03.HNZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C1.CO03.HNZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C1.VA03.HNE.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C1.VA03.HNE.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C1.VA03.HNN.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C1.VA03.HNN.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/C1.VA03.HNZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/C1.VA03.HNZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/GESNAA_BHE__.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/GESNAA_BHE__.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/GESNAA_BHN__.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/GESNAA_BHN__.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/GESNAA_BHZ__.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/GESNAA_BHZ__.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/G_CRZF_BHE00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/G_CRZF_BHE00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/G_CRZF_BHN00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/G_CRZF_BHN00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/G_CRZF_BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/G_CRZF_BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/G_MPG__BHE00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/G_MPG__BHE00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/G_MPG__BHN00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/G_MPG__BHN00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/G_MPG__BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/G_MPG__BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IISUR__BH100.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IISUR__BH100.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IISUR__BH110.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IISUR__BH110.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IISUR__BH200.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IISUR__BH200.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IISUR__BH210.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IISUR__BH210.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IISUR__BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IISUR__BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IISUR__BHZ10.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IISUR__BHZ10.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUKOWA_BH100.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUKOWA_BH100.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUKOWA_BH200.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUKOWA_BH200.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUKOWA_BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUKOWA_BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUMACI_BHE__.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUMACI_BHE__.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUMACI_BHN__.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUMACI_BHN__.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUMACI_BHZ__.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUMACI_BHZ__.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IURCBR_BH100.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IURCBR_BH100.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IURCBR_BH110.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IURCBR_BH110.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IURCBR_BH200.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IURCBR_BH200.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IURCBR_BH210.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IURCBR_BH210.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IURCBR_BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IURCBR_BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IURCBR_BHZ10.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IURCBR_BHZ10.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUTSUM_BH100.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUTSUM_BH100.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUTSUM_BH110.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUTSUM_BH110.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUTSUM_BH200.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUTSUM_BH200.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUTSUM_BH210.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUTSUM_BH210.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUTSUM_BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUTSUM_BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/IUTSUM_BHZ10.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/IUTSUM_BHZ10.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USBRAL_BH100.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USBRAL_BH100.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USBRAL_BH200.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USBRAL_BH200.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USBRAL_BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USBRAL_BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USGOGA_BH100.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USGOGA_BH100.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USGOGA_BH110.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USGOGA_BH110.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USGOGA_BH200.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USGOGA_BH200.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USGOGA_BH210.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USGOGA_BH210.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USGOGA_BHZ00.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USGOGA_BHZ00.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/USGOGA_BHZ10.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/data/USGOGA_BHZ10.sac -------------------------------------------------------------------------------- /examples/Tutorial_Figures/FDF_SH_shiftmatch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/examples/Tutorial_Figures/FDF_SH_shiftmatch.png -------------------------------------------------------------------------------- /examples/Tutorial_Figures/Fault_Orientation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/examples/Tutorial_Figures/Fault_Orientation.png -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/green_tele: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/green_tele -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/run_forward: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/run_forward -------------------------------------------------------------------------------- /examples/Tutorial_Figures/Multi_Segment_Positions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/examples/Tutorial_Figures/Multi_Segment_Positions.png -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/run_modelling: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/run_modelling -------------------------------------------------------------------------------- /examples/Tutorial_Figures/SlipDistribution_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/examples/Tutorial_Figures/SlipDistribution_example.png -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/favicon.png -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/final_G_MPG_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/NP1/final_G_MPG_BHZ.sac -------------------------------------------------------------------------------- /examples/Tutorial_Figures/Chile_crustal_velocity_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/examples/Tutorial_Figures/Chile_crustal_velocity_model.png -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_G_MPG_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_G_MPG_BHZ.sac -------------------------------------------------------------------------------- /fortran_code/info/DEFAULT1.RESP_NEW: -------------------------------------------------------------------------------- 1 | 2 | 3 3 | 0. 0. 4 | 0. 0. 5 | 0. 0. 6 | 4 7 | -6.17E-03 6.17E-03 8 | -6.17E-03 -6.17E-03 9 | -39.18 49.12 10 | -39.18 -49.12 11 | 3948 12 | -------------------------------------------------------------------------------- /fortran_code/info/STS-2: -------------------------------------------------------------------------------- 1 | AZ PFO BHZ 2 | 3 3 | 0 0 4 | 0 0 5 | 0 0 6 | 5 7 | -0.0370 0.0370 8 | -0.0370 -0.0370 9 | -251.3000 0.0000 10 | -131.0000 467.3000 11 | -131.0000 -467.3000 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/cgnss_gf.json: -------------------------------------------------------------------------------- 1 | { 2 | "dt": 0.4, 3 | "max_depth": 49.8, 4 | "max_dist": 1000, 5 | "min_depth": 1, 6 | "min_dist": 0, 7 | "time_corr": 25 8 | } 9 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_G_MPG_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_G_MPG_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_GE_SNAA_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_GE_SNAA_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_G_CRZF_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_G_CRZF_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_II_SUR_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_II_SUR_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_IU_KOWA_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_IU_KOWA_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_IU_MACI_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_IU_MACI_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_IU_RCBR_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_IU_RCBR_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_IU_TSUM_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_IU_TSUM_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_US_BRAL_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_US_BRAL_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/P/processed_US_GOGA_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/P/processed_US_GOGA_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_GE_SNAA_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_GE_SNAA_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_G_CRZF_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_G_CRZF_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_G_MPG_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_G_MPG_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_II_SUR_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_II_SUR_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_IU_KOWA_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_IU_KOWA_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_IU_MACI_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_IU_MACI_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_IU_RCBR_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_IU_RCBR_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_IU_TSUM_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_IU_TSUM_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_US_BRAL_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_US_BRAL_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/SH/processed_US_GOGA_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/SH/processed_US_GOGA_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_ovll_LXE.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_ovll_LXE.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_ovll_LXN.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_ovll_LXN.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_ovll_LXZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_ovll_LXZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_pedr_LXE.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_pedr_LXE.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_pedr_LXN.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_pedr_LXN.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_pedr_LXZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_pedr_LXZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_pfrj_LXE.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_pfrj_LXE.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_pfrj_LXN.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_pfrj_LXN.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/cGNSS/processed_pfrj_LXZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/cGNSS/processed_pfrj_LXZ.sac -------------------------------------------------------------------------------- /fortran_code/info/DEFAULT.RESP: -------------------------------------------------------------------------------- 1 | ZEROS 2 2 | 0. 0. 3 | 0. 0. 4 | POLES 4 5 | -6.17E-03 6.17E-03 6 | -6.17E-03 -6.17E-03 7 | -39.18 49.12 8 | -39.18 -49.12 9 | CONSTANT 3948 10 | -------------------------------------------------------------------------------- /fortran_code/info/DEFAULT1.RESP: -------------------------------------------------------------------------------- 1 | ZEROS 2 2 | 0. 0. 3 | 0. 0. 4 | POLES 4 5 | -6.17E-03 6.17E-03 6 | -6.17E-03 -6.17E-03 7 | -39.18 49.12 8 | -39.18 -49.12 9 | CONSTANT 3948 10 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_GE_SNAA_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_GE_SNAA_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_G_CRZF_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_G_CRZF_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_II_SUR_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_II_SUR_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_IU_KOWA_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_IU_KOWA_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_IU_MACI_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_IU_MACI_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_IU_RCBR_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_IU_RCBR_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_IU_TSUM_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_IU_TSUM_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_US_BRAL_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_US_BRAL_BHT.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/LOVE/processed_US_GOGA_BHT.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/LOVE/processed_US_GOGA_BHT.sac -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/src/wavelet_param.f95: -------------------------------------------------------------------------------- 1 | module wavelet_param 2 | 3 | implicit none 4 | integer :: lnpt, nlen, jmin, jmax, jfmax 5 | 6 | end module wavelet_param 7 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/tipuesearch/img/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/tipuesearch/img/loader.gif -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/tipuesearch/img/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/tipuesearch/img/search.png -------------------------------------------------------------------------------- /fortran_code/info/SAC_PZs_AZ_PFO_BHZ_: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | POLES 5 3 | -0.0370 0.0370 4 | -0.0370 -0.0370 5 | -251.3000 0.0000 6 | -131.0000 467.3000 7 | -131.0000 -467.3000 8 | CONSTANT 4.673674e+16 9 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/strong_motion_gf.json: -------------------------------------------------------------------------------- 1 | { 2 | "dt": 0.4, 3 | "max_depth": 49.8, 4 | "max_dist": 1000, 5 | "min_depth": 1, 6 | "min_dist": 0, 7 | "time_corr": 10 8 | } 9 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_G_CRZF_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_G_CRZF_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_G_MPG_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_G_MPG_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_II_SUR_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_II_SUR_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_CO03_HNE_C1.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_CO03_HNE_C1.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_CO03_HNN_C1.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_CO03_HNN_C1.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_CO03_HNZ_C1.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_CO03_HNZ_C1.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_GO04_HNE_C.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_GO04_HNE_C.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_GO04_HNN_C.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_GO04_HNN_C.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_GO04_HNZ_C.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_GO04_HNZ_C.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_VA03_HNE_C1.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_VA03_HNE_C1.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_VA03_HNN_C1.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_VA03_HNN_C1.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/STR/processed_vel_VA03_HNZ_C1.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/STR/processed_vel_VA03_HNZ_C1.sac -------------------------------------------------------------------------------- /fortran_code/info/DEFAULT.RESP_NEW: -------------------------------------------------------------------------------- 1 | 2 | 3 3 | 0. 0. 4 | 0. 0. 5 | 0. 0. 6 | 4 7 | -6.1700E-03 6.1700E-03 8 | -6.1700E-03 -6.1700E-03 9 | -39.1800 49.1200 10 | -39.1800 -49.1200 11 | 3948 12 | -------------------------------------------------------------------------------- /fortran_code/info/DEFAULT2.RESP_NEW: -------------------------------------------------------------------------------- 1 | 2 | 3 3 | 0. 0. 4 | 0. 0. 5 | 0. 0. 6 | 5 7 | -0.037 0.037 8 | -0.037 -0.037 9 | -251.30 0.00 10 | -131.00 467.30 11 | -131.00 -467.30 12 | 5.93044e+07 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_GE_SNAA_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_GE_SNAA_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_KOWA_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_KOWA_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_MACI_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_MACI_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_RCBR_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_RCBR_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_TSUM_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_IU_TSUM_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_US_BRAL_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_US_BRAL_BHZ.sac -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/data/RAYLEIGH/processed_US_GOGA_BHZ.sac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/src/test/data/end_to_end/results/data/RAYLEIGH/processed_US_GOGA_BHZ.sac -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /fortran_code/info/DEFAULT2.RESP: -------------------------------------------------------------------------------- 1 | ZEROS 2 2 | 0. 0. 3 | 0. 0. 4 | POLES 5 5 | -0.037 0.0370 6 | -0.037 -0.0370 7 | -251.30 0.00 8 | -131.00 467.30 9 | -131.00 -467.30 10 | CONSTANT 5.93044e+07 11 | -------------------------------------------------------------------------------- /fortran_code/info/STS_1.RESP_new: -------------------------------------------------------------------------------- 1 | 2 | 3 3 | 0. 0. 4 | 0. 0. 5 | 0. 0. 6 | 4 7 | -1.23400E-02 1.23400E-02 8 | -1.23400E-02 -1.23400E-02 9 | -39.1800 49.1200 10 | -39.1800 -49.1200 11 | 3948 12 | -------------------------------------------------------------------------------- /fortran_code/info/STS_1.RESP: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0. 0. 3 | 0. 0. 4 | 0. 0. 5 | POLES 4 6 | -1.23400E-02 1.23400E-02 7 | -1.23400E-02 -1.23400E-02 8 | -39.1800 49.1200 9 | -39.1800 -49.1200 10 | CONSTANT 3948 11 | -------------------------------------------------------------------------------- /binaries_test/model_space.txt: -------------------------------------------------------------------------------- 1 | 0 2 | 1 3 | 2700 2700 4 | 1 1 1 1 5 | 2700 0.0 51 6 | 2700 0.0 51 7 | 2700 0.0 51 8 | 2700 0.0 51 9 | 2700 0.0 51 10 | 129.27817171619563 89.27817171619563 21 11 | 2.6 2.4 3 12 | 5 8 13 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DOI-USGS/neic-finitefault/HEAD/fortran_code/bin_inversion_gfortran_f95/docs/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/cgnss_gf.json: -------------------------------------------------------------------------------- 1 | { 2 | "dt": 0.4, 3 | "location": "/home/user/GF_cgnss", 4 | "max_depth": 49.8, 5 | "max_dist": 1000, 6 | "min_depth": 1, 7 | "min_dist": 0, 8 | "time_corr": 25 9 | } 10 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/strong_motion_gf.json: -------------------------------------------------------------------------------- 1 | { 2 | "dt": 0.4, 3 | "location": "/home/user/GF_cgnss", 4 | "max_depth": 49.8, 5 | "max_dist": 1000, 6 | "min_depth": 1, 7 | "min_dist": 0, 8 | "time_corr": 10 9 | } 10 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/model_space.txt: -------------------------------------------------------------------------------- 1 | 0 2 | 1 3 | 2900 2900 4 | 1 1 1 1 5 | 2900 0.0 51 6 | 2900 0.0 51 7 | 2900 0.0 51 8 | 2900 0.0 51 9 | 2900 0.0 51 10 | 129.27817171619563 89.27817171619564 21 11 | 2.6 2.4 3 12 | 5 8 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/response_file.txt: -------------------------------------------------------------------------------- 1 | ZEROS 2 2 | 0. 0. 3 | 0. 0. 4 | POLES 4 5 | -6.17E-03 6.17E-03 6 | -6.17E-03 -6.17E-03 7 | -39.18 49.12 8 | -39.18 -49.12 9 | CONSTANT 3948 -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | All contributions to- and interactions surrounding- this project will abide by 4 | the [USGS Code of Scientific Conduct][1]. 5 | 6 | [1]: https://www.usgs.gov/office-of-science-quality-and-integrity/fundamental-science-practices 7 | -------------------------------------------------------------------------------- /binaries_test/vel_model.txt: -------------------------------------------------------------------------------- 1 | 6 2 | 3.35 1.44 2.0447 0.074 1200.0 600.0 3 | 6.23 3.61 2.7074199 12.076 1200.0 600.0 4 | 6.75 3.87 2.83123 12.945 1200.0 600.0 5 | 7.65 4.36 2.96935 15.8029995 1200.0 600.0 6 | 8.08 4.473 3.3754 196.0 1200.0 500.0 7 | 8.594 4.657 3.4465 36.0 360.0 140.0 8 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/shakemap_polygon.txt: -------------------------------------------------------------------------------- 1 | #Source: USGS NEIC Rapid Finite Fault 2 | #Event ID: us20003k7a 3 | #Model created: 2023-10-03 21:07:37 4 | -72.38 -31.74 -0.16 5 | -72.06 -29.34 -0.16 6 | -71.15 -29.43 30.18 7 | -71.47 -31.83 30.18 8 | -72.38 -31.74 -0.16 9 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # Since this is at the top level ignore everything 2 | * 3 | # Except for the python code, miniforge files, fortran_code, and install scripts 4 | !install.d 5 | !fortran_code 6 | !src 7 | !pyproject.toml 8 | !fd_bank 9 | !LITHO1.0.nc 10 | !pb2002_boundaries.gmt 11 | !examples -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/vel_model.txt: -------------------------------------------------------------------------------- 1 | 6 2 | 3.35 1.44 2.0447 0.074 1200.0 600.0 3 | 6.23 3.61 2.7074199 12.076 1200.0 600.0 4 | 6.75 3.87 2.83123 12.945 1200.0 600.0 5 | 7.65 4.36 2.96935 15.8029995 1200.0 600.0 6 | 8.08 4.473 3.3754 196.0 1200.0 500.0 7 | 8.594 4.657 3.4465 36.0 360.0 140.0 8 | -------------------------------------------------------------------------------- /fortran_code/info/Station_problem_report: -------------------------------------------------------------------------------- 1 | ## Oct 21,2003 2 | 00 channel of II station PFO has only half of the synthetic SH amplitude recorded at PAS for Hokkaido earthquake. Waveform modeling indicate the amplitude of PAS is consistent with other stations. 3 | PFO 00 channel also show the clip signals for this earthquake. 4 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/annealing_prop.json: -------------------------------------------------------------------------------- 1 | { 2 | "cooling_rate": 0.97, 3 | "initial_temperature": 0.01, 4 | "iterations": 250, 5 | "max_source_dur": 124, 6 | "moment_weight": 0.1, 7 | "seismic_moment": 3.2291872286240194e+28, 8 | "slip_weight": 0.15, 9 | "time_weight": 0.15 10 | } -------------------------------------------------------------------------------- /fortran_code/info/fault2.cpt: -------------------------------------------------------------------------------- 1 | # cpt file created by: makecpt -Crainbow 2 | #COLOR_MODEL = RGB 3 | # 4 | 0 255 255 255 32 255 255 255 5 | 32 255 255 255 82 0 255 255 6 | 82 0 255 255 120 0 255 0 7 | 120 0 255 0 159 255 255 0 8 | 159 255 255 0 202 255 170 0 9 | 202 255 170 0 241 255 0 0 10 | B 255 255 255 11 | F 255 0 0 12 | N 128 128 128 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/Event_mult.in: -------------------------------------------------------------------------------- 1 | 2015 9 259 22 2 | 6.613912311529926 19.280827965117993 109.27817171619564 3.229187228624019e+21 3 | -31.57 -71.67 2015 9 259 22 4 | 0.2 10 0 5 | 1.5 1.5 10 6 | 2.5 7 | 1 17.92760869565217 14.924353208236587 8 | 1 9 | 19.280827965117993 6.613912311529926 109.27817171619564 1 10 | 23 9 0 11 | 9 5 1 22.4 -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_G_CRZF_BHE_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 4 6 | -1.2340E-02 1.2340E-02 7 | -1.2340E-02 -1.2340E-02 8 | -1.9587E+01 2.4561E+01 9 | -1.9587E+01 -2.4561E+01 10 | CONSTANT 3.866000e+12 11 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_G_CRZF_BHN_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 4 6 | -1.2340E-02 1.2340E-02 7 | -1.2340E-02 -1.2340E-02 8 | -1.9587E+01 2.4561E+01 9 | -1.9587E+01 -2.4561E+01 10 | CONSTANT 3.889200e+12 11 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_G_CRZF_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 4 6 | -1.2340E-02 1.2340E-02 7 | -1.2340E-02 -1.2340E-02 8 | -1.9587E+01 2.4561E+01 9 | -1.9587E+01 -2.4561E+01 10 | CONSTANT 4.098500e+12 11 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_MACI_BHE___: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 4 6 | -1.2340E-02 -1.2340E-02 7 | -1.2340E-02 1.2340E-02 8 | -3.9180E+01 -4.9120E+01 9 | -3.9180E+01 4.9120E+01 10 | CONSTANT 3.805800e+12 11 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_MACI_BHN___: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 4 6 | -1.2340E-02 -1.2340E-02 7 | -1.2340E-02 1.2340E-02 8 | -3.9180E+01 -4.9120E+01 9 | -3.9180E+01 4.9120E+01 10 | CONSTANT 3.769400e+12 11 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_MACI_BHZ___: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 4 6 | -1.2340E-02 -1.2340E-02 7 | -1.2340E-02 1.2340E-02 8 | -3.9180E+01 -4.9120E+01 9 | -3.9180E+01 4.9120E+01 10 | CONSTANT 3.935000e+12 11 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/imagery_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "insar_ascending": [ 3 | { 4 | "name": "insar_ascending.txt", 5 | "ramp": null, 6 | "weight": 1.0 7 | } 8 | ], 9 | "insar_descending": [ 10 | { 11 | "name": "insar_descending.txt", 12 | "ramp": null, 13 | "weight": 1.0 14 | } 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/body_wave_weight.txt: -------------------------------------------------------------------------------- 1 | 1.0 MPG BHZ 2 | 1.0 MACI BHZ 3 | 1.0 RCBR BHZ 4 | 1.0 KOWA BHZ 5 | 1.0 TSUM BHZ 6 | 1.0 SUR BHZ 7 | 1.0 CRZF BHZ 8 | 1.0 SNAA BHZ 9 | 1.0 BRAL BHZ 10 | 1.0 GOGA BHZ 11 | 0.5 MPG BHT 12 | 0.5 MACI BHT 13 | 0.5 RCBR BHT 14 | 0.5 KOWA BHT 15 | 0.5 TSUM BHT 16 | 0.5 SUR BHT 17 | 0.5 CRZF BHT 18 | 0.5 SNAA BHT 19 | 0.5 GOGA BHT 20 | -------------------------------------------------------------------------------- /src/ffm/ffm_admin/fileutils.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | from typing import List 3 | 4 | 5 | def validate_files(files: List[pathlib.Path]): 6 | "Validate files exist" 7 | for file in files: 8 | file = pathlib.Path(file) 9 | if not file.exists(): 10 | raise FileNotFoundError( 11 | f"Expected file ({str(file.resolve())}) does not exist!" 12 | ) 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_GE_SNAA_BHE___: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -3.7004E-02 3.7016E-02 7 | -3.7004E-02 -3.7016E-02 8 | -2.5133E+02 0.0000E+00 9 | -1.3104E+02 -4.6729E+02 10 | -1.3104E+02 4.6729E+02 11 | CONSTANT 2.015800e+18 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_GE_SNAA_BHN___: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -3.7004E-02 3.7016E-02 7 | -3.7004E-02 -3.7016E-02 8 | -2.5133E+02 0.0000E+00 9 | -1.3104E+02 -4.6729E+02 10 | -1.3104E+02 4.6729E+02 11 | CONSTANT 2.015800e+18 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_GE_SNAA_BHZ___: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -3.7004E-02 3.7016E-02 7 | -3.7004E-02 -3.7016E-02 8 | -2.5133E+02 0.0000E+00 9 | -1.3104E+02 -4.6729E+02 10 | -1.3104E+02 4.6729E+02 11 | CONSTANT 2.015800e+18 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_RCBR_BH1_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -4.8004E-03 0.0000E+00 7 | -7.7642E-02 0.0000E+00 8 | -2.2712E+01 -2.7107E+01 9 | -2.2712E+01 2.7107E+01 10 | -5.9431E+01 0.0000E+00 11 | CONSTANT 2.866200e+14 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_RCBR_BH2_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -4.8004E-03 0.0000E+00 7 | -7.6051E-02 0.0000E+00 8 | -2.2712E+01 -2.7107E+01 9 | -2.2712E+01 2.7107E+01 10 | -5.9431E+01 0.0000E+00 11 | CONSTANT 2.901200e+14 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_RCBR_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -4.8004E-03 0.0000E+00 7 | -7.6853E-02 0.0000E+00 8 | -2.2712E+01 -2.7107E+01 9 | -2.2712E+01 2.7107E+01 10 | -5.9431E+01 0.0000E+00 11 | CONSTANT 2.780700e+14 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_GOGA_BH1_10: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -5.9431E+01 0.0000E+00 7 | -2.2712E+01 2.7107E+01 8 | -2.2712E+01 -2.7107E+01 9 | -4.8004E-03 0.0000E+00 10 | -7.3199E-02 0.0000E+00 11 | CONSTANT 2.888300e+14 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_GOGA_BH2_10: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -5.9431E+01 0.0000E+00 7 | -2.2712E+01 2.7107E+01 8 | -2.2712E+01 -2.7107E+01 9 | -4.8004E-03 0.0000E+00 10 | -7.3199E-02 0.0000E+00 11 | CONSTANT 2.888300e+14 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_GOGA_BHZ_10: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 5 6 | -5.9431E+01 0.0000E+00 7 | -2.2712E+01 2.7107E+01 8 | -2.2712E+01 -2.7107E+01 9 | -4.8004E-03 0.0000E+00 10 | -7.3199E-02 0.0000E+00 11 | CONSTANT 2.888300e+14 12 | -------------------------------------------------------------------------------- /docs/examples/config.ini: -------------------------------------------------------------------------------- 1 | [PATHS] 2 | code_path = /home/user/neic-finitefault 3 | surf_gf_bank = %(code_path)s/fortran_code/gfs_nm/long/low.in 4 | modelling = %(code_path)s/fortran_code/bin_inversion_gfortran_f95 5 | get_near_gf = %(code_path)s/fortran_code/bin_str_f95 6 | compute_near_gf = %(code_path)s/fortran_code/src_dc_f95 7 | info = %(code_path)s/fortran_code/info 8 | cartopy_files = %(code_path)s/fortran_code/tectonicplates 9 | -------------------------------------------------------------------------------- /src/test/data/config.ini: -------------------------------------------------------------------------------- 1 | [PATHS] 2 | code_path = /home/user/neic-finitefault 3 | surf_gf_bank = %(code_path)s/fortran_code/gfs_nm/long/low.in 4 | modelling = %(code_path)s/fortran_code/bin_inversion_gfortran_f95 5 | get_near_gf = %(code_path)s/fortran_code/bin_str_f95 6 | compute_near_gf = %(code_path)s/fortran_code/src_dc_f95 7 | info = %(code_path)s/fortran_code/info 8 | cartopy_files = %(code_path)s/fortran_code/tectonicplates 9 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_GOGA_BH1_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 6 6 | -3.3000E-02 4.0700E-02 7 | -3.3000E-02 -4.0700E-02 8 | -1.8883E+02 1.9554E+02 9 | -1.8883E+02 -1.9554E+02 10 | -2.5922E+02 7.1965E+02 11 | -2.5922E+02 -7.1965E+02 12 | CONSTANT 3.622000e+20 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_GOGA_BH2_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 6 6 | -3.3000E-02 4.0700E-02 7 | -3.3000E-02 -4.0700E-02 8 | -1.8883E+02 1.9554E+02 9 | -1.8883E+02 -1.9554E+02 10 | -2.5922E+02 7.1965E+02 11 | -2.5922E+02 -7.1965E+02 12 | CONSTANT 3.615400e+20 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_GOGA_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 3 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | POLES 6 6 | -3.7008E-02 3.7008E-02 7 | -3.7008E-02 -3.7008E-02 8 | -1.8883E+02 1.9554E+02 9 | -1.8883E+02 -1.9554E+02 10 | -2.5922E+02 7.1965E+02 11 | -2.5922E+02 -7.1965E+02 12 | CONSTANT 3.600300e+20 13 | -------------------------------------------------------------------------------- /src/ffm/ffm_admin/ffm.py: -------------------------------------------------------------------------------- 1 | import typer 2 | 3 | from .manage import app as manage_app 4 | from .model import app as model_app 5 | from .plot import app as plot_app 6 | from .process import app as process_app 7 | 8 | app = typer.Typer(help="CLI for managing the WISP code") 9 | app.add_typer(manage_app, name="manage") 10 | app.add_typer(plot_app, name="plot") 11 | app.add_typer(process_app, name="process") 12 | app.add_typer(model_app, name="model") 13 | -------------------------------------------------------------------------------- /fortran_code/Makefile: -------------------------------------------------------------------------------- 1 | all: finite_fault get_gf compute_gf clean 2 | 3 | 4 | finite_fault: 5 | $(MAKE) -C bin_inversion_gfortran_f95 6 | 7 | 8 | get_gf: 9 | $(MAKE) -C bin_str_f95 10 | 11 | 12 | compute_gf: 13 | $(MAKE) -C src_dc_f95 14 | 15 | 16 | clean: 17 | \rm -f bin_inversion_gfortran_f95/*.o 18 | \rm -f bin_inversion_gfortran_f95/*.mod 19 | \rm -f bin_str_f95/*.o 20 | \rm -f bin_str_f95/*.mod 21 | \rm -f src_dc_f95/*.o 22 | \rm -f src_dc_f95/*.mod 23 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/Illapel_CMTSOLUTION: -------------------------------------------------------------------------------- 1 | PDE 2015 9 16 22 54 32.90 -31.5700 -71.6700 22.4 0.0 8.3 NEAR COAST OF CENTRAL CH 2 | event name: 201509162254A 3 | time shift: 49.9800 4 | half duration: 33.4000 5 | latitude: -31.1300 6 | longitude: -72.0900 7 | depth: 17.3500 8 | Mrr: 1.950000e+28 9 | Mtt: -4.360000e+26 10 | Mpp: -1.910000e+28 11 | Mrt: 7.420000e+27 12 | Mrp: -2.480000e+28 13 | Mtp: 9.420000e+26 -------------------------------------------------------------------------------- /src/test/data/end_to_end/info/20003k7a_cmt_CMT: -------------------------------------------------------------------------------- 1 | PDE 2015 9 16 22 54 32.90 -31.5700 -71.6700 22.4 0.0 8.3 NEAR COAST OF CENTRAL CH 2 | event name: 201509162254A 3 | time shift: 49.9800 4 | half duration: 33.4000 5 | latitude: -31.1300 6 | longitude: -72.0900 7 | depth: 17.3500 8 | Mrr: 1.950000e+28 9 | Mtt: -4.360000e+26 10 | Mpp: -1.910000e+28 11 | Mrt: 7.420000e+27 12 | Mrp: -2.480000e+28 13 | Mtp: 9.420000e+26 14 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_TSUM_BH1_00: -------------------------------------------------------------------------------- 1 | ZEROS 5 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.3453E-02 0.0000E+00 6 | -1.3453E-02 0.0000E+00 7 | POLES 6 8 | -7.8964E-03 0.0000E+00 9 | -1.2365E-02 -1.2340E-02 10 | -1.2365E-02 1.2340E-02 11 | -1.9213E-02 0.0000E+00 12 | -3.9180E+01 -4.9120E+01 13 | -3.9180E+01 4.9120E+01 14 | CONSTANT 1.296100e+13 15 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_TSUM_BH2_00: -------------------------------------------------------------------------------- 1 | ZEROS 5 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.3445E-02 0.0000E+00 6 | -1.3445E-02 0.0000E+00 7 | POLES 6 8 | -8.1002E-03 0.0000E+00 9 | -1.2333E-02 -1.2340E-02 10 | -1.2333E-02 1.2340E-02 11 | -1.8951E-02 0.0000E+00 12 | -3.9180E+01 -4.9120E+01 13 | -3.9180E+01 4.9120E+01 14 | CONSTANT 1.298000e+13 15 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_TSUM_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 5 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -2.3228E-02 0.0000E+00 6 | -2.3228E-02 0.0000E+00 7 | POLES 6 8 | -1.5776E-02 0.0000E+00 9 | -1.3063E-02 -1.2340E-02 10 | -1.3063E-02 1.2340E-02 11 | -2.9670E-02 0.0000E+00 12 | -3.9180E+01 -4.9120E+01 13 | -3.9180E+01 4.9120E+01 14 | CONSTANT 1.628800e+13 15 | -------------------------------------------------------------------------------- /src/test/plane_management_test.py: -------------------------------------------------------------------------------- 1 | from ffm.plane_management import __unpack_plane_data 2 | 3 | 4 | def test__unpack_plane_data(): 5 | assert __unpack_plane_data( 6 | { 7 | "stk_subfaults": 1, 8 | "dip_subfaults": 2, 9 | "delta_strike": 0.2, 10 | "delta_dip": 0.1, 11 | "hyp_stk": 21, 12 | "hyp_dip": 11, 13 | } 14 | ) == ( 15 | 1, 16 | 2, 17 | 0.2, 18 | 0.1, 19 | 20, 20 | 10, 21 | ) 22 | -------------------------------------------------------------------------------- /fortran_code/info/prem_mantle: -------------------------------------------------------------------------------- 1 | 8.080 4.473 3.3754 196.000 1.2e+03 5.0e+02 2 | 8.594 4.657 3.4465 36.000 3.6e+02 1.4e+02 3 | 8.732 4.707 3.4895 108.00 3.7e+02 1.4e+02 4 | 8.871 4.757 3.5325 36.000 3.7e+02 1.4e+02 5 | 9.219 4.981 3.7448 33.333 3.7e+02 1.4e+02 6 | 9.561 5.176 3.8288 100.00 3.6e+02 1.4e+02 7 | 9.902 5.370 3.9128 33.333 3.6e+02 1.4e+02 8 | 10.073 5.467 3.9548 33.333 3.6e+02 1.4e+02 9 | 10.212 5.543 3.9840 70.000 3.6e+02 1.4e+02 10 | 10.791 5.982 4.3886 25.250 7.6e+02 3.1e+02 11 | 10.869 6.056 4.4043 0.0 7.5e+02 3.1e+02 12 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_II_SUR_BH1_00: -------------------------------------------------------------------------------- 1 | ZEROS 6 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.2500E+01 0.0000E+00 6 | -2.4272E-02 0.0000E+00 7 | -2.4272E-02 0.0000E+00 8 | POLES 6 9 | -1.9580E-03 1.9255E-03 10 | -1.9580E-03 -1.9255E-03 11 | -2.4231E-02 1.8811E-03 12 | -2.4231E-02 -1.8811E-03 13 | -6.0846E+00 7.6798E+00 14 | -6.0846E+00 -7.6798E+00 15 | CONSTANT 3.405600e+10 16 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_II_SUR_BH2_00: -------------------------------------------------------------------------------- 1 | ZEROS 6 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.2500E+01 0.0000E+00 6 | -2.4272E-02 0.0000E+00 7 | -2.4272E-02 0.0000E+00 8 | POLES 6 9 | -1.9620E-03 1.9130E-03 10 | -1.9620E-03 -1.9130E-03 11 | -2.4239E-02 1.0848E-03 12 | -2.4239E-02 -1.0848E-03 13 | -5.8575E+00 7.3352E+00 14 | -5.8575E+00 -7.3352E+00 15 | CONSTANT 3.145600e+10 16 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_II_SUR_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 6 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.2500E+01 0.0000E+00 6 | -2.4272E-02 0.0000E+00 7 | -2.4272E-02 0.0000E+00 8 | POLES 6 9 | -1.9561E-03 1.9237E-03 10 | -1.9561E-03 -1.9237E-03 11 | -2.4241E-02 0.0000E+00 12 | -2.4241E-02 0.0000E+00 13 | -5.3671E+00 6.8815E+00 14 | -5.3671E+00 -6.8815E+00 15 | CONSTANT 3.466800e+10 16 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_KOWA_BH1_00: -------------------------------------------------------------------------------- 1 | ZEROS 5 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.0800E+02 0.0000E+00 6 | -1.6100E+02 0.0000E+00 7 | POLES 7 8 | -1.7802E-02 -1.7789E-02 9 | -1.7802E-02 1.7789E-02 10 | -1.7300E+02 0.0000E+00 11 | -1.9600E+02 -2.3100E+02 12 | -1.9600E+02 2.3100E+02 13 | -7.3200E+02 -1.4150E+03 14 | -7.3200E+02 1.4150E+03 15 | CONSTANT 4.599700e+18 16 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_KOWA_BH2_00: -------------------------------------------------------------------------------- 1 | ZEROS 5 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.0800E+02 0.0000E+00 6 | -1.6100E+02 0.0000E+00 7 | POLES 7 8 | -1.7802E-02 -1.7789E-02 9 | -1.7802E-02 1.7789E-02 10 | -1.7300E+02 0.0000E+00 11 | -1.9600E+02 -2.3100E+02 12 | -1.9600E+02 2.3100E+02 13 | -7.3200E+02 -1.4150E+03 14 | -7.3200E+02 1.4150E+03 15 | CONSTANT 4.599700e+18 16 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_KOWA_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 5 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.0800E+02 0.0000E+00 6 | -1.6100E+02 0.0000E+00 7 | POLES 7 8 | -1.7802E-02 -1.7789E-02 9 | -1.7802E-02 1.7789E-02 10 | -1.7300E+02 0.0000E+00 11 | -1.9600E+02 -2.3100E+02 12 | -1.9600E+02 2.3100E+02 13 | -7.3200E+02 -1.4150E+03 14 | -7.3200E+02 1.4150E+03 15 | CONSTANT 4.599700e+18 16 | -------------------------------------------------------------------------------- /fortran_code/info/as.txt: -------------------------------------------------------------------------------- 1 | 140.68 39.12 0.160989 2 | 140.48 38.96 0.085184 3 | 140.77 39.16 0.0531574 4 | 140.75 39.11 0.0531574 5 | 140.80 39.13 0.049836 6 | 140.65 39.06 0.0531574 7 | 140.74 39.13 0.0566231 8 | 140.74 38.97 0.0566231 9 | 140.75 39.19 0.064 10 | 140.68 39.13 0.049836 11 | 140.73 39.32 0.046656 12 | 140.79 39.17 0.046656 13 | 140.71 38.94 0.0531574 14 | 140.61 39.28 0.0531574 15 | 140.75 39.03 0.0679173 16 | 140.88 39.12 0.0436142 17 | 140.74 39.22 0.046656 18 | 140.78 39.22 0.049836 19 | 140.87 39.17 0.049836 20 | 140.61 39.08 0.0679173 21 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/wavelets_cgnss.txt: -------------------------------------------------------------------------------- 1 | 1 8 256 2 | 3 | 9 4 | ovll LXZ 5 | 3 3 3 3 3 3 3 3 6 | 0 2 2 2 2 2 2 2 7 | pedr LXZ 8 | 3 3 3 3 3 3 3 3 9 | 0 2 2 2 2 2 2 2 10 | pfrj LXE 11 | 3 3 3 3 3 3 3 3 12 | 0 2 2 2 2 2 2 2 13 | ovll LXN 14 | 3 3 3 3 3 3 3 3 15 | 0 2 2 2 2 2 2 2 16 | pedr LXE 17 | 3 3 3 3 3 3 3 3 18 | 0 2 2 2 2 2 2 2 19 | pfrj LXN 20 | 3 3 3 3 3 3 3 3 21 | 0 2 2 2 2 2 2 2 22 | pfrj LXZ 23 | 3 3 3 3 3 3 3 3 24 | 0 2 2 2 2 2 2 2 25 | ovll LXE 26 | 3 3 3 3 3 3 3 3 27 | 0 2 2 2 2 2 2 2 28 | pedr LXN 29 | 3 3 3 3 3 3 3 3 30 | 0 2 2 2 2 2 2 2 31 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/wavelets_strong.txt: -------------------------------------------------------------------------------- 1 | 1 8 256 2 | 3 | 9 4 | GO04 HNN 5 | 3 3 3 3 3 3 3 3 6 | 0 0 2 2 2 2 2 0 7 | VA03 HNZ 8 | 3 3 3 3 3 3 3 3 9 | 0 0 2 2 2 2 2 0 10 | CO03 HNZ 11 | 3 3 3 3 3 3 3 3 12 | 0 0 2 2 2 2 2 0 13 | CO03 HNE 14 | 3 3 3 3 3 3 3 3 15 | 0 0 2 2 2 2 2 0 16 | CO03 HNN 17 | 3 3 3 3 3 3 3 3 18 | 0 0 2 2 2 2 2 0 19 | VA03 HNE 20 | 3 3 3 3 3 3 3 3 21 | 0 0 2 2 2 2 2 0 22 | GO04 HNE 23 | 3 3 3 3 3 3 3 3 24 | 0 0 2 2 2 2 2 0 25 | VA03 HNN 26 | 3 3 3 3 3 3 3 3 27 | 0 0 2 2 2 2 2 0 28 | GO04 HNZ 29 | 3 3 3 3 3 3 3 3 30 | 0 0 2 2 2 2 2 0 31 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/tensor_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "centroid_depth": 17.35, 3 | "centroid_lat": -31.13, 4 | "centroid_lon": -72.09, 5 | "datetime": "2015-09-16T22:54:32", 6 | "depth": 22.4, 7 | "half_duration": 33.4, 8 | "lat": -31.57, 9 | "lon": -71.67, 10 | "moment_mag": 3.2291872286240194e+28, 11 | "mpp": -1.91e+28, 12 | "mrp": -2.48e+28, 13 | "mrr": 1.95e+28, 14 | "mrt": 7.42e+27, 15 | "mtp": 9.42e+26, 16 | "mtt": -4.36e+26, 17 | "time_shift": 49.98, 18 | "timedelta": 253916624.126407 19 | } -------------------------------------------------------------------------------- /fortran_code/info/bathy.cpt: -------------------------------------------------------------------------------- 1 | -7500 0 0 150 -6750 0 0 255 2 | -6750 0 0 255 -6000 25 55 255 3 | -6000 25 55 255 -4200 75 130 255 4 | -4200 75 130 255 -3800 125 230 255 5 | -3800 125 230 255 -3400 190 255 255 6 | -3400 190 255 255 -2800 250 240 170 7 | -2800 250 240 170 -2200 250 220 170 8 | -2200 250 220 170 -1500 225 225 225 9 | -1500 225 225 225 -750 255 255 255 10 | -750 255 255 255 0 255 255 255 11 | 0 255 255 255 750 200 210 100 12 | 750 200 210 100 1500 200 200 125 13 | 1500 200 200 125 2250 220 200 190 14 | B 0 0 255 15 | F 233 233 233 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # docker files 2 | .trivy 3 | 4 | # external inputs 5 | fd_bank 6 | LITHO1.0.nc 7 | tectonicplates 8 | 9 | # python files 10 | __pycache__ 11 | .coverage 12 | .mypy_cache 13 | .pytest_cache 14 | .venv 15 | coverage.xml 16 | dist 17 | htmlcov 18 | 19 | # fortran files 20 | run_modelling 21 | run_forward 22 | green_tele 23 | get_strong_motion 24 | gf_static_f95 25 | green_bank_openmp_f95 26 | config.ini 27 | 28 | # tutorial 29 | examples/* 30 | examples/.ipynb_checkpoints 31 | !examples/WISP_Tutorial.ipynb 32 | !examples/Tutorial_Figures 33 | !examples/Multisegment_Example 34 | 35 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/channels_cgnss.txt: -------------------------------------------------------------------------------- 1 | 20159162254320 2 | -31.57 -71.67 22.4 3 | 10 0.4 3.2291872286240194e+28 4 | 0 5 | 9 9 6 | No STA Lat Lon M Comp Weight 7 | 1 ovll -30.604 -71.204 31 LXZ 0.6 0 8 | 2 pedr -30.839 -70.689 31 LXZ 0.6 0 9 | 3 pfrj -30.675 -71.635 31 LXE 1.2 0 10 | 4 ovll -30.604 -71.204 31 LXN 1.2 0 11 | 5 pedr -30.839 -70.689 31 LXE 1.2 0 12 | 6 pfrj -30.675 -71.635 31 LXN 1.2 0 13 | 7 pfrj -30.675 -71.635 31 LXZ 0.6 0 14 | 8 ovll -30.604 -71.204 31 LXE 1.2 0 15 | 9 pedr -30.839 -70.689 31 LXN 1.2 0 16 | -------------------------------------------------------------------------------- /.trivyignore: -------------------------------------------------------------------------------- 1 | # https://avd.aquasec.com/nvd/cve-2023-3090/ 2 | 3 | # linux-libc-dev is used for compilation in multi-stage container builds, 4 | 5 | # and should not appear in deployable containers 6 | 7 | CVE-2023-3389 8 | CVE-2023-3090 9 | CVE-2023-3390 10 | CVE-2023-3611 11 | CVE-2023-3776 12 | CVE-2023-4563 13 | 14 | # https://avd.aquasec.com/nvd/2022/cve-2022-42919/ 15 | 16 | # running as non-root user, and not using non-default configuration 17 | 18 | CVE-2022-42919 19 | 20 | 21 | # https://avd.aquasec.com/nvd/2022/cve-2022-43945/ 22 | 23 | # not using nfsd 24 | 25 | CVE-2022-43945 26 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/channels_strong.txt: -------------------------------------------------------------------------------- 1 | 20159162254320 2 | -31.57 -71.67 22.4 3 | 10 0.4 3.2291872286240194e+28 4 | 0 5 | 9 9 6 | No STA Lat Lon M Comp Weight 7 | 1 GO04 -30.173 -70.799 31 HNN 1.0 0 8 | 2 VA03 -32.764 -70.551 31 HNZ 1.0 0 9 | 3 CO03 -30.839 -70.689 31 HNZ 1.0 0 10 | 4 CO03 -30.839 -70.689 31 HNE 1.0 0 11 | 5 CO03 -30.839 -70.689 31 HNN 1.0 0 12 | 6 VA03 -32.764 -70.551 31 HNE 1.0 0 13 | 7 GO04 -30.173 -70.799 31 HNE 1.0 0 14 | 8 VA03 -32.764 -70.551 31 HNN 1.0 0 15 | 9 GO04 -30.173 -70.799 31 HNZ 1.0 0 16 | -------------------------------------------------------------------------------- /fortran_code/info/model_prem: -------------------------------------------------------------------------------- 1 | 13 2 | 5.800 3.200 2.6000 12.000 1.5e+03 6.0e+02 3 | 6.800 3.900 2.9000 9.400 1.4e+03 6.0e+02 4 | 8.080 4.473 3.3754 196.000 1.2e+03 5.0e+02 5 | 8.594 4.657 3.4465 36.000 3.6e+02 1.4e+02 6 | 8.732 4.707 3.4895 108.00 3.7e+02 1.4e+02 7 | 8.871 4.757 3.5325 36.000 3.7e+02 1.4e+02 8 | 9.219 4.981 3.7448 33.333 3.7e+02 1.4e+02 9 | 9.561 5.176 3.8288 100.00 3.6e+02 1.4e+02 10 | 9.902 5.370 3.9128 33.333 3.6e+02 1.4e+02 11 | 10.073 5.467 3.9548 33.333 3.6e+02 1.4e+02 12 | 10.212 5.543 3.9840 70.000 3.6e+02 1.4e+02 13 | 10.791 5.982 4.3886 25.250 7.6e+02 3.1e+02 14 | 10.869 6.056 4.4043 0.0 7.5e+02 3.1e+02 15 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/model_space.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "max_center_slip": 2900, 4 | "max_left_slip": 2900, 5 | "max_lower_slip": 2900, 6 | "max_right_slip": 2900, 7 | "max_slip_delta": 2900, 8 | "max_upper_slip": 2900, 9 | "min_slip": 0, 10 | "rake_max": 129.27817171619563, 11 | "rake_min": 89.27817171619564, 12 | "rake_step": 21, 13 | "regularization": { 14 | "neighbour_down": null, 15 | "neighbour_left": null, 16 | "neighbour_right": null, 17 | "neighbour_up": null 18 | }, 19 | "slip_step": 51 20 | } 21 | ] -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/segments_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "rise_time": { 3 | "delta_rise": 1.5, 4 | "min_rise": 1.5, 5 | "windows": 10 6 | }, 7 | "segments": [ 8 | { 9 | "delay_segment": 0, 10 | "delta_dip": 14.924353208236587, 11 | "delta_strike": 17.92760869565217, 12 | "dip": 19.280827965117993, 13 | "dip_subfaults": 9, 14 | "hyp_dip": 5, 15 | "hyp_stk": 9, 16 | "neighbours": [], 17 | "rake": 109.27817171619564, 18 | "rupture_vel": 2.5, 19 | "stk_subfaults": 23, 20 | "strike": 6.613912311529926, 21 | "max_vel": 3.125, 22 | "min_vel": 1 23 | } 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /fortran_code/info/model_prem_water: -------------------------------------------------------------------------------- 1 | 14 2 | 1.500 0.01 1.0000 3.000 1.5e+3 1.5e+3 3 | 5.800 3.200 2.6000 12.000 1.5e+03 6.0e+02 4 | 6.800 3.900 2.9000 9.400 1.4e+03 6.0e+02 5 | 8.080 4.473 3.3754 196.000 1.2e+03 5.0e+02 6 | 8.594 4.657 3.4465 36.000 3.6e+02 1.4e+02 7 | 8.732 4.707 3.4895 108.00 3.7e+02 1.4e+02 8 | 8.871 4.757 3.5325 36.000 3.7e+02 1.4e+02 9 | 9.219 4.981 3.7448 33.333 3.7e+02 1.4e+02 10 | 9.561 5.176 3.8288 100.00 3.6e+02 1.4e+02 11 | 9.902 5.370 3.9128 33.333 3.6e+02 1.4e+02 12 | 10.073 5.467 3.9548 33.333 3.6e+02 1.4e+02 13 | 10.212 5.543 3.9840 70.000 3.6e+02 1.4e+02 14 | 10.791 5.982 4.3886 25.250 7.6e+02 3.1e+02 15 | 10.869 6.056 4.4043 0.0 7.5e+02 3.1e+02 16 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/Wavelets_surf_tele.txt: -------------------------------------------------------------------------------- 1 | j :1 2 | Frequency range for these wavelet coefficients is: 0.0002 0.0007 Hz 3 | j :2 4 | Frequency range for these wavelet coefficients is: 0.0003 0.0013 Hz 5 | j :3 6 | Frequency range for these wavelet coefficients is: 0.0007 0.0026 Hz 7 | j :4 8 | Frequency range for these wavelet coefficients is: 0.0013 0.0052 Hz 9 | j :5 10 | Frequency range for these wavelet coefficients is: 0.0026 0.0104 Hz 11 | j :6 12 | Frequency range for these wavelet coefficients is: 0.0052 0.0208 Hz 13 | j :7 14 | Frequency range for these wavelet coefficients is: 0.0104 0.0417 Hz 15 | j :8 16 | Frequency range for these wavelet coefficients is: 0.0208 0.0833 Hz 17 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/Wavelets_tele_body.txt: -------------------------------------------------------------------------------- 1 | j :1 2 | Frequency range for these wavelet coefficients is: 0.0033 0.0130 Hz 3 | j :2 4 | Frequency range for these wavelet coefficients is: 0.0065 0.0260 Hz 5 | j :3 6 | Frequency range for these wavelet coefficients is: 0.0130 0.0521 Hz 7 | j :4 8 | Frequency range for these wavelet coefficients is: 0.0260 0.1042 Hz 9 | j :5 10 | Frequency range for these wavelet coefficients is: 0.0521 0.2083 Hz 11 | j :6 12 | Frequency range for these wavelet coefficients is: 0.1042 0.4167 Hz 13 | j :7 14 | Frequency range for these wavelet coefficients is: 0.2083 0.8333 Hz 15 | j :8 16 | Frequency range for these wavelet coefficients is: 0.4167 1.6667 Hz 17 | -------------------------------------------------------------------------------- /fortran_code/info/model_prem_s: -------------------------------------------------------------------------------- 1 | 13 2 | 5.800 3.200 2.6000 12.000 1.5e+03 6.0e+02 0 3 | 6.800 3.900 2.9000 9.400 1.4e+03 6.0e+02 12 4 | 8.080 4.473 3.3754 196.000 1.2e+03 5.0e+02 21.4 5 | 8.594 4.657 3.4465 36.000 3.6e+02 1.4e+02 217 6 | 8.732 4.707 3.4895 108.00 3.7e+02 1.4e+02 289 7 | 8.871 4.757 3.5325 36.000 3.7e+02 1.4e+02 361 8 | 9.219 4.981 3.7448 33.333 3.7e+02 1.4e+02 397 9 | 9.561 5.176 3.8288 100.00 3.6e+02 1.4e+02 463.666 10 | 9.902 5.370 3.9128 33.333 3.6e+02 1.4e+02 530.332 11 | 10.073 5.467 3.9548 33.333 3.6e+02 1.4e+02 563.665 12 | 10.212 5.543 3.9840 70.000 3.6e+02 1.4e+02 620.331 13 | 10.791 5.982 4.3886 25.250 7.6e+02 3.1e+02 666.997 14 | 10.869 6.056 4.4043 0.0 7.5e+02 3.1e+02 692.247 15 | -------------------------------------------------------------------------------- /install.d/environment.yml: -------------------------------------------------------------------------------- 1 | name: ff-env 2 | channels: 3 | - conda-forge 4 | dependencies: 5 | - python=3.10.14 6 | - pip=25.0 7 | - black=24.4.2 8 | - cartopy=0.23.0 9 | - click=8.1.8 10 | - cutde=23.6.25 11 | - gdal=3.10.0 12 | - geos=3.13.0 13 | - idna=3.7 14 | - isort=5.13.2 15 | - matplotlib=3.9.1 16 | - mypy=1.10.0 17 | - netcdf4=1.7.1 18 | - notebook=7.3.1 19 | - numpy=1.26.4 20 | - obspy=1.4.2 21 | - pygmt=0.12.0 22 | - pyproj=3.6.1 23 | - pytest=7.4.4 24 | - pytest-cov=4.1.0 25 | - safety=2.3.4 26 | - scipy=1.14.0 27 | - shapely=2.0.6 28 | - sqlalchemy=1.4.54 29 | - typer=0.9.4 30 | - pip: 31 | - pyrocko==2023.10.11 32 | - poethepoet==0.20.0 33 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/sampling_filter.json: -------------------------------------------------------------------------------- 1 | { 2 | "cgnss_filter": { 3 | "high_freq": 0.3, 4 | "low_freq": 0.01 5 | }, 6 | "sampling": { 7 | "dt_cgnss": 0.4, 8 | "dt_strong": 0.4, 9 | "dt_tele": 0.2 10 | }, 11 | "strong_filter": { 12 | "high_freq": 0.125, 13 | "low_freq": 0.01 14 | }, 15 | "surf_filter": { 16 | "freq1": 0.003, 17 | "freq2": 0.004, 18 | "freq3": 0.006, 19 | "freq4": 0.007 20 | }, 21 | "tele_filter": { 22 | "freq0": 0.002, 23 | "freq3": 1.2, 24 | "high_freq": 1.0, 25 | "low_freq": 0.004 26 | }, 27 | "wavelet_scales": [ 28 | 1, 29 | 8 30 | ] 31 | } -------------------------------------------------------------------------------- /fortran_code/info/relief_n.cpt: -------------------------------------------------------------------------------- 1 | # cpt file created by: makecpt -Crelief -Z 2 | #COLOR_MODEL = RGB 3 | # 4 | -8000 0 0 0 -7000 0 5 25 5 | -7000 0 5 25 -6000 0 10 50 6 | -6000 0 10 50 -5000 0 80 125 7 | -5000 0 80 125 -4000 0 150 200 8 | -4000 0 150 200 -3000 86 197 184 9 | -3000 86 197 184 -2000 172 245 168 10 | -2000 172 245 168 -1000 211 250 211 11 | -1000 211 250 211 0 250 255 255 12 | 0 70 120 50 500 120 100 50 13 | 500 120 100 50 1000 146 126 60 14 | 1000 146 126 60 2000 198 178 80 15 | 2000 198 178 80 3000 250 230 100 16 | 3000 250 230 100 4000 250 234 126 17 | 4000 250 234 126 5000 252 238 152 18 | 5000 252 238 152 6000 252 243 177 19 | 6000 252 243 177 7000 253 249 216 20 | 7000 253 249 216 8000 255 255 255 21 | B 0 0 0 22 | F 255 255 255 23 | N 255 255 255 24 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/constants.f95: -------------------------------------------------------------------------------- 1 | module constants 2 | 3 | implicit none 4 | integer, parameter :: max_dip_psources = 25, max_stk_psources = 25 5 | integer, parameter :: max_stk_subfaults = 50, max_dip_subfaults = 20 6 | integer, parameter :: max_seg = 10 7 | integer, parameter :: npuse = 513, block_stg = npuse * 130 8 | real*8, parameter :: zero=0.d0, one=1.d0, two=2.d0 9 | real*8, parameter :: pi = 4.d0*atan(one), twopi = two*pi, epsilon=0.0001d0 10 | real*8, parameter :: dpi = pi/180.d0 11 | ! maximum layer, distances, and time samples 12 | ! maximum size of green's function (nnx*nny) 13 | integer, parameter :: nlay = 50, ndis = 2000, nt = 2049 14 | integer, parameter :: nny = 310 15 | 16 | end module constants 17 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_G_MPG_BHE_00: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7000E-02 -3.7000E-02 11 | -3.7000E-02 3.7000E-02 12 | -1.5640E+01 0.0000E+00 13 | -9.7340E+01 -4.0070E+02 14 | -9.7340E+01 4.0070E+02 15 | -3.7480E+02 0.0000E+00 16 | -5.2030E+02 0.0000E+00 17 | -1.0530E+04 -1.0050E+04 18 | -1.0530E+04 1.0050E+04 19 | -1.3300E+04 0.0000E+00 20 | -2.5510E+02 0.0000E+00 21 | CONSTANT 8.797300e+26 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_G_MPG_BHN_00: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7000E-02 -3.7000E-02 11 | -3.7000E-02 3.7000E-02 12 | -1.5640E+01 0.0000E+00 13 | -9.7340E+01 -4.0070E+02 14 | -9.7340E+01 4.0070E+02 15 | -3.7480E+02 0.0000E+00 16 | -5.2030E+02 0.0000E+00 17 | -1.0530E+04 -1.0050E+04 18 | -1.0530E+04 1.0050E+04 19 | -1.3300E+04 0.0000E+00 20 | -2.5510E+02 0.0000E+00 21 | CONSTANT 8.797300e+26 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_G_MPG_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7000E-02 -3.7000E-02 11 | -3.7000E-02 3.7000E-02 12 | -1.5640E+01 0.0000E+00 13 | -9.7340E+01 -4.0070E+02 14 | -9.7340E+01 4.0070E+02 15 | -3.7480E+02 0.0000E+00 16 | -5.2030E+02 0.0000E+00 17 | -1.0530E+04 -1.0050E+04 18 | -1.0530E+04 1.0050E+04 19 | -1.3300E+04 0.0000E+00 20 | -2.5510E+02 0.0000E+00 21 | CONSTANT 8.797300e+26 22 | -------------------------------------------------------------------------------- /docs/data-dependencies.md: -------------------------------------------------------------------------------- 1 | # Data Dependencies 2 | 3 | This document outlines the data required to run the code. This may be helpful for those that do not want to use the install script which automatically retrieves supplemental data. 4 | 5 | 1. [fd_bank](https://zenodo.org/record/7236739#.Y9q4BOzMKDV): A global Green's Function bank for surface waves 6 | 2. [LITHO1.0.nc](https://ds.iris.edu/ds/products/emc-litho10/): A model of the uppermost mantle and crust of the Earth 7 | 3. [tectonicplates](https://github.com/fraxen/tectonicplates/): A repoistory with models of plate boundaries by Peter Bird (Geochemistry Geophysics Geosystems, 4(3), 1027, [doi:10.1029/2001GC000252](http://scholar.google.se/scholar?cluster=1268723667321132798), 2003), converted into shapefiles by Hugo Ahlenius 8 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_RCBR_BH1_10: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7244E-02 -3.8200E-02 11 | -3.7244E-02 3.8200E-02 12 | -1.5640E+01 0.0000E+00 13 | -2.5510E+02 0.0000E+00 14 | -3.7480E+02 0.0000E+00 15 | -9.7340E+01 -4.0070E+02 16 | -9.7340E+01 4.0070E+02 17 | -5.2030E+02 0.0000E+00 18 | -1.3300E+04 0.0000E+00 19 | -1.0530E+04 -1.0050E+04 20 | -1.0530E+04 1.0050E+04 21 | CONSTANT 1.150400e+28 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_RCBR_BH2_10: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7244E-02 -3.8200E-02 11 | -3.7244E-02 3.8200E-02 12 | -1.5640E+01 0.0000E+00 13 | -2.5510E+02 0.0000E+00 14 | -3.7480E+02 0.0000E+00 15 | -9.7340E+01 -4.0070E+02 16 | -9.7340E+01 4.0070E+02 17 | -5.2030E+02 0.0000E+00 18 | -1.3300E+04 0.0000E+00 19 | -1.0530E+04 -1.0050E+04 20 | -1.0530E+04 1.0050E+04 21 | CONSTANT 1.150400e+28 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_RCBR_BHZ_10: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7244E-02 -3.8200E-02 11 | -3.7244E-02 3.8200E-02 12 | -1.5640E+01 0.0000E+00 13 | -2.5510E+02 0.0000E+00 14 | -3.7480E+02 0.0000E+00 15 | -9.7340E+01 -4.0070E+02 16 | -9.7340E+01 4.0070E+02 17 | -5.2030E+02 0.0000E+00 18 | -1.3300E+04 0.0000E+00 19 | -1.0530E+04 -1.0050E+04 20 | -1.0530E+04 1.0050E+04 21 | CONSTANT 1.150400e+28 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_TSUM_BH1_10: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7225E-02 -3.6200E-02 11 | -3.7225E-02 3.6200E-02 12 | -1.5640E+01 0.0000E+00 13 | -2.5510E+02 0.0000E+00 14 | -3.7480E+02 0.0000E+00 15 | -9.7340E+01 -4.0070E+02 16 | -9.7340E+01 4.0070E+02 17 | -5.2030E+02 0.0000E+00 18 | -1.3300E+04 0.0000E+00 19 | -1.0530E+04 -1.0050E+04 20 | -1.0530E+04 1.0050E+04 21 | CONSTANT 1.159000e+28 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_TSUM_BH2_10: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7225E-02 -3.6200E-02 11 | -3.7225E-02 3.6200E-02 12 | -1.5640E+01 0.0000E+00 13 | -2.5510E+02 0.0000E+00 14 | -3.7480E+02 0.0000E+00 15 | -9.7340E+01 -4.0070E+02 16 | -9.7340E+01 4.0070E+02 17 | -5.2030E+02 0.0000E+00 18 | -1.3300E+04 0.0000E+00 19 | -1.0530E+04 -1.0050E+04 20 | -1.0530E+04 1.0050E+04 21 | CONSTANT 1.159000e+28 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_IU_TSUM_BHZ_10: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.5150E+01 0.0000E+00 6 | -1.7660E+02 0.0000E+00 7 | -4.6310E+02 -4.3050E+02 8 | -4.6310E+02 4.3050E+02 9 | POLES 11 10 | -3.7225E-02 -3.6200E-02 11 | -3.7225E-02 3.6200E-02 12 | -1.5640E+01 0.0000E+00 13 | -2.5510E+02 0.0000E+00 14 | -3.7480E+02 0.0000E+00 15 | -9.7340E+01 -4.0070E+02 16 | -9.7340E+01 4.0070E+02 17 | -5.2030E+02 0.0000E+00 18 | -1.3300E+04 0.0000E+00 19 | -1.0530E+04 -1.0050E+04 20 | -1.0530E+04 1.0050E+04 21 | CONSTANT 1.159000e+28 22 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/src/modelling_inputs.f95: -------------------------------------------------------------------------------- 1 | module modelling_inputs 2 | 3 | 4 | implicit none 5 | integer :: idum, io_data, n_iter 6 | real :: t0, cooling_rate, t_stop, emin, smooth_moment, smooth_slip, smooth_time 7 | real :: t_mid, t_latest, cm_point 8 | integer :: io_re, io_func, io 9 | 10 | 11 | contains 12 | 13 | 14 | subroutine get_annealing_param() 15 | implicit none 16 | open(10,file='HEAT.IN') 17 | read(10,*) n_iter, idum, io_data, cm_point 18 | read(10,*) t0, cooling_rate, t_stop, emin, smooth_moment, smooth_slip, smooth_time 19 | read(10,*) io_re, t_mid, io_func, t_latest 20 | read(10,*) io 21 | close(10) 22 | end subroutine get_annealing_param 23 | 24 | 25 | end module modelling_inputs 26 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_BRAL_BH1_00: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | -0.0000E+00 -0.0000E+00 4 | -0.0000E+00 -0.0000E+00 5 | -4.6310E+02 4.6310E+02 6 | -4.6310E+02 -4.6310E+02 7 | -8.5950E+00 -0.0000E+00 8 | -1.5901E+02 -0.0000E+00 9 | POLES 11 10 | -3.7186E-02 3.6968E-02 11 | -3.7186E-02 -3.6968E-02 12 | -3.7480E+02 -0.0000E+00 13 | -5.2030E+02 -0.0000E+00 14 | -1.0530E+03 -1.0050E+03 15 | -1.0530E+03 1.0050E+03 16 | -1.3300E+04 -0.0000E+00 17 | -8.9646E+00 -0.0000E+00 18 | -9.2029E+01 3.9611E+02 19 | -9.2029E+01 -3.9611E+02 20 | -2.5092E+02 -0.0000E+00 21 | CONSTANT 2.162900e+24 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_BRAL_BH2_00: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | -0.0000E+00 -0.0000E+00 4 | -0.0000E+00 -0.0000E+00 5 | -4.6310E+02 4.6310E+02 6 | -4.6310E+02 -4.6310E+02 7 | -8.5950E+00 -0.0000E+00 8 | -1.5901E+02 -0.0000E+00 9 | POLES 11 10 | -3.7186E-02 3.6968E-02 11 | -3.7186E-02 -3.6968E-02 12 | -3.7480E+02 -0.0000E+00 13 | -5.2030E+02 -0.0000E+00 14 | -1.0530E+03 -1.0050E+03 15 | -1.0530E+03 1.0050E+03 16 | -1.3300E+04 -0.0000E+00 17 | -8.9646E+00 -0.0000E+00 18 | -9.2029E+01 3.9611E+02 19 | -9.2029E+01 -3.9611E+02 20 | -2.5092E+02 -0.0000E+00 21 | CONSTANT 2.162900e+24 22 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_US_BRAL_BHZ_00: -------------------------------------------------------------------------------- 1 | ZEROS 7 2 | 0.0000E+00 0.0000E+00 3 | -0.0000E+00 -0.0000E+00 4 | -0.0000E+00 -0.0000E+00 5 | -4.6310E+02 4.6310E+02 6 | -4.6310E+02 -4.6310E+02 7 | -8.5950E+00 -0.0000E+00 8 | -1.5901E+02 -0.0000E+00 9 | POLES 11 10 | -3.7186E-02 3.6968E-02 11 | -3.7186E-02 -3.6968E-02 12 | -3.7480E+02 -0.0000E+00 13 | -5.2030E+02 -0.0000E+00 14 | -1.0530E+03 -1.0050E+03 15 | -1.0530E+03 1.0050E+03 16 | -1.3300E+04 -0.0000E+00 17 | -8.9646E+00 -0.0000E+00 18 | -9.2029E+01 3.9611E+02 19 | -9.2029E+01 -3.9611E+02 20 | -2.5092E+02 -0.0000E+00 21 | CONSTANT 2.162900e+24 22 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/layer.f95: -------------------------------------------------------------------------------- 1 | !*************************************************************** 2 | ! F-K: @(#) layer.h 1.0 4/29/2000 3 | ! 4 | ! Copyright (c) 2000 by L. Zhu 5 | ! See README file for copying and redistribution conditions. 6 | ! 7 | ! include header for transfering parameters of any given layer 8 | ! from one subroutines to another 9 | !*************************************************************** 10 | module layer 11 | 12 | 13 | use omp_lib 14 | use constants, only : nlay 15 | implicit none 16 | real*8 kd,exa,exb,mu2,y,y1 17 | complex*16 ra,rb,Ca,Cb,Ya,Xa,Yb,Xb,r,r1,ka(nlay), kb(nlay) 18 | !$omp threadprivate(kd, mu2, exa, exb, ra, rb, Ca, Cb, Ya, Xa, Yb, Xb) 19 | !$omp threadprivate(r, r1, y, y1, ka, kb) 20 | 21 | 22 | end module layer 23 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/static_data.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 3 | 0 VALN -33.028 -71.635 -1.26 -0.42 -0.966 0.5 1.0 1.0 4 | 1 ZAPA -32.553 -71.466 -1.185 1.1400000000000001 -3.9800000000000004 0.5 1.0 1.0 5 | 2 LSCH -29.908 -71.246 -2.82 -9.855 -16.97 0.5 1.0 1.0 6 | 3 TOLO -30.170 -70.806 -0.9119999999999999 -12.04 -25.28 0.5 1.0 1.0 7 | 4 PEDR -30.839 -70.689 -3.64 -10.02 -53.31 0.5 1.0 1.0 8 | 5 LVIL -31.909 -71.514 -6.98 6.614000000000001 -35.3 0.5 1.0 1.0 9 | 6 CERN -32.558 -70.929 -1.142 3.8739999999999997 -6.357 0.5 1.0 1.0 10 | 7 CMBA -31.188 -70.999 -12.41 0.629 -82.82000000000001 0.5 1.0 1.0 11 | 8 SLMC -31.777 -70.963 -5.12 12.679000000000002 -39.438 0.5 1.0 1.0 12 | 9 PFRJ -30.675 -71.635 -24.69 -24.07 -143.53 0.5 1.0 1.0 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/static_data.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 3 | 0 VALN -33.028 -71.635 -1.26 -0.42 -0.966 0.5 1.0 1.0 4 | 1 ZAPA -32.553 -71.466 -1.185 1.1400000000000001 -3.9800000000000004 0.5 1.0 1.0 5 | 2 LSCH -29.908 -71.246 -2.82 -9.855 -16.97 0.5 1.0 1.0 6 | 3 TOLO -30.170 -70.806 -0.9119999999999999 -12.04 -25.28 0.5 1.0 1.0 7 | 4 PEDR -30.839 -70.689 -3.64 -10.02 -53.31 0.5 1.0 1.0 8 | 5 LVIL -31.909 -71.514 -6.98 6.614000000000001 -35.3 0.5 1.0 1.0 9 | 6 CERN -32.558 -70.929 -1.142 3.8739999999999997 -6.357 0.5 1.0 1.0 10 | 7 CMBA -31.188 -70.999 -12.41 0.629 -82.82000000000001 0.5 1.0 1.0 11 | 8 SLMC -31.777 -70.963 -5.12 12.679000000000002 -39.438 0.5 1.0 1.0 12 | 9 PFRJ -30.675 -71.635 -24.69 -24.07 -143.53 0.5 1.0 1.0 13 | -------------------------------------------------------------------------------- /DISCLAIMER.md: -------------------------------------------------------------------------------- 1 | Disclaimer 2 | ========== 3 | 4 | This software is preliminary or provisional and is subject to revision. It is 5 | being provided to meet the need for timely best science. The software has not 6 | received final approval by the U.S. Geological Survey (USGS). No warranty, 7 | expressed or implied, is made by the USGS or the U.S. Government as to the 8 | functionality of the software and related material nor shall the fact of release 9 | constitute any such warranty. The software is provided on the condition that 10 | neither the USGS nor the U.S. Government shall be held liable for any damages 11 | resulting from the authorized or unauthorized use of the software. 12 | 13 | Any use of trade, firm, or product names is for descriptive purposes only and does not imply endorsement by the U.S. Government. -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/js/ie10-viewport-bug-workaround.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014 Twitter, Inc. 4 | * Licensed under the Creative Commons Attribution 3.0 Unported License. For 5 | * details, see http://creativecommons.org/licenses/by/3.0/. 6 | */ 7 | 8 | // See the Getting Started docs for more information: 9 | // http://getbootstrap.com/getting-started/#support-ie10-width 10 | 11 | (function () { 12 | 'use strict'; 13 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 14 | var msViewportStyle = document.createElement('style') 15 | msViewportStyle.appendChild( 16 | document.createTextNode( 17 | '@-ms-viewport{width:auto!important}' 18 | ) 19 | ) 20 | document.querySelector('head').appendChild(msViewportStyle) 21 | } 22 | })(); 23 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/tipuesearch/tipuesearch_set.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | Tipue Search 4.0 4 | Copyright (c) 2014 Tipue 5 | Tipue Search is released under the MIT License 6 | http://www.tipue.com/search 7 | */ 8 | 9 | 10 | var tipuesearch_stop_words = ["and", "be", "by", "do", "for", "he", "how", "if", "is", "it", "my", "not", "of", "or", "the", "to", "up", "what", "when", "use", "who", "she", "my", "his", "her"]; 11 | 12 | var tipuesearch_replace = {"words": [ 13 | {"word": "tipua", "replace_with": "tipue"}, 14 | {"word": "javscript", "replace_with": "javascript"} 15 | ]}; 16 | 17 | var tipuesearch_stem = {"words": [ 18 | {"word": "e-mail", "stem": "email"}, 19 | {"word": "javascript", "stem": "script"}, 20 | {"word": "procedure", "stem": "subroutine"}, 21 | {"word": "procedure", "stem": "function"} 22 | ]}; 23 | 24 | -------------------------------------------------------------------------------- /src/test/modulo_logs_test.py: -------------------------------------------------------------------------------- 1 | import logging 2 | import pathlib 3 | import shutil 4 | import tempfile 5 | 6 | from ffm.modulo_logs import add_console_handler, close_log, create_log 7 | 8 | 9 | def test_create_log(): 10 | tempdir = tempfile.mkdtemp() 11 | try: 12 | logger = create_log("test_log_name", pathlib.Path(tempdir) / "testlog.log") 13 | assert logger.level == 20 14 | assert logger.name == "test_log_name" 15 | finally: 16 | shutil.rmtree(tempdir) 17 | 18 | 19 | def test_add_console_handler(): 20 | logger = logging.Logger("test_logger") 21 | updated_logger = add_console_handler(logger, logging.DEBUG) 22 | assert logger.handlers[0].level == 10 23 | 24 | 25 | def test_close_log(): 26 | logger = logging.Logger("test_logger") 27 | logger.addHandler(logging.StreamHandler()) 28 | close_log(logger) 29 | -------------------------------------------------------------------------------- /binaries_test/wavelets_strong.txt: -------------------------------------------------------------------------------- 1 | 1 8 256 2 | 3 | 15 4 | VA01 HNN 5 | 3 3 3 3 3 3 3 3 6 | 0 0 2 2 2 2 2 0 7 | MT05 HNN 8 | 3 3 3 3 3 3 3 3 9 | 0 0 2 2 2 2 2 0 10 | GO04 HNZ 11 | 3 3 3 3 3 3 3 3 12 | 0 0 2 2 2 2 2 0 13 | VA03 HNZ 14 | 3 3 3 3 3 3 3 3 15 | 0 0 2 2 2 2 2 0 16 | VA03 HNE 17 | 3 3 3 3 3 3 3 3 18 | 0 0 2 2 2 2 2 0 19 | GO04 HNN 20 | 3 3 3 3 3 3 3 3 21 | 0 0 2 2 2 2 2 0 22 | CO03 HNN 23 | 3 3 3 3 3 3 3 3 24 | 0 0 2 2 2 2 2 0 25 | CO03 HNE 26 | 3 3 3 3 3 3 3 3 27 | 0 0 2 2 2 2 2 0 28 | MT05 HNE 29 | 3 3 3 3 3 3 3 3 30 | 0 0 2 2 2 2 2 0 31 | GO04 HNE 32 | 3 3 3 3 3 3 3 3 33 | 0 0 2 2 2 2 2 0 34 | CO03 HNZ 35 | 3 3 3 3 3 3 3 3 36 | 0 0 2 2 2 2 2 0 37 | VA03 HNN 38 | 3 3 3 3 3 3 3 3 39 | 0 0 2 2 2 2 2 0 40 | MT05 HNZ 41 | 3 3 3 3 3 3 3 3 42 | 0 0 2 2 2 2 2 0 43 | VA01 HNE 44 | 3 3 3 3 3 3 3 3 45 | 0 0 2 2 2 2 2 0 46 | VA01 HNZ 47 | 3 3 3 3 3 3 3 3 48 | 0 0 2 2 2 2 2 0 49 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/bessel.f: -------------------------------------------------------------------------------- 1 | # 1 "bessel.FF" 2 | # 1 "" 3 | # 1 "" 4 | # 1 "/usr/include/stdc-predef.h" 1 3 4 5 | 6 | # 17 "/usr/include/stdc-predef.h" 3 4 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | # 1 "" 2 31 | # 1 "bessel.FF" 32 | ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 33 | c bessel.FF: Compute Bessel function Jn(z) for n=0,1,2 34 | c Reivsion History 35 | c 03/05/1996 Lupei Zhu Initial coding. 36 | ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 37 | subroutine besselFn(z, aj0, aj1, aj2) 38 | IMPLICIT NONE 39 | real z, aj0, aj1, aj2 40 | # 17 "bessel.FF" 41 | aj0 = BesJ0(z) 42 | aj1 = BesJ1(z) 43 | aj2 = BesJN(2,z) 44 | # 30 "bessel.FF" 45 | return 46 | end 47 | -------------------------------------------------------------------------------- /binaries_test/static_data.txt: -------------------------------------------------------------------------------- 1 | 12 2 | 3 | 0 VALN -33.028 -71.635 -1.26 -0.42 -0.966 0.5 1.0 1.0 4 | 1 ZAPA -32.553 -71.466 -1.185 1.1400000000000001 -3.9800000000000004 0.5 1.0 1.0 5 | 2 LSCH -29.908 -71.246 -2.82 -9.855 -16.97 0.5 1.0 1.0 6 | 3 TOLO -30.170 -70.806 -0.9119999999999999 -12.04 -25.28 0.5 1.0 1.0 7 | 4 PEDR -30.839 -70.689 -3.64 -10.02 -53.31 0.5 1.0 1.0 8 | 5 LVIL -31.909 -71.514 -6.98 6.6135 -35.3 0.5 1.0 1.0 9 | 6 CERN -32.558 -70.929 -1.142 3.8739999999999997 -6.357 0.5 1.0 1.0 10 | 7 CMBA -31.188 -70.999 -12.41 0.629 -82.82000000000001 0.5 1.0 1.0 11 | 8 SLMC -31.777 -70.963 -5.12 12.679000000000002 -39.438 0.5 1.0 1.0 12 | 9 PFRJ -30.675 -71.635 -24.69 -24.07 -143.53 0.5 1.0 1.0 13 | 10 cnba -31.398 -71.458 10.0 0.0 -120.0 0.5 1.0 1.0 14 | 11 ovll -30.604 -71.204 -10.0 -21.0 -70.0 0.5 1.0 1.0 15 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Contributions are welcome from the community. Questions can be asked on the 4 | [issues page][1]. Before creating a new issue, please take a moment to search 5 | and make sure a similar issue does not already exist. If one does exist, you 6 | can comment (most simply even with just a `:+1:`) to show your support for that 7 | issue. 8 | 9 | If you have direct contributions you would like considered for incorporation 10 | into the project you can [fork this repository][2] and 11 | [submit a merge request][3] for review. Please use the forking workflow outlined in [contributor-workflow.md](./docs/contributor-workflow.md) 12 | 13 | [1]: https://code.usgs.gov/ghsc/neic/algorithms/neic-finitefault/-/issues 14 | [2]: https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html#creating-a-fork 15 | [3]: https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html 16 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/gnss_data: -------------------------------------------------------------------------------- 1 | Sta Lon Lat de(m) dn(m) du(m) sde(m) sdn(m) sdu(m) 2 | ================================================================================ 3 | VALN -71.6350 -33.0279 -0.00966 -0.00420 -0.01260 0.00116 0.00140 0.00320 4 | ZAPA -71.4656 -32.5528 -0.03980 0.01140 -0.01185 0.00130 0.00130 0.00420 5 | LSCH -71.2460 -29.9082 -0.16970 -0.09855 -0.02820 0.00120 0.00140 0.00310 6 | TOLO -70.8061 -30.1699 -0.25280 -0.12040 -0.00912 0.00160 0.00130 0.00290 7 | PEDR -70.6891 -30.8390 -0.53310 -0.10020 -0.03640 0.00180 0.00150 0.00390 8 | LVIL -71.5138 -31.9092 -0.35300 0.06614 -0.06980 0.00150 0.00150 0.00400 9 | CERN -70.9289 -32.5581 -0.06357 0.03874 -0.01142 0.00160 0.00200 0.00520 10 | CMBA -70.9990 -31.1882 -0.82820 0.00629 -0.12410 0.00130 0.00128 0.00350 11 | SLMC -70.9628 -31.7770 -0.39438 0.12679 -0.05120 0.00150 0.00150 0.00350 12 | PFRJ -71.6354 -30.6748 -1.43530 -0.24070 -0.24690 0.00200 0.00180 0.00460 13 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/gnss_data: -------------------------------------------------------------------------------- 1 | Sta Lon Lat de(m) dn(m) du(m) sde(m) sdn(m) sdu(m) 2 | ================================================================================ 3 | VALN -71.6350 -33.0279 -0.00966 -0.00420 -0.01260 0.00116 0.00140 0.00320 4 | ZAPA -71.4656 -32.5528 -0.03980 0.01140 -0.01185 0.00130 0.00130 0.00420 5 | LSCH -71.2460 -29.9082 -0.16970 -0.09855 -0.02820 0.00120 0.00140 0.00310 6 | TOLO -70.8061 -30.1699 -0.25280 -0.12040 -0.00912 0.00160 0.00130 0.00290 7 | PEDR -70.6891 -30.8390 -0.53310 -0.10020 -0.03640 0.00180 0.00150 0.00390 8 | LVIL -71.5138 -31.9092 -0.35300 0.06614 -0.06980 0.00150 0.00150 0.00400 9 | CERN -70.9289 -32.5581 -0.06357 0.03874 -0.01142 0.00160 0.00200 0.00520 10 | CMBA -70.9990 -31.1882 -0.82820 0.00629 -0.12410 0.00130 0.00128 0.00350 11 | SLMC -70.9628 -31.7770 -0.39438 0.12679 -0.05120 0.00150 0.00150 0.00350 12 | PFRJ -71.6354 -30.6748 -1.43530 -0.24070 -0.24690 0.00200 0.00180 0.00460 13 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/bessel.FF: -------------------------------------------------------------------------------- 1 | ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 2 | c bessel.FF: Compute Bessel function Jn(z) for n=0,1,2 3 | c Reivsion History 4 | c 03/05/1996 Lupei Zhu Initial coding. 5 | ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 6 | subroutine besselFn(z, aj0, aj1, aj2) 7 | IMPLICIT NONE 8 | real z, aj0, aj1, aj2 9 | #ifdef __SUNPRO_F77 10 | real*8 j0,j1,jn, zz 11 | EXTERNAL j0,j1,jn !$pragma C(j0,j1,jn) 12 | zz = z 13 | aj0 = j0(%val(zz)) 14 | aj1 = j1(%val(zz)) 15 | aj2 = jn(%val(2),%val(zz)) 16 | #elif __GNUC__ 17 | aj0 = BesJ0(z) 18 | aj1 = BesJ1(z) 19 | aj2 = BesJN(2,z) 20 | #else 21 | c#warning "no intrinsic Bessel functions found, use it approximation" 22 | real phi, pi 23 | pi = 3.1415926535 24 | phi = z-0.25*pi 25 | pi = 1./sqrt(0.5*pi*z) 26 | aj0 = cos(phi)*pi 27 | aj1 = sin(phi)*pi 28 | aj2 =-aj0 29 | #endif 30 | return 31 | end 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_II_SUR_BH1_10: -------------------------------------------------------------------------------- 1 | ZEROS 10 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.7109E+00 0.0000E+00 6 | -4.6887E+01 0.0000E+00 7 | -8.8347E+01 0.0000E+00 8 | -1.0885E+02 -2.7932E+01 9 | -1.0885E+02 2.7932E+01 10 | -9.4013E+02 -5.4288E+02 11 | -9.4013E+02 5.4288E+02 12 | POLES 14 13 | -5.8899E-03 5.8418E-03 14 | -5.8899E-03 -5.8418E-03 15 | -1.7260E+00 0.0000E+00 16 | -1.5667E+01 -7.0474E+01 17 | -1.5667E+01 7.0474E+01 18 | -8.8618E+01 -9.5572E+00 19 | -8.8618E+01 9.5572E+00 20 | -2.2138E+02 0.0000E+00 21 | -7.8559E+02 -7.5010E+02 22 | -7.8559E+02 7.5010E+02 23 | -9.9106E+02 0.0000E+00 24 | -1.0996E+03 -1.4655E+03 25 | -1.0996E+03 1.4655E+03 26 | -4.0600E+01 0.0000E+00 27 | CONSTANT 6.110400e+22 28 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_II_SUR_BH2_10: -------------------------------------------------------------------------------- 1 | ZEROS 10 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.7109E+00 0.0000E+00 6 | -4.6887E+01 0.0000E+00 7 | -8.8347E+01 0.0000E+00 8 | -1.0885E+02 -2.7932E+01 9 | -1.0885E+02 2.7932E+01 10 | -9.4013E+02 -5.4288E+02 11 | -9.4013E+02 5.4288E+02 12 | POLES 14 13 | -5.8899E-03 5.8418E-03 14 | -5.8899E-03 -5.8418E-03 15 | -1.7260E+00 0.0000E+00 16 | -1.5667E+01 -7.0474E+01 17 | -1.5667E+01 7.0474E+01 18 | -8.8618E+01 -9.5572E+00 19 | -8.8618E+01 9.5572E+00 20 | -2.2138E+02 0.0000E+00 21 | -7.8559E+02 -7.5010E+02 22 | -7.8559E+02 7.5010E+02 23 | -9.9106E+02 0.0000E+00 24 | -1.0996E+03 -1.4655E+03 25 | -1.0996E+03 1.4655E+03 26 | -4.0600E+01 0.0000E+00 27 | CONSTANT 6.160000e+22 28 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_II_SUR_BHZ_10: -------------------------------------------------------------------------------- 1 | ZEROS 10 2 | 0.0000E+00 0.0000E+00 3 | 0.0000E+00 0.0000E+00 4 | 0.0000E+00 0.0000E+00 5 | -1.7109E+00 0.0000E+00 6 | -4.6887E+01 0.0000E+00 7 | -8.8347E+01 0.0000E+00 8 | -1.0885E+02 -2.7932E+01 9 | -1.0885E+02 2.7932E+01 10 | -9.4013E+02 -5.4288E+02 11 | -9.4013E+02 5.4288E+02 12 | POLES 14 13 | -5.8899E-03 5.8418E-03 14 | -5.8899E-03 -5.8418E-03 15 | -1.7260E+00 0.0000E+00 16 | -1.5667E+01 -7.0474E+01 17 | -1.5667E+01 7.0474E+01 18 | -8.8618E+01 -9.5572E+00 19 | -8.8618E+01 9.5572E+00 20 | -2.2138E+02 0.0000E+00 21 | -7.8559E+02 -7.5010E+02 22 | -7.8559E+02 7.5010E+02 23 | -9.9106E+02 0.0000E+00 24 | -1.0996E+03 -1.4655E+03 25 | -1.0996E+03 1.4655E+03 26 | -4.0600E+01 0.0000E+00 27 | CONSTANT 6.063900e+22 28 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/besself.txt: -------------------------------------------------------------------------------- 1 | # 1 "bessel.FF" 2 | # 1 "" 3 | # 1 "" 4 | # 1 "/usr/include/stdc-predef.h" 1 3 4 5 | 6 | # 17 "/usr/include/stdc-predef.h" 3 4 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | # 1 "" 2 50 | # 1 "bessel.FF" 51 | ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 52 | c bessel.FF: Compute Bessel function Jn(z) for n=0,1,2 53 | c Reivsion History 54 | c 03/05/1996 Lupei Zhu Initial coding. 55 | ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 56 | subroutine besselFn(z, aj0, aj1, aj2) 57 | IMPLICIT NONE 58 | real z, aj0, aj1, aj2 59 | # 17 "bessel.FF" 60 | aj0 = BesJ0(z) 61 | aj1 = BesJ1(z) 62 | aj2 = BesJN(2,z) 63 | # 30 "bessel.FF" 64 | return 65 | end 66 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/velmodel_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "dens": [ 3 | "2.0447", 4 | "2.7074199", 5 | "2.83123", 6 | "2.96935", 7 | "3.3754", 8 | "3.4465" 9 | ], 10 | "p_vel": [ 11 | "3.35", 12 | "6.23", 13 | "6.75", 14 | "7.65", 15 | "8.08", 16 | "8.594" 17 | ], 18 | "qa": [ 19 | "1200.0", 20 | "1200.0", 21 | "1200.0", 22 | "1200.0", 23 | "1200.0", 24 | "360.0" 25 | ], 26 | "qb": [ 27 | "600.0", 28 | "600.0", 29 | "600.0", 30 | "600.0", 31 | "500.0", 32 | "140.0" 33 | ], 34 | "s_vel": [ 35 | "1.44", 36 | "3.61", 37 | "3.87", 38 | "4.36", 39 | "4.473", 40 | "4.657" 41 | ], 42 | "thick": [ 43 | "0.074", 44 | "12.076", 45 | "12.945", 46 | "15.8029995", 47 | "196.0", 48 | "36.0" 49 | ] 50 | } -------------------------------------------------------------------------------- /src/ffm/ffm_admin/datautils.py: -------------------------------------------------------------------------------- 1 | from enum import Enum 2 | from typing import List 3 | 4 | DEFAULT_MANAGEMENT_FILES = { 5 | "cgnss": "cgnss_waves.json", 6 | "gnss": "static_data.json", 7 | "imagery": "imagery_data.json", 8 | "strong": "strong_motion_waves.json", 9 | "surf": "surf_waves.json", 10 | "body": "tele_waves.json", 11 | } 12 | 13 | 14 | class AcquireDataTypes(str, Enum): 15 | strong = "strong" 16 | body = "body" 17 | 18 | 19 | class ManagedDataTypes(str, Enum): 20 | cgnss = "cgnss" 21 | gnss = "gnss" 22 | imagery = "imagery" 23 | strong = "strong" 24 | surf = "surf" 25 | body = "body" 26 | 27 | 28 | class ModifiableDataTypes(str, Enum): 29 | cgnss = "cgnss" 30 | gnss = "gnss" 31 | strong_motion = "strong" 32 | surf = "surf" 33 | body = "body" 34 | 35 | 36 | ProcessDataTypes = ManagedDataTypes 37 | 38 | 39 | class ShiftMatchDataTypes(str, Enum): 40 | cgnss = "cgnss" 41 | strong = "strong" 42 | surf = "surf" 43 | body = "body" 44 | -------------------------------------------------------------------------------- /binaries_test/body_wave_weight.txt: -------------------------------------------------------------------------------- 1 | 1.0 HRV BHZ 2 | 1.0 SJG BHZ 3 | 1.0 FDF BHZ 4 | 1.0 PTGA BHZ 5 | 1.0 MPG BHZ 6 | 1.0 CMLA BHZ 7 | 1.0 MACI BHZ 8 | 1.0 MBO BHZ 9 | 1.0 RCBR BHZ 10 | 1.0 KOWA BHZ 11 | 1.0 SHEL BHZ 12 | 1.0 TSUM BHZ 13 | 1.0 SUR BHZ 14 | 1.0 HOPE BHZ 15 | 1.0 CRZF BHZ 16 | 1.0 PMSA BHZ 17 | 1.0 CASY BHZ 18 | 1.0 CCD BHZ 19 | 1.0 SBA BHZ 20 | 1.0 SNZO BHZ 21 | 1.0 RAO BHZ 22 | 1.0 RAR BHZ 23 | 1.0 PPTF BHZ 24 | 1.0 XMAS BHZ 25 | 1.0 SLBS BHZ 26 | 1.0 PFO BHZ 27 | 1.0 TUC BHZ 28 | 1.0 UNM BHZ 29 | 1.0 ANMO BHZ 30 | 1.0 HKT BHZ 31 | 1.0 JTS BHZ 32 | 1.0 CCM BHZ 33 | 1.0 WVT BHZ 34 | 1.0 DWPF BHZ 35 | 1.0 SSPA BHZ 36 | 0.5 BBSR SH 37 | 0.5 FDF SH 38 | 0.5 PTGA SH 39 | 0.5 MPG SH 40 | 0.5 CMLA SH 41 | 0.5 MACI SH 42 | 0.5 MBO SH 43 | 0.5 KOWA SH 44 | 0.5 SHEL SH 45 | 0.5 TSUM SH 46 | 0.5 SUR SH 47 | 0.5 HOPE SH 48 | 0.5 CRZF SH 49 | 0.5 PMSA SH 50 | 0.5 CASY SH 51 | 0.5 SBA SH 52 | 0.5 SNZO SH 53 | 0.5 RAO SH 54 | 0.5 RAR SH 55 | 0.5 PPTF SH 56 | 0.0 RPN SH 57 | 0.5 XMAS SH 58 | 0.0 SLBS SH 59 | 0.5 ANMO SH 60 | 0.5 RSSD SH 61 | 0.5 WCI SH 62 | 0.5 SSPA SH 63 | -------------------------------------------------------------------------------- /binaries_test/channels_strong.txt: -------------------------------------------------------------------------------- 1 | 20159162254320 2 | -31.5952 -71.6728 29.0 3 | 10 0.4 3.2291872286240194e+28 4 | 0 5 | 15 15 6 | No STA Lat Lon M Comp Weight 7 | 1 VA01 -33.023 -71.648 31 HNN 0.9383781552314758 0 8 | 2 MT05 -33.392 -70.738 31 HNN 1.0327168703079224 0 9 | 3 GO04 -30.173 -70.799 31 HNZ 5.7257256507873535 0 10 | 4 VA03 -32.764 -70.551 31 HNZ 1.1900954246520996 0 11 | 5 VA03 -32.764 -70.551 31 HNE 1.3990294933319092 0 12 | 6 GO04 -30.173 -70.799 31 HNN 3.0820038318634033 0 13 | 7 CO03 -30.839 -70.689 31 HNN 3.0420641899108887 0 14 | 8 CO03 -30.839 -70.689 31 HNE 4.509559631347656 0 15 | 9 MT05 -33.392 -70.738 31 HNE 1.189697027206421 0 16 | 10 GO04 -30.173 -70.799 31 HNE 5.311797142028809 0 17 | 11 CO03 -30.839 -70.689 31 HNZ 5.854155540466309 0 18 | 12 VA03 -32.764 -70.551 31 HNN 1.10928213596344 0 19 | 13 MT05 -33.392 -70.738 31 HNZ 1.0212650299072266 0 20 | 14 VA01 -33.023 -71.648 31 HNE 2.149379253387451 0 21 | 15 VA01 -33.023 -71.648 31 HNZ 1.3557069301605225 0 22 | -------------------------------------------------------------------------------- /miniforge_install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ============================================================================== 4 | # Define usage 5 | # Install miniforge (if needed) 6 | # ============================================================================== 7 | ## define usage 8 | function usage { 9 | echo "----------------------------------------------------------------" 10 | echo "Install Conda" 11 | echo "----------------------------------------------------------------" 12 | } 13 | 14 | ## parse arguments 15 | REQUIRED_ARGS=() 16 | while [[ $# -gt 0 ]]; do 17 | # shellcheck disable=SC2221,SC2222 18 | case $1 in 19 | -h|--help) 20 | usage 21 | exit 0 22 | ;; 23 | -*|--*) 24 | echo "Invalid option $1" 25 | usage 26 | exit 1 27 | ;; 28 | *) 29 | REQUIRED_ARGS+=("$1") 30 | shift 31 | ;; 32 | esac 33 | done 34 | 35 | 36 | # shellcheck source=./install.d/miniforge.sh 37 | source ./install.d/miniforge.sh; 38 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/wavelets_surf.txt: -------------------------------------------------------------------------------- 1 | 1 8 256 2 | 19 3 | MPG BHZ 4 | 3 3 3 3 3 3 3 3 5 | 0 0 0 0 2 2 0 0 6 | MACI BHZ 7 | 3 3 3 3 3 3 3 3 8 | 0 0 0 0 2 2 0 0 9 | RCBR BHZ 10 | 3 3 3 3 3 3 3 3 11 | 0 0 0 0 2 2 0 0 12 | KOWA BHZ 13 | 3 3 3 3 3 3 3 3 14 | 0 0 0 0 2 2 0 0 15 | TSUM BHZ 16 | 3 3 3 3 3 3 3 3 17 | 0 0 0 0 2 2 0 0 18 | SUR BHZ 19 | 3 3 3 3 3 3 3 3 20 | 0 0 0 0 2 2 0 0 21 | CRZF BHZ 22 | 3 3 3 3 3 3 3 3 23 | 0 0 0 0 2 2 0 0 24 | SNAA BHZ 25 | 3 3 3 3 3 3 3 3 26 | 0 0 0 0 2 2 0 0 27 | BRAL BHZ 28 | 3 3 3 3 3 3 3 3 29 | 0 0 0 0 2 2 0 0 30 | GOGA BHZ 31 | 3 3 3 3 3 3 3 3 32 | 0 0 0 0 2 2 0 0 33 | MPG BHT 34 | 3 3 3 3 3 3 3 3 35 | 0 0 0 0 2 2 0 0 36 | MACI BHT 37 | 3 3 3 3 3 3 3 3 38 | 0 0 0 0 2 2 0 0 39 | RCBR BHT 40 | 3 3 3 3 3 3 3 3 41 | 0 0 0 0 2 2 0 0 42 | KOWA BHT 43 | 3 3 3 3 3 3 3 3 44 | 0 0 0 0 2 2 0 0 45 | TSUM BHT 46 | 3 3 3 3 3 3 3 3 47 | 0 0 0 0 2 2 0 0 48 | SUR BHT 49 | 3 3 3 3 3 3 3 3 50 | 0 0 0 0 2 2 0 0 51 | CRZF BHT 52 | 3 3 3 3 3 3 3 3 53 | 0 0 0 0 2 2 0 0 54 | SNAA BHT 55 | 3 3 3 3 3 3 3 3 56 | 0 0 0 0 2 2 0 0 57 | GOGA BHT 58 | 3 3 3 3 3 3 3 3 59 | 0 0 0 0 2 2 0 0 60 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/src/constants.f95: -------------------------------------------------------------------------------- 1 | module constants 2 | 3 | implicit none 4 | integer, parameter :: nnpy = 25, nnpx = 25, nnxs = 50, nnys = 20, mmsou = 25 5 | integer, parameter :: mpx = nnpx * nnxs, mpy = nnpy * nnys, nnxy = nnxs * nnys 6 | integer, parameter :: nnpxy = nnpx * nnpy, l2 = 10 7 | integer, parameter :: npth = 2 ** l2, inptd = 2 * npth, n_data = 10000 8 | integer, parameter :: nnsta = 300 9 | integer, parameter :: max_seg = 5, nnxy_m = 660, nt1 = max_seg * nnxy_m 10 | integer, parameter :: npuse = 513, block_stg = npuse * 130 11 | integer, parameter :: block_far = 256 * 1024, ltde = 320000 12 | real*8, parameter :: pi = 4.d0*atan(1.d0), twopi = 2.d0 * pi 13 | real*8, parameter :: dpi = pi / 180.d0 14 | real, parameter :: pi_0 = 4.0*atan(1.0), twopi_0 = 2.0 * pi_0, dpi_0 = pi_0 / 180.0 15 | ! maximum layer, distances, and time samples 16 | ! maximum size of green's function (nnx*nny) 17 | integer, parameter :: nlay = 50, ndis = 1100, nt = 1025 18 | integer, parameter :: nny = 310 19 | 20 | end module constants 21 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/wavelets_body.txt: -------------------------------------------------------------------------------- 1 | 1 8 256 2 | 3 | 19 4 | MPG BHZ 5 | 3 3 3 3 3 3 3 3 6 | 0 1 1 1 1 1 1 1 7 | MACI BHZ 8 | 3 3 3 3 3 3 3 3 9 | 0 1 1 1 1 1 1 1 10 | RCBR BHZ 11 | 3 3 3 3 3 3 3 3 12 | 0 1 1 1 1 1 1 1 13 | KOWA BHZ 14 | 3 3 3 3 3 3 3 3 15 | 0 1 1 1 1 1 1 1 16 | TSUM BHZ 17 | 3 3 3 3 3 3 3 3 18 | 0 1 1 1 1 1 1 1 19 | SUR BHZ 20 | 3 3 3 3 3 3 3 3 21 | 0 1 1 1 1 1 1 1 22 | CRZF BHZ 23 | 3 3 3 3 3 3 3 3 24 | 0 1 1 1 1 1 1 1 25 | SNAA BHZ 26 | 3 3 3 3 3 3 3 3 27 | 0 1 1 1 1 1 1 1 28 | BRAL BHZ 29 | 3 3 3 3 3 3 3 3 30 | 0 1 1 1 1 1 1 1 31 | GOGA BHZ 32 | 3 3 3 3 3 3 3 3 33 | 0 1 1 1 1 1 1 1 34 | MPG BHT 35 | 3 3 3 3 3 3 3 3 36 | 0 1 1 1 1 1 1 0 37 | MACI BHT 38 | 3 3 3 3 3 3 3 3 39 | 0 1 1 1 1 1 1 0 40 | RCBR BHT 41 | 3 3 3 3 3 3 3 3 42 | 0 1 1 1 1 1 1 0 43 | KOWA BHT 44 | 3 3 3 3 3 3 3 3 45 | 0 1 1 1 1 1 1 0 46 | TSUM BHT 47 | 3 3 3 3 3 3 3 3 48 | 0 1 1 1 1 1 1 0 49 | SUR BHT 50 | 3 3 3 3 3 3 3 3 51 | 0 1 1 1 1 1 1 0 52 | CRZF BHT 53 | 3 3 3 3 3 3 3 3 54 | 0 1 1 1 1 1 1 0 55 | SNAA BHT 56 | 3 3 3 3 3 3 3 3 57 | 0 1 1 1 1 1 1 0 58 | GOGA BHT 59 | 3 3 3 3 3 3 3 3 60 | 0 1 1 1 1 1 1 0 61 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C1_VA03_HNN___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C1 3 | * STATION (KSTNM): VA03 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNN 6 | * CREATED : 2022-05-02T15:57:35 7 | * START : 2013-11-28T00:00:00 8 | * END : 9 | * DESCRIPTION : San Esteban 10 | * LATITUDE : -32.763700 11 | * LONGITUDE : -70.550800 12 | * ELEVATION : 1053.0 13 | * DEPTH : 0.0 14 | * DIP : 90.0 15 | * AZIMUTH : 0.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : COUNT 18 | * OUTPUT UNIT : V 19 | * INSTTYPE : CMG-5T, DC_100 s, 0.255 V/m/s**2, 4g clip level, 20 | * INSTGAIN : 1.020410e+00 (COUNT) 21 | * COMMENT : 22 | * SENSITIVITY : 4.279910e+05 (COUNT) 23 | * A0 : 3.021840e+12 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -4.008000e+02 +5.679000e+02 28 | -4.008000e+02 -5.679000e+02 29 | -4.749000e+03 +0.000000e+00 30 | -1.317000e+03 +0.000000e+00 31 | CONSTANT 1.293320e+18 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C1_VA03_HNZ___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C1 3 | * STATION (KSTNM): VA03 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNZ 6 | * CREATED : 2022-05-02T15:57:35 7 | * START : 2013-11-28T00:00:00 8 | * END : 9 | * DESCRIPTION : San Esteban 10 | * LATITUDE : -32.763700 11 | * LONGITUDE : -70.550800 12 | * ELEVATION : 1053.0 13 | * DEPTH : 0.0 14 | * DIP : 0.0 15 | * AZIMUTH : 0.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : COUNT 18 | * OUTPUT UNIT : V 19 | * INSTTYPE : CMG-5T, DC_100 s, 0.255 V/m/s**2, 4g clip level, 20 | * INSTGAIN : 1.020410e+00 (COUNT) 21 | * COMMENT : 22 | * SENSITIVITY : 4.279910e+05 (COUNT) 23 | * A0 : 3.021840e+12 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -4.008000e+02 +5.679000e+02 28 | -4.008000e+02 -5.679000e+02 29 | -4.749000e+03 +0.000000e+00 30 | -1.317000e+03 +0.000000e+00 31 | CONSTANT 1.293320e+18 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C1_CO03_HNE___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C1 3 | * STATION (KSTNM): CO03 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNE 6 | * CREATED : 2022-05-02T15:57:20 7 | * START : 2014-02-11T00:00:00 8 | * END : 9 | * DESCRIPTION : El Pedregal 10 | * LATITUDE : -30.838900 11 | * LONGITUDE : -70.689100 12 | * ELEVATION : 1003.0 13 | * DEPTH : 0.0 14 | * DIP : 90.0 15 | * AZIMUTH : 90.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : M 18 | * OUTPUT UNIT : COUNTS 19 | * INSTTYPE : Guralp CMG5T Sensor/Quanterra 330 Linear Phase Com 20 | * INSTGAIN : 1.020410e+00 (M/S**2) 21 | * COMMENT : 22 | * SENSITIVITY : 4.279910e+05 (M/S**2) 23 | * A0 : 3.021840e+12 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -4.008000e+02 +5.679000e+02 28 | -4.008000e+02 -5.679000e+02 29 | -4.749000e+03 +0.000000e+00 30 | -1.317000e+03 +0.000000e+00 31 | CONSTANT 1.293320e+18 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C1_CO03_HNN___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C1 3 | * STATION (KSTNM): CO03 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNN 6 | * CREATED : 2022-05-02T15:57:20 7 | * START : 2014-02-11T00:00:00 8 | * END : 9 | * DESCRIPTION : El Pedregal 10 | * LATITUDE : -30.838900 11 | * LONGITUDE : -70.689100 12 | * ELEVATION : 1003.0 13 | * DEPTH : 0.0 14 | * DIP : 90.0 15 | * AZIMUTH : 0.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : M 18 | * OUTPUT UNIT : COUNTS 19 | * INSTTYPE : Guralp CMG5T Sensor/Quanterra 330 Linear Phase Com 20 | * INSTGAIN : 1.020410e+00 (M/S**2) 21 | * COMMENT : 22 | * SENSITIVITY : 4.279910e+05 (M/S**2) 23 | * A0 : 3.021840e+12 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -4.008000e+02 +5.679000e+02 28 | -4.008000e+02 -5.679000e+02 29 | -4.749000e+03 +0.000000e+00 30 | -1.317000e+03 +0.000000e+00 31 | CONSTANT 1.293320e+18 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C1_CO03_HNZ___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C1 3 | * STATION (KSTNM): CO03 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNZ 6 | * CREATED : 2022-05-02T15:57:20 7 | * START : 2014-02-11T00:00:00 8 | * END : 9 | * DESCRIPTION : El Pedregal 10 | * LATITUDE : -30.838900 11 | * LONGITUDE : -70.689100 12 | * ELEVATION : 1003.0 13 | * DEPTH : 0.0 14 | * DIP : 0.0 15 | * AZIMUTH : 0.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : M 18 | * OUTPUT UNIT : COUNTS 19 | * INSTTYPE : Guralp CMG5T Sensor/Quanterra 330 Linear Phase Com 20 | * INSTGAIN : 1.020410e+00 (M/S**2) 21 | * COMMENT : 22 | * SENSITIVITY : 4.279910e+05 (M/S**2) 23 | * A0 : 3.021840e+12 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -4.008000e+02 +5.679000e+02 28 | -4.008000e+02 -5.679000e+02 29 | -4.749000e+03 +0.000000e+00 30 | -1.317000e+03 +0.000000e+00 31 | CONSTANT 1.293320e+18 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C1_VA03_HNE___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C1 3 | * STATION (KSTNM): VA03 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNE 6 | * CREATED : 2022-05-02T15:57:35 7 | * START : 2013-11-28T00:00:00 8 | * END : 9 | * DESCRIPTION : San Esteban 10 | * LATITUDE : -32.763700 11 | * LONGITUDE : -70.550800 12 | * ELEVATION : 1053.0 13 | * DEPTH : 0.0 14 | * DIP : 90.0 15 | * AZIMUTH : 90.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : COUNT 18 | * OUTPUT UNIT : V 19 | * INSTTYPE : CMG-5T, DC_100 s, 0.255 V/m/s**2, 4g clip level, 20 | * INSTGAIN : 1.020410e+00 (COUNT) 21 | * COMMENT : 22 | * SENSITIVITY : 4.279910e+05 (COUNT) 23 | * A0 : 3.021840e+12 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -4.008000e+02 +5.679000e+02 28 | -4.008000e+02 -5.679000e+02 29 | -4.749000e+03 +0.000000e+00 30 | -1.317000e+03 +0.000000e+00 31 | CONSTANT 1.293320e+18 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C_GO04_HNE___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C 3 | * STATION (KSTNM): GO04 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNE 6 | * CREATED : 2022-05-02T15:57:09 7 | * START : 2011-07-15T00:00:00 8 | * END : 9 | * DESCRIPTION : Tololo Observatory, Vicuna, Chile 10 | * LATITUDE : -30.172700 11 | * LONGITUDE : -70.799300 12 | * ELEVATION : 2076.0 13 | * DEPTH : 0.0 14 | * DIP : 90.0 15 | * AZIMUTH : 90.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : M 18 | * OUTPUT UNIT : COUNTS 19 | * INSTTYPE : Episensor 200 Hz 10 Volt per g/Quanterra 330 Linea 20 | * INSTGAIN : 1.020180e+00 (M/S**2) 21 | * COMMENT : 22 | * SENSITIVITY : 4.278940e+05 (M/S**2) 23 | * A0 : 2.459560e+13 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -9.810000e+02 +1.009000e+03 28 | -9.810000e+02 -1.009000e+03 29 | -3.290000e+03 +1.263000e+03 30 | -3.290000e+03 -1.263000e+03 31 | CONSTANT 1.052431e+19 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C_GO04_HNN___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C 3 | * STATION (KSTNM): GO04 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNN 6 | * CREATED : 2022-05-02T15:57:09 7 | * START : 2011-07-15T00:00:00 8 | * END : 9 | * DESCRIPTION : Tololo Observatory, Vicuna, Chile 10 | * LATITUDE : -30.172700 11 | * LONGITUDE : -70.799300 12 | * ELEVATION : 2076.0 13 | * DEPTH : 0.0 14 | * DIP : 90.0 15 | * AZIMUTH : 0.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : M 18 | * OUTPUT UNIT : COUNTS 19 | * INSTTYPE : Episensor 200 Hz 10 Volt per g/Quanterra 330 Linea 20 | * INSTGAIN : 1.020180e+00 (M/S**2) 21 | * COMMENT : 22 | * SENSITIVITY : 4.278940e+05 (M/S**2) 23 | * A0 : 2.459560e+13 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -9.810000e+02 +1.009000e+03 28 | -9.810000e+02 -1.009000e+03 29 | -3.290000e+03 +1.263000e+03 30 | -3.290000e+03 -1.263000e+03 31 | CONSTANT 1.052431e+19 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/data/SAC_PZs_C_GO04_HNZ___: -------------------------------------------------------------------------------- 1 | * ********************************** 2 | * NETWORK (KNETWK): C 3 | * STATION (KSTNM): GO04 4 | * LOCATION (KHOLE): 5 | * CHANNEL (KCMPNM): HNZ 6 | * CREATED : 2022-05-02T15:57:09 7 | * START : 2011-07-15T00:00:00 8 | * END : 9 | * DESCRIPTION : Tololo Observatory, Vicuna, Chile 10 | * LATITUDE : -30.172700 11 | * LONGITUDE : -70.799300 12 | * ELEVATION : 2076.0 13 | * DEPTH : 0.0 14 | * DIP : 0.0 15 | * AZIMUTH : 0.0 16 | * SAMPLE RATE : 100.0 17 | * INPUT UNIT : M 18 | * OUTPUT UNIT : COUNTS 19 | * INSTTYPE : Episensor 200 Hz 10 Volt per g/Quanterra 330 Linea 20 | * INSTGAIN : 1.020180e+00 (M/S**2) 21 | * COMMENT : 22 | * SENSITIVITY : 4.278940e+05 (M/S**2) 23 | * A0 : 2.459560e+13 24 | * ********************************** 25 | ZEROS 0 26 | POLES 4 27 | -9.810000e+02 +1.009000e+03 28 | -9.810000e+02 -1.009000e+03 29 | -3.290000e+03 +1.263000e+03 30 | -3.290000e+03 -1.263000e+03 31 | CONSTANT 1.052431e+19 32 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/static_synthetics.txt: -------------------------------------------------------------------------------- 1 | 10 2 | 1 VALN -33.0279999 -71.6350021 -0.391721070 -2.05364060 -3.88984251 3 | 2 ZAPA -32.5530014 -71.4660034 -0.403379977 -0.732790589 -9.14662075 4 | 3 LSCH -29.9080009 -71.2460022 1.84858394 -10.5170603 -22.9566288 5 | 4 TOLO -30.1700001 -70.8059998 -1.66698122 -10.3476543 -23.8477077 6 | 5 PEDR -30.8390007 -70.6890030 -6.36605597 -8.84063911 -45.7251091 7 | 6 LVIL -31.9090004 -71.5139999 -3.55172944 4.73673296 -38.2507591 8 | 7 CERN -32.5579987 -70.9290009 -3.08602810 3.04987383 -10.8689032 9 | 8 CMBA -31.1879997 -70.9990005 -13.3618250 -2.44215941 -80.3503571 10 | 9 SLMC -31.7770004 -70.9629974 -6.26744890 8.48536301 -39.5643044 11 | 10 PFRJ -30.6749992 -71.6350021 -23.3768368 -23.5915432 -144.032288 12 | -------------------------------------------------------------------------------- /src/ffm/plane_management.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """Management of fault planes files and solution model 3 | """ 4 | 5 | 6 | import os 7 | from typing import Tuple 8 | 9 | 10 | def __unpack_plane_data( 11 | plane_info: dict, 12 | ) -> Tuple[int, int, float, float, float, float]: 13 | """Extract information from a fault segment 14 | 15 | :param plane_info: The segment/plane information 16 | :type plane_info: dict 17 | :return: The number of strike subfaults, the number of dip subfaults, 18 | the increment of the strike, the increment of the dip, the strike of 19 | the hypocenter, the dip of the hypocenter 20 | :rtype: Tuple[int, int, float, float, float, float] 21 | """ 22 | stk_subfaults = plane_info["stk_subfaults"] 23 | dip_subfaults = plane_info["dip_subfaults"] 24 | delta_strike = plane_info["delta_strike"] 25 | delta_dip = plane_info["delta_dip"] 26 | # TODO: Investigate why -1 is applied 27 | hyp_stk = plane_info["hyp_stk"] - 1 28 | hyp_dip = plane_info["hyp_dip"] - 1 29 | return stk_subfaults, dip_subfaults, delta_strike, delta_dip, hyp_stk, hyp_dip 30 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | --- 2 | 3 | default: 4 | tags: 5 | - dev 6 | - developers 7 | 8 | variables: 9 | DOCKER_IMAGE: "code.usgs.gov:5001/devops/images/usgs/docker:20" 10 | 11 | 12 | 13 | # Do not run for merge requests 14 | workflow: 15 | rules: 16 | - if: $CI_COMMIT_TAG 17 | - if: $CI_COMMIT_BRANCH 18 | 19 | stages: 20 | - end-to-end 21 | 22 | 23 | 24 | .docker_login: 25 | before_script: 26 | - | 27 | test -n "${CI_REGISTRY_USER}" -a -n "${CI_REGISTRY_PASSWORD}" \ 28 | && echo "${CI_REGISTRY_PASSWORD}" | \ 29 | docker login \ 30 | --username "${CI_REGISTRY_USER}" \ 31 | --password-stdin \ 32 | "${CI_REGISTRY}"; 33 | cache: 34 | paths: 35 | - .trivy/ 36 | services: 37 | - alias: docker 38 | name: "${DOCKER_IMAGE}-dind" 39 | 40 | End To End Test: 41 | extends: 42 | - .docker_login 43 | image: "${DOCKER_IMAGE}" 44 | script: 45 | - LOCAL_IMAGE="wasp" 46 | - docker build --build-arg CI_REGISTRY="True" -t "${LOCAL_IMAGE}" . 47 | - docker run wasp 48 | stage: end-to-end 49 | variables: 50 | DOCKER_DRIVER: overlay2 51 | -------------------------------------------------------------------------------- /fortran_code/info/us.cpt: -------------------------------------------------------------------------------- 1 | -6000 0 0 255 -5000 0 0 255 L 2 | -5000 25 51 255 -4000 25 51 255 U 3 | -4000 51 102 255 -3000 51 102 255 U 4 | -3000 102 153 255 -2000 102 153 255 L 5 | -2000 153 204 255 -1000 153 204 255 U 6 | -1000 204 255 255 0 204 255 255 U 7 | 0 100 150 100 30 100 150 100 L 8 | 30 125 175 125 60 125 175 125 U 9 | 60 150 200 150 122 150 200 150 U 10 | 122 175 225 175 183 175 225 175 U 11 | 183 200 255 200 244 200 255 200 U 12 | 244 212 255 212 305 212 255 212 U 13 | 305 255 255 225 457 255 255 225 U 14 | 457 255 225 175 610 255 225 175 U 15 | 610 255 225 125 702 255 225 125 U 16 | 702 255 175 75 914 255 175 75 U 17 | 914 200 150 50 1219 200 150 50 U 18 | 1219 175 125 50 1450 175 125 50 U 19 | 1450 150 100 50 1700 150 100 50 L 20 | 1700 150 125 100 1981 150 125 100 U 21 | 1981 125 125 125 2134 125 125 125 U 22 | 2134 150 150 150 2438 150 150 150 U 23 | 2438 175 175 175 2743 175 175 175 U 24 | 2743 200 200 200 3048 200 200 200 U 25 | 3048 233 233 233 3250 233 233 233 U 26 | B 0 0 255 233 U 27 | F 233 233 233 U 28 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/retrieve_gf.f95: -------------------------------------------------------------------------------- 1 | ! Read Green's function from the Green Function bank 2 | ! Input dist_max dist_min d_step 3 | ! Input dep_max dep_min dep_step 4 | ! Input Lnpt dt 5 | ! Input Green_name 6 | ! output Green 7 | ! 8 | module retrieve_gf 9 | 10 | 11 | implicit none 12 | integer :: lnpt, block_gg 13 | real :: dt, dep_max, dep_min, dep_step, dist_max, dist_min, d_step, t_cor 14 | 15 | 16 | contains 17 | 18 | 19 | subroutine get_gf_data(gf_file, vel_model, gf_bank) 20 | ! 21 | ! Args: 22 | ! gf_file: file with properties of GF bank 23 | ! vel_model: file with velocity model 24 | ! gf_bank: location of GF bank 25 | ! 26 | implicit none 27 | character(len=100), intent(in) :: gf_file 28 | character(len=100), intent(out) :: vel_model, gf_bank 29 | open(1, file=gf_file, status='old') 30 | read(1, *)vel_model 31 | read(1, *)dep_max, dep_min, dep_step 32 | read(1, *)dist_max, dist_min, d_step 33 | read(1, *)lnpt, dt, block_gg, t_cor 34 | read(1, '(a)')gf_bank 35 | write(*,*)'GF bank name' 36 | write(*, *)gf_bank 37 | close(1) 38 | end subroutine get_gf_data 39 | 40 | 41 | end module retrieve_gf 42 | -------------------------------------------------------------------------------- /fortran_code/info/after_20080520.txt: -------------------------------------------------------------------------------- 1 | MAP 5.8 2008/05/12 11:11:02 31.249 103.693 10.0 EASTERN SICHUAN, CHINA 2 | MAP 5.1 2008/05/12 10:23:40 30.992 103.413 10.0 EASTERN SICHUAN, CHINA 3 | MAP 5.0 2008/05/12 09:52:13 47.347 -27.296 10.0 NORTHERN MID-ATLANTIC RIDGE 4 | MAP 5.5 2008/05/12 09:42:25 31.519 104.116 10.0 EASTERN SICHUAN, CHINA 5 | MAP 5.1 2008/05/12 09:07:01 31.255 103.788 10.0 EASTERN SICHUAN, CHINA 6 | MAP 5.0 2008/05/12 08:47:25 32.215 105.029 10.0 SICHUAN-GANSU BORDER REGION, CHINA 7 | MAP 5.2 2008/05/12 08:21:41 31.542 104.085 10.0 EASTERN SICHUAN, CHINA 8 | MAP 5.2 2008/05/12 08:10:59 31.225 103.574 10.0 EASTERN SICHUAN, CHINA 9 | MAP 5.4 2008/05/12 07:34:43 31.278 103.799 10.0 EASTERN SICHUAN, CHINA 10 | MAP 5.7 2008/05/12 06:54:18 31.155 103.826 10.0 EASTERN SICHUAN, CHINA 11 | MAP 6.0 2008/05/12 06:43:15 31.225 103.761 10.0 EASTERN SICHUAN, CHINA 12 | MAP 7.8 2008/05/12 06:28:01 31.104 103.270 10.0 EASTERN SICHUAN, CHINA 13 | -------------------------------------------------------------------------------- /fortran_code/bin_str_f95/constants.f95: -------------------------------------------------------------------------------- 1 | module constants 2 | 3 | implicit none 4 | integer, parameter :: max_dip_psources = 25, max_stk_psources = 25 5 | integer, parameter :: max_stk_subfaults = 50, max_dip_subfaults = 20 6 | integer, parameter :: max_rise_time_range = 25 7 | integer, parameter :: max_stk_psources2 = max_stk_psources * max_stk_subfaults 8 | integer, parameter :: max_dip_psources2 = max_dip_psources * max_dip_subfaults 9 | integer, parameter :: max_subf = max_stk_subfaults * max_dip_subfaults 10 | integer, parameter :: max_psources = max_dip_psources * max_stk_psources, log2_pts = 10 11 | integer, parameter :: wave_pts = 2 ** log2_pts, wave_pts2 = 2 * wave_pts 12 | integer, parameter :: n_data = 10000, max_stations = 300 13 | integer, parameter :: max_seg = 30, max_subfaults = 1000, max_subfaults2 = 5000 14 | integer, parameter :: npuse = 513, block_stg = npuse * 130 15 | real*8, parameter :: pi = 4.d0*atan(1.d0), twopi = 2.d0 * pi 16 | real*8, parameter :: dpi = pi / 180.d0 17 | ! maximum layer, distances, and time samples 18 | ! maximum size of green's function (nnx*nny) 19 | integer, parameter :: nlay = 50, ndis = 1100, nt = 1025 20 | integer, parameter :: nny = 310 21 | 22 | end module constants 23 | -------------------------------------------------------------------------------- /src/test/modelling_parameters_test.py: -------------------------------------------------------------------------------- 1 | import json 2 | import pathlib 3 | import shutil 4 | import tempfile 5 | 6 | from ffm.modelling_parameters import modelling_prop 7 | 8 | from .testutils import RESULTS_DIR, get_segments_data, get_tensor_info 9 | 10 | 11 | def test_modelling_prop(): 12 | tempdir = pathlib.Path(tempfile.mkdtemp()) 13 | try: 14 | dict, model_space = modelling_prop( 15 | get_tensor_info(), 16 | get_segments_data(), 17 | ["cgnss", "imagery", "surf_waves", "strong_waves", "tele_waves"], 18 | directory=tempdir, 19 | ) 20 | # compare annealing_prop 21 | with open(tempdir / "annealing_prop.json") as ad: 22 | annealing_data = json.load(ad) 23 | with open(RESULTS_DIR / "NP1" / "annealing_prop.json") as ad: 24 | target_annealing = json.load(ad) 25 | assert dict == annealing_data == target_annealing 26 | # compare model_space 27 | with open(tempdir / "model_space.json") as md: 28 | model_data = json.load(md) 29 | with open(RESULTS_DIR / "NP1" / "model_space.json") as md: 30 | target_model = json.load(md) 31 | assert model_space == model_data == target_model 32 | finally: 33 | shutil.rmtree(tempdir) 34 | -------------------------------------------------------------------------------- /examples/Multisegment_Example/model_space.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "max_center_slip": 2700, 4 | "max_left_slip": 2700, 5 | "max_lower_slip": 2700, 6 | "max_right_slip": 2700, 7 | "max_slip_delta": 2700, 8 | "max_upper_slip": 2700, 9 | "min_slip": 0, 10 | "rake_max": 129.27817171619566, 11 | "rake_min": 89.27817171619566, 12 | "rake_step": 21, 13 | "regularization": { 14 | "neighbour_down": {"segment": 2, "subfault": 11}, 15 | "neighbour_left": null, 16 | "neighbour_right": null, 17 | "neighbour_up": null 18 | }, 19 | "slip_step": 51 20 | }, 21 | { 22 | "max_center_slip": 2700, 23 | "max_left_slip": 2700, 24 | "max_lower_slip": 2700, 25 | "max_right_slip": 2700, 26 | "max_slip_delta": 2700, 27 | "max_upper_slip": 2700, 28 | "min_slip": 0, 29 | "rake_max": 129.27817171619566, 30 | "rake_min": 89.27817171619566, 31 | "rake_step": 21, 32 | "regularization": { 33 | "neighbour_down": null, 34 | "neighbour_left": null, 35 | "neighbour_right": null, 36 | "neighbour_up": {"segment": 1, "subfault": 11} 37 | }, 38 | "slip_step": 51 39 | } 40 | ] -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/Complex.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "Complex.h" 3 | 4 | complex cplus(complex a, complex b) { 5 | a.x += b.x; 6 | a.y += b.y; 7 | return(a); 8 | } 9 | 10 | complex cmltp(complex a, complex b) { 11 | complex c; 12 | c.x = a.x*b.x - a.y*b.y; 13 | c.y = a.x*b.y + a.y*b.x; 14 | return(c); 15 | } 16 | 17 | complex cngtv(complex a) { 18 | a.x = -a.x; 19 | a.y = -a.y; 20 | return(a); 21 | } 22 | 23 | complex cinvs(complex a) { 24 | complex dmltp(float, complex); 25 | complex conjg(complex a); 26 | return(dmltp(1./(a.x*a.x+a.y*a.y), conjg(a))); 27 | } 28 | 29 | complex conjg(complex a) { 30 | a.y = -a.y; 31 | return(a); 32 | } 33 | 34 | complex dmltp(float a, complex b) { 35 | b.x *= a; 36 | b.y *= a; 37 | return(b); 38 | } 39 | 40 | complex Csqrt(complex a) { 41 | double mo, ar; 42 | double ccabs(complex); 43 | mo = sqrt(ccabs(a)); 44 | ar = 0.5*atan2(a.y, a.x); 45 | a.x = mo*cos(ar); 46 | a.y = mo*sin(ar); 47 | return(a); 48 | } 49 | 50 | complex cmplx(float x, float y) { 51 | complex a; 52 | a.x = x; 53 | a.y = y; 54 | return(a); 55 | } 56 | 57 | complex cphase(complex w) { 58 | double mo; 59 | mo = exp(w.x); 60 | return cmplx(mo*cos(w.y), mo*sin(w.y)); 61 | } 62 | 63 | double ccabs(complex a) { 64 | return(sqrt(a.x*a.x+a.y*a.y)); 65 | } 66 | -------------------------------------------------------------------------------- /docs/code-dependencies.md: -------------------------------------------------------------------------------- 1 | # Code Dependencies 2 | 3 | This document outlines the dependencies required to run the code. This may be helpful for those that do not want to use the install script or Poetry for dependency management. 4 | 5 | ## Python Dependencies 6 | 7 | 1. Python: Recommend a [stable/security](https://devguide.python.org/versions/) version. 8 | 2. [Cartopy](https://scitools.org.uk/cartopy/docs/latest/installing.html): For managing/manipulating spatial shapes and for plotting 9 | 3. [matplotlib](https://matplotlib.org/): For plotting 10 | 4. [netCDF4](https://unidata.github.io/netcdf4-python/): Provides the `Dataset` object 11 | 5. [NumPy](https://numpy.org/): For array computation 12 | 6. [ObsPy](https://docs.obspy.org/): For waveform computation 13 | 7. [pyGMT](https://www.pygmt.org/dev/index.html): For plotting maps 14 | 8. [SciPy](https://scipy.org/): For fundamental algorithms 15 | 9. [shapely](https://shapely.readthedocs.io/en/stable/manual.html): For spatial analysis (in ObsPy) 16 | 17 | > A list of dependencies and versions are available in conda environment file [environment.yml](../install.d/environment.yml) 18 | 19 | ## Fortran Dependencies 20 | 21 | 1. [GFortran](https://fortran-lang.org/en/learn/os_setup/install_gfortran/): For compiling the FORTRAN code 22 | 2. make 23 | 24 | ## C Dependencies 25 | 26 | 1. gcc 27 | 28 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/wavelet_param.f95: -------------------------------------------------------------------------------- 1 | module wavelet_param 2 | 3 | 4 | implicit none 5 | integer :: lnpt, nlen, jmin, jmax, max_freq 6 | 7 | 8 | contains 9 | 10 | 11 | subroutine get_data_param(lnpt0, jmin0, jmax0, nlen0, max_freq0) 12 | ! 13 | ! Args: 14 | ! lnpt0: log2 of size of data arrays to be used 15 | ! jmin0: minimum used wavelet scale 16 | ! jmax0: maximum used wavelet scale 17 | ! nlen0: size of data arrays to be used 18 | ! max_freq0: maximum frequency to be modelled 19 | ! 20 | implicit none 21 | integer :: lnpt0, nlen0, jmin0, jmax0, max_freq0 22 | lnpt0 = lnpt 23 | jmin0 = jmin 24 | jmax0 = jmax 25 | nlen0 = nlen 26 | max_freq0 = max_freq 27 | end subroutine get_data_param 28 | 29 | 30 | subroutine set_params(lnpt0, jmin0, jmax0, nlen0, max_freq0) 31 | ! 32 | ! Args: 33 | ! lnpt0: log2 of size of data arrays to be used 34 | ! jmin0: minimum used wavelet scale 35 | ! jmax0: maximum used wavelet scale 36 | ! nlen0: size of data arrays to be used 37 | ! max_freq0: maximum frequency to be modelled 38 | ! 39 | implicit none 40 | integer :: lnpt0, nlen0, jmin0, jmax0, max_freq0 41 | lnpt = lnpt0 42 | jmin = jmin0 43 | jmax = jmax0 44 | nlen = nlen0 45 | max_freq = max_freq0 46 | end subroutine set_params 47 | 48 | 49 | end module wavelet_param 50 | -------------------------------------------------------------------------------- /code.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "neic-finitefault", 4 | "organization": "U.S. Geological Survey", 5 | "description": "Wavelet based inversion for slip on a fault, used to generate Finite Fault products", 6 | "version": "1.1.0", 7 | "status": "Production", 8 | 9 | "permissions": { 10 | "usageType": "openSource", 11 | "licenses": [ 12 | { 13 | "name": "Public Domain, CC0-1.0", 14 | "URL": "https://code.usgs.gov/ghsc/neic/algorithms/neic-finitefault/-/raw/1.1.0/LICENSE.md" 15 | } 16 | ] 17 | }, 18 | 19 | "homepageURL": "https://code.usgs.gov/ghsc/neic/algorithms/neic-finitefault", 20 | "downloadURL": "https://code.usgs.gov/ghsc/neic/algorithms/neic-finitefault/-/archive/1.1.0/neic-finitefault-1.1.0.zip", 21 | "disclaimerURL": "https://code.usgs.gov/ghsc/neic/algorithms/neic-finitefault/-/raw/1.1.0/DISCLAIMER.md", 22 | "repositoryURL": "https://code.usgs.gov/ghsc/neic/algorithms/neic-finitefault.git", 23 | "vcs": "git", 24 | "laborHours": 350, 25 | 26 | "tags": ["usgs", "neic", "earthquake", "slip", "finitefault"], 27 | 28 | "languages": ["python", "fortran"], 29 | 30 | "contact": { 31 | "name": "Dara Goldberg", 32 | "email": "degoldberg@usgs.gov" 33 | }, 34 | 35 | "date": { 36 | "metadataLastUpdated": "2025-09-29" 37 | } 38 | } 39 | ] 40 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/constants.f95: -------------------------------------------------------------------------------- 1 | module constants 2 | 3 | implicit none 4 | integer, parameter :: max_dip_psources = 25, max_stk_psources = 25 5 | integer, parameter :: max_stk_subfaults = 50, max_dip_subfaults = 20 6 | integer, parameter :: max_rise_time_range = 25 7 | ! integer, parameter :: mpx = stk_psources * stk_subfaults, mpy = dip_psources * dip_subfaults 8 | integer, parameter :: max_subf = max_stk_subfaults * max_dip_subfaults 9 | integer, parameter :: max_psources = max_dip_psources * max_stk_psources, log2_pts = 10 10 | integer, parameter :: wave_pts = 2 ** log2_pts, wave_pts2 = 2 * wave_pts 11 | integer, parameter :: n_data = 10000, max_stations = 500 12 | integer, parameter :: max_seg = 30, max_subfaults = 1000, max_subfaults2 = 5000 13 | integer, parameter :: npuse = 1 + wave_pts/2, block_stg = npuse * 130 14 | integer, parameter :: block_far = 256 * 1024, ltde = 320000 15 | real*8, parameter :: pi = 4.d0*atan(1.d0), twopi = 2.d0 * pi 16 | real*8, parameter :: dpi = pi / 180.d0 17 | real, parameter :: pi_0 = 4.0*atan(1.0), twopi_0 = 2.0 * pi_0, dpi_0 = pi_0 / 180.0 18 | ! maximum layer, distances, and time samples 19 | ! maximum size of green's function (nnx*nny) 20 | integer, parameter :: nlay = 50, ndis = 1100, nt = 1025 21 | integer, parameter :: nny = 310 22 | 23 | end module constants 24 | -------------------------------------------------------------------------------- /examples/Multisegment_Example/segments_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "rise_time": { 3 | "delta_rise": 1.5, 4 | "min_rise": 1.5, 5 | "windows": 10 6 | }, 7 | "segments": [ 8 | { 9 | "delay_segment": 0, 10 | "delta_dip": 15, 11 | "delta_strike": 15, 12 | "dip": 16, 13 | "dip_subfaults": 5, 14 | "hyp_dip": 5, 15 | "hyp_stk": 9, 16 | "max_vel": 3.0, 17 | "min_vel": 1.8, 18 | "neighbours": [], 19 | "rake": 109, 20 | "rupture_vel": 2.5, 21 | "stk_subfaults": 23, 22 | "strike": 6.6 23 | }, 24 | { 25 | "delay_segment": 0, 26 | "delta_dip": 15, 27 | "delta_strike": 15, 28 | "dip": 22, 29 | "dip_subfaults": 4, 30 | "hypocenter": {"lon": -71.67, "lat": -31.57, "depth": 22.4}, 31 | "hyp_dip": -1, 32 | "hyp_stk": 9, 33 | "neighbours": [], 34 | "rake": 109, 35 | "rupture_vel": 2.5, 36 | "stk_subfaults": 23, 37 | "strike": 6.6 38 | } 39 | ], 40 | "connections": [ 41 | { 42 | "segment1": 1, 43 | "segment2": 2, 44 | "segment1_subfault": [12,6], 45 | "segment2_subfault": [12,1] 46 | } 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/NP1/multisegments_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "rise_time": { 3 | "delta_rise": 1.5, 4 | "min_rise": 1.5, 5 | "windows": 10 6 | }, 7 | "segments": [ 8 | { 9 | "delay_segment": 0, 10 | "delta_dip": 15, 11 | "delta_strike": 15, 12 | "dip": 16, 13 | "dip_subfaults": 5, 14 | "hyp_dip": 5, 15 | "hyp_stk": 9, 16 | "max_vel": 3.0, 17 | "min_vel": 1.8, 18 | "neighbours": [], 19 | "rake": 109, 20 | "rupture_vel": 2.5, 21 | "stk_subfaults": 23, 22 | "strike": 6.6 23 | }, 24 | { 25 | "delay_segment": 0, 26 | "delta_dip": 15, 27 | "delta_strike": 15, 28 | "dip": 22, 29 | "dip_subfaults": 4, 30 | "hypocenter": {"lon": -71.67, "lat": -31.57, "depth": 22.4}, 31 | "hyp_dip": -1, 32 | "hyp_stk": 9, 33 | "neighbours": [], 34 | "rake": 109, 35 | "rupture_vel": 2.5, 36 | "stk_subfaults": 23, 37 | "strike": 6.6 38 | } 39 | ], 40 | "connections": [ 41 | { 42 | "segment1": 1, 43 | "segment2": 2, 44 | "segment1_subfault": [12,6], 45 | "segment2_subfault": [12,1] 46 | } 47 | ] 48 | } 49 | -------------------------------------------------------------------------------- /fortran_code/info/after.txt: -------------------------------------------------------------------------------- 1 | PDE-Q 2008 06 13 234346.14 39.12 140.68 10 6.80 MwGS .. . ....... 2 | PDE-Q 2008 06 14 002012.42 38.96 140.48 10 5.50 mb GS .. . ....... 3 | PDE-Q 2008 06 14 005243.47 39.16 140.77 10 4.70 mb GS .. . ....... 4 | PDE-Q 2008 06 14 010017.24 39.11 140.75 10 4.70 mb GS .. . ....... 5 | PDE-Q 2008 06 14 013949.13 39.13 140.80 10 4.60 mb GS .. . ....... 6 | PDE-Q 2008 06 14 023518.08 39.06 140.65 10 4.70 mb GS .. . ....... 7 | PDE-Q 2008 06 14 031032.88 39.13 140.74 10 4.80 mb GS .. . ....... 8 | PDE-Q 2008 06 14 031405.17 38.97 140.74 10 4.80 mb GS .. . ....... 9 | PDE-Q 2008 06 14 032734.30 39.19 140.75 10 5.00 mb GS .. . ....... 10 | PDE-Q 2008 06 14 041048.97 39.13 140.68 10 4.60 mb GS .. . ....... 11 | PDE-Q 2008 06 14 053908.58 39.32 140.73 10 4.50 mb GS .. . ....... 12 | PDE-Q 2008 06 14 083410.38 39.17 140.79 10 4.50 mb GS .. . ....... 13 | PDE-Q 2008 06 14 101157.41 38.94 140.71 10 4.70 mb GS .. . ....... 14 | PDE-Q 2008 06 14 124830.00 39.28 140.61 10 4.70 15 | PDE-Q 2008 06 14 144233.00 39.03 140.75 10 5.10 16 | PDE-Q 2008 06 14 172927.00 39.12 140.88 10 4.40 17 | PDE-Q 2008 06 14 182922.00 39.22 140.74 10 4.50 18 | PDE-Q 2008 06 14 184737.00 39.22 140.78 10 4.60 19 | PDE-Q 2008 06 15 033002.00 39.17 140.87 10 4.60 20 | PDE-Q 2008 06 16 141439.00 39.08 140.61 10 5.10 21 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/src/run_forward.f95: -------------------------------------------------------------------------------- 1 | program run_forward 2 | 3 | 4 | use constants, only : max_seg, nt1, nnxy 5 | use model_parameters, only : get_faults_data, slip0, rake0, rupt_time0, tl0, tr0, write_model 6 | use modelling_inputs, only : get_annealing_param 7 | use get_stations_data, only : get_data 8 | use retrieve_gf, only : get_gf 9 | use save_forward, only : write_forward 10 | use static_data, only : initial_gnss 11 | implicit none 12 | integer i 13 | character(len=10) :: input 14 | logical :: static, strong, cgnss, body, surf, dart 15 | 16 | static = .False. 17 | strong = .False. 18 | cgnss = .False. 19 | body = .False. 20 | surf = .False. 21 | dart = .False. 22 | do i = 1, iargc() 23 | call getarg(i, input) 24 | input = trim(input) 25 | if (input .eq.'gnss') static = .True. 26 | if (input .eq.'strong') strong = .True. 27 | if (input .eq.'cgnss') cgnss = .True. 28 | if (input .eq.'body') body = .True. 29 | if (input .eq.'surf') surf = .True. 30 | if (input .eq.'dart') dart = .True. 31 | end do 32 | call get_annealing_param() 33 | call get_faults_data() 34 | call get_gf(strong, cgnss, body, surf, dart) 35 | call get_data(strong, cgnss, body, surf, dart) 36 | call write_forward(slip0, rake0, rupt_time0, tl0, tr0, strong, cgnss, body, surf, dart) 37 | if (static) call initial_gnss(slip0, rake0) 38 | call write_model(slip0, rake0, rupt_time0, tl0, tr0) 39 | 40 | 41 | end program run_forward 42 | -------------------------------------------------------------------------------- /src/test/plot_maps_test.py: -------------------------------------------------------------------------------- 1 | from tempfile import mkdtemp 2 | 3 | import cartopy.crs as ccrs # type:ignore 4 | import cartopy.feature as cfeature # type:ignore 5 | import matplotlib.pyplot as plt 6 | import numpy as np 7 | 8 | from ffm.plot_maps import plot_borders, plot_map, set_map_cartopy 9 | 10 | 11 | def test_plot_borders(): 12 | ax = plt.axes(projection=ccrs.PlateCarree()) 13 | ax = set_map_cartopy(ax, [46, 50, 10, 13], cfeature.OCEAN, cfeature.BORDERS) 14 | updated_ax = plot_borders( 15 | ax, 16 | [ 17 | np.array([[46.909, 48.359], [46.909, 48.359]]), 18 | np.array([[47.217, 49.062], [47.217, 49.062]]), 19 | ], 20 | [ 21 | np.array([[11.727, 12.650], [12.650, 11.727]]), 22 | np.array([[10.022, 11.317], [11.317, 10.022]]), 23 | ], 24 | transform=None, 25 | ) 26 | 27 | 28 | def test_set_map_cartopy(): 29 | ax = plt.axes(projection=ccrs.PlateCarree()) 30 | margins = [11.5, 21.7, 44.1, 49.7] 31 | updated_ax = set_map_cartopy(ax, margins, cfeature.RIVERS, cfeature.BORDERS) 32 | 33 | 34 | def test_plot_map(): 35 | ax = plt.axes(projection=ccrs.PlateCarree()) 36 | ax = set_map_cartopy(ax, [-119, -116, 33, 34], cfeature.OCEAN, cfeature.BORDERS) 37 | x = np.linspace(-118.5, -117.5, 3) 38 | y = np.linspace(33.6, 33.8, 3) 39 | X, Y = np.meshgrid(x, y) 40 | Z = [[[1, 2, 3], [-1, 0, 1], [20, 11, -3]]] 41 | updated_ax = plot_map( 42 | ax, 43 | np.array([Y]), 44 | np.array([X]), 45 | Z, 46 | transform=None, 47 | ) 48 | -------------------------------------------------------------------------------- /src/test/write_KML_test.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | import shutil 3 | import tempfile 4 | 5 | from ffm import get_outputs 6 | from ffm.fault_plane import point_sources_param 7 | from ffm.write_KML import PlotMap_KML 8 | 9 | from .testutils import END_TO_END_DIR, RESULTS_DIR, get_segments_data, get_tensor_info 10 | 11 | SEGMENTS = get_segments_data() 12 | TENSOR = get_tensor_info() 13 | 14 | 15 | def test_write_KML(): 16 | tempdir = pathlib.Path(tempfile.mkdtemp()) 17 | try: 18 | shutil.copyfile(RESULTS_DIR / "NP1" / "Solution.txt", tempdir / "Solution.txt") 19 | point_sources = point_sources_param( 20 | SEGMENTS["segments"], 21 | TENSOR, 22 | SEGMENTS["rise_time"], 23 | ) 24 | solution = get_outputs.read_solution_static_format( 25 | SEGMENTS["segments"], tempdir 26 | ) 27 | PlotMap_KML( 28 | TENSOR, 29 | SEGMENTS["segments"], 30 | point_sources, 31 | solution, 32 | { 33 | "trench_graphics": pathlib.Path(__file__).parent.parent.parent 34 | / "fortran_code" 35 | / "tectonicplates" 36 | / "PB2002_plates" 37 | }, 38 | evID="20003k7a", 39 | directory=tempdir, 40 | ) 41 | # TODO: add test data to check against; check exists for now 42 | assert (tempdir / "20003k7a.kml").exists() 43 | assert (tempdir / "Map_kml.png").exists() 44 | assert (tempdir / "Map_kml.ps").exists() 45 | finally: 46 | shutil.rmtree(tempdir) 47 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/run_modelling_save.f95: -------------------------------------------------------------------------------- 1 | program run_modelling 2 | 3 | 4 | use constants, only : max_seg, nt1, nnxy 5 | use model_parameters, only : get_faults_data, get_model_space, get_special_boundaries, subfault_positions, & 6 | & write_model 7 | use modelling_inputs, only : get_annealing_param, n_iter, io_re, cooling_rate, t_stop, t_mid, t0 8 | use get_stations_data, only : get_data 9 | use retrieve_gf, only : get_gf 10 | use save_forward, only : write_forward 11 | use rise_time, only : get_source_fun 12 | use annealing, only : initial_model, initial_regularization, annealing_iter 13 | implicit none 14 | integer :: io_data2, i 15 | real :: dd(nnxy, max_seg), aa(nnxy, max_seg), tt(nnxy, max_seg), tl(nnxy, max_seg) 16 | real :: tr(nnxy, max_seg) 17 | real :: er, t 18 | 19 | io_data2 = 3 20 | call get_annealing_param() 21 | call get_faults_data() 22 | call get_model_space() 23 | call get_special_boundaries() 24 | call subfault_positions() 25 | call get_gf(io_data2) 26 | call get_data(io_data2) 27 | call get_source_fun() 28 | call initial_model(dd, aa, tt, tl, tr) 29 | call initial_regularization(dd, aa, tt, tl, tr) 30 | t = t_mid 31 | if (io_re.eq.0) t=t0 32 | do i=1, n_iter 33 | call annealing_iter(dd, aa, tt, tl, tr, er, t) 34 | write(*,*)'iter: ', i 35 | if (t.lt.t_stop) then 36 | t=t*0.995 37 | else 38 | t=t*cooling_rate 39 | endif 40 | enddo 41 | call write_forward(dd, aa, tt, tl, tr, io_data2) 42 | call write_model(dd, aa, tt, tl, tr) 43 | 44 | 45 | end program run_modelling 46 | 47 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/docs/src/run_modelling_save.f95: -------------------------------------------------------------------------------- 1 | program run_modelling 2 | 3 | 4 | use constants, only : max_seg, nt1, nnxy 5 | use model_parameters, only : get_faults_data, get_model_space, get_special_boundaries, subfault_positions, & 6 | & write_model 7 | use modelling_inputs, only : get_annealing_param, n_iter, io_re, cooling_rate, t_stop, t_mid, t0 8 | use get_stations_data, only : get_data 9 | use retrieve_gf, only : get_gf 10 | use save_forward, only : write_forward 11 | use rise_time, only : get_source_fun 12 | use annealing, only : initial_model, initial_regularization, annealing_iter 13 | implicit none 14 | integer :: io_data2, i 15 | real :: dd(nnxy, max_seg), aa(nnxy, max_seg), tt(nnxy, max_seg), tl(nnxy, max_seg) 16 | real :: tr(nnxy, max_seg) 17 | real :: er, t 18 | 19 | io_data2 = 3 20 | call get_annealing_param() 21 | call get_faults_data() 22 | call get_model_space() 23 | call get_special_boundaries() 24 | call subfault_positions() 25 | call get_gf(io_data2) 26 | call get_data(io_data2) 27 | call get_source_fun() 28 | call initial_model(dd, aa, tt, tl, tr) 29 | call initial_regularization(dd, aa, tt, tl, tr) 30 | t = t_mid 31 | if (io_re.eq.0) t=t0 32 | do i=1, n_iter 33 | call annealing_iter(dd, aa, tt, tl, tr, er, t) 34 | write(*,*)'iter: ', i 35 | if (t.lt.t_stop) then 36 | t=t*0.995 37 | else 38 | t=t*cooling_rate 39 | endif 40 | enddo 41 | call write_forward(dd, aa, tt, tl, tr, io_data2) 42 | call write_model(dd, aa, tt, tl, tr) 43 | 44 | 45 | end program run_modelling 46 | 47 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/radiation_sf.f95: -------------------------------------------------------------------------------- 1 | ! 2 | ! This program is modified from Lupei Zhu's code 3 | ! 4 | !/****************************************************** 5 | !horizontal radiation coefficients of a single-force 6 | ! In: 7 | ! stk: strike_of_obs w.r.t to strike of the force 8 | ! measured clockwise (az_obs - az_sr) 9 | ! dip: dip of the force, from horizontal down 10 | ! 11 | ! algorithm: 12 | ! vertical (UP) = f3*Z0 + (f1*cos(theta)+f2*sin(theta))*Z1 13 | ! radial (OUT) = f3*R0 + (f1*cos(theta)+f2*sin(theta))*R1 14 | ! tangen (CW) = - (f1*sin(theta)-f2*cos(theta))*T1 15 | ! where F = (0,cos(dip),-sin(dip)) 16 | !******************************************************/ 17 | !void sf_radiat(float stk,float dip,float rad[4][3]) { 18 | ! float sstk,sdip,cstk,cdip; 19 | ! stk*=DEG2RAD; dip*=DEG2RAD; 20 | ! sstk=sin(stk);cstk=cos(stk); 21 | ! sdip=sin(dip);cdip=cos(dip); 22 | ! rad[0][0]=-sdip; 23 | ! rad[0][1]=rad[0][0]; 24 | ! rad[0][2]=0.; 25 | ! rad[1][0]=cdip*cstk; 26 | ! rad[1][1]=rad[1][0]; 27 | ! rad[1][2]=cdip*sstk; 28 | !} 29 | module radiation 30 | 31 | 32 | contains 33 | 34 | 35 | subroutine sf_radiat(az,stk,dip,a) 36 | ! 37 | ! Args: 38 | ! az: source-station azimuth 39 | ! stk: strike of point source 40 | ! dip: dip of point source 41 | ! a: radiation pattern 42 | ! 43 | real stk, dip, az,a(3),const 44 | real sstk, ddip 45 | parameter(const=3.14159265358979/180.0) 46 | sstk=(az-stk)*const 47 | ddip=ddip*const 48 | a(1)=-sin(ddip) 49 | a(2)=cos(ddip)*sin(sstk) 50 | a(3)=cos(ddip)*cos(sstk) 51 | end subroutine sf_radiat 52 | 53 | 54 | end module radiation 55 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/bessel2.f95: -------------------------------------------------------------------------------- 1 | module bessel2 2 | 3 | 4 | use constants, only : pi, twopi, ndis 5 | use retrieve_gf, only : dist_max, lnpt, dt 6 | implicit none 7 | integer, parameter :: dmax=2000, fmax=500000 8 | real, allocatable :: aj0s(:, :), aj1s(:, :), aj2s(:, :) 9 | 10 | 11 | contains 12 | 13 | 14 | subroutine load_bessel(x,nd_max) 15 | ! 16 | ! Args: 17 | ! x: range of source-station distances 18 | ! nd_max: amount of source-station distances 19 | ! 20 | implicit none 21 | real :: aj0, aj1, aj2, x(ndis) 22 | real :: k, dk, z, pmax, omega, dw 23 | integer :: i, n, ix, kc, nfft2, nfft, nd_max 24 | allocate(aj0s(dmax, fmax)) 25 | allocate(aj1s(dmax, fmax)) 26 | allocate(aj2s(dmax, fmax)) 27 | write(0,*)'Load bessel functions to memory...' 28 | dk = 0.2 29 | dk = dk*pi/dist_max 30 | if(dk.gt.0.03)dk=0.03 31 | k=0.5*dk 32 | kc = 30 / 0.5 33 | nfft = 2 ** lnpt 34 | nfft2 = nfft 35 | dw = twopi/(nfft*dt) 36 | omega=(nfft2-1)*dw 37 | pmax = 1.11 38 | n=(sqrt(kc*kc+(pmax*omega)**2)-k)/dk 39 | write(*,*)"maximum n is ",n 40 | if(n.gt.fmax)then 41 | write(*,*)n,fmax 42 | write(*,*)"You might want to increase the size of nkk_max" 43 | n=fmax 44 | endif 45 | do i=1,n 46 | do ix=1,nd_max 47 | z=x(ix)*k 48 | call besselFn(z,aj0,aj1,aj2) 49 | aj0s(ix,i)=aj0 50 | aj1s(ix,i)=aj1 51 | aj2s(ix,i)=aj2 52 | enddo 53 | k=k+dk 54 | enddo 55 | 56 | end subroutine load_bessel 57 | 58 | subroutine deallocate_bessel() 59 | deallocate(aj0s) 60 | deallocate(aj1s) 61 | deallocate(aj2s) 62 | end subroutine deallocate_bessel 63 | 64 | 65 | end module bessel2 66 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | ARG FROM_IMAGE=code.usgs.gov:5001/devops/images/usgs/ubuntu 2 | 3 | ### ubuntu packages 4 | FROM ${FROM_IMAGE} as packages 5 | USER root 6 | 7 | RUN mkdir /neic-finitefault 8 | WORKDIR /neic-finitefault 9 | COPY install.d /neic-finitefault/install.d 10 | RUN apt install -y \ 11 | cmake \ 12 | curl \ 13 | gcc \ 14 | gfortran \ 15 | && apt clean; 16 | 17 | ### miniforge 18 | FROM packages as ffm-python 19 | 20 | WORKDIR /root 21 | SHELL ["/bin/bash", "-i", "-c"] 22 | RUN bash /neic-finitefault/install.d/miniforge.sh 23 | ENV PATH=/root/miniforge/bin:$PATH 24 | RUN bash /neic-finitefault/install.d/ff-env.sh /neic-finitefault 25 | RUN echo "conda activate ff-env" >> /root/.bashrc 26 | COPY pyproject.toml /neic-finitefault/pyproject.toml 27 | 28 | ### ffm-fortran 29 | FROM ffm-python as ffm-fortran 30 | 31 | WORKDIR /neic-finitefault 32 | COPY fortran_code /neic-finitefault/fortran_code 33 | RUN install.d/ffm.sh /neic-finitefault 34 | RUN chmod 777 -R /neic-finitefault 35 | 36 | ### data dependencies 37 | FROM ffm-fortran as ffm-dependencies 38 | 39 | RUN apt install -y git 40 | RUN bash /neic-finitefault/install.d/data_dependencies.sh /neic-finitefault 41 | COPY pb2002_boundaries.gmt /neic-finitefault/pb2002_boundaries.gmt 42 | # cleanup 43 | RUN apt remove -y git 44 | RUN rm -rf /neic-finitefault/install.d 45 | 46 | ### add python source code and install 47 | FROM ffm-dependencies as ffm 48 | ARG RUN_ALL 49 | ARG CI_REGISTRY 50 | ENV RUN_ALL "${RUN_ALL:-True}" 51 | ENV CI_REGISTRY "${CI_REGISTRY}" 52 | 53 | 54 | COPY src /neic-finitefault/src 55 | RUN pip install -e . 56 | ENV PATH /root/miniforge/envs/ff-env/bin:$PATH 57 | 58 | ## by default the command is to run the test 59 | CMD ["conda", "run", "--no-capture-output", "-n", "ff-env", "poe", "end_to_end_test"] 60 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/channels_body.txt: -------------------------------------------------------------------------------- 1 | 30 30 30 0 0 0 0 0 0 1.1e+20 2 | 3 10 0.2 3 | 2015916225432.0 4 | 19 5 | 1 FAR GDSN MPG MPGBHZ.DAT 40.77 29.69 5.11 -52.64 15.50 1.0 0 0 0 0 1 0 6 | 2 FAR GDSN MACI MACIBHZ.DAT 79.41 47.27 28.25 -16.51 10.16 1.0 0 0 0 0 1 0 7 | 3 FAR GDSN RCBR RCBRBHZ.DAT 42.16 59.96 -5.83 -35.90 15.31 1.0 0 0 0 0 1 0 8 | 4 FAR GDSN KOWA KOWABHZ.DAT 79.42 65.58 14.50 -4.01 10.16 1.0 0 0 0 0 1 0 9 | 5 FAR GDSN TSUM TSUMBHZ.DAT 79.60 106.20 -19.20 17.58 10.14 1.0 0 0 0 0 1 0 10 | 6 FAR GDSN SUR SURBHZ.DAT 75.72 119.44 -32.38 20.81 10.67 1.0 0 0 0 0 1 0 11 | 7 FAR GDSN CRZF CRZFBHZ.DAT 87.04 144.92 -46.43 51.86 9.05 1.0 0 0 0 0 1 0 12 | 8 FAR GDSN SNAA SNAABHZ.DAT 53.66 158.64 -71.67 -2.84 13.73 1.0 0 0 0 0 1 0 13 | 9 FAR GDSN BRAL BRALBHZ.DAT 64.13 345.45 31.17 -87.05 12.27 1.0 0 0 0 0 1 0 14 | 10 FAR GDSN GOGA GOGABHZ.DAT 65.64 349.25 33.41 -83.47 12.06 1.0 0 0 0 0 1 0 15 | 11 FAR GDSN MPG MPGBHZ.DAT 40.77 29.69 5.11 -52.64 28.82 4.0 0 0 0 2 1 0 16 | 12 FAR GDSN MACI MACIBHZ.DAT 79.41 47.27 28.25 -16.51 20.07 4.0 0 0 0 2 1 0 17 | 13 FAR GDSN RCBR RCBRBHZ.DAT 42.16 59.96 -5.83 -35.90 28.55 4.0 0 0 0 2 1 0 18 | 14 FAR GDSN KOWA KOWABHZ.DAT 79.42 65.58 14.50 -4.01 20.06 4.0 0 0 0 2 1 0 19 | 15 FAR GDSN TSUM TSUMBHZ.DAT 79.60 106.20 -19.20 17.58 20.02 4.0 0 0 0 2 1 0 20 | 16 FAR GDSN SUR SURBHZ.DAT 75.72 119.44 -32.38 20.81 20.96 4.0 0 0 0 2 1 0 21 | 17 FAR GDSN CRZF CRZFBHZ.DAT 87.04 144.92 -46.43 51.86 18.23 4.0 0 0 0 2 1 0 22 | 18 FAR GDSN SNAA SNAABHZ.DAT 53.66 158.64 -71.67 -2.84 26.03 4.0 0 0 0 2 1 0 23 | 19 FAR GDSN GOGA GOGABHZ.DAT 65.64 349.25 33.41 -83.47 23.27 4.0 0 0 0 2 1 0 24 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["setuptools >= 72.2.0"] 3 | build-backend = "setuptools.build_meta" 4 | 5 | [tool.isort] 6 | profile = "black" 7 | 8 | [project] 9 | authors = [ 10 | {name = "Pablo Koch", email = "pkoch@csn.uchile.cl"}, 11 | {name = "Dara Goldberg", email = "degoldberg@usgs.gov"}, 12 | {name = "Heather Hunsinger", email = "hhunsinger@usgs.gov"}, 13 | {name = "Diego Melgar", email = "dmelgarm@uoregon.edu"}, 14 | {name = "Sebastian Riquelme", email = "sebastian@dgf.uchile.cl"}, 15 | {name = "William Yeck", email = "wyeck@usgs.gov"}, 16 | {name = "Kirstie Haynie", email = "khaynie@usgs.gov"} 17 | ] 18 | maintainers = [ 19 | {name = "Dara Goldberg", email = "degoldberg@usgs.gov"}, 20 | ] 21 | description = "Wavelet based inversion for slip on a fault, used to generate Finite Fault products" 22 | keywords = ["usgs", "neic", "earthquake", "slip", "finitefault"] 23 | license = {file = "LICENSE.md"} 24 | name = "neic-finitefault" 25 | requires-python = ">=3.10" 26 | version = "1.1.0" 27 | 28 | [project.urls] 29 | Repository = "https://code.usgs.gov/ghsc/neic/algorithms/neic-finitefault" 30 | 31 | [tool.setuptools.packages.find] 32 | where = ["src"] 33 | 34 | [project.scripts] 35 | "ffm" = "ffm.ffm_admin.ffm:app" 36 | 37 | [tool.poe.tasks] 38 | lint = [ 39 | { shell = "black --check src" }, 40 | { shell = "isort --check src/ffm" }, 41 | { shell = "mypy src/ffm" } 42 | ] 43 | test = [ 44 | { shell = "pytest src/test --cov=src/ffm" }, 45 | { shell = "coverage xml" }, 46 | { shell = "coverage html" } 47 | ] 48 | end_to_end_test = [ 49 | { shell = "safety check --ignore=51668" }, 50 | { shell = "pytest src/test --cov=src/ffm" }, 51 | { shell = "black --check src" }, 52 | { shell = "isort --check src/ffm" }, 53 | { shell = "mypy src/ffm" } 54 | ] 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/test/data_acquisition_test.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | import shutil 3 | import tempfile 4 | from glob import glob 5 | from unittest import mock 6 | 7 | from obspy import UTCDateTime # type:ignore 8 | from obspy.core.inventory.channel import Channel # type:ignore 9 | 10 | from .data import MockObspyClient 11 | 12 | 13 | @mock.patch("obspy.clients.fdsn.Client", return_value=MockObspyClient) 14 | @mock.patch("obspy.clients.iris.Client", return_value=MockObspyClient) 15 | def test_acquisition(mock_iris, mock_fdsn): 16 | from ffm.data_acquisition import acquisition 17 | 18 | tempdir = tempfile.mkdtemp() 19 | try: 20 | event_time = UTCDateTime("2023-07-02T09:29:49Z") 21 | lat_ep = 33.826 22 | lon_ep = -118.881 23 | depth = 10.7 24 | acquisition( 25 | event_time, 26 | lat_ep, 27 | lon_ep, 28 | depth, 29 | ["strong", "body"], 30 | waveform_directory=pathlib.Path(tempdir), 31 | ) 32 | num_files = glob(f"{tempdir}/*") 33 | assert len(num_files) == 5 34 | finally: 35 | print("Cleaning up test directory.") 36 | shutil.rmtree(tempdir) 37 | 38 | 39 | def test_get_channel_information_manual(): 40 | from ffm.data_acquisition import __get_channel_information_manual 41 | 42 | channel = Channel("code", "loc", 56, 78, 10, 12) 43 | channel.azimuth = 20 44 | channel.dip = 30 45 | 46 | metadata = __get_channel_information_manual( 47 | channel=channel, lat_ep=12, lon_ep=34, depth=10000 48 | ) 49 | assert metadata == { 50 | "stla": 56.0, 51 | "stlo": 78.0, 52 | "khole": "loc", 53 | "cmpaz": 20.0, 54 | "cmpinc": 120.0, 55 | "evla": 12, 56 | "evlo": 34, 57 | "evdp": 10000, 58 | } 59 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | License 2 | ======= 3 | 4 | Unless otherwise noted, This project is in the public domain in the United 5 | States because it contains materials that originally came from the United 6 | States Geological Survey, an agency of the United States Department of 7 | Interior. For more information, see the official USGS copyright policy at 8 | https://www.usgs.gov/information-policies-and-instructions/copyrights-and-credits 9 | 10 | Additionally, we waive copyright and related rights in the work 11 | worldwide through the CC0 1.0 Universal public domain dedication. 12 | 13 | 14 | CC0 1.0 Universal Summary 15 | ------------------------- 16 | 17 | This is a human-readable summary of the 18 | [Legal Code (read the full text)][1]. 19 | 20 | 21 | ### No Copyright 22 | 23 | The person who associated a work with this deed has dedicated the work to 24 | the public domain by waiving all of his or her rights to the work worldwide 25 | under copyright law, including all related and neighboring rights, to the 26 | extent allowed by law. 27 | 28 | You can copy, modify, distribute and perform the work, even for commercial 29 | purposes, all without asking permission. 30 | 31 | 32 | ### Other Information 33 | 34 | In no way are the patent or trademark rights of any person affected by CC0, 35 | nor are the rights that other persons may have in the work or in how the 36 | work is used, such as publicity or privacy rights. 37 | 38 | Unless expressly stated otherwise, the person who associated a work with 39 | this deed makes no warranties about the work, and disclaims liability for 40 | all uses of the work, to the fullest extent permitted by applicable law. 41 | When using or citing the work, you should not imply endorsement by the 42 | author or the affirmer. 43 | 44 | 45 | 46 | [1]: https://creativecommons.org/publicdomain/zero/1.0/legalcode 47 | -------------------------------------------------------------------------------- /src/test/data/MockObspyClient.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | import trace 3 | from typing import Literal 4 | 5 | from obspy import Stream, Trace 6 | from obspy.core.inventory import Inventory, read_inventory 7 | 8 | DATA_DIR = pathlib.Path(__file__).parent 9 | 10 | 11 | def get_test_inventory(data: Literal["strong", "body"]) -> Inventory: 12 | """Get a test inventory""" 13 | if data == "strong": 14 | return read_inventory(DATA_DIR / "strongmotion_iris_inventory.xml") 15 | elif data == "body": 16 | return read_inventory(DATA_DIR / "strongmotion_iris_inventory.xml") 17 | else: 18 | raise ValueError(f"'{data}' is not a valid option for getting a test inventory") 19 | 20 | 21 | def get_test_waveforms(data: Literal["strong", "body"]) -> Stream: 22 | trace1 = Trace() 23 | if data == "strong": 24 | trace2 = Trace() 25 | return Stream(traces=[trace1, trace2]) 26 | elif data == "body": 27 | trace1.stats["channel"] = "BHZ" 28 | return Stream(traces=[trace1]) 29 | else: 30 | raise ValueError(f"'{data}' is not a valid option for getting a test inventory") 31 | 32 | 33 | class MockObspyClient(object): 34 | def __init__(*args, **kwargs) -> None: 35 | pass 36 | 37 | def get_stations(*args, **kwargs): 38 | if kwargs["channel"].startswith("BH"): 39 | data = "body" 40 | else: 41 | data = "strong" 42 | return get_test_inventory(data=data) 43 | 44 | def get_waveforms(*args, **kwargs): 45 | chan = args[3] 46 | if chan.endswith("2"): 47 | data = "strong" 48 | else: 49 | data = "body" 50 | return get_test_waveforms(data) 51 | 52 | def sacpz(netwk, statn, loc_code, channel, t1, t2, filename): 53 | with open(filename, "w"): 54 | pass 55 | -------------------------------------------------------------------------------- /src/ffm/modulo_logs.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """Module for logger management 3 | """ 4 | 5 | 6 | import logging 7 | import pathlib 8 | from typing import Union 9 | 10 | 11 | def create_log(name: str, log_file: Union[pathlib.Path, str]) -> logging.Logger: 12 | """Create a log file with specified name and location 13 | 14 | :param name: The log name 15 | :type name: str 16 | :param log_file: The path to the log file 17 | :type log_file: Union[pathlib.Path, str] 18 | :return: The logger 19 | :rtype: logging.Logger 20 | """ 21 | logger = logging.getLogger(name) 22 | logger.setLevel(logging.INFO) 23 | handler = logging.FileHandler(log_file) 24 | handler.setLevel(logging.INFO) 25 | formatter = logging.Formatter( 26 | "%(asctime)s - %(filename)s - %(lineno)s - %(levelname)s - %(message)s" 27 | ) 28 | handler.setFormatter(formatter) 29 | logger.addHandler(handler) 30 | return logger 31 | 32 | 33 | def add_console_handler( 34 | log: logging.Logger, level: int = logging.INFO 35 | ) -> logging.Logger: 36 | """Add logging to the console 37 | 38 | :param log: The logger 39 | :type log: logging.Logger 40 | :param level: The log level, defaults to logging.INFO 41 | :type level: int, optional 42 | :return: The updated logger 43 | :rtype: logging.Logger 44 | """ 45 | ch = logging.StreamHandler() 46 | formatter = logging.Formatter("%(levelname)s - %(message)s") 47 | ch.setFormatter(formatter) 48 | ch.setLevel(level) 49 | log.addHandler(ch) 50 | return log 51 | 52 | 53 | def close_log(log: logging.Logger): 54 | """Create a log file with specified name and location 55 | 56 | :param log: The logger 57 | :type log: logging.Logger 58 | """ 59 | for i in list(log.handlers): 60 | log.removeHandler(i) 61 | i.flush() 62 | i.close() 63 | return 64 | -------------------------------------------------------------------------------- /src/test/plot_maps_NEIC_test.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | import shutil 3 | from tempfile import mkdtemp 4 | 5 | import cartopy.crs as ccrs # type:ignore 6 | import cartopy.feature as cfeature # type:ignore 7 | import matplotlib.pyplot as plt 8 | import numpy as np 9 | 10 | from ffm.plot_maps_NEIC import plot_borders, plot_map, set_map_cartopy 11 | 12 | 13 | def test_plot_borders(): 14 | tempdir = mkdtemp() 15 | try: 16 | tempfile = pathlib.Path(tempdir) / "test.png" 17 | ax = plt.axes(projection=ccrs.PlateCarree()) 18 | ax = set_map_cartopy( 19 | ax, [46, 50, 10, 13], cfeature.OCEAN, cfeature.BORDERS, directory=tempdir 20 | ) 21 | updated_ax = plot_borders( 22 | ax, 23 | [ 24 | np.array([[46.909, 48.359], [46.909, 48.359]]), 25 | np.array([[47.217, 49.062], [47.217, 49.062]]), 26 | ], 27 | [ 28 | np.array([[11.727, 12.650], [12.650, 11.727]]), 29 | np.array([[10.022, 11.317], [11.317, 10.022]]), 30 | ], 31 | transform=None, 32 | ) 33 | 34 | finally: 35 | print("Cleaning up test directory") 36 | shutil.rmtree(tempdir) 37 | 38 | 39 | def test_set_map_cartopy(): 40 | ax = plt.axes(projection=ccrs.PlateCarree()) 41 | margins = [11.5, 21.7, 44.1, 49.7] 42 | updated_ax = set_map_cartopy(ax, margins, cfeature.RIVERS, cfeature.BORDERS) 43 | 44 | 45 | def test_plot_map(): 46 | ax = plt.axes(projection=ccrs.PlateCarree()) 47 | ax = set_map_cartopy(ax, [-119, -116, 33, 34], cfeature.OCEAN, cfeature.BORDERS) 48 | x = np.linspace(-118.5, -117.5, 3) 49 | y = np.linspace(33.6, 33.8, 3) 50 | X, Y = np.meshgrid(x, y) 51 | Z = [[[1, 2, 3], [-1, 0, 1], [20, 11, -3]]] 52 | updated_ax = plot_map( 53 | ax, 54 | np.array([Y]), 55 | np.array([X]), 56 | Z, 57 | transform=None, 58 | ) 59 | -------------------------------------------------------------------------------- /src/test/data/end_to_end/results/channels_surf.txt: -------------------------------------------------------------------------------- 1 | 2015916225432.0 2 | -31.57 -71.67 22.4 2015 259 22 54 32 0 3 | 0.0 90.0 0.0 10 4.0 1.0e+26 4 | 4.0 4.0 10 1.0 0 5 | 19 19 6 | No STA Lat Lon M V H1 H2 Angle1 Angle2 Io_s Weight 7 | 1 MPG 5.110 -52.644 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 8 | 2 MACI 28.250 -16.508 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 9 | 3 RCBR -5.827 -35.901 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 10 | 4 KOWA 14.497 -4.014 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 11 | 5 TSUM -19.202 17.584 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 12 | 6 SUR -32.380 20.812 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 13 | 7 CRZF -46.430 51.861 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 14 | 8 SNAA -71.671 -2.838 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 15 | 9 BRAL 31.169 -87.051 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 16 | 10 GOGA 33.411 -83.467 31 1 0 0 0.00 0.00 1 1.00 1.00 1.00 0 17 | 11 MPG 5.110 -52.644 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 18 | 12 MACI 28.250 -16.508 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 19 | 13 RCBR -5.827 -35.901 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 20 | 14 KOWA 14.497 -4.014 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 21 | 15 TSUM -19.202 17.584 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 22 | 16 SUR -32.380 20.812 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 23 | 17 CRZF -46.430 51.861 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 24 | 18 SNAA -71.671 -2.838 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 25 | 19 GOGA 33.411 -83.467 31 0 1 0 90.00 0.00 1 1.00 1.00 1.00 0 26 | -------------------------------------------------------------------------------- /fortran_code/bin_inversion_gfortran_f95/Makefile: -------------------------------------------------------------------------------- 1 | MY_BIN=. 2 | 3 | modules = constants.o modelling_inputs.o model_parameters.o wavelet_param.o wavelets.o get_stations_data.o retrieve_surf_gf.o rad_pattern.o geodesics.o rise_time.o retrieve_gf.o save_forward.o 4 | modules2 = $(modules) static_data.o imagery_data.o misfit_eval.o regularization.o random_gen.o annealing.o annealing_static.o 5 | 6 | #Linux 7 | #F95= ifort -shared-intel -mcmodel=large -O2 -assume byterecl -p#-p -132 -shared-intel 8 | #F77= ifort -O3 -132 -assume byterecl 9 | F95= gfortran -O3 -fno-range-check -mcmodel=medium -g #-mavx2 -Wall -ftree-loop-vectorize -ftree-loop-distribution#-fno-omit-frame-pointer -ffpe-trap=overflow,invalid#-ffpe-trap=overflow -funroll-loops -fcheck=all 10 | F77= gfortran -O1 -fno-range-check -mcmodel=large -g -fbacktrace 11 | 12 | 13 | all: run_forward run_modelling green_tele clean 14 | 15 | 16 | run_forward: $(modules) static_data.o imagery_data.o run_forward.o 17 | $(F95) -o run_forward $(modules) static_data.o imagery_data.o run_forward.o 18 | 19 | run_modelling: $(modules2) ffm_methods.o run_modelling.o 20 | $(F95) -o run_modelling -fopenmp $(modules2) ffm_methods.o run_modelling.o #-fopenmp 21 | 22 | green_tele: bpfilter.o ddis.o green_tele.o 23 | $(F77) -o green_tele bpfilter.o ddis.o green_tele.o 24 | 25 | ffm_methods.mod: ffm_methods.o ffm_methods.f95 26 | $(F95) -fopenmp -c ffm_methods.f95 #-fopenmp 27 | 28 | annealing.mod: annealing.o annealing.f95 29 | $(F95) -fopenmp -c annealing.f95 #-fopenmp 30 | 31 | %.mod: %.o %.f95 32 | $(F95) -c $< 33 | 34 | 35 | bpfilter.o : bpfilter.f 36 | $(F77) -c bpfilter.f 37 | 38 | green_tele.o : green_tele.f 39 | $(F77) -c green_tele.f 40 | 41 | ddis.o : ddis.f 42 | $(F77) -c ddis.f 43 | 44 | ffm_methods.o: ffm_methods.f95 45 | $(F95) -fopenmp -c ffm_methods.f95 46 | 47 | annealing.o: annealing.f95 48 | $(F95) -fopenmp -c annealing.f95 49 | 50 | %.o: %.f95 51 | $(F95) -c $< 52 | 53 | 54 | clean: 55 | \rm -f *.o 56 | \rm -f *.mod 57 | -------------------------------------------------------------------------------- /fortran_code/rename_files.py: -------------------------------------------------------------------------------- 1 | import os 2 | import glob 3 | from shutil import move 4 | 5 | 6 | REPLACE_DICT = { 7 | 'Readlp.das': 'channels_body.txt', 8 | 'Obser.tele': 'waveforms_body.txt', 9 | 'Wave.tele': 'wavelets_body.txt', 10 | 'Weight': 'body_wave_weight.txt', 11 | 'instrumental_response': 'instrumental_response.txt', 12 | 'synm.tele': 'synthetics_body.txt', 13 | 'Readlp.inf_low': 'channels_surf.txt', 14 | 'Obser.str_low': 'waveforms_surf.txt', 15 | 'Wave.str_low': 'wavelets_surf.txt', 16 | 'synm.str_low': 'synthetics_surf.txt', 17 | 'Readlp.inf': 'channels_strong.txt', 18 | 'Obser.str': 'waveforms_strong.txt', 19 | 'Wave.str': 'wavelets_strong.txt', 20 | 'synm.str': 'synthetics_strong.txt', 21 | 'Readlp.cgnss': 'channels_cgnss.txt', 22 | 'Obser.cgnss': 'waveforms_cgnss.txt', 23 | 'Wave.cgnss': 'wavelets_cgnss.txt', 24 | 'synm.cgnss': 'synthetics_cgnss.txt', 25 | 'filter_tele': 'filter_tele.txt', 26 | 'filter_strong': 'filter_strong.txt', 27 | 'Readlp.static': 'static_data.txt', 28 | 'synm.static': 'static_synthetics.txt', 29 | 'Fault.time': 'fault&rise_time.txt', 30 | 'Fault.pos': 'point_sources.txt', 31 | 'Niu_model': 'shear_model.txt', 32 | 'vel_model': 'vel_model.txt', 33 | 'Green_static_subfault': 'Green_static_subfault.txt', 34 | 'HEAT.IN': 'annealing.txt', 35 | 'bound.in': 'model_space.txt', 36 | 'bound.special': 'special_model_space.txt', 37 | 'continue': 'regularization_borders.txt', 38 | 'continue.special': 'special_regularization_borders.txt', 39 | 'Green.in': 'Green_strong.txt', 40 | 'Green_cgnss.in': 'Green_cgnss.txt' 41 | } 42 | 43 | 44 | def replace(): 45 | """ 46 | """ 47 | files = os.listdir() 48 | files = [v for v in files if os.path.isfile(v)] 49 | for file in files: 50 | if file in REPLACE_DICT: 51 | move(file, REPLACE_DICT[file]) 52 | 53 | 54 | if __name__ == '__main__': 55 | replace() 56 | -------------------------------------------------------------------------------- /multi_segment_example/model_space.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "max_center_slip": 7100, 4 | "max_left_slip": 7100, 5 | "max_lower_slip": 7100, 6 | "max_right_slip": 7100, 7 | "max_slip_delta": 7100, 8 | "max_upper_slip": 7100, 9 | "min_slip": 0, 10 | "rake_max": 108.46963419917267, 11 | "rake_min": 68.46963419917267, 12 | "rake_step": 21, 13 | "regularization": { 14 | "neighbour_down": {"segment": 3, "subfault": 1}, 15 | "neighbour_left": null, 16 | "neighbour_right": null, 17 | "neighbour_up": {"segment": 2, "subfault": 6} 18 | }, 19 | "slip_step": 51 20 | }, 21 | { 22 | "max_center_slip": 7100, 23 | "max_left_slip": 7100, 24 | "max_lower_slip": 7100, 25 | "max_right_slip": 7100, 26 | "max_slip_delta": 7100, 27 | "max_upper_slip": 7100, 28 | "min_slip": 0, 29 | "rake_max": 108.46963419917267, 30 | "rake_min": 68.46963419917267, 31 | "rake_step": 21, 32 | "regularization": { 33 | "neighbour_down": {"segment": 1, "subfault": 1}, 34 | "neighbour_left": null, 35 | "neighbour_right": null, 36 | "neighbour_up": null 37 | }, 38 | "slip_step": 51 39 | }, 40 | { 41 | "max_center_slip": 7100, 42 | "max_left_slip": 7100, 43 | "max_lower_slip": 7100, 44 | "max_right_slip": 7100, 45 | "max_slip_delta": 7100, 46 | "max_upper_slip": 7100, 47 | "min_slip": 0, 48 | "rake_max": 108.46963419917267, 49 | "rake_min": 68.46963419917267, 50 | "rake_step": 21, 51 | "regularization": { 52 | "neighbour_down": null, 53 | "neighbour_left": null, 54 | "neighbour_right": null, 55 | "neighbour_up": {"segment": 1, "subfault": 5} 56 | }, 57 | "slip_step": 51 58 | } 59 | ] 60 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/makefile: -------------------------------------------------------------------------------- 1 | ## If you want to change the size of GF bank, please just modify the size.h 2 | FFLAGS=-O 3 | MY_BIN=. 4 | F77=gfortran -ffixed-line-length-132 -mcmodel=medium -O2 -Wall -g#-fbacktrace -ffpe-trap=underflow,denormal 5 | # linux or Mac 6 | 7 | modules = constants.o retrieve_gf.o bessel2.o vel_model_data.o wave_travel.o fk_source.o haskell.o prop.o fk_kernel.o fk.o bessel.o $(SUBS) 8 | modules2 = constants.o retrieve_gf.o bessel2.o vel_model_data.o wave_travel.o layer.o fk_source.o haskell.o prop.o fk_kernel.o fk_openmp.o bessel.o $(SUBS) 9 | modules3 = constants.o retrieve_gf.o bessel2.o vel_model_data.o wave_travel.o layer.o fk_source.o st_haskell.o prop.o fk_st_kernel.o fk_static.o bessel.o $(SUBS) 10 | SUBS = fft.o Complex.o 11 | all: green_bank_openmp gf_static clean 12 | 13 | 14 | green_bank_fk: $(modules) green_bank_fk.o 15 | $(F77) -o $(MY_BIN)/green_bank_f95 $(modules) green_bank_fk.o 16 | 17 | green_bank_openmp: $(modules2) green_bank_fk_openmp.o 18 | $(F77) -fopenmp -o $(MY_BIN)/green_bank_openmp_f95 $(modules2) green_bank_fk_openmp.o 19 | 20 | gf_static: $(modules3) geodesics.o rad_pattern.o gf_static.o 21 | $(F77) -fopenmp -o $(MY_BIN)/gf_static_f95 $(modules3) geodesics.o rad_pattern.o gf_static.o 22 | 23 | 24 | fk_openmp.mod: fk_openmp.o fk_openmp.f95 25 | $(F77) -fopenmp -c fk_openmp.f95 26 | 27 | fk_static.mod: fk_static.o fk_static.f95 28 | $(F77) -fopenmp -c fk_static.f95 29 | 30 | layer.mod: layer.o layer.f95 31 | $(F77) -fopenmp -c layer.f95 32 | 33 | %.mod: %.o %.f95 34 | $(F77) -c $< 35 | 36 | 37 | fft.o: fft.c 38 | cc -c fft.c 39 | 40 | Complex.o: Complex.c Complex.h 41 | cc -c Complex.c 42 | 43 | bessel.o: bessel.f 44 | $(F77) -c bessel.f 45 | 46 | bessel.f: bessel.FF 47 | cpp -traditional-cpp $< > $@ 48 | 49 | fk_openmp.o: fk_openmp.f95 50 | $(F77) -fopenmp -c fk_openmp.f95 51 | 52 | fk_static.o: fk_static.f95 53 | $(F77) -fopenmp -c fk_static.f95 54 | 55 | layer.o: layer.f95 56 | $(F77) -fopenmp -c layer.f95 57 | 58 | %.o: %.f95 59 | $(F77) -c $< 60 | 61 | clean: 62 | rm -f *.mod 63 | rm -f *.o 64 | -------------------------------------------------------------------------------- /multi_segment_example/segments_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "rise_time": { 3 | "delta_rise": 1.5, 4 | "min_rise": 1.5, 5 | "windows": 12 6 | }, 7 | "segments": [ 8 | { 9 | "delay_segment": 0, 10 | "delta_dip": 16.6, 11 | "delta_strike": 25, 12 | "dip": 15, 13 | "dip_subfaults": 5, 14 | "hyp_dip": 3, 15 | "hyp_stk": 11, 16 | "neighbours": [], 17 | "rake": 88.5, 18 | "rupture_vel": 2.5, 19 | "stk_subfaults": 25, 20 | "strike": 198 21 | }, 22 | { 23 | "delay_segment": 0, 24 | "delta_dip": 16.6, 25 | "delta_strike": 25, 26 | "dip": 8, 27 | "dip_subfaults": 5, 28 | "hyp_dip": 8, 29 | "hyp_stk": 11, 30 | "neighbours": [], 31 | "rake": 88.5, 32 | "rupture_vel": 2.5, 33 | "stk_subfaults": 25, 34 | "strike": 198 35 | }, 36 | { 37 | "delay_segment": 0, 38 | "delta_dip": 16.6, 39 | "delta_strike": 25, 40 | "dip": 21, 41 | "dip_subfaults": 3, 42 | "hyp_dip": -1, 43 | "hyp_stk": 11, 44 | "neighbours": [], 45 | "rake": 88.5, 46 | "rupture_vel": 2.5, 47 | "stk_subfaults": 25, 48 | "strike": 198 49 | } 50 | ], 51 | "connections": [ 52 | { 53 | "segment1": 1, 54 | "segment1_subfault": [ 55 | 1, 56 | 1 57 | ], 58 | "segment2": 2, 59 | "segment2_subfault": [ 60 | 1, 61 | 6 62 | ] 63 | }, 64 | { 65 | "segment1": 1, 66 | "segment1_subfault": [ 67 | 1, 68 | 6 69 | ], 70 | "segment2": 3, 71 | "segment2_subfault": [ 72 | 1, 73 | 1 74 | ] 75 | } 76 | ] 77 | } 78 | -------------------------------------------------------------------------------- /src/test/velocity_models_test.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | import shutil 3 | import tempfile 4 | 5 | from ffm.velocity_models import ( 6 | __process_line, 7 | model2dict, 8 | model_depth2thick, 9 | select_velmodel, 10 | ) 11 | 12 | from .testutils import get_tensor_info, get_velmodel_data 13 | 14 | TENSOR = get_tensor_info() 15 | 16 | 17 | def test_model2dict(): 18 | tempdir = pathlib.Path(tempfile.mkdtemp()) 19 | try: 20 | with open(tempdir / "test_model.txt", "w") as f: 21 | f.write("0 1 2 3 4 5\n") 22 | f.write("6 7 8 9 10 11\n") 23 | f.write("12 13 14 15 16 17\n") 24 | assert model2dict(tempdir / "test_model.txt") == { 25 | "p_vel": ["0", "6", "12"], 26 | "s_vel": ["1", "7", "13"], 27 | "dens": ["2", "8", "14"], 28 | "thick": ["3", "9", "15"], 29 | "qa": ["4", "10", "16"], 30 | "qb": ["5", "11", "17"], 31 | } 32 | finally: 33 | shutil.rmtree(tempdir) 34 | 35 | 36 | def test_model_depth2thick(): 37 | tempdir = pathlib.Path(tempfile.mkdtemp()) 38 | try: 39 | with open(tempdir / "test_model.txt", "w") as f: 40 | f.write("0 1 2 3 4 5\n") 41 | f.write("6 7 8 9 10 11\n") 42 | f.write("12 13 14 15 16 17\n") 43 | assert model_depth2thick(tempdir / "test_model.txt") == { 44 | "p_vel": ["0.0", "8.0"], 45 | "s_vel": ["1.75", "9.1"], 46 | "dens": ["2", "8"], 47 | "thick": ["6", "6"], 48 | "qa": ["4", "10"], 49 | "qb": ["5", "11"], 50 | } 51 | finally: 52 | shutil.rmtree(tempdir) 53 | 54 | 55 | def test_process_line(): 56 | assert __process_line("1 2 3 4 5 10.23") == [1, 2, 3, 4, 5, 10.23] 57 | 58 | 59 | def test_select_velmodel(): 60 | velmodel = get_velmodel_data() 61 | assert ( 62 | select_velmodel( 63 | TENSOR, 64 | { 65 | "litho_model": pathlib.Path(__file__).parent.parent.parent 66 | / "fortran_code" 67 | / "info" 68 | / "LITHO1.0.nc" 69 | }, 70 | ) 71 | == velmodel 72 | ) 73 | -------------------------------------------------------------------------------- /src/test/data/generate_test_inventories.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | 3 | from obspy import UTCDateTime 4 | from obspy.clients.fdsn import Client 5 | from obspy.clients.iris import Client as IRIS_Client 6 | 7 | DATA_DIR = pathlib.Path(__file__).parent 8 | 9 | 10 | def get_test_event(): 11 | """M 1.3 - 8 km WNW of Port Hadlock-Irondale, Washington 12 | 13 | Data source: https://earthquake.usgs.gov/earthquakes/eventpage/uw61938401/executive 14 | Data retrieved: 7/6/2023 15 | """ 16 | return { 17 | "eventid": "uw61938401", 18 | "lat": 48.062, 19 | "lon": -122.885, 20 | "time": UTCDateTime("2023-07-05T09:09:27Z"), 21 | } 22 | 23 | 24 | def generate_strongmotion_iris_inventory(): 25 | """Get a strong motion inventory for a small event to use for testing""" 26 | event = get_test_event() 27 | 28 | # Get the inventory 29 | client = Client("IRIS") 30 | inventory = client.get_stations( 31 | starttime=event["time"] - 1 * 60, 32 | endtime=event["time"] + 1 * 60, 33 | network="C,C1,II,IU", 34 | channel="HN*", 35 | level="response", 36 | maxradius=10, 37 | latitude=event["lat"], 38 | longitude=event["lon"], 39 | ) 40 | inventory.write( 41 | str(DATA_DIR / "strongmotion_iris_inventory.xml"), 42 | format="STATIONXML", 43 | ) 44 | 45 | 46 | def generate_teleseismic_iris_inventory(): 47 | """Get a teleseismic inventory for a small event to use for testing""" 48 | event = get_test_event() 49 | 50 | # Get the inventory 51 | client = Client("IRIS") 52 | inventory = client.get_stations( 53 | starttime=event["time"] - 1 * 60, 54 | endtime=event["time"] + 1 * 60, 55 | network="II,G,IU,GE", 56 | channel="BH*", 57 | level="response", 58 | minradius=30, 59 | maxradius=35, 60 | latitude=event["lat"], 61 | longitude=event["lon"], 62 | ) 63 | inventory.write( 64 | str(DATA_DIR / "teleseismic_iris_inventory.xml"), 65 | format="STATIONXML", 66 | ) 67 | 68 | 69 | if __name__ == "__main__": 70 | generate_strongmotion_iris_inventory() 71 | generate_teleseismic_iris_inventory() 72 | -------------------------------------------------------------------------------- /fortran_code/src_dc_f95/fk_source.f95: -------------------------------------------------------------------------------- 1 | !*************************************************************** 2 | ! F-K: @(#) source.f 1.0 4/29/2000 3 | ! 4 | ! Copyright (c) 2000 by L. Zhu 5 | ! See README file for copying and redistribution conditions. 6 | ! 7 | ! Setup the displacement-stress vector jump across the source 8 | ! The coefficients can be all derived from the potential jump in 9 | ! Haskell (1964), or directly from Takiuchi and Saito (1972), 10 | ! see ZR Appendix B. 11 | ! 12 | ! Input: 13 | ! stype --- source type, 0=ex; 1=sf; 2=dc 14 | ! xi --- mu/(lambda+2*mu). 15 | ! mu --- shear modulus. 16 | ! Output: 17 | ! s(3,6) --- source coef. for n=0, 1, 2 18 | ! 19 | ! called by: main() in fk.f 20 | ! 21 | ! modified history: 22 | ! May 12, 2000 Lupei Zhu initial coding. 23 | ! July 17, 2000 Lupei Zhu change xi, mu to be complex. 24 | ! Oct. 30, 2008 Lupei Zhu change all back to real. 25 | ! Jan. 20, 2010 Lupei Zhu add flip model up-side down. 26 | !*************************************************************** 27 | module fk_source 28 | 29 | 30 | implicit none 31 | real*8 :: si(3, 6) 32 | 33 | 34 | contains 35 | 36 | 37 | subroutine source(stype, xi, mu, flip) 38 | ! 39 | ! Args: 40 | ! stype: type of seismic source 41 | ! xi: square of S velocity / square of P velocity at source 42 | ! mu: shear modulous at source 43 | ! flip: whether source is above or below receiver 44 | ! 45 | IMPLICIT NONE 46 | integer stype, flip 47 | real*8 :: xi, mu 48 | 49 | si(:,:) = 0.d0 50 | 51 | if (stype .EQ. 2) then ! DOUBLE_COUPLE 52 | si(1,2) = 2.d0*xi/mu 53 | si(1,4) = 4.d0*xi-3.d0 54 | si(2,1) = flip/mu 55 | si(2,5) =-si(2,1) 56 | si(3,4) = 1.d0 57 | si(3,6) =-1.d0 58 | else if (stype .EQ. 0) then ! EXPLOSION 59 | si(1,2) = xi/mu 60 | si(1,4) = 2.d0*xi 61 | else if (stype .EQ. 1) then ! SINGLE_FORCE, multiplied by k 62 | si(1,3) =-flip 63 | si(2,4) = -1.d0 64 | si(2,6) = 1.d0 65 | else ! unknow source type 66 | write(0,*)'unknown source type' 67 | call exit(1) 68 | endif 69 | ! write(0,*)flip, mu, xi 70 | ! write(0,*)'source' 71 | ! write(0,*)si 72 | 73 | end subroutine source 74 | 75 | 76 | end module fk_source 77 | -------------------------------------------------------------------------------- /src/test/shakemap_polygon_test.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import pathlib 4 | import tempfile 5 | 6 | from ffm.shakemap_polygon import ShakeRupture 7 | 8 | SINGLE_SEGMENT_POLYGON = """# Source: USGS NEIC Rapid Finite Fault 9 | # Eventid: us70004bn0 10 | # Model created: 2025-04-08 07:39:31 11 | -117.33 35.49 25.6 12 | -117.31 35.50 1.1 13 | -118.07 36.21 1.1 14 | -118.09 36.20 25.6 15 | -117.33 35.49 25.6 16 | > 17 | """ 18 | 19 | MULTI_SEGMENT_POLYGON = """# Source: USGS NEIC Rapid Finite Fault 20 | # Eventid: us7000pn9s 21 | # Model created: 2025-04-08 08:13:48 22 | 96.02 21.11 1.1 23 | 96.05 21.11 18.9 24 | 95.99 22.64 18.9 25 | 95.96 22.64 1.1 26 | 96.02 21.11 1.1 27 | > 28 | 96.07 20.49 1.1 29 | 96.10 20.49 18.9 30 | 96.05 20.94 18.9 31 | 96.03 20.93 1.1 32 | 96.07 20.49 1.1 33 | > 34 | 96.26 19.24 1.1 35 | 96.28 19.24 18.9 36 | 96.11 20.40 18.9 37 | 96.08 20.40 1.1 38 | 96.26 19.24 1.1 39 | > 40 | 96.47 18.09 1.1 41 | 96.49 18.09 18.9 42 | 96.29 19.15 18.9 43 | 96.27 19.15 1.1 44 | 96.47 18.09 1.1 45 | >""" 46 | 47 | 48 | def _test_rupture(fspfile, eventid, cmpstring): 49 | with tempfile.TemporaryDirectory() as tdir: 50 | tmpdir = pathlib.Path(tdir) 51 | rupture = ShakeRupture(eventid, fspfile) 52 | polygon_file = rupture.write_rupture(tmpdir) 53 | with open(polygon_file, "rt") as fobj: 54 | polylines = [ 55 | line.rstrip() for line in fobj.readlines() if not line.startswith("#") 56 | ] 57 | seglines = [ 58 | line for line in cmpstring.split("\n") if not line.startswith("#") 59 | ] 60 | for i, polyline in enumerate(polylines): 61 | segline = seglines[i] 62 | assert polyline == segline 63 | 64 | 65 | def test_shake_rupture(): 66 | single_fspfile = ( 67 | pathlib.Path(__file__).parent / "data" / "single_segment_inversion.fsp" 68 | ) 69 | single_eventid = "us70004bn0" 70 | multi_fspfile = ( 71 | pathlib.Path(__file__).parent / "data" / "multi_segment_inversion.fsp" 72 | ) 73 | multi_eventid = "us7000pn9s" 74 | _test_rupture(single_fspfile, single_eventid, SINGLE_SEGMENT_POLYGON) 75 | _test_rupture(multi_fspfile, multi_eventid, MULTI_SEGMENT_POLYGON) 76 | 77 | 78 | if __name__ == "__main__": 79 | test_shake_rupture() 80 | -------------------------------------------------------------------------------- /fortran_code/bin_str_f95/makefile: -------------------------------------------------------------------------------- 1 | BIN=./ 2 | OBJS3= fft.o mult_single.o interporation.o cmodel.o ddis.o Read_green.o bpfilter.o 3 | OBJS5= fft.o green_cgps.o interporation.o cmodel.o ddis.o Read_green.o bpfilter.o 4 | OBJS4= fft.o get_green_fun.o interporation.o cmodel.o ddis.o Read_green.o bpfilter.o 5 | modules = constants.o vel_model_data.o model_parameters.o 6 | modules2 = $(modules) geodesics.o retrieve_gf.o wave_travel.o bpfilter.o fast_fourier_trans.o rad_pattern.o store_gf.o 7 | F95= gfortran -Wall -O2 -ffixed-line-length-132 -fno-range-check -mcmodel=large -fbacktrace -g -fno-rerun-loop-opt 8 | 9 | 10 | all: get_strong_motion clean 11 | 12 | 13 | get_strong_motion: $(modules2) get_strong_motion.o 14 | $(F95) -o get_strong_motion $(modules2) get_strong_motion.o 15 | 16 | 17 | %.mod: $.o $.f95 18 | $(f95) -c $< 19 | 20 | #constants.mod: constants.o constants.f95 21 | # $(F95) -c constants.f95 22 | # 23 | #retrieve_gf.mod: retrieve_gf.o retrieve_gf.f95 24 | # $(F95) -c retrieve_gf.f95 25 | # 26 | #vel_model_data.mod: vel_model_data.o vel_model_data.f95 27 | # $(F95) -c vel_model_data.f95 28 | # 29 | #wave_travel.mod: wave_travel.o wave_travel.f95 30 | # $(F95) -c wave_travel.f95 31 | # 32 | #geodesics.mod: geodesics.o geodesics.f95 33 | # $(F95) -c geodesics.f95 34 | # 35 | #bpfilter.mod: bpfilter.o bpfilter.f95 36 | # $(F95) -c bpfilter.f95 37 | # 38 | #fast_fourier_trans.mod: fast_fourier_trans.o fast_fourier_trans.f95 39 | # $(F95) -c fast_fourier_trans.f95 40 | # 41 | #rad_pattern.mod: rad_pattern.o rad_pattern.f95 42 | # $(F95) -c rad_pattern.f95 43 | 44 | 45 | %.o: %.f95 46 | $(F95) -c $< 47 | 48 | #get_strong_motion.o: get_strong_motion.f95 49 | # $(F95) -c get_strong_motion.f95 50 | # 51 | #retrieve_gf.o: retrieve_gf.f95 52 | # $(F95) -c retrieve_gf.f95 53 | # 54 | #constants.o: constants.f95 55 | # $(F95) -c constants.f95 56 | # 57 | #vel_model_data.o: vel_model_data.f95 58 | # $(F95) -c vel_model_data.f95 59 | # 60 | #wave_travel.o: wave_travel.f95 61 | # $(F95) -c wave_travel.f95 62 | # 63 | #geodesics.o: geodesics.f95 64 | # $(F95) -c geodesics.f95 65 | # 66 | #bpfilter.o: bpfilter.f95 67 | # $(F95) -c bpfilter.f95 68 | # 69 | #fast_fourier_trans.o: fast_fourier_trans.f95 70 | # $(F95) -c fast_fourier_trans.f95 71 | # 72 | #rad_pattern.o: rad_pattern.f95 73 | # $(F95) -c rad_pattern.f95 74 | 75 | 76 | clean: 77 | rm -f *.mod 78 | rm -f *.o 79 | -------------------------------------------------------------------------------- /fortran_code/bin_str_f95/vel_model_data.f95: -------------------------------------------------------------------------------- 1 | module vel_model_data 2 | 3 | 4 | use constants, only : nlay 5 | implicit none 6 | integer, private :: n_layers 7 | integer :: n_layers_new, s_layer 8 | real, private :: vel_p(nlay), vel_s(nlay), dens(nlay), thick(nlay), qp(nlay), qs(nlay) 9 | real :: new_vel_p(nlay), new_vel_s(nlay), new_dens(nlay), new_thick(nlay), qqp(nlay), qqs(nlay) 10 | real :: slowness(nlay) 11 | 12 | 13 | contains 14 | 15 | 16 | subroutine read_vel_model(vel_model) 17 | ! 18 | ! Args: 19 | ! vel_model: file with velocity model 20 | ! 21 | implicit none 22 | character(len=100), intent(in) :: vel_model 23 | integer :: j 24 | open(1, file=vel_model, status='old') 25 | read(1, *) n_layers 26 | do j = 1, n_layers 27 | read (1, *)vel_p(j), vel_s(j), dens(j), thick(j), qp(j), qs(j) 28 | enddo 29 | end subroutine read_vel_model 30 | 31 | 32 | subroutine update_model(depth_source) 33 | ! 34 | ! Args: 35 | ! depth_source: depth of point source 36 | ! 37 | implicit none 38 | real, intent(in) :: depth_source 39 | real :: cum_dep, depths(nlay) 40 | integer :: j 41 | depths(1) = 0.0 42 | cum_dep = 0.0 43 | new_vel_p = vel_p 44 | new_vel_s = vel_s 45 | new_dens = dens 46 | new_thick = thick 47 | do j = 1, n_layers 48 | cum_dep = cum_dep + thick(j) 49 | depths(j + 1) = cum_dep 50 | enddo 51 | 52 | s_layer = 1 53 | do j = 1, n_layers 54 | if((depth_source .gt. depths(j)) .and. (depth_source .le. depths(j + 1))) then 55 | s_layer = j + 1 56 | exit 57 | end if 58 | enddo 59 | 60 | if (s_layer.gt.1) then 61 | new_thick(s_layer - 1) = depth_source - depths(s_layer - 1) 62 | new_thick(s_layer:n_layers + 1) = thick(s_layer - 1:n_layers) 63 | new_vel_p(s_layer:n_layers + 1) = vel_p(s_layer - 1:n_layers) 64 | new_vel_s(s_layer:n_layers + 1) = vel_s(s_layer - 1:n_layers) 65 | new_dens(s_layer:n_layers + 1) = dens(s_layer - 1:n_layers) 66 | new_thick(s_layer) = depths(s_layer) - depth_source 67 | if(new_thick(s_layer) .lt. 1.e-6)new_thick(s_layer) = 0.01 68 | n_layers_new = n_layers + 1 69 | s_layer = s_layer - 1 70 | endif 71 | 72 | slowness(:n_layers+1) = 1. / new_vel_p(:n_layers+1) ** 2 73 | 74 | end subroutine update_model 75 | 76 | 77 | end module vel_model_data 78 | --------------------------------------------------------------------------------