Locking vs Wind Speed @LHO

Wind Speed Histogram

wind speed histogram from 8 years of data at LHO:
https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=12996

windHistogram={{0,100.00},{2,94.71},{4,65.14},{6,40.65},{8,25.46},{10,15.09},{12,8.84},{14,4.87},{16,2.56},{18,1.33},{20,0.67},{22,.36},{24,.22},{26,.12},{28,.08}};

plt1=ListPlot[windHistogram,Filling->Axis]

Wind Speed Probability Density Function

npts=Dimensions[windHistogram][[1]]-1;
windPDF=Transpose[Partition[Join[Drop[Transpose[windHistogram][[1]],1],Drop[RotateRight[Transpose[windHistogram][[2]]]-Transpose[windHistogram][[2]],1]/100],npts]]

windSpeeds=Transpose[windPDF][[1]];

PDFvalues=Transpose[windPDF][[2]];
normalizeFactor=Total[PDFvalues]

PDFvalues =PDFvalues/normalizeFactor;
Total[PDFvalues]

Transpose[windPDF][[1]].Transpose[windPDF][[2]]

ListPlot[windPDF,Filling->Axis]

Close match to data plot from years of data at LHO:
https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=12996

Data from the above plot, where wind sepeed is set to the mid-point of the bin:

windDataPDF={{1,.0523},{3,.2923},{5,.2421},{7,.1502},{9,.1025},{11,.0618},{13,.0392},{15,.0229},{17,.0122},{19,.0065},{21,.0031},{23,.0014},{25,.0009},{27,.0007}};

windSpeeds=Transpose[windDataPDF][[1]];

plt1=ListPlot[windDataPDF,Filling->Axis]

PDFdataValues=Transpose[windDataPDF][[2]];
normalizeFactor=Total[PDFdataValues]

PDFdataValues =PDFdataValues/normalizeFactor;
Total[PDFvalues]

Transpose[windDataPDF][[1]].Transpose[windDataPDF][[2]]

windSpeedAvgByMonth={6.28,5.44,6.82,7.50,7.04,7.39,6.84,6.29,5.85,5.60,5.52,4.89};

windAvg=Mean[windSpeedAvgByMonth]

windSpeedAvgByMonth[[1;;3]]

Average wind speed agrees reasonably well with the average projected from the PDF above

In the windy season (say April through June), the average wind speed is ~16% higher than the yearly average:

windySeasonAvg=Mean[windSpeedAvgByMonth[[4;;6]]]

seasonalFactor=windySeasonAvg/windAvg

Shift the windDataPDF (yearly) to create an approximate represenatation of the wind PDF in the windy season:

shift=1.21;
windySeasonSpeeds=windSpeeds+shift;
windySeasonSpeeds.Transpose[windDataPDF][[2]]

windySeasonPDF=Transpose[Partition[Join[windySeasonSpeeds,Transpose[windDataPDF][[2]]],npts]]

plt1=ListPlot[{windDataPDF,windySeasonPDF},Filling->Axis]

Duty cycle vs wind speed

Plot of duty cycle vs wind speed in O2 in figure 16 here:
https://dcc.ligo.org/DocDB/0150/P1800038/001/BRSLIGOCQG.pdf
Histogram of fraction of the time the interferometer was locked as a function of wind speed for the O1 and O2 configuration

locking vs wind speed data

