Skip to content
Snippets Groups Projects
Commit 017c4839 authored by Jean-Baptiste Bayle's avatar Jean-Baptiste Bayle
Browse files

Add logging to simulation

parent 79962513
No related branches found
No related tags found
1 merge request!116Resolve "Implement basic structure for the hexagon experiment"
...@@ -14,12 +14,15 @@ Authors: ...@@ -14,12 +14,15 @@ Authors:
Jean-Baptiste Bayle <j2b.bayle@gmail.com> Jean-Baptiste Bayle <j2b.bayle@gmail.com>
""" """
import logging
import numpy as np import numpy as np
from h5py import File from h5py import File
from . import noises from . import noises
logger = logging.getLogger(__name__)
class Hexagon(): class Hexagon():
"""Represent the Hexagon instrument. """Represent the Hexagon instrument.
...@@ -52,12 +55,15 @@ class Hexagon(): ...@@ -52,12 +55,15 @@ class Hexagon():
self.duration = self.size * self.dt self.duration = self.size * self.dt
self.time = np.arange(self.size) * self.dt self.time = np.arange(self.size) * self.dt
logger.info("Initialize hexagon experiment (size=%d, dt=%f, duration=%f",
self.size, self.dt, self.duration)
self.primary_laser_asd = float(primary_laser_asd) self.primary_laser_asd = float(primary_laser_asd)
self.locked_laser_asd = float(locked_laser_asd) self.locked_laser_asd = float(locked_laser_asd)
self.central_freq = float(central_freq) self.central_freq = float(central_freq)
if offset_freqs == 'default': if offset_freqs == 'default':
logger.debug("Use default set of offset frequencies")
self.offset_freqs = {'1': 0.0, '2': 15E6, '3': 7E6} self.offset_freqs = {'1': 0.0, '2': 15E6, '3': 7E6}
else: else:
self.offset_freqs = offset_freqs self.offset_freqs = offset_freqs
...@@ -76,9 +82,13 @@ class Hexagon(): ...@@ -76,9 +82,13 @@ class Hexagon():
def simulate(self): def simulate(self):
"""Run a simulation, and generate all intermediary signals.""" """Run a simulation, and generate all intermediary signals."""
logger.info("Starting simulation")
if self.simulated:
logger.warning("Overwriting previous simulated values")
# Laser noise
logger.debug("Generating laser noise")
self.laser_noises = np.empty((self.size, 3)) # (size, laser) [Hz] self.laser_noises = np.empty((self.size, 3)) # (size, laser) [Hz]
# Laser 1 has its own stability # Laser 1 has its own stability
self.laser_noises[:, 0] = noises.laser(self.fs, self.size, self.primary_laser_asd) self.laser_noises[:, 0] = noises.laser(self.fs, self.size, self.primary_laser_asd)
# Laser 2 replicated laser 1 with added locking noise # Laser 2 replicated laser 1 with added locking noise
...@@ -89,6 +99,7 @@ class Hexagon(): ...@@ -89,6 +99,7 @@ class Hexagon():
+ noises.white(self.fs, self.size, self.locked_laser_asd) + noises.white(self.fs, self.size, self.locked_laser_asd)
# Carrier beams # Carrier beams
logger.debug("Simulating carrier beams")
self.carrier_fluctuations = self.laser_noises # (size, laser) [Hz] self.carrier_fluctuations = self.laser_noises # (size, laser) [Hz]
self.carrier_offsets = np.array( self.carrier_offsets = np.array(
[[self.offset_freqs[index] for index in self.INDICES]] [[self.offset_freqs[index] for index in self.INDICES]]
...@@ -96,6 +107,7 @@ class Hexagon(): ...@@ -96,6 +107,7 @@ class Hexagon():
# Compute beatnotes # Compute beatnotes
# Convention is from paper: beatnote ij is beam j - beam i # Convention is from paper: beatnote ij is beam j - beam i
logger.debug("Computing carrier beatnotes")
self.carrier_beatnote_offsets = np.stack([ self.carrier_beatnote_offsets = np.stack([
self.carrier_offsets[:, int(ij[1]) - 1] - self.carrier_offsets[:, int(ij[0]) - 1] self.carrier_offsets[:, int(ij[1]) - 1] - self.carrier_offsets[:, int(ij[0]) - 1]
for ij in self.BEATNOTES for ij in self.BEATNOTES
...@@ -107,9 +119,11 @@ class Hexagon(): ...@@ -107,9 +119,11 @@ class Hexagon():
self.carrier_beatnotes = self.carrier_beatnote_offsets + self.carrier_beatnote_fluctuations self.carrier_beatnotes = self.carrier_beatnote_offsets + self.carrier_beatnote_fluctuations
# Three-signal combination # Three-signal combination
logger.debug("Forming three-signal combination")
self.three_signal_combination = self.carrier_beatnotes[:,0] \ self.three_signal_combination = self.carrier_beatnotes[:,0] \
+ self.carrier_beatnotes[:,1] + self.carrier_beatnotes[:,2] + self.carrier_beatnotes[:,1] + self.carrier_beatnotes[:,2]
logger.info("Simulation complete")
self.simulated = True self.simulated = True
def write(self, output='measurements.h5', mode='w'): def write(self, output='measurements.h5', mode='w'):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment