Skip to content
Snippets Groups Projects
Commit baa8373f authored by Andreas Freise's avatar Andreas Freise
Browse files

adding utility functions to aLIGO

parent 94b579d9
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -3,19 +3,49 @@ from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
#import pykat.exceptions as pkex
import numpy as np
import math
import copy
import warnings
import cmath
import pykat.components
import pykat.exceptions as pkex
nsilica=1.44963098985906
#class aLIGO():
class aLIGO(object):
def __init__(self, _name="default"):
names = ['default', 'LLO', 'LHO']
if _name not in names:
printf("aLIGO name `{}' not recognised, must be 'default', 'LLO' or 'LHO'",_name)
def make_transparent(kat, _components):
"""
Function to make certain mirror or beamsplitter objects transparent
Usage:
make_transparent(kat, "PRM")
or
make_transparent(kat, ["PRM", "SRM"])
The function modifies the kat object. Use something like
kat = copy.deepcopy(basekat)
before if you want to preseve the original kat object
"""
components=make_list_copy(_components)
for o in kat.components.values():
if o.name in components:
if isinstance(o, pykat.components.AbstractMirrorComponent):
o.setRTL(0.0,1.0,0.0)
components = [c for c in components if c != o.name]
else:
raise pkex.BasePyKatException("{} is not a mirror or beamsplitter".format(o))
print(' Made {} transparent,'.format(o))
if len(components) != 0:
raise pkex.BasePyKatException("Cannot find component {}".format(components))
return kat
def BSpath(thickness, n=nsilica, angle=45.0):
def BS_optical_path(thickness, n=nsilica, angle=45.0):
"""
Compute optical path length in BS substrate, default
parameters assume angle of incidence of 45 deg and fused
......@@ -29,3 +59,14 @@ def BSpath(thickness, n=nsilica, angle=45.0):
L = thickness / math.cos(angle_subst)
return math.degrees(angle_subst), L
def make_list_copy(_l):
"""
Utility function, takes a list of strings or single string
and returns a copy of a list, e.g.
"string" copy to ["string"]
["string1", "string2"] copy to ["string1", "string2"]
"""
if not isinstance(_l, list):
_l = [_l]
return _l[:] # copy the list, just to be save
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment