Source code for ossdbs.dielectric_model.constant

# Copyright 2023, 2024 Johannes Reding, Julius Zimmermann
# SPDX-License-Identifier: GPL-3.0-or-later

from dataclasses import dataclass

from scipy.constants import epsilon_0 as e0

from .dielectric_model import DielectricModel


[docs]@dataclass class ConstantParameters: """Parameters for the constant model. The default values are taken from the model by Gabriel et al. at a frequency of 10 kHz. """ permittivity: float conductivity: float
BloodConstantDefault = ConstantParameters(permittivity=5.25e3, conductivity=7e-1) WhiteMatterConstantDefault = ConstantParameters( permittivity=1.25e4, conductivity=6.95e-2 ) GrayMatterConstantDefault = ConstantParameters( permittivity=2.22e4, conductivity=1.15e-1 ) CSFConstantDefault = ConstantParameters(permittivity=1.09e2, conductivity=2.0) default_constant_parameters = { "Gray matter": GrayMatterConstantDefault, "Unknown": GrayMatterConstantDefault, "White matter": WhiteMatterConstantDefault, "CSF": CSFConstantDefault, "Blood": BloodConstantDefault, }
[docs]class ConstantModel(DielectricModel): """Model for frequency-independent properties.""" def __init__(self, parameters: ConstantParameters): self._parameters = parameters
[docs] def complex_permittivity(self, omega: float) -> complex: """Calculate the permittivity by the angular frequency omega. Parameters ---------- omega : float Angular frequency [1/s]. Returns ------- complex Complex permittivity. """ if omega == 0: return self._parameters.permittivity * e0 + 0j return e0 * self._parameters.permittivity + self._parameters.conductivity / ( 1j * omega )
@property def static_conductivity(self) -> float: """Returns the static conductivity.""" return self._parameters.conductivity