Documentation and digital files in support of "Classification of aircraft types using seismic data in Alaska'"
Abstract
This collection of files is a supplement to the submitted manuscript of Seppi et al. (2025). The study documents how flight paths, sound speed, and aircraft source frequencies can be estimated using seismic sensors on the ground.
Full text
dopplerD_partial_derivatives.nb Partial derivatives of Doppler equation Evaluate dopplerC_estimate.nb first. Carl Tape and Bella Seppi October 20, 2025 In[257]:= ClearParms Partial derivatives In[258]:= Clear[partialv, partialfs, partialt0, partiald0, partialc] Clear[partialvX, partialfsX, partialt0X, partiald0X, partialcX] In[260]:= Clear[vv, t0s, d0s, fss, cc] partialv[v_, t0_, d0_, fs_, c_, tp_] :=D[Ft[vv, t0, d0, fs, c, tp], vv] /. vv →v partialfs[v_, t0_, d0_, fs_, c_, tp_] :=D[Ft[v, t0, d0, fss, c, tp], fss] /. fss →fs partialt0[v_, t0_, d0_, fs_, c_, tp_] :=D[Ft[v, t0s, d0, fs, c, tp], t0s] /. t0s →t0 partiald0[v_, t0_, d0_, fs_, c_, tp_] :=D[Ft[v, t0, d0s, fs, c, tp], d0s] /. d0s →d0 partialc[v_, t0_, d0_, fs_, c_, tp_] :=D[Ft[v, t0, d0, fs, cc, tp], cc] /. cc →c This factor will help shorten the explicit expressions In[266]:= G[v_, t0_, d0_, c_, tp_] :=1-v2 c2+(t0 -tp)2v2 d02 Partial derivative expressions, fully simplified. They can be commented out, since we define explicit expressions. Speed of source, v In[267]:= (*FullSimplify[D[Ft[v,t0,d0,fs,c,tp],v]]*)
In[268]:= partialvX[v_, t0_, d0_, fs_, c_, tp_] := fs v 2 d04v4-d02(t0 -tp)2v6+3 c d03(-t0 +tp)v4G[v, t0, d0, c, tp]+ c5d0 (t0 -tp)2 d02+(t0 -tp)2v2G[v, t0, d0, c, tp]+ c3d0 (t0 -tp)v2d02+3(t0 -tp)2v2G[v, t0, d0, c, tp]+ c2v2-4 d04-5 d02(t0 -tp)2v2+(t0 -tp)4v4+c42 d04+6 d02(t0 -tp)2v2+3(t0 -tp)4v4 d0 (c-v)(c+v)G[v, t0, d0, c, tp]d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 c(t0 -tp)v2+d0 v2G[v, t0, d0, c, tp]-c2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22+ v2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 2 Unshifted frequency, fs (note: it does not depend on fs) In[269]:= (*FullSimplify[D[Ft[v,t0,d0,fs,c,tp],fs]]*) In[270]:= partialfsX[v_, t0_, d0_, fs_, c_, tp_] :=1-v2(c t0 -c tp +d0 G[v, t0, d0, c, tp]) c2-v2d02+c2v2(c t0-c tp+d0 G[v,t0,d0,c,tp])2 c2-v22 -1 Arrival time, t0 In[271]:= (*FullSimplify[D[Ft[v,t0,d0,fs,c,tp],t0]]*) In[272]:= partialt0X[v_, t0_, d0_, fs_, c_, tp_] := d0 fs (c-v)v2(c+v)(t0 -tp)v2+c d0 G[v, t0, d0, c, tp] G[v, t0, d0, c, tp]d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 c(t0 -tp)v2+d0 v2G[v, t0, d0, c, tp]-c2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22+ v2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 2 Distance to object, d0 In[273]:= (*FullSimplify[D[Ft[v,t0,d0,fs,c,tp],d0]]*) 2 dopplerD_partial_derivatives.nb
In[274]:= partiald0X[v_, t0_, d0_, fs_, c_, tp_] := fs (t0 -tp)v2-c2+v2(t0 -tp)v2+c d0 G[v, t0, d0, c, tp] G[v, t0, d0, c, tp]d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 c(t0 -tp)v2+d0 v21-v2 c2+(t0 -tp)2v2 d02-c2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22+ v2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 2 Acoustic wavespeed, c In[275]:= (*FullSimplify[D[Ft[v,t0,d0,fs,c,tp],c]]*) In[276]:= partialcX[v_, t0_, d0_, fs_, c_, tp_] := - fs v22 d04v4-2 d02(t0 -tp)2v6+4 c d03(-t0 +tp)v4G[v, t0, d0, c, tp]+ c5d0 (t0 -tp)d02+(t0 -tp)2v2G[v, t0, d0, c, tp]+ 3 c3d0 (t0 -tp)v2d02+(t0 -tp)2v2G[v, t0, d0, c, tp]+ c2v2-4 d04-3 d02(t0 -tp)2v2+(t0 -tp)4v4+c42 d04+5 d02(t0 -tp)2v2+3(t0 -tp)4v4 c d0 (c-v)(c+v)G[v, t0, d0, c, tp]d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 c(t0 -tp)v2+d0 v2G[v, t0, d0, c, tp]-c2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22+ v2d02+c2v2(c t0 -c tp +d0 G[v, t0, d0, c, tp])2 c2-v22 2 Unused Find the maximal slope of the Doppler curve. That means finding the root for the second derivative. In[277]:= (* Solve[D[Ft[v,t0,d0,fs,c,tp],{tp,2}]⩵0,tp]*) (* not sure if this will run *) Find the inflection points by setting the third derivative to zero and solving. In[278]:= (* Solve[D[Ft[v,t0,d0,fs,c,tp],{tp,3}]⩵0,tp]*) (* this probably does not finish *) Example values for a Doppler curve dopplerD_partial_derivatives.nb 3
Example values for a Doppler curve In[279]:= SetParms In[280]:= thwid =100; In[281]:= Plot[Ft[v, t0, d0, fs, c, tp],{tp, t0 -thwid, t0 +thwid}] Out[281]= 150 200 250 300 95 100 105 110 115 120 125 130 Partial derivatives for v, t0, d0, fs, c, each plotted as a function of tp In[282]:= Plot[partialv[v, t0, d0, fs, c, tp],{tp, t0 -thwid, t0 +thwid}] Out[282]= 150 200 250 300 -0.2 0.2 0.4 4 dopplerD_partial_derivatives.nb
In[283]:= Plot[partialt0[v, t0, d0, fs, c, tp],{tp, t0 -thwid, t0 +thwid}] Out[283]= 150 200 250 300 0.2 0.4 0.6 0.8 In[284]:= Plot[partiald0[v, t0, d0, fs, c, tp],{tp, t0 -thwid, t0 +thwid}] Out[284]= 150 200 250 300 -0.006 -0.004 -0.002 0.002 0.004 0.006 In[285]:= Plot[partialfs[v, t0, d0, fs, c, tp],{tp, t0 -thwid, t0 +thwid}] Out[285]= 150 200 250 300 0.90 0.95 1.00 1.05 1.10 1.15 dopplerD_partial_derivatives.nb 5
In[286]:= Plot[partialc[v, t0, d0, fs, c, tp],{tp, t0 -thwid, t0 +thwid}] Out[286]= 150 200 250 300 -0.06 -0.04 -0.02 0.02 0.04 Test values (for checking Python) first check In[287]:= Ft[v, t0, d0, fs, c, t0] Ft[v, t0, d0, fs, c, tp0] fs Out[287]= 112.388 Out[288]= 110. Out[289]= 110. choose a (sensor) time point: In[290]:= tp =200.; t[v, t0, d0, c, tp] Ft[v, t0, d0, fs, c, tp] Out[291]= -19.0237 Out[292]= 122.286 6 dopplerD_partial_derivatives.nb
compare explicit expressions with expressions based on D[ ]: In[293]:= partialv[v, t0, d0, fs, c, tp] partialvX[v, t0, d0, fs, c, tp] partialt0[v, t0, d0, fs, c, tp] partialt0X[v, t0, d0, fs, c, tp] partiald0[v, t0, d0, fs, c, tp] partiald0X[v, t0, d0, fs, c, tp] partialfs[v, t0, d0, fs, c, tp] partialfsX[v, t0, d0, fs, c, tp] partialc[v, t0, d0, fs, c, tp] partialcX[v, t0, d0, fs, c, tp] Out[293]= 0.432579 Out[294]= 0.432579 Out[295]= 0.419014 Out[296]= 0.419014 Out[297]= -0.00628521 Out[298]= -0.00628521 Out[299]= 1.11169 Out[300]= 1.11169 Out[301]= -0.044734 Out[302]= -0.044734 dopplerD_partial_derivatives.nb 7