40m QIL Cryo_Lab CTN SUS_Lab TCS_Lab OMC_Lab CRIME_Lab FEA ENG_Labs OptContFac Mariner WBEEShop
  40m Log  Not logged in ELOG logo
Message ID: 8097     Entry time: Mon Feb 18 00:03:46 2013
Author: Zach 
Type: Update 
Category: Computer Scripts / Programs 
Subject: ARBCAV v3.0 

I have uploaded ARBCAV v3.0 to the SVN. The major change in this release, as I mentioned, is the input/output handling. The input and output are now contained in a single 'model' structure. To define the cavity, you fill in the substructure 'model.in' (e.g., model.in.T = [0.01 10e-6 0.01]; etc.) and call the function as:

model = arbcav(model);

Note: the old syntax is maintained as legacy for back-compatibility, and the function automatically creates a ".in" substructure in the output, so that the user can still use the single-line calling, which can be convenient. Then, any individual parameter can be changed by changing the appropriate field, and the function can be rerun using the new, simpler syntax from then on.

The function then somewhat intelligently decides what to compute based on what information you give it. Using a simple option string as a second argument, you can choose what you want plotted (or not) when you call. Alternatively, you can program the desired functionality into a sub-substructure 'model.in.funct'.

The outputs are created as substructures of the output object. Here is an example:


>> th = 0.5*acos(266/271) *180 /pi;

OMC.in.theta = [-th -th th th];

OMC.in.L = [0.266 0.284 0.275 0.271];

OMC.in.RoC = [1e10 2 1e10 2];

OMC.in.lambda = 1064e-9;

OMC.in.T = 1e-6 * [8368 25 8297 33];

OMC.in.f_mod = 24.5e6;

>> OMC

OMC = 

    in: [1x1 struct]

>> OMC = arbcav(OMC,'noplot')

Warning: No loss given--assuming lossless mirrors 

> In arbcav at 274 

OMC = 

         in: [1x1 struct]

        FSR: 2.7353e+08

        Lrt: 1.0960

    finesse: 374.1568

    buildup: 119.6956

         df: [1000x1 double]

      coefs: [1000x4 double]

        HOM: [1x1 struct]


ans = 

      f: [1x1 struct]

    pwr: [1x1 struct]

>> OMC.HOM.pwr

ans = 

    carr: [15x15 double]

     SBp: [15x15 double]

     SBm: [15x15 double]


Some other notes:

  • The annoying Mdo.m has been internalized; it is no longer needed.
  • For the next release, I am working on including:
    • Finite mirror thickness/intracavity refractive elements - If, for god knows what reason, you decide to put a mirror substrate within a cavity 
    • Mode overlap - Calculating the overlap of an input beam to the cavity
    • Mode matching - Calculating a mode matching telescope into the cavity for some defined input beam
    • Anything else?

I have added lots of information to the help header, so check there for more details. As always, your feedback is greatly appreciated.

ELOG V3.1.3-