La simulación consiste en bombardear una NP sin dopamiento un número N suficientemente grande y para cada bombardeo contar la cantidad de pasos. Luego, multiplicamos cada cantidad de pasos por $\Delta t$ y con estos datos realizamos un histograma. El histograma tendría que tener forma exponencial, al cual al realizarle un ajuste de curva obtenemos el valor de $\tau$ (tiempo de vida medio del exiton dentro de la NP sin dopamiento). Si bien nosotros sabemos de antemano este valor, la idea es validar que el código esta implementado correctamente.
In [1]:
import sys
sys.path.append('../')
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
from matplotlib import rc
rc('font', **{'family':'sans-serif', 'sans-serif':['Helvetica']})
rc('text', usetex=True)
%matplotlib inline
import ten
In [2]:
# Propiedades de la NP
r = 5000
R_Forster = 2.29
L_D = 100
tau_D = 0.333
epsilon = 1
num_exc = 20000
num_acceptors = 0
nano_particle = ten.NanoParticle(r,
0,
num_acceptors,
tau_D,
R_Forster,
L_D,
epsilon,
'vol')
# Inicialización del exiton
simu = ten.Exciton(nano_particle,
num_exc,
'laser')
# Calulamos
out = simu.single_count()
In [3]:
# Función con la cual voy a realizar el ajuste
def func(x, a, b, c):
return a * np.exp(-b * x) + c
num_bins = 50
# the histogram of the data
plt.figure(figsize=(14, 5))
n, bins, patches = plt.hist(out*nano_particle.delta_t, num_bins, normed=1, facecolor='green', alpha=0.5,
label="Original Noised Data")
popt, pcov = curve_fit(func, bins[:-1], n)
plt.plot(bins, func(bins, popt[0], popt[1], popt[2]), 'r--', linewidth=4, label="Fitted Curve")
plt.xlabel('Bins',fontsize=20)
plt.ylabel(r'$N*\Delta t$',fontsize=20)
plt.title(r'$a*exp^{-bx}+c:$ $a=%f$, $b=%f$, $c=%f$' %(popt[0], popt[1], popt[2]),fontsize=30)
plt.text(2.5, 2, r'$\tau\; original = %f$' %(tau_D), fontsize=20)
plt.text(2.5, 1.6, r'$\tau\; calculado = %f$' %(1/popt[1]), fontsize=20)
plt.legend()
plt.show()
In [4]:
#Este css esta basado en el de @LorenaABarba y su grupo
from IPython.core.display import HTML
css_file = 'css/personal.css'
HTML(open(css_file, "r").read())
Out[4]:
El código esta licenciado bajo MIT.
La documentación bajo:
<span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">TEN</span> by <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">Laboratorio de Microscopia Óptica Avanzada - UNRC</span> is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at <a xmlns:dct="http://purl.org/dc/terms/" href="https://github.com/pewen/ten" rel="dct:source">https://github.com/pewen/ten</a>