locking={{-6.74141595623775*10^(-002), 6.67262969588551*10^(-001)},
{2.36312000186399*10^(-001), 6.69051878354204*10^(-001)},
{1.24843049791725*10^(+000), 6.77996422182469*10^(-001)},
{1.95682283589933*10^(+000), 6.85152057245081*10^(-001)},
{2.86818253600470*10^(+000), 6.88729874776386*10^(-001)},
{4.08381205843596*10^(+000), 6.88729874776386*10^(-001)},
{5.09738032303913*10^(+000), 6.83363148479428*10^(-001)},
{5.90888732981420*10^(+000), 6.72629695885510*10^(-001)},
{7.32712177265067*10^(+000), 6.72629695885510*10^(-001)},
{7.93475531300726*10^(+000), 6.74418604651163*10^(-001)},
{8.74553743634617*10^(+000), 6.70840787119857*10^(-001)},
{9.75928692180838*10^(+000), 6.63685152057245*10^(-001)},
{1.00631943024162*10^(+001), 6.63685152057245*10^(-001)},
{1.06748147016716*10^(+001), 6.26118067978533*10^(-001)},
{1.11842265364293*10^(+001), 5.97495527728086*10^(-001)},
{1.13891873280020*10^(+001), 5.74239713774597*10^(-001)},
{1.19991767395261*10^(+001), 5.52772808586762*10^(-001)},
{1.24025743717461*10^(+001), 5.70661896243292*10^(-001)},
{1.29072744641688*10^(+001), 5.88550983899821*10^(-001)},
{1.33106720963888*10^(+001), 6.06440071556351*10^(-001)},
{1.35118272499217*10^(+001), 6.20751341681574*10^(-001)},
{1.39150436612827*10^(+001), 6.40429338103757*10^(-001)},
{1.50293707235113*10^(+001), 6.40429338103757*10^(-001)},
{1.60423953255374*10^(+001), 6.40429338103757*10^(-001)},
{1.70557823692815*10^(+001), 6.36851520572451*10^(-001)},
{1.85760441557567*10^(+001), 6.29695885509839*10^(-001)},
{1.93864638373776*10^(+001), 6.29695885509839*10^(-001)},
{1.98931573592496*10^(+001), 6.27906976744186*10^(-001)},
{2.07033958200114*10^(+001), 6.29695885509839*10^(-001)},
{2.15136342807732*10^(+001), 6.31484794275492*10^(-001)},
{2.23236915206760*10^(+001), 6.35062611806798*10^(-001)},
{2.31337487605788*10^(+001), 6.38640429338104*10^(-001)},
{2.40451084606841*10^(+001), 6.42218246869410*10^(-001)},
{2.49575554859437*10^(+001), 6.35062611806798*10^(-001)},
{2.59713049714059*10^(+001), 6.27906976744186*10^(-001)},
{2.72875120706036*10^(+001), 6.35062611806798*10^(-001)},
{2.80973880896474*10^(+001), 6.40429338103757*10^(-001)},
{2.89069016669730*10^(+001), 6.49373881932022*10^(-001)},
{3.00205038457655*10^(+001), 6.56529516994633*10^(-001)},
{3.08318296316815*10^(+001), 6.47584973166369*10^(-001)},
{3.13394292578488*10^(+001), 6.36851520572451*10^(-001)},
{3.20494525835622*10^(+001), 6.27906976744186*10^(-001)},
{3.22535072708398*10^(+001), 6.13595706618962*10^(-001)},
{3.26608917619586*10^(+001), 5.92128801431127*10^(-001)},
{3.29662489094388*10^(+001), 5.77817531305903*10^(-001)},
{3.33736334005576*10^(+001), 5.56350626118068*10^(-001)},
{3.38823203518791*10^(+001), 5.34883720930233*10^(-001)},
{3.41878587202183*10^(+001), 5.18783542039356*10^(-001)},
{3.48987881502269*10^(+001), 5.00894454382826*10^(-001)},
{3.57117449238743*10^(+001), 4.75849731663685*10^(-001)},
{3.65243392558036*10^(+001), 4.54382826475850*10^(-001)},
{3.69311800843454*10^(+001), 4.38282647584973*10^(-001)},
{3.76421095143540*10^(+001), 4.20393559928444*10^(-001)},
{3.81500715822393*10^(+001), 4.06082289803220*10^(-001)},
{3.85578185150763*10^(+001), 3.81037567084079*10^(-001)},
{3.89650217853361*10^(+001), 3.61359570661896*10^(-001)},
{3.93725874973140*10^(+001), 3.38103756708408*10^(-001)},
{3.97803344301510*10^(+001), 3.13059033989267*10^(-001)},
{4.01875377004109*10^(+001), 2.93381037567084*10^(-001)},
{4.10008569157763*10^(+001), 2.64758497316637*10^(-001)},
{4.15090002045207*10^(+001), 2.48658318425760*10^(-001)},
{4.20171434932651*10^(+001), 2.32558139534884*10^(-001)},
{4.27257170521062*10^(+001), 2.37924865831843*10^(-001)},
{4.39402592493832*10^(+001), 2.48658318425760*10^(-001)},
{4.44485837589866*10^(+001), 2.30769230769231*10^(-001)},
{4.48561494709645*10^(+001), 2.07513416815742*10^(-001)},
{4.54668637659248*10^(+001), 1.78890876565295*10^(-001)},
{4.60773968400260*10^(+001), 1.52057245080501*10^(-001)},
{4.67876013865985*10^(+001), 1.41323792486583*10^(-001)},
{4.74978059331709*10^(+001), 1.30590339892665*10^(-001)},
{4.81063455778227*10^(+001), 1.23434704830054*10^(-001)},
{4.83067758479195*10^(+001), 1.44901610017889*10^(-001)},
{4.87094485967033*10^(+001), 1.69946332737030*10^(-001)},
{4.90108188852846*10^(+001), 1.94991055456172*10^(-001)},
{4.93123703947249*10^(+001), 2.18246869409660*10^(-001)},
{4.95126194439626*10^(+001), 2.41502683363148*10^(-001)},
{5.00155073277949*10^(+001), 2.77280858676208*10^(-001)},
{5.02204681193676*10^(+001), 2.54025044722719*10^(-001)},
{5.05278186962971*10^(+001), 2.20035778175313*10^(-001)},
{5.05299933466056*10^(+001), 1.98568872987478*10^(-001)},
{5.08373439235352*10^(+001), 1.64579606440072*10^(-001)},
{5.11445132796057*10^(+001), 1.32379248658318*10^(-001)},
{5.15540724210330*10^(+001), 8.94454382826476*10^(-002)},
{5.17601205377600*10^(+001), 5.54561717352415*10^(-002)},
{5.19656249919098*10^(+001), 2.68336314847943*10^(-002)},
{5.21705857834825*10^(+001), 3.57781753130590*10^(-003)},
{5.27745949066583*10^(+001), 4.11449016100179*10^(-002)},
{5.29746627350370*10^(+001), 6.61896243291592*10^(-002)},
{5.31749117842747*10^(+001), 8.94454382826476*10^(-002)},
{5.35783094164947*10^(+001), 1.07334525939177*10^(-001)},
{5.38802233676531*10^(+001), 1.27012522361360*10^(-001)},
{5.40813785211860*10^(+001), 1.41323792486583*10^(-001)},
{5.44889442331639*10^(+001), 1.18067978533095*10^(-001)},
{5.49990809513577*10^(+001), 8.22898032200358*10^(-002)},
{5.56114262340493*10^(+001), 3.75670840787120*10^(-002)},
{5.60200792711815*10^(+001), 3.57781753130590*10^(-003)}};

locking vs wind speed approximation

generalizedLocking={{0,.65},{30,.65},{52,0}};

ListLinePlot[{locking,generalizedLocking},PlotStyle->{Red,Black}]

c = conversion from mph to m/s

c=0.44704;

L=Piecewise[{{0.65,x<30 c},{0.65(52 c-x)/(22 c),x<52 c}}]

Plot[L,{x,0,30}]

Convolution of duty cycle and wind speed frequency

z=Table[0,{npts}];
For[i=1,i<npts,i++,z[[i]]=PDFdataValues[[i]] L/.x->windSpeeds[[i]]];

Total[z]

maxLocking=L/.x->0

maxLocking-Total[z]

If we were to make the interferometer locking completely independent of wind speed, then duty cycle increase would only be ~1%
N.B.: BNS, BBH range dependence on wind speed is another matter.

z=Table[0,{npts}];
For[i=1,i<npts,i++,z[[i]]=PDFdataValues[[i]] L/.x->windySeasonSpeeds[[i]]];

Total[z]

maxLocking=L/.x->0

maxLocking-Total[z]

If we were to make the interferometer locking completely independent of wind speed, then duty cycle increase during the windy season (April through June) would only be ~1.7%
N.B.: BNS, BBH range dependence on wind speed is another matter.

