TACBC is a Python library for simulating tiled aperture coherent beam combining. It includes modules for common imports, core functionality, and utility functions to facilitate simulation and analysis.
To install the TACBC library, clone the repository and install the required dependencies using:
git clone https://github.com/Vishwanath1999/tac_lib.git
cd tac_lib
pip install -r requirements.txtThe main.py script is used to simulate the Tiled Aperture Coherent Beam Combining (TACBC) with only longitudinal phase noise. It uses the TiledApertureBeamPropFast class from the tac module. The script sets up the simulation parameters such as the number of channels, image size, and aperture size. It then calculates the amplitude vector and phase noise. The script also initializes the control voltage and transverse phase noise. The far-field distance and bucket size are calculated and used to create an instance of the TiledApertureBeamPropFast class. The script then simulates the TACBC and calculates the Power In Bucket (PIB) for the ideal case.
The main2.py script is similar to main.py but it simulates the TACBC with both longitudinal phase noise and turbulence. It uses the TiledApertureBeamProp class from the tac module.
In addition to the steps performed in main.py, this script also calculates the number of screens for turbulence simulation and generates atmospheric turbulence screens using the sparse spectrum method. The sparse spectrum method is a technique for generating turbulence phase screens that are statistically similar to those produced by the Kolmogorov spectrum. It is computationally efficient and suitable for large-scale simulations.
The script then simulates the TACBC with turbulence and calculates the PIB for the ideal case. It also generates a subplot of two images of the input and output intensities.
Figure 1: Flowchart of the Sparse Spectrum Method for Turbulence Simulation
The turbulence simulation in main2.py uses the sparse spectrum method to generate atmospheric turbulence screens. The sparse spectrum method is a technique for generating turbulence phase screens that are statistically similar to those produced by the Kolmogorov spectrum. It is computationally efficient and suitable for large-scale simulations.
Figure 2: Atmospheric Turbulence Screens Generated Using the Sparse Spectrum Method
Both scripts share a set of common parameters:
n_channel: Number of channelsn_img: Number of iterationsim_size: Image sizepix_size: Pixel sized: Center to center distance between beamsa: Aperture sizefs: Frequencydelt: Deltacyc: Cyclet: TimeL: Lengthamp_v,g_amp: Amplitude variablesnoise_env: Noise environmentp_n: Phase noiseV: Control Voltage initializationKvar: Variable Ktrans_pn: Transverse phase noisew_l: Wavelengthk: Wave numberZ,r: Far field distance and bucket sizerp: Rounded bucket sizetheta: Anglex,y: Coordinatesrun: Run modepib_val: Power In Bucket valuef_loop: Loop frequencyf_ctrl: Control rate
The main2.py script has additional parameters to simulate turbulence:
L_0: Outer scale of turbulencel_0: Inner scale of turbulenceN_ss: Number of sub-screensc_n2: Refractive index structure constantn_screens: Number of screens for turbulence simulationatm: Atmospheric turbulence screensturb: Boolean flag to indicate if turbulence is simulated