1{
2 "schema_version": 1,
3 "challenge_id": "string-pluck-v1",
4 "submitter": {
5 "name": "Jeremy Magland",
6 "email": "jmagland@flatironinstitute.org"
7 },
8 "date": "2026-09-17",
9 "viz_url": "https://vault1.magland.org/challenges/string-solutions/site/",
10 "submission_id": "fd-second-order",
11 "description": "Second-order finite differences: leapfrog in time for the wave and frequency-independent loss terms, with the Kelvin-Voigt term centered in time (implicit, tridiagonal solve per step). Fixed Courant number 0.9, so deliberately dispersive; time step 1/(48000 m). Ordered by increasing oversampling factor m.",
12 "code_url": "https://vault1.magland.org/challenges/string-solutions/blob/main/solvers/fd/fd_string.py",
13 "solutions": [
14 {
15 "solution_id": "fd-m1",
16 "output": "fd-second-order/fd-m1.wav",
17 "method": "finite differences, second order, implicit damping",
18 "parameters": {
19 "oversampling": 1,
20 "n_points": 197,
21 "dx_m": 0.003316326530612245,
22 "dt_s": 2.0833333333333333e-05,
23 "courant": 0.898333
24 },
25 "timing_seconds": 2.012,
26 "hardware": "13th Gen Intel(R) Core(TM) i7-1355U, single thread, Python 3.13.5 + numpy 2.4.4",
27 "more_accurate_than": []
28 },
29 {
30 "solution_id": "fd-m2",
31 "output": "fd-second-order/fd-m2.wav",
32 "method": "finite differences, second order, implicit damping",
33 "parameters": {
34 "oversampling": 2,
35 "n_points": 393,
36 "dx_m": 0.0016581632653061226,
37 "dt_s": 1.0416666666666666e-05,
38 "courant": 0.898333
39 },
40 "timing_seconds": 4.455,
41 "hardware": "13th Gen Intel(R) Core(TM) i7-1355U, single thread, Python 3.13.5 + numpy 2.4.4",
42 "more_accurate_than": [
43 "fd-m1"
44 ]
45 },
46 {
47 "solution_id": "fd-m4",
48 "output": "fd-second-order/fd-m4.wav",
49 "method": "finite differences, second order, implicit damping",
50 "parameters": {
51 "oversampling": 4,
52 "n_points": 786,
53 "dx_m": 0.0008280254777070064,
54 "dt_s": 5.208333333333333e-06,
55 "courant": 0.899479
56 },
57 "timing_seconds": 11.354,
58 "hardware": "13th Gen Intel(R) Core(TM) i7-1355U, single thread, Python 3.13.5 + numpy 2.4.4",
59 "more_accurate_than": [
60 "fd-m2"
61 ]
62 },
63 {
64 "solution_id": "fd-m8",
65 "output": "fd-second-order/fd-m8.wav",
66 "method": "finite differences, second order, implicit damping",
67 "parameters": {
68 "oversampling": 8,
69 "n_points": 1571,
70 "dx_m": 0.0004140127388535032,
71 "dt_s": 2.6041666666666666e-06,
72 "courant": 0.899479
73 },
74 "timing_seconds": 33.202,
75 "hardware": "13th Gen Intel(R) Core(TM) i7-1355U, single thread, Python 3.13.5 + numpy 2.4.4",
76 "more_accurate_than": [
77 "fd-m4"
78 ]
79 },
80 {
81 "solution_id": "fd-m16",
82 "output": "fd-second-order/fd-m16.wav",
83 "method": "finite differences, second order, implicit damping",
84 "parameters": {
85 "oversampling": 16,
86 "n_points": 3142,
87 "dx_m": 0.000206940464820121,
88 "dt_s": 1.3020833333333333e-06,
89 "courant": 0.899766
90 },
91 "timing_seconds": 111.127,
92 "hardware": "13th Gen Intel(R) Core(TM) i7-1355U, single thread, Python 3.13.5 + numpy 2.4.4",
93 "fields": {
94 "path": "fd-second-order/fd-m16.h5",
95 "format": "hdf5"
96 },
97 "more_accurate_than": [
98 "fd-m8"
99 ]
100 }
101 ]
102}