mdc2 and ssm models - aei.mpg.de · the purpose of this note is to simulate mdc2 outputs using ssm...

40
MDC2 and SSM models M Hewitson LTP DA Meeting Trento November 2008

Upload: others

Post on 24-Oct-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

MDC2 and SSM models

M HewitsonLTP DA MeetingTrento November 2008

Page 2: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

SSM Tutorials

2

A beginner’s guide to using the SSM class for LTP folks -- Part 1

M Hewitson, 06-10-08

Here are my experiences while learning how to use the SSM class of LTPDA. It might be useful to others.

NOTE: the following examples require a CVS tree that is up-to-date as of 10:45 am 06-10-08 CET.

Introduction

The following set of tutorials assume you have the LTP SSM models installed (cvs checkout of the ltpda_ssm_models module) and added to your ltpda_startup file. Here’s how it looks

in my ltpda_startup.

SSM_MODELS = '/Users/hewitson/working/ltp/ltp_ssm_models';

Now we can easily build our first model. All models are built by calling the SSM constructor: ssm(). To see which built-in models are available to you:

>> ssm(plist('built-in', ''))001: DFACS_10_Drift_Mode_3_1_closed_loop_phase002: DFACS_11_Drift_Mode_3_2_open_loop_phase003: DFACS_12_Drift_Mode_4_1_closed_loop_phase004: DFACS_13_Drift_Mode_4_2_open_loop_phase005: DFACS_14_Drift_Mode_5_1_closed_loop_phase006: DFACS_15_Drift_Mode_5_2_open_loop_phase007: DFACS_16_Drift_Mode_6_1_closed_loop_phase008: DFACS_17_Drift_Mode_6_2_open_loop_phase009: DFACS_18_Drift_Mode_7_1_closed_loop_phase010: DFACS_19_Drift_Mode_7_2_open_loop_phase011: DFACS_1_Normal_Mode_Default012: DFACS_20_Drift_Mode_8_open_loop_phase013: DFACS_21_Drift_Mode_9_open_loop_phase014: DFACS_22_Drift_Mode_10_open_loop_phase015: DFACS_2_Science_Mode_1_M3016: DFACS_3_Science_Mode_2_Submode_1_M1_Transition017: DFACS_4_Science_Mode_2_Submode_2_M1_Performance018: DFACS_5_Science_Mode_1_All_Optical_Readouts019: DFACS_6_Science_Mode_2_custom1_shared_controlled020: DFACS_7_Science_Mode_2_custom2_x_not_controlled021: DFACS_8_Drift_Mode_2_1_closed_loop_phase022: DFACS_9_Drift_Mode_2_2_open_loop_phase023: IS_readout_xcpl

A beginner’s guide to using the SSM class for

LTP folks -- Part 2

M Hewitson, 06-10-08

Tutorial 2

Let’s try making a simple SSM object of our own. For example, suppose we want a simple

model of the OMS on LTP with only a simple cross-coupling matrix.

We can build an SSM object by describing it in a plist. The things we need to specify are:

Key Name Description

name A name for the object

timestep The sample rate for the mode (0 is continuous)

paramnames The names of any parameters in the model (give a cell-array)

inputnames The names of any input blocks

inputvarnames The names of the input ports for each input block (cell-array of cell-arrays)

outputvarnames The names of the output ports for each output block (cell-array of cell-arrays)

amats The A matrices of the statespace model

bmats The B matrices of the statespace model

cmats The C matrices of the statespace model

dmats The D matrices of the statespace model

ssnames State names

A beginner’s guide to using the SSM class for LTP folks -- Part 3

M Hewitson, 06-10-08

In this part we carry from parts 1 and 2 and try connect up the DFACS model with the IFO model.

Putting systems together is done using the assemble command.

To put together the DFACS model, C, and the IFO model, I, we do

>> DFACS_I = assemble(I, C)

