Source code for solrat.atom_model.shared.object.stokes

import numpy as np

from solrat.atom_model.shared.utility.functions import get_planck_BP


[docs] class Stokes: """ Container class for Stokes parameters (I, Q, U, V) as function of frequency. :param nu: Frequency array [Hz] :param I: Stokes I parameter (intensity) :param Q: Stokes Q parameter (linear polarization) :param U: Stokes U parameter (linear polarization) :param V: Stokes V parameter (circular polarization) """ def __init__(self, nu: np.ndarray, I: np.ndarray, Q: np.ndarray, U: np.ndarray, V: np.ndarray): # noqa: E741 self.nu = nu self.I = I # noqa: E741 self.Q = Q self.U = U self.V = V
[docs] @classmethod def from_BP(cls, nu_sm1: np.ndarray, temperature_K: float) -> "Stokes": """ Get the Stokes profiles from Planck's distribution. :param nu_sm1: frequencies [1/s] :param temperature_K: temperature in K :return: Stokes instance """ return cls( nu=nu_sm1, I=get_planck_BP(nu_sm1=nu_sm1, temperature_K=temperature_K), Q=nu_sm1 * 0, U=nu_sm1 * 0, V=nu_sm1 * 0, )
[docs] @classmethod def from_zeros(cls, nu_sm1: np.ndarray) -> "Stokes": """ Get the Stokes profiles that are zeros. :param nu_sm1: frequencies [1/s] :return: Stokes instance """ return cls( nu=nu_sm1, I=nu_sm1 * 0, Q=nu_sm1 * 0, U=nu_sm1 * 0, V=nu_sm1 * 0, )