forked from MeganCowie/SemiconductorsApp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPhysics_ncAFM.py
41 lines (32 loc) · 1.58 KB
/
Physics_ncAFM.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
################################################################################
################################################################################
# This script
################################################################################
################################################################################
import numpy as np
from scipy.integrate import trapz
import Physics_Semiconductors
################################################################################
################################################################################
# Frequency shift and dissipation definitions
def dfdg(time_AFMarray,F_AFMarray,Fcant_AFMarray,frequency,springconst,amplitude,Qfactor,tipradius,cantarea,geometrybuttons):
df_prefactor = -1*(frequency**2)/(2*np.pi*springconst*amplitude) #Hz**2/N
dg_prefactor = -1*(frequency)/(np.pi) #Hz
dg_addedterm = (springconst*amplitude)/(Qfactor) #N
tiparea = np.pi*tipradius**2 #m**2
F_tot = 0
if 1 in geometrybuttons:
F_tot+=F_AFMarray*tiparea
if 2 in geometrybuttons:
F_tot+=Fcant_AFMarray*cantarea
# Integrals
df = df_prefactor*trapz(F_tot*np.cos(frequency*time_AFMarray), time_AFMarray) #Hz
dg = dg_prefactor*trapz(F_tot*np.sin(frequency*time_AFMarray), time_AFMarray)+dg_addedterm #N
# Convert excitation model to energy units
# Cockins thesis eq. 2.15
E_o = np.pi*springconst*amplitude**2/Qfactor/Physics_Semiconductors.e*1000 #meV
A_exc = dg
A_exco = dg_addedterm
E_ts = E_o*(A_exc-A_exco)/A_exco #meV
dg = E_ts #meV
return df, dg