forked from MeganCowie/SemiconductorsApp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPhysics_Optics.py
55 lines (45 loc) · 2.16 KB
/
Physics_Optics.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
################################################################################
################################################################################
# This script calculates characteristics of input laser beams as well as
# formulas for the sample response to light.
################################################################################
################################################################################
import numpy as np
from numpy import random
from scipy.integrate import trapz
from scipy.optimize import fsolve
import Physics_Semiconductors
################################################################################
################################################################################
# Ultrafast optical pulse
def Epulse(pulsetime):
omega_pulse = 20 # Hz
Epulse=np.exp(-pulsetime**2)*np.cos(omega_pulse*pulsetime) # non-chirped
#Epulse=np.exp(-pulsetime**2)*np.cos(50*pulsetime - np.exp(-2*pulsetime**2)*8*np.pi) # Chirped
return Epulse
# Ultrafast optical pulse
def Epulse_array(pulsetime_array,delay):
Epulse_array = []
for pulsetime_index in range(len(pulsetime_array)):
pulsetime_soln = pulsetime_array[pulsetime_index]+delay
Epulse_soln=Epulse(pulsetime_soln)
Epulse_array = np.append(Epulse_array, Epulse_soln)
return Epulse_array
# Field autocorrelation
def intensity(t_array,delay):
intensity=np.trapz(np.abs(Epulse_array(t_array,0)+Epulse_array(t_array,delay))**2, x=t_array)
#FieldAC=np.trapz(Epulse_array(t_array,0)*Epulse_array(t_array,delay), x=t_array) #This is the field autocorrelation
return intensity
# Field autocorrelation function
def intensity_delayarray(t_array,delay_array):
intensity_delayarray = []
for delay_index in range(len(delay_array)):
delay_soln = delay_array[delay_index]
intensity_soln = intensity(t_array,delay_soln)
intensity_delayarray = np.append(intensity_delayarray, intensity_soln)
return intensity_delayarray
# TEMPORARILY assume that the number of carriers is proportional to the illumination intensity
def NaNd_intensity(Na,Nd,intensity):
Na = Na*intensity
Nd = Nd
return Na,Nd