I have been investigating the wire length values used in the matlab model since the model fitting code results on ETMY from https://alog.ligo-wa.caltech.edu/aLOG/index.php?callRep=10089 found a discrepancy in the UIM to PUM wire length. The value given by the model parameter file quadopt_fiber.m for this length is
330.8 mm.
However, the model fitting code converged to
340.0 mm +- 2 mm.
About 9 mm longer.
I started investigating this discrepancy by looking at the drawings of the wire jig and the PUM assembly. Since the UIM to PUM wire is a loop, the equivalent length between the UIM and PUM needs to be backed out from these drawings. From these drawings, I calculate the length of wire between the UIM blade tip clamp and the PUM prism is
337.61 mm.
The attached pdf, PUMwireLoopLength.pdf, contains the calculations and references for this number. The limiting assumption for this calculation is likely to be that the wire has an infinitely sharp bending radius going around the prism. In reality, a finite bending radius exists, which will tend to make this calculation a slight overestimate.
Still, the value is close but not quite there. Upon further investigation of the other wire lengths given by the model, I noticed that all the wire lengths are a few mm off from the values determined by the wire jig in D060516. My assumption has always been that the parameter file requires values referenced from the wire clamps (given by the wire jig), as it does for the d's. Thus, either all these values are out of date, or my understanding is incorrect. In particular, quadopt_fiber.m gives the top two stages of wire lengths as
pend.ln = 449.192 mm
pend.l1 = 308.585 mm
In contrast, the wire jig gives these as
pend.ln = 453.0 mm
pend.l1 = 305.8 mm
Since the model predicts the measured longitudinal modes very well with the UIM-PUM fitting correction, I made the assumption that pend.ln and pend.l1 are correct as listed in the parameter file. Therefore, my previous assumption that the model file requires clamp-clamp lengths is wrong. So I searched for an algorithm (by guess and check more or less) that would take the clamp-clamp wire jig lengths and convert them to the listed numbers in the parameter file. What I found was this:
pend.ln = (wire jig length) + pend.dm/pend.cn = 449.208
pend.l1 = (wire jig length) + (pend.dn + pend.d0)/pend.c1 = 308.521
The pend.d values are the distances from the wire clamps to the centers of mass. The pend.c values are the cosines of the wire angle from the vertical. With this, both lengths are within 10s of microns from the current quadopt_fiber.m values. Thus, this algorithm means that the wire lengths as given by the parameter file reference the center lines of the masses rather than the wire clamp positions.
Following this center line to center line convention for the UIM to PUM length, rather than clamp to prism we get:
pend.l2 = (clamp to prism length) + (pend.d1 + pend.d2)/pend.c3 = 337.61 + (pend.d1 + pend.d2)/pend.c3 = 338.924 mm
This value is about 1.1 mm from the value determined by the model fitting code, and it fits quite comfortably in the fitting code's +-2 mm error bar.
So, the good news is that the value determined by the model fitting code is consistent with the other metal wires under the assumption that the parameter file is working with center line to center line distances rather than clamp to clamp distances.
However, ssmake4pv2eMB5f_fiber.m, which compiles the parameter file appears to be assuming the values are in fact clamp-clamp. For example, near the bottom of the ssmake script, the pend.stage2 corrections have
ln = ln - 2*flexn/cn;
l1 = l1 - 2*flex1/c1;
l2 = l2 - 2*flex2/c2;
l3 = l3 - 2*flex3/c3;
where flex is the distance between the wire clamp and the effective flexure point and ln is equal to pend.ln (and so forth). Thus, it seems these corrections are assuming the parameter file references the clamp positions, not the center line positions. Additionally, higher up in the script around line 285 the vertical heights of the masses are calculated as
pend.tln = sqrt(pend.ln^2 - (pend.nn0-pend.nn1)^2) + pend.dm;
pend.tl1 = sqrt(pend.l1^2 - (pend.n0-pend.n1)^2) + pend.dn + pend.d0;
pend.tl2 = sqrt(pend.l2^2 - (pend.n2-pend.n3)^2) + pend.d1 + pend.d2;
pend.tl3 = sqrt(pend.l3^2 - (pend.n4-pend.n5)^2) + pend.d3 + pend.d4;
where the tl's are the 'true' vertical heights of the centers of mass, the n parameters represent the horizontal distance from the centers of mass of the wire clamps, and the d's again represent the clamp to center of mass distances. So for the top wire for example,
sqrt(pend.ln^2 - (pend.nn0-pend.nn1)^2)
gives the vertical length of the top wire, and
+ pend.dn + pend.d0
accounts for the clamp to center line distances for the stage above and below the wire. Thus, it seems again that the ssmake file is expecting clamp-clamp wire lengths from the parameter file.
However, putting clamp-clamp lengths into the parameter file does not provide the correct frequencies. So, the wire length mystery goes on...
The intent for the ssmake file is very definitely that, when pend.stage2=1, all wire lengths are interpreted as clamp-to-clamp, and all d distances are interpreted as "physical" d's, i.e., COM-to-clamp. (The current quadopt_fiber.m that is under discussion does set this flag correctly.) Moreover this behaviour has been checked against the equivalent Mathematica model both for this parameter set specifically and more generally.
Started ETMY TF at gps 1077929299 on opsws0 for M0 and R0 in undamped and damped config. The measurement will be running for ~15 hours. This is to assess for rubbing after installation in chamber, and before tomorrow's alignment check.
The measurement returned 0 for all excitations data. I tried again yesterday night with SR2 as a guinea pig and it did the same thing. I suspected some awgstream issues, so I tried running the awgstream command we use in get_sch_TF_M0_v9DQ_sma.m from the terminal, and it returned some error, cf below. Jim is curently taking a look at it
awgSetChannel : failed awgnewchannel_1(chntype = 1,arg1 = 0,awg_clnt[41][0] =o) H1:SUS-SR2_M1_TEST_L_EXC
Error code from awgSetChannel : -5
Error while opening SIStream: Error setting up an awg slot for the channel
Mitchell and I removed and bagged the 2200 lbs of dummy payload on the ISI #6 (I3#1.) Will continue to prep that for storage.
Thomas Vo, Greg Grabeel The install of the ITMy Ring Heaters is finished. Everything went smoothly with the operation, and even the temperature sensor on the lower ring heater survived. The lower ring heater resistance measured at 44.9 ohms, while the upper measured at 41.7 ohms, and the RTD measured at 109.6 ohms.
Red Team
If we believe the recent calibration of the POPAIR_B_RF18 (see alog 10442), the current recycling gain is roughly 6 with the ITMY ring heater at 7 W.
The attached is a trend of the POPAIR_B_RF18 from this morning. It occasionally became a good alignment which gave us about 60 uW. This is greater by a factor of 3.6 than the one when the ring heater was off (see alog 10448) -- remember that we used to have something like 16.5 uW at this diode.
[Jeff Arnaud]
ITMY top mass pitch actuation to test mass pitch response measured by the optical lever was taken on friday afternoon using a "colored" white noise excitation. This method works fine for measuring main couplings (P2P for eg), but hasn't been tested for the cross couplings (L2P). The reason the white noise is filtered through a low pass is because, when increasing the overall amplitude of the signal, it would saturate the DAC at higher frequencies (because of the antiAcqFilter in the coilout filter bank which has a zero at 1Hz and a pole at 30Hz).
The measurement was fairly quick (less than one hour) and gives good coherence until 3Hz. I attached a comparison of the measurement against the "wirerehang" model.
Note that the model and the measurement are very well matching until 2 Hz, but slightly differs (~2%) for the 3rd and 4th pitch mode (2.5 and 2.8Hz). From 3Hz, the signal is two noisy to make any comparison. I added (from Jeff's advise) the top to top pitch TF (2nd attachement), to see how the pitch3 and pitch4 differs at the top level.
Note also that the sign of the oplev phase signal had to be flipped to match the model, so Pitch oplev sign convention differs than SUS.
The next step is to do the same comparison for L2P, then fit the measured (or modeled?) TFs in order to create the L2P decoupling filter.
Attached is the measured vs modeled Top mass Length to test mass Pitch transfer function. There is an extra zero in the measured TF at 0.18Hz, which is below the first QUAD resonnance (0.44Hz). I checked the same TF taken on ETMX, and it doesn't have the same feature, so it's unclear where it comes from.
8:57 --> PSL Check List (OK) 9:30-11:15 Heading to MidY- Jodi 9:40-10:16 Searching for parts at MidY/EndX – Alexa/Jax 9:45-12:25 HAM4 HEPI attachment work – Huge/Mitchell 10:33-12:00 Going into LVEA West Bay area – Travis 10:45-10:56 Heading into LVEA to test a dust monitor – Richard 11:21-12:00 Going into LEVA – Thomas Vo 13:00-15:12 Heading to EndX/EndY (cleaning) - Cris 12:20-14:24 Back to MidY – Jodi 13:08- Working on EndY ISC – Filiberto/Aaron 13:18-15:16 Work on ITM Y TCS (ring heater) – Thomas/Greg 13:30- Heading to End Y to unlock the quad – Travis 13:31-14:20 Going to End Y to install dust monitor #2 – Jeff B. 13:37-15:34 Working on End Y (fiber attachment) – Cyrus 14:05 ---> LVEA transitioned to Laser Hazard
First screenshot: Even though the left MEDM screen makes it look like STAGE1 whitener/awhitener pair is all green though the awhitener is off and mismatched with whitener. Also, "L1 ASC" label is hard coded.Silly.
Second screenshot: After a fix. MEDM is displaying the whitener and awhitener separately. "Off" and "On" buttons (which worked) still work on both at the same time. Also it says H1 when it's H1. Not silly.
Red team,
We wanted to calibrate the POPAIR_B demodulated signals into something meaningful. We calibrated them into uW in the digital system using the measured calibration factors (see alog 9845). See the attached for how they now look. Also, we accordinly corrected the LSC trigger thresholds in the guardian which depend on the POPAIR_B_ calibration. We confirmed that the guardian works fine with this new calibration.
Mitchell & I got the Horizontal L4Cs leveled this morning on WHAM4. One Dial Indicator tree had been completely dislodged from the system. Please try to avoid these and certainly let us know when you possibly disturb them, thanks. No issues to report in the L4C leveling.
Next, Actuator attachment (2 days) then the doors. Vertical L4Cs can go on after the doors.
Since an SR560 can only take 1 V dc input, and can only output 10 Vpp, you can use this box to extend the input and output ranges of an SR560 by a factor of two.
I telneted into the procServ IOC for end Y and saw the following error messages: epics> attempting to connect to host: 10.1.3.64 port: 8003 Error: tcp_connect: socket: Too many open files CAS: Client accept error was "Too many open files" attempting to connect to host: 10.1.3.64 port: 8003 Error: tcp_connect: socket: Too many open files attempting to connect to host: 10.1.3.64 port: 8003 Error: tcp_connect: socket: Too many open files attempting to connect to host: 10.1.3.64 port: 8003 Error: tcp_connect: socket: Too many open files CAS: Client accept error was "Too many open files" I restarted the IOC, and the errors did not reappear, but none of the expected state reporting messages were shown. I tried pinging the Comtrol at 10.1.3.64 and did not get a response.
The switchport for the Comtrol has been down since Friday afternoon. The Comtrol box is probably unplugged/powered off.
Jeff said the Comtrol was unplugged. He plugged it back in and I restarted the IOC. This time it worked.
Since the measurement is not done yet, I asked Jeff to give me the model of the TF from PUM to the test mass angle to angle.
Since I don't know enough about the model, I made the model generate the TF data, and used my wrapper for vectfit3 named happyVectfit to fit the model TF and invert it. This way when the real TF is measured I can use the same script without much modification.
You want to give happyVectfit a large order of fit, which initially produces many useless poles and zeros, but the script weeds out useless ones automatically, making things almost always hands-free. If you want you can give the script some criteria regarding what poles/zeros are useless.
~controls/keita.kawabe/fit/invertPUM2TSTmodel.m looks at the model, calls happyVectfit, inverts the fit, discards unstable poles and outputs plots (attached) as well as foton-compatible filter definitions.
In the attached plots, each DOF for each mass has two pages, the first one being the model TF and the fit, the second one being the filter generated and the residual that is just a pendular type TF. The difference between ITM and ETM is wire VS fiber.
According to Jeff the PIT resonance of the model is inconsistent with reality so we still need to wait for the real measurement.
Just to make sure, the newly generated filters are put in H1:SUS-ITMX_L2_DRIVEALIGN_P2P, Y2Y, ETMX P2P and Y2Y as invP2P and invY2Y.
In the plots showing the model and the fit, legend say "fit*roll off" but actually the plot doesn't include the roll off filter.
Kiwamu, Yuta, Stefan Since all our OLG functions in PRMI never really made any sense, we locked PRY and carefully measured the actuation functions from BS to REFL_45_I and from PRM to REFL_45_I. Plot 1 shows both BS and PRM transfer functions in ctsREFL45 / cts ISCinf drive (i.e. total actuation function). Both are closed loop corrected. The BS makes sense: it is almost 1/f^2. I don't understand the PRM - need to sleep over it. Plot 2 shows the OLG and the CLG. Plot 3 is a snapshot of (almost) all relevant settings. The data is in ~controls/sballmer/20140302: BSdrive.xml PRMdrive.xml data/BS2REFL_mag_rad.txt data/PRM2REFL_mag_rad.txt data/plotIt.m To do next: -Understand PRM: for one we should check that the acquire mode TF of PRM M3 is as expected. -Fit inverse actuation filters that make PRM and BS match
Stefan, Kiwamu
We then performed a fitting to get the zpk parameters out of the PRM actuator data. We used LISO. Here are the best parameters. We started from the HSTS suspension model, which was in the SUSsvn directory, as our initial guess. Since the data was not available at the low frequencies, we left the resonance at 68 mHz untouched.
=== fit parameters ===
zero 2.3327562304 7.4260090788 ### fitted (name = zero0)
zero 79.7052984298 ### fitted (name = zero1)
zero 7.1547795456 ### fitted (name = zero2)
zero 9.3953133943 ### fitted (name = zero3)
pole 2.8624375188 10.8992566943 ### fitted (name = pole0)
pole 1.6227455287 9.5958223237 ### fitted (name = pole1)
pole 6.839318e-01 2.754374e+01
factor 3.3153778483 ### fitted
We did the same fitting business on BS. We left the resonance at 42 mHz untouched.
=== fit parameters ===
zero 1.5468779344 47.4044594423 ### fitted (name = zero0)
pole 1.5752161758 20.5781923052 ### fitted (name = pole0)
pole 1.1385114613 8.7983560598 ### fitted (name = pole1)
# from BSFM model
pole 4.201750e-01 3.057337e+01
# from foton
pole 37.5835 1.04298
pole 104.999 0.95652
pole 400
pole 100
zero 1.14018 0.814411
zero 112.186 1e7
zero 30
factor 47.5420319676 ### fitted
Update on the PRM fitting:
We took some more data points of PRM at higher frequencies to make the fitting more accurate at the high frequencies. We extended the swept sine to about 250 Hz.
Here are the new set of parameters:
=======================================
zero 2.3228474583 7.4113193282 ### fitted (name = zero0)
zero 377.9190677283 41.5971099178m ### fitted (name = zero1)
zero 15.9199488645 ### fitted (name = zero2)
zero 7.4012889472 ### fitted (name = zero3)
pole 2.8669608985 10.2813809068 ### fitted (name = pole0)
pole 1.6247562788 9.6336403562 ### fitted (name = pole1)
pole 144.4376381898 487.5251791891m ### fitted (name = pole2)
pole 6.839318e-01 2.754374e+01
# foton poles and zeros
pole 314.966 0.95652
factor 3.3634583469 ### fitted
I forgot to attach the plot.
We resolved the the non-sensical Q's below 0.5, removed a meaningless pole-zero pair and refitted. This tie we also added a small delay:
=======================================
zero 2.3543597867 8.0633003881 ### fitted (name = zero0)
zero 16.3221439613 855.9042353766m ### fitted (name = zero1)
zero 3.5808330704 ### fitted (name = zero2)
pole 2.8457926226 10.9197851152 ### fitted (name = pole0)
pole 1.6165053404 8.7715269619 ### fitted (name = pole1)
pole 37.2960505517 ### fitted (name = pole2)
pole 6.839318e-01 2.754374e+01
# foton poles and zeros
pole 314.966 0.95652
delay 120u
factor 3.2012088652 ### fitted
=======================================
In foton:
zpk([0.139329+i*2.35023;0.139329-i*2.35023;9.53503+i*13.2475;9.53503-i*13.2475;3.58083],
[0.130304+i*2.84281;0.130304-i*2.84281;0.092145+i*1.61388;0.092145-i*1.61388;
0.0124154+i*0.683819;0.0124154-i*0.683819;37.2961],1,"n")
Its inverse (including a Q=1, f=1 pendulum):
=======================================
zpk([0.130304+i*2.84281;0.130304-i*2.84281;0.092145+i*1.61388;0.092145-i*1.61388;
0.0124154+i*0.683819;0.0124154-i*0.683819;37.2961],
[0.139329+i*2.35023;0.139329-i*2.35023;9.53503+i*13.2475;9.53503-i*13.2475;3.58083;
0.5+i*0.866025;0.5-i*0.866025],1,"n")
Attached is a plot of measured and fitted actuation functions for BS and PRM. Plot 2 shows the residual relative gain of BS/PRM - certainly a lot better than before...
Also, for completeness, here are the foton filters for the BS plant:
zpk([0.0163157+i*1.54679;0.0163157-i*1.54679],
[0.0382738+i*1.57475;0.0382738-i*1.57475;0.0647002+i*1.13667;0.0647002-i*1.13667;
0.00687158+i*0.420119;0.00687158-i*0.420119],1,"n")
as well as the inverse plant. Again, it includes a f=1Hz, Q=1 pendulum. Since the BS is 1/f^4, this also includes two 300Hz real poles as roll-off:
zpk([0.0382738+i*1.57475;0.0382738-i*1.57475;0.0647002+i*1.13667;0.0647002-i*1.13667;
0.00687158+i*0.420119;0.00687158-i*0.420119],[0.0163157+i*1.54679;0.0163157-i*1.54679],1,"n")
zpk([],[0.5+i*0.866025;0.5-i*0.866025],1,"n")zpk([],[300;300],1,"n")
Before starting measuring Pitch to Pitch on ITMY, I realized the oplev signal was oscillating at high frequencies. I took a spectra and compared with other oplevs, and the noise floor from 1000Hz is ~2 orders of magnitude higher compared to ITMX. Thomas pointed out that this oplev doesn't have an analog whitening filter yet, so we should double check when it will be installed.
dtt template was saved under SusSVN/sus/trunk/QUAD/H1/ITMY/SAGL2/Data/2014-02-28_Oplev_Spectra.xml