Mercurial > hg > ltpda
diff m-toolbox/test/test_ssm_ssm2dot.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/test/test_ssm_ssm2dot.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,93 @@ +% A Test file that builds a fairly complicated SSM and writes a DOT file. +% +% M Hewitson + +mc + + +%% Controller + +C = ssm(plist('built-in', 'DFACS_5_Science_Mode_1_All_Optical_Readouts', ... + 'dim', 1, ... + 'withParams', true)) + +%% Actuators + +Thrusters = ssm(plist('built-in', 'MPS', ... + 'dim', 1, ... + 'withParams', true)) + +%% ES actuators + +ESS = ssm(plist('built-in', 'TMActuation_xcpl', ... + 'dim', 1, ... + 'withParams', true)) + +%% Dynamics + +D = ssm(plist('built-in', 'LPF_Dynamics', ... + 'dim', 1, ... + 'withParams', true)) + + +%% IFO + +% I = ssm(plist('built-in', 'Interferometer_readout_xcpl', ... +% 'dim', 1, ... +% 'withParams', true)) + +% build a simple IFO with the two cross-couplings we want +I = ssm(plist('name', 'IFO-1D-Xcpl', 'timestep', 0, 'paramnames', {'delta112', 'delta121'}, ... + 'paramvalues', [-1e-4 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 sym('delta112'); sym('delta121') 1], [1 sym('delta112'); sym('delta121') 1]}, ... + 'ssnames', cell(1,0))); + +%% IFO sensing noise + +ifo_sense_noise = ssm(plist('built-in', 'NSF_Interferometer_readout', 'dim', 1, ... + 'withParams', true)); + +%% Thrust noise + +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'); + +%% TM noise + +tm_noise = ssm(plist('built-in', 'NSF_TM', 'dim', 1, ... + 'withParams', true)); + +%% Build loop + +% -- attach continuous parts +% Cparts = assemble(D, thrust_noise); +Cparts = assemble(Thrusters, ESS, D, I, ifo_sense_noise, thrust_noise, tm_noise); + +% Set parameter values +pl = plist('KEEP_PARAM_NAMES', {}, ... + 'KEEP_PARAM_ORDER', 'ALL', ... + 'SET_PARAM_NAMES', {'delta112'}, ... + 'SET_PARAM_VALUES', 2e-6); + +Cparts.modifparams(pl); + +% Go numeric +Cparts.modifparams; + +% -- discretize +Cparts.modiftimestep(plist('newtimestep', 0.1)); + + +%% -- attach discrete parts + +loop = assemble(Cparts, C); + +loop.ssm2dot(plist('filename', 'loop.dot'));