Commit 12e96f62 authored by Daniel Brown's avatar Daniel Brown

Applying fixes for beamsplitters and mirror smotion. Tilts for beamsplitters...

Applying fixes for beamsplitters and mirror smotion. Tilts for beamsplitters and mirrors still to be checked
parent 0d8310af
......@@ -60,8 +60,13 @@ added features:
This removes the phase modulation like term that appears with waist position modulation.
bug fixes:
o Minus sign fixes have been applied for suspended components: mirrors and beamsplitters
this doesn't seem to have affected any results shown before, but does affect the sign
of some transfer functions. The minus sign problem was the direction in which a mirror moves
relative the force applied to it.
o RF frequency mixing matrix wasn't getting reset between runs and causing spurious frequency couplings
o Fixed problem with small signals jumping between being either a TF or a signal, getting an odd factor of two occasionally
o Beamsplitter fsig targetting z was not being applied
o $fs was not working correctly when fsig was first frequency and RF the second
2.1 -> 2.2 (June 2017)
......
......@@ -712,7 +712,7 @@ void fill_bs_signal_rhs(signal_t *signal, ifo_matrix_vars_t* M_car, ifo_matrix_v
// the signal to the motion term, which then generates the sidebands
// in the matrix.
int xidx = bs->x_rhs_idx + i;
switch(bs->motion_type[i]) {
case Z:
if(signal->type == SIG_PHS) {
......@@ -757,19 +757,28 @@ void fill_bs_signal_rhs(signal_t *signal, ifo_matrix_vars_t* M_car, ifo_matrix_v
}
}
if((signal->type == SIG_AMP || signal->type == SIG_PHS) && bs->mass == 0.0){
if((signal->type == SIG_AMP || signal->type == SIG_PHS || signal->type == SIG_Z) && bs->mass == 0.0){
for(f=0; f<M_sig->num_frequencies; f++){
frequency_t *f_sig = M_sig->frequencies[f];
double phase = (90.0 + f_sig->order * signal->phase);
double _factor = signal->amplitude * EPSILON * 0.5; //Epsilon/2 for fsig
double turn, _ph1;
if(signal->type == SIG_AMP)
phase -= 90;
// TODO check refractive index
_factor *= 2.0 * (1.0 + f_sig->carrier->f / inter.f0) * sqrt(bs->R);
_ph1 = bs->phi * ((1.0 + f_sig->f / inter.f0) + (1.0 + f_sig->carrier->f / inter.f0));
{ // TODO check refractive index
// amplitude modulation (test)
if (signal->type == SIG_AMP) {
phase -= 90.0;
// energy conserving amplitude modulation uses EPSILON/4
_factor *= 0.5 * sqrt(bs->R);
} else if(signal->type == SIG_PHS) {
_factor *= 2.0 * (1.0 + f_sig->carrier->f / inter.f0) * sqrt(bs->R);
} else if(signal->type == SIG_Z) {
double k = TWOPI / init.lambda;
_factor *= 2.0 * k *(1 + f_sig->carrier->f / inter.f0) * sqrt(bs->R);
}
_ph1 = bs->phi * ((1.0 + f_sig->f / inter.f0) + (1.0 + f_sig->carrier->f / inter.f0));
}
if(!node1->gnd_node && !node2->gnd_node){
double factor = _factor * cos(bs->alpha_1 * RAD);
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment