optimización y extracción de parametros ópticos de

Anuncio
TITULO DEL PROYECTO:
OPTIMIZACIÓN Y EXTRACCIÓN DE
PARAMETROS ÓPTICOS DE ESTRUCTURAS
MULTICAPA
PROYECTO DE FINAL DE CARRERA
TITULACIÓN:
Enginyeria Automàtica i Electrònica Industrial (2008)
AUTOR: SANTI MENSA
DIRECTOR: LLUIS MARSAL
FECHA: junio 2008.
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
ÍNDICE:
1 Objetivo. ............................................................................................................................. 4
2. Antecedentes...................................................................................................................... 4
3. Memoria descriptiva. ......................................................................................................... 4
3.1. Propiedades Ópticas de Sólidos.................................................................................. 4
3.1.1.Generalidades........................................................................................................4
3.1.2. Ecuaciones de Maxwell. .......................................................................................4
3.1.3. Ecuaciones de la materia. ....................................................................................5
3.1.4.Propiedades del tensor  .....................................................................................9
3.1.5. Las relaciones de Kramers-Krönig. ...................................................................11
3.1.6 Ondas Electromagnéticas en medios isótropos...................................................12
3.1.7 Transiciones intrabanda......................................................................................16
3.1.7.1 Ecuación cinética de Boltzmann. .....................................................................16
3.2 Efectos de superficie en los espectros ópticos........................................................... 18
3.2.1. Elipsometría. ......................................................................................................18
3.2.2. Efectos de interferencia en capas delgadas .......................................................21
3.2.3. Obtención del  .................................................................................................21
3.3. Rugosidad. ................................................................................................................ 22
3.3.1. Campo Local. .....................................................................................................23
3.3.2. Campo Exterior. .................................................................................................24
3.3.3. Modelo de Medio Efectivo..................................................................................27
3.4. Figuras originales. .................................................................................................... 29
3.4.1. Efectos de interferencia en capas delgadas. ......................................................29
3.4.2. Efectos de película de óxido. ..............................................................................29
3.4.3. Rugosidad. ..........................................................................................................29
3.5 Transiciones Interbanda............................................................................................. 32
3.5.1. Teoría de Transiciones Interbanda. ...................................................................32
3.5.2. Transiciones banda-banda. ................................................................................36
3.5.3. Algunos Casos. ...................................................................................................39
3.6. Punto crítico M0. ...................................................................................................... 40
3.6.1 Transiciones prohibidas en el punto crítico M0. ................................................42
3.7. Punto de Ensilladura M1. ......................................................................................... 42
3.8. Cristales Bidimensionales......................................................................................... 44
3.9. Cristales Unidimensionales. ..................................................................................... 44
3.10. Constante dieléctrica de un sistema de osciladores quánticos................................ 45
3.11. Radiación en la materia. ......................................................................................... 45
3.12.Ecuaciones de dispersión del índice de refracción. ................................................. 47
3.12.1. La ecuación de Cauchy. ...................................................................................47
PROYECTO FINAL DE CARRERA
página 2
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
3.12.2. Ecuación de sellmeier.......................................................................................49
4. Entorno MATLAB. ......................................................................................................... 52
4.1. Entorno gráfico GUIDE con MATLAB................................................................... 52
4.1.1. Herramienta GUIDE. .........................................................................................52
4.1.2. Inicio...................................................................................................................52
4.1.3. Propiedades de los componentes........................................................................55
4.1.4. Funcionamiento de una aplicación GUI. ...........................................................56
4.1.5. Manejo de datos entre los elementos de la aplicación y el archivo .M..............56
4.1.6. Sentencias GET y SET. .......................................................................................57
4.2 Matlab optimización. ................................................................................................. 58
4.2.1.LSQNONLIN........................................................................................................58
4.2.1.1 Ecuación. ..........................................................................................................58
4.2.1.2 Sintaxis. ............................................................................................................58
4.2.1.3 Descripción.......................................................................................................58
4.2.1.3 Argumentos de entrada.....................................................................................60
4.2.1.4 Argumentos de salida. ......................................................................................61
4.2.1.5. Opciones. .........................................................................................................62
4.2.1.4.1. Algoritmos de mediana i larga escala..........................................................62
4.2.1.4.1.1. Solo algoritmo de larga escala..................................................................63
4.2.1.4.1.2 Solo para algoritmo de mediana escala.....................................................65
4.2.1.4.2. Ejemplos. ......................................................................................................65
4.2.1.4.2.1 Optimización de gran escala. .....................................................................66
4.2.1.4.2.2 Optimización mediana escala.....................................................................66
4.2.1.4.3 Limitaciones. .................................................................................................66
4.2.1.4.3.1. Optimización a gran escala.......................................................................66
5. Medidas experimentales. ................................................................................................. 68
5.1. Espectrofotómetro de Infrarrojo por transformada de Fourier VERTEX 70. .......... 70
5.1.1. Características VERTEX 70. ..............................................................................71
5.1.2. Puesta a punto del sistema de medida con el espectrofotómetro IR del DEEEA.73
5.2. Software OPUS 5.0 for QA/QC. .............................................................................. 74
6. Programa principal. ......................................................................................................... 76
6.1 Menu principal........................................................................................................... 76
6.2 Funcionamiento del programa. .................................................................................. 79
7 Resultados obtenidos. ....................................................................................................... 81
7.1 Pruebas con una sola lámina de cristal. ..................................................................... 81
7.2 Optimizacion de doble capa. ..................................................................................... 96
8. Referencias bibliográficas. .............................................................................................. 98
PROYECTO FINAL DE CARRERA
página 3
de98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
1 Objetivo.
El Objetivo principal es el desarrollo de un entorno gráfico que permita la determinación
de los parámetros ópticos de los materiales. Este entorno nos permitirá representar
gráficamente los datos experimentales y a partir de estos datos obtener los parámetros
ópticos óptimos para los resultados experimentales obtenidos.
Para el desarrollo del proyecto es necesario tener conocimientos en:
Conocimientos de las propiedades ópticas.
Lenguaje de programación MATLAB.
La herramienta para el desarrollo del interfaz gráfico (GUIDE).
2. Antecedentes.
El departamento EEEA lleva años experimentando con cristales nanoporosos de diferentes
materiales y desarrollando aplicaciones para poder contrastar los resultados experimentales
con los teóricos. Este no deja de ser un proyecto de ayuda para la obtención de parámetros
ópticos a partir de resultados prácticos desarrollados en el laboratorio.
3. Memoria descriptiva.
3.1. Propiedades Ópticas de Sólidos.
3.1.1.Generalidades.
Ecuaciones de Maxwell, causalidad y relaciones de Kramers-Krönig. Constante dieléctrica
compleja y conductividad compleja. Índice de refracción complejo. Índice de refracción real y
coeficiente de absorción. Reflectancia.
3.1.2. Ecuaciones de Maxwell.
Como fenómeno electromagnético, la luz está determinada por las ecuaciones de Maxwell. Las
enunciamos aquí de la forma más general posible.
Las características del material están implícitas en las cargas y corrientes ligadas, que vienen a
ser la respuesta del medio ante los campos aplicados. En nuestro caso, estamos interesados en
una descripción macroscópica de estos fenómenos. Por esto, es conveniente definir los promedios
Donde Δv y Δt son magnitudes lo suficientemente pequeñas para describir precisamente los
campos, pero lo suficientemente grandes para redondear las variaciones bruscas dentro de un
átomo. En otras palabras, el volumen de integración es muy pequeño en comparación con el
PROYECTO FINAL DE CARRERA
página 4
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
volumen total del sólido, pero mucho más grande que el de un núcleo. Por su parte, el tiempo de
integración debe ser consistente con una distancia promedio definida por el volumen
(típicamente la raíz cúbica de éste) y la velocidad de la luz. En metales es común asociarlo con
el tiempo de relajación de los electrones, que se explicará en detalle en el capítulo siguiente.


Además le llamaremos B al promedio H .
Suponiendo que las integrales convergen uniformemente, las ecuaciones de Maxwell son
válidas para los campos definidos por (5) y (6).
3.1.3. Ecuaciones de la materia.
Ahora, caractericemos el campo eléctrico dentro de un sólido. Debido a nuestra escala de
trabajo, el momento dipolar, definido por:


p   p r dv
(1.7)
Es la magnitud apropiada para describir la reacción de los átomos frente a los campos aplicados.

De esta forma, la contribución al campo eléctrico total será la polarización P , que corresponde
al momento dipolar por unidad de volumen. A partir de esta definición se desprende fácilmente
que:
Suponiendo además que el cuerpo es eléctricamente neutro,
Y utilizando la identidad vectorial

Donde a es un vector arbitrario, es posible concluir:
Lo cual liga el campo interno con las fuentes inducidas de carga. Reemplazando este
resultado en la ecuación de continuidad
PROYECTO FINAL DE CARRERA
página 5
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Tenemos
O bien,

Donde N es un vector cualquiera por ahora. Es posible identificarlo con la magnetización
P
M si t = 0. En tal caso,

En caso contrario, las variaciones de la polarización contribuyen a la corriente,
oscureciendo un poco más su identificación.
Para evitar estas distinciones engorrosas, incluyamos todos los efectos materiales en un
solo vector. Para ello, definimos:
De tal forma que satisface
Y

Así, la polarización y la corriente están completamente determinadas por p . Es posible
definir un vector desplazamiento eléctrico con esta polarización, de la forma
PROYECTO FINAL DE CARRERA
página 6
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Y relacionarlo con el campo eléctrico de la forma más general posible
La integral respecto al volumen expresa una posible dependencia del campo respecto a la magnitud
de éste en regiones vecinas. Por ejemplo, si el desplazamiento de los portadores es comparable a la
longitud característica del campo eléctrico, deberemos considerar su valor en regiones aledañas,
pues afectarán su valor notablemente en un futuro cercano. Por otra parte la integral temporal
representa los efectos de retardo debidos a la existencia de corrientes transientes. La anisotropía
está incluida en el carácter tensorial de la constante dieléctrica  (de importancia en
estructuras cristalinas, para explicar fenómenos como birrefringencia y efecto Kerr). Si el
comportamiento del medio es invariante ante traslaciones,  sólo depende de su vecindad, y no
del punto donde se evalúe.
Para la invariancia temporal, la expresión es análoga
En la mayoría de los casos se cumple esta última expresión. Si es así, la ecuación (19) queda:
Que es una convolución en el tiempo, por lo que es más conveniente trabajar en el espacio de
Fourier. Aplicando la transformada a cada lado de la ecuación (22), la transformada de la
convolución se transforma en un producto de transformadas, resultando
De aquí que la dispersión en el espacio de frecuencias proviene de los efectos de retardo. Por otra
parte, de cumplirse (20) el procedimiento es equivalente en el espacio recíproco de la posición.
Análogamente, escribimos la corriente como

Hasta ahora la introducción del vector p nos permite calcular la polarización y la corriente, que a su
vez dependen linealmente del campo eléctrico por las relaciones (18), (23) y (24). Esto nos permite
inferir que debe haber alguna relación entre los tensores  y . Efectivamente, reescribiendo (18) y
(23), queda
PROYECTO FINAL DE CARRERA
página 7
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Donde
Integrando por partes, resulta
Finalmente, igualando las partes real e imaginaria en (23), queda
De aquí podemos concluir que  es puramente real para un dieléctrico y puramente imaginario para
un metal. O bien, es imaginario puro si el material no es conductor, y completamente real en el
caso contrario. El trabajar con tensores complejos es el precio que debemos pagar por introducir un
vector que unifica ambos fenómenos.
A modo de ejemplo, calculemos la constante dieléctrica de un conjunto de N dipolos no
interactuantes. Cada uno consta de dos partículas de cargas q y -q, separadas por una distancia r.
Podemos suponer que para pequeñas perturbaciones en torno a la separación de equilibrio r oscilará

armónicamente con frecuencia w0, por lo que al aplicar un campo eléctrico E (t ) tenemos para cada
dipolo
Aplicando la transformada de Fourier a ambos lados de la ecuación, resulta una expresión algebraica

para r .
Reordenando, se obtiene
Con esto, es posible calcular el momento dipolar de cada dipolo, que viene dado por
Habiendo N dipolos en un volumen V, la polarización resulta ser
PROYECTO FINAL DE CARRERA
página 8
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Pues no hay magnetización en el sistema (con lo cual se cumple
la relación
). Finalmente, obtenemos

Donde la función dieléctrica es compleja. A partir de la solución r() es posible calcular J en

función de E y verificar las relaciones (28) y (29). Así, si
Tenemos que
Lo cual es completamente consistente con el cálculo de . Esta frecuencia de resonancia w0
corresponde al color que el cuerpo absorbe, reflejando el resto. Es posible introducir a dedo más
frecuencias de absorción.
Por otra parte, podemos modelar un material conductor con este mismo modelo. Si w0 = 0, se
entiende que los portadores de carga se mueven sin una fuerza restitutiva, aunque sigue existiendo
el término  responsable de la amortiguación de tal movimiento. Se dará un sustento teórico a tal
suposición en el capítulo siguiente. Sin embargo, es de notar que ajustando las constantes  y w0,
el modelo resulta ser más general de lo previsto.
3.1.4.Propiedades del tensor 
Estudiemos las propiedades de E como la función compleja que es. Designamos
Donde   t  t '
Ante la conjugación, se puede deducir fácilmente
Por lo tanto, la parte real es par y la imaginaria impar.
Ahora, si w es complejo
PROYECTO FINAL DE CARRERA
página 9
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Entonces,  posee un valor acotado en el semiplano superior, y por ende es analítica en esta
región. A partir de esto, es posible deducir una relación un poco más general,
Veamos ahora que sucede en los valores límite de w. Para w → 0, podemos recurrir a la ecuación
(27) y escribir
Separemos las partes real e imaginaria, expresando
4 Im 

Donde
.
Podemos calcular el límite para medios dieléctricos y conductores. Físicamente es de esperar que
en un dieléctrico,  tenga un valor acotado para un campo estático y la parte real de  tienda a
cero debido a la ausencia de corrientes estables.
Sin embargo, éstas pueden existir en un conductor, por lo que la parte imaginaria de  diverge
en estos materiales para frecuencias nulas.
 ( )  
Para el límite   , consideremos
PROYECTO FINAL DE CARRERA
página 10
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Que corresponde la solución dada por el modelo de Lorentz. La única suposición hecha en
él es que los electrones son partículas clásicas. Tomando los primeros términos de la
expansión en torno a    ,resulta
Donde
e es la carga del electrón, n la densidad de electrones y m, la masa efectiva de éstos ( que
puede variar según el material). A wp se le llama frecuencia de plasma, y su valor es crucial
para determinar la propagación o atenuación de una onda en un medio de electrones libres, como
la ionosfera.
3.1.5. Las relaciones de Kramers-Krönig.
Hasta ahora hemos deducido la analiticidad del tensor  en el semiplano superior complejo.
Gracias a esta propiedad podremos relaciones entre sus partes real e imaginaria.
Para ello, recordemos la fórmula integral de Cauchy
si el contorno de integración incluye el punto z = z0. Ahora, consideremos la función  — 1.
Gracias a la ecuación (1.45), su valor tiende a cero para frecuencias muy altas. Integrémosla en
el contorno que muestra la figura, aislando las singularidades  = 0 y 0.
Entonces,
lo cual se puede entender como que la suma de las cuatro integrales (las dos semicircunferencias
que rodean los polos, el radio mayor y la que cubre la mayor parte del eje real) es nula.
Naturalmente, tomaremos los límites R   r1 → 0 y r2 → 0. Para el primer límite, la
contribución de la integral C3 se anula, debido a que, según la ecuación (39),  decae como  2
para valores grandes. Para las dos integrales alrededor de los polos, tenemos que por la ecuación
(42), sus valores serán la mitad de los residuos si es que los radios r1 y r2 tienden a cero. Así,
y
PROYECTO FINAL DE CARRERA
página 11
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Entonces, la integral en el eje real está determinada completamente, y resulta ser
separando las partes real e imaginaria, resulta finalmente
donde
Estas son las llamadas relaciones de Kramers-Krönig. De las ecuaciones se desprende que si la
parte real o imaginaria de  es conocida, la función está determinada completamente.
3.1.6 Ondas Electromagnéticas en medios isótropos.
Hasta ahora ha sido útil caracterizar en el espacio de Fourier la respuesta de un medio ante un

campo aplicado. Si escribimos cada vector C de la forma.
las ecuaciones de Maxwell pasan a ser ecuaciones algebraicas
con la ya mencionada ecuación de la materia
PROYECTO FINAL DE CARRERA
página 12
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva


por lo que la solución estará determinada por la relación entre w y k . Para hallar k . hacemos

producto cruz entre el vector k y la ecuación (50), obteniendo
De aquí podemos clasificar las posibles soluciones como ondas longitudinales y transversales.
Si el lado derecho de la ecuación es nulo, tenemos una onda longitudinal, donde el campo eléctrico
oscila en la dirección de propagación. Esto puede producirse porque el valor de  es nulo para
ciertas frecuencias, o porque la dirección del campo eléctrico es tal que el producto del tensor
dieléctrico con el vector es nulo. Naturalmente, esto depende de las características del medio, y
no puede concebirse en el vacío.
El caso contrario corresponde a las ondas transversales, donde el campo eléctrico es perpendicular
al vector de onda. Entonces
por lo que en un medio isótropo,
donde n   es el índice de refracción habitual de la ley de Snell y k0 es el módulo del

vector de onda en el vacío. Supongamos ahora un pulso monocromático en los espacios k y 
por lo que a partir de la ecuación (55) obtenemos una onda plana en el tiempo y el espacio,
Sin embargo, es posible que n sea un número complejo. En tal caso, lo denotamos por
y definimos
donde k es el coeficiente de extinción. De acuerdo a (65), n determinará la forma de propagación
de la onda, estableciendo los puntos de fase constante. Por otra parte,  será responsable de un
decaimiento exponencial de la amplitud de la onda en su dirección. Se denomina profundidad de
1
piel (skindepth) a la distancia  que indica cuánto penetrará la onda en el material antes de
desvanecerse significativamente. Es posible apreciar este fenómeno aún cuando el índice de
PROYECTO FINAL DE CARRERA
página 13
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
refracción sea puramente real. Por ejemplo, en la reflexión total interna sucede algo similar entre
dos medios dieléctricos. En este caso, la naturaleza compleja reside en el vector unitario que
acompaña a , y no en su valor.
Es posible obtener  a partir de N como.
Veamos como segundo ejemplo, un modelo de material conductor. Queremos calcular la fracción
de energía que transmite y refleja al incidir una onda plana sobre él. En el medio inicial
(supuestamente no absorbente), existen una onda incidente y una reflejada, mientras que en el
metal sólo hay una onda transmitida. Sean sus expresiones en los medios 1 y 2, respectivamente
y
donde km = nmk0, según la ecuación (63) . Si la frecuencia es lo suficientemente pequeña, la
constante dieléctrica viene dada por
Entonces el índice de refracción complejo es
Consideremos además que el medio inicial es vacío, o sea, ni = 1. Apliquemos ahora las
condiciones de borde. Sobre las fases, imponemos que en la interfase, éstas no dependen del punto
PROYECTO FINAL DE CARRERA
página 14
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
de evaluación. Entonces, si igualamos las partes real e imaginaria de todas las fases en el plano de
interfase,

donde r pertenece a dicho plano.
De las partes reales se deducen fácilmente las leyes de reflexión y de Snell. De la parte imaginaria,
concluimos que el vector  siempre es perpendicular al plano para cualquier ángulo de incidencia.
Esto implica que los planos de amplitud constante son paralelos a la interfase, mientras que los
planos de fase constante están determinados por las direcciones de los vectores de onda.
Supongamos ahora que la incidencia es normal. Esto simplifica mucho las cosas, ya que todos los
vectores de onda están en el eje z, como muestra la figura. Así,
y la única diferencia sustancial entre los vectores de onda es el índice de refracción. Respecto a las
amplitudes, simplemente por continuidad de las componentes tangenciales al plano de incidencia


de los vectores E y H , tenemos
La segunda ecuación es de utilidad si recordamos que, para el caso de ondas planas longitudinales,
por lo que
De esta forma, podemos resolver el sistema de ecuaciones y obtener la reflectancia y transmitancia
definidas por
Como
PROYECTO FINAL DE CARRERA
página 15
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
donde se ha preferido trabajar con los módulos cuadrados de las amplitudes, para obtener
magnitudes proporcionales al flujo de energía.
3.1.7 Transiciones intrabanda.
Propiedades ópticas de portadores libres en los metales. Modelo de Drude. Modelo de ecuación de
Boltzman.(4cl)
Figura 2.1: Función dieléctrica de un gas de electrones libres. hω p = 10 eV, γ = h/τ= 0,1 eV.
3.1.7.1 Ecuación cinética de Boltzmann.
PROYECTO FINAL DE CARRERA
página 16
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 2.2: Parte imaginaria de la función dieléctrica del cobre [PR 118, 1509 (1960)]
Figura 2.3: constantes opticas del cobre n y k tomadas de [Jonson y christy, PRB 6, 4370 (1972)].
PROYECTO FINAL DE CARRERA
página 17
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 2.4: Representación esquemática de la conservación del número de electrones en su
 
movimiento en el espacio de fase r , k
3.2 Efectos de superficie en los espectros ópticos.
3.2.1. Elipsometría.
3.2.2. Determinación directa de €1 y €2, sin utilizar las relaciones de Kramer-Krönig.
Considérese el problema general de la reflexión y refracción de un rayo de luz polarizado, que
desde un medio 1 incide en la intercara de un medio 2.
Los vectores p y s representan la polarización del campo E de la onda incidente, reflejada y
refractada.
Onda P: Polarización paralela al plano de incidencia
Onda S: Polarización perpendicular al plano de incidencia
Figura 3.1: Esquema de Polarizaciones de la luz.
En un medio isótropo o cúbico, al aplicar las condiciones de borde de la electrodinámica se
obtiene:
Amplitud de Reflectividad (coeficiente de reflexión de Fresnel)
PROYECTO FINAL DE CARRERA
página 18
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Reflectividad
Como N1 y N2 son complejos, las amplitudes de reflectividad son complejas: rs = |rs | exp (iΔs)
y rp = |rp| exp (iΔp).
Nótese que N1 y N2 reales producen Δs, Δp igual a 0 o 180°.
La elipsometría determina el cambio en el estado de polarización del haz incidente al
reflejarse en la muestra. Dicho cambio se expresa en términos de la razón:
La ecuación anterior define los ángulos elipsométricos W y Δ las ecuaciones de Fresnel
permiten determinar E(w) de las mediciones elipsométricas de acuerdo con la relación:
Para una reflexión aire/sustrato, N1 = 1 y N2 = n + ik, la constante dieléctrica se puede
escribir como E = 1 + i 2, por lo tanto de la ecuación anterior podemos despejar los
valores de  1 y  2, obteniéndose:
La luz incidente sobre la muestra esta linealmente polarizada y la reflejada resulta
elípticamente polarizada. Pues en la onda incidente se cumple que
Las que están en fase
Y en la onda reflejada se obtiene que
PROYECTO FINAL DE CARRERA
página 19
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Esto satisface
Con Δ= Δp - Δr, esto es una elipse rotada en un ángulo .
Figura 3.2: Onda incidente linealmente polarizada y onda reflejada elípticamente
polarizada.
El ángulo de rotación de los ejes de la elipse  satisface tan  
Erp
Ers
,medible con
polarizadores.  es medible usando polarizadores.
Hay métodos más sofisticados usando dispositivos optoelectrónicos, que son de utilización
corriente, como el elipsometro.
PROYECTO FINAL DE CARRERA
página 20
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 3.3: elipsometro
3.2.2. Efectos de interferencia en capas delgadas.
En la vida real, no hay superficies iguales al bulto. La superficie puede estar oxidada, tener
rugosidad, o sufrir daos o reconstrucción, lo cual le cambia las constantes 1, 2 (o n, k).
El modelo mas simple supone una capa intermedia entre el aire y el sustrato que se quiere
medir.
Figura 3.4: reflexión de múltiples intercaras y su efecto en la transmitancia de una película delgada
(T=1-R).
Donde 2 es igual a la diferencia de fase entre dos reflexiones sucesivas
3.2.3. Obtención del 
La diferencia de camino óptico
PROYECTO FINAL DE CARRERA
página 21
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Con esto finalmente tenemos que:
La amplitud de la onda reflejada es la interferencia de las reflexiones en las intercaras 1-2 y 23. Entonces la amplitud de reflexión neta es:
Usando r21 = -r12 y t12t21 =1 – r212 obtenemos:
Si al medir tanψ y Δ se calculan 1 y  2 con un modelo AIRE/SUSTRATO, a  1 + i 2 se
le llama pseudofunción dieléctrica. Volveremos sobre este tema más adelante. Solamente si la
superficie esta limpia y sin dado, la pseudofunción dieléctrica ser la verdadera  (ω).
3.3. Rugosidad.
La mayoría de las muestras utilizadas en laboratorios, son generadas sobre sustratos, donde se
forman capas rugosas de materiales, como se observa en la figura.
PROYECTO FINAL DE CARRERA
página 22
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 3.5: Esquema de la rugosidad superficial. [Adachi, 1999].
En estos casos, se realiza una aproximación sobre el modelo que mejor describe la superficie,
modelos piramidales, semiesféricos, etc. Para ello también se utilizan imágenes obtenidas con
variados métodos, como se observa en la figura a continuación.
Figura 3.6: Imagen AFM de superficie de Cu(110) [Stahrenberg et al, PRB64, 115111 (2001)].
En lo que prosigue haremos un análisis más electrodinámico del material, para comprender la
rugosidad.
3.3.1. Campo Local.




