%% load parameters for NB clear all addpath('IOO_Parameter','Noise','Noise/data','functions','data','Servo filters') NbSVNroot = './..'; % find the root of Simulink NB addpath(genpath([NbSVNroot '/Common/Utils'])); addpath(genpath([NbSVNroot '/Dev/Utils/'])); NB = containers.Map; % power and contrasts on 11/24 P_RefCav_REFL_1124 = 2.5e-3; contrast_RefCav_1124 = (0.77-0.40)/(0.77-0.19); P_IMC_REFL_1124 = 50e-6; contrast_IMC_1124 = (1.02-0.81)/(1.02-0.045); noiseModel = 'IOO'; loopNames = {'FSS total','NPRO_PZT','BEOM','NPRO_TEMP','IMC total','AOM','MCE SUS','CARM'}; Freq = containers.Map; Abs = containers.Map; Phase = containers.Map; %% frequency requirement % close all data = importdata('MCFrequencyNoiseRequirementDRSE.dat'); ff_freqreq = data.data(:,1); freqreq = data.data(:,2); data = importdata('MCFrequencyNoiseRequirementBRSE.dat'); ff_freqreq2 = data.data(:,1); freqreq2 = data.data(:,2); %mnloglog(ff_freqreq,freqreq,ff_freqreq2,freqreq2,'legend',{'DRSE','BRSE'},'xlabel','Frequency [Hz]','ylabel','Frequency noise [Hz/rHz]','title','Frequency noise requirement') %% %% NB with current configuration OOL = true; % if you want make plot of out of loop stability. set to true date = '1124'; % set 1124 or 1206 KOACH = 'on'; ErrFB = 'FB_AOM'; % choose from 'ERR_IMC(FSS)', 'FB_PZT(AOM, IMCsus)', or '(RTM) PZT(SLOW, MIXER) MON' cal = ''; % choose from 'motion_RefCav', sensor_IMC(RefCav,CARM), seismic_IMC(CARM), act_PZT(AOM, IMCsus, EOM, TEMP), CMS_IMC(CARM), TTFSS, NPRO IMC_loop = 'on'; doOLGlinearize = false; doOLGplot = false; % close all change_filter = 1; % load parameters (Actuator, servo TF, etc) load('IOO_params.mat'); [TTFSS_Gain,FB_SW_TTFSS,CMS_SW_IMC,FB_SW_MCL,CMS_SW_CARM,FB_SW_CARM,CavOpgain,SW] = ... set_IOONB_config(... ...TTFSS 'CG', 26,... 'FG', 30,... 'Fast_Sign', -1,... 'TEMPGAIN', 0,... ... ...IMC 'IN1EN_IMC', 1,... 'IN1GAIN_IMC', -20,... 'K1IMC_MCL_GAIN', 0.1,... 'SLOWPOL_IMC', -1,... 'COMCOMP_IMC', 1,... 'SLOWBST_IMC', 1,... 'K1IMC_MCL_FBSW',[1 2 10],... ... ...Opgain 'Opgain_RefCav',Cav('LPF_RefCav_1124'),... 'Opgain_IMC',-Cav('LPF_IMC_1124'),... ... ...LOOP SW 'LOOP_SW',ones(1,8)... ); % OLG if doOLGlinearize || ~exist('1124_OLG_model.mat','file') loopNames = {'FSS total','NPRO_PZT','BEOM','NPRO_TEMP','IMC total','AOM','MCE SUS','CARM'}; lin_OLG OLG_1124 = containers.Map; OLG_1124('FSS') = fss; OLG_1124('PZT') = pzt; OLG_1124('EOM') = eom; OLG_1124('IMC') = imc; OLG_1124('AOM') = aom; OLG_1124('IMCsus') = sus; save('1124_OLG_model.mat','OLG_1124'); end if doOLGplot load('1124_OLG_model.mat'); close all mnimportdata('O1124_30_2.CSV',Freq,Abs,Phase,'FSS_OLG','tf') [~,Abs('FSS_OLG')] = mntrim(2e4,8e6,Freq('FSS_OLG'),Abs('FSS_OLG')); [Freq('FSS_OLG'),Phase('FSS_OLG')] = mntrim(2e4,8e6,Freq('FSS_OLG'),Phase('FSS_OLG')); ff_olgfss = 10.^(0:0.01:6.5); lin_model_c_fss = mnbode_list(-OLG_1124('FSS'),ff_olgfss,'c'); lin_model_c_pzt = mnbode_list(-OLG_1124('PZT'),ff_olgfss,'c'); lin_model_c_eom = mnbode_list(-OLG_1124('EOM'),ff_olgfss,'c'); mnbode(Freq('FSS_OLG'),Abs('FSS_OLG')*-TTFSS_Elec('common_gain1'),Phase('FSS_OLG'),... ff_olgfss,abs(lin_model_c_fss),mnangle(lin_model_c_fss),... ff_olgfss,abs(lin_model_c_pzt),mnangle(lin_model_c_pzt),... ff_olgfss,abs(lin_model_c_eom),mnangle(lin_model_c_eom),... 'title','FSS OLG','linestyle',{'*','-','--','--'},'legend',... {'measured','model(total)','model(PZT)','model(EOM)'},'ylim',[1e-1 1e6]); figure() mnimportdata('O1124_11.txt',Freq,Abs,Phase,'IMC_OLG','tf') % [~,Abs('IMC_OLG')] = mntrim(2e4,8e6,Freq('IMC_OLG'),Abs('IMC_OLG')); % [Freq('FSS_OLG'),Phase('FSS_OLG')] = mntrim(2e4,8e6,Freq('FSS_OLG'),Phase('FSS_OLG')); % ff_olgfss = 10.^(0:0.01:6.5); ff_olgfss = 10.^(0:0.01:6.5); ff_olgfss2 = 10.^(0:0.01:3.27); lin_model_c_fss = mnbode_list(OLG_1124('IMC'),ff_olgfss,'c'); lin_model_c_pzt = mnbode_list(OLG_1124('AOM'),ff_olgfss,'c'); lin_model_c_eom = mnbode_list(OLG_1124('IMCsus'),ff_olgfss2,'c'); mnbode(Freq('IMC_OLG'),Abs('IMC_OLG'),Phase('IMC_OLG'),... ff_olgfss,abs(lin_model_c_fss),mnangle(lin_model_c_fss),... ff_olgfss,abs(lin_model_c_pzt),mnangle(lin_model_c_pzt),... ff_olgfss2,abs(lin_model_c_eom),mnangle(lin_model_c_eom),... 'title','IMC OLG','linestyle',{'*','-','--','--'},'legend',... {'measured','model(total)','model(AOM)','model(suspension)'},'ylim',[1e-1 1e6],'xlim',[1 1e5]); end % Noise budget if OOL dof = 'OOL_freq'; else if strcmp(cal,'') dof = [ErrFB]; else dof = [ErrFB '_' cal]; end end disp(['chosen dof is :: ' dof]) % importdata if strcmp(date,'1124') [freq,sp] = import_1124data(KOACH,ErrFB); elseif strcmp(date,'1206') [freq,sp] = import_1206data(IMC_loop,ErrFB); end if OOL freq = 10.^(-2:0.01:6)'; sp = zeros(size(freq)); end % make Noise container Noise = make_Noise(freq,Servo_0dB,{'A2f'},['KOACH_' KOACH],... 'Pressure_RefCav',1,... 'P_RefCav_REFL',P_RefCav_REFL_1124*contrast_RefCav_1124,... 'P_IMC_REFL',P_IMC_REFL_1124*contrast_IMC_1124,... 'Opgain_RefCav',Cav('Opgain_RefCav_1124'),... 'Opgain_IMC',-Cav('Opgain_IMC_1124'),... 'kamioka_spectrum'); % set switches SW = ones(1,length(loopNames)); if strcmp(IMC_loop,'off') SW(5) = 0; SW(6) = 0; SW(7) = 0; end % evaluate noises warning_SW('off') [noises, sys] = mnnbFromSimulink(noiseModel, freq, 'dof', dof, 'display', false); % saveFunctionCache(); % save cached outputs nb = nbGroupNoises(noiseModel, noises, sys, 'display', false); nb.sortModel(); matlabNoisePlot(nb); warning_SW('on') if OOL NB_1124 = nb; save('1124_NB.mat','NB_1124'); end % mnloglog(ff_freqreq,freqreq,ff_freqreq2,freqreq2,'xlabel','Frequency [Hz]','ylabel','Frequency noise [Hz/rHz]','title','Frequency noise requirement') %% Optimization OOL = true; % if you want make plot of out of loop stability. set to true date = '1124'; % set 1124 or 1206 KOACH = 'on'; ErrFB = 'FB_AOM'; % choose from 'ERR_IMC(FSS)', 'FB_PZT(AOM, IMCsus)', or '(RTM) PZT(SLOW, MIXER) MON' cal = ''; % choose from 'motion_RefCav', sensor_IMC(RefCav,CARM), seismic_IMC(CARM), act_PZT(AOM, IMCsus, EOM, TEMP), CMS_IMC(CARM), TTFSS, NPRO IMC_loop = 'on'; KOACH = 'off'; doOLGlinearize = false; doOLGplot = false; resetOLG = true; compareOLG = true; % close all change_filter = mnzpk([-33.3317,-33.3317]/2/pi,[-3.3 -3.3]/2/pi,1); % CMS_Elec('common_comp') = zpk(-2.4510e4,-242.6713/5,-0.9901); %set contrast contrast_RefCav_opt = 0.8;%contrast_RefCav_1124; contrast_IMC_opt = 0.8;%contrast_IMC_1124; P_RefCav_REFL_opt = P_RefCav_REFL_1124; P_IMC_REFL_opt = P_IMC_REFL_1124*50; % set sidband sideband_IMC = 2;%(normalized power based on 1124 sideband power) sideband_RefCav = 1; % load parameters (Actuator, servo TF, etc) load('IOO_params.mat'); [TTFSS_Gain,FB_SW_TTFSS,CMS_SW_IMC,FB_SW_MCL,CMS_SW_CARM,FB_SW_CARM,CavOpgain,SW] = ... set_IOONB_config(... ...TTFSS 'CG', 24-20*log10(contrast_RefCav_opt/contrast_RefCav_1124),... 'FG', 46,... 'Fast_Sign', -1,... 'TEMPGAIN', 0,... ... ...IMC 'IN1EN_IMC', 1,... 'IN1POL_IMC', -1,... 'IN1GAIN_IMC', -24-20*log10(contrast_IMC_opt/contrast_IMC_1124*P_IMC_REFL_opt/P_IMC_REFL_1124*sqrt(sideband_IMC)),... 'K1IMC_MCL_GAIN', 0.1,... 'FASTGAIN_IMC', 40,... 'SLOWPOL_IMC', -1,... 'COMCOMP_IMC', 1,... 'COMBST_IMC', 1,... 'COMGEN_IMC', 1,... 'SLOWBST_IMC', 0,... 'K1IMC_MCL_FBSW',[1 2 10],... 'FASTEN_IMC', 1,... ...poralization 'FASTPOL_IMC', 1,... ...AOM connection 'AOM_FAST', 1,... ... ...Opgain 'Opgain_IMC',-Cav('LPF_IMC_1124')*P_IMC_REFL_opt/P_IMC_REFL_1124*contrast_IMC_opt/contrast_IMC_1124*sqrt(sideband_IMC),... 'Opgain_RefCav',Cav('LPF_RefCav_1124')*contrast_RefCav_opt/contrast_RefCav_1124*sqrt(sideband_RefCav),... ... ...LOOP SW 'LOOP_SW',ones(1,8)... ); % OLG if resetOLG || ~exist('opt_OLG_model.mat','file') loopNames = {'FSS total','NPRO_PZT','BEOM','NPRO_TEMP','IMC total','AOM','MCE SUS','CARM'}; lin_OLG OLG_opt = containers.Map; OLG_opt('FSS') = fss; OLG_opt('PZT') = pzt; OLG_opt('EOM') = eom; OLG_opt('IMC') = imc; OLG_opt('AOM') = aom; OLG_opt('IMCsus') = sus; save('opt_OLG_model.mat','OLG_opt'); end %plot if compareOLG load('opt_OLG_model.mat') load('1124_OLG_model.mat') figure() lin_model_c_fss = mnbode_list(OLG_opt('FSS'),freq,'c'); lin_model_c_fss_1124 = mnbode_list(OLG_1124('FSS'),freq,'c'); mnbode(freq,abs(lin_model_c_fss),mnangle(lin_model_c_fss),... freq,abs(lin_model_c_fss_1124),mnangle(lin_model_c_fss_1124),... 'title','OLG FSS','legend',... {'opt','1124'}); figure() lin_model_c_imc = mnbode_list(OLG_opt('IMC'),freq,'c'); lin_model_c_imc_1124 = mnbode_list(OLG_1124('IMC'),freq,'c'); mnbode(freq,abs(lin_model_c_imc),mnangle(lin_model_c_imc),... freq,abs(lin_model_c_imc_1124),mnangle(lin_model_c_imc_1124),... 'title','OLG IMC','legend',... {'opt','1124'}); end % Noise budget if OOL dof = 'OOL_freq'; else if strcmp(cal,'') dof = [ErrFB]; else dof = [ErrFB '_' cal]; end end disp(['chosen dof is :: ' dof]) % frequency freq = 10.^(-2:0.01:6)'; % make noise spectrum list Noise = make_Noise(freq,Servo_0dB,{'A2f'},['KOACH_' KOACH],... 'Pressure_RefCav',1,... 'P_RefCav_REFL',P_RefCav_REFL_opt*contrast_RefCav_opt,... 'P_IMC_REFL',P_IMC_REFL_opt*contrast_IMC_opt,... 'Opgain_RefCav',Cav('Opgain_RefCav_1124')*contrast_RefCav_opt/contrast_RefCav_1124*sqrt(sideband_IMC)*P_RefCav_REFL_opt/P_RefCav_REFL_1124,... 'Opgain_IMC',Cav('Opgain_IMC_1124')*contrast_IMC_opt/contrast_IMC_1124*sqrt(sideband_RefCav)*P_IMC_REFL_opt/P_IMC_REFL_1124,... 'kamioka_spectrum'); SW = ones(1,8); % evaluate noises warning_SW('off') [noises, sys] = mnnbFromSimulink(noiseModel, freq, 'dof', dof, 'display', false); % saveFunctionCache(); % save cached outputs nb = nbGroupNoises(noiseModel, noises, sys, 'display', false); nb.sortModel(); matlabNoisePlot(nb); warning_SW('on') if OOL NB_opt = nb; save('opt_NB.mat','NB_opt'); end mnloglog(ff_freqreq,freqreq,ff_freqreq2,freqreq2,'xlabel','Frequency [Hz]','ylabel','Frequency noise [Hz/rHz]','title','Frequency noise requirement') change_filter = 1; CMS_Elec('common_comp') = zpk(-2.4510e4,-242.6713,-0.9901);