mieweb / mieWeb /scripts /pruebas /calculo_prueba.py
Sergio Salas
realizados test unitarios con archivos proporcionados. Falla el 3
d373fd9
import numpy as np
import miepython
import sqlite3
""""
def calculate_mie_arrays(material_data, radius):
results = {}
for material_id, (valor_lambda_array, n_array, k_array) in material_data.items():
# Calculo del 铆ndice complejo m y el par谩metro x
m = n_array - 1.0j * k_array
x = 2 * np.pi * radius / valor_lambda_array
# Calcular los par谩metros usando la funci贸n de miepython
qext, qsca, qback, g = miepython.mie(m, x)
# Coeficiente de absorci贸n
qabs = qext - qsca
# Guardar resultados en el diccionario
results[material_id] = (qext, qsca, qabs)
return results
# Conectar a la base de datos SQLite
#b_path = pruebas\prueba.db"
#conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# IDs de los materiales que queremos filtrar
material_ids = [1, 2,3,4] # Lista de IDs de materiales
# Leer los datos de la base de datos para cada material
material_data = {}
for material_id in material_ids:
cursor.execute("SELECT longitud_onda, n, k FROM DatosDeRefraccion WHERE material_id = ?", (material_id,))
data = cursor.fetchall()
if data:
# Convertir los datos le铆dos en arrays de numpy
valor_lambda_array = np.array([row[0] for row in data])
n_array = np.array([row[1] for row in data])
k_array = np.array([row[2] for row in data])
material_data[material_id] = (valor_lambda_array, n_array, k_array)
# Cerrar la conexi贸n a la base de datos
conn.close()
# Valor del radio de las part铆culas
radius = 0.1 # En micr贸metros
# Llamada a la funci贸n con los par谩metros le铆dos de la base de datos
results = calculate_mie_arrays(material_data, radius)
# Imprimir los resultados para comprobar
for material_id, (qext_array, qsca_array, qabs_array) in results.items():
print(f"Resultados para el material ID {material_id}:")
valor_lambda_array, n_array, k_array = material_data[material_id]
for i in range(len(valor_lambda_array)):
print(f" Para 位 = {valor_lambda_array[i]:.2f} 渭m, n = {n_array[i]:.2f}, k = {k_array[i]:.2f}, radio = {radius:.2f} 渭m:")
print(f" Coeficiente de extinci贸n (qext): {qext_array[i]:.4f}")
print(f" Coeficiente de dispersi贸n (qsca): {qsca_array[i]:.4f}")
print(f" Coeficiente de absorci贸n (qabs): {qabs_array[i]:.4f}")
# Ejemplo: ahora puedes usar los resultados para gr谩ficas en matplotlib
"""