From 7950ea79e75c0a8dacc929c369ca96ea761a90f2 Mon Sep 17 00:00:00 2001 From: nqdu Date: Wed, 30 Apr 2025 23:34:05 -0400 Subject: [PATCH 1/4] fix bugs in acoustic group velocities --- bin/surflove | Bin 390104 -> 417496 bytes bin/surfrayl | Bin 407080 -> 417496 bytes example/ac/gen_model.py | 32 - example/ac/group.jpg | Bin 42546 -> 0 bytes example/ac/model.txt | 11 - example/ac/out/database.bin | Bin 210360 -> 0 bytes example/ac/out/swd.cps.txt | 601 ---- example/ac/out/swd.txt | 2767 ----------------- example/ac/phase.jpg | Bin 42632 -> 0 bytes example/ac/run.sh | 31 - example/love/group_kernel.jpg | Bin 0 -> 113596 bytes example/rayleigh/eigenvalues.jpg | Bin 379125 -> 0 bytes example/rayleigh/eigenvalues.pdf | Bin 34819 -> 0 bytes example/rayleigh/gen_model.py | 36 - example/rayleigh/model.txt.low | 11 - example/rayleigh/test.jpg | Bin 112480 -> 0 bytes .../step0_database.cpython-311.pyc | Bin 0 -> 13604 bytes example/{rayleigh => scholte}/benchmark.py | 0 example/scholte/eigenvalues.jpg | Bin 0 -> 383904 bytes example/scholte/eigenvecs.jpg | Bin 0 -> 357517 bytes example/scholte/group_deriv.jpg | Bin 0 -> 307080 bytes example/scholte/kernels.h5 | Bin 0 -> 3002672 bytes example/{rayleigh => scholte}/model.txt | 0 example/{rayleigh => scholte}/model.txt.cps | 0 example/scholte/phase_deriv.jpg | Bin 0 -> 300678 bytes example/{rayleigh => scholte}/plot_kernels.py | 0 example/{rayleigh => scholte}/run.sh | 0 example/{rayleigh => scholte}/run_att.sh | 0 example/scholte/step0_database.py | 316 ++ example/scholte/step1_bench_cps.py | 108 + example/scholte/step2_kernels.py | 112 + example/scholte/test.bin | Bin 0 -> 386904 bytes example/scholte/test.ipynb | 289 ++ .../vti-bench/cps330.cpython-311-darwin.so | Bin 39 -> 167232 bytes lib/libswd.cpython-311-darwin.so | Bin 459520 -> 459600 bytes misc/source/markdown/gallery.md | 20 + specd/__pycache__/specd.cpython-311.pyc | Bin 7975 -> 9070 bytes specd/lib/libswd.cpython-311-darwin.so | Bin 459520 -> 459600 bytes specd/specd.py | 35 +- src/aniso/CMakeLists.txt | 2 +- src/aniso/aniso.hpp | 6 +- src/aniso/eigenvalues.cpp | 4 +- src/aniso/sem.cpp | 123 +- src/aniso/transform.cpp | 4 +- src/libswd/init.cpp | 2 +- src/libswd/main.cpp | 23 + src/libswd/pack.cpp | 3 + src/vti/frechet.cpp | 43 +- src/vti/frechet_group.cpp | 276 +- src/vti/frechet_op.hpp | 118 +- src/vti/group_velocity.cpp | 42 +- src/vti/sem.cpp | 14 +- src/vti/transform.cpp | 60 +- src/vti/vti.hpp | 1 + 54 files changed, 1247 insertions(+), 3843 deletions(-) delete mode 100644 example/ac/gen_model.py delete mode 100644 example/ac/group.jpg delete mode 100644 example/ac/model.txt delete mode 100644 example/ac/out/database.bin delete mode 100644 example/ac/out/swd.cps.txt delete mode 100644 example/ac/out/swd.txt delete mode 100644 example/ac/phase.jpg delete mode 100644 example/ac/run.sh create mode 100644 example/love/group_kernel.jpg delete mode 100644 example/rayleigh/eigenvalues.jpg delete mode 100644 example/rayleigh/eigenvalues.pdf delete mode 100644 example/rayleigh/gen_model.py delete mode 100644 example/rayleigh/model.txt.low delete mode 100644 example/rayleigh/test.jpg create mode 100644 example/scholte/__pycache__/step0_database.cpython-311.pyc rename example/{rayleigh => scholte}/benchmark.py (100%) create mode 100644 example/scholte/eigenvalues.jpg create mode 100644 example/scholte/eigenvecs.jpg create mode 100644 example/scholte/group_deriv.jpg create mode 100644 example/scholte/kernels.h5 rename example/{rayleigh => scholte}/model.txt (100%) rename example/{rayleigh => scholte}/model.txt.cps (100%) create mode 100644 example/scholte/phase_deriv.jpg rename example/{rayleigh => scholte}/plot_kernels.py (100%) rename example/{rayleigh => scholte}/run.sh (100%) rename example/{rayleigh => scholte}/run_att.sh (100%) create mode 100644 example/scholte/step0_database.py create mode 100644 example/scholte/step1_bench_cps.py create mode 100644 example/scholte/step2_kernels.py create mode 100644 example/scholte/test.bin create mode 100644 example/scholte/test.ipynb mode change 120000 => 100755 example/vti-bench/cps330.cpython-311-darwin.so diff --git a/bin/surflove b/bin/surflove index 8fa2e7dac028dc207ec534265aa5b06acdee1c61..7109446f65f7aa6818a4fc796b2673cb89198748 100755 GIT binary patch delta 103382 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