Source code for elli.solver

# Encoding: utf-8
from abc import ABC, abstractmethod

from .result import Result


[docs]class Solver(ABC): """ Solver base class to evaluate Experiment objects. Here the experiment and structure get unpacked and the simulation results get returned. The actual simulation is handled by subclasses. Because of this, this class should never be called. """ structure = None lbda = None theta_i = None jones_vector = None permittivity_profile = None @property def rho(self): raise ValueError('Value not calculated by solver') @property def psi(self): raise ValueError('Value not calculated by solver') @property def delta(self): raise ValueError('Value not calculated by solver') @property def rho_matrix(self): raise ValueError('Value not calculated by solver') @property def psi_matrix(self): raise ValueError('Value not calculated by solver') @property def delta_matrix(self): raise ValueError('Value not calculated by solver') @property def mueller_matrix(self): raise ValueError('Value not calculated by solver') @property def jones_matrix_t(self): raise ValueError('Value not calculated by solver') @property def jones_matrix_r(self): raise ValueError('Value not calculated by solver') @property def jones_matrix_tc(self): raise ValueError('Value not calculated by solver') @property def jones_matrix_rc(self): raise ValueError('Value not calculated by solver') @property def R(self): raise ValueError('Value not calculated by solver') @property def T(self): raise ValueError('Value not calculated by solver') @property def Rc(self): raise ValueError('Value not calculated by solver') @property def Tc(self): raise ValueError('Value not calculated by solver')
[docs] @abstractmethod def calculate(self) -> Result: pass
def __init__(self, experiment: "Experiment") -> None: self.structure = experiment.structure self.lbda = experiment.lbda self.theta_i = experiment.theta_i self.jones_vector = experiment.jones_vector self.permittivity_profile = self.structure.get_permittivity_profile(self.lbda)