This page is for writing explanations or plans which we are not confident about and may be subject to change. For instance, a possibe course of action to carry out a particular type of measurement or the plan to follow to identify a noise source.It's also for temporary random notes.
I haven't seen a report about the temperature around the vacuum chambers during O3GK, so I took a look to the data and post it here.
O3GK happened from April 7, 8:00 UTC to April 21, 0:00 UTC 2020.
Temperatures are approximate within ±0.1 °C.
See pictures attached.
Temperature we need for BS and SR3.
Given the fact that
- The SF fishing rod in BS is out of range,
- The SF fishing rod in SR3 is not functional,
- The BF fishing rod in SR3 is out of range,
we decided to adjust the amount of ballast mass in BS and SR3.
The amount of ballast mass necessary for the adjustment depends on two elements, the temperature and the buoyancy correction. The latter depends also on the temperature.
With the aim of measuring the bouyancy effect I requested to have the same temperature as in O3GK (klog ) on the day of the venting. This was requested because I assumed keeping such a temperature during O4 would be easy to achive. However, on the day of the venting we had a different temperature (klog ) that I wrongly assumed it was the one we had in O3GK:
yet to be checked
yet to be checked
yet to be checked
Because I measured the bouyancy effect during the venting, for Type-B work it would be better to have the same temperture we had during venting, not during O3GK.
- Check the temperature, take note of it and tell Yokozawa-san in case it's not good.
- Set the suspension in SAFE mode.
- Use the IP horizontal FRs to set the IP very close to the setpoint.
- What is the appropriate position of GAS filters in this stage? It does not matter.
- Make sure the suspension goes to ALIGNED state without problems. For reference take note of
- The amount of IM-Y actuation required to reach such a state and
- The IM-Y displacement.
- Take note of the oplev setpoints.
Remove LVDT-actuator units
Lock the suspension in such a position and take note of the position according to LVDTs.
- Remove the LVDT-actuator units and disassemble them one by one. Take notes and pictures.
Install F0 yaw motor
- Lock F0-Y with cable ties.
- Install the motor as usual. Make sure it's functional.
- Move the motor until the oplev signal is roughly close to zero yaw.
- Turn in on the control system:
- GAS: DC and AC.
- IM: DC (oplev) and AC.
- BS optic: AC.
- Offload IM-Y actuation onto F0-Y motor.
Ballast mass adjustment
Proceed with this task.
This is Type B oplev diagonalization procedure I need:
QPDs calibration factors
- Notes: Ask for raw calibration data to Terrence.
- Copy the templates in /kagra/Dropbox/Subsystems/VIS/TypeBData/SRM/OPLEV/templates/ in a suitable directory
- Align the optic into a convenient orientation. This step requires additional explanation.
- Open SRM_TM_OPLEV_L_PREDIAG.xml and execute it.
- One commented matlab file.
- We need a diagnosis step here!
(STEP 1) Excite TM-L with white noise and calculate the transfer function from y_len to x_len. The naming convention is very bad, so mind the names
The TM-L mode at 0.658 Hz appears with high coherence. Yaw modes appear but have low coherence: TM-Y at 1.02Hz (#27) and 1.375 Hz (#32).
At the resonance frequency of 0.65 Hz calculate and write down the following quantities:
theta_l = arctan( - x_len / y_len ); the sign of the ratio x_len / y_len can be read from the phase of the transfer function from y_len to x_len.
L = Eq. (15).
(STEP 2) The same approach is used to to calculate theta_t. Excite TM-P with white noise and calculate the transfer function from y_tilt to x_tilt. The naming convention is still bad so keep minding the names:
- y_tilt = K1:VIS-SRM_TM_OPLEV_TILT_PIT_OUTMON
- x_tilt = K1:VIS-SRM_TM_OPLEV_TILT_YAW_OUTMON
At the resonance frequency of 0.85 Hz calculate and write down the following quantities:
theta_t = arctan( - x_tilt / y_tilt ); the sign of the ratio x_tilt / y_tilt can be read from the phase of the transfer function.
(STEP 3) Calculate the same angle by actuating in yaw. Both estimates should be similar. Excite TM-Y with white noise and calculate the transfer function from x_tilt to y_tilt (inverse of the one in item 2!). At the resonance frequency of 1 Hz or 1.38 Hz calculate and write down the following quatities:
theta_t = arctan( y_tilt / x_tilt ); the sign of the ratio y_tilt / x_tilt can be read from the phase of the transfer function.
- (STEP 4) Use Eq (20) in Terrence document to calculate beta. Use the recently calculated value of theta_t from (STEP 2/3) and the values of x_tilt, y_tilt and L calculated in (STEP 1).
(STEP 5) Calculate L_beamP using Eq. (23) using theta_l from (STEP 1) and x_len and y_len from (STEP 2).
(STEP 6) Calculate L_beamY using Eq. (23) using theta_l from (STEP 1) and x_len and y_len from (STEP 3).
- (STEP 7) Calculate Y using using Eq. (24) using x_tilt and y_tilt from (STEP 3).
- (STEP 8) Calculate P using using Eq. (24) using x_tilt and y_tilt from (STEP 2).
- (STEP 9) Calculate delta_Y using Eq. (21) L_beamY and Y.
- (STEP 10) Calculate delta_P using Eq. (22) L_beamP and P.
This is a notes about Guardian TODO list
- Modify real-time model. Add
- OBSERVATION filter bank for IM.
- Switch to transition from ALIGNED to OBSERVATION state.
- Add threshold definition channels for rms monitors.(This is for the criteria to go into CALM-DOWN state.)
- Add new filter names to vistools, wgich will generate whole set of useful functions to manipulate the filter block.
- Make the already function "engageControlSequence" turn the new filter banks on.
- Is there a "disengageControlSequence" function?
- Write a "gooToo" function to turn matrix switches on and off. It would work something like gooToo('OBSERVTION'), gooToo('ALIGNED'), etc.
The channel names for the new block are something like: K1:VIS-BS_OBSDAMP_P01_*
Here is an updated version of the TODO list:
- Define the following states: OBSERVATION, ENGAGING_OBSERVATION, DISENGAGING_OBSERVATION, ENGAGING_PAYLOAD_TRIPPED_FROM_OBS_STATE (choose a better name, maybe OBS2PAY_TRIPPED).
- Move vistools_fake with the modifications into vistools or vistools_test.
- Define gootoo function. Do we need this?
- Put null filters in all new filter banks. What's the motivation?
- Modify beginControlSequence in order to allow selective disengagement of filters in payload and tower when going from ALIGNED to OBSERVATION state. (Used in OBS2PAY_TRIPPED also.)
- Modify disengageControlSequence in order to allow selective engagement of filters in payload and tower when going from OBSERVATION state to ALIGNED. (Used in OBS2PAY_TRIPPED also.)
It will use default ramp values, we don't have to do anything extra (within enableControl --> visObj.dampRamp).
- Write function to switch martrix on or off using regular Guardian.
- Set the variable state='OBSERVATION'.
- When the system trips in OBSERVATION state it will go to
- an intermediate state (OBS2PAY_TRIPPED) and from there to PAYLOAD_TRIPPED if the payload is the one tripping.
- to TOWER_TRIPPED if if the tower is the one tripping.
Inertial damping switch in Type B memd screen: see klog 8825.
This is just a note about the switch that changes
Type A DARM transfer function measurements
See example in klog entry: 11595: /users/VISsvn/TFNoisebudget/ETMY/ETMY_MNYvsDARM20191117.xml
- Swetp sine
- Excitation sine
- Amplitude set in measurement tab Format: Envelope, edit.
This entry is about Type B Guardian
The Guardian manual is here.
From herer cd to vis/k1/guardian/
For each Type B suspension there is one Guardian node.
- Each Type B node is a device node that talks directly to hardware.
Each node is a daemon. They load system modules (according to the manual).
How to check the vistools functions
- controls@k1ctr0:~$ userapps
- From herer cd to vis/k1/guardian
- from vistoolstest import *
SR2=Vis('SR2') # This creates an instance of VisObj called SR2.
- dir(SR2) # This provides the list of functions in vistools.
- help(SR2.witRead) # Help for a particular python function.
- SR2.levels() # Provides a list of levels defined in SR2 instance.
- SR2.testPvs() # Provides a list of TEST channels.
- SR2.testPvs(['TM']) # Names of test channels in the 'TM' level; note the square brackets.
- SR2.testPvs(['TM','IP']) # Similar to the previous command.
- SR2.witPvs() # Names of witness channels, aka monitor channels.
- SR2.witPvs(['IP','IM']) # Similar to the previous command.
- SR2.dcctrlPvs() # Names of DC control channels in the tower part.
- SR2.dcctrlPvs(['BF']) # Similar to the previous command.
- SR2.setPvs() # Names of setpoints channels in the tower.
- SR2.olSetPvs() # Names of setpoints channels for the payload.
- SR2.olSetPvs(['IM']) # Similar to the command above.
The following lines are to create a guardian from a file. See Kokeyama-san's klog entry 906.
The name of the Guardian file is:
Creation and start medm Guardianscreen
- controls@k1ctr0:/opt/rtcds/userapps/release/vis/k1/guardian$ guardctrl create guardian_fake
- controls@k1ctr0:/opt/rtcds/userapps/release/vis/k1/guardian$ guardctrl start guardian_fake
- controls@k1ctr0:/opt/rtcds/userapps/release/vis/k1/guardian$ guardctrl medm guardian_fake
- or alternatively guardian$ guardmedm guardian_fake
After finishing the work it's convenient to destroy the fake Guardian by typing:
- controls@k1ctr0:/opt/rtcds/userapps/release/vis/k1/guardian$ guardctrl destroy guardian_fake
Guardian uses snapshots for each states; see this link for the location of the files.
- The snapshot related variables are defined in section "# Tool for taking safe snapshot" from line 86 to 103 of TYPEB.py
- Time constants for ramps are defined in class timeConsts() in lines from 47 to 56; additionally, typeBtime=timeConsts() and a ramp dictionary are defined from line 67 to 75.
- Edges: defines paths between states.
- beginControlSequence(stateObj,level): changes the configuration of the filter banks in ordert to reach each state. It calls enableControl(level):
- Where is the visObj created in the nodes for each suspension?
- Where is the 'TOWER' state defined?
- What are the witness channels? See witRead vistools function.
- How does Guardian know what are the SET blocks? See setRampWrite vistools function.
- How does Guardian know what are the DCCTRL blocks? See dcctrlPressButton vistools function.
This entry is about IP LVDT correction with the seimometer signal
ther people have been working in the correction of the IL LVDT using the seismometer signal
In order to properly damp the motion of the IP we would like to estimate the motion of the IP table w.r.t. an inertial reference frame. However, we currently don't have an appropriate inertial sensor for this task. The aim of sensor correction is to use the readout of a seismometer on the ground in order to remove the contribution of the ground motion from the IP LVDT readout, which provides the relative displacement of the IP table with respecto to the ground.
Sensor correction requires an estimate of the ground motion in order to remove it from the IP LVDT signal. In reality, what is required is an estimate of the motion of the platform which supports IP at the top of the frame. An infinitely rigid frame the transfer function will be one.
Notes about the seismometer:
- Its signals are proportional to the velocity. Therefore, it requires an integrator.
- The signals have an offset, which apparently is not compatible with the integrator.
In End X suspension the DC offset was removed with a 4th order Butterworth high-pass filter with a XXXXX frequency of 0.5 mHz. In such suspension the filter is called "butt".
- The seismometers we use are good above 40 mHz. Miyo-kun placed two seismometers of the same kind next to each other and there was no coherence below 40 mHz.
Notes about the filters
How to find whaty are DQ channels available
controls@k1ctr3|20190828> ssh k1sum0
controls@k1sum0:~$ conda activate ligo-summary-3.7
(ligo-summary-3.7) controls@k1sum0:~$ FrChannels /frame0/science/12510/K-K1_R-1251005728-32.gwf | grep DQ | more
SR2 GAS filter control
Context: There's high coherence of the GAS LVDT with the vertical ground motion.
The F0 transfer function measured on the 27th of July were not successful, therefore, I measured again for the sake of health. It tuned to be alright.
Resonant frequencies of the GAS filter transfer functions are:
Oplev control in SR3
Context: On Friday Enomoto-kun implemented new filters for the SR3 optic local control. See klog entry 10014. The aim is to control lower frequency motion. What frequency?
- The change applies to yaw and pitch.
- What did we have before?
We have two TFs for the suspension: susmodel and susmodel2. The one called susmodel2 is more detailed.
The TF shows two resonances at 1 Hz and 1.379 Hz.
- The damping is achived with two fiters:
gain_: simple overall gain of 50.
damp_: one zero at the origin and three poles at 10 Hz. This filter provides velocity damping at the resonances.
Unity gain frequency band: from 0.88 Hz to 1.55 Hz.
- Enomoto-kun implemented two filters:
He used susmodel2.
- The damping is achived with two filters:
HBW (high bandwidth) replaces damp_. This filter has an effect at higher frequencies.
LFboost has an effect at lower frequencies.
The filter HBW has a zero at 0.3 Hz, two poles at 30 Hz and an elliptic low pass filter. The elliptic type was selected because of its phase properties at low frequencies.
- What are the parameters of the elliptic filter?
- 1st frequency:
- Passband ripple:
- 2nd frequency:
- The filter LFboost has a pole at the origin and a zero 0.5 Hz. At high frequencies has a gain of about 6 dB, but it should be 0 dB. How to fix this?
The unity gain frequency band goes from DC to 4.3 Hz.
- What I changed: I changed the gain of the LFboost; I multiplied by 0.5 (-6 dB).
I found the real-time models at /opt/rtcds/userapps/trunk/vis/k1/models/.
Noise hunting in SR3 optics' residual motion
Following the plan for noise source identification I measured the coherence between the following degrees of freedom:
- TM-L, TM-P ⇔IM-L, IM-P.
- TM-L, TM-P ⇔ IP-L.
- IM-L, IM-P ⇔ IP-L.
The highlights for the ALIGNED state are
- Directory: /kagra/Dropbox/Subsystems/VIS/TypeBData/SR3/Noise/Measurements/20190805/
- File: SR3_ALIGNED_TM_OPLEV_ASD.xml
TM longitudinal: 0.55 µm,
TM longitudinal speed: 0.62 µm/s,
TM pitch: 0.21 µrad.
TM yaw: 0.28 µrad.
Additionally there is a large peak in TM-L, TM-P and TM-Y at 0.158 Hz.
- There is high coherence between the following degrees of freedom and frequency bands:
TM-L and TM-P, 0.150 Hz and 0.9 Hz. This is the reason I suspect of IM-L to TM-P coupling. See SR3_ALIGNED_coherence_TM.png.
IM-L and TM-L and IM-L and TM-P, 0.35 Hz to 0.8 Hz. See SR3_ALIGNED_coherence_TM-IM.png.
IM-P and TM-P, 0.15 Hz and 1 Hz. See SR3_ALIGNED_coherence_TM-IM.png.
IM-P and TM-L, 0.15 Hz and 0.8 Hz. See SR3_ALIGNED_coherence_TM-IM.png.
IP-L and each of IM-P, TM-L and TM-P, 0.135 Hz and 0.4 HZ. See SR3_ALIGNED_coherence_TM-IM-IP.png.
IP-L and each of IM-L, IM-P, TM-L and TM-P, above 0.4 Hz has many peaks of coherence up to above 1 Hz. See SR3_ALIGNED_coherence_TM-IM-IP.png.
- The conclusions of these measurements are:
- The motion of the IP in the longitudinal direction induces motion in the optic in pitch and longitudinal in the frequency band from 0.135 Hz to 0.4 Hz. This should be fixed at the IP.
- The motion of the IM in the longitudinal direction induces motion in the optic pitch and length in the frequency band from 0.3 Hz to 0.8 Hz. This should be fixed with L2P and L2L control loop.
- The motion of the IM in pitch introduces motion in the optic in pitch and logitudinal in the frequency band from 0.135 Hz to 1 Hz. The motion in the band from 0.135 to 0.4 Hz is likely ground motion coming from the IP, however, the motion from 0.4 Hz to 1 Hz should be fixed with P2L and P2P filters.
Motion in optic yaw still has to be investigated. There are outstanding features between 1 Hz and 2 Hz. Comparison with the motion in FLOAT state this seems to be control noise. See SR3_FLOAT_TM_displacement2.png.
On Friday afternoon I found high coherence between SR3 L and P degrees of freedom in at least two frequency bands, as measured by the oplev. High coherence is observed in both states ALIGNED and FLOAT.
Files: SR3_ALIGNED_TM_OPLEV_ASD.xml, SR3_FLOAT_TM_OPLEV_ASD.xml
Possible reasons for the high coherence are:
The oplev was not successfully diagonalized in those frequency bands. In this case the high coherence would be a consequence of measurement coupling between L and P and not to a real motion of the optic. In this case we would have to identify which one of the two degrees of freedom exhibits real motion. I have the impression thisis unlikely.
Lack of balance in optic coil-magnet actuators. Although the actuators have not been balanced yet, it's unlikely this is the main cause becasue the high coherence is also observed in FLOAT state, in which the control system is off.
Pitch motion happens as a consequence of the longitudinal motion in upper stages. I tend to think this is the most likely cause of high coherence.
There is an external environmental excitation. This may be acoustic noise or ground motion leaking through the suspension into the optic. It may be something affecting the oplev optics directly, but it's unikely because the effect is seen at low frequencies.
Plan for noise source identification.
Find out the frequencies in which the oplev was diagonalized. Review the diagonalization procedure.
Balance the coils. Excite the optic using the saddle configuration and change actuator gains until the motion of the optic dissapears. Use the same frequency as in the oplev diagonalization.
Look for coherence between the motion of the optic and upper stages:
- TM-L, TM-P ⇔IM-L, IM-P.
- TM-L, TM-P ⇔ IP-L.
- IM-L, IM-P ⇔ IP-L.
Change and monitor enviromental conditions:
Ask Yokozawa-san whether he has an ASD of the acpustic noise inside the clean rooms and compare.
- Turn off the filter fan units (FFUs) inside the clean room and repeat the measurements.
- Place a microphone close to the oplev optics and another one close to the IP, measure the amplitude spectral density of the acoustic excitation with the fans off and on and search for coherence with the TM/IM/IP motion.
- Place an accelerometer on each oplev plaforms and repeat previous item.
Plan for reducing control noise
Reduce gain of control signal. This is in principle something quick and easy to do.
- Check the values of the unity gain frequencies (UGF) in SR2 optics control loops.
- In case the control noise is higher than the UGF roll-off the filter.
- In case the control noise is within the control frequency band check whether reducing the gain worked. If not continue with the noise hunting.