Distinción entre el campo E ' que actúa sobre un tomo y el campo promediado E '  E   E .

Para calcular Δ E ' , consideremos una división del espacio entre una esfera de radio R grande
comparado con sus dimensiones, y el resto del medio. Tenemos:

Ein

se puede calcular dado el punto de vista microscópico, tomo por tomo.
Eout puede

Eout
calcularse con un enfoque macroscópico.
es el campo del dieléctrico dentro de la
cavidad vaca.
Consideremos que los tomos o moléculas dentro de la cavidad se pueden representar por dipolos
puntuales.


Donde
R son las posiciones de los tomos y
PROYECTO FINAL DE CARRERA
d
R
sus dipolos.
página 23
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Si los tomos no tienen momento dipolar permanente, sino que la polarización es inducida


por el campo local, entonces
d    Etoc , Eloc es el mismo para todos, donde  es la
R
polarizabilidad.
 
Donde R = (d, R .En un medio desordenado

R
se convierte en
R
2
sindRddψ.
Veamos que :

Es decir E in  0 en un medio desordenado. De hecho en una red cúbica, la evaluación

cuidadosa da que E in  0 .
3.3.2. Campo Exterior.

La discontinuidad de P en el borde produce una carga de polarización.
Si integramos sobre el volumen del cilindro (ver figura) la expresión anterior:
PROYECTO FINAL DE CARRERA
página 24
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva

Figura 3.7: La discontinuidad de P . en el borde produce una carga de polarización.
cuando h  0 ,  pol ·h   pol , por lo tanto de las ecuaciones anteriores obtenemos:
pero P1n = 0 y P2n = P cos(θ) como muestra la figura, entonces la expresión final para la
densidad de carga polarizada es
El campo eléctrico en el centro de la esfera generado por esta carga de polarización es

paralelo a P
Este viene a ser el campo en la posición atómica. Una aproximación mejor será :
PROYECTO FINAL DE CARRERA
página 25
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Con 0    1, esto da cuenta de los dipolos no son puntuales.  = 0 es el caso de
electrones libres deslocalizados.
Como simplificación adicional, supondremos que el medio es isótropo. En tal caso la


polarización inducida P es paralela a Etoc , con un coeficiente de proporcionalidad que es
independiente de la dirección.
Reemplazando el valor del campo eléctrico local antes mostrado, obtenemos
n
donde
N
V densidad de dipolos, ordenando la expresión anterior

Por lo tanto el desplazamiento eléctrico D es:
Finalmente tenemos que :
Poniendo  = 1 se obtiene la formula de Clausius-Mossolti.
Esta formula es valida cuando n es muy pequeño, que es el caso para gases enrarecidos.
PROYECTO FINAL DE CARRERA
página 26
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
3.3.3. Modelo de Medio Efectivo.
El modelo de aproximación de medio-efectivo de Bruggeman (EMA), el de LorentzLorenz (LL) y el de Maxwell Garnett (MG) son teorías simples de medio efectivo, que
representan una mezcla dieléctrica heterogénea. Todos los modelos LL, MG y EMA tienen
la misma forma genérica:
Donde <  >,  h,  1,  2,... son las funciones dieléctricas (complejas) de un medio efectivo,
medio servidor e inclusiones del tipo 1,2,…..en el servidor respectivamente y donde v1,
vi  1
v2,... representan fracciones de volumen ( i
) del material del tipo 1,2,... en el
volumen total.
En la aproximación LL, la cual fue desarrollada para describir entidades de puntos
polarizadles, de polarizabilidad , insertadas en vacío,  h = 1,<  >=  y vi es igual a las
fracciones volumen, donde i vi  1
La relación LL es usualmente expresada en términos de la polarizabilidad  i , la cual
esta relacionada con la función dieléctrica macroscópica  por la relación ClausiusMossotti :
En el modelo MG1 el sustrato es insertado en un servidor hueco (Eh = 1) siendo
idéntico al modelo LL. En el modelo MG2 los huecos son insertados en el sustrato. Si
asumimos un medio hipotético, por ejemplo, de 50 % de huecos y 50 % de sustrato, los
resultados LL y MG1 son idénticos pero son muy diferentes los resultados de MG2 a pesar
del hecho que las fracciones de volumen relativas son idénticas. Los modelos MG1 y MG2
difieren solo en la opción del material del servidor.
En el modelo de Bruggeman, se reemplaza h por <  >, es decir, dejando que el medio
efectivo actúe como medio servidor.
Donde
 vi  1
i
y <> es la solución numérica de la ecuación anterior. Las formulas de
LL, MG y EMA se reducen simplemente a opciones diferentes de la función dieléctrica del
material servidor Eh. Para elegir el modelo de medio efectivo correcto a usar, depender de las
condiciones del sistema.
PROYECTO FINAL DE CARRERA
página 27
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 3.8: Comparación de la parte imaginaria 2 de la función dieléctrica efectiva para una
mezcla con 50% de sustrato y 50% de huecos calculada con los modelos LL, MG1, EMA y MG2.
Para el caso en que L « λ, siendo L la longitud característica de la rugosidad, se modela el
medio rugoso o poroso como una mezcla física de material y vacío, con < > efectiva.
Para una superficie dada y mediciones de elipsometría tan  exp , cos  exp, se pueden hacer modelos
y obtener tan  calc y cos  calc .
La última parte del proceso es comparar los valores medidos con las predicciones del modelo
basadas en las ecuaciones de Fresnel. El procedimiento de análisis usualmente se denomina ajuste
de datos, ya que los parámetros ajustables del modelo se varan para encontrar el mejor
ajuste de los datos generados a los datos experimentales reales. Los parámetros de ajuste a
utilizar acordes al modelo seleccionado pueden ser: los grosores de las películas, los
coeficientes de la relación de dispersión para sus constantes ópticas, fracciones de volumen,
etc. Existen diferentes algoritmos de ajuste para el análisis de datos ópticos. El objetivo es
determinar rápidamente el modelo que exhibe la menor diferencia (mejor ajuste) entre los datos
medidos y los calculados. La raíz del error cuadrático medio  se utiliza para cuantificar la diferencia
entre los datos experimentales y los predichos, considerando las desviaciones estándar de las cantidades
experimentalmente medidas,  exp. Para mediciones espectroscópicas con un elipsometro de
analizador rotatorio, el cual determina los valores de tan( ) y cos(Δ), el valor  se calcula
Donde N es el número de datos experimentales (a distintas ), P es el número de parámetros
desconocidos.
Vemos algunos resultados para el Si.
PROYECTO FINAL DE CARRERA
página 28
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 3.9: Pseudo ε del Si con la corrección de la rugosidad simulada con la teoría del medio efectivo.
[Adachi, 1999].
En la Figura se presenta el espectro de  para el silicio obtenido por espectroscopia elipsométrica.
Las transiciones electrónicas (puntos críticos) ocurren para energías cercanas a los 3.4 y 4.3 eV, y se
manifiestan como máximos en 2. Este espectro puede representarse adecuadamente con una
generalización del modelo de oscilador armónico. La rugosidad puede determinarse
independientemente mediante AFM [Adachi et al, J. Appl. Phys. 80, 5422 (1996)] y comprobar de
acuerdo con las mediciones ópticas.
3.4. Figuras originales.
3.4.1. Efectos de interferencia en capas delgadas.
3.4.2. Efectos de película de óxido.
3.4.3. Rugosidad.
PROYECTO FINAL DE CARRERA
página 29
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 3.10: a) Esquema de polarizaciones de la luz para el cálculo de los coeficientes de
Fresnel. b) Elipsometro. c) Reflectancia en función del ángulo de incidencia.
Figura 3.11: Reflexión en múltiples intercaras y su efecto en la transmitancia de una película
delgada (T=1-R).
PROYECTO FINAL DE CARRERA
página 30
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 3.12: a)Pseudo 2 del GaAs con la corrección por la capa de óxido. [Aspnes and
Studna, PRB 27, 985 (1983)]. b) Pseudo  del Si con la corrección por la capa de óxido.
[Adachi, 1999].
Figura 3.13: Imagen AFM de superficie de Cu(110) [Stahrenberg et al, PRB64, 115111 (2001)].
PROYECTO FINAL DE CARRERA
página 31
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Figura 3.14: Esquema de la rugosidad superficial. [Adachi, 1999].
Figura 3.15: Pseudo  del Si con la corrección de la rugosidad simulada con la teoría del
medio efectivo. [Adachi, 1999].
3.5 Transiciones Interbanda.
3.5.1. Teoría de Transiciones Interbanda.
Vamos a estar enmarcados en la Aproximación monoelectrónica.
Consideremos un Hamiltoniano monoelectrónico :

De ac V ( r ) ) es el potencial ocasionado por los núcleos y los demás electrones, y conocemos del

Hamiltoniano sus autofunciones ψn ( r ) ) y autoenergías En y su ocupación f(Ei)
(probabilidad de que este ocupado el estado E i ) que por lo general es de la forma
1
f   ( Ei Ef )
En donde:
e
1
PROYECTO FINAL DE CARRERA
página 32
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Sea un campo electromagnético, caracterizado por :


Donde cc. es el complejo conjugado del primer término, también e  q , con esto tenemos
que nuestro Hamiltoniano toma la forma:
De esta forma, cortando términos de orden Ao2 tenemos :
Con Teoría de perturbaciones, la probabilidad de absorción de un fotón, que es igual a la
probabilidad de transición, esta dada por :
Reemplazando W nos queda :
Así también tenemos la probabilidad de emisión inducida:
La probabilidad de Transmisión neta de pasar del estado  i al estado  j esta dada por:
entonces :
Veamos lo que ocurre con el término
PROYECTO FINAL DE CARRERA
página 33
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Recordando que :
entonces :


Utilizando ahora el hecho de que e  q , nos queda que :
. Por lo tanto P  P .
i j
j i
Además f ( Ei )(1  f ( Ej ))  f ( Ej )(1  f ( Ei ))  f ( Ei )  f ( Ej )
De esta manera nos queda:
Finalmente, la energía absorbida por unidad de tiempo es:
Por otra parte : La energía disipada por unidad de tiempo, por un campo eléctrico :
con
PROYECTO FINAL DE CARRERA
página 34
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
en donde:
 
El termino J·E , queda:
Promediando :
Donde 21 =  +  ∗.
Ahora integramos esto, lo que nos deja :
Recordemos que :
con esto
es decir, tenemos la parte imaginaria de la constante dieléctrica. Entonces:
PROYECTO FINAL DE CARRERA
página 35
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Finalmente:
Este resultado lleva un factor 2 adicional causado por la degeneración de spin. Si queremos
calcular la parte real de la constante dieléctrica, nos basta usar las relaciones de KramersKrönig.
3.5.2. Transiciones banda-banda.
Cuando existen condiciones de simetría periódica, como en sólidos, las funciones de onda se
pueden escribir de la forma (Teorema de Bloch):
Donde



Para cada k , hay una secuencia de soluciones para uk( k ) y E( k ). Entonces de la ecuación de
Schrödinger, tenemos que :
Lo que nos lleva a:

Para


k dado, E=En( k ) u=unk ( r )


El conjunto de todos los puntos En( k ) para n dado y todos los
PROYECTO FINAL DE CARRERA
página 36
de 98
k posibles, se llama banda.
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva

El conjunto de puntos
k
que dan soluciones linealmente independientes esta limitado a la



primera zona de Brillouin (1ZB). La 1ZB es la región del espacio, tal que | k | < | k - G |

para todo G

 h b1  k


b2
 l b3
,vector de la llamada red recíproca (RR).
Con esto entonces nos estamos acercando a nuestro valor de la constante dieléctrica,
recordemos que 1 puede obtenerse va Kramers-Krönig. Para continuar entonces, se puede
usar la relación :
Por tanto para tener la constante dieléctrica total, basta reemplazar la delta, quedándonos:
El decaimiento espontáneo del estado excitado Ej se puede tener en cuenta mediante:
con  

tiempo de vida medio.
h


La expresión ( q , ω) puede ser reducida, bajo ciertas aproximaciones, a la  ( q , w) que se
obtiene de la ecuación de Boltzmann.

Además dentro de la 1ZB,
k
toma valores:
Donde mi=0,  1,  2,……,  (
Ni
Ni
 1),
2
2
Siendo Ni el numero de celdas cristalinas en la dirección i.

Para un cristal infinito, Ni → ∞ y k . toma los valores continuos.
PROYECTO FINAL DE CARRERA
página 37
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Entonces las ψi y ψj se pueden denotar como :


ψi = ψv, k i( r ) Banda v (valencia o core).


ψj = ψc, k j( r ) Banda c (conducción).
Para el caso de los aislantes, f(Ei ) = 1, f(Ej) = 0.
Veamos la integral:
Recordemos que la derivada de una función periódica es otra función periódica.

en donde


G ih Gu  (G )e i G r una función periódica.

ki
Entonces, nuestro término de la constante dieléctrica nos queda de la forma
donde el último término de la integral pude escribirse de la forma (Recordemos procedimiento
similar realizado en la sección anterior) :
De esta forma entonces, el término de la constante dieléctrica nos queda :
en donde:
PROYECTO FINAL DE CARRERA
página 38
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
es una función periódica.
La integral del termino de la constante dieléctrica no se anula, solo si el argumento de la




exponencial ( q  kj  ki )   G

ki) donde G  RR (red reciproca).
~





Ahora bien, como k i y k j estan en la 1ZB, entonces podemos tener que q  0 y k i = k j



Cuando q  0 hablamos de la aproximación Dipolar, y cuando k i = k j se habla de
transiciones verticales.
Lo anterior es una regla de selección ocasionada por la simetría de traslación del cristal. Con
esta regla de selección se simplifica el valor de la parte imaginaria de la constante dieléctrica .

con k  1ZB , esta es la fórmula fundamental de las transiciones ópticas en cristales o sistemas
periódicos.

mi 
ko

bi , tenemos que un punto k ocupa un volumen:

i
Ahora como
Ni
Con esto k 


V
3
d
k ,, quedándonos la constante dieléctrica de la forma:
(2 ) 3 


Donde pcv( k )  

ck
· p ·

.
ck
3.5.3. Algunos Casos.
Hay materiales en los que los electrones están muy ligados, 2 depende de la topología de las
bandas, y en particular, de las diferencias entre Evk y Eck. Las regiones particularmente
importantes, son las regiones de la 1ZB en donde Eck-Evk ≈ cte.
PROYECTO FINAL DE CARRERA
página 39
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva


Para continuar recordemos que pcv( k )  


· p ·
ck

. , y usando el hecho de que
ck

mi 

V
ko

bi
3

i
k  (2 ) 3  d k donde
Ni , con esto obtenemos la ecuación:




En general e · p cv ( k ) es una función suave de k y  (ω) tiene una gran correlación con la
llamada Densidad Conjunta de Estados (JDOS).

En donde se utiliza la formula mas conveniente dado el problema. Los puntos k en que
k ( Eck  Evk )  0 se llaman puntos críticos. La integral mata las singularidades, pero hay
variaciones rápidas, es decir, en estos puntos críticos, pueden integrarse analíticamente.
Consideremos el caso de los semiconductores.
3.6. Punto crítico M0.
En el borde de absorción, las energías de las bandas de conducción (c) y de valencia (v)
son de la forma
Con esto la diferencia de energía esta dada por:
Donde
La superficie de integración es:
Esto conforma un elipsoide, donde su ecuación analítica esta dada por :
PROYECTO FINAL DE CARRERA
página 40
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
con
Ahora el área del elipsoide que este descrito por la ecuación anterior nos facilita el cálculo
de la integral de volumen que esta dada por:
haciendo cambio de coordenadas:
Con esto tenemos entonces :
Utilizando:
Obtenemos :
Entonces tenemos que J cv  h  Eg . Este es el llamado punto crítico M0.
PROYECTO FINAL DE CARRERA
página 41
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
3.6.1 Transiciones prohibidas en el punto crítico M0.

Puede darse el caso de que en el punto crítico ko , ocurra que


p cv (ko)  0
. En este caso es

importante la variación de p cv . Expandiendo en serie tenemos :
entonces :

es un vector, y




e · p cv  Mcv( Ko)· k
, con esto tenemos entonces que la parte imaginaria de
la función dieléctrica es :
Punto critico M0 en -.k0 = 0. Contribución de bandas c  v. Entonces,
es mas complicado.
En el caso en que 1 =  2 =  3, se obtiene que :
3.7. Punto de Ensilladura M1.
Tomemos el caso:
PROYECTO FINAL DE CARRERA
página 42
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Sea 3 < 0; 1, 2 > 0, entonces q3 
h2 
k 3 , entonces tenemos :
2 3
Utilizamos ahora coordenadas cilíndricas, q1  q  cos , q 2  q  sin , q3=q3 y d

3. q
= q  dq  ddq 3 . Entonces tenemos que:
Se debe notar que la superficie de integración no puede salirse de la 1ZB, y la dependencia
cuadrática con qi esta limitada a puntos cercanos, esto es una tendencia.
Entonces :
Donde Θ(x) es la función escalón de Heavyside. Finalmente nuestro resultado queda:
PROYECTO FINAL DE CARRERA
página 43
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
3.8. Cristales Bidimensionales.
Lo siguiente es válido para superficies, pozos quánticos o estructuras de capas, en que los
fenómenos ocurren confinados en ciertos planos cristalinos. El grafito es un ejemplo de esto. Se
deriva principalmente de un cristal 3D para el caso en que 3→ ∞.
Tabla I : Resultados para cristales bidimensionales.
3.9. Cristales Unidimensionales.
Un ejemplo clásico de este caso, son los nanotubos. Tenemos entonces que :
PROYECTO FINAL DE CARRERA
página 44
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
3.10. Constante dieléctrica de un sistema de osciladores quánticos.
Finalmente :
Para el caso en que µ < 0 tenemos que :
Tenemos un punto crítico 0-dimensional donde Eck - Evk  E0.
Donde D0 incluye las constantes, esto es un oscilador y coincide con el modelo de Lorentz.
Corresponde a bandas paralelas en una amplia región del espacio.
2
E  ( E j  E i  h ) ,
h
se hace uso explícito de que h > 0 y se desprecian términos de menor orden. Si no se desprecian
estos términos y se considera el tiempo de vida finito, se obtiene :
Notemos que en la deducción de la regla de oro de Fermi Pi  j 
Con  > 0. Esta forma cumple la propiedad ()∗ = (-)
3.11. Radiación en la materia.
Si la materia es expuesta a la radiación electromagnética, por ejemplo a la luz infrarroja, la
radiación puede ser absorbida, transmitida, reflejada, dispersada o puede sufrir la
fotoluminiscencia.
La fotoluminiscencia es un término que se usó para designar un tipo de efectos como la
fosforescencia y la dispersión de Raman.
PROYECTO FINAL DE CARRERA
página 45
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Reflexión
Figura 3.11.1. Reflexión.
Transmisión
Figura 3.11.2. Transmisión
Absorción
Figura 3.11.3. Absorción
PROYECTO FINAL DE CARRERA
página 46
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Dispersión
Figura 3.11.4. Dispersión
3.12.Ecuaciones de dispersión del índice de refracción.
3.12.1. La ecuación de Cauchy.
La ecuación de Cauchy es una relación empírica entre el índice de refracción n y la
longitud de onda de la luz para un material transparente λ. La forma general de la ecuación
de Cauchy de la es:
Donde A, B, C, etc, son los coeficientes que se pueden determinar para un material
determinado de la ecuación para medir índices de refracción conocidas las longitudes de
onda.
Por lo general, es suficiente con utilizar un par de términos de la ecuación:
Donde A y B son los coeficientes de antes.
La tabla de coeficientes de los materiales ópticos se muestra a continuación:
PROYECTO FINAL DE CARRERA
página 47
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
La teoría de la interacción luz-materia en la que se basa esta ecuación de Cauchy puede dar
valores incorrectos. En particular, la ecuación es válida sólo para las regiones de dispersión
normal en la región de longitud de onda visible. En el infrarrojo, la ecuación será inexacta,
y no puede representar a las regiones de dispersión anómala. A pesar de ello, su sencillez
matemática le hace útil en algunas aplicaciones.
La ecuación Sellmeier es posterior al desarrollo de los trabajos de Cauchy anormalmente
dispersivo que se ocupa de las regiones, y más exactamente de los modelos de un material
de índice de refracción en todo rango de ultravioletas, visibles e infrarrojos del espectro.
Figura 3.12.1 Gráfica de índice de refracción frente a la longitud de onda de vidrio BK7.
Cruces rojas muestran los valores medidos. Más de la región visible (rojo sombreado), la
ecuación de Cauchy (línea azul) y de acuerdo con la medición de índices de refracción y la
Sellmeier parcela (verde línea discontinua). Se desvía en el ultravioleta y el infrarrojo
regiones
PROYECTO FINAL DE CARRERA
página 48
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
3.12.2. Ecuación de sellmeier.
En óptica la ecuación Sellmeier es una relación empírica entre el índice de refracción n y λ
la longitud de onda para un medio transparente. La forma usual de la ecuación de las lentes
es
Donde B 1,2,3 y C 1,2,3 son determinado experimentalmente Sellmeier coeficientes Estos
coeficientes suelen ser citado para. λ en micrómetros. Tenga en cuenta que esta λ es la
longitud de onda de vacío, que no en el propio material, que es λ y n (λ).
La ecuación se utiliza para determinar la dispersión de la luz en un medio refractantes. Una
forma diferente de la ecuación a veces se utiliza para algunos tipos de materiales, por
ejemplo los cristales.
La ecuación fue deducida en 1871 por W. Sellmeier, y es un desarrollo de los trabajos de
Cauchy Augustin Cauchy en la ecuación para la elaboración de modelos de dispersión.
A modo de ejemplo, los coeficientes de una corona de vidrio borosilicato conocido como
BK7 se muestran a continuación:
El Sellmeier coeficientes para muchos lentes ópticas comunes se pueden encontrar en el
catálogo de vidrio Schott, o en el Catálogo de Ohara.
Para lentes ópticas comunes, el índice de refracción calculado con tres coeficientes de la
ecuación Sellmeier se desvía de la actual índice de refracción en menos de 5 × 10 -6 más
de la gama de longitudes de onda de 365 nm a 2,3 μ m [1], que es del orden de la
homogeneidad de una muestra de vidrio [2]. Términos adicionales se añade a veces para
hacer el cálculo más preciso. En su forma más general, la ecuación de Sellmeier se da
como
Con cada término de la suma que representa una absorción de fuerza de resonancia B, en
una longitud de onda i √ C i. Por ejemplo, los coeficientes de BK7 anteriormente
PROYECTO FINAL DE CARRERA
página 49
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
corresponden a dos resonancias de absorción en el ultravioleta, y una en la región del
infrarrojo medio. Cerca de absorción de cada pico, la ecuación no da física de los valores n
= ± ∞, y, en estas regiones de longitud de onda de manera más precisa el modelo de
dispersión, como la Helmholtz debe utilizarse.
Si todos los términos se especifican para un material, a las longitudes de onda larga lejos
de los picos de absorción el valor de n tiende a
donde ε es la constante dieléctrica del medio.
La ecuación de Sellmeier también puede administrarse en otra forma:
Aquí, el coeficiente A es una aproximación de la longitud de onda corta (por ejemplo,
ultravioleta), la absorción de las contribuciones para el índice de refracción en longitudes
de onda más largo. Otras variantes de la ecuación de Sellmeier cuenta que pueden existir
para un índice de refracción del material de cambio, debido a la temperatura, la presión, y
otros parámetros.
PROYECTO FINAL DE CARRERA
página 50
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Memoria descriptiva
Coeficientes
Figura 3.12.2 Un gráfico de índice de refracción frente a la longitud de onda de vidrio
BK7, mostrando los puntos medidos (cruces azules) y una porción de la ecuación Sellmeier
(línea roja).
PROYECTO FINAL DE CARRERA
página 51
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
4. Entorno MATLAB.
4.1. Entorno gráfico GUIDE con MATLAB.
4.1.1. Herramienta GUIDE.
GUIDE es un entorno de programación visual disponible en MATLAB para realizar y
ejecutar programas que necesiten ingreso continuo de datos. Tiene las características
básicas de todos los programas visuales como Visual Basic o Visual C++.
4.1.2. Inicio
Para iniciar nuestro proyecto, lo podemos hacer de dos maneras:

Ejecutando la siguiente instrucción en la ventana de comandos:
>> guide

Haciendo un click en el ícono que muestra la figura:
Fig. 4.1. Icono GUIDE.
Se presenta el siguiente cuadro de diálogo:
Fig. 4.2. Ventana de inicio de GUI.
Se presentan las siguientes opciones:
PROYECTO FINAL DE CARRERA
página 52
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
a) Blank GUI (Default)
La opción de interfaz gráfica de usuario en blanco (viene predeterminada), nos presenta
un formulario nuevo, en el cual podemos diseñar nuestro programa.
b) GUI with Uicontrols
Esta opción presenta un ejemplo en el cual se calcula la masa, dada la densidad y el
volumen, en alguno de los dos sistemas de unidades. Podemos ejecutar este ejemplo y
obtener resultados.
c) GUI with Axes and Menu
Esta opción es otro ejemplo el cual contiene el menú File con las opciones Open, Print
y Close. En el formulario tiene un Popup menu, un push button y un objeto Axes,
podemos ejecutar el programa eligiendo alguna de las seis opciones que se encuentran
en el menú despegable y haciendo click en el botón de comando.
d) Modal Question Dialog
Con esta opción se muestra en la pantalla un cuadro de diálogo común, el cual consta
de una pequeña imagen, una etiqueta y dos botones Yes y No, dependiendo del botón
que se presione, el GUI retorna el texto seleccionado (la cadena de caracteres ‘Yes’ o
‘No’).
Elegimos la primera opción, Blank GUI, y tenemos:
Fig. 4.3. Entorno de diseño de GUI
PROYECTO FINAL DE CARRERA
página 53
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
La interfaz gráfica cuenta con las siguientes herramientas:
Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos:
File>>Preferentes y seleccionamos Show names in component palette. Tenemos la
siguiente presentación:
Fig. 4.4. Entorno de diseño: componentes etiquetados.
La siguiente tabla muestra una descripción de los componentes:
PROYECTO FINAL DE CARRERA
página 54
de 98
54
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
4.1.3. Propiedades de los componentes.
Cada uno de los elementos de GUI, tiene un conjunto de opciones que podemos acceder
con click derecho.
Fig.4.5. Opciones del componente.
Fig.4.6. Entorno Property Inspector.
Permite ver y editar las propiedades de un objeto.
La opción Property Inspector nos permite personalizar cada elemento.
PROYECTO FINAL DE CARRERA
página 55
de 98
55
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
Al hacer click derecho en el elemento ubicado en el área de diseño, una de las opciones
más importantes es View Callbacks, la cual, al ejecutarla, abre el archivo .m asociado a
nuestro diseño y nos posiciona en la parte del programa que corresponde a la subrutina que
se ejecutará cuando se realice una determinada acción sobre el elemento que estamos
editando.
Por ejemplo, al ejecutar View Callbacks>>Callbacks en el Push Button, nos ubicaremos
en la parte del programa:
function pushbutton1_Callback(hObject, eventdata, handles) %hObject
handle to pushbutton1 (see GCBO)
%eventdata reserved-to be defined in a future version of MATLAB %handles
structure with handles and user data (see GUIDATA)
4.1.4. Funcionamiento de una aplicación GUI.
Una aplicación GUIDE consta de dos archivos: .m y .fig. El archivo .m es el que contiene
el código con las correspondencias de los botones de control de la interfaz y el archivo .fig
contiene los elementos gráficos.
Cada vez que se adicione un nuevo elemento en la interfaz gráfica, se genera
automáticamente código en el archivo .m.
Para ejecutar una Interfaz Gráfica, si la hemos etiquetado con el nombre curso.fig,
simplemente ejecutamos en la ventana de comandos >> curso. O haciendo click derecho
en el m-file y seleccionando la opción RUN.
4.1.5. Manejo de datos entre los elementos de la aplicación y el archivo .M.
Todos los valores de las propiedades de los elementos (color, valor, posición, string…) y
los valores de las variables transitorias del programa se almacenan en una estructura, los
cuales son accedidos mediante un único y mismo identificador para todos éstos. Tomando
el programa listado anteriormente, el identificador se asigna en:
handles.output = hObject;
handles, es nuestro identificador a los datos de la aplicación. Esta definición de
identificador es salvada con la siguiente instrucción:
guidata(hObject, handles);
guidata, es la sentencia para salvar los datos de la aplicación.
Aviso: guidata es la función que guarda las variables y propiedades de los elementos en la
estructura de datos de la aplicación, por lo tanto, como regla general, en cada subrutina se
debe escribir en la última línea lo siguiente:
guidata(hObject,handles);
PROYECTO FINAL DE CARRERA
página 56
de 98
56
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
Esta sentencia nos garantiza que cualquier cambio o asignación de propiedades o variables
quede almacenado.
Por ejemplo, si dentro de una subrutina una operación dio como resultado una variable
diego para poder utilizarla desde el programa u otra subrutina debemos salvarla de la
siguiente manera:
handles.diego=diego;
guidata(hObject,handles);
La primera línea crea la variable diego a la estructura de datos de la aplicación apuntada
por handles y la segunda graba el valor.
4.1.6. Sentencias GET y SET.
La asignación u obtención de valores de los componentes se realiza mediante las
sentencias get y set. Por ejemplo si queremos que la variable utpl tenga el valor del Slider
escribimos:
utpl= get(handles.slider1,'Value');
Notar que siempre se obtienen los datos a través de los identificadores handles.
Para asignar el valor a la variable utpl al statictext etiquetada como text1 escribimos:
set(handles.text1,'String',utpl);%Escribe el valor del Slider... %en
static- text
PROYECTO FINAL DE CARRERA
página 57
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
4.2 Matlab optimización.
4.2.1.LSQNONLIN.
Resuelve los mínimos cuadrados no lineales (datos de montaje no lineales) problemas
4.2.1.1 Ecuación.
Resuelve problemas no lineales de mínimos cuadrados de ajuste de curvas de la forma
4.2.1.2 Sintaxis.
x = lsqnonlin(fun,x0)
x = lsqnonlin(fun,x0,lb,ub)
x = lsqnonlin(fun,x0,lb,ub,options)
x = lsqnonlin(problem)
[x,resnorm] = lsqnonlin(...)
[x,resnorm,residual] = lsqnonlin(...)
[x,resnorm,residual,exitflag] = lsqnonlin(...)
[x,resnorm,residual,exitflag,output] = lsqnonlin(...)
[x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(...)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =
lsqnonlin(...)
4.2.1.3 Descripción.
Lsqnonlin resuelve problemas de mínimos cuadrados no lineales, incluyendo los datos de
montaje de problemas no lineales.
En lugar de calcular el valor
, (La suma de los cuadrados), lsqnonlin requiere la
función definida por el usuario para calcular el valor del vector función
PROYECTO FINAL DE CARRERA
página 58
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
En términos de vectores, puede repetir este problema de optimización como
Donde x es un vector y f (x) es una función que devuelve un vector de valor.
x = lsqnonlin(fun,x0) se inicia en el punto x0 y encuentra un mínimo de la suma de los
cuadrados de las funciones descritas en la función. Fun debe devolver un vector de valores,
y no la suma de los cuadrados de los valores.
x = lsqnonlin(fun,x0,lb,ub) define un conjunto de límites inferior y superior en el diseño de
las variables en x, de manera que la solución está siempre en el rango de lb ≤ x ≤ ub.
x = lsqnonlin(fun,x0,lb,ub,options) minimiza con las opciones de optimización
especificadas en la estructura de las opciones. Utilice optimset para establecer estas
opciones. Pass vacía matrices de lb y ub en caso de que no existan límites.
x = lsqnonlin(problem) considera que el mínimo de problema, es un problema que se
describe en la estructura de entrada de argumentos.
Crear la estructura de la exportación de un problema de optimización de la herramienta, tal
y como se describe en Exportación MATLAB de trabajo.
[x,resnorm] = lsqnonlin(...) devuelve el valor del cuadrado de 2 de la norma
residual a x: suma (fun (x). ^ 2).
[x,resnorm,residual] = lsqnonlin(...) devuelve el valor residual de la
función(x) en la solución x.
[x,resnorm,residual,exitflag] = lsqnonlin(...) exitflag devuelve un valor
que describe la condición de salida.
[x,resnorm,residual,exitflag,output] = lsqnonlin(...) devuelve
una estructura de la producción que contiene información acerca de la optimización.
[x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(...)
devuelve una estructura lambda cuyos campos contienen los multiplicadores de Lagrange
en la solución x.
[x,resnorm,residual,exitflag,output,lambda,jacobian] =
lsqnonlin(...)devuelve el Jacobiano de la función en la solución x.
PROYECTO FINAL DE CARRERA
página 59
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Nota Si la entrada de los límites especificados por un problema son incompatibles, la
salida x es x0 y los productos residuales y se resnorm .Componentes de x0 que violan los
límites lb≤ x ≤ ub se restablecerá en el interior del cuadro definido por los límites.
Componentes que respetan los límites no cambian.
4.2.1.3 Argumentos de entrada.
función de argumentos contiene descripciones generales de los argumentos pasados en
lsqnonlin. Esta sección proporciona la función de los detalles específicos para la fun,
opciones, y el problema:
fun
La función de las plazas cuya suma es mínima. fun es una función que acepta un
vector x y devuelve un vector F, el objetivo funciones evaluadas en x. La
función de la fun puede especificarse como una función para manejar un Marchivo de la función
x = lsqnonlin(@myfun,x0)
Donde myfun MATLAB es una función, como
function F = myfun(x) función F = F (x)Cálculo de los valores en función de x
fun puede ser también una función para manejar una función anónima.
x = lsqnonlin(@(x)sin(x.*x),x0);
Si los valores definidos por el usuario para x y F son matrices, que se convierten
en un vector lineal utilizando la indexación.
Si el Jacobiano también puede calcularse y el Jacobiano opción es 'on', que de
forma.
options = optimset('Jacobian','on')
Entonces, la función debe devolver la diversión, en una segunda salida
argumento, el valor Jacobiano J, una matriz, a x.Tenga en cuenta que por el
control de la nargout valor de la función de informática puede evitar J fun
cuando se llama con un único argumento de salida (en el caso en que el
algoritmo de optimización sólo necesita el valor de F, pero no J).
function [F,J] = myfun(x)(x) = F ... función objetivo de los valores a x si
nargout> 1 de la producción de dos argumentos J = ... % Jacobiano% de los
evaluados en función de x final
Si la fun devuelve un vector (matriz) de m componentes y ha longitud x n,
donde n es la longitud de x0, entonces el Jacobiano J es una mxn matriz donde J
(i, j) es la derivada parcial de F (I) con respecto a x (j).(Tenga en cuenta que el
Jacobiano J es la transposición de la gradiente de F.)
Opciones Options ofrece la función de los detalles específicos de las opciones valores.
PROYECTO FINAL DE CARRERA
página 60
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Objetivo
La función objetivo
Problema X0
Punto inicial para x
lb
Vector de límites más bajos
ub
Vector de límites superior
Solver
'Lsqnonlin'
options
Options de la estructura creada con optimset
4.2.1.4 Argumentos de salida.
Función de argumentos contiene descripciones generales de los argumentos devueltos por
lsqnonlin. Esta sección proporciona la función de los detalles específicos para exitflag,
lambda, y de salida:
Exitflag Sirve para identificar la razón porque ha terminado el algoritmo. La siguiente es
una lista de los valores de exitflag y los correspondientes motivos, el algoritmo
finalizados:
1
Función convergido a una solución x.
2
Cambio en la x era inferior a la tolerancia especificada.
3
Cambio en el residual era menos de la tolerancia especificada.
4
Magnitud de la búsqueda dirección fue menor que la tolerancia
especificada.
0
Número de iteraciones superado options.MaxIter o el número de
evaluaciones de la función superado options.FunEvals.
-1
Algoritmo fue rescindido por la salida de la función.
-2
Problema es: los límites lb y ub son incompatibles.
-4
Línea de búsqueda no puede disminuir suficientemente el residual
de búsqueda a lo largo de la actual dirección.
Lambda Estructura que contiene los multiplicadores de Lagrange en la solución x
(separados por tipo de limitación).Los campos son
Output
lower
Lower lb límite bajo
upper
Upper ub límite alto
Estructura que contiene información acerca de la optimización.Los campos de la
estructura son
PROYECTO FINAL DE CARRERA
página 61
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
firstorderopt
Medida de primer orden de optimalidad (en gran escala algoritmo,
[] para otros)
iterations
Número de iteraciones adoptadas
funcCount
El número de función de las evaluaciones
cgiterations
Número total de iteraciones PCG (algoritmo de gran escala, para
los demás []))
Stepsize
Final desplazamiento en x (mediana escala algoritmo solamente)
Algorithm
Algoritmo de optimización utilizado
Message
Salir mensaje
Nota La suma de los cuadrados no debe ser formado explícitamente. En cambio, su función
debe devolver un vector de la función de los valores.
4.2.1.5. Opciones.
Optimization options. Puede configurar o cambiar los valores de estas opciones utilizando
la función optimset. Algunas opciones se aplican a todos los algoritmos, algunos son sólo
relevantes cuando se utiliza el algoritmo de gran escala, y otros son sólo relevantes cuando
se utiliza el algoritmo de mediana escala.
La opción LargeScale especifica una preferencia por que el algoritmo a utilizar. Es sólo
una preferencia, porque deben cumplirse algunas condiciones para el uso en gran escala o
mediana escala algoritmo. Para el algoritmo de gran escala, el sistema de ecuaciones no
lineales no se puede indeterminar, es decir, el número de ecuaciones (el número de
elementos de F devuelto por función) debe ser de al menos tanto como la longitud de x.
Además, sólo la gran escala algoritmo maneja obligado limitaciones:
LargeScale Uso de gran escala, es posible cuando el algoritmo establecido para 'activar'.
Uso de mediana escala algoritmo cuando esta en 'off'.
El algoritmo de gran escala es un algoritmo más moderno que el algoritmo de mediana
escala.
4.2.1.4.1. Algoritmos de mediana i larga escala.
Estas opciones son utilizadas por ambas:
PROYECTO FINAL DE CARRERA
página 62
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
DerivativeCheck Comparar el usuario suministra derivados (Jacobiano) finitodiferenciando a los derivados.
Diagnostics
Mostrar información de diagnóstico acerca de la función que se reducen
al mínimo.
DiffMaxChange Máximo cambio en las variables de diferenciando finito.
DiffMinChange Mínimo cambio en las variables de diferenciando finito.
Display
Nivel de la pantalla. "Off" muestra ninguna salida; 'iter' muestra la
producción en cada iteración; 'final' (por defecto) muestra sólo el
producto final.
Jacobina
Si 'on’, lsqnonlin utiliza un Jacobiano definidas por el usuario (definido
en la fun o Jacobiano información (cuando se usa JacobMult), de la
función objetivo. Si "off", se aproxima a la lsqnonlin Jacobiano usando
diferencias finitas.
MaxFunEvals
El número máximo de la función evaluaciones permitido.
MaxIter
Número máximo de iteraciones permitido.
OutputFcn
Especifique una o más funciones definidas por el usuario que una
llamada a función de optimización en cada iteración. Vease la función de
salida.
PlotFcns
Plotea diversas medidas de progreso mientras se ejecuta el algoritmo,
seleccione una de las parcelas predefinidos o crear uno propio. lots the
step size;
@optimplotfirstorderopt plots the first-order of optimality.
Especificar @ optimplotx parcelas de la actual punto;
@ optimplotfunccount parcelas de la función de contar;
@ optimplotfval parcelas el valor de la función;
@ optimplotresnorm parcelas en la norma de los residuos;
@ optimplotstepsize dimensiones de los pasos de las parcelas;
@ optimplotfirstorderopt las parcelas de primer orden de optimalidad.
TolFun
Rescisión tolerancia en el valor de la función.
TolX
Tolerancia. x
TypicalX
Típico x valores.
4.2.1.4.1.1. Solo algoritmo de larga escala.
Estas opciones sólo se utilizan por la gran escala algoritmo:
JacobMult
PROYECTO FINAL DE CARRERA
Función para manejar Jacobiano multiplicar función. Para gran escala
estructurada problemas, esta función calcula la matriz producto
Jacobiano J * Y, J '* Y, J o' * (J * Y), pero sin que formen J. La
página 63
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
función es de la forma
W = jmfun(Jinfo,Y,flag,p1,p2,...) W = jmfun (Jinfo, Y, bandera, p1,
p2 ,...)
Donde Jinfo y los parámetros adicionales p1, p2, ... contener las
matrices utilizadas para calcular J * Y (o J '* Y, J o' * (J * Y)). El
primer argumento Jinfo debe ser el mismo que el segundo argumento
devuelto por la función objetivo la diversión, por ejemplo,
[F,Jinfo] = fun(x) [F, Jinfo] = fun (x)
Y es una matriz que tiene el mismo número de filas, ya que hay
dimensiones en el problema. También determina que para calcular el
producto:



Si flag== 0 entonces W = J '* (J * Y).
Si flag> 0 entonces W = J * Sí.
Si flag <0 entonces W = J '* Sí.
En cada caso, no está formado J explícitamente. Lsqnonlin usos Jinfo
para calcular la preconditioner. Los parámetros opcionales p1, p2, ...
puede ser cualquier parámetros adicionales necesarios por jmfun.
Nota 'Jacobiano' debe estar configurado para 'activar' para Jinfo que se pasó de fun a
jmfun.
JacobPattern
Patrón de la Jacobiano para diferenciado finito. Si no es conveniente
para calcular la matriz Jacobiano J, en la fun, lsqnonlin puede
aproximar a través de J escasa diferencias finitas, a condición de la
estructura de J, es decir, lugares de la nonzeros, se presenta en el valor
de JacobPattern. En el peor de los casos, si la estructura es
desconocida, se puede establecer que JacobPattern es una densa
matriz y una plena aproximación por diferencias finitas, se calcula en
cada iteración (esto es el valor por defecto si no se establece
JacobPattern).Esto puede ser muy costoso para los grandes problemas,
por lo que está vale la pena el esfuerzo para determinar la estructura
de la escasez.
MaxPCGIter
El número máximo de PCG (gradiente precondicionado conjugado)
iteraciones.
PrecondBandWidth El valor por defecto es PrecondBandWidth 'Inf », que significa una
directa factorización (Cholesky) se utiliza en lugar de los gradientes
conjugados (CG). La factorización directa es computacionalmente
más dificil que el CG, pero produce una mejor calidad paso hacia la
solución. Set PrecondBandWidth to 0 para precondicionamiento
diagonal (ancho de banda de 0).Para algunos problemas, un ancho de
banda intermedia reduce el número de iteraciones PCG.
TolPCG
PROYECTO FINAL DE CARRERA
Rescisión tolerancia en el PCG iteración.
página 64
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
4.2.1.4.1.2 Solo para algoritmo de mediana escala.
Estas opciones sólo se utilizan por el algoritmo de mediana escala:
LevenbergMarquardt Elija Levenberg-Marquardt más de algoritmo de Gauss-Newton.
LineSearchType
Línea algoritmo de búsqueda elección.
4.2.1.4.2. Ejemplos.
Buscar x que minimiza
Comenzando en el punto x = [0,3, 0,4].
Porque lsqnonlin asume que la cantidad de plazas no está explícitamente formada en la
función definida por el usuario, la función pasa a lsqnonlin debe calcular el vector-valorada
función
Para k = 1 a 10 (es decir, M debería haber k componentes).
En primer lugar, escribir un M-archivo para calcular el componente de vectores k-F.
function F = myfun(x) k = 1:10;
F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));
Myfun función F = (x) k = 1:10;
F = 2 + 2 * k-exp (k * x (1))-exp (k * x (2));
A continuación, invocar una rutina de optimización.
x0 = [0,3 0,4]%
A partir fun [x, resnorm] = lsqnonlin (@ myfun, x0)% optimizador
Después de cerca de 24 evaluaciones de la función, este ejemplo le da la solución
X = 0,2578 0,2578% resnorm residual o suma de los cuadrados resnorm = 124,3622
PROYECTO FINAL DE CARRERA
página 65
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
4.2.1.4.2.1 Optimización de gran escala.
Por defecto lsqnonlin elige el algoritmo de gran escala. Este algoritmo es un subespacio
confianza de la región y el método se basa en el método Newton reflexivo interior que se
describe en 1 y 2 Cada iteración implica la solución aproximada de un gran sistema lineal
mediante el método de gradientes precondicionada conjugada (PCG).
4.2.1.4.2.2 Optimización mediana escala.
Si establece la opción de LargeScale 'off' con optimset, lsqnonlin utiliza el método de
Levenberg-Marquardt con la línea de búsqueda [4], [5] y [6]. Si lo prefiere, puede
seleccionar un método de Gauss-Newton [6] con la línea de búsqueda mediante el
establecimiento de la LevenbergMarquardt opción de 'off' (y LargeScale a "off") con
optimset. El método de Gauss-Newton es generalmente más rápido en el residual
pequeño.
4.2.1.4.3 Limitaciones.
Las funciones que se reduzcan al mínimo deben ser continuas. Lsqnonlin sólo puede dar
soluciones locales.
Lsqnonlin sólo se ocupa de las variables reales. Cuando x tiene variables complejas, las
variables deben ser divididas en partes real e imaginaria.
4.2.1.4.3.1. Optimización a gran escala.
El método a gran escala para lsqnonlin no resuelve indeterminados sistemas, requiere que
el número de ecuaciones (es decir, el número de elementos de F) ser al menos tan grande
como el número de variables. En el caso indeterminado, el algoritmo de mediana escala se
utiliza en su lugar. (Si existen limitaciones vinculadas, se emite una advertencia y se
resuelve el problema con los límites ignorados.) Véase problema grande de cobertura y
requisitos para obtener más información sobre qué problema formulaciones están cubiertos
y el tipo de información que debe proporcionarse.
El precondicionadores utilizados en el gradiente conjugado previamente parte de la gran
escala de las formas método J T J (donde J es la matriz Jacobiano) precondicionó antes de
la computación, por lo que una fila de J con muchas nonzeros, lo que resulta en una densa
cerca de producto J T J, puede conducir a un costoso proceso de solución para los grandes
problemas.
Si los componentes de x no tienen superior (o inferior) límites, entonces lsqnonlin prefiere
que los correspondientes componentes de la ub (o lb) a establecer que inf (o-inf para
límites inferiores), frente a una arbitrariedad muy grande, pero positivo (o negativo Para
los límites inferiores)
4.2.1.4.3.2. Optimización de mediana escala.
PROYECTO FINAL DE CARRERA
página 66
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Entorno MATLAB
El algoritmo de mediana escala no maneja obligado limitaciones. Debido a la gran escala
algoritmo no maneja indeterminados sistemas y el algoritmo de mediana escala no maneja
obligados los obstáculos, los problemas con estas dos características no pueden ser
resueltos por lsqnonlin.
PROYECTO FINAL DE CARRERA
página 67
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
5. Medidas experimentales.
En la segunda planta en el laboratorio 234 he estado trabajando en la adquisición de
muestras para la comprobación del comportamiento óptico de diversos materiales. Entre
ellos he realizado pruebas de transmitancia i reflectancia a materiales tales como la
Alumina i el oro. Siempre en finas capas.
Para medida de frecuencias comprendidas entre 450nm i 1100nm hemos utilizado el
espectrofotómetro siguiente:
Monocromador
Lámpara de
tungsteno
Cámara de
medidas ópticas
Figura 5.1.
Los materiales experimentales son los siguientes:
Alumina:
Muestra 1
Figura 5.2. capa de alumina densa
PROYECTO FINAL DE CARRERA
página 68
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
Muestra 3
Figura 5.3. capa de alumina poco densa
Muestra 4
Figura 5.4. muestra de alumina con capa de aluminio pegada
Estas muestras han sido elegidas de entre varias muestras mas por considerarse lo
suficiente significativas.
Figura 5.5. placa de petri con muestras de Alumina
También se ha experimentado con otros materiales como el oro:
PROYECTO FINAL DE CARRERA
página 69
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
Figura 5.6. placas de petri con diversas placas de oro de diversa densidad
5.1. Espectrofotómetro de Infrarrojo por transformada de Fourier VERTEX 70.
El Vertex 70 es un espectrofotómetro FT-IR totalmente digital usado para mediciones
mediante funciones automáticas que permiten reconocer parámetros químicos de manera
rápida.
Sus componentes ópticos tales como la fuente, el detector y el separador de haz de luz,
están controlados electrónicamente de modo que el firmware del espectrofotómetro puede
reconocerlos.
Esta información se pasa al software de la aplicación que a su tiempo carga los parámetros
experimentales apropiados automáticamente. El chequeo permanente online de los
componentes del espectrofotómetro facilita información continuada por defecto.
Figura 5.7.
La adquisición de datos se basa en un convertidor A/D de 24 bits de rango dinámico. El
convertidor A/D esta integrado en su detector electrónico de preamplificación. La
tecnología DigiTec asegura una transmisión de señal libre de interferencias y garantiza el
mayor proporción signal-to-noise ratio.
PROYECTO FINAL DE CARRERA
página 70
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
El Vertex 70 se controla por un equipo en el que su sistema operativo es Microsft
Windows y tiene instalado el software espectroscópico OPUS. La conexión Ethernet
permite la posibilidad de controlar el espectrofotómetro vía Internet
La configuración estándar del espectrofotómetro esta pensada para la adquisición de datos
en la región media del IR. Opcionalmente, el Vertex 70 puede ser equipado con óptica
adicional para cubrir todo el rango espectral desde el infrarrojo lejano a 30 cm-1 hasta el
canal visible a 25000 cm-1. El rango espectral puede ser cambiado fácilmente gracias a los
componentes ópticos prealineados y al espectrofotómetro alineado permanentemente.
5.1.1. Características VERTEX 70.
El es un espectrofotómetro versátil para aplicaciones exigentes en laboratorios analíticos y
de investigación.
Su rango estándar es de 7.800cm-1 a 370cm-1 con posibilidad de expansión a IR lejano y
cercano de 25.000cm-1 a 30cm-1.
Su resolución es de 0,5cm-1 con opción para 0,2cm-1 . Con 8 velocidades de barrido del
espejo móvil seleccionadas mediante OPUS.
Su opción "Rapid-scan" permite realizar hasta 40 espectros por segundo a 8cm-1 de
resolución.
Posee la opción de "Step scan" para experimentos de modulación de fase y resolución
temporal.
El equipo incluye una conexión ethernet con el PC de control del laboratorio.
Admite hasta dos detectores MCT en el compartimiento de detectores y dispone de
compartimentos internos para fuentes y divisores de haz.
Figura 5.8. Vertex 70
Para la experimentación en un rango mas alto de frecuencias tenemos que irnos a un
espectrofotómetro que sea capaz de realizar esas muestras en las frecuencias comprendidas
entre 1000nm i los 4000nm. lse ha procedido a la realización de las medidas
PROYECTO FINAL DE CARRERA
página 71
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
experimentales utilizando el correspondiente software OPUS for QA/QC y el
espectrofotómetro vertex 70 de Bruker.
Figura 5.9. espectrofotómetro VERTEX
Ambos aparatos van acompañados de un software específico para la captura de los
experimentos realizados. Mediante el puerto serie RS-232 se realiza la captura de datos
desde los dos espectrofotómetros. Una vez capturadas las muestras experimentales con los
comportamientos de los materiales se realiza una manipulación de los datos para obtener
los valores en relación a las magnitudes buscadas i no en relación a la intensidad de luz.
Primero de nada es imprescindible realizar una muestra en vacío para que nos sirva de
patrón a posteriori. Así el error incorporado por el medidor será siempre proporcional y
podremos eliminarlo para la obtención del resultado buscado, es lo nombramos línea de
base.
Figura 5.10 espectrofotómetro preparado para transmisión
PROYECTO FINAL DE CARRERA
página 72
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
En función del comportamiento del cristal que queramos encontrar necesitaremos
configurar también los elementos de colocación de los cristales dentro de la cámara. Es
decir, que necesitaremos parar el muestreo y colocar el mecanismo interno necesario para
poder medir por ejemplo reflectancia en vez de transmitancia. En la figura de arriba
podemos ver el aparato preparado para la medición de transmitancia. También es
importante pensar en el lugar mas adecuado para la colocación de la pieza a medir ya que
no obtendremos los mismos resultados si la colocamos en la parte de detrás del mecanismo
que si la ponemos delante.
A continuación muestro el comportamiento de diversos materiales muestreados con el
espectrofotómetro VERTEX y el software de aplicación OPUS.
5.1.2. Puesta a punto del sistema de medida con el espectrofotómetro IR del DEEEA.
5.1.2.1. Información Espectral.
El diseño de la mayoría de interferómetros que se usan para la espectrometría IR están
basados en el interferómetro original de dos rayos de luz originalmente diseñado por
Michelson en 1891. Muchos otros interferómetros de dos rayos de luz han sido diseñados
subsecuencialmente desde entonces y muy seguramente estos hayan sido dotados de mayor
funcionalidad y aplicabilidad que el interferómetro original de Michelson.
La forma mas simple del interferómetro de Michelson se muestra en la siguiente
figura.
Figura 5.11 Interferómetro de Michelson
Consta de dos espejos perpendiculares. El espejo móvil se puede mover sobre el eje
paralelo al plano del espejo fijo. El espejo móvil se mueve a una velocidad constante o se
posiciona en diversos puntos sobre su eje durante periodos cortos de tiempo pasando de
unos a otros a gran velocidad. Entre el espejo fijo y el móvil se encuentra el separador de
luz, donde un haz de luz IR procedente de una fuente externa se refleja parcialmente hacia
el espejo fijo (F). El resto de la luz se transmite parcialmente al espejo móvil (M). Cuando
los haces de luz retornan al separador de luz, estos interfieren y son reflejados y
transmitidos parcialmente.
A causa del efecto de la interferencia, la intensidad del haz de luz que llega al detector y la
intensidad del haz de luz que se devuelve a la fuente depende de la distancia que recorren
los haces en los dos brazos del interferómetro. La variación entre la intensidad del haz de
PROYECTO FINAL DE CARRERA
página 73
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
luz que llega al detector y la intensidad del haz de luz que retorna a la fuente como función
de la distancia recorrida produce la información espectral.
La información espectral se ve concretada en los espectros. Un espectro es el conjunto de
ondas o más concretamente, la radiación lumínica que transmite la sustancia analizada.
Dicha radiación puede ser usada para identificar la sustancia analizada. Los espectros se
pueden observar mediante espectroscopios basados en el interferómetro original de
Michelson que, además de permitirnos observar el espectro, permite realizar medidas sobre
éste, como la longitud de onda o la frecuencia de la radiación.
Desde la creación del primer interferómetro, a principios del siglo XX, se ha producido un
desarrollo tecnológico rápido y considerable. Los espectrofotómetros de primera
generación eran todos dispersivos. Inicialmente, los elementos dispersivos eran prismas, y
posteriormente se cambiaron por rejillas.
A mitad de los años 60, la espectroscopia IR fue testigo de un mejoría puesto a que se
empezó a utilizar la espectroscopia IR por transformada de Fourier (FT-IR). Esos
fueron los espectrofotómetros de segunda generación. En su interior estaban provistos de
un interferómetro de Michelson. Estaban dotados de grandes ventajas respecto a los
espectrofotómetros dispersivos.
Ventajas del FT-IR sobre los Dispersivos:
- Mayor velocidad y sensibilidad. Un espectro completo se puede obtener mediante un solo
barrido, ya que el detector observa todas las frecuencias de manera simultanea.
- Láser interno de referencia. La utilización de un láser de helio-neon como referencia
interna proporciona una calibración automática con exactitud superior a 0.01 cm-1.Esto
evita la necesidad de utilizar una calibración externa.
- Sistema de diseño sencillo, con pocas partes en movimiento que minimizan el desgaste.
- Elimina la mayor parte de las interferencias obteniéndose unos espectros mucho más
limpios.
- Poseen sistemas informáticos con librerías y con procesamiento de datos rápido y eficaz.
Hoy en día, todos los espectroscopios que realizan espectroscopia en el infrarrojo cercano
lo hacen por transformada de Fourier. Su uso esta destinado a campos como la química
analítica, la ciencia de la vida, procesos y muchos otros campos más.
5.2. Software OPUS 5.0 for QA/QC.
El software OPUS ofrece un sistema extenso de rutinas útiles para proceso espectrales tales
como calculadora de espectro, rutina de conversión de la absorbencia a transmitancia,
rutina de corrección automática de la línea de fondo, rutina de búsqueda de máximos y
mínimos y el muchísimos más.
Todas las funciones pueden ser usadas para espectros múltiples y se pueden manipular al
mismo tiempo. El rastreo y el manejo de los datos espectrales obtenidos en el laboratorio
del DEEEA es muy sencillo y útil y este software posee una variedad de funciones
interactivas que hacen del OPUS la herramienta ideal a parte de ser extremadamente fácil
de utilizar.
Las funciones básicas de manipulación y de evaluación de los espectros, tales como
selección de máximos y de mínimos, corrección de la línea de fondo, integración y
substracción espectral para el trabajo cuantitativo de zonas de los espectros, son
herramientas que se han usado a la hora de extraer la características de los espectros
obtenidos.
El OPUS ha proporcionado las rutinas de proceso que han resuelto las demandas en el
laboratorio.
En la siguiente captura se puede ver el comportamiento de la Alumina y de una capa de
vidrio a la transmisión para longitudes de onda de entre 1000nm y 4000nm.
PROYECTO FINAL DE CARRERA
página 74
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Medidas experimentales
Figura 5.12 Pantalla del software aplicativo OPUS adquiriendo de muestras
PROYECTO FINAL DE CARRERA
página 75
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Programa principal
6. Programa principal.
6.1 Menu principal.
Figura 6.1
El menu principal tiene dos partes muy marcas. En gris oscuro tenemos todo el panel de
control y en gris claro tenemos las visualizaciones de las muestras obtenidas. A
continuación vamos a comentar mas detenidamente el panel de control del programa.
Angulo de incidencia
Figura 6.2
Nuestros cristales son muestreados a diferentes ángulos para detectar que comportamiento
óptico tienen los diversos materiales con los que trabajamos. Las muestras obtenidas son a
12º y obtenemos la respuesta a la reflexión óptica
Numero de bicapas
Figura 6.3
Podemos determinar el numero de bicapas de las que consta el experimento.
PROYECTO FINAL DE CARRERA
página 76
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Programa principal
Figura 6.4
En la figura anterior podemos ver el aspecto que tendrá el programa si ponemos un
experimento que consta de 3 bicapas. Estas salen de manera emergente en el menu
principal.
Datos a grafiar
Figura 6.5
Figura 6.6
PROYECTO FINAL DE CARRERA
página 77
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Programa principal
En la figura anterior podemos ver que a partir de este menu desplegable podemos elegir el
tipo de dato a trabajar. Es decir, si trabajaremos con resultados de reflexión, transmitancia
o absorbancia. También podemos combinarlos entre ellos como se puede apreciar en el
menú emergente.
Figura 6.7
Este cuadro del menu principal nos permite fijar los índices de reflexión del substrato y del
medio donde realizamos el experimento.
Rango de longitud de onda
Figura 6.8
En cada experimento estamos trabajando entre varias longitudes de onda para ver el
comportamiento de los cristales a estas longitudes. También en el cuadro menú fijamos
cada cuanto se realizará la medida del comportamiento de los cristales.
parámetros de optimización del índice de refracción.
Figura 6.9
A partir de la elección de una de estas dos opciones el programa podrá pasar al ajuste del
índice de refracción a partir de un sistema de mínimos cuadrados para la obtención de la
aproximación al índice de refracción mas optimo a partir del experimento capturado.
Para ello lo hacemos con los parámetros de dispersión de Sellmeier o de Cauchy
Figura 6.10
Este cuadro nos sirve para fijar los parámetros tanto de Cauchy como de Sellmeier. Son los
datos de inicio del cálculo de optimización del programa. Estos parámetros hacen
referencia a las dos siguientes expresiones matemáticas:
Cauchy:
Sellmeier:
Tratamiento de datos
PROYECTO FINAL DE CARRERA
página 78
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Programa principal
Figura 6.11
En el menu también tenemos la posibilidad sumar dos respuestas, guardar los datos
obtenidos en formato txt y ponerle un encabezamiento al fichero. Para la optimización de
resultados es necesario tener activada la opción siguiente load dates.
Figura 6.12
Por ultimo en el panel de control de nuestro menú principal tenemos la posibilidad de
filtrar los datos que entramos para que en la optimización el proceso vaya mas rápido y
también tenemos que indicar de cuantas capas consta el experimento realizado. Hemos
trabajado básicamente con capas simples pero también en alguna ocasión se realizaron
optimizaciones en doble capa.
Para hacer funcionar el programa en optimización tenemos que dejar pulsados las opciones
de Cauchy o Sellmeier valors i el load dates. Es aconsejable poner valores a los parámetros
de Cauchy o Sellmeier que estén cerca de los valores deseados así la optimización será
exitosa.
En la parte derecha del programa tenemos las gráficas resultantes de los datos obtenidos:
Error, TM, TE y n().
6.2 Funcionamiento del programa.
El programa funciona de la siguiente manera modular:
Figura 6.13
PROYECTO FINAL DE CARRERA
página 79
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Programa principal
En la figura anterior tenemos de forma modular el funcionamiento del programa. Primero
le introducimos los parámetros de entrada. También tenemos que leer el fichero de datos
experimental para el posterior tratamiento de datos.
Una vez tenemos estos datos leídos y almacenados en la variable matriun21. De esta
variable tipo matriz sacamos los datos de la primera columna para el cálculo nos da los
datos de la longitud de onda capturada de los datos experimentales y la segunda columna
es la reflectividad.
Con la primera columna calcularemos y guardaremos los datos tanto en la función
Sellmeier como en la función Cauchy. Calculamos en la columna 2 de la variable matriz
matriun21teorica el índice de dispersión de Cauchy o de Sellmeier según se haya fijado en
el menú principal. Con esta variable i la anterior trabajaremos en la función
calculartransmisión-i-reflexión.
En la función calcular transmisión y reflexión se le introducen los parámetros de entrada
necesarios para le calculo y nos devuelve calculados la reflectividad i la transmitancia.
Una vez calculadas estas variables se llevan los valores a la optimización mediante un
bucle se calculan los valores óptimos de las variables A B C I D y del espesor del material.
Se vuelve a calcular Cauchy o Sellmeier y se vuelve a calcular la transmitancia y la
reflectancia. Así lo ira haciendo hasta que lleguemos a la tolerancia error ajustada en la
función de ajuste optimo por mínimos cuadrados para funciones no lineales utilizado.
Esta función es el lsqnonlin. A esta función le tenemos que pasar un función a optimizar en
este caso serán las funciones Sellmeier, Cauchy y el desfase provocado por el grosor de la
capa que nos permite tener esta formula relacionada la variable grosor de capa. De esta
manera se vuelve a calcular por mínimos cuadrados hasta que se obtienen los valores
óptimos de las variables buscadas.
Durante la elaboración del proyecto hemos ido contemplando como el ajuste de las
variables se acercaba bastante a los valores predefinidos por diseño por lo tanto estamos
delante de un sistema de optimización fiable para márgenes de funcionamiento conocidos.
Por ultimo sobre el menú principal se hace un volcado de los datos calculados a partir de
cuatro graficas que nos permiten ver la reflectancia, el índice de refracción n(lambda) y el
error obtenido a lo largo de las medidas.
PROYECTO FINAL DE CARRERA
página 80
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
7 Resultados obtenidos.
7.1 Pruebas con una sola lámina de cristal.
Cauchy
Muestra 9a: n=1.99 d=1.30 um
Ajuste a 4 variables, optimizando también el espesor de la capa.
PROYECTO FINAL DE CARRERA
página 81
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Sellmeier
Muestra 9a: n=1.99 d=1.30 um
Ajuste a 4 variables, optimizando también el espesor de la capa.
PROYECTO FINAL DE CARRERA
página 82
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy
Muestra 9b: n=1.99 d=0.92 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 83
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Sellmeier
Muestra 9b: n=1.99 d=0.92 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 84
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy
Muestra 9c: n=1.99 d=1.72 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 85
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Sellmeier
Muestra 9c: n=1.99 d=1.72 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 86
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy
Muestra 10c: n=2.09 d=1.36 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 87
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Sellmeier
Muestra 10c: n=2.09 d=1.36 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 88
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy
Muestra 10a: naprox=1.91 grueso=2.44 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 89
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Sellmeier
Muestra 10a: naprox=1.91 grueso=2.44 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 90
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy
10b naprox=1.72 grueso=3.28 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 91
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Sellmeier
10b naprox=1.72 grueso=3.28 um
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 92
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy
11a naprox=1.47 grueso=3.5-3.7 um (valor de n aproximado) Ns=3,6
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 93
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Sellmeier
11a naprox=1.47 grueso=3.5-3.7 um (valor de n aproximado) Ns=3,6
Ajuste a 4 variables, optimizando también el espesor de la capa
PROYECTO FINAL DE CARRERA
página 94
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy
12d naprox=1.47 espesor de capa=2.28um (valor de n aproximado)
Sellmeier
12d naprox=1.47 espesor de capa=2.28um (valor de n aproximado)
PROYECTO FINAL DE CARRERA
página 95
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
7.2 Optimizacion de doble capa.
11b
cauchy
N1=1.82 D1=620nm
N2=1.49 D2= 1290nm
Sellmeier
N1=1.82 D1=620nm
N2=1.49 D2= 1290nm
PROYECTO FINAL DE CARRERA
página 96
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Resultados obtenidos
Cauchy:
11c
N2=1.82 D2=620nm
N1=1.49 D1= 1290nm
Sellmeier
11c
N2=1.82 D2=620nm
N1=1.49 D1= 1290nm
PROYECTO FINAL DE CARRERA
página 97
de 98
PFC: OPTIMIZACIÓN Y EXTRACCIÓN DE PARAMETROS ÓPTICOS DE ESTRUCTURAS MULTICAPA
Referencias bibliográficas
8. Referencias bibliográficas.
1. J. D. Jackson, Classical Electrodynamics.
2. M. Brédov, V. Rumiántsev y I. Toptiguin, Electrodinámica clásica (Mir, Moscú, 1986).
4. S. Adachi, Optical Properties of Crystalline and Amorphous Semiconductors (Kluwer,
Boston, 1999).
5. N. W. Ashcroft and N. D. Mermin, Solid State Physics (Thomson, New York, 1976).
6. M. Born and E. Wolf, Principles of optics (Pergamon Press, Oxford, 1965).
7. R. M. A. Azzam and N. M. Bashara, Ellipsometry and Polarized Light (North-Holland,
Amsterdam, 1977).
8. E. Burnstein, en Elementary excitations in solids, editado por A. A. Maradudin y G.
F. Nardelli, (New York, Plenum Press, 1969).
10. F. Abeles (ed.), Optical Properties of Solids (North Holland, Amsterdam, 1972).
11. Artículos.visualizados por Internet.
12. Aprenda Matlab 7.0 como si estuviera en primero Javier García de Jalón, José Ignacio
Rodríguez, Jesús Vidal.
13.Manual de GUIDE de matlab bajado de la pagina www.lawebdelprogramador.com.
PROYECTO FINAL DE CARRERA
página 98
de 98
Anexo
PFC
Codigo del programa
Multilayers.m
function varargout = Multilayers(varargin)
% MULTILAYERS M-file for Multilayers.fig
%
MULTILAYERS, by itself, creates a new MULTILAYERS or raises the
existing
%
singleton*.
%
%
H = MULTILAYERS returns the handle to a new MULTILAYERS or the
handle to
%
the existing singleton*.
%
%
MULTILAYERS('CALLBACK',hObject,eventData,handles,...) calls the
local
%
function named CALLBACK in MULTILAYERS.M with the given input
arguments.
%
%
MULTILAYERS('Property','Value',...) creates a new MULTILAYERS
or raises the
%
existing singleton*. Starting from the left, property value
pairs are
%
applied to the GUI before Multilayers_OpeningFunction gets
called. An
%
unrecognized property name or invalid value makes property
application
%
stop. All inputs are passed to Multilayers_OpeningFcn via
varargin.
%
%
*See GUI Options on GUIDE's Tools menu. Choose "GUI allows
only one
%
instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help Multilayers
% Last Modified by GUIDE v2.5 06-May-2008 22:27:51
%********v2
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Multilayers_OpeningFcn, ...
'gui_OutputFcn', @Multilayers_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback',
[]);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before Multilayers is made visible.
Pagina: 1 de 72
Anexo
PFC
function Multilayers_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject
handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% varargin
command line arguments to Multilayers (see VARARGIN)
handles.data_n21 = 1;
handles.var_n21=0;
handles.data_n31 = 1;
handles.var_n31=0;
handles.data_un21 = 0;
handles.var_un21=0;
handles.data_bn21 = 0;
handles.var_bn21=0;
handles.data_cn21 = 0;
handles.var_cn21=0;
handles.data_n22 = 1;
handles.var_n22=0;
handles.data_n32 = 1;
handles.var_n32=0;
handles.data_n23 = 1;
handles.var_n23=0;
handles.data_n33 = 1;
handles.var_n33=0;
handles.DataP=1;
handles.nestruc=1;
handles.n21string
handles.n31string
handles.n22string
handles.n32string
handles.n23string
handles.n33string
=
=
=
=
=
=
'a';
'a';
'a';
'a';
'a';
'a';
set(handles.text123,'Visible','off');
set(handles.text124,'Visible','off');
set(handles.k23_input,'Visible','off');
set(handles.k33_input,'Visible','off');
set(handles.text125,'Visible','off');
set(handles.text126,'Visible','off');
set(handles.n22_input,'Visible','off');
set(handles.n32_input,'Visible','off');
set(handles.k22_input,'Visible','off');
set(handles.k32_input,'Visible','off');
set(handles.h22_input,'Visible','off');
set(handles.h32_input,'Visible','off');
set(handles.n22varpop_input,'Visible','off');
set(handles.n32varpop_input,'Visible','off');
set(handles.N2_input,'Visible','off');
set(handles.text76,'Visible','off');
set(handles.text77,'Visible','off');
set(handles.text78,'Visible','off');
set(handles.text79,'Visible','off');
set(handles.text80,'Visible','off');
set(handles.text81,'Visible','off');
set(handles.text82,'Visible','off');
Pagina: 2 de 72
Anexo
PFC
set(handles.text83,'Visible','off');
set(handles.frame26,'Visible','off');
set(handles.n23_input,'Visible','off');
set(handles.n33_input,'Visible','off');
set(handles.h23_input,'Visible','off');
set(handles.h33_input,'Visible','off');
set(handles.n23varpop_input,'Visible','off');
set(handles.n33varpop_input,'Visible','off');
set(handles.N3_input,'Visible','off');
set(handles.text84,'Visible','off');
set(handles.text85,'Visible','off');
set(handles.text86,'Visible','off');
set(handles.text87,'Visible','off');
set(handles.text88,'Visible','off');
set(handles.text89,'Visible','off');
set(handles.text108,'Visible','off');
set(handles.text115,'Visible','off');
set(handles.frame21,'Visible','off');
% Choose default command line output for Multilayers
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Multilayers wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = Multilayers_OutputFcn(hObject, eventdata,
handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject
handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in Calculate.
function Calculate_Callback(hObject, eventdata, handles)
% ini variables
global n21
global tet2
global matriun21
global Parametres
global lnostra
global long
global lleguir
global D1M
global var21
global slcauchy
global slsellmeier
global matriun21teorica
global matriun22teorica
global matriun31
global matriun22
global var22
global var32
Pagina: 3 de 72
Anexo
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
PFC
var23
var31
nestruc;
var33;
matriun33;
rugoso;
phi1;
DsM;
ns;
phis;
n1;
D1E;
DsE;
RE;
un21;
bn21;
cn21;
dn21;
un22;
bn22;
cn22;
dn22;
polnum;
h21
n31
phi2
n1
cla(handles.TEaxes);
cla(handles.TMaxes);
cla(handles.NLAMaxes);
cla(handles.ERRORaxes);
matriun31=0;
matriun22=0;
var22=0;
var32=0;
var31=0;
nestruc=0;
var33=0;
matriun33=0;
rugoso=0;
phi1=0;
DsM=0;
ns=0;
phis=0;
n1=0;
D1E=0;
DsE=0;
un21 = str2double(get(handles.un21_input,'String'));
bn21 = str2double(get(handles.bn21_input,'String'));
cn21 = str2double(get(handles.cn21_input,'String'));
dn21 = str2double(get(handles.dn21_input,'String'));
un22
bn22
cn22
dn22
=
=
=
=
str2double(get(handles.un22,'String'));
str2double(get(handles.bn22,'String'));
str2double(get(handles.cn22,'String'));
str2double(get(handles.dn22,'String'));
fd = str2double(get(handles.filtrodatos,'String'));
polnum = str2double(get(handles.polnum,'String'));
slcauchy=get(handles.slcauchy,'Value');
Pagina: 4 de 72
Anexo
PFC
slsellmeier=get(handles.slsellmeier,'Value');
lleguir=get(handles.loaddates,'Value');
n21Re = str2double(get(handles.n21_input,'String'));
k21 = str2double(get(handles.k21_input,'String'));
n21=n21Re+i*k21;
h21 = str2double(get(handles.h21_input,'String'));
h21=h21*1e-9;
n31Re = str2double(get(handles.n31_input,'String'));
k31 = str2double(get(handles.k31_input,'String'));
n31=n31Re+i*k31;
h31 = str2double(get(handles.h31_input,'String'));
h31=h31*1e-9;
N1 = str2double(get(handles.N1_input,'String'));
n22Re = str2double(get(handles.n22_input,'String'));
k22 = str2double(get(handles.k22_input,'String'));
n22=n22Re+i*k22;
h22 = str2double(get(handles.h22_input,'String'));
h22=h22*1e-9;
n32Re = str2double(get(handles.n32_input,'String'));
k32 = str2double(get(handles.k32_input,'String'));
n32=n32Re+i*k32;
h32 = str2double(get(handles.h32_input,'String'));
h32=h32*1e-9;
N2 = str2double(get(handles.N2_input,'String'));
n23Re = str2double(get(handles.n23_input,'String'));
k23 = str2double(get(handles.k23_input,'String'));
n23=n23Re+i*k23;
h23 = str2double(get(handles.h23_input,'String'));
h23=h23*1e-9;
n33Re = str2double(get(handles.n33_input,'String'));
k33 = str2double(get(handles.k33_input,'String'));
n33=n33Re+i*k33;
h33 = str2double(get(handles.h33_input,'String'));
h33=h33*1e-9;
N3 = str2double(get(handles.N3_input,'String'));
lambdai = str2double(get(handles.lambdai_input,'String'));
lambdainicial=lambdai;
lambdai=lambdai*1e-9;
lambdaf = str2double(get(handles.lambdaf_input,'String'));
lambdafinal=lambdaf;
lambdaf=lambdaf*1e-9;
angle = str2double(get(handles.angle_input,'String'));
n1 = str2double(get(handles.nambient_input,'String'));
ns = str2double(get(handles.nsubs_input,'String'));
step = str2double(get(handles.step_input,'String'));
stepini=step;
step=step*1e-9;
%inicialitzar variables matrius
file=[];
pathname=[];
Pagina: 5 de 72
Anexo
PFC
%Llegir les dades en un fitxer de text
if lleguir==1
[col1,col2]=lectura;
end
%modificacion del programa principal para la realizacion de la
grafica
%de la n(lambda) en funcion de las variables A B i C.
if (slcauchy==1)
[matriun21,matriun21teorica,matriun22teorica]=calcularncauchy(fd,col1,
col2,un21,bn21,cn21,dn21,un22,bn22,cn22,dn22);
axes(handles.NLAMaxes)
%figure(7);
hold on;
plot(matriun21teorica(:,1),matriun21teorica(:,2));
xlabel('\lambda (nm)')
set(handles.NLAMaxes,'XMinorTick','on');
set(handles.NLAMaxes,'YMinorTick','on');
set(handles.NLAMaxes,'XLimMode','manual');
set(handles.NLAMaxes,'XLim',[(lambdai/1e-9) (lambdaf/1e-9)]);
set(handles.NLAMaxes,'YLimMode','auto');
%set(handles.NLAMaxes,'YLim',[0 0.5]);
n21= matriun21teorica(1,2);
grid on
hold off;
axes(handles.NLAMaxes)
hold on;
plot(matriun22teorica(:,1),matriun22teorica(:,2));
xlabel('\lambda (nm)')
set(handles.NLAMaxes,'XMinorTick','on');
set(handles.NLAMaxes,'YMinorTick','on');
set(handles.NLAMaxes,'XLimMode','manual');
set(handles.NLAMaxes,'XLim',[(lambdai/1e-9) (lambdaf/1e-9)]);
set(handles.NLAMaxes,'YLimMode','auto');
%set(handles.NLAMaxes,'YLim',[0 0.5]);
grid on
hold off;
end
if (slsellmeier==1)
[matriun21,matriun21teorica,matriun22teorica]=calcularnsellmeier(fd,co
l1,col2,un21,bn21,cn21,dn21,un22,bn22,cn22,dn22);
%figure(7);
axes(handles.NLAMaxes)
hold on;
plot(matriun21teorica(:,1),matriun21teorica(:,2));
xlabel('\lambda (nm)')
set(handles.NLAMaxes,'XMinorTick','on');
set(handles.NLAMaxes,'YMinorTick','on');
set(handles.NLAMaxes,'XLimMode','manual');
set(handles.NLAMaxes,'XLim',[(lambdai/1e-9) (lambdaf/1e-9)]);
set(handles.NLAMaxes,'YLimMode','auto');
%set(handles.NLAMaxes,'YLim',[0 0.5]);
grid on
hold off;
axes(handles.NLAMaxes)
hold on;
plot(matriun22teorica(:,1),matriun22teorica(:,2));
xlabel('\lambda (nm)')
set(handles.NLAMaxes,'XMinorTick','on');
Pagina: 6 de 72
Anexo
PFC
set(handles.NLAMaxes,'YMinorTick','on');
set(handles.NLAMaxes,'XLimMode','manual');
set(handles.NLAMaxes,'XLim',[(lambdai/1e-9) (lambdaf/1e-9)]);
set(handles.NLAMaxes,'YLimMode','auto');
%set(handles.NLAMaxes,'YLim',[0 0.5]);
grid on
hold off;
n21= matriun21teorica(1,2);
end
%Calcul del desfas optic produit en funcio de d el espesor de la
capa
for h=1:1:length(matriun21)
phi1=angle*pi/180; %angle incidencia
phi2=asin((n1/matriun21teorica(h,2))*(sin(phi1)));
p2=n21*cos(phi2);
k2x=(2*pi*matriun21teorica(h,2)*cos(phi2))/(1E-9*matriun21(h,1));
tet2(h)=k2x*h21;
end
%nestruc=str2double(get(handles.nestruc_input,'String'))
nestruc=handles.nestruc;
rugoso=zeros(1,nestruc);
p1=[n21 h21 n31 h31 N1];
p2=[n22 h22 n32 h32 N2];
p3=[n23 h23 n33 h33 N3];
Parametres=zeros(nestruc,5);
switch (nestruc)
case 1
Parametres=[p1];
case 2
Parametres=[p1;p2];
case 3
Parametres=[p1;p2;p3];
otherwise,
r=sprintf('3 is the maximum number of structures ')
end
p1=n1*cos(phi1);
D1M=[cos(phi1) cos(phi1);n1 -n1];
D1E=[1 1;p1 -p1];
phis=asin((n1/ns)*(sin(phi1)));
ps=ns*cos(phis);
DsM=[cos(phis) cos(phis);ns -ns];
DsE=[1 1;ps -ps];
%Ja es tenen tots els paràmetres per al càlcul de MultiYeh
step = str2double(get(handles.step_input,'String'));
step=step*1e-9;
lnostra=lambdai:step:lambdaf;
long=length(lnostra);
if lleguir==1
long=length(matriun21);
end
Pagina: 7 de 72
Anexo
PFC
%Mira si n es variable i en cas de que ho sigui carrega la matriu
de
%valors de n en funcio de lambda
var21=handles.var_n21;
var31=handles.var_n31;
var22=handles.var_n22;
var32=handles.var_n32;
var23=handles.var_n23;
var33=handles.var_n33;
if var21==1
if (slcauchy==0)|(slsellmeier==0)&(polnum==1)
matriun21data=handles.data_n21;
for h=1:1:length(matriun21data)/fd
matriun21teorica(h,1)=matriun21data(h,1); %lambda
matriun21teorica(h,2)=matriun21data(h*fd,2); %n
matriun21teorica(h,3)=matriun21data(h*fd,3); %ik
end
for h=1:1:length(matriun21data)
phi1=angle*pi/180; %angle incidencia
phi2=asin((n1/matriun21teorica(h,2))*(sin(phi1)));
p2=n21*cos(phi2);
k2x=(2*pi*matriun21teorica(h,2)*cos(phi2))/(1E9*matriun21data(h,1));
tet2(h)=k2x*h21;
end
end
end
if var31==1
if (slcauchy==0)|(slsellmeier==0)&(polnum==2)
matriun31=handles.data_n31;
end
end
if var22==1
matriun22=handles.data_n22;
end
if var32==1
matriun32=handles.data_n32;
end
if var23==1
matriun23=handles.data_n23;
end
if var33==1
matriun33=handles.data_n33;
end
%****************************************************
% Càlcul de la transmissió i reflexió a partir de les matrius
%*****************************************************
[RE,TE,RM,TM]=
calculdetransmissioireflexio(Parametres,lnostra,long,lleguir,matriun21
,D1M,var21,slcauchy,matriun21teorica,matriun22teorica,matriun31,matriu
n22,var22,var32,var31,nestruc,var33,matriun33,rugoso,phi1,DsM,ns,phis,
n1,D1E,DsE,var23);
if lleguir==1
[x,RE,TE,RM,TM]=
fminquad(Parametres,lnostra,long,lleguir,matriun21,D1M,var21,slcauchy,
matriun21teorica,matriun22teorica,matriun31,matriun22,var22,var32,var3
Pagina: 8 de 72
Anexo
PFC
1,nestruc,var33,matriun33,rugoso,phi1,DsM,ns,phis,n1,D1E,DsE,RE,TE,RM,
TM,var23,polnum);
set(handles.un21_input,'string',un21);
set(handles.bn21_input,'string',bn21);
set(handles.cn21_input,'string',cn21);
set(handles.dn21_input,'string',dn21);
set(handles.un22,'string',un22);
set(handles.bn22,'string',bn22);
set(handles.cn22,'string',cn22);
set(handles.dn22,'string',dn22);
set(handles.h21_input,'string',h21*1E9);
axes(handles.NLAMaxes)
hold on;
plot(matriun21teorica(:,1),matriun21teorica(:,2),'m');
hold off;
fi2=(RE')-(matriun21(:,2));
errorlin=median(fi2)
set(handles.error,'string',errorlin);
axes(handles.ERRORaxes)
hold on;
plot(fi2);
hold off;
end
% Create TE plot
valor=handles.DataP;
axes(handles.TEaxes)
switch valor
case 2
plot(lnostra/1e-9,TE,'r');
legend('T');
case 3
plot(lnostra/1e-9,RE,lnostra/1e-9,TE,'r');
legend('R','T')
case 4
AE=1-RE-TE;
plot(lnostra/1e-9,AE,'g');
legend('A')
case 5
AE=1-RE-TE;
plot(lnostra/1e-9,RE,lnostra/1e-9,AE,'g');
legend('R','A')
case 6
AE=1-RE-TE;
plot(lnostra/1e-9,TE,'r',lnostra/1e-9,AE,'g');
legend('T','A')
case 7
AE=1-RE-TE;
plot(lnostra/1e-9,RE,lnostra/1e-9,TE,'r',lnostra/1e9,AE,'g');
legend('R','T','A')
otherwise,
if lleguir ==0
plot(lnostra/1e-9,RE,'b');
legend('R');
else
plot(matriun21(:,1),RE,'b')
legend('R');
hold on;
plot(matriun21(:,1),matriun21(:,2),'m')
Pagina: 9 de 72
Anexo
PFC
legend('R');
hold off;
end
end
xlabel('\lambda (nm)')
% title('TE');
set(handles.TEaxes,'XMinorTick','on');
set(handles.TEaxes,'YMinorTick','on');
set(handles.TEaxes,'XLimMode','manual');
set(handles.TEaxes,'XLim',[(lambdai/1e-9) (lambdaf/1e-9)]);
set(handles.TEaxes,'YLimMode','auto');
%set(handles.TEaxes,'YLim',[0 0.5]);
grid on
% Create TM plot
axes(handles.TMaxes)
switch valor
case 2
plot(lnostra/1e-9,TM,'r');
legend('T');
case 3
plot(lnostra/1e-9,RM,lnostra/1e-9,TM,'r');
legend('R','T')
case 4
AM=1-RM-TM;
plot(lnostra/1e-9,AM,'g');
legend('A')
case 5
AM=1-RM-TM;
plot(lnostra/1e-9,RM,lnostra/1e-9,AM,'g');
legend('R','A')
case 6
AM=1-RM-TM;
plot(lnostra/1e-9,TM,'r',lnostra/1e-9,AM,'g');
legend('T','A')
case 7
AM=1-RM-TM;
plot(lnostra/1e-9,RM,lnostra/1e-9,TM,'r',lnostra/1e9,AM,'g');
legend('R','T','A')
otherwise,
if lleguir ==0
plot(lnostra/1e-9,RM,'b');
legend('R');
else
plot(matriun21(:,1),RM,'b')
legend('R');
hold on;
plot(matriun21(:,1),matriun21(:,2),'m')
legend('R');
hold off;
end
end
xlabel('\lambda (nm)')
%title('TM');
%
plot(t,x)
set(handles.TMaxes,'XMinorTick','on');
set(handles.TMaxes,'YMinorTick','on');
set(handles.TMaxes,'XLimMode','manual');
Pagina: 10 de 72
Anexo
PFC
set(handles.TMaxes,'XLim',[(lambdai/1e-9) (lambdaf/1e-9)]);
set(handles.TMaxes,'YLimMode','auto');
%set(handles.TMaxes,'YLim',[0 0.5]);
grid on
%Figura apart o no
TEaparte = get(handles.TEsep,'Value');
TMaparte = get(handles.TMsep,'Value');
if (TEaparte==1) & (TMaparte==1)
figure;
subplot(2,1,1);
switch valor
case 2
plot(lnostra/1e-9,TE,'r');
legend('T');
case 3
plot(lnostra/1e-9,RE,lnostra/1e-9,TE,'r');
legend('R','T')
case 4
AE=1-RE-TE;
plot(lnostra/1e-9,AE,'g');
legend('A')
case 5
AE=1-RE-TE;
plot(lnostra/1e-9,RE,lnostra/1e-9,AE,'g');
legend('R','A')
case 6
AE=1-RE-TE;
plot(lnostra/1e-9,TE,'r',lnostra/1e-9,AE,'g');
legend('T','A')
case 7
AE=1-RE-TE;
plot(lnostra/1e-9,RE,lnostra/1e-9,TE,'r',lnostra/1e9,AE,'g');
legend('R','T','A')
otherwise,
if lleguir ==0
plot(lnostra/1e-9,RE,'b');
else
plot(matriun21(:,1),RE,'b')
plot(matriun21(:,1),matriun21(:,2),'m')
end
legend('R');
end
xlabel('Wavelength (nm)');
ylabel('Reflectivity');
title('TE')
grid on;
axis([lambdai/1e-9 lambdaf/1e-9 0 1.05]);
%
ttext=sprintf('nH=%0.5g nL=%0.5g hH=%0.5g hL=%0.5g
N=%0.5g',n21,n31,h21,h31,N1);
%
title(ttext);
subplot(2,1,2);
switch valor
case 2
plot(lnostra/1e-9,TM,'r');
legend('T');
case 3
plot(lnostra/1e-9,RM,lnostra/1e-9,TM,'r');
legend('R','T')
Pagina: 11 de 72
Anexo
PFC
case 4
AM=1-RM-TM;
plot(lnostra/1e-9,AM,'g');
legend('A')
case 5
AM=1-RM-TM;
plot(lnostra/1e-9,RM,lnostra/1e-9,AM,'g');
legend('R','A')
case 6
AM=1-RM-TM;
plot(lnostra/1e-9,TM,'r',lnostra/1e-9,AM,'g');
legend('T','A')
case 7
AM=1-RM-TM;
plot(lnostra/1e-9,RM,lnostra/1e-9,TM,'r',lnostra/1e9,AM,'g');
legend('R','T','A')
otherwise,
plot(lnostra/1e-9,RM,'b');
legend('R');
end
xlabel('Wavelength (nm)');
ylabel('Reflectivity');
grid on;
title('TM');
axis([lambdai/1e-9 lambdaf/1e-9 0 1.05]);
elseif (TEaparte==1)
figure
switch valor
case 2
plot(lnostra/1e-9,TE,'r');
legend('T');
case 3
plot(lnostra/1e-9,RE,lnostra/1e-9,TE,'r');
legend('R','T')
case 4
AE=1-RE-TE;
plot(lnostra/1e-9,AE,'g');
legend('A')
case 5
AE=1-RE-TE;
plot(lnostra/1e-9,RE,lnostra/1e-9,AE,'g');
legend('R','A')
case 6
AE=1-RE-TE;
plot(lnostra/1e-9,TE,'r',lnostra/1e-9,AE,'g');
legend('T','A')
case 7
AE=1-RE-TE;
plot(lnostra/1e-9,RE,lnostra/1e-9,TE,'r',lnostra/1e9,AE,'g');
legend('R','T','A')
otherwise,
if lleguir ==0
plot(lnostra/1e-9,RE,'b');
else
plot(matriun21(:,1),RE,'b')
plot(matriun21(:,1),matriun21(:,2),'m')
end
legend('R');
Pagina: 12 de 72
Anexo
PFC
end
xlabel('Wavelength (nm)');
ylabel('Reflectivity');
title('TE');
grid on;
axis([lambdai/1e-9 lambdaf/1e-9 0 1.05]);
figure
wavenumber=1e7./(lnostra/1e-9);
plot(wavenumber,RE,'r');
xlabel('wavenumber');
ylabel('Reflectivity');
grid on;
axis([min(wavenumber) max(wavenumber) 0 1.05]);
elseif (TMaparte==1)
figure
switch valor
case 2
plot(lnostra/1e-9,TM,'r');
legend('T');
case 3
plot(lnostra/1e-9,RM,lnostra/1e-9,TM,'r');
legend('R','T')
case 4
AM=1-RM-TM;
plot(lnostra/1e-9,AM,'g');
legend('A')
case 5
AM=1-RM-TM;
plot(lnostra/1e-9,RM,lnostra/1e-9,AM,'g');
legend('R','A')
case 6
AM=1-RM-TM;
plot(lnostra/1e-9,TM,'r',lnostra/1e-9,AM,'g');
legend('T','A')
case 7
AM=1-RM-TM;
plot(lnostra/1e-9,RM,lnostra/1e-9,TM,'r',lnostra/1e9,AM,'g');
legend('R','T','A')
otherwise,
plot(lnostra/1e-9,RM,'b');
legend('R');
end
xlabel('Wavelength (nm)');
ylabel('Reflectivity');
title('TM');
grid on;
axis([lambdai/1e-9 lambdaf/1e-9 0 1.05]);
end
%
%
%
%
%Fa una figura apart amb la suma de les reflectivitats de TE i TM
sumaTETM = get(handles.sumaTETM_check,'Value');
if sumaTETM==1
suma=0.5*RE+0.5*RM;
FigAparte = get(handles.separateFig_check,'Value');
if FigAparte==1
figure
%
end
wavenum=1e7./(lnostra/1e-9);
plot(wavenum,suma);
Pagina: 13 de 72
Anexo
%
%
PFC
xlabel('Wavenumber (cm-1)');
plot(lnostra/1e-9,suma);
xlabel('Wavelength (nm)');
ylabel('R average');
title('0.5TE+0.5TM');
grid on;
axis([min(wavenum) max(wavenum) 0 1.05]);
axis([lambdai/1e-9 lambdaf/1e-9 0 1.05]);
end
cabecera = get(handles.cabecera_input,'Value');
escriure = get(handles.exportData,'Value');
%Escriu les dades en un fitxer de text
if (escriure==1)
escriuredades(lleguir,lnostra,cabecera,valor,matriun21,matriun21teoric
a,RE,n23,h23,n33,h33,N3,var21,var31,nestruc,h21,h31,N1,n31,TE,TM,RM);
end
% --- Executes during object creation, after setting all properties.
function nambient_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to nambient_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function nambient_input_Callback(hObject, eventdata, handles)
% hObject
handle to nambient_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of nambient_input as
text
%
str2double(get(hObject,'String')) returns contents of
nambient_input as a double
% --- Executes during object creation, after setting all properties.
function nsubs_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to nsubs_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
Pagina: 14 de 72
Anexo
PFC
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function nsubs_input_Callback(hObject, eventdata, handles)
% hObject
handle to nsubs_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of nsubs_input as text
%
str2double(get(hObject,'String')) returns contents of
nsubs_input as a double
% --- Executes during object creation, after setting all properties.
function angle_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to angle_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function angle_input_Callback(hObject, eventdata, handles)
% hObject
handle to angle_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of angle_input as text
%
str2double(get(hObject,'String')) returns contents of
angle_input as a double
% --- Executes during object creation, after setting all properties.
function lambdai_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to lambdai_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
Pagina: 15 de 72
Anexo
PFC
end
function lambdai_input_Callback(hObject, eventdata, handles)
% hObject
handle to lambdai_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of lambdai_input as
text
%
str2double(get(hObject,'String')) returns contents of
lambdai_input as a double
% --- Executes during object creation, after setting all properties.
function lambdaf_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to lambdaf_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function lambdaf_input_Callback(hObject, eventdata, handles)
% hObject
handle to lambdaf_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of lambdaf_input as
text
%
str2double(get(hObject,'String')) returns contents of
lambdaf_input as a double
% --- Executes during object creation, after setting all properties.
function DataP_CreateFcn(hObject, eventdata, handles)
% hObject
handle to DataP (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
Pagina: 16 de 72
Anexo
PFC
% --- Executes on selection change in DataP.
function DataP_Callback(hObject, eventdata, handles)
% hObject
handle to DataP (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns DataP contents as
cell array
%
contents{get(hObject,'Value')} returns selected item from
DataP
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case 'R'
handles.DataP=1;
case 'T'
handles.DataP=2;
case 'R and T'
handles.DataP=3;
case 'A'
handles.DataP=4;
case 'R and A'
handles.DataP=5;
case 'T and A'
handles.DataP=6;
case 'R,T and A'
handles.DataP=7;
end
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function n21_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function un21_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
Pagina: 17 de 72
Anexo
PFC
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function n21_input_Callback(hObject, eventdata, handles)
% hObject
handle to n21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of n21_input as text
%
str2double(get(hObject,'String')) returns contents of
n21_input as a double
function un21_input_Callback(hObject, eventdata, handles)
% hObject
handle to n21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of n21_input as text
%
str2double(get(hObject,'String')) returns contents of
n21_input as a double
% --- Executes during object creation, after setting all properties.
function h21_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to h21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function h21_input_Callback(hObject, eventdata, handles)
% hObject
handle to h21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of h21_input as text
%
str2double(get(hObject,'String')) returns contents of
h21_input as a double
% --- Executes during object creation, after setting all properties.
function n31_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n31_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
Pagina: 18 de 72
Anexo
PFC
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function n31_input_Callback(hObject, eventdata, handles)
% hObject
handle to n31_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of n31_input as text
%
str2double(get(hObject,'String')) returns contents of
n31_input as a double
% --- Executes during object creation, after setting all properties.
function N1_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to N1_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function N1_input_Callback(hObject, eventdata, handles)
% hObject
handle to N1_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of N1_input as text
%
str2double(get(hObject,'String')) returns contents of
N1_input as a double
% --- Executes during object creation, after setting all properties.
function h31_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to h31_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
Pagina: 19 de 72
Anexo
PFC
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function h31_input_Callback(hObject, eventdata, handles)
% hObject
handle to h31_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of h31_input as text
%
str2double(get(hObject,'String')) returns contents of
h31_input as a double
% --- Executes during object creation, after setting all properties.
function n21varpop_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n21varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
% --- Executes on selection change in n21varpop_input.
function n21varpop_input_Callback(hObject, eventdata, handles)
% hObject
handle to n21varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case 'No selection'
handles.var_n21=0;
set(handles.n21_input,'String','1');
set(handles.k21_input,'String','0');
case 'Ag'
handles.data_n21 = IndexnAg(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='Ag';
case 'Al'
handles.data_n21 = IndexnAl(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='Al';
Pagina: 20 de 72
Anexo
PFC
case 'Au'
handles.data_n21 = IndexnAu(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='Au';
case 'Cu'
handles.data_n21 = IndexnCu(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='Cu';
case 'H2O'
handles.data_n21 = IndexnH2O(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='H2O';
case 'MgF2'
handles.data_n21 = IndexnMgF2(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='MgF2';
case 'Ni'
handles.data_n21 = IndexnNi(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='Ni';
case 'Si3N4'
handles.data_n21 = IndexnSi3N4(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='Si3N4';
case 'SiO2'
handles.data_n21 = IndexnSiO2(1);
handles.var_n21=1;
set(handles.n21_input,'String','____');
set(handles.k21_input,'String','____');
handles.n21string='SiO2';
otherwise,
x=10000;
end
guidata(hObject,handles)
% Hints: contents = get(hObject,'String') returns n21varpop_input
contents as cell array
%
contents{get(hObject,'Value')} returns selected item from
n21varpop_input
% --- Executes during object creation, after setting all properties.
function n31varpop_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n31varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
Pagina: 21 de 72
Anexo
PFC
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
% --- Executes on selection change in n31varpop_input.
function n31varpop_input_Callback(hObject, eventdata, handles)
% hObject
handle to n31varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case 'No selection'
handles.var_n31=0;
set(handles.n31_input,'String','1');
set(handles.k31_input,'String','0');
case 'Ag'
handles.data_n31 = IndexnAg(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='Ag';
case 'Al'
handles.data_n31 = IndexnAl(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='Al';
case 'Au'
handles.data_n31 = IndexnAu(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='Au';
case 'Cu'
handles.data_n31 = IndexnCu(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='Cu';
case 'H2O'
handles.data_n31 = IndexnH2O(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='H2O';
case 'MgF2'
handles.data_n31 = IndexnMgF2(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='MgF2';
case 'Ni'
Pagina: 22 de 72
Anexo
PFC
handles.data_n31 = IndexnNi(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='Ni';
case 'Si3N4'
handles.data_n31 = IndexnSi3N4(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='Si3N4';
case 'SiO2'
handles.data_n31 = IndexnSiO2(1);
handles.var_n31=1;
set(handles.n31_input,'String','____');
set(handles.k31_input,'String','____');
handles.n31string='SiO2';
end
guidata(hObject,handles)
% Hints: contents = get(hObject,'String') returns n31varpop_input
contents as cell array
%
contents{get(hObject,'Value')} returns selected item from
n31varpop_input
% --- Executes during object creation, after setting all properties.
function n22_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n22_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function n22_input_Callback(hObject, eventdata, handles)
% hObject
handle to n22_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of n22_input as text
%
str2double(get(hObject,'String')) returns contents of
n22_input as a double
% --- Executes during object creation, after setting all properties.
function h22_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to h22_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
Pagina: 23 de 72
Anexo
PFC
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function h22_input_Callback(hObject, eventdata, handles)
% hObject
handle to h22_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of h22_input as text
%
str2double(get(hObject,'String')) returns contents of
h22_input as a double
% --- Executes during object creation, after setting all properties.
function n32_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n32_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function n32_input_Callback(hObject, eventdata, handles)
% hObject
handle to n32_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of n32_input as text
%
str2double(get(hObject,'String')) returns contents of
n32_input as a double
% --- Executes during object creation, after setting all properties.
function N2_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to N2_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
Pagina: 24 de 72
Anexo
PFC
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function N2_input_Callback(hObject, eventdata, handles)
% hObject
handle to N2_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of N2_input as text
%
str2double(get(hObject,'String')) returns contents of
N2_input as a double
% --- Executes during object creation, after setting all properties.
function h32_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to h32_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function h32_input_Callback(hObject, eventdata, handles)
% hObject
handle to h32_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of h32_input as text
%
str2double(get(hObject,'String')) returns contents of
h32_input as a double
% --- Executes during object creation, after setting all properties.
function n22varpop_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n22varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
Pagina: 25 de 72
Anexo
PFC
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
% --- Executes on selection change in n22varpop_input.
function n22varpop_input_Callback(hObject, eventdata, handles)
% hObject
handle to n22varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns n22varpop_input
contents as cell array
%
contents{get(hObject,'Value')} returns selected item from
n22varpop_input
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case 'No selection'
handles.var_n22=0;
set(handles.n22_input,'String','1');
set(handles.k22_input,'String','0');
case 'Ag'
handles.data_n22 = IndexnAg(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='Ag';
case 'Al'
handles.data_n22 = IndexnAl(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='Al';
case 'Au'
handles.data_n22 = IndexnAu(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='Au';
case 'Cu'
handles.data_n22 = IndexnCu(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='Cu';
case 'H2O'
handles.data_n22 = IndexnH2O(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='H2O';
case 'MgF2'
handles.data_n22 = IndexnMgF2(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='MgF2';
case 'Ni'
handles.data_n22 = IndexnNi(1);
Pagina: 26 de 72
Anexo
PFC
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='Ni';
case 'Si3N4'
handles.data_n22 = IndexnSi3N4(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='Si3N4';
case 'SiO2'
handles.data_n22 = IndexnSiO2(1);
handles.var_n22=1;
set(handles.n22_input,'String','____');
set(handles.k22_input,'String','____');
handles.n22string='SiO2';
otherwise,
x=10000;
end
guidata(hObject,handles)
% --- Executes during object creation, after setting all properties.
function n32varpop_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n32varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
% --- Executes on selection change in n32varpop_input.
function n32varpop_input_Callback(hObject, eventdata, handles)
% hObject
handle to n32varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case 'No selection'
handles.var_n32=0;
set(handles.n32_input,'String','1');
set(handles.k32_input,'String','0');
case 'Ag'
handles.data_n32 = IndexnAg(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='Ag';
case 'Al'
handles.data_n32 = IndexnAl(1);
handles.var_n32=1;
Pagina: 27 de 72
Anexo
PFC
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='Al';
case 'Au'
handles.data_n32 = IndexnAu(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='Au';
case 'Cu'
handles.data_n32 = IndexnCu(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='Cu';
case 'H2O'
handles.data_n32 = IndexnH2O(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='H2O';
case 'MgF2'
handles.data_n32 = IndexnMgF2(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='MgF2';
case 'Ni'
handles.data_n32 = IndexnNi(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='Ni';
case 'Si3N4'
handles.data_n32 = IndexnSi3N4(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='Si3N4';
case 'SiO2'
handles.data_n32 = IndexnSiO2(1);
handles.var_n32=1;
set(handles.n32_input,'String','____');
set(handles.k32_input,'String','____');
handles.n32string='SiO2';
otherwise,
x=10000;
end
guidata(hObject,handles)
% Hints: contents = get(hObject,'String') returns n32varpop_input
contents as cell array
%
contents{get(hObject,'Value')} returns selected item from
n32varpop_input
% --- Executes during object creation, after setting all properties.
function n23_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n23_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
Pagina: 28 de 72
Anexo
% handles
called
PFC
empty - handles not created until after all CreateFcns
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function n23_input_Callback(hObject, eventdata, handles)
% hObject
handle to n23_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of n23_input as text
%
str2double(get(hObject,'String')) returns contents of
n23_input as a double
% --- Executes during object creation, after setting all properties.
function h23_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to h23_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function h23_input_Callback(hObject, eventdata, handles)
% hObject
handle to h23_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of h23_input as text
%
str2double(get(hObject,'String')) returns contents of
h23_input as a double
% --- Executes during object creation, after setting all properties.
function n33_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n33_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
Pagina: 29 de 72
Anexo
PFC
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function n33_input_Callback(hObject, eventdata, handles)
% hObject
handle to n33_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of n33_input as text
%
str2double(get(hObject,'String')) returns contents of
n33_input as a double
% --- Executes during object creation, after setting all properties.
function N3_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to N3_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function N3_input_Callback(hObject, eventdata, handles)
% hObject
handle to N3_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of N3_input as text
%
str2double(get(hObject,'String')) returns contents of
N3_input as a double
% --- Executes during object creation, after setting all properties.
function h33_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to h33_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
Pagina: 30 de 72
Anexo
PFC
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function h33_input_Callback(hObject, eventdata, handles)
% hObject
handle to h33_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of h33_input as text
%
str2double(get(hObject,'String')) returns contents of
h33_input as a double
% --- Executes during object creation, after setting all properties.
function n23varpop_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n23varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
% --- Executes on selection change in n23varpop_input.
function n23varpop_input_Callback(hObject, eventdata, handles)
% hObject
handle to n23varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case 'No selection'
handles.var_n23=0;
set(handles.n23_input,'String','1');
set(handles.k23_input,'String','0');
case 'Ag'
handles.data_n23 = IndexnAg(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='Ag';
case 'Al'
handles.data_n23 = IndexnAl(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='Al';
Pagina: 31 de 72
Anexo
PFC
case 'Au'
handles.data_n23 = IndexnAu(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='Au';
case 'Cu'
handles.data_n23 = IndexnCu(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='Cu';
case 'H2O'
handles.data_n23 = IndexnH2O(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='H2O';
case 'MgF2'
handles.data_n23 = IndexnMgF2(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='MgF2';
case 'Ni'
handles.data_n23 = IndexnNi(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='Ni';
case 'Si3N4'
handles.data_n23 = IndexnSi3N4(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='Si3N4';
case 'SiO2'
handles.data_n23 = IndexnSiO2(1);
handles.var_n23=1;
set(handles.n23_input,'String','____');
set(handles.k23_input,'String','____');
handles.n23string='SiO2';
otherwise,
x=10000;
end
guidata(hObject,handles)
% Hints: contents = get(hObject,'String') returns n23varpop_input
contents as cell array
%
contents{get(hObject,'Value')} returns selected item from
n23varpop_input
% --- Executes during object creation, after setting all properties.
function n33varpop_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to n33varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: popupmenu controls usually have a white background on Windows.
Pagina: 32 de 72
Anexo
PFC
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
% --- Executes on selection change in n33varpop_input.
function n33varpop_input_Callback(hObject, eventdata, handles)
% hObject
handle to n33varpop_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case 'No selection'
handles.var_n33=0;
set(handles.n33_input,'String','1');
set(handles.k33_input,'String','0');
case 'Ag'
handles.data_n33 = IndexnAg(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='Ag';
case 'Al'
handles.data_n33 = IndexnAl(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='Al';
case 'Au'
handles.data_n33 = IndexnAu(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='Au';
case 'Cu'
handles.data_n33 = IndexnCu(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='Cu';
case 'H2O'
handles.data_n33 = IndexnH2O(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='H2O';
case 'MgF2'
handles.data_n33 = IndexnMgF2(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='MgF2';
case 'Ni'
handles.data_n33 = IndexnNi(1);
handles.var_n33=1;
Pagina: 33 de 72
Anexo
PFC
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='Ni';
case 'Si3N4'
handles.data_n33 = IndexnSi3N4(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='Si3N4';
case 'SiO2'
handles.data_n33 = IndexnSiO2(1);
handles.var_n33=1;
set(handles.n33_input,'String','____');
set(handles.k33_input,'String','____');
handles.n33string='SiO2';
otherwise,
x=10000;
end
guidata(hObject,handles)
% Hints: contents = get(hObject,'String') returns n33varpop_input
contents as cell array
%
contents{get(hObject,'Value')} returns selected item from
n33varpop_input
% --- Executes during object creation, after setting all properties.
function nestruc_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to nestruc_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: popupmenu controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
% --- Executes on selection change in nestruc_input.
function nestruc_input_Callback(hObject, eventdata, handles)
% hObject
handle to nestruc_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
val = get(hObject,'Value');
str = get(hObject, 'String');
switch str{val};
case '1'
handles.nestruc=1;
case '2'
handles.nestruc=2;
case '3'
handles.nestruc=3;
end
guidata(hObject,handles)
%nestruc= str2double(get(handles.nestruc_input,'String'))
Pagina: 34 de 72
Anexo
PFC
if handles.nestruc==1
set(handles.n22_input,'Visible','off');
set(handles.k22_input,'Visible','off');
set(handles.n32_input,'Visible','off');
set(handles.k32_input,'Visible','off');
set(handles.h22_input,'Visible','off');
set(handles.h32_input,'Visible','off');
set(handles.n22varpop_input,'Visible','off');
set(handles.n32varpop_input,'Visible','off');
set(handles.N2_input,'Visible','off');
set(handles.text76,'Visible','off');
set(handles.text77,'Visible','off');
set(handles.text78,'Visible','off');
set(handles.text79,'Visible','off');
set(handles.text80,'Visible','off');
set(handles.text81,'Visible','off');
set(handles.text82,'Visible','off');
set(handles.text83,'Visible','off');
set(handles.text123,'Visible','off');
set(handles.text124,'Visible','off');
set(handles.frame26,'Visible','off');
%
set(handles.rug22_check,'Visible','off');
% set(handles.rug32_check,'Visible','off');
% set(handles.nrug22_input,'Visible','off');
% set(handles.hrug22_input,'Visible','off');
% set(handles.nrug32_input,'Visible','off');
% set(handles.hrug32_input,'Visible','off');
% set(handles.text131,'Visible','off');
% set(handles.text133,'Visible','off');
% set(handles.text132,'Visible','off');
% set(handles.text134,'Visible','off');
%
%
%
%
%
%
%
%
%
%
set(handles.rug23_check,'Visible','off');
set(handles.rug33_check,'Visible','off');
set(handles.nrug23_input,'Visible','off');
set(handles.hrug23_input,'Visible','off');
set(handles.nrug33_input,'Visible','off');
set(handles.hrug33_input,'Visible','off');
set(handles.text135,'Visible','off');
set(handles.text137,'Visible','off');
set(handles.text136,'Visible','off');
set(handles.text138,'Visible','off');
set(handles.n23_input,'Visible','off');
set(handles.k23_input,'Visible','off');
set(handles.n33_input,'Visible','off');
set(handles.k33_input,'Visible','off');
set(handles.h23_input,'Visible','off');
set(handles.h33_input,'Visible','off');
set(handles.n23varpop_input,'Visible','off');
set(handles.n33varpop_input,'Visible','off');
set(handles.N3_input,'Visible','off');
set(handles.text84,'Visible','off');
set(handles.text85,'Visible','off');
set(handles.text86,'Visible','off');
set(handles.text87,'Visible','off');
set(handles.text88,'Visible','off');
set(handles.text89,'Visible','off');
set(handles.text108,'Visible','off');
set(handles.text115,'Visible','off');
set(handles.text125,'Visible','off');
Pagina: 35 de 72
Anexo
PFC
set(handles.text126,'Visible','off');
set(handles.frame21,'Visible','off');
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
% %
%
%
%
%
%
%
%
%
%
set(handles.Picl1,'Visible','on');
set(handles.Picl2,'Visible','on');
set(handles.Picl3,'Visible','on');
set(handles.Picl4,'Visible','on');
set(handles.Picl5,'Visible','on');
set(handles.Picl6,'Visible','on');
set(handles.Picl7,'Visible','on');
set(handles.Picl8,'Visible','on');
set(handles.Picl9,'Visible','on');
set(handles.Picl10,'Visible','on');
set(handles.Picl11,'Visible','on');
set(handles.Picl12,'Visible','on');
set(handles.Picl13,'Visible','on');
set(handles.Picl14,'Visible','on');
set(handles.Picl15,'Visible','on');
set(handles.Picl16,'Visible','on');
set(handles.Picl17,'Visible','on');
set(handles.Picl18,'Visible','on');
set(handles.Picl19,'Visible','on');
set(handles.Picl20,'Visible','on');
set(handles.Picl21,'Visible','on');
set(handles.Picnamb,'Visible','on');
set(handles.Picnsubs,'Visible','on');
set(handles.Pic1,'Visible','on');
set(handles.Pic2,'Visible','on');
set(handles.Pic3,'Visible','on');
set(handles.Pic4,'Visible','on');
set(handles.Pic5,'Visible','on');
set(handles.Pic6,'Visible','on');
set(handles.Pic7,'Visible','on');
set(handles.Pic8,'Visible','on');
set(handles.Pic9,'Visible','on');
set(handles.Pic10,'Visible','on');
set(handles.Pic11,'Visible','on');
set(handles.Pic12,'Visible','on');
set(handles.Pic13,'Visible','on');
set(handles.Pic14,'Visible','on');
set(handles.Pic15,'Visible','on');
set(handles.Pic16,'Visible','on');
set(handles.Pictit,'Visible','on');
end
if handles.nestruc==2
set(handles.n22_input,'Visible','on');
set(handles.k22_input,'Visible','on');
set(handles.n32_input,'Visible','on');
set(handles.k32_input,'Visible','on');
set(handles.h22_input,'Visible','on');
set(handles.h32_input,'Visible','on');
set(handles.n22varpop_input,'Visible','on');
set(handles.n32varpop_input,'Visible','on');
set(handles.N2_input,'Visible','on');
set(handles.text76,'Visible','on');
set(handles.text77,'Visible','on');
set(handles.text78,'Visible','on');
set(handles.text79,'Visible','on');
set(handles.text80,'Visible','on');
Pagina: 36 de 72
Anexo
PFC
set(handles.text81,'Visible','on');
set(handles.text82,'Visible','on');
set(handles.text83,'Visible','on');
set(handles.text123,'Visible','on');
set(handles.text124,'Visible','on');
set(handles.frame26,'Visible','on');
%
%
%
%
%
%
%
%
%
%
%
%
%
set(handles.rug22_check,'Visible','on');
set(handles.rug32_check,'Visible','on');
set(handles.rug23_check,'Visible','off');
set(handles.rug33_check,'Visible','off');
set(handles.nrug23_input,'Visible','off');
set(handles.hrug23_input,'Visible','off');
set(handles.nrug33_input,'Visible','off');
set(handles.hrug33_input,'Visible','off');
set(handles.text135,'Visible','off');
set(handles.text137,'Visible','off');
set(handles.text136,'Visible','off');
set(handles.text138,'Visible','off');
set(handles.n23_input,'Visible','off');
set(handles.k23_input,'Visible','off');
set(handles.n33_input,'Visible','off');
set(handles.k33_input,'Visible','off');
set(handles.h23_input,'Visible','off');
set(handles.h33_input,'Visible','off');
set(handles.n23varpop_input,'Visible','off');
set(handles.n33varpop_input,'Visible','off');
set(handles.N3_input,'Visible','off');
set(handles.text84,'Visible','off');
set(handles.text85,'Visible','off');
set(handles.text86,'Visible','off');
set(handles.text87,'Visible','off');
set(handles.text88,'Visible','off');
set(handles.text89,'Visible','off');
set(handles.text108,'Visible','off');
set(handles.text115,'Visible','off');
set(handles.text125,'Visible','off');
set(handles.text126,'Visible','off');
set(handles.frame21,'Visible','off');
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
set(handles.Picl1,'Visible','off');
set(handles.Picl2,'Visible','off');
set(handles.Picl3,'Visible','off');
set(handles.Picl4,'Visible','off');
set(handles.Picl5,'Visible','off');
set(handles.Picl6,'Visible','off');
set(handles.Picl7,'Visible','off');
set(handles.Picl8,'Visible','off');
set(handles.Picl9,'Visible','off');
set(handles.Picl10,'Visible','off');
set(handles.Picl11,'Visible','off');
set(handles.Picl12,'Visible','off');
set(handles.Picl13,'Visible','off');
set(handles.Picl14,'Visible','off');
set(handles.Picl15,'Visible','off');
set(handles.Picl16,'Visible','off');
set(handles.Picl17,'Visible','off');
set(handles.Picl18,'Visible','off');
set(handles.Picl19,'Visible','off');
Pagina: 37 de 72
Anexo
%
%
%
%
%
%
%
%
%
%
%
% %
%
%
%
%
%
%
%
%
%
end
PFC
set(handles.Picl20,'Visible','off');
set(handles.Picl21,'Visible','off');
set(handles.Picnamb,'Visible','off');
set(handles.Picnsubs,'Visible','off');
set(handles.Pic1,'Visible','off');
set(handles.Pic2,'Visible','off');
set(handles.Pic3,'Visible','off');
set(handles.Pic4,'Visible','off');
set(handles.Pic5,'Visible','off');
set(handles.Pic6,'Visible','off');
set(handles.Pic7,'Visible','off');
set(handles.Pic8,'Visible','off');
set(handles.Pic9,'Visible','off');
set(handles.Pic10,'Visible','off');
set(handles.Pic11,'Visible','off');
set(handles.Pic12,'Visible','off');
set(handles.Pic13,'Visible','off');
set(handles.Pic14,'Visible','off');
set(handles.Pic15,'Visible','off');
set(handles.Pic16,'Visible','off');
set(handles.Pictit,'Visible','off');
%end
if handles.nestruc==3
set(handles.n22_input,'Visible','on');
set(handles.k22_input,'Visible','on');
set(handles.n32_input,'Visible','on');
set(handles.k32_input,'Visible','on');
set(handles.h22_input,'Visible','on');
set(handles.h32_input,'Visible','on');
set(handles.n22varpop_input,'Visible','on');
set(handles.n32varpop_input,'Visible','on');
set(handles.N2_input,'Visible','on');
set(handles.text76,'Visible','on');
set(handles.text77,'Visible','on');
set(handles.text78,'Visible','on');
set(handles.text79,'Visible','on');
set(handles.text80,'Visible','on');
set(handles.text81,'Visible','on');
set(handles.text82,'Visible','on');
set(handles.text83,'Visible','on');
set(handles.text123,'Visible','on');
set(handles.text124,'Visible','on');
set(handles.frame26,'Visible','on');
%
%
%
%
%
set(handles.rug22_check,'Visible','on');
set(handles.rug32_check,'Visible','on');
set(handles.rug23_check,'Visible','on');
set(handles.rug33_check,'Visible','on');
set(handles.n23_input,'Visible','on');
set(handles.k23_input,'Visible','on');
set(handles.n33_input,'Visible','on');
set(handles.k33_input,'Visible','on');
set(handles.h23_input,'Visible','on');
set(handles.h33_input,'Visible','on');
set(handles.n23varpop_input,'Visible','on');
set(handles.n33varpop_input,'Visible','on');
Pagina: 38 de 72
Anexo
PFC
set(handles.N3_input,'Visible','on');
set(handles.text84,'Visible','on');
set(handles.text85,'Visible','on');
set(handles.text86,'Visible','on');
set(handles.text87,'Visible','on');
set(handles.text88,'Visible','on');
set(handles.text89,'Visible','on');
set(handles.text108,'Visible','on');
set(handles.text115,'Visible','on');
set(handles.text125,'Visible','on');
set(handles.text126,'Visible','on');
set(handles.frame21,'Visible','on');
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
% %
%
%
%
%
%
%
%
%
%
set(handles.Picl1,'Visible','off');
set(handles.Picl2,'Visible','off');
set(handles.Picl3,'Visible','off');
set(handles.Picl4,'Visible','off');
set(handles.Picl5,'Visible','off');
set(handles.Picl6,'Visible','off');
set(handles.Picl7,'Visible','off');
set(handles.Picl8,'Visible','off');
set(handles.Picl9,'Visible','off');
set(handles.Picl10,'Visible','off');
set(handles.Picl11,'Visible','off');
set(handles.Picl12,'Visible','off');
set(handles.Picl13,'Visible','off');
set(handles.Picl14,'Visible','off');
set(handles.Picl15,'Visible','off');
set(handles.Picl16,'Visible','off');
set(handles.Picl17,'Visible','off');
set(handles.Picl18,'Visible','off');
set(handles.Picl19,'Visible','off');
set(handles.Picl20,'Visible','off');
set(handles.Picl21,'Visible','off');
set(handles.Picnamb,'Visible','off');
set(handles.Picnsubs,'Visible','off');
set(handles.Pic1,'Visible','off');
set(handles.Pic2,'Visible','off');
set(handles.Pic3,'Visible','off');
set(handles.Pic4,'Visible','off');
set(handles.Pic5,'Visible','off');
set(handles.Pic6,'Visible','off');
set(handles.Pic7,'Visible','off');
set(handles.Pic8,'Visible','off');
set(handles.Pic9,'Visible','off');
set(handles.Pic10,'Visible','off');
set(handles.Pic11,'Visible','off');
set(handles.Pic12,'Visible','off');
set(handles.Pic13,'Visible','off');
set(handles.Pic14,'Visible','off');
set(handles.Pic15,'Visible','off');
set(handles.Pic16,'Visible','off');
set(handles.Pictit,'Visible','off');
end
guidata(hObject,handles)
% Hints: contents = get(hObject,'String') returns nestruc_input
contents as cell array
%
contents{get(hObject,'Value')} returns selected item from
nestruc_input
Pagina: 39 de 72
Anexo
PFC
% --- Executes on button press in TEsep.
function TEsep_Callback(hObject, eventdata, handles)
% hObject
handle to TEsep (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of TEsep
% --- Executes on button press in TMsep.
function TMsep_Callback(hObject, eventdata, handles)
% hObject
handle to TMsep (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of TMsep
% --- Executes during object creation, after setting all properties.
function step_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to step_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function step_input_Callback(hObject, eventdata, handles)
% hObject
handle to step_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of step_input as text
%
str2double(get(hObject,'String')) returns contents of
step_input as a double
% --- Executes on button press in exportData.
function exportData_Callback(hObject, eventdata, handles)
% hObject
handle to exportData (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of exportData
% --- Executes during object creation, after setting all properties.
function k21_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to k21_input (see GCBO)
Pagina: 40 de 72
Anexo
% eventdata
% handles
called
PFC
reserved - to be defined in a future version of MATLAB
empty - handles not created until after all CreateFcns
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function k21_input_Callback(hObject, eventdata, handles)
% hObject
handle to k21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of k21_input as text
%
str2double(get(hObject,'String')) returns contents of
k21_input as a double
% --- Executes during object creation, after setting all properties.
function k31_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to k31_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function k31_input_Callback(hObject, eventdata, handles)
% hObject
handle to k31_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of k31_input as text
%
str2double(get(hObject,'String')) returns contents of
k31_input as a double
% --- Executes during object creation, after setting all properties.
function k22_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to k22_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
Pagina: 41 de 72
Anexo
PFC
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function k22_input_Callback(hObject, eventdata, handles)
% hObject
handle to k22_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of k22_input as text
%
str2double(get(hObject,'String')) returns contents of
k22_input as a double
% --- Executes during object creation, after setting all properties.
function k32_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to k32_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function k32_input_Callback(hObject, eventdata, handles)
% hObject
handle to k32_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of k32_input as text
%
str2double(get(hObject,'String')) returns contents of
k32_input as a double
% --- Executes during object creation, after setting all properties.
function k23_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to k23_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
Pagina: 42 de 72
Anexo
PFC
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function k23_input_Callback(hObject, eventdata, handles)
% hObject
handle to k23_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of k23_input as text
%
str2double(get(hObject,'String')) returns contents of
k23_input as a double
% --- Executes during object creation, after setting all properties.
function k33_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to k33_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function k33_input_Callback(hObject, eventdata, handles)
% hObject
handle to k33_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of k33_input as text
%
str2double(get(hObject,'String')) returns contents of
k33_input as a double
%
%
%
%
%
%
%
%
%
%
%
%
--- Executes on button press in rug21_check.
function rug21_check_Callback(hObject, eventdata, handles)
% hObject
handle to rug21_check (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
ver= get(handles.rug21_check,'Value');
if ver==1
set(handles.nrug21_input,'Visible','on');
set(handles.hrug21_input,'Visible','on');
set(handles.text127,'Visible','on');
set(handles.text129,'Visible','on');
else
Pagina: 43 de 72
Anexo
%
%
%
%
%
PFC
set(handles.nrug21_input,'Visible','off');
set(handles.hrug21_input,'Visible','off');
set(handles.text127,'Visible','off');
set(handles.text129,'Visible','off');
end
% Hint: get(hObject,'Value') returns toggle state of rug21_check
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%
--- Executes on button press in rug31_check.
function rug31_check_Callback(hObject, eventdata, handles)
% hObject
handle to rug31_check (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
ver= get(handles.rug31_check,'Value');
if ver==1
set(handles.nrug31_input,'Visible','on');
set(handles.hrug31_input,'Visible','on');
set(handles.text128,'Visible','on');
set(handles.text130,'Visible','on');
else
set(handles.nrug31_input,'Visible','off');
set(handles.hrug31_input,'Visible','off');
set(handles.text128,'Visible','off');
set(handles.text130,'Visible','off');
end
Hint: get(hObject,'Value') returns toggle state of rug31_check
% --- Executes during object creation, after setting all properties.
% function nrug21_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to nrug21_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
% function nrug21_input_Callback(hObject, eventdata, handles)
% % hObject
handle to nrug21_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of nrug21_input as
text
% %
str2double(get(hObject,'String')) returns contents of
nrug21_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
Pagina: 44 de 72
Anexo
PFC
% function nrug31_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to nrug31_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function nrug31_input_Callback(hObject, eventdata, handles)
% % hObject
handle to nrug31_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of nrug31_input as
text
% %
str2double(get(hObject,'String')) returns contents of
nrug31_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function hrug21_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to hrug21_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function hrug21_input_Callback(hObject, eventdata, handles)
% % hObject
handle to hrug21_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of hrug21_input as
text
% %
str2double(get(hObject,'String')) returns contents of
hrug21_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function hrug31_input_CreateFcn(hObject, eventdata, handles)
Pagina: 45 de 72
Anexo
PFC
% % hObject
handle to hrug31_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function hrug31_input_Callback(hObject, eventdata, handles)
% % hObject
handle to hrug31_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of hrug31_input as
text
% %
str2double(get(hObject,'String')) returns contents of
hrug31_input as a double
%
%
% % --- Executes on button press in rug22_check.
% function rug22_check_Callback(hObject, eventdata, handles)
% % hObject
handle to rug22_check (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
% ver= get(handles.rug22_check,'Value');
% if ver==1
% set(handles.nrug22_input,'Visible','on');
% set(handles.hrug22_input,'Visible','on');
% set(handles.text131,'Visible','on');
% set(handles.text133,'Visible','on');
% else
% set(handles.nrug22_input,'Visible','off');
% set(handles.hrug22_input,'Visible','off');
% set(handles.text131,'Visible','off');
% set(handles.text133,'Visible','off');
% end
%
% % Hint: get(hObject,'Value') returns toggle state of rug22_check
%
%
% % --- Executes on button press in rug32_check.
% function rug32_check_Callback(hObject, eventdata, handles)
% % hObject
handle to rug32_check (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
% ver= get(handles.rug32_check,'Value');
% if ver==1
% set(handles.nrug32_input,'Visible','on');
% set(handles.hrug32_input,'Visible','on');
% set(handles.text132,'Visible','on');
% set(handles.text134,'Visible','on');
% else
Pagina: 46 de 72
Anexo
PFC
% set(handles.nrug32_input,'Visible','off');
% set(handles.hrug32_input,'Visible','off');
% set(handles.text132,'Visible','off');
% set(handles.text134,'Visible','off');
% end
%
% % Hint: get(hObject,'Value') returns toggle state of rug32_check
%
%
% % --- Executes during object creation, after setting all properties.
% function nrug22_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to nrug22_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function nrug22_input_Callback(hObject, eventdata, handles)
% % hObject
handle to nrug22_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of nrug22_input as
text
% %
str2double(get(hObject,'String')) returns contents of
nrug22_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function nrug32_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to nrug32_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function nrug32_input_Callback(hObject, eventdata, handles)
% % hObject
handle to nrug32_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
Pagina: 47 de 72
Anexo
PFC
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of nrug32_input as
text
% %
str2double(get(hObject,'String')) returns contents of
nrug32_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function hrug22_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to hrug22_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function hrug22_input_Callback(hObject, eventdata, handles)
% % hObject
handle to hrug22_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of hrug22_input as
text
% %
str2double(get(hObject,'String')) returns contents of
hrug22_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function hrug32_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to hrug32_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function hrug32_input_Callback(hObject, eventdata, handles)
% % hObject
handle to hrug32_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
Pagina: 48 de 72
Anexo
PFC
%
% % Hints: get(hObject,'String') returns contents of hrug32_input as
text
% %
str2double(get(hObject,'String')) returns contents of
hrug32_input as a double
%
%
% % --- Executes on button press in rug23_check.
% function rug23_check_Callback(hObject, eventdata, handles)
% % hObject
handle to rug23_check (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
% ver= get(handles.rug23_check,'Value');
% if ver==1
% set(handles.nrug23_input,'Visible','on');
% set(handles.hrug23_input,'Visible','on');
% set(handles.text135,'Visible','on');
% set(handles.text137,'Visible','on');
% else
% set(handles.nrug23_input,'Visible','off');
% set(handles.hrug23_input,'Visible','off');
% set(handles.text135,'Visible','off');
% set(handles.text137,'Visible','off');
% end
%
% % Hint: get(hObject,'Value') returns toggle state of rug23_check
%
%
% % --- Executes on button press in rug33_check.
% function rug33_check_Callback(hObject, eventdata, handles)
% % hObject
handle to rug33_check (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
% ver= get(handles.rug33_check,'Value');
% if ver==1
% set(handles.nrug33_input,'Visible','on');
% set(handles.hrug33_input,'Visible','on');
% set(handles.text136,'Visible','on');
% set(handles.text138,'Visible','on');
% else
% set(handles.nrug33_input,'Visible','off');
% set(handles.hrug33_input,'Visible','off');
% set(handles.text136,'Visible','off');
% set(handles.text138,'Visible','off');
% end
%
% % Hint: get(hObject,'Value') returns toggle state of rug33_check
%
%
% % --- Executes during object creation, after setting all properties.
% function nrug23_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to nrug23_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
Pagina: 49 de 72
Anexo
PFC
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function nrug23_input_Callback(hObject, eventdata, handles)
% % hObject
handle to nrug23_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of nrug23_input as
text
% %
str2double(get(hObject,'String')) returns contents of
nrug23_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function nrug33_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to nrug33_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function nrug33_input_Callback(hObject, eventdata, handles)
% % hObject
handle to nrug33_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of nrug33_input as
text
% %
str2double(get(hObject,'String')) returns contents of
nrug33_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function hrug23_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to hrug23_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
Pagina: 50 de 72
Anexo
PFC
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function hrug23_input_Callback(hObject, eventdata, handles)
% % hObject
handle to hrug23_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of hrug23_input as
text
% %
str2double(get(hObject,'String')) returns contents of
hrug23_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function hrug33_input_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to hrug33_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function hrug33_input_Callback(hObject, eventdata, handles)
% % hObject
handle to hrug33_input (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of hrug33_input as
text
% %
str2double(get(hObject,'String')) returns contents of
hrug33_input as a double
%
%
% % --- Executes during object creation, after setting all properties.
% function hrug33_CreateFcn(hObject, eventdata, handles)
% % hObject
handle to hrug33 (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
empty - handles not created until after all CreateFcns
called
%
% % Hint: edit controls usually have a white background on Windows.
% %
See ISPC and COMPUTER.
% if ispc
%
set(hObject,'BackgroundColor','white');
% else
Pagina: 51 de 72
Anexo
PFC
%
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
% end
%
%
%
% function hrug33_Callback(hObject, eventdata, handles)
% % hObject
handle to hrug33 (see GCBO)
% % eventdata reserved - to be defined in a future version of MATLAB
% % handles
structure with handles and user data (see GUIDATA)
%
% % Hints: get(hObject,'String') returns contents of hrug33 as text
% %
str2double(get(hObject,'String')) returns contents of
hrug33 as a double
% --- Executes on button press in sumaTETM_check.
function sumaTETM_check_Callback(hObject, eventdata, handles)
% hObject
handle to sumaTETM_check (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of sumaTETM_check
% --- Executes on button press in cabecera_input.
function cabecera_input_Callback(hObject, eventdata, handles)
% hObject
handle to cabecera_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of cabecera_input
% --- Executes during object creation, after setting all properties.
function bn21_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to bn21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function bn21_input_Callback(hObject, eventdata, handles)
% hObject
handle to bn21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of bn21_input as text
Pagina: 52 de 72
Anexo
PFC
%
str2double(get(hObject,'String')) returns contents of
bn21_input as a double
% --- Executes during object creation, after setting all properties.
function cn21_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to cn21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function cn21_input_Callback(hObject, eventdata, handles)
% hObject
handle to cn21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of cn21_input as text
%
str2double(get(hObject,'String')) returns contents of
cn21_input as a double
function slsellmeier_Callback(hObject, eventdata, handles)
% hObject
handle to slcauchy (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of slcauchy
% --- Executes on button press in slcauchy.
function slcauchy_Callback(hObject, eventdata, handles)
% hObject
handle to slcauchy (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of slcauchy
% --- Executes on button press in loaddates.
function loaddates_Callback(hObject, eventdata, handles)
% hObject
handle to loaddates (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hint: get(hObject,'Value') returns toggle state of loaddates
% --- Executes during object creation, after setting all properties.
function filtrodatos_CreateFcn(hObject, eventdata, handles)
% hObject
handle to filtrodatos (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
Pagina: 53 de 72
Anexo
% handles
called
PFC
empty - handles not created until after all CreateFcns
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function filtrodatos_Callback(hObject, eventdata, handles)
% hObject
handle to filtrodatos (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of filtrodatos as text
%
str2double(get(hObject,'String')) returns contents of
filtrodatos as a double
% --- Executes during object creation, after setting all properties.
function polnum_CreateFcn(hObject, eventdata, handles)
% hObject
handle to polnum (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function polnum_Callback(hObject, eventdata, handles)
% hObject
handle to polnum (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of polnum as text
%
str2double(get(hObject,'String')) returns contents of polnum
as a double
% --- Executes during object creation, after setting all properties.
function dn21_input_CreateFcn(hObject, eventdata, handles)
% hObject
handle to dn21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
Pagina: 54 de 72
Anexo
PFC
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function dn21_input_Callback(hObject, eventdata, handles)
% hObject
handle to dn21_input (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of dn21_input as text
%
str2double(get(hObject,'String')) returns contents of
dn21_input as a double
% --- Executes on button press in visualitzacio.
function visualitzacio_Callback(hObject, eventdata, handles)
% hObject
handle to visualitzacio (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
[col1,col2]=lectura;
figure(5);
hold on;
plot(col1,col2);
end
% --- Executes during object creation, after setting all properties.
function error_CreateFcn(hObject, eventdata, handles)
% hObject
handle to error (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function error_Callback(hObject, eventdata, handles)
% hObject
handle to error (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of error as text
%
str2double(get(hObject,'String')) returns contents of error
as a double
Pagina: 55 de 72
Anexo
PFC
% --- Executes during object creation, after setting all properties.
function un22_CreateFcn(hObject, eventdata, handles)
% hObject
handle to un22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function un22_Callback(hObject, eventdata, handles)
% hObject
handle to un22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of un22 as text
%
str2double(get(hObject,'String')) returns contents of un22 as
a double
% --- Executes during object creation, after setting all properties.
function bn22_CreateFcn(hObject, eventdata, handles)
% hObject
handle to bn22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function bn22_Callback(hObject, eventdata, handles)
% hObject
handle to bn22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of bn22 as text
%
str2double(get(hObject,'String')) returns contents of bn22 as
a double
% --- Executes during object creation, after setting all properties.
Pagina: 56 de 72
Anexo
PFC
function cn22_CreateFcn(hObject, eventdata, handles)
% hObject
handle to cn22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function cn22_Callback(hObject, eventdata, handles)
% hObject
handle to cn22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of cn22 as text
%
str2double(get(hObject,'String')) returns contents of cn22 as
a double
% --- Executes during object creation, after setting all properties.
function dn22_CreateFcn(hObject, eventdata, handles)
% hObject
handle to dn22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
empty - handles not created until after all CreateFcns
called
% Hint: edit controls usually have a white background on Windows.
%
See ISPC and COMPUTER.
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor')
);
end
function dn22_Callback(hObject, eventdata, handles)
% hObject
handle to dn22 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles
structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of dn22 as text
%
str2double(get(hObject,'String')) returns contents of dn22 as
a double
% --- Executes on button press in alumina.
function alumina_Callback(hObject, eventdata, handles)
% hObject
handle to alumina (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
Pagina: 57 de 72
Anexo
PFC
% handles
structure with handles and user data (see GUIDATA)
open grosorlayers.fig
lectura.m
function [col1,col2]=lectura
[file,pathname] = uigetfile('*.*');%Pide el fichero a abrir
file_dades=[pathname file];%Guardem l'arxiu a llegir i el cami
dados=fopen(file_dades,'r');
[col1, col2] =
textread(file_dades,'%f%f%*[^\n]','delimiter',',');
end
calcularncauchy.m
function
[matriun21,matriun21teorica,matriun22teorica]=calcularncauchy(fd,col1,
col2,un21,bn21,cn21,dn21,un22,bn22,cn22,dn22);
m=length(col1);
for h=1:1:m/fd
matriun21(h,1)=10000000/col1(h*fd);
matriun21(h,2)=col2(h*fd);
%lambda nm
%Reflectancia
%matriun21teorica(h,2)=un21+(bn21/(matriun21(h,1)*matriun21(h,1)))+(cn
21/(matriun21(h,1)*matriun21(h,1)*matriun21(h,1)*matriun21(h,1)));
%matriun21teorica(h,2)=un21+(bn21/(matriun21(h,1).^2))+(cn21/(matriun2
1(h,1).^4));
matriun21teorica(h,2)=un21+(bn21/(matriun21(h,1).^2))+(cn21/(matriun21
(h,1).^4))+(dn21/(matriun21(h,1).^8));
matriun22teorica(h,2)=un22+(bn22/(matriun21(h,1).^2))+(cn22/(matriun21
(h,1).^4))+(dn22/(matriun21(h,1).^8));
matriun21teorica(h,1)=matriun21(h,1);
matriun22teorica(h,1)=matriun21(h,1);
Ko=10E-3;
Di=2000E-9;
matriun21(h,3)=0;
matriun21teorica(h,3)=Ko*exp(Di/matriun21(h,1));
matriun22teorica(h,3)=0;
end
calcularnsellmeier.m
function
[matriun21,matriun21teorica,matriun22teorica]=calcularncauchy(fd,col1,
col2,un21,bn21,cn21,dn21,un22,bn22,cn22,dn22)
m=length(col1);
for h=1:1:m/fd
matriun21(h,1)=10000000/col1(h*fd);
matriun21(h,2)=col2(h*fd);
matriun21teorica(h,2)=sqrt((1+(un21*matriun21(h,1).^2)/((matriun21(h,1
).^2)-bn21)+(cn21*matriun21(h,1).^2)/((matriun21(h,1).^2)-dn21)));
matriun22teorica(h,2)=sqrt((1+(un22*matriun21(h,1).^2)/((matriun21(h,1
).^2)-bn22)+(cn22*matriun21(h,1).^2)/((matriun21(h,1).^2)-dn22)));
Pagina: 58 de 72
Anexo
PFC
matriun21teorica(h,1)=matriun21(h,1);
matriun22teorica(h,1)=matriun21(h,1);
matriun21(h,3)=0;
matriun21teorica(h,3)=0;
matriun22teorica(h,3)=0;
end
calculartransmisioreflexio.m
%****************************************************
%
Càlcul de la transmissió i reflexió a partir de les matrius
%*****************************************************
function [RE,TE,RM,TM]=
calculdetransmissioireflexio(Parametres,lnostra,long,lleguir,matriun21
,D1M,var21,slcauchy,matriun21teorica,matriun22teorica,matriun31,matriu
n22,var22,var32,var31,nestruc,var33,matriun33,rugoso,phi1,DsM,ns,phis,
n1,D1E,DsE,var23)
inc=1;
global slsellmeier;
global polnum;
global un21
global bn21
global cn21
global dn21
global un22
global bn22
global cn22
global dn22
global tet2
global h21
global n21
global n1
global h21
for cont=1:1:long
if (lleguir==1)
l=matriun21(cont,1)*1E-9;
else
l=lnostra(cont);
end
lambda=l/1e-9;
%Càlcul de TM
MtotM=inv(D1M);%Inicialització de les matrius
if ((var21==1)|(slcauchy==1)|(slsellmeier==1))&(polnum==1)
if (slcauchy==1)|(slsellmeier==1)
Parametres(1,1)=Calculan(matriun21(cont,1),matriun21teorica);
else
Parametres(1,1)=Calculan(matriun21(cont,1),matriun21teorica);
end
end
if ((var31==1)|(slcauchy==1)|(slsellmeier==1))&(polnum==2)
if (slcauchy==1)|(slsellmeier==1)
Parametres(1,3)=Calculan(matriun21(cont,1),matriun22teorica);
else Parametres(1,3)=Calculan(lambda,matriun31);
end
end
if nestruc==2
Pagina: 59 de 72
Anexo
PFC
if var22==1
Parametres(2,1)=Calculan(lambda,matriun22);
end
if var32==1
Parametres(2,3)=Calculan(lambda,matriun32);
end
elseif nestruc==3
if var22==1
Parametres(2,1)=Calculan(lambda,matriun22);
end
if var32==1
Parametres(2,3)=Calculan(lambda,matriun32);
end
if var23==1
Parametres(3,1)=Calculan(lambda,matriun23);
end
if var33==1
Parametres(3,3)=Calculan(lambda,matriun33);
end
end
%
for val=1:1:nestruc
%Parametres(val,3)=1;
%Parametres(val,4)=1;
%Parametres(val,5)=1;
Parametres(val,1)=nag;
if rugoso(val)==1
MM=CalculaMBragMRug(n1,phi1,Parametres(val,1),Parametres(val,2),Parame
tres(val,3),Parametres(val,4),Parametres(val,5),l,rug2(val),nrug2(val)
,hrug2(val),rug3(val),nrug3(val),hrug3(val));
else
MM=CalculaMBragM(n1,phi1,Parametres(val,1),Parametres(val,2),Parametre
s(val,3),Parametres(val,4),Parametres(val,5),l,tet2(cont));
end
MtotM=MtotM*MM;
end
MtotM=MtotM*DsM;
M21M=MtotM(2,1);
M11M=MtotM(1,1);
rM=M21M/M11M;
tM=1/M11M;
ReflectanceM=(abs(rM))^2;
TransmittanceM=((ns*cos(phis))/(n1*cos(phi1)))*((abs(tM))^2);
RM(cont)=ReflectanceM;
TM(cont)=TransmittanceM;
%Càlcul de TE
MtotE=inv(D1E);
for val=1:1:nestruc
if rugoso(val)==1
ME=CalculaMBragERug(n1,phi1,Parametres(val,1),Parametres(val,2),Parame
tres(val,3),Parametres(val,4),Parametres(val,5),l,rug2(val),nrug2(val)
,hrug2(val),rug3(val),nrug3(val),hrug3(val));
Pagina: 60 de 72
Anexo
PFC
else
ME=CalculaMBragE(n1,phi1,Parametres(val,1),Parametres(val,2),Parametre
s(val,3),Parametres(val,4),Parametres(val,5),l,tet2(cont));
end
MtotE=MtotE*ME;
end
MtotE=MtotE*DsE;
M21E=MtotE(2,1);
M11E=MtotE(1,1);
rE=M21E/M11E;
tE=1/M11E;
ReflectanceE=(abs(rE))^2;
TransmittanceE=((ns*cos(phis))/(n1*cos(phi1)))*((abs(tE))^2);
RE(cont)=ReflectanceE;
TE(cont)=TransmittanceE;
end
end
fminquad.m
% inicio del archivo fminquad.m
%
% codigo para calcular los coeficientes de una funcion
% por el metodo de minimos cuadrados
% 2.8 del libro de Edgar, Himmelblau & Lasdon (2001)
% optimization of chemical processes
%
function [x,RE,TE,RM,TM]=
fminquad(Parametres,lnostra,long,lleguir,matriun21,D1M,var21,slcauchy,
matriun21teorica,matriun22teorica,matriun31,matriun22,var22,var32,var3
1,nestruc,var33,matriun33,rugoso,phi1,DsM,ns,phis,n1,D1E,DsE,RE,TE,RM,
TM,var23,polnum);
global tet2;
global matriun21
global Parametres
global lnostra
global long
global lleguir
global D1M
global var21
global slcauchy
global slsellmeier
global matriun21teorica
global matriun22teorica
global matriun31
global matriun22
global var22
global var23
global var32
global var31
global nestruc
global var33
global matriun33
global rugoso
global phi1
global DsM
global ns
Pagina: 61 de 72
Anexo
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
global
PFC
phis
n1
D1E
DsE
RE
un21;
bn21;
cn21;
dn21;
un22;
bn22;
cn22;
dn22;
polnum;
h21
n31
phi2
n1
n21
if (polnum==2)
x0=[un21 bn21 cn21 dn21 un22 bn22 cn22 dn22 h21];
lb = [1 0 0 0 1 0 0 0 0];
ub = [700 100000 100000 100000 700 100000 100000 100000 2000];
options=optimset('LargeScale','on','Display','iter','MaxFunEvals',1000
,'TolFun',1e-20,'TolX',1e-20);
%[x,resnorm,residual,exitflag,output,lambda,jacobian]=
lsqnonlin(fun,x0,lb,ub,options)
[x,funx2,fun,flag,output,lambda,jacobian]=
lsqnonlin(@xyquad2,x0,lb,ub,options);
c0=x(1);
c1=x(2);
c2=x(3);
c3=x(4);
c4=x(5);
c5=x(6);
c6=x(7);
c7=x(8);% reasignacion de parametros
c8=x(9);
else
x0=[un21 bn21 cn21 dn21 h21];
lb = [1 0 0 0 0];
ub = [700 100000 100000 100000 2000];
options=optimset('LargeScale','on','Display','iter','MaxFunEvals',1000
,'TolFun',1e-18,'TolX',1e-18);
%[x,resnorm,residual,exitflag,output,lambda,jacobian]=
lsqnonlin(fun,x0,lb,ub,options)
[x,funx2,fun,flag,output,lambda,jacobian]=
lsqnonlin(@xyquad2,x0,lb,ub,options);
c0=x(1);
c1=x(2);
c2=x(3);
c3=x(4);
c4=x(5);
end
if (slcauchy==1)
for h=1:1:length(matriun21)
matriun21teorica(h,2)=c0+(c1/(matriun21(h,1).^2))+(c2/(matriun21(h,1).
^4))+(c3/(matriun21(h,1).^8));
if (polnum==2)
Pagina: 62 de 72
Anexo
PFC
matriun22teorica(h,2)=c4+(c5/(matriun21(h,1).^2))+(c6/(matriun21(h,1).
^4))+(c7/(matriun21(h,1).^8));
end
end
end
if (slsellmeier==1)
for h=1:1:length(matriun21)
matriun21teorica(h,2)=sqrt((1+(c0*matriun21(h,1).^2)/((matriun21(h,1).
^2)-c1)+(c2*matriun21(h,1).^2)/((matriun21(h,1).^2)-c3)));
if (polnum==2)
matriun22teorica(h,2)=sqrt((1+(c4*matriun21(h,1).^2)/((matriun21(h,1).
^2)-c5)+(c6*matriun21(h,1).^2)/((matriun21(h,1).^2)-c7)));
end
end
end
if (polnum==2)
for conta=1:1:length(matriun21)
phi2=asin((n1/matriun21teorica(conta,2))*(sin(phi1)));
p2=n21*cos(phi2);
k2x=(2*pi*matriun21teorica(conta,2)*cos(phi2))/(1E9*matriun21(conta,1));
tet2(conta)=k2x*c8;
end
else
for conta=1:1:length(matriun21)
phi2=asin((n1/matriun21teorica(conta,2))*(sin(phi1)));
p2=n21*cos(phi2);
k2x=(2*pi*matriun21teorica(conta,2)*cos(phi2))/(1E9*matriun21(conta,1));
tet2(conta)=k2x*c4;
end
end
un21=x(1);
bn21=x(2);
cn21=x(3);
dn21=x(4);
h21= x(5);
if (polnum==2)
un22=x(5);
bn22=x(6);
cn22=x(7);
dn22=x(8);
h21=x(9);
end
[RE,TE,RM,TM]=
calculdetransmissioireflexio(Parametres,lnostra,long,lleguir,matriun21
,D1M,var21,slcauchy,matriun21teorica,matriun22teorica,matriun31,matriu
n22,var22,var32,var31,nestruc,var33,matriun33,rugoso,phi1,DsM,ns,phis,
n1,D1E,DsE,var23);
% fin del archivo fminquad.m
Xyquad2.m
%
%
%
%
inicio del archivo xyquad.m
codigo para calcular los coeficientes de una funcion
por el metodo de minimos cuadrados
2.8 del libro de Edgar, Himmelblau & Lasdon (2001)
Pagina: 63 de 72
Anexo
PFC
% optimization of chemical processes
%
function
[fi2]=xyquad(x,Parametres,lnostra,long,lleguir,matriun21,D1M,var21,slc
auchy,matriun21teorica,matriun22teorica,matriun31,matriun22,var22,var3
2,var31,nestruc,var33,matriun33,rugoso,phi1,DsM,ns,phis,n1,D1E,DsE,var
23);
global h21
global tet2
global matriun21
global Parametres
global lnostra
global long
global lleguir
global D1M
global var21
global slcauchy
global slsellmeier
global matriun21teorica
global matriun22teorica
global matriun31
global matriun22
global var22
global var23
global var32
global var31
global nestruc;
global var33;
global matriun33;
global rugoso;
global phi1;
global DsM;
global ns;
global phis;
global n1;
global D1E;
global DsE;32
global RE;
global un21;
global bn21;
global cn21;
global dn21;
global un22;
global bn22;
global cn22;
global dn22;
global polnum;
global n31;
global phi2;
global n1
global n21
if (polnum==2)
c0=x(1); c1=x(2); c2=x(3); c3=x(4);
c4=x(5); c5=x(6); c6=x(7); c7=x(8);c8= x(9);
else
c0=x(1); c1=x(2); c2=x(3); c3=x(4);c4=x(5);
end
if (slcauchy==1)
if (polnum==1)
for h=1:1:length(matriun21)
Pagina: 64 de 72
Anexo
PFC
matriun21teorica(h,2)=c0+(c1/(matriun21(h,1).^2))+(c2/(matriun21(h,1).
^4))+(c3/(matriun21(h,1).^8));
end
else
for h=1:1:length(matriun21)
matriun21teorica(h,2)=c0+(c1/(matriun21(h,1).^2))+(c2/(matriun21(h,1).
^4))+(c3/(matriun21(h,1).^8));
matriun22teorica(h,2)=c4+(c5/(matriun21(h,1).^2))+(c6/(matriun21(h,1).
^4))+(c7/(matriun21(h,1).^8));
end
end
end
if (slsellmeier==1)
for h=1:1:length(matriun21)
matriun21teorica(h,2)=sqrt((1+(c0*matriun21(h,1).^2)/((matriun21(h,1).
^2)-c1)+(c2*matriun21(h,1).^2)/((matriun21(h,1).^2)-c3)));
if (polnum==2)
matriun22teorica(h,2)=sqrt((1+(c4*matriun21(h,1).^2)/((matriun21(h,1).
^2)-c5)+(c6*matriun21(h,1).^2)/((matriun21(h,1).^2)-c7)));
end
end
end
%calcul de tetha en funcio del espesor de la capa
if (polnum==2)
for conta=1:1:length(matriun21)
phi2=asin((n1/matriun21teorica(conta,2))*(sin(phi1)));
p2=n21*cos(phi2);
k2x=(2*pi*matriun21teorica(conta,2)*cos(phi2))/(1E9*matriun21(conta,1));
tet2(conta)=k2x*c8;
end
else
for conta=1:1:length(matriun21)
phi2=asin((n1/matriun21teorica(conta,2))*(sin(phi1)));
p2=n21*cos(phi2);
k2x=(2*pi*matriun21teorica(conta,2)*cos(phi2))/(1E9*matriun21(conta,1));
tet2(conta)=k2x*c4;
end
end
[RE,TE,RM,TM]=
calculdetransmissioireflexio(Parametres,lnostra,long,lleguir,matriun21
,D1M,var21,slcauchy,matriun21teorica,matriun22teorica,matriun31,matriu
n22,var22,var32,var31,nestruc,var33,matriun33,rugoso,phi1,DsM,ns,phis,
n1,D1E,DsE,var23);
fi2=(RE')-(matriun21(:,2));
% fin del archivo xyquad.m
calculaMbragE.m
function MNperE=CalculaMBragE(n1,phi1,n2,h2,n3,h3,N,l,tet2)
Pagina: 65 de 72
Anexo
PFC
global polnum
M2E=CalculaMTE(n1,phi1,n2,h2,l,tet2);
if polnum==2
M3E=CalculaMTE(n1,phi1,n3,h3,l,tet2);
else
M3E=[1 0;0 1];
end
M1perE=M2E*M3E;
MNperE=(M1perE)^N;
calculaMbragM.m
function MNperM=CalculaMBragM(n1,phi1,n2,h2,n3,h3,N,l,tet2)
global polnum
M2M=CalculaMTM(n1,phi1,n2,h2,l,tet2);
if polnum==2
M3M=CalculaMTM(n1,phi1,n3,h3,l,tet2);
else
M3M=[1 0;0 1];
end
M1perM=M2M*M3M;
MNperM=(M1perM)^N;
CalculaMTE.m
function M=CalculaMTE(n1,phi1,n2,h2,l,tet2)
global polnum
phi2=asin((n1/n2)*(sin(phi1)));
p2=n2*cos(phi2);
if polnum==2
k2x=(2*pi*n2*cos(phi2))/l;
tet2=k2x*h2;
end
D2=[1 1;p2 -p2];
P211=exp(i*tet2);
P222=exp(-i*tet2);
P2mat=[P211 0;0 P222];
M=D2*P2mat*(inv(D2));
CalculaMTM.m
function M=CalculaMTM(n1,phi1,n2,h2,l,tet2)
global polnum
phi2=asin((n1/n2)*(sin(phi1)));
p2=n2*cos(phi2);
%k2x=(2*pi*n2*cos(phi2))/l;
%tet2=k2x*h2;
if polnum==2
k2x=(2*pi*n2*cos(phi2))/l;
tet2=k2x*h2;
end
D2=[cos(phi2) cos(phi2);n2 -n2];
P211=exp(i*tet2);
P222=exp(-i*tet2);
P2mat=[P211 0;0 P222];
Pagina: 66 de 72
Anexo
PFC
M=D2*P2mat*(inv(D2));
Calculan.m
function n3=Calculan(lambda,matriun3)
%Lambda en nm
%Se le pasa la tabla donde la primera columna es lambda y la segunda y
%tercera son la n y la k respectivamente y te devuelve la n=n-iK
%correspondiente a la lambda que le pides (util para las tablas de
PAlik)
long2=length(matriun3);
var=1;
while ((matriun3(var,1)<lambda)&(var<long2))
var=var+1;
end
if (matriun3(var,1))==lambda
n3=matriun3(var,2)-i*matriun3(var,3);
elseif (((var==long2)&(matriun3(var,1)<lambda)))|(var==1)
n3=matriun3(var,2)-i*matriun3(var,3);
else
a=matriun3(var-1,1);
b=matriun3(var,1);
c=matriun3(var-1,2);
d=matriun3(var,2);
n=c+(((d-c)*(lambda-a))/(b-a));
c=matriun3(var-1,3);
d=matriun3(var,3);
k=c+(((d-c)*(lambda-a))/(b-a));
n3=n-i*k;
end
escriuredades.m
function
escriuredades(lleguir,lnostra,cabecera,valor,matriun21,matriun21teoric
a,RE,n23,h23,n33,h33,N3,var21,var31,nestruc,h21,h31,N1,n31,TE,TM,RM)
%if escriure==1
[OutputFile path]=uiputfile('*.dat','Save as','
.dat');
if OutputFile==0
return;
% if no chosen file
else,
InFilePath=[path, OutputFile];
end,
InPath=path;
if length(path)>3,
InPath(end)=32;
%erase the backslash at the end
InPath=setstr(InPath);
end,
cd (InPath);
[fid, message]=fopen(InFilePath,'w');
if fid<0
ErrorH=errordlg( ['Can not write to file:
',upper(InFilePath)], 'ERROR!', 'modal');
uiwait(ErrorH);
return;
Pagina: 67 de 72
Anexo
PFC
else,
%
if cabecera==1
if strcmp(modeSaving,'with'),
fprintf(fid,'\r\nSimulation of the multilayer
structure\n');
1st layer= %s
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %g
periods: %g ',
fprintf(fid,'\r\n\r\nParameters: ');
switch (nestruc)
case 1
if (var21==1) & (var31==1)
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
handles.n21string,h21,handles.n31string,h31,N1 );
elseif var21==1
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
handles.n21string,h21,n31,h31,N1 );
elseif var31==1
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
n21,h21,handles.n31string,h31,N1 );
else
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
n21,h21,n31,h31,N1 );
end
case 2
if (var21==1) & (var31==1)
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
handles.n21string,h21,handles.n31string,h31,N1 );
elseif var21==1
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
handles.n21string,h21,n31,h31,N1 );
elseif var31==1
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
n21,h21,handles.n31string,h31,N1 );
else
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
n21,h21,n31,h31,N1 );
end
if (var22==1) & (var32==1)
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
handles.n22string,h22,handles.n32string,h32,N2 );
elseif var22==1
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
handles.n22string,h22,n32,h32,N2 );
elseif var32==1
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
n22,h22,handles.n32string,h32,N2 );
else
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
n22,h22,n32,h32,N2 );
end
Pagina: 68 de 72
Anexo
1st layer= %s
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %s
periods: %g ',
1st layer= %g
periods: %g ',
1st layer= %g
periods: %g ',
PFC
case 3
if (var21==1) & (var31==1)
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
handles.n21string,h21,handles.n31string,h31,N1 );
elseif var21==1
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
handles.n21string,h21,n31,h31,N1 );
elseif var31==1
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
n21,h21,handles.n31string,h31,N1 );
else
fprintf(fid,'\r\n Bilayer structure 1: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
n21,h21,n31,h31,N1 );
end
if (var22==1) & (var32==1)
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
handles.n22string,h22,handles.n32string,h32,N2 );
elseif var22==1
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
handles.n22string,h22,n32,h32,N2 );
elseif var32==1
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
n22,h22,handles.n32string,h32,N2 );
else
fprintf(fid,'\r\n Bilayer structure 2: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
n22,h22,n32,h32,N2 );
end
if (var23==1) & (var33==1)
fprintf(fid,'\r\n Bilayer structure 3: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
handles.n23string,h23,handles.n33string,h33,N3 );
elseif var23==1
fprintf(fid,'\r\n Bilayer structure 3: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
handles.n23string,h23,n33,h33,N3 );
elseif var33==1
fprintf(fid,'\r\n Bilayer structure 3: n
h 1st layer= %g nm n 2nd layer= %s h 2nd layer= %g nm
n23,h23,handles.n33string,h33,N3 );
else
fprintf(fid,'\r\n Bilayer structure 3: n
h 1st layer= %g nm n 2nd layer= %g h 2nd layer= %g nm
n23,h23,n33,h33,N3 );
end
end
switch valor
case 1
fprintf(fid,'\r\n\r\n Wavelength (nm)
Reflectivity (TE) Reflectivity (TM)
');
fprintf(fid,'\r\n----------------------------------------------------------------------------------------------------------\r\n\r\n');
Pagina: 69 de 72
Anexo
PFC
if (lleguir==1)
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,' %12.3f
%5.4f
%5.4f',wavelen(contpos),RE(contpos),RM(contpos));
fprintf(fid,'\r\n');
end
case 2
fprintf(fid,'\r\n\r\n Wavelength (nm)
Transmission (TE) Transmission (TM)
');
fprintf(fid,'\r\n----------------------------------------------------------------------------------------------------------\r\n\r\n');
if (lleguir==1)
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,' %12.3f
%5.4f
%5.4f',wavelen(contpos),TE(contpos),TM(contpos));
fprintf(fid,'\r\n');
end
case 3
fprintf(fid,'\r\n\r\n Wavelength (nm)
Reflectivity (TE) Reflectivity (TM) Transmission (TE) Transmission
(TM)');
fprintf(fid,'\r\n----------------------------------------------------------------------------------------------------------\r\n\r\n');
if (lleguir==1)
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,' %12.3f
%5.4f
%5.4f
%5.4f
%5.4f',wavelen(contpos),RE(contpos),RM(contpos),TE(contpos),TM(contpos
));
fprintf(fid,'\r\n');
end
case 4
fprintf(fid,'\r\n\r\n Wavelength (nm)
Absorption (TE) Absorption (TM)
');
fprintf(fid,'\r\n----------------------------------------------------------------------------------------------------------\r\n\r\n');
if (lleguir==1)
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,' %12.3f
%5.4f
%5.4f',wavelen(contpos),AE(contpos),AM(contpos));
fprintf(fid,'\r\n');
end
Pagina: 70 de 72
Anexo
Reflectivity (TE)
(TM)');
PFC
case 5
fprintf(fid,'\r\n\r\n Wavelength (nm)
Reflectivity (TM) Absorption (TE) Absorption
fprintf(fid,'\r\n----------------------------------------------------------------------------------------------------------\r\n\r\n');
if (lleguir==1)
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,' %12.3f
%5.4f
%5.4f
%5.4f
%5.4f',wavelen(contpos),RE(contpos),RM(contpos),AE(contpos),AM(contpos
));
fprintf(fid,'\r\n');
end
case 6
fprintf(fid,'\r\n\r\n Wavelength (nm)
Transmission (TE) Transmission (TM) Absorption (TE) Absorption (TM)
');
fprintf(fid,'\r\n----------------------------------------------------------------------------------------------------------\r\n\r\n');
if (lleguir==1)
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,' %12.3f
%5.4f
%5.4f
%5.4f
%5.4f',wavelen(contpos),TE(contpos),TM(contpos),AE(contpos),AM(contpos
));
fprintf(fid,'\r\n');
end
case 7
fprintf(fid,'\r\n\r\n Wavelength (nm)
Reflectivity (TE) Reflectivity (TM) Transmission (TE) Transmission
(TM) Absorption (TE) Absorption (TM)');
fprintf(fid,'\r\n----------------------------------------------------------------------------------------------------------------------------\r\n\r\n');
if (lleguir==1)
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,' %12.3f
%5.4f
%5.4f
%5.4f
%5.4f
%5.4f
%5.4f',wavelen(contpos),RE(contpos),RM(contpos),TE(contpos),TM(contpos
),AE(contpos),AM(contpos));
fprintf(fid,'\r\n');
end
end
fclose(fid);
else %Slo para (Rte+Rtm)*0.5
if (lleguir==1)
Pagina: 71 de 72
Anexo
PFC
wavelen=matriun21(:,1);
else
wavelen=lnostra/1e-9;
end
for contpos=1:1:length(wavelen)
fprintf(fid,'%12.6f\t%5.6f',wavelen(contpos),(0.5*RE(contpos)+0.5*RM(c
ontpos)));
fprintf(fid,'\r\n');
end
fclose(fid);
end
end
end
Pagina: 72 de 72
Descargar