diff --git a/README.md b/README.md index 2cd868dd0027edfed4801aa93691d92e8932eadc..6ec961299538b1bf790664220d7254fc2fa3c4df 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,32 @@ -# dielectric-thermal-noise -Dielectric mirror thermal noise +# Ditherm: Dielectric Thermal Noise Calculator +This is a tool to calculate Brownian thermal noise in dielectric mirror stacks. In theory, it supports noise calculations for n-layer stacks of any material, but it has only been tested with two-material stacks using data from the [Advanced LIGO](https://www.advancedligo.mit.edu/) noise calculator, [GWINC](https://awiki.ligo-wa.caltech.edu/aLIGO/GWINC) (that link requires albert.einstein style credentials, available to members of the LIGO Scientific Community only). + +## Notes ## +I provide this software without any kind of guarantee that it provides the correct answer. This software is in no way affiliated with or endorsed by any university or organisation - it is purely the work of a private individual. + +In particular, the extension from the two-material Brownian noise calculation (mostly based on Harry et al., 2002) to an n-material calculation was performed simply by inspecting the formulae. I don't know if this is reasonable or not. I suspect that for coatings with more than a few (~3) materials and with extremely small or large (outwith the range wavelength * 0.15 to wavelength * 0.35) optical thicknesses per layer, the results will diverge from reality. Use at your own risk! + +## Testing ## +To test the software against precomputed values from GWINC, run: + +`python ditherm test` + +from the root Ditherm directory (the same directory as this readme). + +## Future Work ## + - Implement phase correction to Brownian calculation as per the functions on [this page](https://awiki.ligo-wa.caltech.edu/aLIGO/GWINC) + - Look at proper way to combine multiple materials by reading these papers: + - http://journals.aps.org/prd/abstract/10.1103/PhysRevD.91.042002 + - http://journals.aps.org/prd/abstract/10.1103/PhysRevD.87.082001 + - http://journals.aps.org/prd/abstract/10.1103/PhysRevD.91.042001 + +## Credits ## +This implementation was written by Sean Leavey, but the calculations are based on a number of sources: + - http://dx.doi.org/10.1088/0264-9381/19/5/305 + - http://proceedings.spiedigitallibrary.org/proceeding.aspx?articleid=851432 (for the correction to perpendicular component of the loss angle from Harry et al. 2002) + - http://dx.doi.org/10.1088/0264-9381/24/2/008 + - GWINC (for the simplified version of the parallel component of Poisson's ratio) + - Personal discussion with colleagues + +Sean Leavey +https://github.com/SeanDS/ \ No newline at end of file diff --git a/ditherm/__init__.py b/ditherm/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..8d1c8b69c3fce7bea45c73efd06983e3c419a92f --- /dev/null +++ b/ditherm/__init__.py @@ -0,0 +1 @@ + diff --git a/ditherm/__main__.py b/ditherm/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..c726bef8aa6808fbc040cbd7bb0e338ab8965b26 --- /dev/null +++ b/ditherm/__main__.py @@ -0,0 +1,11 @@ +import sys + +if len(sys.argv) > 1: + if sys.argv[1] == 'test': + import unittest + + loader = unittest.TestLoader() + suite = loader.discover('.') + + runner = unittest.runner.TextTestRunner() + runner.run(suite) \ No newline at end of file diff --git a/ditherm/layers.py b/ditherm/layers.py new file mode 100644 index 0000000000000000000000000000000000000000..ce785c8306630077beccbd02e028f9570400262b --- /dev/null +++ b/ditherm/layers.py @@ -0,0 +1,98 @@ +from __future__ import division + +import materials + +class Layer(object): + def __init__(self, material, d): + self.material = material + self.d = d + + @property + def material(self): + return self.__material + + @material.setter + def material(self, material): + self.__material = material + + @property + def d(self): + """ + Layer physical thickness. + """ + + return self.__d + + @d.setter + def d(self, d): + self.__d = d + +class Bilayer(object): + def __init__(self, layerA, layerB): + self.layerA = layerA + self.layerB = layerB + + @property + def layerA(self): + return self.__layerA + + @layerA.setter + def layerA(self, layerA): + self.__layerA = layerA + + @property + def layerB(self): + return self.__layerB + + @layerB.setter + def layerB(self, layerB): + self.__layerB = layerB + + def d(self): + """ + Total bilayer physical thickness. + """ + + return self.layerA.d + self.layerB.d + + def yPara(self): + """ + Parallel component of Young's modulus. + """ + + return 1 / self.d() * (self.layerA.d * self.layerA.material.Y + self.layerB.d * self.layerB.material.Y) + + def yPerp(self): + """ + Perpendicular component of Young's modulus. + """ + + return self.d() / (self.layerA.d / self.layerA.material.Y + self.layerB.d / self.layerB.material.Y) + + def phiPara(self): + """ + Parallel component of loss angle. + """ + + return 1 / (self.d() * self.yPara()) * (self.layerA.material.Y * self.layerA.material.phi * self.layerA.d + self.layerB.material.Y * self.layerB.material.phi * self.layerB.d) + + def phiPerp(self): + """ + Perpendicular component of loss angle. + """ + + return self.yPerp() / self.d() * (self.layerA.d * self.layerA.material.phi / self.layerA.material.Y + self.layerB.d * self.layerB.material.phi / self.layerB.material.Y) + + def sigmaPara(self): + """ + Parallel component of Poisson ratio. + """ + + return (self.layerA.d * self.layerA.material.sigma * self.layerA.material.Y * (1 - self.layerA.material.sigma ** 2) + self.layerB.d * self.layerB.material.sigma * self.layerB.material.Y * (1 - self.layerB.material.sigma ** 2)) / (self.layerA.d * self.layerA.material.Y * (1 - self.layerB.material.sigma ** 2) + self.layerB.d * self.layerB.material.Y * (1 - self.layerA.material.sigma ** 2)) + + def sigmaPerp(self): + """ + Perpendicular component of Poisson ratio. + """ + + return (self.layerA.material.sigma * self.layerA.material.Y * self.layerA.d + self.layerB.material.sigma * self.layerB.material.Y * self.layerB.d) / (self.layerA.material.Y * self.layerA.d + self.layerB.material.Y * self.layerB.d) \ No newline at end of file diff --git a/ditherm/materials.py b/ditherm/materials.py new file mode 100644 index 0000000000000000000000000000000000000000..331449eb565703738440620efb0416e09e4d5b59 --- /dev/null +++ b/ditherm/materials.py @@ -0,0 +1,65 @@ +from __future__ import division + +class Material(object): + def __init__(self, name, Y, sigma, phi, n): + self.name = name + self.Y = Y + self.sigma = sigma + self.phi = phi + self.n = n + + @property + def name(self): + return self.__name + + @name.setter + def name(self, name): + self.__name = name + + @property + def Y(self): + return self.__Y + + @Y.setter + def Y(self, Y): + self.__Y = Y + + @property + def sigma(self): + return self.__sigma + + @sigma.setter + def sigma(self, sigma): + self.__sigma = sigma + + @property + def phi(self): + return self.__phi + + @phi.setter + def phi(self, phi): + self.__phi = phi + + @property + def n(self): + return self.__n + + @n.setter + def n(self, n): + self.__n = n + +class SilicaCoating(Material): + def __init__(self, *args, **kwargs): + super(SilicaCoating, self).__init__("Silica", 72e9, 0.17, 4e-5, 1.45) + +class TantalaCoating(Material): + def __init__(self, *args, **kwargs): + super(TantalaCoating, self).__init__("Tantala", 140e9, 0.23, 3.8e-4, 2.06) + +class TitaniumTantalaCoating(Material): + def __init__(self, *args, **kwargs): + super(TitaniumTantalaCoating, self).__init__("Titanium doped Tantala", 140e9, 0.23, 3e-4, 2.06) + +class SilicaSubstrate(Material): + def __init__(self, *args, **kwargs): + super(SilicaSubstrate, self).__init__("Silica", 72e9, 0.17, 5e-9, 1.45) \ No newline at end of file diff --git a/ditherm/stacks.py b/ditherm/stacks.py new file mode 100644 index 0000000000000000000000000000000000000000..0790e363ccb5a80b01a8327502df42812c5f99ea --- /dev/null +++ b/ditherm/stacks.py @@ -0,0 +1,102 @@ +from __future__ import division + +import numpy as np + +import layers +import materials + +class Stack(object): + def __init__(self, layers, substrate): + self.layers = layers + self.substrate = substrate + + @property + def layers(self): + return self.__layers + + @layers.setter + def layers(self, layers): + self.__layers = layers + + @property + def substrate(self): + return self.__substrate + + @substrate.setter + def substrate(self, substrate): + self.__substrate = substrate + + def d(self): + """ + Total thickness. + """ + + return sum(layer.d for layer in self.layers) + + def yPara(self): + """ + Total parallel Young's modulus. + """ + + return 1 / self.d() * sum([layer.d * layer.material.Y for layer in self.layers]) + + def yPerp(self): + """ + Total perpendicular Young's modulus. + """ + + return self.d() / sum([layer.d / layer.material.Y for layer in self.layers]) + + def phiPara(self): + """ + Total parallel loss angle. + """ + + return 1 / (self.d() * self.yPara()) * sum([layer.material.Y * layer.material.phi * layer.d for layer in self.layers]) + + def phiPerp(self): + """ + Total perpendicular loss angle. + """ + + return self.yPerp() / self.d() * sum([layer.d * layer.material.phi / layer.material.Y for layer in self.layers]) + + def sigmaPara(self): + """ + Total stack parallel Poisson ratio. + """ + + return np.mean([layer.material.sigma for layer in self.layers]) + + def sigmaPerp(self): + """ + Total perpendicular Poisson ratio. + """ + + return sum([layer.material.sigma * layer.material.Y * layer.d for layer in self.layers]) / sum([layer.material.Y * layer.d for layer in self.layers]) + + def phi(self, beamSize): + """ + Effective loss angle. + """ + + return (self.d() / (np.sqrt(np.pi) * beamSize * self.yPerp()) * + (self.phiPerp() * + (self.substrate.Y / (1 - self.substrate.sigma ** 2) - + 2 * self.sigmaPerp() ** 2 * self.substrate.Y * self.yPara() / + (self.yPerp() * (1 - self.substrate.sigma ** 2) * (1 - self.sigmaPara()))) + + self.yPara() * self.sigmaPerp() * (1 - 2 * self.substrate.sigma) / + ((1 - self.sigmaPara()) * (1 - self.substrate.sigma)) * + (self.phiPara() - self.phiPerp()) + + self.yPara() * self.yPerp() * (1 + self.substrate.sigma) * + (self.phiPara() * (1 - 2 * self.substrate.sigma) ** 2) / + (self.substrate.Y * (1 - self.sigmaPara() ** 2) * (1 - self.substrate.sigma)))) + + def brownianNoise(self, freq, beamSize, temperature): + k = 1.3806503e-23; + + return 2 * k * temperature / (np.sqrt(np.pi ** 3) * freq * beamSize * self.substrate.Y) * (1 - self.substrate.sigma ** 2) * self.phi(beamSize) + + # GWINC version, which does the same thing + #c = self.d()*(1-self.substrate.sigma**2)/(np.pi*beamSize**2)*((1/(self.yPerp()*(1-self.substrate.sigma**2))-2*self.sigmaPerp()**2*self.yPara()/(self.yPerp()**2*(1-self.substrate.sigma**2)*(1-self.sigmaPara())))*self.phiPerp() + self.yPara()*self.sigmaPerp()*(1-2*self.substrate.sigma)/(self.yPerp()*self.substrate.Y*(1-self.sigmaPara())*(1-self.substrate.sigma))*(self.phiPara()-self.phiPerp())+self.yPara()*(1+self.substrate.sigma)*(1-2*self.substrate.sigma)**2/(self.substrate.Y**2*(1-self.sigmaPara()**2)*(1-self.substrate.sigma))*self.phiPara()) + #return 4 * k * temperature * c / (2 * np.pi * freq) \ No newline at end of file diff --git a/ditherm/tests/__init__.py b/ditherm/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/ditherm/tests/gwinc/aligo.csv b/ditherm/tests/gwinc/aligo.csv new file mode 100644 index 0000000000000000000000000000000000000000..656eae851ef5ec8e0790877e63eedd2d776f5c17 --- /dev/null +++ b/ditherm/tests/gwinc/aligo.csv @@ -0,0 +1,1000 @@ +0.01,1.6682e-37,3.3897e-37 +0.010163,1.6415e-37,3.3354e-37 +0.010328,1.6153e-37,3.2821e-37 +0.010496,1.5894e-37,3.2295e-37 +0.010667,1.564e-37,3.1778e-37 +0.01084,1.5389e-37,3.127e-37 +0.011016,1.5143e-37,3.0769e-37 +0.011196,1.4901e-37,3.0277e-37 +0.011378,1.4662e-37,2.9792e-37 +0.011563,1.4428e-37,2.9316e-37 +0.011751,1.4197e-37,2.8846e-37 +0.011942,1.3969e-37,2.8385e-37 +0.012136,1.3746e-37,2.793e-37 +0.012334,1.3526e-37,2.7483e-37 +0.012534,1.3309e-37,2.7043e-37 +0.012738,1.3096e-37,2.6611e-37 +0.012945,1.2887e-37,2.6185e-37 +0.013156,1.2681e-37,2.5766e-37 +0.01337,1.2478e-37,2.5353e-37 +0.013587,1.2278e-37,2.4948e-37 +0.013808,1.2081e-37,2.4548e-37 +0.014033,1.1888e-37,2.4155e-37 +0.014261,1.1698e-37,2.3769e-37 +0.014493,1.1511e-37,2.3388e-37 +0.014729,1.1326e-37,2.3014e-37 +0.014968,1.1145e-37,2.2646e-37 +0.015212,1.0967e-37,2.2283e-37 +0.015459,1.0791e-37,2.1927e-37 +0.015711,1.0618e-37,2.1576e-37 +0.015966,1.0448e-37,2.123e-37 +0.016226,1.0281e-37,2.0891e-37 +0.01649,1.0117e-37,2.0556e-37 +0.016758,9.9548e-38,2.0227e-37 +0.017031,9.7955e-38,1.9904e-37 +0.017308,9.6387e-38,1.9585e-37 +0.017589,9.4844e-38,1.9272e-37 +0.017875,9.3326e-38,1.8963e-37 +0.018166,9.1833e-38,1.866e-37 +0.018461,9.0363e-38,1.8361e-37 +0.018762,8.8917e-38,1.8067e-37 +0.019067,8.7494e-38,1.7778e-37 +0.019377,8.6093e-38,1.7493e-37 +0.019692,8.4715e-38,1.7213e-37 +0.020012,8.336e-38,1.6938e-37 +0.020338,8.2025e-38,1.6667e-37 +0.020669,8.0713e-38,1.64e-37 +0.021005,7.9421e-38,1.6138e-37 +0.021347,7.815e-38,1.5879e-37 +0.021694,7.6899e-38,1.5625e-37 +0.022047,7.5668e-38,1.5375e-37 +0.022405,7.4457e-38,1.5129e-37 +0.02277,7.3265e-38,1.4887e-37 +0.02314,7.2093e-38,1.4649e-37 +0.023516,7.0939e-38,1.4414e-37 +0.023899,6.9804e-38,1.4183e-37 +0.024288,6.8687e-38,1.3956e-37 +0.024683,6.7587e-38,1.3733e-37 +0.025084,6.6505e-38,1.3513e-37 +0.025492,6.5441e-38,1.3297e-37 +0.025907,6.4394e-38,1.3084e-37 +0.026328,6.3363e-38,1.2875e-37 +0.026756,6.2349e-38,1.2669e-37 +0.027192,6.1351e-38,1.2466e-37 +0.027634,6.0369e-38,1.2266e-37 +0.028083,5.9403e-38,1.207e-37 +0.02854,5.8452e-38,1.1877e-37 +0.029004,5.7517e-38,1.1687e-37 +0.029476,5.6596e-38,1.15e-37 +0.029955,5.569e-38,1.1316e-37 +0.030443,5.4799e-38,1.1135e-37 +0.030938,5.3922e-38,1.0956e-37 +0.031441,5.3059e-38,1.0781e-37 +0.031952,5.221e-38,1.0609e-37 +0.032472,5.1374e-38,1.0439e-37 +0.033,5.0552e-38,1.0272e-37 +0.033537,4.9743e-38,1.0107e-37 +0.034083,4.8947e-38,9.9455e-38 +0.034637,4.8163e-38,9.7864e-38 +0.0352,4.7393e-38,9.6297e-38 +0.035773,4.6634e-38,9.4756e-38 +0.036355,4.5888e-38,9.324e-38 +0.036946,4.5153e-38,9.1747e-38 +0.037547,4.4431e-38,9.0279e-38 +0.038158,4.372e-38,8.8834e-38 +0.038778,4.302e-38,8.7412e-38 +0.039409,4.2331e-38,8.6013e-38 +0.04005,4.1654e-38,8.4637e-38 +0.040701,4.0987e-38,8.3282e-38 +0.041363,4.0331e-38,8.1949e-38 +0.042036,3.9686e-38,8.0638e-38 +0.04272,3.905e-38,7.9347e-38 +0.043415,3.8425e-38,7.8077e-38 +0.044121,3.781e-38,7.6827e-38 +0.044839,3.7205e-38,7.5598e-38 +0.045568,3.661e-38,7.4388e-38 +0.046309,3.6024e-38,7.3197e-38 +0.047062,3.5447e-38,7.2026e-38 +0.047828,3.488e-38,7.0873e-38 +0.048606,3.4322e-38,6.9739e-38 +0.049396,3.3772e-38,6.8623e-38 +0.0502,3.3232e-38,6.7524e-38 +0.051016,3.27e-38,6.6444e-38 +0.051846,3.2177e-38,6.538e-38 +0.052689,3.1662e-38,6.4334e-38 +0.053546,3.1155e-38,6.3304e-38 +0.054417,3.0656e-38,6.2291e-38 +0.055302,3.0166e-38,6.1294e-38 +0.056202,2.9683e-38,6.0313e-38 +0.057116,2.9208e-38,5.9348e-38 +0.058045,2.874e-38,5.8398e-38 +0.058989,2.828e-38,5.7463e-38 +0.059948,2.7828e-38,5.6544e-38 +0.060923,2.7382e-38,5.5639e-38 +0.061914,2.6944e-38,5.4748e-38 +0.062921,2.6513e-38,5.3872e-38 +0.063945,2.6089e-38,5.301e-38 +0.064985,2.5671e-38,5.2161e-38 +0.066042,2.526e-38,5.1326e-38 +0.067116,2.4856e-38,5.0505e-38 +0.068208,2.4458e-38,4.9697e-38 +0.069317,2.4067e-38,4.8901e-38 +0.070445,2.3681e-38,4.8119e-38 +0.07159,2.3302e-38,4.7348e-38 +0.072755,2.293e-38,4.6591e-38 +0.073938,2.2563e-38,4.5845e-38 +0.075141,2.2201e-38,4.5111e-38 +0.076363,2.1846e-38,4.4389e-38 +0.077605,2.1496e-38,4.3679e-38 +0.078867,2.1152e-38,4.298e-38 +0.08015,2.0814e-38,4.2292e-38 +0.081454,2.0481e-38,4.1615e-38 +0.082779,2.0153e-38,4.0949e-38 +0.084125,1.983e-38,4.0294e-38 +0.085493,1.9513e-38,3.9649e-38 +0.086884,1.9201e-38,3.9014e-38 +0.088297,1.8893e-38,3.839e-38 +0.089733,1.8591e-38,3.7775e-38 +0.091193,1.8294e-38,3.7171e-38 +0.092676,1.8001e-38,3.6576e-38 +0.094183,1.7713e-38,3.599e-38 +0.095715,1.7429e-38,3.5414e-38 +0.097272,1.715e-38,3.4848e-38 +0.098854,1.6876e-38,3.429e-38 +0.10046,1.6606e-38,3.3741e-38 +0.1021,1.634e-38,3.3201e-38 +0.10376,1.6078e-38,3.267e-38 +0.10544,1.5821e-38,3.2147e-38 +0.10716,1.5568e-38,3.1632e-38 +0.1089,1.5319e-38,3.1126e-38 +0.11067,1.5073e-38,3.0628e-38 +0.11247,1.4832e-38,3.0138e-38 +0.1143,1.4595e-38,2.9655e-38 +0.11616,1.4361e-38,2.9181e-38 +0.11805,1.4131e-38,2.8714e-38 +0.11997,1.3905e-38,2.8254e-38 +0.12192,1.3683e-38,2.7802e-38 +0.12391,1.3464e-38,2.7357e-38 +0.12592,1.3248e-38,2.6919e-38 +0.12797,1.3036e-38,2.6488e-38 +0.13005,1.2828e-38,2.6064e-38 +0.13217,1.2622e-38,2.5647e-38 +0.13432,1.242e-38,2.5237e-38 +0.1365,1.2221e-38,2.4833e-38 +0.13872,1.2026e-38,2.4435e-38 +0.14098,1.1833e-38,2.4044e-38 +0.14327,1.1644e-38,2.3659e-38 +0.1456,1.1458e-38,2.3281e-38 +0.14797,1.1274e-38,2.2908e-38 +0.15038,1.1094e-38,2.2542e-38 +0.15282,1.0916e-38,2.2181e-38 +0.15531,1.0742e-38,2.1826e-38 +0.15783,1.057e-38,2.1476e-38 +0.1604,1.04e-38,2.1133e-38 +0.16301,1.0234e-38,2.0795e-38 +0.16566,1.007e-38,2.0462e-38 +0.16836,9.909e-39,2.0134e-38 +0.17109,9.7504e-39,1.9812e-38 +0.17388,9.5944e-39,1.9495e-38 +0.1767,9.4408e-39,1.9183e-38 +0.17958,9.2897e-39,1.8876e-38 +0.1825,9.141e-39,1.8574e-38 +0.18547,8.9947e-39,1.8276e-38 +0.18848,8.8508e-39,1.7984e-38 +0.19155,8.7091e-39,1.7696e-38 +0.19467,8.5697e-39,1.7413e-38 +0.19783,8.4326e-39,1.7134e-38 +0.20105,8.2976e-39,1.686e-38 +0.20432,8.1648e-39,1.659e-38 +0.20764,8.0341e-39,1.6325e-38 +0.21102,7.9056e-39,1.6063e-38 +0.21445,7.779e-39,1.5806e-38 +0.21794,7.6545e-39,1.5553e-38 +0.22149,7.532e-39,1.5304e-38 +0.22509,7.4115e-39,1.5059e-38 +0.22875,7.2929e-39,1.4818e-38 +0.23247,7.1761e-39,1.4581e-38 +0.23625,7.0613e-39,1.4348e-38 +0.24009,6.9483e-39,1.4118e-38 +0.244,6.8371e-39,1.3892e-38 +0.24797,6.7276e-39,1.367e-38 +0.252,6.62e-39,1.3451e-38 +0.2561,6.514e-39,1.3236e-38 +0.26026,6.4098e-39,1.3024e-38 +0.2645,6.3072e-39,1.2816e-38 +0.2688,6.2062e-39,1.261e-38 +0.27317,6.1069e-39,1.2409e-38 +0.27762,6.0092e-39,1.221e-38 +0.28213,5.913e-39,1.2015e-38 +0.28672,5.8183e-39,1.1822e-38 +0.29138,5.7252e-39,1.1633e-38 +0.29612,5.6336e-39,1.1447e-38 +0.30094,5.5434e-39,1.1264e-38 +0.30583,5.4547e-39,1.1083e-38 +0.31081,5.3674e-39,1.0906e-38 +0.31586,5.2815e-39,1.0732e-38 +0.321,5.197e-39,1.056e-38 +0.32622,5.1138e-39,1.0391e-38 +0.33153,5.0319e-39,1.0224e-38 +0.33692,4.9514e-39,1.0061e-38 +0.3424,4.8722e-39,9.8998e-39 +0.34797,4.7942e-39,9.7414e-39 +0.35363,4.7175e-39,9.5854e-39 +0.35938,4.642e-39,9.432e-39 +0.36523,4.5677e-39,9.2811e-39 +0.37117,4.4946e-39,9.1325e-39 +0.3772,4.4226e-39,8.9864e-39 +0.38334,4.3518e-39,8.8425e-39 +0.38957,4.2822e-39,8.701e-39 +0.39591,4.2137e-39,8.5618e-39 +0.40235,4.1462e-39,8.4247e-39 +0.40889,4.0799e-39,8.2899e-39 +0.41555,4.0146e-39,8.1572e-39 +0.4223,3.9503e-39,8.0267e-39 +0.42917,3.8871e-39,7.8982e-39 +0.43615,3.8249e-39,7.7718e-39 +0.44325,3.7637e-39,7.6474e-39 +0.45046,3.7034e-39,7.525e-39 +0.45778,3.6441e-39,7.4046e-39 +0.46523,3.5858e-39,7.2861e-39 +0.4728,3.5284e-39,7.1695e-39 +0.48049,3.472e-39,7.0547e-39 +0.4883,3.4164e-39,6.9418e-39 +0.49624,3.3617e-39,6.8307e-39 +0.50432,3.3079e-39,6.7214e-39 +0.51252,3.255e-39,6.6138e-39 +0.52085,3.2029e-39,6.508e-39 +0.52933,3.1516e-39,6.4038e-39 +0.53794,3.1012e-39,6.3013e-39 +0.54669,3.0515e-39,6.2005e-39 +0.55558,3.0027e-39,6.1012e-39 +0.56461,2.9546e-39,6.0036e-39 +0.5738,2.9074e-39,5.9075e-39 +0.58313,2.8608e-39,5.8129e-39 +0.59262,2.815e-39,5.7199e-39 +0.60225,2.77e-39,5.6284e-39 +0.61205,2.7256e-39,5.5383e-39 +0.622,2.682e-39,5.4496e-39 +0.63212,2.6391e-39,5.3624e-39 +0.6424,2.5969e-39,5.2766e-39 +0.65285,2.5553e-39,5.1921e-39 +0.66347,2.5144e-39,5.109e-39 +0.67426,2.4742e-39,5.0273e-39 +0.68523,2.4346e-39,4.9468e-39 +0.69637,2.3956e-39,4.8676e-39 +0.7077,2.3573e-39,4.7897e-39 +0.71921,2.3195e-39,4.7131e-39 +0.73091,2.2824e-39,4.6376e-39 +0.7428,2.2459e-39,4.5634e-39 +0.75488,2.2099e-39,4.4904e-39 +0.76716,2.1746e-39,4.4185e-39 +0.77964,2.1398e-39,4.3478e-39 +0.79232,2.1055e-39,4.2782e-39 +0.8052,2.0718e-39,4.2097e-39 +0.8183,2.0387e-39,4.1424e-39 +0.83161,2.006e-39,4.0761e-39 +0.84514,1.9739e-39,4.0108e-39 +0.85888,1.9423e-39,3.9466e-39 +0.87285,1.9112e-39,3.8835e-39 +0.88705,1.8807e-39,3.8213e-39 +0.90148,1.8506e-39,3.7602e-39 +0.91614,1.8209e-39,3.7e-39 +0.93104,1.7918e-39,3.6408e-39 +0.94618,1.7631e-39,3.5825e-39 +0.96157,1.7349e-39,3.5252e-39 +0.97721,1.7071e-39,3.4687e-39 +0.99311,1.6798e-39,3.4132e-39 +1.0093,1.6529e-39,3.3586e-39 +1.0257,1.6265e-39,3.3048e-39 +1.0424,1.6004e-39,3.2519e-39 +1.0593,1.5748e-39,3.1999e-39 +1.0765,1.5496e-39,3.1487e-39 +1.0941,1.5248e-39,3.0983e-39 +1.1118,1.5004e-39,3.0487e-39 +1.1299,1.4764e-39,2.9999e-39 +1.1483,1.4528e-39,2.9519e-39 +1.167,1.4295e-39,2.9047e-39 +1.186,1.4066e-39,2.8582e-39 +1.2053,1.3841e-39,2.8124e-39 +1.2249,1.362e-39,2.7674e-39 +1.2448,1.3402e-39,2.7231e-39 +1.265,1.3187e-39,2.6795e-39 +1.2856,1.2976e-39,2.6366e-39 +1.3065,1.2769e-39,2.5944e-39 +1.3278,1.2564e-39,2.5529e-39 +1.3494,1.2363e-39,2.5121e-39 +1.3713,1.2165e-39,2.4719e-39 +1.3936,1.1971e-39,2.4323e-39 +1.4163,1.1779e-39,2.3934e-39 +1.4393,1.159e-39,2.3551e-39 +1.4627,1.1405e-39,2.3174e-39 +1.4865,1.1222e-39,2.2803e-39 +1.5107,1.1043e-39,2.2438e-39 +1.5353,1.0866e-39,2.2079e-39 +1.5602,1.0692e-39,2.1725e-39 +1.5856,1.0521e-39,2.1378e-39 +1.6114,1.0353e-39,2.1036e-39 +1.6376,1.0187e-39,2.0699e-39 +1.6643,1.0024e-39,2.0368e-39 +1.6913,9.8634e-40,2.0042e-39 +1.7188,9.7056e-40,1.9721e-39 +1.7468,9.5502e-40,1.9405e-39 +1.7752,9.3974e-40,1.9095e-39 +1.8041,9.247e-40,1.8789e-39 +1.8334,9.099e-40,1.8488e-39 +1.8632,8.9534e-40,1.8192e-39 +1.8936,8.8101e-40,1.7901e-39 +1.9244,8.6691e-40,1.7615e-39 +1.9557,8.5303e-40,1.7333e-39 +1.9875,8.3938e-40,1.7055e-39 +2.0198,8.2595e-40,1.6782e-39 +2.0526,8.1273e-40,1.6514e-39 +2.086,7.9972e-40,1.625e-39 +2.12,7.8692e-40,1.5989e-39 +2.1544,7.7433e-40,1.5734e-39 +2.1895,7.6193e-40,1.5482e-39 +2.2251,7.4974e-40,1.5234e-39 +2.2613,7.3774e-40,1.499e-39 +2.2981,7.2593e-40,1.475e-39 +2.3354,7.1431e-40,1.4514e-39 +2.3734,7.0288e-40,1.4282e-39 +2.412,6.9163e-40,1.4053e-39 +2.4513,6.8056e-40,1.3828e-39 +2.4911,6.6967e-40,1.3607e-39 +2.5316,6.5895e-40,1.3389e-39 +2.5728,6.4841e-40,1.3175e-39 +2.6147,6.3803e-40,1.2964e-39 +2.6572,6.2782e-40,1.2757e-39 +2.7004,6.1777e-40,1.2552e-39 +2.7443,6.0788e-40,1.2352e-39 +2.789,5.9815e-40,1.2154e-39 +2.8343,5.8858e-40,1.1959e-39 +2.8804,5.7916e-40,1.1768e-39 +2.9273,5.6989e-40,1.158e-39 +2.9749,5.6077e-40,1.1394e-39 +3.0233,5.5179e-40,1.1212e-39 +3.0725,5.4296e-40,1.1032e-39 +3.1224,5.3427e-40,1.0856e-39 +3.1732,5.2572e-40,1.0682e-39 +3.2248,5.1731e-40,1.0511e-39 +3.2773,5.0903e-40,1.0343e-39 +3.3306,5.0088e-40,1.0177e-39 +3.3848,4.9286e-40,1.0015e-39 +3.4398,4.8498e-40,9.8543e-40 +3.4958,4.7721e-40,9.6966e-40 +3.5526,4.6958e-40,9.5414e-40 +3.6104,4.6206e-40,9.3887e-40 +3.6691,4.5467e-40,9.2384e-40 +3.7288,4.4739e-40,9.0905e-40 +3.7895,4.4023e-40,8.945e-40 +3.8511,4.3318e-40,8.8019e-40 +3.9137,4.2625e-40,8.661e-40 +3.9774,4.1943e-40,8.5224e-40 +4.0421,4.1271e-40,8.386e-40 +4.1078,4.0611e-40,8.2518e-40 +4.1747,3.9961e-40,8.1197e-40 +4.2426,3.9321e-40,7.9898e-40 +4.3116,3.8692e-40,7.8619e-40 +4.3817,3.8073e-40,7.7361e-40 +4.453,3.7463e-40,7.6122e-40 +4.5254,3.6864e-40,7.4904e-40 +4.599,3.6274e-40,7.3705e-40 +4.6738,3.5693e-40,7.2526e-40 +4.7498,3.5122e-40,7.1365e-40 +4.8271,3.456e-40,7.0223e-40 +4.9056,3.4007e-40,6.9099e-40 +4.9854,3.3463e-40,6.7993e-40 +5.0665,3.2927e-40,6.6905e-40 +5.1489,3.24e-40,6.5834e-40 +5.2326,3.1881e-40,6.478e-40 +5.3177,3.1371e-40,6.3743e-40 +5.4042,3.0869e-40,6.2723e-40 +5.4921,3.0375e-40,6.1719e-40 +5.5814,2.9889e-40,6.0732e-40 +5.6722,2.9411e-40,5.976e-40 +5.7645,2.894e-40,5.8803e-40 +5.8582,2.8477e-40,5.7862e-40 +5.9535,2.8021e-40,5.6936e-40 +6.0504,2.7572e-40,5.6025e-40 +6.1488,2.7131e-40,5.5128e-40 +6.2488,2.6697e-40,5.4246e-40 +6.3504,2.627e-40,5.3377e-40 +6.4537,2.5849e-40,5.2523e-40 +6.5587,2.5435e-40,5.1683e-40 +6.6654,2.5028e-40,5.0855e-40 +6.7738,2.4628e-40,5.0041e-40 +6.884,2.4234e-40,4.9241e-40 +6.9959,2.3846e-40,4.8452e-40 +7.1097,2.3464e-40,4.7677e-40 +7.2253,2.3089e-40,4.6914e-40 +7.3429,2.2719e-40,4.6163e-40 +7.4623,2.2355e-40,4.5424e-40 +7.5837,2.1998e-40,4.4697e-40 +7.707,2.1646e-40,4.3982e-40 +7.8324,2.1299e-40,4.3278e-40 +7.9598,2.0958e-40,4.2585e-40 +8.0892,2.0623e-40,4.1904e-40 +8.2208,2.0293e-40,4.1233e-40 +8.3545,1.9968e-40,4.0573e-40 +8.4904,1.9648e-40,3.9924e-40 +8.6285,1.9334e-40,3.9285e-40 +8.7689,1.9025e-40,3.8656e-40 +8.9115,1.872e-40,3.8037e-40 +9.0564,1.842e-40,3.7429e-40 +9.2037,1.8126e-40,3.683e-40 +9.3534,1.7836e-40,3.624e-40 +9.5056,1.755e-40,3.566e-40 +9.6602,1.7269e-40,3.5089e-40 +9.8173,1.6993e-40,3.4528e-40 +9.977,1.6721e-40,3.3975e-40 +10.139,1.6453e-40,3.3431e-40 +10.304,1.619e-40,3.2896e-40 +10.472,1.5931e-40,3.237e-40 +10.642,1.5676e-40,3.1852e-40 +10.815,1.5425e-40,3.1342e-40 +10.991,1.5178e-40,3.084e-40 +11.17,1.4935e-40,3.0347e-40 +11.352,1.4696e-40,2.9861e-40 +11.536,1.4461e-40,2.9383e-40 +11.724,1.4229e-40,2.8913e-40 +11.915,1.4002e-40,2.845e-40 +12.108,1.3778e-40,2.7995e-40 +12.305,1.3557e-40,2.7547e-40 +12.505,1.334e-40,2.7106e-40 +12.709,1.3127e-40,2.6672e-40 +12.915,1.2917e-40,2.6245e-40 +13.126,1.271e-40,2.5825e-40 +13.339,1.2506e-40,2.5412e-40 +13.556,1.2306e-40,2.5005e-40 +13.777,1.2109e-40,2.4605e-40 +14.001,1.1915e-40,2.4211e-40 +14.228,1.1725e-40,2.3824e-40 +14.46,1.1537e-40,2.3442e-40 +14.695,1.1352e-40,2.3067e-40 +14.934,1.1171e-40,2.2698e-40 +15.177,1.0992e-40,2.2335e-40 +15.424,1.0816e-40,2.1977e-40 +15.675,1.0643e-40,2.1625e-40 +15.93,1.0473e-40,2.1279e-40 +16.189,1.0305e-40,2.0939e-40 +16.452,1.014e-40,2.0604e-40 +16.719,9.9778e-41,2.0274e-40 +16.991,9.8181e-41,1.9949e-40 +17.268,9.6609e-41,1.963e-40 +17.549,9.5063e-41,1.9316e-40 +17.834,9.3542e-41,1.9007e-40 +18.124,9.2045e-41,1.8703e-40 +18.419,9.0572e-41,1.8403e-40 +18.719,8.9122e-41,1.8109e-40 +19.023,8.7696e-41,1.7819e-40 +19.332,8.6292e-41,1.7534e-40 +19.647,8.4911e-41,1.7253e-40 +19.966,8.3552e-41,1.6977e-40 +20.291,8.2215e-41,1.6705e-40 +20.621,8.0899e-41,1.6438e-40 +20.957,7.9604e-41,1.6175e-40 +21.297,7.833e-41,1.5916e-40 +21.644,7.7076e-41,1.5661e-40 +21.996,7.5843e-41,1.5411e-40 +22.354,7.4629e-41,1.5164e-40 +22.717,7.3435e-41,1.4921e-40 +23.087,7.2259e-41,1.4682e-40 +23.462,7.1103e-41,1.4447e-40 +23.844,6.9965e-41,1.4216e-40 +24.232,6.8845e-41,1.3989e-40 +24.626,6.7743e-41,1.3765e-40 +25.026,6.6659e-41,1.3544e-40 +25.433,6.5592e-41,1.3328e-40 +25.847,6.4542e-41,1.3114e-40 +26.268,6.3509e-41,1.2905e-40 +26.695,6.2493e-41,1.2698e-40 +27.129,6.1493e-41,1.2495e-40 +27.57,6.0509e-41,1.2295e-40 +28.019,5.954e-41,1.2098e-40 +28.474,5.8587e-41,1.1904e-40 +28.938,5.7649e-41,1.1714e-40 +29.408,5.6727e-41,1.1526e-40 +29.887,5.5819e-41,1.1342e-40 +30.373,5.4926e-41,1.116e-40 +30.867,5.4046e-41,1.0982e-40 +31.369,5.3181e-41,1.0806e-40 +31.879,5.233e-41,1.0633e-40 +32.397,5.1493e-41,1.0463e-40 +32.924,5.0669e-41,1.0295e-40 +33.46,4.9858e-41,1.0131e-40 +34.004,4.906e-41,9.9685e-41 +34.557,4.8275e-41,9.8089e-41 +35.119,4.7502e-41,9.652e-41 +35.69,4.6742e-41,9.4975e-41 +36.271,4.5994e-41,9.3455e-41 +36.861,4.5257e-41,9.1959e-41 +37.461,4.4533e-41,9.0487e-41 +38.07,4.382e-41,8.9039e-41 +38.689,4.3119e-41,8.7614e-41 +39.318,4.2429e-41,8.6212e-41 +39.958,4.175e-41,8.4832e-41 +40.608,4.1082e-41,8.3474e-41 +41.268,4.0424e-41,8.2138e-41 +41.939,3.9777e-41,8.0824e-41 +42.622,3.9141e-41,7.953e-41 +43.315,3.8514e-41,7.8257e-41 +44.019,3.7898e-41,7.7005e-41 +44.735,3.7291e-41,7.5772e-41 +45.463,3.6694e-41,7.456e-41 +46.202,3.6107e-41,7.3366e-41 +46.954,3.5529e-41,7.2192e-41 +47.718,3.4961e-41,7.1037e-41 +48.494,3.4401e-41,6.99e-41 +49.282,3.385e-41,6.8781e-41 +50.084,3.3309e-41,6.768e-41 +50.899,3.2776e-41,6.6597e-41 +51.727,3.2251e-41,6.5531e-41 +52.568,3.1735e-41,6.4482e-41 +53.423,3.1227e-41,6.345e-41 +54.292,3.0727e-41,6.2435e-41 +55.175,3.0235e-41,6.1435e-41 +56.072,2.9751e-41,6.0452e-41 +56.984,2.9275e-41,5.9485e-41 +57.911,2.8807e-41,5.8533e-41 +58.853,2.8346e-41,5.7596e-41 +59.81,2.7892e-41,5.6674e-41 +60.783,2.7446e-41,5.5767e-41 +61.772,2.7006e-41,5.4874e-41 +62.777,2.6574e-41,5.3996e-41 +63.798,2.6149e-41,5.3132e-41 +64.835,2.573e-41,5.2282e-41 +65.89,2.5319e-41,5.1445e-41 +66.962,2.4913e-41,5.0622e-41 +68.051,2.4515e-41,4.9811e-41 +69.158,2.4122e-41,4.9014e-41 +70.282,2.3736e-41,4.823e-41 +71.426,2.3356e-41,4.7458e-41 +72.587,2.2982e-41,4.6698e-41 +73.768,2.2615e-41,4.5951e-41 +74.968,2.2253e-41,4.5215e-41 +76.187,2.1897e-41,4.4492e-41 +77.426,2.1546e-41,4.378e-41 +78.686,2.1201e-41,4.3079e-41 +79.966,2.0862e-41,4.2389e-41 +81.266,2.0528e-41,4.1711e-41 +82.588,2.0199e-41,4.1043e-41 +83.931,1.9876e-41,4.0387e-41 +85.296,1.9558e-41,3.974e-41 +86.684,1.9245e-41,3.9104e-41 +88.094,1.8937e-41,3.8478e-41 +89.527,1.8634e-41,3.7862e-41 +90.983,1.8336e-41,3.7256e-41 +92.463,1.8042e-41,3.666e-41 +93.966,1.7753e-41,3.6073e-41 +95.495,1.7469e-41,3.5496e-41 +97.048,1.719e-41,3.4928e-41 +98.627,1.6915e-41,3.4369e-41 +100.23,1.6644e-41,3.3819e-41 +101.86,1.6378e-41,3.3278e-41 +103.52,1.6115e-41,3.2745e-41 +105.2,1.5858e-41,3.2221e-41 +106.91,1.5604e-41,3.1705e-41 +108.65,1.5354e-41,3.1198e-41 +110.42,1.5108e-41,3.0699e-41 +112.21,1.4866e-41,3.0207e-41 +114.04,1.4628e-41,2.9724e-41 +115.89,1.4394e-41,2.9248e-41 +117.78,1.4164e-41,2.878e-41 +119.7,1.3937e-41,2.8319e-41 +121.64,1.3714e-41,2.7866e-41 +123.62,1.3495e-41,2.742e-41 +125.63,1.3279e-41,2.6981e-41 +127.68,1.3066e-41,2.6549e-41 +129.75,1.2857e-41,2.6124e-41 +131.86,1.2651e-41,2.5706e-41 +134.01,1.2449e-41,2.5295e-41 +136.19,1.225e-41,2.489e-41 +138.4,1.2054e-41,2.4492e-41 +140.65,1.1861e-41,2.41e-41 +142.94,1.1671e-41,2.3714e-41 +145.27,1.1484e-41,2.3335e-41 +147.63,1.13e-41,2.2961e-41 +150.03,1.1119e-41,2.2594e-41 +152.47,1.0941e-41,2.2232e-41 +154.95,1.0766e-41,2.1876e-41 +157.47,1.0594e-41,2.1526e-41 +160.03,1.0424e-41,2.1182e-41 +162.63,1.0258e-41,2.0842e-41 +165.28,1.0093e-41,2.0509e-41 +167.97,9.9319e-42,2.0181e-41 +170.7,9.7729e-42,1.9858e-41 +173.48,9.6165e-42,1.954e-41 +176.3,9.4626e-42,1.9227e-41 +179.17,9.3112e-42,1.8919e-41 +182.08,9.1621e-42,1.8617e-41 +185.04,9.0155e-42,1.8319e-41 +188.05,8.8712e-42,1.8025e-41 +191.11,8.7292e-42,1.7737e-41 +194.22,8.5895e-42,1.7453e-41 +197.38,8.452e-42,1.7174e-41 +200.59,8.3168e-42,1.6899e-41 +203.85,8.1837e-42,1.6628e-41 +207.16,8.0527e-42,1.6362e-41 +210.53,7.9238e-42,1.61e-41 +213.96,7.797e-42,1.5843e-41 +217.44,7.6722e-42,1.5589e-41 +220.98,7.5494e-42,1.534e-41 +224.57,7.4286e-42,1.5094e-41 +228.22,7.3097e-42,1.4853e-41 +231.93,7.1927e-42,1.4615e-41 +235.71,7.0776e-42,1.4381e-41 +239.54,6.9643e-42,1.4151e-41 +243.44,6.8528e-42,1.3924e-41 +247.4,6.7432e-42,1.3701e-41 +251.42,6.6352e-42,1.3482e-41 +255.51,6.529e-42,1.3266e-41 +259.67,6.4245e-42,1.3054e-41 +263.89,6.3217e-42,1.2845e-41 +268.18,6.2205e-42,1.264e-41 +272.54,6.121e-42,1.2437e-41 +276.98,6.023e-42,1.2238e-41 +281.48,5.9266e-42,1.2042e-41 +286.06,5.8318e-42,1.185e-41 +290.71,5.7384e-42,1.166e-41 +295.44,5.6466e-42,1.1473e-41 +300.25,5.5562e-42,1.129e-41 +305.13,5.4673e-42,1.1109e-41 +310.09,5.3798e-42,1.0931e-41 +315.14,5.2937e-42,1.0756e-41 +320.26,5.209e-42,1.0584e-41 +325.47,5.1256e-42,1.0415e-41 +330.76,5.0436e-42,1.0248e-41 +336.14,4.9628e-42,1.0084e-41 +341.61,4.8834e-42,9.9226e-42 +347.17,4.8053e-42,9.7638e-42 +352.82,4.7283e-42,9.6076e-42 +358.55,4.6527e-42,9.4538e-42 +364.39,4.5782e-42,9.3025e-42 +370.31,4.5049e-42,9.1536e-42 +376.34,4.4328e-42,9.0071e-42 +382.46,4.3619e-42,8.863e-42 +388.68,4.2921e-42,8.7211e-42 +395,4.2234e-42,8.5815e-42 +401.42,4.1558e-42,8.4442e-42 +407.95,4.0893e-42,8.309e-42 +414.59,4.0238e-42,8.176e-42 +421.33,3.9594e-42,8.0452e-42 +428.19,3.8961e-42,7.9164e-42 +435.15,3.8337e-42,7.7897e-42 +442.23,3.7723e-42,7.6651e-42 +449.42,3.712e-42,7.5424e-42 +456.73,3.6526e-42,7.4217e-42 +464.16,3.5941e-42,7.3029e-42 +471.71,3.5366e-42,7.186e-42 +479.38,3.48e-42,7.071e-42 +487.18,3.4243e-42,6.9578e-42 +495.1,3.3695e-42,6.8465e-42 +503.15,3.3155e-42,6.7369e-42 +511.34,3.2625e-42,6.6291e-42 +519.66,3.2103e-42,6.523e-42 +528.11,3.1589e-42,6.4186e-42 +536.7,3.1083e-42,6.3158e-42 +545.43,3.0586e-42,6.2148e-42 +554.3,3.0096e-42,6.1153e-42 +563.31,2.9615e-42,6.0174e-42 +572.48,2.9141e-42,5.9211e-42 +581.79,2.8674e-42,5.8263e-42 +591.25,2.8215e-42,5.7331e-42 +600.87,2.7764e-42,5.6413e-42 +610.64,2.7319e-42,5.5511e-42 +620.57,2.6882e-42,5.4622e-42 +630.67,2.6452e-42,5.3748e-42 +640.92,2.6029e-42,5.2888e-42 +651.35,2.5612e-42,5.2041e-42 +661.94,2.5202e-42,5.1208e-42 +672.71,2.4799e-42,5.0389e-42 +683.65,2.4402e-42,4.9582e-42 +694.77,2.4011e-42,4.8789e-42 +706.07,2.3627e-42,4.8008e-42 +717.56,2.3249e-42,4.7239e-42 +729.23,2.2877e-42,4.6483e-42 +741.09,2.2511e-42,4.5739e-42 +753.14,2.215e-42,4.5007e-42 +765.39,2.1796e-42,4.4287e-42 +777.84,2.1447e-42,4.3578e-42 +790.49,2.1104e-42,4.2881e-42 +803.35,2.0766e-42,4.2195e-42 +816.42,2.0434e-42,4.1519e-42 +829.7,2.0107e-42,4.0855e-42 +843.19,1.9785e-42,4.0201e-42 +856.91,1.9468e-42,3.9557e-42 +870.84,1.9157e-42,3.8924e-42 +885.01,1.885e-42,3.8301e-42 +899.4,1.8548e-42,3.7688e-42 +914.03,1.8251e-42,3.7085e-42 +928.9,1.7959e-42,3.6492e-42 +944.01,1.7672e-42,3.5908e-42 +959.36,1.7389e-42,3.5333e-42 +974.96,1.7111e-42,3.4767e-42 +990.82,1.6837e-42,3.4211e-42 +1006.9,1.6567e-42,3.3663e-42 +1023.3,1.6302e-42,3.3125e-42 +1040,1.6041e-42,3.2594e-42 +1056.9,1.5785e-42,3.2073e-42 +1074.1,1.5532e-42,3.1559e-42 +1091.5,1.5283e-42,3.1054e-42 +1109.3,1.5039e-42,3.0557e-42 +1127.3,1.4798e-42,3.0068e-42 +1145.7,1.4561e-42,2.9587e-42 +1164.3,1.4328e-42,2.9114e-42 +1183.2,1.4099e-42,2.8648e-42 +1202.5,1.3873e-42,2.8189e-42 +1222,1.3651e-42,2.7738e-42 +1241.9,1.3433e-42,2.7294e-42 +1262.1,1.3218e-42,2.6857e-42 +1282.6,1.3006e-42,2.6427e-42 +1303.5,1.2798e-42,2.6004e-42 +1324.7,1.2593e-42,2.5588e-42 +1346.3,1.2392e-42,2.5179e-42 +1368.2,1.2193e-42,2.4776e-42 +1390.4,1.1998e-42,2.4379e-42 +1413,1.1806e-42,2.3989e-42 +1436,1.1617e-42,2.3605e-42 +1459.4,1.1431e-42,2.3227e-42 +1483.1,1.1248e-42,2.2855e-42 +1507.2,1.1068e-42,2.249e-42 +1531.7,1.0891e-42,2.213e-42 +1556.7,1.0717e-42,2.1776e-42 +1582,1.0545e-42,2.1427e-42 +1607.7,1.0376e-42,2.1084e-42 +1633.9,1.021e-42,2.0747e-42 +1660.4,1.0047e-42,2.0415e-42 +1687.4,9.8862e-43,2.0088e-42 +1714.9,9.728e-43,1.9766e-42 +1742.8,9.5723e-43,1.945e-42 +1771.1,9.4191e-43,1.9139e-42 +1799.9,9.2683e-43,1.8832e-42 +1829.2,9.12e-43,1.8531e-42 +1859,8.974e-43,1.8234e-42 +1889.2,8.8304e-43,1.7943e-42 +1919.9,8.6891e-43,1.7655e-42 +1951.1,8.55e-43,1.7373e-42 +1982.9,8.4132e-43,1.7095e-42 +2015.1,8.2785e-43,1.6821e-42 +2047.9,8.146e-43,1.6552e-42 +2081.2,8.0156e-43,1.6287e-42 +2115.1,7.8874e-43,1.6026e-42 +2149.5,7.7611e-43,1.577e-42 +2184.4,7.6369e-43,1.5517e-42 +2220,7.5147e-43,1.5269e-42 +2256.1,7.3944e-43,1.5025e-42 +2292.8,7.2761e-43,1.4784e-42 +2330.1,7.1596e-43,1.4548e-42 +2368,7.045e-43,1.4315e-42 +2406.5,6.9323e-43,1.4086e-42 +2445.6,6.8213e-43,1.386e-42 +2485.4,6.7121e-43,1.3638e-42 +2525.8,6.6047e-43,1.342e-42 +2566.9,6.499e-43,1.3205e-42 +2608.7,6.395e-43,1.2994e-42 +2651.1,6.2926e-43,1.2786e-42 +2694.2,6.1919e-43,1.2581e-42 +2738,6.0928e-43,1.238e-42 +2782.6,5.9953e-43,1.2182e-42 +2827.8,5.8994e-43,1.1987e-42 +2873.8,5.8049e-43,1.1795e-42 +2920.6,5.712e-43,1.1606e-42 +2968.1,5.6206e-43,1.1421e-42 +3016.3,5.5307e-43,1.1238e-42 +3065.4,5.4421e-43,1.1058e-42 +3115.3,5.355e-43,1.0881e-42 +3165.9,5.2693e-43,1.0707e-42 +3217.4,5.185e-43,1.0535e-42 +3269.7,5.102e-43,1.0367e-42 +3322.9,5.0204e-43,1.0201e-42 +3377,4.94e-43,1.0038e-42 +3431.9,4.861e-43,9.877e-43 +3487.7,4.7832e-43,9.7189e-43 +3544.5,4.7066e-43,9.5634e-43 +3602.1,4.6313e-43,9.4103e-43 +3660.7,4.5571e-43,9.2597e-43 +3720.2,4.4842e-43,9.1115e-43 +3780.7,4.4124e-43,8.9657e-43 +3842.2,4.3418e-43,8.8222e-43 +3904.7,4.2723e-43,8.681e-43 +3968.2,4.204e-43,8.5421e-43 +4032.8,4.1367e-43,8.4053e-43 +4098.4,4.0705e-43,8.2708e-43 +4165,4.0053e-43,8.1384e-43 +4232.8,3.9412e-43,8.0082e-43 +4301.6,3.8781e-43,7.88e-43 +4371.6,3.8161e-43,7.7539e-43 +4442.7,3.755e-43,7.6298e-43 +4515,3.6949e-43,7.5077e-43 +4588.4,3.6358e-43,7.3875e-43 +4663,3.5776e-43,7.2693e-43 +4738.9,3.5203e-43,7.153e-43 +4816,3.464e-43,7.0385e-43 +4894.3,3.4085e-43,6.9258e-43 +4973.9,3.354e-43,6.815e-43 +5054.8,3.3003e-43,6.7059e-43 +5137,3.2475e-43,6.5986e-43 +5220.6,3.1955e-43,6.493e-43 +5305.5,3.1444e-43,6.389e-43 +5391.8,3.094e-43,6.2868e-43 +5479.5,3.0445e-43,6.1862e-43 +5568.6,2.9958e-43,6.0872e-43 +5659.2,2.9478e-43,5.9897e-43 +5751.2,2.9007e-43,5.8939e-43 +5844.8,2.8542e-43,5.7995e-43 +5939.8,2.8086e-43,5.7067e-43 +6036.4,2.7636e-43,5.6154e-43 +6134.6,2.7194e-43,5.5255e-43 +6234.4,2.6759e-43,5.4371e-43 +6335.8,2.633e-43,5.3501e-43 +6438.9,2.5909e-43,5.2644e-43 +6543.6,2.5494e-43,5.1802e-43 +6650,2.5086e-43,5.0973e-43 +6758.2,2.4685e-43,5.0157e-43 +6868.1,2.429e-43,4.9354e-43 +6979.8,2.3901e-43,4.8564e-43 +7093.3,2.3518e-43,4.7787e-43 +7208.7,2.3142e-43,4.7022e-43 +7326,2.2772e-43,4.627e-43 +7445.1,2.2407e-43,4.5529e-43 +7566.2,2.2048e-43,4.48e-43 +7689.3,2.1696e-43,4.4083e-43 +7814.4,2.1348e-43,4.3378e-43 +7941.5,2.1007e-43,4.2684e-43 +8070.6,2.067e-43,4.2e-43 +8201.9,2.034e-43,4.1328e-43 +8335.3,2.0014e-43,4.0667e-43 +8470.9,1.9694e-43,4.0016e-43 +8608.6,1.9379e-43,3.9375e-43 +8748.7,1.9068e-43,3.8745e-43 +8891,1.8763e-43,3.8125e-43 +9035.6,1.8463e-43,3.7515e-43 +9182.5,1.8167e-43,3.6915e-43 +9331.9,1.7877e-43,3.6324e-43 +9483.7,1.7591e-43,3.5742e-43 +9637.9,1.7309e-43,3.517e-43 +9794.7,1.7032e-43,3.4607e-43 +9954,1.6759e-43,3.4054e-43 +10116,1.6491e-43,3.3509e-43 +10280,1.6227e-43,3.2972e-43 +10448,1.5968e-43,3.2445e-43 +10618,1.5712e-43,3.1925e-43 +10790,1.5461e-43,3.1414e-43 +10966,1.5213e-43,3.0912e-43 +11144,1.497e-43,3.0417e-43 +11325,1.473e-43,2.993e-43 +11510,1.4494e-43,2.9451e-43 +11697,1.4262e-43,2.898e-43 +11887,1.4034e-43,2.8516e-43 +12080,1.3809e-43,2.8059e-43 +12277,1.3588e-43,2.761e-43 +12477,1.3371e-43,2.7168e-43 +12680,1.3157e-43,2.6734e-43 +12886,1.2946e-43,2.6306e-43 +13095,1.2739e-43,2.5885e-43 +13308,1.2535e-43,2.547e-43 +13525,1.2335e-43,2.5063e-43 +13745,1.2137e-43,2.4662e-43 +13968,1.1943e-43,2.4267e-43 +14196,1.1752e-43,2.3879e-43 +14426,1.1564e-43,2.3496e-43 +14661,1.1379e-43,2.312e-43 +14900,1.1197e-43,2.275e-43 +15142,1.1017e-43,2.2386e-43 +15388,1.0841e-43,2.2028e-43 +15638,1.0667e-43,2.1675e-43 +15893,1.0497e-43,2.1328e-43 +16151,1.0329e-43,2.0987e-43 +16414,1.0163e-43,2.0651e-43 +16681,1.0001e-43,2.0321e-43 +16952,9.8407e-44,1.9995e-43 +17228,9.6832e-44,1.9675e-43 +17508,9.5283e-44,1.9361e-43 +17793,9.3758e-44,1.9051e-43 +18082,9.2257e-44,1.8746e-43 +18377,9.078e-44,1.8446e-43 +18675,8.9328e-44,1.8151e-43 +18979,8.7898e-44,1.786e-43 +19288,8.6491e-44,1.7574e-43 +19602,8.5107e-44,1.7293e-43 +19920,8.3745e-44,1.7016e-43 +20244,8.2404e-44,1.6744e-43 +20574,8.1086e-44,1.6476e-43 +20908,7.9788e-44,1.6212e-43 +21248,7.8511e-44,1.5953e-43 +21594,7.7254e-44,1.5697e-43 +21945,7.6018e-44,1.5446e-43 +22302,7.4801e-44,1.5199e-43 +22665,7.3604e-44,1.4956e-43 +23034,7.2426e-44,1.4716e-43 +23408,7.1267e-44,1.4481e-43 +23789,7.0126e-44,1.4249e-43 +24176,6.9004e-44,1.4021e-43 +24569,6.7899e-44,1.3797e-43 +24969,6.6813e-44,1.3576e-43 +25375,6.5743e-44,1.3358e-43 +25788,6.4691e-44,1.3145e-43 +26207,6.3656e-44,1.2934e-43 +26633,6.2637e-44,1.2727e-43 +27067,6.1635e-44,1.2524e-43 +27507,6.0648e-44,1.2323e-43 +27954,5.9677e-44,1.2126e-43 +28409,5.8722e-44,1.1932e-43 +28871,5.7783e-44,1.1741e-43 +29340,5.6858e-44,1.1553e-43 +29818,5.5948e-44,1.1368e-43 +30303,5.5052e-44,1.1186e-43 +30796,5.4171e-44,1.1007e-43 +31296,5.3304e-44,1.0831e-43 +31806,5.2451e-44,1.0658e-43 +32323,5.1612e-44,1.0487e-43 +32849,5.0786e-44,1.0319e-43 +33383,4.9973e-44,1.0154e-43 +33926,4.9173e-44,9.9915e-44 +34478,4.8386e-44,9.8316e-44 +35038,4.7612e-44,9.6742e-44 +35608,4.685e-44,9.5194e-44 +36187,4.61e-44,9.367e-44 +36776,4.5362e-44,9.2171e-44 +37374,4.4636e-44,9.0696e-44 +37982,4.3922e-44,8.9244e-44 +38600,4.3219e-44,8.7816e-44 +39228,4.2527e-44,8.6411e-44 +39866,4.1846e-44,8.5028e-44 +40514,4.1176e-44,8.3667e-44 +41173,4.0517e-44,8.2328e-44 +41843,3.9869e-44,8.101e-44 +42523,3.9231e-44,7.9714e-44 +43215,3.8603e-44,7.8438e-44 +43918,3.7985e-44,7.7182e-44 +44632,3.7377e-44,7.5947e-44 +45358,3.6779e-44,7.4732e-44 +46096,3.619e-44,7.3536e-44 +46846,3.5611e-44,7.2359e-44 +47608,3.5041e-44,7.1201e-44 +48382,3.448e-44,7.0061e-44 +49169,3.3929e-44,6.894e-44 +49969,3.3386e-44,6.7836e-44 +50782,3.2851e-44,6.6751e-44 +51607,3.2325e-44,6.5682e-44 +52447,3.1808e-44,6.4631e-44 +53300,3.1299e-44,6.3597e-44 +54167,3.0798e-44,6.2579e-44 +55048,3.0305e-44,6.1577e-44 +55943,2.982e-44,6.0592e-44 +56853,2.9343e-44,5.9622e-44 +57778,2.8873e-44,5.8668e-44 +58718,2.8411e-44,5.7729e-44 +59673,2.7956e-44,5.6805e-44 +60643,2.7509e-44,5.5896e-44 +61630,2.7069e-44,5.5001e-44 +62632,2.6635e-44,5.4121e-44 +63651,2.6209e-44,5.3255e-44 +64686,2.579e-44,5.2402e-44 +65738,2.5377e-44,5.1564e-44 +66807,2.4971e-44,5.0738e-44 +67894,2.4571e-44,4.9926e-44 +68998,2.4178e-44,4.9127e-44 +70121,2.3791e-44,4.8341e-44 +71261,2.341e-44,4.7567e-44 +72420,2.3035e-44,4.6806e-44 +73598,2.2667e-44,4.6057e-44 +74795,2.2304e-44,4.532e-44 +76012,2.1947e-44,4.4594e-44 +77248,2.1596e-44,4.3881e-44 +78505,2.125e-44,4.3178e-44 +79781,2.091e-44,4.2487e-44 +81079,2.0575e-44,4.1807e-44 +82398,2.0246e-44,4.1138e-44 +83738,1.9922e-44,4.048e-44 +85100,1.9603e-44,3.9832e-44 +86484,1.9289e-44,3.9194e-44 +87891,1.8981e-44,3.8567e-44 +89320,1.8677e-44,3.795e-44 +90773,1.8378e-44,3.7342e-44 +92250,1.8084e-44,3.6745e-44 +93750,1.7794e-44,3.6157e-44 +95275,1.751e-44,3.5578e-44 +96825,1.7229e-44,3.5009e-44 +98400,1.6954e-44,3.4448e-44 +1e+05,1.6682e-44,3.3897e-44 diff --git a/ditherm/tests/gwinc/getData.m b/ditherm/tests/gwinc/getData.m new file mode 100644 index 0000000000000000000000000000000000000000..9e33699a5f2b85d34d3e18bd5f8e6ff39b650b1e --- /dev/null +++ b/ditherm/tests/gwinc/getData.m @@ -0,0 +1,15 @@ +% Script to extract calculated Brownian noise values from GWINC. +% Run from within the GWINC directory. + +% load precomputed IFO model +load('ifo.mat'); + +% frequencies to calculate +f = logspace(-2, 5, 1000); + +% calculate Brownian noise for mirrors +SbrITM = getCoatBrownian(f, ifo, 'ITM'); +SbrETM = getCoatBrownian(f, ifo, 'ETM'); + +% save CSV file +csvwrite('aligo.csv', [f', SbrITM', SbrETM']); \ No newline at end of file diff --git a/ditherm/tests/gwinc/ifo.mat b/ditherm/tests/gwinc/ifo.mat new file mode 100644 index 0000000000000000000000000000000000000000..e770207b65bdefa63143242d7be8bf40003b58c6 Binary files /dev/null and b/ditherm/tests/gwinc/ifo.mat differ diff --git a/ditherm/tests/test_brownian.py b/ditherm/tests/test_brownian.py new file mode 100644 index 0000000000000000000000000000000000000000..6de02e73348e14c0046852ee1696345898aa9559 --- /dev/null +++ b/ditherm/tests/test_brownian.py @@ -0,0 +1,101 @@ +from __future__ import division + +import sys +import os + +sys.path.append('..') + +from unittest import TestCase + +import materials +import layers +import stacks +import numpy as np + +class AdvancedLigoEtmStack(stacks.Stack): + def __init__(self, wavelength): + substrate = materials.Material("Silica Substrate", 7.27e10, 0.167, 5e-9, 1.45) + coatingA = materials.Material("Silica Coating", 7.2e10, 0.17, 4e-5, 1.45) + coatingB = materials.Material("Titanium Tantala Coating", 1.4e11, 0.23, 2.3e-4, 2.06539) + + layerA = layers.Layer(coatingA, 0.27 * wavelength / coatingA.n) + layerB = layers.Layer(coatingB, 0.23 * wavelength / coatingB.n) + + topLayer = layers.Layer(coatingA, 0.5 * wavelength / coatingA.n) + baseLayer = layers.Layer(coatingA, 0.163870186147445 * wavelength / coatingB.n) + + theseLayers = np.array([topLayer, layerB] + [layerA, layerB] * 17 + [layerA, baseLayer]) + + super(AdvancedLigoEtmStack, self).__init__(theseLayers, substrate) + +class AdvancedLigoItmStack(stacks.Stack): + def __init__(self, wavelength): + substrate = materials.Material("Silica Substrate", 7.27e10, 0.167, 5e-9, 1.45) + coatingA = materials.Material("Silica Coating", 7.2e10, 0.17, 4e-5, 1.45) + coatingB = materials.Material("Titanium Tantala Coating", 1.4e11, 0.23, 2.3e-4, 2.06539) + + layerA = layers.Layer(coatingA, 0.308 * wavelength / coatingA.n) + layerB = layers.Layer(coatingB, 0.192 * wavelength / coatingB.n) + + topLayer = layers.Layer(coatingA, 0.5 * wavelength / coatingA.n) + baseLayer = layers.Layer(coatingA, 0.186957128029190 * wavelength / coatingB.n) + + theseLayers = np.array([topLayer, layerB] + [layerA, layerB] * 7 + [layerA, baseLayer]) + + super(AdvancedLigoItmStack, self).__init__(theseLayers, substrate) + +class TestBrownianNoise(TestCase): + def setUp(self): + self.etmStack = AdvancedLigoEtmStack(1064e-9) + self.itmStack = AdvancedLigoItmStack(1064e-9) + + def test_d(self): + self.assertAlmostEqual(self.etmStack.d(), 6.150299645767251e-6, delta=1e-20) + + def test_y_para(self): + gwincVal = 9.651384066646355e10 + self.assertAlmostEqual(self.etmStack.yPara(), gwincVal, delta=0.3*gwincVal) + + def test_y_perp(self): + gwincVal = 8.728318664479849e10 + self.assertAlmostEqual(self.etmStack.yPerp(), gwincVal, delta=0.3*gwincVal) + + def test_phi_para(self): + gwincVal = 1.393560882693337e-4 + self.assertAlmostEqual(self.etmStack.phiPara(), gwincVal, delta=0.05*gwincVal) + + def test_phi_perp(self): + gwincVal = 8.270302150752522e-5 + self.assertAlmostEqual(self.etmStack.phiPerp(), gwincVal, delta=0.05*gwincVal) + + def test_sigma_para(self): + gwincVal = 0.2 + self.assertAlmostEqual(self.etmStack.sigmaPara(), gwincVal, delta=0.01*gwincVal) + + def test_sigma_perp(self): + gwincVal = 0.201375606821895 + self.assertAlmostEqual(self.etmStack.sigmaPerp(), gwincVal, delta=0.01*gwincVal) + + def test_brownian_noise_itm(self): + # load GWINC exported data + gwincData = np.genfromtxt(os.path.join(os.path.dirname(__file__), 'gwinc', 'aligo.csv'), delimiter=',') + + wITM = 55e-3 + T = 290 + + # calculate noise + dithermITM = self.itmStack.brownianNoise(gwincData[:, 0], wITM, T) + + self.assertTrue(np.allclose(dithermITM, gwincData[:, 1], rtol=0.05, atol=0)) + + def test_brownian_noise_etm(self): + # load GWINC exported data + gwincData = np.genfromtxt(os.path.join(os.path.dirname(__file__), 'gwinc', 'aligo.csv'), delimiter=',') + + wETM = 62e-3 + T = 290 + + # calculate noise + dithermETM = self.etmStack.brownianNoise(gwincData[:, 0], wETM, T) + + self.assertTrue(np.allclose(dithermETM, gwincData[:, 2], rtol=0.05, atol=0)) \ No newline at end of file diff --git a/examples/Advanced LIGO/aligo.py b/examples/Advanced LIGO/aligo.py new file mode 100644 index 0000000000000000000000000000000000000000..d41182064ed2444b446ca33f00612d6e0594df1b --- /dev/null +++ b/examples/Advanced LIGO/aligo.py @@ -0,0 +1,60 @@ +""" +Brownian noise in Advanced LIGO ETM +""" + +from __future__ import division + +import sys + +sys.path.append('..') + +import stacks +import matplotlib.pyplot as plt +import numpy as np + +### +# Parameters + +# wavelength +wavelength = 1064e-9 # [m] + +# frequency range +f = np.logspace(1, 4, 1000) # [Hz] + +# temperature +T = 290 # [K] + +# beam sizes (distance from centre where power drops to 1/e) +wITM = 55e-3 # [m] +wETM = 62e-3 # [m] + +### +# Calculation + +stackITM = stacks.AdvancedLigoItmStack(wavelength) +stackETM = stacks.AdvancedLigoEtmStack(wavelength) + +# calculate Brownian noise amplitude for frequency range +brownianNoiseITM = stackITM.brownianNoise(f, wITM, T) +brownianNoiseETM = stackETM.brownianNoise(f, wETM, T) + +# combined noise for interferometer +brownianNoiseCombined = 2 * (brownianNoiseITM + brownianNoiseETM); + +### +# Plot + +# log-log plot +plt.loglog(f, np.sqrt(brownianNoiseITM), f, np.sqrt(brownianNoiseETM), f, np.sqrt(brownianNoiseCombined)) + +# axis labels, etc. +plt.legend(['ITM', 'ETM', 'Advanced LIGO Total']) +plt.xlabel('Frequency [Hz]') +plt.ylabel('Displacement-equivalent noise [m / sqrt(Hz)]') +plt.title('Brownian noise in Advanced LIGO ETM') + +# add grid +plt.grid(True) + +# display +plt.show() \ No newline at end of file diff --git a/examples/Advanced LIGO/stacks.py b/examples/Advanced LIGO/stacks.py new file mode 100644 index 0000000000000000000000000000000000000000..8d2fa50a90012cc70a2c7fed15f9c6a1ed408d86 --- /dev/null +++ b/examples/Advanced LIGO/stacks.py @@ -0,0 +1,42 @@ +from __future__ import division + +import sys + +sys.path.append('../..') + +import ditherm.materials as materials +import ditherm.layers as layers +import ditherm.stacks as stacks +import numpy as np + +class AdvancedLigoItmStack(stacks.Stack): + def __init__(self, wavelength): + substrate = materials.Material("Silica Substrate", 7.27e10, 0.167, 5e-9, 1.45) + coatingA = materials.Material("Silica Coating", 7.2e10, 0.17, 4e-5, 1.45) + coatingB = materials.Material("Titanium Tantala Coating", 1.4e11, 0.23, 2.3e-4, 2.06539) + + layerA = layers.Layer(coatingA, 0.308 * wavelength / coatingA.n) + layerB = layers.Layer(coatingB, 0.192 * wavelength / coatingB.n) + + topLayer = layers.Layer(coatingA, 0.5 * wavelength / coatingA.n) + baseLayer = layers.Layer(coatingA, 0.186957128029190 * wavelength / coatingB.n) + + theseLayers = np.array([topLayer, layerB] + [layerA, layerB] * 7 + [layerA, baseLayer]) + + super(AdvancedLigoItmStack, self).__init__(theseLayers, substrate) + +class AdvancedLigoEtmStack(stacks.Stack): + def __init__(self, wavelength): + substrate = materials.Material("Silica Substrate", 7.27e10, 0.167, 5e-9, 1.45) + coatingA = materials.Material("Silica Coating", 7.2e10, 0.17, 4e-5, 1.45) + coatingB = materials.Material("Titanium Tantala Coating", 1.4e11, 0.23, 2.3e-4, 2.06539) + + layerA = layers.Layer(coatingA, 0.27 * wavelength / coatingA.n) + layerB = layers.Layer(coatingB, 0.23 * wavelength / coatingB.n) + + topLayer = layers.Layer(coatingA, 0.5 * wavelength / coatingA.n) + baseLayer = layers.Layer(coatingA, 0.163870186147445 * wavelength / coatingB.n) + + theseLayers = np.array([topLayer, layerB] + [layerA, layerB] * 17 + [layerA, baseLayer]) + + super(AdvancedLigoEtmStack, self).__init__(theseLayers, substrate) \ No newline at end of file