BNS range vs wind speed

Plots of BNS range vs wind speed in O3 are given in this elog entry:
https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=49682
(digitized from plots so approximate)

avg BNS range vs wind speed data

avgBNSrangeVsWindSpeed={{2.19607843137255*10^(+000), 1.10964912280702*10^(+002)},
{4.18300653594771*10^(+000), 1.09692982456140*10^(+002)},
{5.28104575163399*10^(+000), 1.09649122807018*10^(+002)},
{6.11764705882353*10^(+000), 1.09956140350877*10^(+002)},
{7.26797385620915*10^(+000), 1.10087719298246*10^(+002)},
{8.20915032679738*10^(+000), 1.09868421052632*10^(+002)},
{9.30718954248366*10^(+000), 1.09956140350877*10^(+002)},
{1.03006535947712*10^(+001), 1.10438596491228*10^(+002)},
{1.13464052287582*10^(+001), 1.09692982456140*10^(+002)},
{1.23921568627451*10^(+001), 1.09561403508772*10^(+002)},
{1.34379084967320*10^(+001), 1.09605263157895*10^(+002)},
{1.43790849673203*10^(+001), 1.09429824561404*10^(+002)},
{1.53725490196078*10^(+001), 1.09736842105263*10^(+002)},
{1.64705882352941*10^(+001), 1.09078947368421*10^(+002)},
{1.74640522875817*10^(+001), 1.08903508771930*10^(+002)},
{1.95555555555556*10^(+001), 1.09868421052632*10^(+002)},
{2.06013071895425*10^(+001), 1.09692982456140*10^(+002)},
{2.15947712418301*10^(+001), 1.08508771929825*10^(+002)},
{2.25882352941176*10^(+001), 1.08728070175439*10^(+002)},
{2.35816993464052*10^(+001), 1.08421052631579*10^(+002)},
{2.46274509803922*10^(+001), 1.09605263157895*10^(+002)},
{2.56732026143791*10^(+001), 1.08377192982456*10^(+002)},
{2.66666666666667*10^(+001), 1.09078947368421*10^(+002)},
{2.77124183006536*10^(+001), 1.06096491228070*10^(+002)},
{2.87058823529412*10^(+001), 1.05087719298246*10^(+002)},
{2.97516339869281*10^(+001), 1.08201754385965*10^(+002)},
{3.07973856209150*10^(+001), 1.06973684210526*10^(+002)},
{3.17908496732026*10^(+001), 1.07368421052632*10^(+002)},
{3.27843137254902*10^(+001), 1.06184210526316*10^(+002)},
{3.37777777777778*10^(+001), 1.05570175438596*10^(+002)},
{3.48235294117647*10^(+001), 1.04736842105263*10^(+002)},
{3.58692810457516*10^(+001), 1.04298245614035*10^(+002)},
{3.79084967320261*10^(+001), 1.00087719298246*10^(+002)},
{3.89542483660131*10^(+001), 1.02368421052632*10^(+002)},
{3.99477124183007*10^(+001), 9.34210526315789*10^(+001)},
{4.09934640522876*10^(+001), 1.05263157894737*10^(+002)},
{4.20392156862745*10^(+001), 1.04912280701754*10^(+002)},
{4.30326797385621*10^(+001), 8.14473684210526*10^(+001)},
{4.40784313725490*10^(+001), 9.62280701754386*10^(+001)},
{4.50718954248366*10^(+001), 1.00043859649123*10^(+002)},
{4.61176470588235*10^(+001), 9.53070175438596*10^(+001)}};

avg BNS range vs wind quantile data

avgBNSrangeVsWindQuantile={{1.59555089623536*10^(+000), 1.09320979538409*10^(+002)},
{4.74823743033343*10^(+000), 1.09287675695869*10^(+002)},
{8.96281698380130*10^(+000), 1.09060155427585*10^(+002)},
{1.16186898268345*10^(+001), 1.08832125465711*10^(+002)},
{1.30352904891466*10^(+001), 1.08741029320413*10^(+002)},
{1.50535612667623*10^(+001), 1.08524235785413*10^(+002)},
{1.72493632450106*10^(+001), 1.08399059673246*10^(+002)},
{2.05055885295774*10^(+001), 1.07747763936572*10^(+002)},
{2.46102436827679*10^(+001), 1.06696173388492*10^(+002)},
{2.77217782514324*10^(+001), 1.05369579980626*10^(+002)},
{3.39390192163171*10^(+001), 1.01400225307735*10^(+002)}};

mean BNS range vs wind binned data

meanBNSrangeVsWindBinned={{5.15000000000000*10^(+000), 1.09761240310078*10^(+002)},
{9.43187565858799*10^(+000), 1.10000000000000*10^(+002)},
{1.37545310853530*10^(+001), 1.09500775193798*10^(+002)},
{1.80364067439410*10^(+001), 1.09305426356589*10^(+002)},
{2.23182824025290*10^(+001), 1.08806201550388*10^(+002)},
{2.66409378292940*10^(+001), 1.08545736434109*10^(+002)},
{3.09635932560590*10^(+001), 1.06570542635659*10^(+002)},
{3.52862486828240*10^(+001), 1.04530232558140*10^(+002)},
{3.95681243414120*10^(+001), 9.88868217054264*10^(+001)},
{4.38500000000000*10^(+001), 9.66511627906977*10^(+001)}};

mean BNS range vs wind binned quantile data

meanBNSrangeVsWindBinnedQuantile={{5, 1.09757894736842*10^(+002)},
{7.5, 1.10021052631579*10^(+002)},
{9, 1.09826315789474*10^(+002)},
{11, 1.10052631578947*10^(+002)},
{13, 1.09521052631579*10^(+002)},
{15, 1.09536842105263*10^(+002)},
{17, 1.08910526315789*10^(+002)},
{19.5, 1.09557894736842*10^(+002)},
{23, 1.08694736842105*10^(+002)},
{35.5, 1.06726315789474*10^(+002)}};

locking vs wind speed approximation

Clear[BNS]
BNS[s_]:=Fit[avgBNSrangeVsWindSpeed,{1,x,x^2,x^3},x]/.x->s
ws=Transpose[avgBNSrangeVsWindSpeed][[1]];
ns=Dimensions[ws];
BNSlist=Transpose[Partition[Join[ws,BNS[s]/.s->ws],ns]];
ListLinePlot[{avgBNSrangeVsWindSpeed,BNSlist},PlotJoined->{True,True},PlotStyle->{Red,Black}]

ListLinePlot[{BNSlist,avgBNSrangeVsWindSpeed,avgBNSrangeVsWindQuantile,meanBNSrangeVsWindBinned,meanBNSrangeVsWindBinnedQuantile},PlotRange->Automatic,GridLines->Automatic,PlotStyle->{{Black,Thickness[.006]},Red,Blue,Green,Yellow}]

Convolution of BNS Range vs Wind Speed and wind speed frequency

z=Table[0,{npts}];
For[i=1,i<npts,i++,z[[i]]=PDFdataValues[[i]] BNS[s/c]/.s->windSpeeds[[i]]];

z

windSpeeds

windSpeeds/c

Total[z]

maxRange=BNS[s]/.s->0

maxRange-Total[z]

If we were to make the interferometer sensitivity completely independent of wind speed, then the yearly averaged range would increase by ~1.2 MPc

The Volume x Time integral, and BNS detection rate, would grow ~3% faster if wind had no influence, this amounts to ~2 weeks out of a 1 year observing run.

(maxRange/Total[z])^3-1

Windy Season

z=Table[0,{npts}];
For[i=1,i<npts,i++,z[[i]]=PDFdataValues[[i]] BNS[s/c]/.s->windySeasonSpeeds[[i]]];

z

windySeasonSpeeds

windySeasonSpeeds/c

Total[z]

maxRange=BNS[s]/.s->0

maxRange-Total[z]

If we were to make the interferometer sensitivity completely independent of wind speed, then the yearly averaged range would increase by ~1.5 MPc

The Volume x Time integral, and BNS detection rate, would grow ~4% faster if wind had no influence, during this 3 month “windy season” period.

(maxRange/Total[z])^3-1