dyncfs 2.0.0__tar.gz → 2.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {dyncfs-2.0.0/dyncfs.egg-info → dyncfs-2.0.2}/PKG-INFO +1 -1
- {dyncfs-2.0.0 → dyncfs-2.0.2/dyncfs.egg-info}/PKG-INFO +1 -1
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs.egg-info/SOURCES.txt +0 -4
- {dyncfs-2.0.0 → dyncfs-2.0.2}/pyproject.toml +4 -2
- dyncfs-2.0.2/setup.py +75 -0
- dyncfs-2.0.0/dyncfs/exec/edcmp2.bin +0 -0
- dyncfs-2.0.0/dyncfs/exec/edgrn2.bin +0 -0
- dyncfs-2.0.0/dyncfs/exec/qseis2025.bin +0 -0
- dyncfs-2.0.0/dyncfs/exec/qssp2020.bin +0 -0
- dyncfs-2.0.0/setup.py +0 -114
- {dyncfs-2.0.0 → dyncfs-2.0.2}/LICENSE +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/MANIFEST.in +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/README.md +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/__init__.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/cfs_dynamic.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/cfs_dynamic_backup.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/cfs_static.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/configuration.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/convert_input_format.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_edcmp.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_edcmp_bulk.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_edgrn.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_edgrn_bulk.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_nd_by_crust1_ak135.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_qseis2025.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_qseis2025_bulk.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_qssp2020.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/create_qssp2020_bulk.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/crust1.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/edcmp2inp.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/edgrn2inp.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/exec/TauP-2.6.1.jar +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/focal_mechanism.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/geo.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/main.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/obspy_geo.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/plot_cfs_dynamic_2d.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/plot_cfs_dynamic_3d.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/plot_cfs_static_2d.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/plot_cfs_static_3d.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/plot_gif.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/plot_slip_2d.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/plot_slip_3d.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/pytaup.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/qseis2025inp.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/qssp2020inp.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/read_edcmp.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/read_qseis2025.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/read_qssp2020.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/signal_process.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs/utils.py +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs.egg-info/dependency_links.txt +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs.egg-info/entry_points.txt +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs.egg-info/requires.txt +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/dyncfs.egg-info/top_level.txt +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/dc3d.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/dc3d0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/edcdisc.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/edcglobal.h +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/edcgrn.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/edcmain.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/edcoutput.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/getdata.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edcmp2.0_src/okada.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/axb.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/bessj.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/bessj0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/bessj1.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgbstab.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgglobal.h +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edghask.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgkern.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edglayer.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgmain.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgmatinv.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgmatrix.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgmoment.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgpsv.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgsh.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgsublay.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/edgwvint.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/gemp.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/getdata.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/edgrn2.0_src/memcpy.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/bessj.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/bessj0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/bessj1.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/caxcb.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/cdgemp.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/cmemcpy.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/four1.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/getdata.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsam2ve.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsbsj.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsfftinv.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsgetinp.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsglobal.h +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qshksh.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qskern.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qslayer.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsmain.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsmatrix0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsmultis.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qspsv.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsqmodel.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qssh.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qssource.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qssublay.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qsve2am.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qswavelet.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qswaveno.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/qswvint.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qseis2025_src/taper.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/banddpasss.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/brunewvlet.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/butterworth.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/caxcb.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/cdsvd500.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/cmemcpy.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/disazi.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/four1w.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/fsimpson.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/legendre.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/moments.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpalloc.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpdifmat0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpdifmatl.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpdifmats.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpfftinv.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpgetinp.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpgrnspec.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qplegendre.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpmain.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qppsvkern.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qppsvkerng.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpqmodel.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpshkern.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpsmat.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpsmat0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpsmatc.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpsprop.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpsprop0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpspropg.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpspropg0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart0.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart0a.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart0g.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart2t.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart4.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart4a.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart4g.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart6.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart6a.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpstart6g.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpsublayer.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qptmat.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qptprop.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/qpwvint.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/ruku.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/skipdoc.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbdphj.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbdphy.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbh12.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbjh.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbphj.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbphy.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbpsj.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/spbpsy.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/swavelet.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/taper.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/fortran_src_codes/qssp2020_src/transfs2t.f +0 -0
- {dyncfs-2.0.0 → dyncfs-2.0.2}/setup.cfg +0 -0
|
@@ -41,10 +41,6 @@ setup.py
|
|
|
41
41
|
./dyncfs/signal_process.py
|
|
42
42
|
./dyncfs/utils.py
|
|
43
43
|
./dyncfs/exec/TauP-2.6.1.jar
|
|
44
|
-
./dyncfs/exec/edcmp2.bin
|
|
45
|
-
./dyncfs/exec/edgrn2.bin
|
|
46
|
-
./dyncfs/exec/qseis2025.bin
|
|
47
|
-
./dyncfs/exec/qssp2020.bin
|
|
48
44
|
dyncfs/__init__.py
|
|
49
45
|
dyncfs/cfs_dynamic.py
|
|
50
46
|
dyncfs/cfs_dynamic_backup.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dyncfs"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.2"
|
|
8
8
|
description = "A Python library for computing Coulomb Failure Stress Change."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -34,5 +34,7 @@ where = ["."]
|
|
|
34
34
|
include = ["dyncfs*"]
|
|
35
35
|
|
|
36
36
|
[tool.setuptools.package-data]
|
|
37
|
-
dyncfs = ["exec
|
|
37
|
+
dyncfs = ["exec/*.jar"]
|
|
38
38
|
|
|
39
|
+
[tool.setuptools.exclude-package-data]
|
|
40
|
+
dyncfs = ["exec/*.bin", "exec/*.exe", "exec/*.o", "exec/*.out"]
|
dyncfs-2.0.2/setup.py
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import platform
|
|
3
|
+
import shutil
|
|
4
|
+
import subprocess
|
|
5
|
+
from setuptools import setup
|
|
6
|
+
from setuptools.command.build_py import build_py as _build_py
|
|
7
|
+
from setuptools import setup, Distribution
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
project_root = os.path.dirname(os.path.abspath(__file__))
|
|
11
|
+
platform_exec = "exe" if platform.system() == "Windows" else "bin"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class BinaryDistribution(Distribution):
|
|
15
|
+
def has_ext_modules(self):
|
|
16
|
+
return True
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _compile_dir(src_dir: str, out_bin: str, extra_flags: list[str]) -> None:
|
|
20
|
+
cmd = "gfortran ./*.f -O3 %s -o %s" % (
|
|
21
|
+
" ".join("%s" % extra_flags[_] for _ in range(len(extra_flags))),
|
|
22
|
+
out_bin,
|
|
23
|
+
)
|
|
24
|
+
print(src_dir)
|
|
25
|
+
print(cmd)
|
|
26
|
+
proc = subprocess.run(cmd, cwd=src_dir, shell=True, text=True, capture_output=True)
|
|
27
|
+
if proc.returncode != 0:
|
|
28
|
+
raise RuntimeError(
|
|
29
|
+
f"[dyncfs] Fortran compile failed for {src_dir}\n"
|
|
30
|
+
f"Error:\n{proc.stderr or proc.stdout}"
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class CustomBuildPy(_build_py):
|
|
35
|
+
def run(self):
|
|
36
|
+
_build_py.run(self)
|
|
37
|
+
|
|
38
|
+
if not shutil.which("gfortran"):
|
|
39
|
+
raise ValueError(
|
|
40
|
+
r"Please install gfortran and ensure "
|
|
41
|
+
r"that command \'gfortran\' can be directly called"
|
|
42
|
+
)
|
|
43
|
+
if not shutil.which("java"):
|
|
44
|
+
raise ValueError(
|
|
45
|
+
r"Please install java and ensure that "
|
|
46
|
+
r"command \'java\' can be directly called"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
exec_dir = os.path.join(project_root, "dyncfs", "exec")
|
|
50
|
+
os.makedirs(exec_dir, exist_ok=True)
|
|
51
|
+
|
|
52
|
+
fortran_src_root = os.path.join(project_root, "fortran_src_codes")
|
|
53
|
+
fortran_subdirs = {
|
|
54
|
+
"edgrn2.0_src": f"edgrn2.{platform_exec}",
|
|
55
|
+
"edcmp2.0_src": f"edcmp2.{platform_exec}",
|
|
56
|
+
"qssp2020_src": f"qssp2020.{platform_exec}",
|
|
57
|
+
"qseis2025_src": f"qseis2025.{platform_exec}",
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
for src_folder, bin_name in fortran_subdirs.items():
|
|
61
|
+
fortran_src_dir = os.path.join(fortran_src_root, src_folder)
|
|
62
|
+
output_binary = os.path.join(exec_dir, bin_name)
|
|
63
|
+
|
|
64
|
+
extra = []
|
|
65
|
+
env_fflags = os.environ.get("DYNCFS_FFLAGS", "")
|
|
66
|
+
if env_fflags:
|
|
67
|
+
extra += env_fflags.split()
|
|
68
|
+
if src_folder == "qseis2025_src":
|
|
69
|
+
extra += ["-ffixed-line-length-none"]
|
|
70
|
+
|
|
71
|
+
print(f"[dyncfs] Compiling {src_folder} -> {output_binary}")
|
|
72
|
+
_compile_dir(fortran_src_dir, output_binary, extra)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
setup(cmdclass={"build_py": CustomBuildPy}, distclass=BinaryDistribution) # type:ignore
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
dyncfs-2.0.0/setup.py
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import glob
|
|
3
|
-
import platform
|
|
4
|
-
import shutil
|
|
5
|
-
import subprocess
|
|
6
|
-
from setuptools import setup, find_packages
|
|
7
|
-
from setuptools.command.build_py import build_py as _build_py
|
|
8
|
-
|
|
9
|
-
project_root = os.path.dirname(os.path.abspath(__file__))
|
|
10
|
-
|
|
11
|
-
# req_file = os.path.join(project_root, "requirements.txt")
|
|
12
|
-
# with open(req_file, encoding="utf-8") as f:
|
|
13
|
-
# requirements = [
|
|
14
|
-
# line.strip() for line in f if line.strip() and not line.startswith("#")
|
|
15
|
-
# ]
|
|
16
|
-
|
|
17
|
-
platform_exec = "exe" if platform.system() == "Windows" else "bin"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def _compile_dir(src_dir: str, out_bin: str, extra_flags: list[str]) -> None:
|
|
21
|
-
build_dir = os.path.join(src_dir, "_build_mod")
|
|
22
|
-
os.makedirs(build_dir, exist_ok=True)
|
|
23
|
-
|
|
24
|
-
pats = ["*.f", "*.for", "*.f90", "*.F", "*.F90"]
|
|
25
|
-
files = []
|
|
26
|
-
for p in pats:
|
|
27
|
-
files.extend(glob.glob(os.path.join(src_dir, p)))
|
|
28
|
-
if not files:
|
|
29
|
-
raise RuntimeError(f"[dyncfs] No Fortran sources in {src_dir}")
|
|
30
|
-
|
|
31
|
-
remaining = sorted(files)
|
|
32
|
-
compiled_objs = []
|
|
33
|
-
last_err = ""
|
|
34
|
-
for _ in range(10):
|
|
35
|
-
progressed = False
|
|
36
|
-
for f in list(remaining):
|
|
37
|
-
obj = os.path.join(build_dir, os.path.basename(f) + ".o")
|
|
38
|
-
cmd = [
|
|
39
|
-
"gfortran",
|
|
40
|
-
"-c",
|
|
41
|
-
"-O3",
|
|
42
|
-
"-J",
|
|
43
|
-
build_dir,
|
|
44
|
-
"-I",
|
|
45
|
-
build_dir,
|
|
46
|
-
"-I",
|
|
47
|
-
src_dir,
|
|
48
|
-
*extra_flags,
|
|
49
|
-
f,
|
|
50
|
-
"-o",
|
|
51
|
-
obj,
|
|
52
|
-
]
|
|
53
|
-
proc = subprocess.run(cmd, cwd=src_dir, text=True, capture_output=True)
|
|
54
|
-
if proc.returncode == 0:
|
|
55
|
-
remaining.remove(f)
|
|
56
|
-
compiled_objs.append(obj)
|
|
57
|
-
progressed = True
|
|
58
|
-
else:
|
|
59
|
-
last_err = proc.stderr or proc.stdout
|
|
60
|
-
if not remaining:
|
|
61
|
-
break
|
|
62
|
-
if not progressed:
|
|
63
|
-
raise RuntimeError(
|
|
64
|
-
"[dyncfs] Fortran compile stalled.\n"
|
|
65
|
-
f"Uncompiled: {[os.path.basename(x) for x in remaining]}\n"
|
|
66
|
-
f"Last error:\n{last_err}"
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
link_cmd = ["gfortran", *compiled_objs, "-o", out_bin]
|
|
70
|
-
subprocess.run(link_cmd, cwd=src_dir, check=True)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
class CustomBuildPy(_build_py):
|
|
74
|
-
def run(self):
|
|
75
|
-
_build_py.run(self)
|
|
76
|
-
|
|
77
|
-
if not shutil.which("gfortran"):
|
|
78
|
-
raise ValueError(
|
|
79
|
-
"Please install gfortran and ensure "
|
|
80
|
-
"that command 'gfortran' can be directly called"
|
|
81
|
-
)
|
|
82
|
-
if not shutil.which("jar"):
|
|
83
|
-
raise ValueError(
|
|
84
|
-
"Please install java and ensure that "
|
|
85
|
-
"command 'jar' can be directly called"
|
|
86
|
-
)
|
|
87
|
-
|
|
88
|
-
exec_dir = os.path.join(project_root, "dyncfs", "exec")
|
|
89
|
-
os.makedirs(exec_dir, exist_ok=True)
|
|
90
|
-
|
|
91
|
-
fortran_src_root = os.path.join(project_root, "fortran_src_codes")
|
|
92
|
-
fortran_subdirs = {
|
|
93
|
-
"edgrn2.0_src": f"edgrn2.{platform_exec}",
|
|
94
|
-
"edcmp2.0_src": f"edcmp2.{platform_exec}",
|
|
95
|
-
"qssp2020_src": f"qssp2020.{platform_exec}",
|
|
96
|
-
"qseis2025_src": f"qseis2025.{platform_exec}",
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
for src_folder, bin_name in fortran_subdirs.items():
|
|
100
|
-
fortran_src_dir = os.path.join(fortran_src_root, src_folder)
|
|
101
|
-
output_binary = os.path.join(exec_dir, bin_name)
|
|
102
|
-
|
|
103
|
-
extra = []
|
|
104
|
-
env_fflags = os.environ.get("DYNCFS_FFLAGS", "")
|
|
105
|
-
if env_fflags:
|
|
106
|
-
extra += env_fflags.split()
|
|
107
|
-
if src_folder == "qseis2025_src":
|
|
108
|
-
extra += ["-ffixed-line-length-none"]
|
|
109
|
-
|
|
110
|
-
print(f"[dyncfs] Compiling {src_folder} -> {output_binary}")
|
|
111
|
-
_compile_dir(fortran_src_dir, output_binary, extra)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
setup(cmdclass={"build_py": CustomBuildPy})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|