def test_REFLI_HARD(): hard = ctrl.DegreeOfFreedom(HARD, 'pitch') hard2 = ctrl.DegreeOfFreedom(HARD, 'pitch', probes='REFL_I') tf1 = katTF.getTF('REFL_I', HARD, doftype='pitch') tf2 = katTF.getTF('REFL_I', hard) tf3 = katTF.getTF(hard2) ref = data['tf_REFLI_HARD'] c1 = close.allclose(tf1, ref) c2 = close.allclose(tf2, ref) c3 = close.allclose(tf3, ref) assert np.all([c1, c2, c3])
def test_mech_SOFT2(): soft = ctrl.DegreeOfFreedom(SOFT, 'pitch') tf1 = katTF.getMechTF(SOFT, soft, doftype='pitch') tf2 = katTF.getMechTF(soft, SOFT, doftype='pitch') ref = data['mech_SOFT'] c1 = close.allclose(tf1, ref) c2 = close.allclose(tf2, ref) assert np.all([c1, c2])
def test_mMech_EX_EX2(): ex = ctrl.DegreeOfFreedom('EX', doftype='pitch') mMech1 = katTF.getMechMod('EX', ex, doftype='pitch') mMech2 = katTF.getMechMod(ex, 'EX', doftype='pitch') mMech3 = katTF.getMechMod(ex, ex, doftype='pitch') mMech4 = katTF.getMechMod(ex, ex) ref = data['mMech_EX_EX'] c1 = close.allclose(mMech1, ref) c2 = close.allclose(mMech2, ref) c3 = close.allclose(mMech3, ref) c4 = close.allclose(mMech4, ref) assert np.all([c1, c2, c3, c4])
ctrl.catzp(ctrl.resRoots(2, 1), ctrl.resRoots(5, 1)), ctrl.catzp(0, 0, 0, ctrl.resRoots(0.5, 1), ctrl.resRoots(110, 1)), -1, 20) filtCARM = filtDARM filtBS = ctrl.Filter( ctrl.catzp(ctrl.resRoots(1, 1), ctrl.resRoots(3, 1)), ctrl.catzp(0, 0, 0, ctrl.resRoots(0.3, 1), ctrl.resRoots(90, 1)), -1, 15) # simple constant feedforward filter filtFF = ctrl.Filter([], [], -4.98e-3) # Define control system cs = ctrl.ControlSystem() DARM_dof = ctrl.DegreeOfFreedom(DARM, 'pos', probesDARM, 'DARM') BS_dof = ctrl.DegreeOfFreedom('BS', name='BS', probes=probesBS) # define degrees of freedom cs.addDOF(DARM_dof) cs.addDOF('CARM', probesCARM, CARM) cs.addDOF(BS_dof) # define control filters cs.addFilter('DARM', 'DARM', filtDARM) cs.addFilter('CARM', 'CARM', filtCARM) cs.addFilter('BS', 'BS', filtBS) # add the feedforward cs.addFilter('DARM', 'BS', ctrl.catfilt(filtFF, filtBS))
def test_mMech_IX_EX2(): ex = ctrl.DegreeOfFreedom('EX', 'pitch') ix = ctrl.DegreeOfFreedom('IX', 'pitch') mMech = katTF.getMechMod(ix, ex) ref = data['mMech_IX_EX'] assert close.allclose(mMech, ref)
def test_mech_HARD2(): hard = ctrl.DegreeOfFreedom(HARD, 'pitch') tf = katTF.getMechTF(hard, hard) ref = data['mech_HARD'] assert close.allclose(tf, ref)
ctrl.catzp(0, 0, 0, ctrl.resRoots(0.5, 1), ctrl.resRoots(110, 1)), -1, 20) filtCARM = filtDARM filtBS = ctrl.Filter( ctrl.catzp(ctrl.resRoots(1, 1), ctrl.resRoots(3, 1)), ctrl.catzp(0, 0, 0, ctrl.resRoots(0.3, 1), ctrl.resRoots(90, 1)), -1, 15) # simple constant feedforward filter filtFF = ctrl.Filter([], [], 4.98e-3) # Define control system cs = ctrl.ControlSystem() # define degrees of freedom cs.addDOF(ctrl.DegreeOfFreedom(DARM, 'pos', probesDARM, 'DARM')) cs.addDOF(ctrl.DegreeOfFreedom(CARM, probes=probesCARM, name='CARM')) cs.addDOF('BS', probesBS, 'BS') # define control filters cs.addFilter('DARM', 'DARM', filtDARM) cs.addFilter('CARM', 'CARM', filtCARM) cs.addFilter('BS', 'BS', filtBS) # add the feedforward cs.addFilter('DARM', 'BS', ctrl.catfilt(filtFF, filtBS)) # set the optomechanical plant cs.setOptomechanicalPlant(opt) # compensation