------ ssm/1 ------- description: amats: { [78x78] } [1x1] mmats: { [78x78] } [1x1] bmats: { [78x2] [78x2] [] [] [78x2] [78x4] [] } [1x7] cmats: { [] [3x78] } [2x1] dmats: { [2x2] [2x2] [] [] [] [] [] [3x2] [3x2] [] [] [3x2] [3x4] [3x3] } [2x7] isnumerical: false timestep: 0 nonlin: {} [0x6] inputnames: { 'SC_TM_attitude' 'Dist_Ifo_readout' 'ST_readout_delayed' 'IS_readout_delayed' 'Ifo_readout_delayed' 'bias' 'test signal' } [1x7] inputvarnames: { { 'rx1_H1' 'rx2_H2' } { 'Dist_x1_Ifo_ro' 'Dist_dx_Ifo_ro' } { } { 'rx1_H1_IS_delayed' 'rx2_H2_IS_delayed' } { 'rx1_H1_Ifo_delayed' 'dx_Ifo_delayed' } { 'rx1_H1_IS_bias' 'rx2_H2_IS_bias' 'rx1_H1_Ifo_bias' 'dx_Ifo_bias' } { 'fx_mps_ts' 'fx1_TMAct_ts' 'fx2_TMAct_ts' } } [1x7] inputsizes: [2 2 0 2 2 4 3] inputconn: [1 1 1 1 2 1 1] Ninputs: 7 ssnames: { '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts' } [1x1] ssvarnames: { { '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>1 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>2 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>3 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>4 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>5 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>6 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>7 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>8 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>9 ' '1D_n_DFACS_5_Science_Mode_1_All_Optical_Readouts>10 '

A beginner’s guide to using the SSM class for

LTP folks -- Part 4

M Hewitson, 06-10-08

In this part we build some more parts of the LTP simulation. We want to build thrusters,

electro-static actuators, and a dynamical model.

The three new commands are:

Thrusters = ssm(plist('built-in', 'MPS', ...

'dim', 1, ...

'withParams', true));

ESS = ssm(plist('built-in', 'TMActuation_xcpl', ...

'dim', 1, ...

'withParams', true));

D = ssm(plist('built-in', 'LPF_Dynamics', ...

'dim', 1, ...

'withParams', true));

We can now assemble these with the other parts, the IFO and the

DFACs. Before we can do that, we need to assemble all the

continuous models and discretize the result, before combining with the

A beginner’s guide to using the SSM class for

LTP folks -- Part 5

M Hewitson, 09-10-08

In Part 4 we ended with a closed-loop model of LTP. Now we will introduce some further

elements to the model: noise shape filter inputs.

First a note: the IFO model introduced in Part 2 (and used in Parts 3 and 4) was not correct.

For this tutorial we take a simple non-parametric model for the IFO and return to

parameterising it in a later tutorial.

So now the IFO is

I = ssm(plist('name', 'IFO-1D-Xcpl', 'timestep', 0, ...

'inputnames', { 'SC_TM_attitude' 'Dist_Ifo_readout' }, ...

'inputvarnames', { { 'rx1_H1' 'rx2_H2' } { 'Dist_x1_Ifo_ro'

'Dist_dx_Ifo_ro' } }, ...

'outputnames', { 'Ifo_readout_delayed' }, ...

'outputvarnames', { { 'rx1_H1_Ifo' 'dx_Ifo' } }, ...

'amats', cell(0,0), ...

'bmats', cell(0,2), ...

'cmats', cell(1,0), ...

'dmats', {[1 0; -1 1], [1 0; 0 1]}, ...

'ssnames', cell(1,0)));

which simulates:

Interferometer Sensing Noise

Let’s now get a noise-shape filter for the sensing noise from the built-in models:

ifo_sense_noise = ssm(plist('built-in', 'NSF_Interferometer_readout', ...

'dim', 1, ...

'withParams', true));

The ‘NSF’ in the name stands for noise-shape-filter (obviously). The parameters in the model

are defined according to the equation for the filter transfer function:

�o1

o12

⇥=

�1 0�1 1

⇥ �x1

x2

A beginner’s guide to using the SSM class for

LTP folks -- Part 6

M Hewitson, 09-10-08

This time we will look at injecting signals to the model during the simulation.

Let’s build a white-noise source and inject it into the bias input of DFACS for the differential

channel.

First we build an AO containing the noise:

fs = 1./loop.timestep;

nsecs = 10000;

a = ao(plist('tsfcn', '1e-9*randn(size(t))', 'fs', fs, 'nsecs', nsecs));

Now we can tell simulate where to inject this AO. We specify this in the plist with the key

‘aos variable names’:

pl = plist('aos variable names', {'dx_Ifo_bias'}, 'aos', a, ...

'return outputs', {'rx1_H1_Ifo', 'dx_Ifo'},...

'noise variable names', ...

{'thrust_noise_in', 'n_x_Ifo_ro', 'n_dx_Ifo_ro', 'n_fx1_TM', 'n_fx2_TM'}, ...

'covariance', diag([1 0.1 0.1 1 1]));

In contrast to last time, we no

longer need to specify the

simulation length; it is taken

from the input AO(s).

We then run the simulation as

before:

[b, plout] =

loop.simulate(pl)

Here we see that the differential

output has some excess noise:

1 of 4

Page 3: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Other SSM notes

3

Comparing SSM models to MDC1

M Hewitson 10-10-08

The purpose of this note is to compare various elements of the SSM 1D model of LTP to the

components we are familiar with from MDC1 and MDC2.

DFACS

We compare the two x controllers.

First build the SSM model:

C = ssm(plist('built-in',

'DFACS_5_Science_Mode_1_All_Optical_Readouts', ...

'dim', 1, 'withParams', true));

Now extract the two transfer functions we are interested in:

% The controller that takes o1 and feeds back to FEEPs.

pl = plist('inputs', {'rx1_H1_Ifo_delayed'}, 'outputs',

{'fx_mps_c'});

o1toFeeps = bode(C, pl);

% The controller that takes o12 and feeds back to TM2

actuator

pl = plist('inputs', {'dx_Ifo_delayed'}, 'outputs',

{'fx2_TMAct_c'});

o12toTM2 = bode(C, pl);

Now load the two models from MDC1

o1toFeeps_mdc1 = df_controller(o1toFeeps.data.getX);

o12toTM2_mdc1 = sus_controller(o12toTM2.data.getX);

and then compare them:

iplot(o1toFeeps, o1toFeeps_mdc1)

iplot(o1toFeeps./ o1toFeeps_mdc1)

and

iplot(o12toTM2, o12toTM2_mdc1)

iplot(o12toTM2./ o12toTM2_mdc1, plist('Yscales', {'all', 'lin'}))

Comparing SSM models to MDC2

M Hewitson 10-10-08

The purpose of this note is to compare various elements of the SSM 1D model of LTP to the

components we are familiar with from MDC1 and MDC2. This follows on from the document

“Comparing SSM models to MDC1”.

We assume the results from that document and add here the measured open-loop gains of

the MDC2 model. Since we can’t directly measure the open-loop gain, we have to measure

the transfer function

T = O/(1-O)

and convert this to an open loop measurement by

O = T/(1+T)

The measurement of the drag-free loop at low-frequency is quite difficult because the loop

gain is so high and the data length is relatively short.

Anyway, the comparison for the drag-free loop is:

Comparing SSM models to MDC2

M Hewitson 10-10-08

The purpose of this note is to compare the output of ssm/simulate and the output of ssm/

bode. The model used for the analysis is a 1D model of LTP.

Using simulate we generate simulated outputs of the model and measure the transfer

functions of interest by injecting white-noise. Using bode() we extract the transfer functions

directly from the statespace equations.

The model

The model used for the simulation is depicted here:

And the code listing is:

%% Build simulation

% Controllers

C = ssm(plist('built-in',

'DFACS_5_Science_Mode_1_All_Optical_Readouts', ...

'dim', 1, ...

'withParams', true));

C.setName;

% Actuators

Thrusters = ssm(plist('built-in', 'MPS', ...

'dim', 1, ...

'withParams', true));

Thrusters.setName;

ESS = ssm(plist('built-in', 'TMActuation_xcpl', ...

'dim', 1, ...

'withParams', true));

ESS.setName;

% Dynamics

D = ssm(plist('built-in', 'LPF_Dynamics', ...

'dim', 1, ...

'withParams', true));

D.setName;

Simulating MDC2 with SSM models

M Hewitson 10-10-08

The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the

analysis methods from the model differences.

Using the SSM model of LTP described in previous notes, the outputs of the IFO were

simulated using the injected signals from MDC2.

The input signals are:

The output signals are:

Page 4: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Simulate MDC2 with SSM models

• Why?• To have the same model for data generation and analysis

• to have control over both ends of the process• to de-couple data production from tool development

4

Page 5: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

MDC2 model

5

i2

i1

Csus

CDFGDF

Gsus

D(�21)

o1

o12

�21

D(�23)

�12

interferometer

�2�

Page 6: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

SSM Parts

• DFACS• Thruster Actuation• Capacitive Actuation of TM2• Dynamics• Interferometer• Sensing Noise• TM Force Noise• Thruster Noise

6

All 1D, parametric

Page 7: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

SSM: DFACs

7

C = ssm(plist('built-in', 'DFACS_5_Science_Mode_1_All_Optical_Readouts', ... 'dim', 1, ... 'withParams', true));

C

IS_readout_delayed

Ifo_readout_delayed

bias

test signal

DFACS_command

rx1_H1_IS_delayed

rx2_H2_IS_delayed

rx1_H1_Ifo_delayed

dx_Ifo_delayed

rx1_H1_IS_bias

rx2_H2_IS_bias

rx1_H1_Ifo_bias

dx_Ifo_bias

fx_mps_ts

fx1_TMAct_ts

fx2_TMAct_ts

fx_mps_c

fx1_TMAct_c

fx2_TMAct_c

Page 8: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Thruster Actuation

8

Thrusters = ssm(plist('built-in', 'MPS', ... 'dim', 1, ... 'withParams', true));

Thrusters

DFACS_command

F_mps

fx_mps_c

fx1_TMAct_c

fx2_TMAct_c

fx_mps

Page 9: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Capacitive Actuation

9

ESS = ssm(plist('built-in', 'TMActuation_xcpl', ... 'dim', 1, ... 'withParams', true));

ESS

DFACS_command

Dist_F_TMAct

F_TMAct

fx_mps_c

fx1_TMAct_c

fx2_TMAct_c

Dist_fx1_TMAct

Dist_fx2_TMAct

fx1_TMAct

fx2_TMAct

Page 10: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Dynamics

10

D = ssm(plist('built-in', 'LPF_Dynamics', ... 'dim', 1, ... 'withParams', true));

D

F_mps

Dist_F_MPS

F_TMAct

Dist_F_solar

Dist_F_infrared

Dist_F_TM

Dist_F_TM_SC

Dist_F_gravity

SC_TM_attitude

fx_mps

Dist_fx_mps

fx1_TMAct

fx2_TMAct

Dist_fx_solar

Dist_fx_infrared

Dist_fx1_TM

Dist_fx2_TM

Dist_fx1_TM_SC

Dist_fx2_TM_SC

Dist_fx_gravity

rx1_H1

rx2_H2

D

F_mps

Dist_F_MPS

F_TMAct

Dist_F_solar

Dist_F_infrared

Dist_F_TM

Dist_F_TM_SC

Dist_F_gravity

SC_TM_attitude

fx_mps

Dist_fx_mps

fx1_TMAct

fx2_TMAct

Dist_fx_solar

Dist_fx_infrared

Dist_fx1_TM

Dist_fx2_TM

Dist_fx1_TM_SC

Dist_fx2_TM_SC

Dist_fx_gravity

rx1_H1

rx2_H2

Page 11: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Interferometer

11

I = ssm(plist('name', 'IFO-1D-Xcpl', 'timestep', 0, ... 'paramnames', {'delta'},'paramvalues', 1e-4, ... 'inputnames', { 'SC_TM_attitude' 'Dist_Ifo_readout' }, ... 'inputvarnames', { { 'rx1_H1' 'rx2_H2' } { 'Dist_x1_Ifo_ro' 'Dist_dx_Ifo_ro' } }, ... 'outputnames', { 'Ifo_readout_delayed' }, ... 'outputvarnames', { { 'rx1_H1_Ifo' 'dx_Ifo' } }, ... 'amats', cell(0,0), ... 'bmats', cell(0,2), ... 'cmats', cell(1,0), ... 'dmats', {[1 0; -1+sym('delta') 1], [1 0; 0 1]}, ... 'ssnames', cell(1,0)));

�o1

o12

⇥=

�1 0

�1 + � 1

⇥ �x1

x2

IFO-1D-Xcpl

SC_TM_attitude

Dist_Ifo_readout

Ifo_readout_delayed

rx1_H1

rx2_H2

Dist_x1_Ifo_ro

Dist_dx_Ifo_ro

rx1_H1_Ifo

dx_Ifo

Page 12: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Sensing Noise

12

ifo_sense_noise = ssm(plist('built-in', 'NSF_Interferometer_readout', 'dim', 1, ... 'withParams', true));

NSF_Interferometer_readout reduced

Noise_Ifo_readout

DC_Ifo_readout

Dist_Ifo_readout

n_x_Ifo_ro

n_dx_Ifo_ro

DC_x_Ifo_ro

DC_dx_Ifo_ro

Dist_x1_Ifo_ro

Dist_dx_Ifo_ro

Page 13: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

TM Force Noise

13

tm_noise = ssm(plist('built-in', 'NSF_TM', 'dim', 1, ... 'withParams', true));

NSF_TM reduced

Noise_F_TM

DC_F_TM

Dist_F_TM

n_fx1_TM

n_fx2_TM

DC_fx1_TM

DC_fx2_TM

Dist_fx1_TM

Dist_fx2_TM

Page 14: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Thruster Force Noise

14

pzm = pzmodel(1000e-6, {[1e-4], 1e-4}, {1e-2, 1e-2});thrust_noise = ssm(pzm);thrust_noise.modify(plist('commands', {'outputnames = {''Dist_F_solar''}', ... 'inputvarnames = {{''thrust_noise_in''}}'}));thrust_noise.setName('Thrust Noise');

Thrust Noise

U

Dist_F_solar

thrust_noise_in

Y>1

Page 15: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Assemble the model

• First we need to assemble continuous parts:

• Then substitute all parameters for their values:

• Now we can make this discrete:

• Now assemble with DFACS (already discrete):

15

Cparts = assemble(Thrusters, ESS, D, I,ifo_sense_noise, thrust_noise, tm_noise);

Cparts.modifparams;

Cparts.modiftimestep(0.1);

loop = assemble(C,Cparts_D);

Page 16: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

The full loop

16

C

IS_readout_delayed

Ifo_readout_delayed

bias

test signal

DFACS_command

Thrusters

DFACS_command

F_mps

ESS

DFACS_command

Dist_F_TMAct

F_TMAct

D

F_mps

Dist_F_MPS

F_TMAct

Dist_F_solar

Dist_F_infrared

Dist_F_TM

Dist_F_TM_SC

Dist_F_gravity

SC_TM_attitude

IFO-1D-Xcpl

SC_TM_attitude

Dist_Ifo_readout

Ifo_readout_delayed

NSF_Interferometer_readout reduced

Noise_Ifo_readout

DC_Ifo_readout

Dist_Ifo_readout

Thrust Noise

U

Dist_F_solar

NSF_TM reduced

Noise_F_TM

DC_F_TM

Dist_F_TM

rx1_H1_IS_delayed

rx2_H2_IS_delayed

rx1_H1_Ifo_delayed

dx_Ifo_delayed

rx1_H1_IS_bias

rx2_H2_IS_bias

rx1_H1_Ifo_bias

dx_Ifo_bias

fx_mps_ts

fx1_TMAct_ts

fx2_TMAct_ts

fx_mps_c

fx_mps_c

fx_mps_c

fx1_TMAct_c

fx1_TMAct_c

fx1_TMAct_c

fx2_TMAct_c

fx2_TMAct_c

fx2_TMAct_c

fx_mps

fx_mps

Dist_fx1_TMAct

Dist_fx2_TMAct

fx1_TMAct fx1_TMAct

fx2_TMAct fx2_TMAct

Dist_fx_mps

Dist_fx_solar

Dist_fx_infrared

Dist_fx1_TM

Dist_fx2_TM

Dist_fx1_TM_SC

Dist_fx2_TM_SC

Dist_fx_gravity

rx1_H1 rx1_H1

rx2_H2 rx2_H2

Dist_x1_Ifo_ro

Dist_dx_Ifo_ro

rx1_H1_Ifo

dx_Ifo

n_x_Ifo_ro

n_dx_Ifo_ro

DC_x_Ifo_ro

DC_dx_Ifo_ro

Dist_x1_Ifo_ro

Dist_dx_Ifo_ro

thrust_noise_in

Y>1

n_fx1_TM

n_fx2_TM

DC_fx1_TM

DC_fx2_TM

Dist_fx1_TM

Dist_fx2_TM

Page 17: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Measurement campaign

• Want to measure 4 parameters

• Make 4 measurements:1.inject into drag-free loop (i1) and measure at o12.inject into suspension loop (i12) and measure at o123.match stiffness of TM1 and TM2 (IS bias equal along x for both TMs),

inject into drag-free loop and measure at o124.bias off for TM1, inject into i1 and measure at o12

• Inject two signals per parameter/measurement

17

Gsus Gdf �12 �2�

GsusGdf

�12

�2�

Page 18: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Choosing injection signals

• look at the Transfer Functions, i1o1, i12o12, i1o12 for different parameter values

• First for Gsus:• take values 0.5 and

1.5• inject at 3.2mHz and

7mHz

18

Page 19: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Signals for Gdf

• For Gdf:• take values 0.5 and 1.5• inject at 45mHz and

185mHz

19

Page 20: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Signals for delta

• For delta:• take values 1e-4 and

2e-4• we can inject

anywhere, but overall TF amplitude is an issue

• I took 3.2mHz and 7mHz

20

Page 21: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Signals for omega-delta

• For omega-delta:• take values of

1.3e-6 and 2e-6 for stiffness of TM2

• inject at 1.1mHz and 2.3mHz

21

Page 22: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Simulation for Gsus

• simulate IFO outputs with the injected signal described earlier and nominal noise levels

22

Page 23: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Simulation for Gsus

23

Page 24: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Simulation for delta

24

Page 25: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Simulation for omega-delta

25

Page 26: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Measure TFs

• measuring the TFs was done very simply:• ratio of FFTs

26

tf = fft(o12)./fft(is1);

GsusGdf delta

omega-delta

Page 27: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Target functions for MDC2 parameters

• need special target functions to minimise• these need to

• take assembled continuous parts and DFACS as inputs• change parameter values in continuous parts• substitute parameter values (go numeric) in continuous part• discretize continuos part• assemble loop• return transfer function with bode()

27

% Set parameters Cparts = Cparts_in.setparams(... {'delta', 'p_mps_11', 'p_TM2Act11', 'p_dyn_w_TM1_11','p_dyn_w_TM2_11'}, ... [ delta Gdf Gsus w1 w3 ]); % Go numeric Cparts.modifparams; % discretize Cparts.modiftimestep(0.1); % assemble discrete parts loop = assemble(C,Cparts); % get TFs out = bode(loop, plist('inputs', 'rx1_H1_Ifo_bias', 'outputs', 'dx_Ifo', 'f', f));

Page 28: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Fit Gsus

• pass target function and measured TF to curvefit:

• Only fit between 1 and 10 mHz• Running this gives parameter estimate:

• 1.27283 + 0.0102614 - 0.0100718 [0.806185%,0.791292%]• underlying value is 1.23 so we see some bias

28

pl = plist('Function', 'fitGsus(Xdata, P, ADDP)', ... 'P0', 1, 'LB', 0.5, 'UB', 2, ... 'ADDP', {w1 w3 1 delta C Cparts}, ... 'FitFuncReturn', 'abs'); % Do fit [Gsus, GsusL, GsusU] = curvefit(abs(find(tf, 'x<10e-3 & x>1e-3')), pl);

Page 29: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Gsus: fit Vs SNR

• Run the fit for different amplitudes of input signal

29

Page 30: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Residual of fit

• simulate IFO outputs (no noise) using the fit value for Gsus• subtract from the original simulated output

30

Page 31: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Fit Gdf

• pass target function and measured TF to curvefit:

• Only fit between 0.01 and 0.1 Hz• Running this gives parameter estimate:

• 0.900852 + 0.00151525 - 0.00146102 [0.168201%,0.162182%]• underlying value is 0.9

31

pl = plist('Function', 'fitGdf(Xdata, P, ADDP)', ... 'P0', 1, 'LB', 0.5, 'UB', 2, ... 'ADDP', {w1 w3 1 delta C Cparts}, ... 'FitFuncReturn', 'real');% Do fit[Gdf, GdfL, GdfU] = curvefit(real(find(tf, 'x<0.1 & x>1e-2')), pl);

Page 32: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Gdf: fit Vs SNR

32

Page 33: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Residual of fit

• simulate IFO outputs (no noise) using the fit value for Gdf• subtract from the original simulated output

33

Page 34: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Fit delta

• pass target function and measured TF to curvefit:

• Only fit between 2mHz and 60mHz• Running this gives parameter estimate:

• 0.000204385 + 2.97566e-06 - 2.97567e-06 [1.45591%,1.45591%]• underlying value is 2e-4

34

pl = plist('Function', 'fitDelta(Xdata, P, ADDP)', ... 'P0', 1e-4, 'LB', 1e-5, 'UB', 1e-3, ... 'ADDP', {w1 w3 Gdf Gsus C Cparts}, ... 'FitFuncReturn', 'abs');% Do fit[delta, deltaL, deltaU] = curvefit(abs(find(tf, 'x<60e-3 & x>2e-3')), pl);

Page 35: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

delta: fit Vs SNR

35

Page 36: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Residual of fit

• simulate IFO outputs (no noise) using the fit value for delta• subtract from the original simulated output

36

Page 37: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Fit omega-delta

• pass target function and measured TF to curvefit:

• Only fit between 0.8mHz and 2.5 mHz• Running this gives parameter estimate:

• -6.95641e-07 + 1.85882e-08 - 1.86007e-08 [2.6721%,2.67389%]• underlying value is -7e-7

37

pl = plist('Function', 'fitOmegaDelta(Xdata, P, ADDP)', ... 'P0', 0, 'LB', -1e-6, 'UB', 1e-6, ... 'ADDP', {w1 delta Gdf Gsus C Cparts}, ... 'FitFuncReturn', 'abs');% Do fit[od, odL, odU] = curvefit(abs(find(tf, 'x>0.8e-3 & x<2.5e-3')), pl);

Page 38: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

omega-delta: fit Vs SNR

38

Page 39: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Residual of fit

• simulate IFO outputs (no noise) using the fit value for delta• subtract from the original simulated output

39

Page 40: MDC2 and SSM models - aei.mpg.de · The purpose of this note is to simulate MDC2 outputs using SSM models to decouple the analysis methods from the model differences. Using the SSM

LTPDA Meeting, Trento Nov 2008

Summary

• The SSM modelling seems to do well as a template generator• we have to worry about higher frequencies

• approximation of simulation Vs bode()• discretization of filters

• Fitting seems not too bad• needs checking for multi-parameter fitting• better scaling of the problem

40