Du kannst den Wasser-Extinktionskoeffizienten und die Absorptionslänge für jede Wellenlänge zwischen 200 nm und 200 μm mit dem Absorption-Modul von UliEngineering berechnen.
Das zugrundeliegende Modell basiert auf dieser Arbeit aus dem Jahr 1973:
hale_querry_citation.txt
Hale, George M., and Marvin R. Querry. "Optical constants of water in the 200-nm to 200-μ m wavelength region." Applied optics 12.3 (1973): 555-563.Du kannst sie online bei Optica Publishing Group einsehen.
Installiere zunächst UliEngineering.
Beispiel: Extinktionskoeffizient für eine benutzerdefinierte Wellenlänge abrufen
extinction_coefficient_example.py
from UliEngineering.Chemistry.Absorption import HaleQuerryAbsorptionModel
from UliEngineering.EngineerIO import EngineerIO
wavelength_nm = 1500 # nm
model = HaleQuerryAbsorptionModel()
ext_coeff = model(wavelength_nm)
formatted = EngineerIO.instance().format(ext_coeff, unit="1/m")
print(f"Extinktionskoeffizient bei {wavelength_nm} nm: {formatted}")Beispiel: Länge berechnen, bei der 99% des Lichts absorbiert werden
plot_absorption.py
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter
from UliEngineering.Chemistry.Absorption import HaleQuerryAbsorptionModel, absorption_length_from_absorption_coefficient
from UliEngineering.EngineerIO import format_value
plt.style.use("ggplot")
model = HaleQuerryAbsorptionModel()
wavelengths = [d.wavelength for d in model.datapoints] # in nm
abs_coeffs = [d.absorption_coefficient for d in model.datapoints]
abs_lengths = [absorption_length_from_absorption_coefficient(ac) for ac in abs_coeffs]
fig, ax1 = plt.subplots(figsize=(12, 5))
color1 = "tab:blue"
color2 = "tab:red"
ax1.set_xlabel("Wellenlänge (nm)")
ax1.set_ylabel("Absorptionskoeffizient (1/m)", color=color1)
ax1.loglog(wavelengths, abs_coeffs, marker="o", linestyle="-", color=color1, label="Extinktionskoeffizient")
ax1.tick_params(axis="y", labelcolor=color1)
ax1.yaxis.set_minor_locator(plt.NullLocator()) # Nebenticks auf Y-Achse ausblenden
ax1.xaxis.set_major_formatter(FuncFormatter(lambda x, p: format_value(x, "m")))
ax2 = ax1.twinx()
ax2.set_ylabel("Absorptionslänge (m)", color=color2)
ax2.loglog(wavelengths, abs_lengths, marker="s", linestyle="--", color=color2, label="Absorptionslänge (1/e)")
ax2.tick_params(axis="y", labelcolor=color2)
ax2.yaxis.set_minor_locator(plt.NullLocator()) # Nebenticks auf Y-Achse ausblenden
ax2.yaxis.set_major_formatter(FuncFormatter(lambda x, p: format_value(x, "m")))
ax2.xaxis.set_major_formatter(FuncFormatter(lambda x, p: format_value(x, "m")))
plt.title("Hale-Querry Wasser-Extinktionskoeffizient und Absorptionslänge")
fig.tight_layout()
plt.grid(True, which="both", ls="--")Berechnungsmethode
Das Hale-Querry-Modell verwendet tabellierte Daten und lineare Interpolation, um den Extinktionskoeffizienten für Wasser über einen weiten Wellenlängenbereich bereitzustellen. Die Absorptionslänge ist einfach der Kehrwert des Extinktionskoeffizienten.
HaleQuerryAbsorptionModel()(wavelength_nm)gibt den Extinktionskoeffizienten in 1/m für eine gegebene Wellenlänge in Nanometern zurück.absorption_length_from_extinction_coefficient(ext_coeff)berechnet die Absorptionslänge (Strecke für 1/e-Dämpfung) in Metern.length_from_remaining_fraction(fraction, ext_coeff)berechnet die Länge, bei der ein gegebener Bruchteil des Lichts verbleibt.
Siehe die UliEngineering-Dokumentation für weitere Details.
Wenn dieser Beitrag dir geholfen hat, erwäge, mir einen Kaffee zu spendieren oder per PayPal zu spenden, um die Recherche und Veröffentlichung neuer Beiträge auf TechOverflow zu unterstützen