Information
###########
The directory "Optickle2-modified" contains the modified source code for Optickle (https://github.com/Optickle/Optickle), developed by Matt Evans. There are some modified files and some new ones, as follows:
Modified
--------
/@Optickle/tickle.m
/@Optickle/tickle2.m
/@Optickle/tickleAC.m
New
---
/examples/FieldToField/fieldToField.m
/examples/FieldToField/fptest.m
/examples/FieldToField/getRfFrequencyVector.m
/examples/FieldToField/optFP.m
Usage
#####
The modified form of Optickle2 should work identically to the unmodified form in all cases. The modified version contains additional functions to calculate and return the field-to-field and optic-to-field transfer functions. This is achieved by adding an additional, "field injection" matrix to tickle() or tickle2(). The code below follows the example provided in /examples/FieldToField/:
<<< BEGIN EXAMPLE
% instantiate Optickle model (Fabry-Perot example)
opt = optFP();
% frequency vector
f = logspace(2, 5, 1000);
% number of internal degrees of freedom
Ndof = 2 * length(opt.vFrf) * opt.Nlink + opt.Ndrive;
% get carrier frequency (assuming 1064nm laser wavelength)
fCarrier = Optickle.c / 1064e-9;
% get carrier field index
nCarrier = find(Optickle.matchFreqPol(opt, fCarrier, opt.polS));
% get link numbers corresponding to light travelling towards and away from the interferometer from and to the REFL sink
nLnkREFLIn = opt.getLinkNum('REFL', 'MREFL');
nLnkREFLOut = opt.getLinkNum('MREFL', 'REFL');
% get field evaluation point numbers for carrier, entering and exiting the interferometer at the REFL sink
fldREFLCarrierIn = opt.getFieldEvalNum(nCarrier, nLnkREFLIn);
fldREFLCarrierOut = opt.getFieldEvalNum(nCarrier, nLnkREFLOut);
% field injection, empty matrix with correct dimensions
fieldInj = zeros(Ndof, 1);
% add an excitation
fieldInj(fldREFLCarrierIn) = 1;
% interferometer AC response
[~, ~, sigAC, ~, ~, ~, tfField] = opt.tickle([], f, [], Optickle.tfPos, Optickle.tfNF, fieldInj);
% tfField now contains the transfer functions from the injected signal (at REFL) to every other field in the interferometer, for every audio frequency in vector f
% we can extract the transfer function corresponding to a single field by taking a column:
tfREFLCarrier = tfField(fldREFLCarrierOut, :);
% plot it
figure;
zplotlog(f, tfREFLCarrier);
title('REFL in -> REFL out');
END EXAMPLE >>>
Source code hosting
###################
For the foreeable future, the source code containing my modifications will be available on GitHub at https://github.com/SeanDS/Optickle/tree/Optickle2.
Sean Leavey
March 2016