Module diskchef.physics.disks

Classes

class Disk2D (star_mass: Unit("solMass") = <Quantity 1. solMass>, xray_plasma_temperature: Unit("K") = <Quantity 10000000. K>, xray_luminosity: Unit("erg / s") = <Quantity 1.e+31 erg / s>, cr_padovani_use_l: bool = False, r_grid: Unit("AU") = <Quantity [1.e-01, 5.e+02] AU>, r_min_sigma: Unit("AU") = <Quantity 0.1 AU>, zr_max: float = 0.7, zr_min: float = 0, is_zr_regular: bool = True, radial_bins: int = 100, vertical_bins: int = 100, dust_to_gas: float = 0.01, r_c: Unit("AU") = <Quantity 50. AU>, r_c_in: Unit("AU") = <Quantity 3. AU>, gamma_pwl: float = 1, gamma_tap: float = None, gamma_in: float = None, h_g: float = None, h_d: List[float] = None, psi_g: float = None, psi_d: List[float] = None, dust_sizes: Unit("cm") = None, dust_names: List[str] = None, dust_massfrac: List[float] = None, dust_distroindex: float = -3.5, m_star: Unit("solMass") = <Quantity 1. solMass>, r_star: Unit("solRad") = None, l_star: Unit("solLum") = None, t_star: Unit("K") = None, l_acc: Unit("solLum") = <Quantity 0. solLum>, t_acc: Unit("K") = <Quantity 10000. K>, age: Unit("Myr") = None, m_disk: Unit("solMass") = <Quantity 0.01 solMass>, grazang: float = 0.05, amratio: float = 2, envelope_density: Unit("g / cm3") = <Quantity 1.e-24 g / cm3>, monomer_density: Unit("g / cm3") = <Quantity 3. g / cm3>, dust_settling: str = None, alpha_settle: float = 0.0001, radmc_folder: str = 'radmc', sublim_temp: Unit("K") = <Quantity 1500. K>, sublim_pwlindex: float = 0.0, gap_positions: Unit("AU") = None, gap_amps: List[float] = None, gap_widths: Unit("AU") = None, gap_type: str = 'Gaussian')

2D axisymmetric model of the disk with several dust species and dust settling Both hydrostatic equilibrium and parametric vstructure setup

Expand source code
class Disk2D(PhysicsBase):
    """2D axisymmetric model of the disk with several dust species and dust settling
       Both hydrostatic equilibrium and parametric vstructure setup
    """
    r_grid: u.au = [0.1, 500] * u.au
    r_min_sigma: u.au = 0.1 * u.au
    zr_max: float = 0.7
    zr_min: float = 0
    is_zr_regular: bool = True
    radial_bins: int = 100
    vertical_bins: int = 100
    dust_to_gas: float = 0.01
    r_c: u.au = 50 * u.au
    r_c_in: u.au = 3 * u.au
    gamma_pwl: float = 1
    gamma_tap: float = None
    gamma_in: float = None
    h_g: float = None
    h_d: List[float] = None
    psi_g: float = None
    psi_d: List[float] = None
    dust_sizes: u.cm = None
    dust_names: List[str] = None
    dust_massfrac: List[float] = None
    dust_distroindex: float = -3.5
    m_star: u.Msun = 1 * u.Msun
    r_star: u.Rsun = None
    l_star: u.Lsun = None
    t_star: u.K = None
    l_acc: u.Lsun = 0 * u.Lsun
    t_acc: u.K = 1e4 * u.K
    age: u.Myr = None
    m_disk: u.Msun = 1e-2 * u.Msun
    grazang: float = 0.05
    amratio: float = 2
    envelope_density: u.g/u.cm**3 = 1e-24 * u.g/u.cm**3
    monomer_density: u.g/u.cm**3 = 3 * u.g/u.cm**3
    dust_settling: str = None
    alpha_settle: float = 1e-4
    radmc_folder: str = 'radmc'
    sublim_temp: u.K = 1500 * u.K
    sublim_pwlindex: float = 0.0
    gap_positions: u.au = None
    gap_amps: List[float] = None
    gap_widths: u.au = None
    gap_type: str = 'Gaussian'

    @u.quantity_input
    def gas_surface_density(self):
        """Calculates gas density at given r,
        Following ANDES2, Akimkin+2013"""
        r = self.radii * u.au
        sigma_unnorm = ((r/self.r_c).to(u.dimensionless_unscaled))**(-self.gamma_pwl)
        if self.gamma_tap is not None:
            sigma_unnorm *= np.exp(-((r/self.r_c).to(u.dimensionless_unscaled))**(2 - self.gamma_tap))
        if self.gamma_in is not None:
            sigma_unnorm *= np.exp(-((self.r_c_in/r).to(u.dimensionless_unscaled))**(2 - self.gamma_in))
        if self.gap_positions is not None:
            for igap in range(len(self.gap_positions)):
                if self.gap_type == 'Gaussian':
                    sigma_unnorm *= np.exp(-self.gap_amps[igap]*np.exp(-((r-self.gap_positions[igap])**2/(2*self.gap_widths[igap]**2)).to(u.dimensionless_unscaled)))
                elif self.gap_type == 'Square':
                    gap_mask = (r > self.gap_positions[igap] - 0.5*self.gap_widths[igap]) & (r < self.gap_positions[igap] + 0.5*self.gap_widths[igap])
                    sigma_unnorm[gap_mask] *= np.exp(-self.gap_amps[igap])
        if self.r_min_sigma is not None:
            sigma_unnorm[r < self.r_min_sigma] = 1e-10

        Sigma0 = (self.m_disk / np.trapz(sigma_unnorm * 2 * np.pi * r.to(u.cm), r.to(u.cm))).to(u.g / u.cm**2)
        self.Sigma_gas = np.zeros(self.r.shape) * u.g / u.cm**2
        for iz in range(self.vertical_bins):
            self.Sigma_gas[iz, :] = Sigma0 * sigma_unnorm

    def get_star_params(self):
        """Following ANDES2, Akimkin+2013
            """
        if (self.r_star is not None) and (self.t_star is not None) and (self.l_star is not None):
            pass
        elif (self.r_star is not None) and (self.t_star is not None):
            self.l_star = (4*np.pi*self.r_star**2 * c.sigma_sb * self.t_star**4).to(u.Lsun)
        elif (self.l_star is not None) and (self.t_star is not None):
            self.r_star = (np.sqrt(self.l_star/(4*np.pi * c.sigma_sb * self.t_star**4))).to(u.Rsun)
        elif (self.r_star is not None) and (self.l_star is not None):
            self.t_star = ((self.l_star / (4 * np.pi * c.sigma_sb * self.r_star ** 2))**(0.25)).to(u.K)
        elif self.age is not None:
            yb08 = YorkeBodenheimer2008(lt = self.age)
            self.r_star = yb08.radius(mass=self.m_star)
            self.t_star = yb08.effective_temperature(mass=self.m_star)
            self.l_star = (4*np.pi*self.r_star**2 * c.sigma_sb * self.t_star**4).to(u.Lsun)
        else:
            raise ValueError("Star parameters incomplete. Please clarify age to get parameters from evolutionary tracks or two of the parameters manually")

        self.r_acc = (np.sqrt(self.l_acc/(4*np.pi * c.sigma_sb * self.t_acc**4))).to(u.Rsun)

    def dust_temperature_parametric(self):
        """Following ANDES2, Akimkin+2013
                    """
        dust_temperature_mp = ((self.grazang/2 * (self.r_star**2 * self.t_star**4 / self.r**2 + self.r_acc**2 * self.t_acc**4 / self.r**2))**0.25).to(u.K)
        z_q = 4*np.sqrt(2*c.k_B *dust_temperature_mp*self.r**3/((2.3*c.m_p)*c.G*self.m_star)).to(u.au)
        dust_temperature_at = (self.amratio*(self.grazang * (self.r_star**2 * self.t_star**4 / self.r**2 + self.r_acc**2 * self.t_acc**4 / self.r**2))**0.25).to(u.K)
        dtemperature = dust_temperature_at
        mask = self.z < z_q
        cosarg = np.pi*(self.z[mask]/(2*z_q[mask])).to(u.dimensionless_unscaled).value * u.rad
        dtemperature[mask] = (dust_temperature_at[mask] + (dust_temperature_mp[mask] - dust_temperature_at[mask])*
                                       (np.cos(cosarg))**2)
        if self.dust_sizes is not None:
            self.dust_temperature = np.zeros((len(self.dust_sizes), self.vertical_bins, self.radial_bins)) * u.K
            for idust in range(len(self.dust_sizes)):
                self.dust_temperature[idust, :, :] = dtemperature
        else:
            raise ValueError("No dust sizes given, please clarify at least one")

    def dust_temperature_radmc(self, nphot_therm: int = 100000, threads: int = 1, nphotdiff: float = None, nphotdiff_type: int = None,
                               stellar_template: Union[None, u.Quantity] = None,
                               wavelengths=np.geomspace(0.0913, 10000, 1000) * u.um,
                               istar_sphere: int = None, rewrite_files=False, 
                               nearest_read=False, nearest_write=False):
        map = RadMCTherm(folder=self.radmc_folder, chemistry=self,
                         star_radius=self.r_star, star_effective_temperature=self.t_star,
                         accretion_luminosity=self.l_acc, accretion_temperature=self.t_acc,
                         nphot_therm=nphot_therm, nphotdiff=nphotdiff, nphotdiff_type=nphotdiff_type,
                         stellar_template=stellar_template, wavelengths=wavelengths, istar_sphere=istar_sphere)
        map.create_files()
        if rewrite_files:
            map.dust_temperature(nearest=nearest_write)
            return
        map.run(threads=threads, see_radmc_warnings=False)
        map.read_dust_temperature(nearest=nearest_read)
        for idust in range(len(self.dust_sizes)):
            self.table[f"{self.dust_names[idust]} temperature"] = map.table[f"{self.dust_names[idust]} temperature"]
            dtemp = map.table[f"{self.dust_names[idust]} temperature"]
            self.dust_temperature[idust, :, :] = np.reshape(dtemp, (self.vertical_bins, self.radial_bins))

    def make_sed(self, inclination: u.deg = 0 * u.deg):
        map = RadMCRTSED(folder=self.radmc_folder, chemistry=self,
                         star_radius=self.r_star, star_effective_temperature=self.t_star,
                         add_luminosity=[self.l_acc], add_temperature=[self.t_acc])
        map.run(inclination=inclination, see_radmc_warnings=False)

    def make_cont(self, inclination: u.deg = 0 * u.deg, wavs: u.um = [500]*u.um, distance: u.pc = 140*u.pc,
                  npix: int = 100, posang: u.deg = 0 * u.deg, see_radmc_warnings: bool=False,
                  sizeau: float = None, sizepc: float = None, pointau = None, pointpc = None):
        map = RadMCRTCont(folder=self.radmc_folder, chemistry=self,
                         star_radius=self.r_star, star_effective_temperature=self.t_star)
        map.camera_wavelength_micron(wavs=wavs)
        map.run(inclination=inclination, see_radmc_warnings=see_radmc_warnings, distance=distance, npix=npix, 
                position_angle=posang, sizeau=sizeau, sizepc=sizepc, pointau=pointau, pointpc=pointpc)

    def dust_mass_fraction(self):
        if self.dust_massfrac is None:
            # Assuming discrete MRN
            if (type(self.dust_distroindex) == float):
                self.dust_distroindex = np.zeros(self.r.shape) + self.dust_distroindex
            elif (len(self.dust_distroindex) == 1):
                self.dust_distroindex = np.zeros(self.r.shape) + self.dust_distroindex[0]
            elif (self.dust_distroindex.shape != self.r.shape):
                raise IndexError("Given dust size distribution index array doesn't match the spatial grid in shape")
            self.dust_massfrac = np.zeros((len(self.dust_sizes), self.vertical_bins, self.radial_bins))
            size_ratios = np.zeros((len(self.dust_sizes), self.vertical_bins, self.radial_bins))
            for idust in range(len(self.dust_sizes)):
                size_ratios[idust, :, :] = (self.dust_sizes[idust]/self.dust_sizes[0])**(3+self.dust_distroindex)

            self.dust_massfrac[0, :, :] = 1/np.sum(size_ratios, axis=0)
            for idust in range(1, len(self.dust_sizes)):
                self.dust_massfrac[idust, :, :] = self.dust_massfrac[0, :, :] * size_ratios[idust, :, :]

        if (type(self.dust_to_gas) == float):
            self.dust_to_gas = np.zeros(self.r.shape) + self.dust_to_gas
        elif (len(self.dust_to_gas) == 1):
            self.dust_to_gas = np.zeros(self.r.shape) + self.dust_to_gas[0]
        elif (self.dust_to_gas.shape != self.r.shape):
            raise IndexError("Given dust to gas ratio array doesn't match the spatial grid in shape")

        try:
            if (len(self.monomer_density) == 1):
                self.monomer_density = np.zeros(len(self.dust_sizes))*self.monomer_density[0].unit + self.monomer_density[0]
            elif (len(self.monomer_density) != len(self.dust_sizes)):
                raise IndexError("Given monomer density array doesn't match dust size array in size")
        except TypeError:
            self.monomer_density = np.zeros(len(self.dust_sizes))*self.monomer_density.unit + self.monomer_density

        if (type(self.alpha_settle) == float):
            self.alpha_settle = np.zeros(len(self.dust_sizes)) + self.alpha_settle
        elif (len(self.alpha_settle) == 1):
            self.alpha_settle = np.zeros(len(self.dust_sizes)) + self.alpha_settle[0]
        elif (len(self.alpha_settle) != len(self.dust_sizes)):
            raise IndexError("Given dust to gas ratio array doesn't match radial bins in size")

        try:
            if (len(self.sublim_temp) == 1):
                self.sublim_temp = np.zeros(len(self.dust_sizes))*self.sublim_temp[0].unit + self.sublim_temp[0]
            elif (len(self.sublim_temp) != len(self.dust_sizes)):
                raise IndexError("Given sublimation temperature array doesn't match dust size array in size")
        except TypeError:
            self.sublim_temp = np.zeros(len(self.dust_sizes))*self.sublim_temp.unit + self.sublim_temp

        if (type(self.sublim_pwlindex) == float):
            self.sublim_pwlindex = np.zeros(len(self.dust_sizes)) + self.sublim_pwlindex
        elif (len(self.sublim_pwlindex) == 1):
            self.sublim_pwlindex = np.zeros(len(self.dust_sizes)) + self.sublim_pwlindex[0]
        elif (len(self.sublim_pwlindex) != len(self.dust_sizes)):
            raise IndexError("Given dust to gas ratio array doesn't match dust size array in size")


    def dust_density(self):
        if self.dust_sizes is not None:
            self.rho_dust = np.zeros((len(self.dust_sizes), self.vertical_bins, self.radial_bins)) * u.g/u.cm**3
            if (self.h_d is not None) and (self.psi_d is not None):
                if len(self.h_d) == 1:
                    self.h_d = np.zeros((len(self.dust_sizes))) + self.h_d[0]
                if len(self.psi_d) == 1:
                    self.psi_d = np.zeros((len(self.dust_sizes))) + self.psi_d[0]
                for idust in range(len(self.dust_sizes)):
                    H = self.h_d[idust] * self.r * ((self.r / self.r_c).to(u.dimensionless_unscaled)) ** (self.psi_d[idust])
                    self.rho_dust[idust, :, :] = (self.Sigma_gas / (H * np.sqrt(2 * np.pi)) * np.exp((-self.z ** 2 / (2 * H ** 2).to(u.dimensionless_unscaled)))).to(
                        u.g / u.cm ** 3)
            elif (self.h_d is not None) or (self.psi_d is not None):
                raise ValueError(
                    "You clarified one of the parameters for dust vertical structure but not the other, please clarify further")
            else:
                if self.dust_settling is not None:
                    Omega_K = np.sqrt(c.G*self.m_star/self.r**3)
                    rho0 = np.zeros(self.rho_gas.shape) * u.g/u.cm**3
                    for iz in range(self.vertical_bins):
                        rho0[iz, :] = self.rho_gas[0, :]
                    gas_scale_height = np.zeros(self.rho_gas.shape) * u.au
                    gas_scale_height_max = self.z[-1, :]/np.sqrt(2*np.log(self.rho_gas[0, :]/self.rho_gas[-1, :]))
                    for iz in range(self.vertical_bins):
                        gas_scale_height[iz, :] = gas_scale_height_max
                        
                    c_s = np.sqrt(c.k_B * self.gas_temperature/(2.3*c.m_p))
                                
                    for idust in range(len(self.dust_sizes)):
                        if self.alpha_settle[idust] < 1e4:
                            nstokes = self.monomer_density[idust]*self.dust_sizes[idust]*Omega_K/(self.rho_gas*c_s)
                            if self.dust_settling == 'DD04': #Could be incorrect!!
                                lamw_z = (self.alpha_settle[idust]*self.Sigma_gas/
                                            (2*np.sqrt(2*np.pi)*self.monomer_density[idust]*self.dust_sizes[idust]*(1+nstokes))).to(u.dimensionless_unscaled).value
                                dust_scale_height = gas_scale_height * np.sqrt(2*lambertw(lamw_z).real)
                            elif self.dust_settling == "Woitke+16":
                                dust_scale_height = gas_scale_height * np.sqrt(1/(1+nstokes/self.alpha_settle[idust]))
                            elif self.dust_settling == "Woitke+24":
                                t_stop0 = self.monomer_density[idust] * self.dust_sizes[idust] / rho0 / c_s
                                settl_factor = 1 + Omega_K*t_stop0/self.alpha_settle[idust] * (2*gas_scale_height**2 / self.z**2) * (np.exp(self.z**2/2/gas_scale_height**2) - 1)
                                settl_factor[0, :] = settl_factor[1, :]
                                dust_scale_height = gas_scale_height / np.sqrt(settl_factor)
                            else:
                                raise ValueError("Unknown type of dust settling. Please choose between DD04 and Woitke+2016")
                            self.rho_dust[idust, :, :] = (self.Sigma_gas*self.dust_to_gas*self.dust_massfrac[idust, :, :]/(dust_scale_height*np.sqrt(2*np.pi))
                                                            * np.exp((-self.z**2/(2*dust_scale_height**2)).to(u.dimensionless_unscaled))).to(u.g/u.cm**3)
                        else:
                            self.rho_dust[idust, :, :] = self.rho_gas * self.dust_to_gas * self.dust_massfrac[idust, :, :]
                else:
                    for idust in range(len(self.dust_sizes)):
                        self.rho_dust[idust, :, :] = self.rho_gas * self.dust_to_gas * self.dust_massfrac[idust, :, :]

            for idust in range(len(self.dust_sizes)):
                for ir in range(self.radial_bins):
                    norm = np.trapz(self.rho_dust[idust, :, ir], x=self.z[:, ir].to(u.cm)).to(u.g/u.cm**2)
                    self.rho_dust[idust, :, ir] *= self.Sigma_gas[0, ir]*self.dust_to_gas[:, ir]*self.dust_massfrac[idust, :, ir]/norm
                mask = self.rho_dust[idust, :, :] < self.envelope_density * self.dust_to_gas * self.dust_massfrac[idust, :, :]
                self.rho_dust[idust, :, :][mask] = self.envelope_density * self.dust_to_gas[mask] * self.dust_massfrac[idust, :, :][mask]


            self.rho_dust_orig = self.rho_dust.copy()

    def add_dust_density(self, frac=0.1, h_d=None, psi_d=None, alpha_dw=None, no_settle=False, rlims=None):
        if alpha_dw is None:
            for idust in range(len(self.dust_sizes)):
                H = h_d[idust] * self.r * ((self.r / self.r_c).to(u.dimensionless_unscaled)) ** (psi_d[idust])
                rho_dust_add = (frac * self.Sigma_gas / (H * np.sqrt(2 * np.pi)) * np.exp(
                    (-self.z ** 2 / (2 * H ** 2)).to(u.dimensionless_unscaled))).to(
                    u.g / u.cm ** 3)
                if rlims is not None:
                    rmask = (self.r<rlims[1]) & (self.r>rlims[0])
                    rho_dust_add[~rmask] = 0
                self.rho_dust[idust] += rho_dust_add
        else:
            if no_settle:
                for idust in range(len(self.dust_sizes)):
                    rho_dust_add = frac * self.rho_gas * self.dust_to_gas * self.dust_massfrac[
                        idust]
                    if rlims is not None:
                        rmask = (self.r < rlims[1]) & (self.r > rlims[0])
                        rho_dust_add[~rmask] = 0
                    self.rho_dust[idust] += rho_dust_add
            else:
                Omega_K = np.sqrt(c.G * self.m_star / self.r ** 3)
                rho0 = np.zeros(self.rho_gas.shape) * u.g / u.cm ** 3
                for iz in range(self.vertical_bins):
                    rho0[iz, :] = self.rho_gas[0, :]
                gas_scale_height = np.zeros(self.rho_gas.shape) * u.au
                gas_scale_height_max = self.z[-1, :] / np.sqrt(
                    2 * np.log(self.rho_gas[0, :] / self.rho_gas[-1, :]))
                for iz in range(self.vertical_bins):
                    gas_scale_height[iz, :] = gas_scale_height_max

                c_s = np.sqrt(c.k_B * self.gas_temperature / (2.3 * c.m_p))

                for idust in range(len(self.dust_sizes)):
                    nstokes = (self.monomer_density[idust] * self.dust_sizes[idust] * Omega_K / (
                                self.rho_gas * c_s)).to(u.dimensionless_unscaled)
                    if self.dust_settling == 'DD04':  # Could be incorrect!!
                        lamw_z = (alpha_dw[idust] * self.Sigma_gas /
                                  (2 * np.sqrt(2 * np.pi) * self.monomer_density[idust] * self.dust_sizes[idust] * (
                                              1 + nstokes))).to(u.dimensionless_unscaled).value
                        dust_scale_height = gas_scale_height * np.sqrt(2 * lambertw(lamw_z).real)
                    elif self.dust_settling == "Woitke+16":
                        dust_scale_height = gas_scale_height * np.sqrt(1 / (1 + nstokes / alpha_dw[idust]))
                    else:
                        raise ValueError("Unknown type of dust settling. Please choose between DD04 and Woitke+2016")
                    rho_dust_add = (
                                frac * self.Sigma_gas * self.dust_to_gas * self.dust_massfrac[idust] / (
                                    dust_scale_height * np.sqrt(2 * np.pi))
                                * np.exp(
                            (-self.z ** 2 / (2 * dust_scale_height ** 2)).to(u.dimensionless_unscaled))).to(
                        u.g / u.cm ** 3)
                    if rlims is not None:
                        rmask = (self.r < rlims[1]) & (self.r > rlims[0])
                        rho_dust_add[~rmask] = 0
                    self.rho_dust[idust] += rho_dust_add

        for idust in range(len(self.dust_sizes)):
            norm = np.trapz(self.rho_dust[idust, :, :], x=self.z.to(u.cm), axis=0).to(u.g / u.cm ** 2)
            for iz in range(self.vertical_bins):
                self.rho_dust[idust, iz, :] *= self.Sigma_gas[iz, :] * self.dust_to_gas[iz, :] * \
                                                  self.dust_massfrac[idust, iz, :] / norm

            mask = self.rho_dust[idust] < self.envelope_density * self.dust_to_gas * self.dust_massfrac[
                idust]
            self.rho_dust[idust][mask] = self.envelope_density * self.dust_to_gas[mask] * \
                                                  self.dust_massfrac[idust][mask]

        self.rho_dust_orig = self.rho_dust.copy()
        self.update_table()

    def gas_temperature_from_dust(self):
        weighted_temp = np.zeros((self.vertical_bins, self.radial_bins)) * u.K / u.cm
        dust_total_surface = np.zeros((self.vertical_bins, self.radial_bins)) / u.cm
        try:
            for idust in range(len(self.dust_sizes)):
                dust_surface = self.rho_dust[idust, :, :]/(4/3*self.dust_sizes[idust] * self.monomer_density[idust])
                weighted_temp += self.dust_temperature[idust, :, :]*dust_surface
                dust_total_surface += dust_surface
            self.gas_temperature = (weighted_temp/dust_total_surface).to(u.K)
        except AttributeError: # Catching a pre-RADMC case when all dust temps are equal
            self.gas_temperature = self.dust_temperature[0, :, :].copy()

    def sublimation_mask(self):
        mask = np.zeros(self.rho_dust.shape, dtype=bool)
        for idust in range(len(self.dust_sizes)):
            sublim_temp = self.sublim_temp[idust]*(self.rho_gas.to(u.g/u.cm**3).value)**self.sublim_pwlindex[idust] # Flock+2025
            mask[idust] = self.dust_temperature[idust] > sublim_temp

        return mask

    def check_dust_sublimation(self, deltaT: float = 100):

        # mask = self.sublimation_mask()
        # deleted_cells = np.sum(mask)
        # self.rho_dust[mask] *= reduction_factor

        dr = np.zeros(self.r.shape) * u.cm
        dr[:, :-1] = (self.r[:, 1:] - self.r[:, :-1])
        dr[:, -1] = self.r[:, -1] - self.r[:, -2]
        kappa_P = self.kappa_Pstar()
        tau_P = self.tau_radialP()
        fd2g = np.zeros(self.rho_dust.shape) + 1
        submask = self.sublimation_mask()
        for idust in range(len(self.dust_sizes)):
            fdt = 0.2 / (self.rho_dust[idust] * dr * kappa_P[idust]).to(u.dimensionless_unscaled).value
            fdt[fdt > 1] = 1
            sublim_temp = self.sublim_temp[idust] * (self.rho_gas.to(u.g / u.cm ** 3).value) ** self.sublim_pwlindex[idust]  # Flock+2025
            mask = submask[idust]
            tanh_arg1 = ((self.dust_temperature[idust][mask] - sublim_temp[mask]).to(u.K).value / (deltaT)) ** 3
            fd2g[idust][mask] = fdt[mask] * (0.5 * (1 - np.tanh(tanh_arg1))) * (
                        0.5 * (1 - np.tanh(2. / 3. - tau_P[idust][mask])))  # Flock+2019

        self.rho_dust = self.rho_dust_orig * fd2g

        for idust in range(len(self.dust_sizes)):
            mask = self.rho_dust[idust] < self.envelope_density * self.dust_to_gas * self.dust_massfrac[idust]
            self.rho_dust[idust][mask] = self.envelope_density * self.dust_to_gas[mask] * self.dust_massfrac[idust][
                mask]

        self.update_table()

    def gas_density(self):
        if (self.h_g is not None) and (self.psi_g is not None):
            H = self.h_g * self.r * ((self.r/self.r_c).to(u.dimensionless_unscaled))**(self.psi_g)
            self.rho_gas = (self.Sigma_gas/(H*np.sqrt(2*np.pi)) * np.exp((-self.z**2/(2*H**2)).to(u.dimensionless_unscaled))).to(u.g/u.cm**3)
            for ir in range(self.radial_bins):
                norm = np.trapz(self.rho_gas[:, ir], x=self.z[:, ir].to(u.cm)).to(u.g / u.cm ** 2)
                self.rho_gas[:, ir] *= self.Sigma_gas[0, ir] / norm
        elif (self.h_g is not None) or (self.psi_g is not None):
            raise ValueError("You clarified one of the parameters for vertical structure but not the other, please clarify further")
        else:
            powerexp_und = -c.G * self.m_star * (2.3 * c.m_p) / (c.k_B * (self.gas_temperature)) * self.z/np.sqrt(self.r**2 + self.z**2)**3
            powerexp = np.zeros(powerexp_und.shape)
            N0 = np.zeros(powerexp_und.shape) * (u.cm/u.K)
            T0 = np.zeros(powerexp_und.shape) * u.K
            for ir in range(self.radial_bins):
                for iz in range(self.vertical_bins):
                    powerexp[iz, ir] = np.trapz(powerexp_und[:iz+1, ir], x=self.z[:iz+1, ir].to(u.cm)).to(u.dimensionless_unscaled).value
                N0[:, ir] = np.trapz(np.exp(powerexp[:, ir]) / self.gas_temperature[:, ir], x=self.z[:, ir].to(u.cm))
                T0[:, ir] = self.gas_temperature[0, ir]

            rho0 = self.Sigma_gas/(2*N0*T0)
            self.rho_gas = (T0/self.gas_temperature * rho0 * np.exp(powerexp)).to(u.g/u.cm**3)

        mask = self.rho_gas < self.envelope_density
        self.rho_gas[mask] = self.envelope_density

    def iterate_vertical_structure(self, nphot_therm: int = 100000, threads: int = 1, eps: float = 1e-2, max_iter: int = 20, nphotdiff: float = None,
                                   nphotdiff_type: int = None, stellar_template: Union[None, u.Quantity] = None,
                                   wavelengths=np.geomspace(0.0913, 10000, 1000) * u.um,
                                   istar_sphere: int = None):
        iloop=1
        print("Starting vertical structure iteration")
        print("max dT/T      mean dT/T      max drho/rho       mean drho/rho")
        while True:
            self.dust_temperature_radmc(nphot_therm=nphot_therm, threads=threads, nphotdiff=nphotdiff, nphotdiff_type=nphotdiff_type,
                                        stellar_template=stellar_template, wavelengths=wavelengths, istar_sphere=istar_sphere)
            gas_temperature_before = self.gas_temperature.copy()
            self.gas_temperature_from_dust()
            gas_density_before = self.rho_gas.copy()
            self.gas_density()
            self.dust_density()
            self.update_table()
            max_temp_dif = np.max(abs(gas_temperature_before/self.gas_temperature - 1))
            mean_temp_dif = np.mean(abs(gas_temperature_before/self.gas_temperature - 1))
            max_dens_dif = np.max(abs(gas_density_before/self.rho_gas - 1))
            mean_dens_dif = np.mean(abs(gas_density_before/self.rho_gas - 1))
            print(f"{max_temp_dif:.3e}     {mean_temp_dif:.3e}    {max_dens_dif:.3e}     {mean_dens_dif:.3e}")
            max_dif = np.max([max_temp_dif, max_dens_dif])
            if max_dif < eps:
                print(f"Convergence successful")
                return
            iloop += 1
            if iloop > max_iter:
                print(f"Structure did not converge after {max_iter} iterations. Proceeding as is.")
                return

    def iterate_settle_sublimation(self, nphot_therm: int = 100000, threads: int = 1, eps=1e-2, max_iter: int = 20, nphotdiff: float = None,
                                   nphotdiff_type: int = None, stellar_template: Union[None, u.Quantity] = None,
                                   wavelengths=np.geomspace(0.0913, 10000, 1000) * u.um,
                                   istar_sphere: int = None, include_settle: bool = False, shut_output: bool = False, deltaT: float = 100):
        iloop=1
        if not shut_output:
            if include_settle:
                print("Starting dust sublimation and settling iteration")
            else:
                print("Starting dust sublimation iteration")
        while True:
            dust_temp_before = self.dust_temperature.copy()
            self.dust_temperature_radmc(nphot_therm=nphot_therm, threads=threads, nphotdiff=nphotdiff,
                                        nphotdiff_type=nphotdiff_type,
                                        stellar_template=stellar_template, wavelengths=wavelengths,
                                        istar_sphere=istar_sphere)
            if include_settle:
                self.gas_temperature_from_dust()
                self.dust_density()
            check_mask = self.dust_temperature > 1000 * u.K
            max_temp_dif = np.max(abs(dust_temp_before[check_mask] / self.dust_temperature[check_mask] - 1))
            if not shut_output:
                print(f"max temp diff: {max_temp_dif}, iteration {iloop}")
            if max_temp_dif <= eps:
                if not shut_output:
                    print(f"Convergence successful")
                return
            self.check_dust_sublimation(deltaT=deltaT)
            iloop += 1
            if iloop > max_iter:
                if not shut_output:
                    print(f"Iteration did not converge after {max_iter} iterations. Proceeding as is.")
                return

    def tau_radialP(self):
        tau_radialP = np.zeros(self.rho_dust.shape)
        kappa_P = self.kappa_Pstar()
        for idust in range(len(self.dust_sizes)):
            alpha_P = (kappa_P[idust] * self.rho_dust[idust]).to(1 / u.cm)
            for ir in range(self.radial_bins):
                tau_radialP[idust, :, ir] = np.trapz(alpha_P[:, :ir+1], x=self.r[:, :ir+1].to(u.cm), axis=1)

        return tau_radialP

    def kappa_Pstar(self):
        kappa_P = np.zeros(len(self.dust_sizes)) * u.cm ** 2 / u.g
        for idust in range(len(self.dust_sizes)):
            dust_spice = self.table.dust_list[idust]

            opac = np.loadtxt(dust_spice.opacity_file, skiprows=2).transpose()
            wav = (opac[0, :] * u.um)
            kappa = opac[1,:] * u.cm ** 2 / u.g
            bbody = 2 * c.h * c.c ** 2 / wav** 5 * 1 / (np.exp((c.h * c.c / (wav * c.k_B * self.t_star)).to(u.dimensionless_unscaled)) - 1)
            int_planck = np.trapz(bbody*kappa, x=wav)
            int_down = np.trapz(bbody, x=wav)

        return kappa_P

    def create_table(self) -> CTable:
        """Return the associated diskchef.CTable with r, z, and dust and gas properties"""
        table = CTable(
            [
                self.r.flatten(),
                self.z.flatten()
            ],
            names=["Radius", "Height"]
        )
        table["Height to radius"] = u.Quantity(self.zr.flatten())
        table["Gas density"] = self.rho_gas.flatten()
        for idust in range(len(self.dust_sizes)):
            table[f"{self.dust_names[idust]} density"] = self.rho_dust[idust, :, :].flatten()
        table["Gas temperature"] = self.gas_temperature.flatten()
        for idust in range(len(self.dust_sizes)):
            table[f"{self.dust_names[idust]} temperature"] = self.dust_temperature[idust, :, :].flatten()

        if self.is_zr_regular:
            table.sort(['Height to radius', 'Radius'])
        else:
            table.sort(['Height', 'Radius'])

        table.dust_list = [DustPopulationOptool(opacity_file=f'{self.radmc_folder}/dustkappa_{self.dust_names[i]}.inp', table=table,
                                                name=self.dust_names[i], size=self.dust_sizes[i]) for i in range(len(self.dust_sizes))]
        return table

    def update_table(self):
        self.table["Gas density"] = self.rho_gas.flatten()
        for idust in range(len(self.dust_sizes)):
            self.table[f"{self.dust_names[idust]} density"] = self.rho_dust[idust, :, :].flatten()
        self.table["Gas temperature"] = self.gas_temperature.flatten()
        for idust in range(len(self.dust_sizes)):
            self.table[f"{self.dust_names[idust]} temperature"] = self.dust_temperature[idust, :, :].flatten()

    def ini_grid(self):
        for igr in range(len(self.radial_bins)):
            add_radii = np.geomspace(self.r_grid[igr].to(u.au).value, self.r_grid[igr + 1].to(u.au).value,
                                     self.radial_bins[igr])
            if igr == 0:
                self.radii = add_radii.copy()
            else:
                self.radii = np.concatenate((self.radii, add_radii[1:]), axis=None)
        self.radial_bins = sum(self.radial_bins) - igr
        if self.is_zr_regular:
            zr, r = np.meshgrid(np.linspace(self.zr_min, self.zr_max, self.vertical_bins), self.radii,
                                indexing='ij'
                                )
        else:
            if self.zr_min < 0:
                z_min = self.zr_min * self.r_grid[-1].to(u.au).value
            else:
                z_min = self.zr_min * self.r_grid[0].to(u.au).value
            z, r = np.meshgrid(np.linspace(z_min, self.zr_max * self.r_grid[-1].to(u.au).value, self.vertical_bins),
                               self.radii,
                               indexing='ij'
                               )
        self.r = (r * u.au)
        if self.is_zr_regular:
            self.zr = zr
            self.z = self.r * self.zr
        else:
            self.z = (z * u.au)
            self.zr = (self.z / self.r).to(u.dimensionless_unscaled).value

    def __post_init__(self):
        self.ini_grid()
        self.get_star_params()
        self.gas_surface_density()
        self.dust_temperature_parametric()
        self.gas_temperature_from_dust()
        self.gas_density()
        self.dust_mass_fraction()
        self.dust_density()
        self.table = self.create_table()
        # self.check_dust_sublimation()

Ancestors

Class variables

var age : Unit("Myr")
var alpha_settle : float
var amratio : float
var dust_distroindex : float
var dust_massfrac : List[float]
var dust_names : List[str]
var dust_settling : str
var dust_sizes : Unit("cm")
var dust_to_gas : float
var envelope_density : Unit("g / cm3")
var gamma_in : float
var gamma_pwl : float
var gamma_tap : float
var gap_amps : List[float]
var gap_positions : Unit("AU")
var gap_type : str
var gap_widths : Unit("AU")
var grazang : float
var h_d : List[float]
var h_g : float
var is_zr_regular : bool
var l_acc : Unit("solLum")
var l_star : Unit("solLum")
var m_disk : Unit("solMass")
var m_star : Unit("solMass")
var monomer_density : Unit("g / cm3")
var psi_d : List[float]
var psi_g : float
var r_c : Unit("AU")
var r_c_in : Unit("AU")
var r_grid : Unit("AU")
var r_min_sigma : Unit("AU")
var r_star : Unit("solRad")
var radial_bins : int
var radmc_folder : str
var sublim_pwlindex : float
var sublim_temp : Unit("K")
var t_acc : Unit("K")
var t_star : Unit("K")
var vertical_bins : int
var zr_max : float
var zr_min : float

Methods

def add_dust_density(self, frac=0.1, h_d=None, psi_d=None, alpha_dw=None, no_settle=False, rlims=None)
def check_dust_sublimation(self, deltaT: float = 100)
def create_table(self) ‑> CTable

Return the associated diskchef.CTable with r, z, and dust and gas properties

def dust_density(self)
def dust_mass_fraction(self)
def dust_temperature_parametric(self)

Following ANDES2, Akimkin+2013

def dust_temperature_radmc(self, nphot_therm: int = 100000, threads: int = 1, nphotdiff: float = None, nphotdiff_type: int = None, stellar_template: Optional[None] = None, wavelengths=<Quantity [9.13000000e-02, 9.23666837e-02, 9.34458298e-02, 9.45375839e-02, 9.56420933e-02, 9.67595069e-02, 9.78899756e-02, 9.90336519e-02, 1.00190690e-01, 1.01361246e-01, 1.02545478e-01, 1.03743546e-01, 1.04955611e-01, 1.06181838e-01, 1.07422390e-01, 1.08677436e-01, 1.09947145e-01, 1.11231689e-01, 1.12531240e-01, 1.13845975e-01, 1.15176069e-01, 1.16521704e-01, 1.17883060e-01, 1.19260321e-01, 1.20653673e-01, 1.22063304e-01, 1.23489404e-01, 1.24932166e-01, 1.26391784e-01, 1.27868455e-01, 1.29362378e-01, 1.30873756e-01, 1.32402791e-01, 1.33949690e-01, 1.35514662e-01, 1.37097918e-01, 1.38699672e-01, 1.40320140e-01, 1.41959539e-01, 1.43618093e-01, 1.45296024e-01, 1.46993558e-01, 1.48710926e-01, 1.50448358e-01, 1.52206088e-01, 1.53984355e-01, 1.55783398e-01, 1.57603459e-01, 1.59444785e-01, 1.61307624e-01, 1.63192226e-01, 1.65098847e-01, 1.67027744e-01, 1.68979176e-01, 1.70953408e-01, 1.72950705e-01, 1.74971337e-01, 1.77015577e-01, 1.79083700e-01, 1.81175985e-01, 1.83292715e-01, 1.85434176e-01, 1.87600656e-01, 1.89792448e-01, 1.92009847e-01, 1.94253152e-01, 1.96522666e-01, 1.98818696e-01, 2.01141551e-01, 2.03491545e-01, 2.05868994e-01, 2.08274220e-01, 2.10707547e-01, 2.13169303e-01, 2.15659820e-01, 2.18179435e-01, 2.20728487e-01, 2.23307320e-01, 2.25916283e-01, 2.28555727e-01, 2.31226008e-01, 2.33927487e-01, 2.36660528e-01, 2.39425500e-01, 2.42222776e-01, 2.45052733e-01, 2.47915753e-01, 2.50812223e-01, 2.53742533e-01, 2.56707079e-01, 2.59706261e-01, 2.62740482e-01, 2.65810154e-01, 2.68915689e-01, 2.72057507e-01, 2.75236032e-01, 2.78451692e-01, 2.81704922e-01, 2.84996161e-01, 2.88325852e-01, 2.91694444e-01, 2.95102393e-01, 2.98550158e-01, 3.02038204e-01, 3.05567001e-01, 3.09137027e-01, 3.12748763e-01, 3.16402695e-01, 3.20099317e-01, 3.23839128e-01, 3.27622632e-01, 3.31450340e-01, 3.35322768e-01, 3.39240439e-01, 3.43203881e-01, 3.47213629e-01, 3.51270224e-01, 3.55374214e-01, 3.59526151e-01, 3.63726597e-01, 3.67976118e-01, 3.72275287e-01, 3.76624684e-01, 3.81024897e-01, 3.85476519e-01, 3.89980150e-01, 3.94536399e-01, 3.99145879e-01, 4.03809213e-01, 4.08527031e-01, 4.13299967e-01, 4.18128668e-01, 4.23013783e-01, 4.27955973e-01, 4.32955904e-01, 4.38014250e-01, 4.43131695e-01, 4.48308928e-01, 4.53546648e-01, 4.58845562e-01, 4.64206384e-01, 4.69629839e-01, 4.75116657e-01, 4.80667579e-01, 4.86283355e-01, 4.91964741e-01, 4.97712504e-01, 5.03527420e-01, 5.09410274e-01, 5.15361858e-01, 5.21382976e-01, 5.27474441e-01, 5.33637074e-01, 5.39871707e-01, 5.46179181e-01, 5.52560347e-01, 5.59016066e-01, 5.65547209e-01, 5.72154657e-01, 5.78839302e-01, 5.85602045e-01, 5.92443800e-01, 5.99365488e-01, 6.06368045e-01, 6.13452414e-01, 6.20619553e-01, 6.27870426e-01, 6.35206014e-01, 6.42627306e-01, 6.50135303e-01, 6.57731017e-01, 6.65415475e-01, 6.73189712e-01, 6.81054778e-01, 6.89011734e-01, 6.97061653e-01, 7.05205622e-01, 7.13444738e-01, 7.21780115e-01, 7.30212877e-01, 7.38744160e-01, 7.47375117e-01, 7.56106912e-01, 7.64940723e-01, 7.73877742e-01, 7.82919175e-01, 7.92066241e-01, 8.01320175e-01, 8.10682226e-01, 8.20153656e-01, 8.29735743e-01, 8.39429780e-01, 8.49237076e-01, 8.59158953e-01, 8.69196750e-01, 8.79351822e-01, 8.89625538e-01, 9.00019285e-01, 9.10534465e-01, 9.21172497e-01, 9.31934816e-01, 9.42822874e-01, 9.53838141e-01, 9.64982102e-01, 9.76256261e-01, 9.87662139e-01, 9.99201275e-01, 1.01087523e+00, 1.02268557e+00, 1.03463389e+00, 1.04672181e+00, 1.05895096e+00, 1.07132298e+00, 1.08383955e+00, 1.09650236e+00, 1.10931311e+00, 1.12227352e+00, 1.13538536e+00, 1.14865039e+00, 1.16207040e+00, 1.17564720e+00, 1.18938262e+00, 1.20327851e+00, 1.21733675e+00, 1.23155924e+00, 1.24594790e+00, 1.26050466e+00, 1.27523149e+00, 1.29013038e+00, 1.30520334e+00, 1.32045240e+00, 1.33587962e+00, 1.35148708e+00, 1.36727689e+00, 1.38325117e+00, 1.39941208e+00, 1.41576181e+00, 1.43230256e+00, 1.44903655e+00, 1.46596606e+00, 1.48309335e+00, 1.50042075e+00, 1.51795059e+00, 1.53568524e+00, 1.55362708e+00, 1.57177855e+00, 1.59014208e+00, 1.60872016e+00, 1.62751530e+00, 1.64653002e+00, 1.66576689e+00, 1.68522852e+00, 1.70491752e+00, 1.72483656e+00, 1.74498831e+00, 1.76537550e+00, 1.78600088e+00, 1.80686724e+00, 1.82797738e+00, 1.84933416e+00, 1.87094045e+00, 1.89279918e+00, 1.91491329e+00, 1.93728576e+00, 1.95991962e+00, 1.98281791e+00, 2.00598374e+00, 2.02942021e+00, 2.05313050e+00, 2.07711781e+00, 2.10138536e+00, 2.12593644e+00, 2.15077436e+00, 2.17590246e+00, 2.20132415e+00, 2.22704284e+00, 2.25306201e+00, 2.27938517e+00, 2.30601588e+00, 2.33295771e+00, 2.36021432e+00, 2.38778937e+00, 2.41568659e+00, 2.44390974e+00, 2.47246263e+00, 2.50134911e+00, 2.53057308e+00, 2.56013848e+00, 2.59004930e+00, 2.62030958e+00, 2.65092340e+00, 2.68189489e+00, 2.71322822e+00, 2.74492764e+00, 2.77699740e+00, 2.80944185e+00, 2.84226535e+00, 2.87547234e+00, 2.90906730e+00, 2.94305476e+00, 2.97743930e+00, 3.01222557e+00, 3.04741825e+00, 3.08302210e+00, 3.11904192e+00, 3.15548257e+00, 3.19234896e+00, 3.22964608e+00, 3.26737895e+00, 3.30555266e+00, 3.34417237e+00, 3.38324328e+00, 3.42277067e+00, 3.46275987e+00, 3.50321627e+00, 3.54414534e+00, 3.58555259e+00, 3.62744362e+00, 3.66982407e+00, 3.71269966e+00, 3.75607618e+00, 3.79995948e+00, 3.84435549e+00, 3.88927018e+00, 3.93470962e+00, 3.98067995e+00, 4.02718736e+00, 4.07423813e+00, 4.12183861e+00, 4.16999521e+00, 4.21871445e+00, 4.26800288e+00, 4.31786717e+00, 4.36831403e+00, 4.41935028e+00, 4.47098280e+00, 4.52321856e+00, 4.57606460e+00, 4.62952806e+00, 4.68361615e+00, 4.73833616e+00, 4.79369548e+00, 4.84970158e+00, 4.90636202e+00, 4.96368443e+00, 5.02167656e+00, 5.08034623e+00, 5.13970136e+00, 5.19974994e+00, 5.26050009e+00, 5.32196000e+00, 5.38413797e+00, 5.44704237e+00, 5.51068171e+00, 5.57506457e+00, 5.64019962e+00, 5.70609567e+00, 5.77276160e+00, 5.84020641e+00, 5.90843919e+00, 5.97746916e+00, 6.04730562e+00, 6.11795801e+00, 6.18943584e+00, 6.26174877e+00, 6.33490656e+00, 6.40891906e+00, 6.48379628e+00, 6.55954830e+00, 6.63618536e+00, 6.71371780e+00, 6.79215606e+00, 6.87151074e+00, 6.95179255e+00, 7.03301231e+00, 7.11518098e+00, 7.19830965e+00, 7.28240954e+00, 7.36749199e+00, 7.45356849e+00, 7.54065064e+00, 7.62875019e+00, 7.71787904e+00, 7.80804920e+00, 7.89927285e+00, 7.99156229e+00, 8.08492998e+00, 8.17938850e+00, 8.27495061e+00, 8.37162920e+00, 8.46943732e+00, 8.56838815e+00, 8.66849505e+00, 8.76977153e+00, 8.87223126e+00, 8.97588805e+00, 9.08075589e+00, 9.18684893e+00, 9.29418148e+00, 9.40276803e+00, 9.51262323e+00, 9.62376190e+00, 9.73619904e+00, 9.84994981e+00, 9.96502956e+00, 1.00814538e+01, 1.01992383e+01, 1.03183989e+01, 1.04389517e+01, 1.05609129e+01, 1.06842990e+01, 1.08091267e+01, 1.09354128e+01, 1.10631743e+01, 1.11924285e+01, 1.13231928e+01, 1.14554849e+01, 1.15893226e+01, 1.17247239e+01, 1.18617072e+01, 1.20002908e+01, 1.21404936e+01, 1.22823345e+01, 1.24258325e+01, 1.25710070e+01, 1.27178776e+01, 1.28664642e+01, 1.30167867e+01, 1.31688655e+01, 1.33227211e+01, 1.34783742e+01, 1.36358459e+01, 1.37951573e+01, 1.39563300e+01, 1.41193858e+01, 1.42843466e+01, 1.44512346e+01, 1.46200725e+01, 1.47908830e+01, 1.49636890e+01, 1.51385140e+01, 1.53153816e+01, 1.54943155e+01, 1.56753400e+01, 1.58584794e+01, 1.60437585e+01, 1.62312023e+01, 1.64208360e+01, 1.66126853e+01, 1.68067760e+01, 1.70031343e+01, 1.72017868e+01, 1.74027601e+01, 1.76060815e+01, 1.78117783e+01, 1.80198784e+01, 1.82304097e+01, 1.84434007e+01, 1.86588802e+01, 1.88768772e+01, 1.90974211e+01, 1.93205416e+01, 1.95462690e+01, 1.97746336e+01, 2.00056662e+01, 2.02393981e+01, 2.04758607e+01, 2.07150860e+01, 2.09571062e+01, 2.12019540e+01, 2.14496624e+01, 2.17002649e+01, 2.19537952e+01, 2.22102876e+01, 2.24697767e+01, 2.27322975e+01, 2.29978853e+01, 2.32665762e+01, 2.35384061e+01, 2.38134120e+01, 2.40916308e+01, 2.43731002e+01, 2.46578580e+01, 2.49459427e+01, 2.52373932e+01, 2.55322489e+01, 2.58305493e+01, 2.61323350e+01, 2.64376464e+01, 2.67465249e+01, 2.70590122e+01, 2.73751502e+01, 2.76949819e+01, 2.80185502e+01, 2.83458988e+01, 2.86770720e+01, 2.90121143e+01, 2.93510711e+01, 2.96939880e+01, 3.00409112e+01, 3.03918877e+01, 3.07469647e+01, 3.11061902e+01, 3.14696126e+01, 3.18372810e+01, 3.22092450e+01, 3.25855547e+01, 3.29662610e+01, 3.33514151e+01, 3.37410691e+01, 3.41352756e+01, 3.45340877e+01, 3.49375592e+01, 3.53457446e+01, 3.57586989e+01, 3.61764779e+01, 3.65991380e+01, 3.70267361e+01, 3.74593299e+01, 3.78969778e+01, 3.83397390e+01, 3.87876730e+01, 3.92408403e+01, 3.96993022e+01, 4.01631204e+01, 4.06323575e+01, 4.11070768e+01, 4.15873424e+01, 4.20732191e+01, 4.25647724e+01, 4.30620687e+01, 4.35651750e+01, 4.40741593e+01, 4.45890902e+01, 4.51100371e+01, 4.56370705e+01, 4.61702613e+01, 4.67096815e+01, 4.72554039e+01, 4.78075022e+01, 4.83660508e+01, 4.89311250e+01, 4.95028012e+01, 5.00811565e+01, 5.06662688e+01, 5.12582171e+01, 5.18570814e+01, 5.24629424e+01, 5.30758818e+01, 5.36959823e+01, 5.43233277e+01, 5.49580025e+01, 5.56000924e+01, 5.62496840e+01, 5.69068650e+01, 5.75717240e+01, 5.82443507e+01, 5.89248359e+01, 5.96132715e+01, 6.03097502e+01, 6.10143661e+01, 6.17272142e+01, 6.24483907e+01, 6.31779929e+01, 6.39161193e+01, 6.46628694e+01, 6.54183440e+01, 6.61826450e+01, 6.69558756e+01, 6.77381400e+01, 6.85295439e+01, 6.93301940e+01, 7.01401982e+01, 7.09596660e+01, 7.17887079e+01, 7.26274357e+01, 7.34759626e+01, 7.43344030e+01, 7.52028729e+01, 7.60814893e+01, 7.69703709e+01, 7.78696375e+01, 7.87794105e+01, 7.96998127e+01, 8.06309682e+01, 8.15730026e+01, 8.25260431e+01, 8.34902182e+01, 8.44656580e+01, 8.54524942e+01, 8.64508599e+01, 8.74608897e+01, 8.84827201e+01, 8.95164887e+01, 9.05623352e+01, 9.16204006e+01, 9.26908277e+01, 9.37737608e+01, 9.48693462e+01, 9.59777316e+01, 9.70990666e+01, 9.82335025e+01, 9.93811923e+01, 1.00542291e+02, 1.01716955e+02, 1.02905343e+02, 1.04107615e+02, 1.05323934e+02, 1.06554463e+02, 1.07799369e+02, 1.09058820e+02, 1.10332985e+02, 1.11622036e+02, 1.12926148e+02, 1.14245496e+02, 1.15580259e+02, 1.16930616e+02, 1.18296749e+02, 1.19678843e+02, 1.21077085e+02, 1.22491663e+02, 1.23922768e+02, 1.25370593e+02, 1.26835333e+02, 1.28317186e+02, 1.29816352e+02, 1.31333033e+02, 1.32867434e+02, 1.34419762e+02, 1.35990226e+02, 1.37579038e+02, 1.39186413e+02, 1.40812567e+02, 1.42457720e+02, 1.44122094e+02, 1.45805913e+02, 1.47509405e+02, 1.49232799e+02, 1.50976328e+02, 1.52740228e+02, 1.54524735e+02, 1.56330091e+02, 1.58156540e+02, 1.60004327e+02, 1.61873703e+02, 1.63764920e+02, 1.65678231e+02, 1.67613897e+02, 1.69572178e+02, 1.71553337e+02, 1.73557644e+02, 1.75585367e+02, 1.77636780e+02, 1.79712161e+02, 1.81811789e+02, 1.83935948e+02, 1.86084923e+02, 1.88259006e+02, 1.90458489e+02, 1.92683670e+02, 1.94934848e+02, 1.97212327e+02, 1.99516414e+02, 2.01847421e+02, 2.04205661e+02, 2.06591454e+02, 2.09005120e+02, 2.11446986e+02, 2.13917381e+02, 2.16416639e+02, 2.18945095e+02, 2.21503093e+02, 2.24090976e+02, 2.26709095e+02, 2.29357801e+02, 2.32037453e+02, 2.34748412e+02, 2.37491045e+02, 2.40265720e+02, 2.43072812e+02, 2.45912700e+02, 2.48785768e+02, 2.51692403e+02, 2.54632996e+02, 2.57607946e+02, 2.60617652e+02, 2.63662522e+02, 2.66742966e+02, 2.69859399e+02, 2.73012243e+02, 2.76201922e+02, 2.79428868e+02, 2.82693514e+02, 2.85996302e+02, 2.89337678e+02, 2.92718092e+02, 2.96138000e+02, 2.99597865e+02, 3.03098151e+02, 3.06639333e+02, 3.10221887e+02, 3.13846297e+02, 3.17513052e+02, 3.21222647e+02, 3.24975582e+02, 3.28772364e+02, 3.32613504e+02, 3.36499522e+02, 3.40430941e+02, 3.44408292e+02, 3.48432112e+02, 3.52502943e+02, 3.56621334e+02, 3.60787842e+02, 3.65003029e+02, 3.69267462e+02, 3.73581719e+02, 3.77946380e+02, 3.82362034e+02, 3.86829278e+02, 3.91348714e+02, 3.95920952e+02, 4.00546608e+02, 4.05226308e+02, 4.09960681e+02, 4.14750368e+02, 4.19596014e+02, 4.24498273e+02, 4.29457806e+02, 4.34475283e+02, 4.39551381e+02, 4.44686784e+02, 4.49882186e+02, 4.55138287e+02, 4.60455796e+02, 4.65835431e+02, 4.71277919e+02, 4.76783992e+02, 4.82354394e+02, 4.87989877e+02, 4.93691201e+02, 4.99459135e+02, 5.05294457e+02, 5.11197955e+02, 5.17170426e+02, 5.23212674e+02, 5.29325516e+02, 5.35509776e+02, 5.41766288e+02, 5.48095897e+02, 5.54499456e+02, 5.60977830e+02, 5.67531893e+02, 5.74162529e+02, 5.80870632e+02, 5.87657108e+02, 5.94522873e+02, 6.01468852e+02, 6.08495982e+02, 6.15605213e+02, 6.22797503e+02, 6.30073823e+02, 6.37435153e+02, 6.44882489e+02, 6.52416833e+02, 6.60039204e+02, 6.67750629e+02, 6.75552148e+02, 6.83444815e+02, 6.91429694e+02, 6.99507863e+02, 7.07680411e+02, 7.15948442e+02, 7.24313070e+02, 7.32775425e+02, 7.41336647e+02, 7.49997893e+02, 7.58760331e+02, 7.67625143e+02, 7.76593524e+02, 7.85666686e+02, 7.94845852e+02, 8.04132262e+02, 8.13527166e+02, 8.23031834e+02, 8.32647548e+02, 8.42375605e+02, 8.52217318e+02, 8.62174014e+02, 8.72247037e+02, 8.82437746e+02, 8.92747516e+02, 9.03177738e+02, 9.13729819e+02, 9.24405183e+02, 9.35205270e+02, 9.46131538e+02, 9.57185461e+02, 9.68368529e+02, 9.79682253e+02, 9.91128158e+02, 1.00270779e+03, 1.01442271e+03, 1.02627449e+03, 1.03826475e+03, 1.05039509e+03, 1.06266715e+03, 1.07508260e+03, 1.08764309e+03, 1.10035033e+03, 1.11320604e+03, 1.12621194e+03, 1.13936979e+03, 1.15268137e+03, 1.16614847e+03, 1.17977291e+03, 1.19355654e+03, 1.20750119e+03, 1.22160877e+03, 1.23588117e+03, 1.25032032e+03, 1.26492817e+03, 1.27970668e+03, 1.29465786e+03, 1.30978371e+03, 1.32508629e+03, 1.34056764e+03, 1.35622988e+03, 1.37207509e+03, 1.38810543e+03, 1.40432306e+03, 1.42073017e+03, 1.43732896e+03, 1.45412168e+03, 1.47111060e+03, 1.48829800e+03, 1.50568620e+03, 1.52327756e+03, 1.54107445e+03, 1.55907925e+03, 1.57729442e+03, 1.59572240e+03, 1.61436567e+03, 1.63322676e+03, 1.65230821e+03, 1.67161260e+03, 1.69114252e+03, 1.71090062e+03, 1.73088955e+03, 1.75111203e+03, 1.77157076e+03, 1.79226853e+03, 1.81320811e+03, 1.83439233e+03, 1.85582405e+03, 1.87750617e+03, 1.89944161e+03, 1.92163332e+03, 1.94408431e+03, 1.96679759e+03, 1.98977625e+03, 2.01302337e+03, 2.03654209e+03, 2.06033559e+03, 2.08440707e+03, 2.10875979e+03, 2.13339702e+03, 2.15832211e+03, 2.18353839e+03, 2.20904929e+03, 2.23485824e+03, 2.26096872e+03, 2.28738426e+03, 2.31410842e+03, 2.34114480e+03, 2.36849706e+03, 2.39616888e+03, 2.42416400e+03, 2.45248619e+03, 2.48113928e+03, 2.51012713e+03, 2.53945366e+03, 2.56912281e+03, 2.59913860e+03, 2.62950508e+03, 2.66022633e+03, 2.69130650e+03, 2.72274980e+03, 2.75456046e+03, 2.78674277e+03, 2.81930107e+03, 2.85223976e+03, 2.88556329e+03, 2.91927614e+03, 2.95338287e+03, 2.98788808e+03, 3.02279642e+03, 3.05811260e+03, 3.09384140e+03, 3.12998762e+03, 3.16655616e+03, 3.20355193e+03, 3.24097993e+03, 3.27884522e+03, 3.31715289e+03, 3.35590813e+03, 3.39511615e+03, 3.43478226e+03, 3.47491179e+03, 3.51551017e+03, 3.55658287e+03, 3.59813543e+03, 3.64017347e+03, 3.68270264e+03, 3.72572870e+03, 3.76925744e+03, 3.81329474e+03, 3.85784655e+03, 3.90291886e+03, 3.94851776e+03, 3.99464942e+03, 4.04132003e+03, 4.08853592e+03, 4.13630344e+03, 4.18462905e+03, 4.23351925e+03, 4.28298066e+03, 4.33301993e+03, 4.38364383e+03, 4.43485918e+03, 4.48667290e+03, 4.53909196e+03, 4.59212346e+03, 4.64577454e+03, 4.70005244e+03, 4.75496448e+03, 4.81051808e+03, 4.86672072e+03, 4.92357999e+03, 4.98110357e+03, 5.03929922e+03, 5.09817477e+03, 5.15773819e+03, 5.21799751e+03, 5.27896085e+03, 5.34063644e+03, 5.40303261e+03, 5.46615777e+03, 5.53002044e+03, 5.59462923e+03, 5.65999287e+03, 5.72612017e+03, 5.79302005e+03, 5.86070154e+03, 5.92917378e+03, 5.99844599e+03, 6.06852753e+03, 6.13942786e+03, 6.21115653e+03, 6.28372323e+03, 6.35713775e+03, 6.43140999e+03, 6.50654997e+03, 6.58256784e+03, 6.65947384e+03, 6.73727836e+03, 6.81599189e+03, 6.89562505e+03, 6.97618859e+03, 7.05769337e+03, 7.14015040e+03, 7.22357080e+03, 7.30796582e+03, 7.39334685e+03, 7.47972542e+03, 7.56711317e+03, 7.65552189e+03, 7.74496352e+03, 7.83545012e+03, 7.92699390e+03, 8.01960721e+03, 8.11330256e+03, 8.20809257e+03, 8.30399003e+03, 8.40100790e+03, 8.49915925e+03, 8.59845733e+03, 8.69891555e+03, 8.80054744e+03, 8.90336672e+03, 9.00738728e+03, 9.11262313e+03, 9.21908849e+03, 9.32679771e+03, 9.43576532e+03, 9.54600604e+03, 9.65753473e+03, 9.77036644e+03, 9.88451640e+03, 1.00000000e+04] um>, istar_sphere: int = None, rewrite_files=False, nearest_read=False, nearest_write=False)
def gas_density(self)
def gas_surface_density(self)

Calculates gas density at given r, Following ANDES2, Akimkin+2013

def gas_temperature_from_dust(self)
def get_star_params(self)

Following ANDES2, Akimkin+2013

def ini_grid(self)
def iterate_settle_sublimation(self, nphot_therm: int = 100000, threads: int = 1, eps=0.01, max_iter: int = 20, nphotdiff: float = None, nphotdiff_type: int = None, stellar_template: Optional[None] = None, wavelengths=<Quantity [9.13000000e-02, 9.23666837e-02, 9.34458298e-02, 9.45375839e-02, 9.56420933e-02, 9.67595069e-02, 9.78899756e-02, 9.90336519e-02, 1.00190690e-01, 1.01361246e-01, 1.02545478e-01, 1.03743546e-01, 1.04955611e-01, 1.06181838e-01, 1.07422390e-01, 1.08677436e-01, 1.09947145e-01, 1.11231689e-01, 1.12531240e-01, 1.13845975e-01, 1.15176069e-01, 1.16521704e-01, 1.17883060e-01, 1.19260321e-01, 1.20653673e-01, 1.22063304e-01, 1.23489404e-01, 1.24932166e-01, 1.26391784e-01, 1.27868455e-01, 1.29362378e-01, 1.30873756e-01, 1.32402791e-01, 1.33949690e-01, 1.35514662e-01, 1.37097918e-01, 1.38699672e-01, 1.40320140e-01, 1.41959539e-01, 1.43618093e-01, 1.45296024e-01, 1.46993558e-01, 1.48710926e-01, 1.50448358e-01, 1.52206088e-01, 1.53984355e-01, 1.55783398e-01, 1.57603459e-01, 1.59444785e-01, 1.61307624e-01, 1.63192226e-01, 1.65098847e-01, 1.67027744e-01, 1.68979176e-01, 1.70953408e-01, 1.72950705e-01, 1.74971337e-01, 1.77015577e-01, 1.79083700e-01, 1.81175985e-01, 1.83292715e-01, 1.85434176e-01, 1.87600656e-01, 1.89792448e-01, 1.92009847e-01, 1.94253152e-01, 1.96522666e-01, 1.98818696e-01, 2.01141551e-01, 2.03491545e-01, 2.05868994e-01, 2.08274220e-01, 2.10707547e-01, 2.13169303e-01, 2.15659820e-01, 2.18179435e-01, 2.20728487e-01, 2.23307320e-01, 2.25916283e-01, 2.28555727e-01, 2.31226008e-01, 2.33927487e-01, 2.36660528e-01, 2.39425500e-01, 2.42222776e-01, 2.45052733e-01, 2.47915753e-01, 2.50812223e-01, 2.53742533e-01, 2.56707079e-01, 2.59706261e-01, 2.62740482e-01, 2.65810154e-01, 2.68915689e-01, 2.72057507e-01, 2.75236032e-01, 2.78451692e-01, 2.81704922e-01, 2.84996161e-01, 2.88325852e-01, 2.91694444e-01, 2.95102393e-01, 2.98550158e-01, 3.02038204e-01, 3.05567001e-01, 3.09137027e-01, 3.12748763e-01, 3.16402695e-01, 3.20099317e-01, 3.23839128e-01, 3.27622632e-01, 3.31450340e-01, 3.35322768e-01, 3.39240439e-01, 3.43203881e-01, 3.47213629e-01, 3.51270224e-01, 3.55374214e-01, 3.59526151e-01, 3.63726597e-01, 3.67976118e-01, 3.72275287e-01, 3.76624684e-01, 3.81024897e-01, 3.85476519e-01, 3.89980150e-01, 3.94536399e-01, 3.99145879e-01, 4.03809213e-01, 4.08527031e-01, 4.13299967e-01, 4.18128668e-01, 4.23013783e-01, 4.27955973e-01, 4.32955904e-01, 4.38014250e-01, 4.43131695e-01, 4.48308928e-01, 4.53546648e-01, 4.58845562e-01, 4.64206384e-01, 4.69629839e-01, 4.75116657e-01, 4.80667579e-01, 4.86283355e-01, 4.91964741e-01, 4.97712504e-01, 5.03527420e-01, 5.09410274e-01, 5.15361858e-01, 5.21382976e-01, 5.27474441e-01, 5.33637074e-01, 5.39871707e-01, 5.46179181e-01, 5.52560347e-01, 5.59016066e-01, 5.65547209e-01, 5.72154657e-01, 5.78839302e-01, 5.85602045e-01, 5.92443800e-01, 5.99365488e-01, 6.06368045e-01, 6.13452414e-01, 6.20619553e-01, 6.27870426e-01, 6.35206014e-01, 6.42627306e-01, 6.50135303e-01, 6.57731017e-01, 6.65415475e-01, 6.73189712e-01, 6.81054778e-01, 6.89011734e-01, 6.97061653e-01, 7.05205622e-01, 7.13444738e-01, 7.21780115e-01, 7.30212877e-01, 7.38744160e-01, 7.47375117e-01, 7.56106912e-01, 7.64940723e-01, 7.73877742e-01, 7.82919175e-01, 7.92066241e-01, 8.01320175e-01, 8.10682226e-01, 8.20153656e-01, 8.29735743e-01, 8.39429780e-01, 8.49237076e-01, 8.59158953e-01, 8.69196750e-01, 8.79351822e-01, 8.89625538e-01, 9.00019285e-01, 9.10534465e-01, 9.21172497e-01, 9.31934816e-01, 9.42822874e-01, 9.53838141e-01, 9.64982102e-01, 9.76256261e-01, 9.87662139e-01, 9.99201275e-01, 1.01087523e+00, 1.02268557e+00, 1.03463389e+00, 1.04672181e+00, 1.05895096e+00, 1.07132298e+00, 1.08383955e+00, 1.09650236e+00, 1.10931311e+00, 1.12227352e+00, 1.13538536e+00, 1.14865039e+00, 1.16207040e+00, 1.17564720e+00, 1.18938262e+00, 1.20327851e+00, 1.21733675e+00, 1.23155924e+00, 1.24594790e+00, 1.26050466e+00, 1.27523149e+00, 1.29013038e+00, 1.30520334e+00, 1.32045240e+00, 1.33587962e+00, 1.35148708e+00, 1.36727689e+00, 1.38325117e+00, 1.39941208e+00, 1.41576181e+00, 1.43230256e+00, 1.44903655e+00, 1.46596606e+00, 1.48309335e+00, 1.50042075e+00, 1.51795059e+00, 1.53568524e+00, 1.55362708e+00, 1.57177855e+00, 1.59014208e+00, 1.60872016e+00, 1.62751530e+00, 1.64653002e+00, 1.66576689e+00, 1.68522852e+00, 1.70491752e+00, 1.72483656e+00, 1.74498831e+00, 1.76537550e+00, 1.78600088e+00, 1.80686724e+00, 1.82797738e+00, 1.84933416e+00, 1.87094045e+00, 1.89279918e+00, 1.91491329e+00, 1.93728576e+00, 1.95991962e+00, 1.98281791e+00, 2.00598374e+00, 2.02942021e+00, 2.05313050e+00, 2.07711781e+00, 2.10138536e+00, 2.12593644e+00, 2.15077436e+00, 2.17590246e+00, 2.20132415e+00, 2.22704284e+00, 2.25306201e+00, 2.27938517e+00, 2.30601588e+00, 2.33295771e+00, 2.36021432e+00, 2.38778937e+00, 2.41568659e+00, 2.44390974e+00, 2.47246263e+00, 2.50134911e+00, 2.53057308e+00, 2.56013848e+00, 2.59004930e+00, 2.62030958e+00, 2.65092340e+00, 2.68189489e+00, 2.71322822e+00, 2.74492764e+00, 2.77699740e+00, 2.80944185e+00, 2.84226535e+00, 2.87547234e+00, 2.90906730e+00, 2.94305476e+00, 2.97743930e+00, 3.01222557e+00, 3.04741825e+00, 3.08302210e+00, 3.11904192e+00, 3.15548257e+00, 3.19234896e+00, 3.22964608e+00, 3.26737895e+00, 3.30555266e+00, 3.34417237e+00, 3.38324328e+00, 3.42277067e+00, 3.46275987e+00, 3.50321627e+00, 3.54414534e+00, 3.58555259e+00, 3.62744362e+00, 3.66982407e+00, 3.71269966e+00, 3.75607618e+00, 3.79995948e+00, 3.84435549e+00, 3.88927018e+00, 3.93470962e+00, 3.98067995e+00, 4.02718736e+00, 4.07423813e+00, 4.12183861e+00, 4.16999521e+00, 4.21871445e+00, 4.26800288e+00, 4.31786717e+00, 4.36831403e+00, 4.41935028e+00, 4.47098280e+00, 4.52321856e+00, 4.57606460e+00, 4.62952806e+00, 4.68361615e+00, 4.73833616e+00, 4.79369548e+00, 4.84970158e+00, 4.90636202e+00, 4.96368443e+00, 5.02167656e+00, 5.08034623e+00, 5.13970136e+00, 5.19974994e+00, 5.26050009e+00, 5.32196000e+00, 5.38413797e+00, 5.44704237e+00, 5.51068171e+00, 5.57506457e+00, 5.64019962e+00, 5.70609567e+00, 5.77276160e+00, 5.84020641e+00, 5.90843919e+00, 5.97746916e+00, 6.04730562e+00, 6.11795801e+00, 6.18943584e+00, 6.26174877e+00, 6.33490656e+00, 6.40891906e+00, 6.48379628e+00, 6.55954830e+00, 6.63618536e+00, 6.71371780e+00, 6.79215606e+00, 6.87151074e+00, 6.95179255e+00, 7.03301231e+00, 7.11518098e+00, 7.19830965e+00, 7.28240954e+00, 7.36749199e+00, 7.45356849e+00, 7.54065064e+00, 7.62875019e+00, 7.71787904e+00, 7.80804920e+00, 7.89927285e+00, 7.99156229e+00, 8.08492998e+00, 8.17938850e+00, 8.27495061e+00, 8.37162920e+00, 8.46943732e+00, 8.56838815e+00, 8.66849505e+00, 8.76977153e+00, 8.87223126e+00, 8.97588805e+00, 9.08075589e+00, 9.18684893e+00, 9.29418148e+00, 9.40276803e+00, 9.51262323e+00, 9.62376190e+00, 9.73619904e+00, 9.84994981e+00, 9.96502956e+00, 1.00814538e+01, 1.01992383e+01, 1.03183989e+01, 1.04389517e+01, 1.05609129e+01, 1.06842990e+01, 1.08091267e+01, 1.09354128e+01, 1.10631743e+01, 1.11924285e+01, 1.13231928e+01, 1.14554849e+01, 1.15893226e+01, 1.17247239e+01, 1.18617072e+01, 1.20002908e+01, 1.21404936e+01, 1.22823345e+01, 1.24258325e+01, 1.25710070e+01, 1.27178776e+01, 1.28664642e+01, 1.30167867e+01, 1.31688655e+01, 1.33227211e+01, 1.34783742e+01, 1.36358459e+01, 1.37951573e+01, 1.39563300e+01, 1.41193858e+01, 1.42843466e+01, 1.44512346e+01, 1.46200725e+01, 1.47908830e+01, 1.49636890e+01, 1.51385140e+01, 1.53153816e+01, 1.54943155e+01, 1.56753400e+01, 1.58584794e+01, 1.60437585e+01, 1.62312023e+01, 1.64208360e+01, 1.66126853e+01, 1.68067760e+01, 1.70031343e+01, 1.72017868e+01, 1.74027601e+01, 1.76060815e+01, 1.78117783e+01, 1.80198784e+01, 1.82304097e+01, 1.84434007e+01, 1.86588802e+01, 1.88768772e+01, 1.90974211e+01, 1.93205416e+01, 1.95462690e+01, 1.97746336e+01, 2.00056662e+01, 2.02393981e+01, 2.04758607e+01, 2.07150860e+01, 2.09571062e+01, 2.12019540e+01, 2.14496624e+01, 2.17002649e+01, 2.19537952e+01, 2.22102876e+01, 2.24697767e+01, 2.27322975e+01, 2.29978853e+01, 2.32665762e+01, 2.35384061e+01, 2.38134120e+01, 2.40916308e+01, 2.43731002e+01, 2.46578580e+01, 2.49459427e+01, 2.52373932e+01, 2.55322489e+01, 2.58305493e+01, 2.61323350e+01, 2.64376464e+01, 2.67465249e+01, 2.70590122e+01, 2.73751502e+01, 2.76949819e+01, 2.80185502e+01, 2.83458988e+01, 2.86770720e+01, 2.90121143e+01, 2.93510711e+01, 2.96939880e+01, 3.00409112e+01, 3.03918877e+01, 3.07469647e+01, 3.11061902e+01, 3.14696126e+01, 3.18372810e+01, 3.22092450e+01, 3.25855547e+01, 3.29662610e+01, 3.33514151e+01, 3.37410691e+01, 3.41352756e+01, 3.45340877e+01, 3.49375592e+01, 3.53457446e+01, 3.57586989e+01, 3.61764779e+01, 3.65991380e+01, 3.70267361e+01, 3.74593299e+01, 3.78969778e+01, 3.83397390e+01, 3.87876730e+01, 3.92408403e+01, 3.96993022e+01, 4.01631204e+01, 4.06323575e+01, 4.11070768e+01, 4.15873424e+01, 4.20732191e+01, 4.25647724e+01, 4.30620687e+01, 4.35651750e+01, 4.40741593e+01, 4.45890902e+01, 4.51100371e+01, 4.56370705e+01, 4.61702613e+01, 4.67096815e+01, 4.72554039e+01, 4.78075022e+01, 4.83660508e+01, 4.89311250e+01, 4.95028012e+01, 5.00811565e+01, 5.06662688e+01, 5.12582171e+01, 5.18570814e+01, 5.24629424e+01, 5.30758818e+01, 5.36959823e+01, 5.43233277e+01, 5.49580025e+01, 5.56000924e+01, 5.62496840e+01, 5.69068650e+01, 5.75717240e+01, 5.82443507e+01, 5.89248359e+01, 5.96132715e+01, 6.03097502e+01, 6.10143661e+01, 6.17272142e+01, 6.24483907e+01, 6.31779929e+01, 6.39161193e+01, 6.46628694e+01, 6.54183440e+01, 6.61826450e+01, 6.69558756e+01, 6.77381400e+01, 6.85295439e+01, 6.93301940e+01, 7.01401982e+01, 7.09596660e+01, 7.17887079e+01, 7.26274357e+01, 7.34759626e+01, 7.43344030e+01, 7.52028729e+01, 7.60814893e+01, 7.69703709e+01, 7.78696375e+01, 7.87794105e+01, 7.96998127e+01, 8.06309682e+01, 8.15730026e+01, 8.25260431e+01, 8.34902182e+01, 8.44656580e+01, 8.54524942e+01, 8.64508599e+01, 8.74608897e+01, 8.84827201e+01, 8.95164887e+01, 9.05623352e+01, 9.16204006e+01, 9.26908277e+01, 9.37737608e+01, 9.48693462e+01, 9.59777316e+01, 9.70990666e+01, 9.82335025e+01, 9.93811923e+01, 1.00542291e+02, 1.01716955e+02, 1.02905343e+02, 1.04107615e+02, 1.05323934e+02, 1.06554463e+02, 1.07799369e+02, 1.09058820e+02, 1.10332985e+02, 1.11622036e+02, 1.12926148e+02, 1.14245496e+02, 1.15580259e+02, 1.16930616e+02, 1.18296749e+02, 1.19678843e+02, 1.21077085e+02, 1.22491663e+02, 1.23922768e+02, 1.25370593e+02, 1.26835333e+02, 1.28317186e+02, 1.29816352e+02, 1.31333033e+02, 1.32867434e+02, 1.34419762e+02, 1.35990226e+02, 1.37579038e+02, 1.39186413e+02, 1.40812567e+02, 1.42457720e+02, 1.44122094e+02, 1.45805913e+02, 1.47509405e+02, 1.49232799e+02, 1.50976328e+02, 1.52740228e+02, 1.54524735e+02, 1.56330091e+02, 1.58156540e+02, 1.60004327e+02, 1.61873703e+02, 1.63764920e+02, 1.65678231e+02, 1.67613897e+02, 1.69572178e+02, 1.71553337e+02, 1.73557644e+02, 1.75585367e+02, 1.77636780e+02, 1.79712161e+02, 1.81811789e+02, 1.83935948e+02, 1.86084923e+02, 1.88259006e+02, 1.90458489e+02, 1.92683670e+02, 1.94934848e+02, 1.97212327e+02, 1.99516414e+02, 2.01847421e+02, 2.04205661e+02, 2.06591454e+02, 2.09005120e+02, 2.11446986e+02, 2.13917381e+02, 2.16416639e+02, 2.18945095e+02, 2.21503093e+02, 2.24090976e+02, 2.26709095e+02, 2.29357801e+02, 2.32037453e+02, 2.34748412e+02, 2.37491045e+02, 2.40265720e+02, 2.43072812e+02, 2.45912700e+02, 2.48785768e+02, 2.51692403e+02, 2.54632996e+02, 2.57607946e+02, 2.60617652e+02, 2.63662522e+02, 2.66742966e+02, 2.69859399e+02, 2.73012243e+02, 2.76201922e+02, 2.79428868e+02, 2.82693514e+02, 2.85996302e+02, 2.89337678e+02, 2.92718092e+02, 2.96138000e+02, 2.99597865e+02, 3.03098151e+02, 3.06639333e+02, 3.10221887e+02, 3.13846297e+02, 3.17513052e+02, 3.21222647e+02, 3.24975582e+02, 3.28772364e+02, 3.32613504e+02, 3.36499522e+02, 3.40430941e+02, 3.44408292e+02, 3.48432112e+02, 3.52502943e+02, 3.56621334e+02, 3.60787842e+02, 3.65003029e+02, 3.69267462e+02, 3.73581719e+02, 3.77946380e+02, 3.82362034e+02, 3.86829278e+02, 3.91348714e+02, 3.95920952e+02, 4.00546608e+02, 4.05226308e+02, 4.09960681e+02, 4.14750368e+02, 4.19596014e+02, 4.24498273e+02, 4.29457806e+02, 4.34475283e+02, 4.39551381e+02, 4.44686784e+02, 4.49882186e+02, 4.55138287e+02, 4.60455796e+02, 4.65835431e+02, 4.71277919e+02, 4.76783992e+02, 4.82354394e+02, 4.87989877e+02, 4.93691201e+02, 4.99459135e+02, 5.05294457e+02, 5.11197955e+02, 5.17170426e+02, 5.23212674e+02, 5.29325516e+02, 5.35509776e+02, 5.41766288e+02, 5.48095897e+02, 5.54499456e+02, 5.60977830e+02, 5.67531893e+02, 5.74162529e+02, 5.80870632e+02, 5.87657108e+02, 5.94522873e+02, 6.01468852e+02, 6.08495982e+02, 6.15605213e+02, 6.22797503e+02, 6.30073823e+02, 6.37435153e+02, 6.44882489e+02, 6.52416833e+02, 6.60039204e+02, 6.67750629e+02, 6.75552148e+02, 6.83444815e+02, 6.91429694e+02, 6.99507863e+02, 7.07680411e+02, 7.15948442e+02, 7.24313070e+02, 7.32775425e+02, 7.41336647e+02, 7.49997893e+02, 7.58760331e+02, 7.67625143e+02, 7.76593524e+02, 7.85666686e+02, 7.94845852e+02, 8.04132262e+02, 8.13527166e+02, 8.23031834e+02, 8.32647548e+02, 8.42375605e+02, 8.52217318e+02, 8.62174014e+02, 8.72247037e+02, 8.82437746e+02, 8.92747516e+02, 9.03177738e+02, 9.13729819e+02, 9.24405183e+02, 9.35205270e+02, 9.46131538e+02, 9.57185461e+02, 9.68368529e+02, 9.79682253e+02, 9.91128158e+02, 1.00270779e+03, 1.01442271e+03, 1.02627449e+03, 1.03826475e+03, 1.05039509e+03, 1.06266715e+03, 1.07508260e+03, 1.08764309e+03, 1.10035033e+03, 1.11320604e+03, 1.12621194e+03, 1.13936979e+03, 1.15268137e+03, 1.16614847e+03, 1.17977291e+03, 1.19355654e+03, 1.20750119e+03, 1.22160877e+03, 1.23588117e+03, 1.25032032e+03, 1.26492817e+03, 1.27970668e+03, 1.29465786e+03, 1.30978371e+03, 1.32508629e+03, 1.34056764e+03, 1.35622988e+03, 1.37207509e+03, 1.38810543e+03, 1.40432306e+03, 1.42073017e+03, 1.43732896e+03, 1.45412168e+03, 1.47111060e+03, 1.48829800e+03, 1.50568620e+03, 1.52327756e+03, 1.54107445e+03, 1.55907925e+03, 1.57729442e+03, 1.59572240e+03, 1.61436567e+03, 1.63322676e+03, 1.65230821e+03, 1.67161260e+03, 1.69114252e+03, 1.71090062e+03, 1.73088955e+03, 1.75111203e+03, 1.77157076e+03, 1.79226853e+03, 1.81320811e+03, 1.83439233e+03, 1.85582405e+03, 1.87750617e+03, 1.89944161e+03, 1.92163332e+03, 1.94408431e+03, 1.96679759e+03, 1.98977625e+03, 2.01302337e+03, 2.03654209e+03, 2.06033559e+03, 2.08440707e+03, 2.10875979e+03, 2.13339702e+03, 2.15832211e+03, 2.18353839e+03, 2.20904929e+03, 2.23485824e+03, 2.26096872e+03, 2.28738426e+03, 2.31410842e+03, 2.34114480e+03, 2.36849706e+03, 2.39616888e+03, 2.42416400e+03, 2.45248619e+03, 2.48113928e+03, 2.51012713e+03, 2.53945366e+03, 2.56912281e+03, 2.59913860e+03, 2.62950508e+03, 2.66022633e+03, 2.69130650e+03, 2.72274980e+03, 2.75456046e+03, 2.78674277e+03, 2.81930107e+03, 2.85223976e+03, 2.88556329e+03, 2.91927614e+03, 2.95338287e+03, 2.98788808e+03, 3.02279642e+03, 3.05811260e+03, 3.09384140e+03, 3.12998762e+03, 3.16655616e+03, 3.20355193e+03, 3.24097993e+03, 3.27884522e+03, 3.31715289e+03, 3.35590813e+03, 3.39511615e+03, 3.43478226e+03, 3.47491179e+03, 3.51551017e+03, 3.55658287e+03, 3.59813543e+03, 3.64017347e+03, 3.68270264e+03, 3.72572870e+03, 3.76925744e+03, 3.81329474e+03, 3.85784655e+03, 3.90291886e+03, 3.94851776e+03, 3.99464942e+03, 4.04132003e+03, 4.08853592e+03, 4.13630344e+03, 4.18462905e+03, 4.23351925e+03, 4.28298066e+03, 4.33301993e+03, 4.38364383e+03, 4.43485918e+03, 4.48667290e+03, 4.53909196e+03, 4.59212346e+03, 4.64577454e+03, 4.70005244e+03, 4.75496448e+03, 4.81051808e+03, 4.86672072e+03, 4.92357999e+03, 4.98110357e+03, 5.03929922e+03, 5.09817477e+03, 5.15773819e+03, 5.21799751e+03, 5.27896085e+03, 5.34063644e+03, 5.40303261e+03, 5.46615777e+03, 5.53002044e+03, 5.59462923e+03, 5.65999287e+03, 5.72612017e+03, 5.79302005e+03, 5.86070154e+03, 5.92917378e+03, 5.99844599e+03, 6.06852753e+03, 6.13942786e+03, 6.21115653e+03, 6.28372323e+03, 6.35713775e+03, 6.43140999e+03, 6.50654997e+03, 6.58256784e+03, 6.65947384e+03, 6.73727836e+03, 6.81599189e+03, 6.89562505e+03, 6.97618859e+03, 7.05769337e+03, 7.14015040e+03, 7.22357080e+03, 7.30796582e+03, 7.39334685e+03, 7.47972542e+03, 7.56711317e+03, 7.65552189e+03, 7.74496352e+03, 7.83545012e+03, 7.92699390e+03, 8.01960721e+03, 8.11330256e+03, 8.20809257e+03, 8.30399003e+03, 8.40100790e+03, 8.49915925e+03, 8.59845733e+03, 8.69891555e+03, 8.80054744e+03, 8.90336672e+03, 9.00738728e+03, 9.11262313e+03, 9.21908849e+03, 9.32679771e+03, 9.43576532e+03, 9.54600604e+03, 9.65753473e+03, 9.77036644e+03, 9.88451640e+03, 1.00000000e+04] um>, istar_sphere: int = None, include_settle: bool = False, shut_output: bool = False, deltaT: float = 100)
def iterate_vertical_structure(self, nphot_therm: int = 100000, threads: int = 1, eps: float = 0.01, max_iter: int = 20, nphotdiff: float = None, nphotdiff_type: int = None, stellar_template: Optional[None] = None, wavelengths=<Quantity [9.13000000e-02, 9.23666837e-02, 9.34458298e-02, 9.45375839e-02, 9.56420933e-02, 9.67595069e-02, 9.78899756e-02, 9.90336519e-02, 1.00190690e-01, 1.01361246e-01, 1.02545478e-01, 1.03743546e-01, 1.04955611e-01, 1.06181838e-01, 1.07422390e-01, 1.08677436e-01, 1.09947145e-01, 1.11231689e-01, 1.12531240e-01, 1.13845975e-01, 1.15176069e-01, 1.16521704e-01, 1.17883060e-01, 1.19260321e-01, 1.20653673e-01, 1.22063304e-01, 1.23489404e-01, 1.24932166e-01, 1.26391784e-01, 1.27868455e-01, 1.29362378e-01, 1.30873756e-01, 1.32402791e-01, 1.33949690e-01, 1.35514662e-01, 1.37097918e-01, 1.38699672e-01, 1.40320140e-01, 1.41959539e-01, 1.43618093e-01, 1.45296024e-01, 1.46993558e-01, 1.48710926e-01, 1.50448358e-01, 1.52206088e-01, 1.53984355e-01, 1.55783398e-01, 1.57603459e-01, 1.59444785e-01, 1.61307624e-01, 1.63192226e-01, 1.65098847e-01, 1.67027744e-01, 1.68979176e-01, 1.70953408e-01, 1.72950705e-01, 1.74971337e-01, 1.77015577e-01, 1.79083700e-01, 1.81175985e-01, 1.83292715e-01, 1.85434176e-01, 1.87600656e-01, 1.89792448e-01, 1.92009847e-01, 1.94253152e-01, 1.96522666e-01, 1.98818696e-01, 2.01141551e-01, 2.03491545e-01, 2.05868994e-01, 2.08274220e-01, 2.10707547e-01, 2.13169303e-01, 2.15659820e-01, 2.18179435e-01, 2.20728487e-01, 2.23307320e-01, 2.25916283e-01, 2.28555727e-01, 2.31226008e-01, 2.33927487e-01, 2.36660528e-01, 2.39425500e-01, 2.42222776e-01, 2.45052733e-01, 2.47915753e-01, 2.50812223e-01, 2.53742533e-01, 2.56707079e-01, 2.59706261e-01, 2.62740482e-01, 2.65810154e-01, 2.68915689e-01, 2.72057507e-01, 2.75236032e-01, 2.78451692e-01, 2.81704922e-01, 2.84996161e-01, 2.88325852e-01, 2.91694444e-01, 2.95102393e-01, 2.98550158e-01, 3.02038204e-01, 3.05567001e-01, 3.09137027e-01, 3.12748763e-01, 3.16402695e-01, 3.20099317e-01, 3.23839128e-01, 3.27622632e-01, 3.31450340e-01, 3.35322768e-01, 3.39240439e-01, 3.43203881e-01, 3.47213629e-01, 3.51270224e-01, 3.55374214e-01, 3.59526151e-01, 3.63726597e-01, 3.67976118e-01, 3.72275287e-01, 3.76624684e-01, 3.81024897e-01, 3.85476519e-01, 3.89980150e-01, 3.94536399e-01, 3.99145879e-01, 4.03809213e-01, 4.08527031e-01, 4.13299967e-01, 4.18128668e-01, 4.23013783e-01, 4.27955973e-01, 4.32955904e-01, 4.38014250e-01, 4.43131695e-01, 4.48308928e-01, 4.53546648e-01, 4.58845562e-01, 4.64206384e-01, 4.69629839e-01, 4.75116657e-01, 4.80667579e-01, 4.86283355e-01, 4.91964741e-01, 4.97712504e-01, 5.03527420e-01, 5.09410274e-01, 5.15361858e-01, 5.21382976e-01, 5.27474441e-01, 5.33637074e-01, 5.39871707e-01, 5.46179181e-01, 5.52560347e-01, 5.59016066e-01, 5.65547209e-01, 5.72154657e-01, 5.78839302e-01, 5.85602045e-01, 5.92443800e-01, 5.99365488e-01, 6.06368045e-01, 6.13452414e-01, 6.20619553e-01, 6.27870426e-01, 6.35206014e-01, 6.42627306e-01, 6.50135303e-01, 6.57731017e-01, 6.65415475e-01, 6.73189712e-01, 6.81054778e-01, 6.89011734e-01, 6.97061653e-01, 7.05205622e-01, 7.13444738e-01, 7.21780115e-01, 7.30212877e-01, 7.38744160e-01, 7.47375117e-01, 7.56106912e-01, 7.64940723e-01, 7.73877742e-01, 7.82919175e-01, 7.92066241e-01, 8.01320175e-01, 8.10682226e-01, 8.20153656e-01, 8.29735743e-01, 8.39429780e-01, 8.49237076e-01, 8.59158953e-01, 8.69196750e-01, 8.79351822e-01, 8.89625538e-01, 9.00019285e-01, 9.10534465e-01, 9.21172497e-01, 9.31934816e-01, 9.42822874e-01, 9.53838141e-01, 9.64982102e-01, 9.76256261e-01, 9.87662139e-01, 9.99201275e-01, 1.01087523e+00, 1.02268557e+00, 1.03463389e+00, 1.04672181e+00, 1.05895096e+00, 1.07132298e+00, 1.08383955e+00, 1.09650236e+00, 1.10931311e+00, 1.12227352e+00, 1.13538536e+00, 1.14865039e+00, 1.16207040e+00, 1.17564720e+00, 1.18938262e+00, 1.20327851e+00, 1.21733675e+00, 1.23155924e+00, 1.24594790e+00, 1.26050466e+00, 1.27523149e+00, 1.29013038e+00, 1.30520334e+00, 1.32045240e+00, 1.33587962e+00, 1.35148708e+00, 1.36727689e+00, 1.38325117e+00, 1.39941208e+00, 1.41576181e+00, 1.43230256e+00, 1.44903655e+00, 1.46596606e+00, 1.48309335e+00, 1.50042075e+00, 1.51795059e+00, 1.53568524e+00, 1.55362708e+00, 1.57177855e+00, 1.59014208e+00, 1.60872016e+00, 1.62751530e+00, 1.64653002e+00, 1.66576689e+00, 1.68522852e+00, 1.70491752e+00, 1.72483656e+00, 1.74498831e+00, 1.76537550e+00, 1.78600088e+00, 1.80686724e+00, 1.82797738e+00, 1.84933416e+00, 1.87094045e+00, 1.89279918e+00, 1.91491329e+00, 1.93728576e+00, 1.95991962e+00, 1.98281791e+00, 2.00598374e+00, 2.02942021e+00, 2.05313050e+00, 2.07711781e+00, 2.10138536e+00, 2.12593644e+00, 2.15077436e+00, 2.17590246e+00, 2.20132415e+00, 2.22704284e+00, 2.25306201e+00, 2.27938517e+00, 2.30601588e+00, 2.33295771e+00, 2.36021432e+00, 2.38778937e+00, 2.41568659e+00, 2.44390974e+00, 2.47246263e+00, 2.50134911e+00, 2.53057308e+00, 2.56013848e+00, 2.59004930e+00, 2.62030958e+00, 2.65092340e+00, 2.68189489e+00, 2.71322822e+00, 2.74492764e+00, 2.77699740e+00, 2.80944185e+00, 2.84226535e+00, 2.87547234e+00, 2.90906730e+00, 2.94305476e+00, 2.97743930e+00, 3.01222557e+00, 3.04741825e+00, 3.08302210e+00, 3.11904192e+00, 3.15548257e+00, 3.19234896e+00, 3.22964608e+00, 3.26737895e+00, 3.30555266e+00, 3.34417237e+00, 3.38324328e+00, 3.42277067e+00, 3.46275987e+00, 3.50321627e+00, 3.54414534e+00, 3.58555259e+00, 3.62744362e+00, 3.66982407e+00, 3.71269966e+00, 3.75607618e+00, 3.79995948e+00, 3.84435549e+00, 3.88927018e+00, 3.93470962e+00, 3.98067995e+00, 4.02718736e+00, 4.07423813e+00, 4.12183861e+00, 4.16999521e+00, 4.21871445e+00, 4.26800288e+00, 4.31786717e+00, 4.36831403e+00, 4.41935028e+00, 4.47098280e+00, 4.52321856e+00, 4.57606460e+00, 4.62952806e+00, 4.68361615e+00, 4.73833616e+00, 4.79369548e+00, 4.84970158e+00, 4.90636202e+00, 4.96368443e+00, 5.02167656e+00, 5.08034623e+00, 5.13970136e+00, 5.19974994e+00, 5.26050009e+00, 5.32196000e+00, 5.38413797e+00, 5.44704237e+00, 5.51068171e+00, 5.57506457e+00, 5.64019962e+00, 5.70609567e+00, 5.77276160e+00, 5.84020641e+00, 5.90843919e+00, 5.97746916e+00, 6.04730562e+00, 6.11795801e+00, 6.18943584e+00, 6.26174877e+00, 6.33490656e+00, 6.40891906e+00, 6.48379628e+00, 6.55954830e+00, 6.63618536e+00, 6.71371780e+00, 6.79215606e+00, 6.87151074e+00, 6.95179255e+00, 7.03301231e+00, 7.11518098e+00, 7.19830965e+00, 7.28240954e+00, 7.36749199e+00, 7.45356849e+00, 7.54065064e+00, 7.62875019e+00, 7.71787904e+00, 7.80804920e+00, 7.89927285e+00, 7.99156229e+00, 8.08492998e+00, 8.17938850e+00, 8.27495061e+00, 8.37162920e+00, 8.46943732e+00, 8.56838815e+00, 8.66849505e+00, 8.76977153e+00, 8.87223126e+00, 8.97588805e+00, 9.08075589e+00, 9.18684893e+00, 9.29418148e+00, 9.40276803e+00, 9.51262323e+00, 9.62376190e+00, 9.73619904e+00, 9.84994981e+00, 9.96502956e+00, 1.00814538e+01, 1.01992383e+01, 1.03183989e+01, 1.04389517e+01, 1.05609129e+01, 1.06842990e+01, 1.08091267e+01, 1.09354128e+01, 1.10631743e+01, 1.11924285e+01, 1.13231928e+01, 1.14554849e+01, 1.15893226e+01, 1.17247239e+01, 1.18617072e+01, 1.20002908e+01, 1.21404936e+01, 1.22823345e+01, 1.24258325e+01, 1.25710070e+01, 1.27178776e+01, 1.28664642e+01, 1.30167867e+01, 1.31688655e+01, 1.33227211e+01, 1.34783742e+01, 1.36358459e+01, 1.37951573e+01, 1.39563300e+01, 1.41193858e+01, 1.42843466e+01, 1.44512346e+01, 1.46200725e+01, 1.47908830e+01, 1.49636890e+01, 1.51385140e+01, 1.53153816e+01, 1.54943155e+01, 1.56753400e+01, 1.58584794e+01, 1.60437585e+01, 1.62312023e+01, 1.64208360e+01, 1.66126853e+01, 1.68067760e+01, 1.70031343e+01, 1.72017868e+01, 1.74027601e+01, 1.76060815e+01, 1.78117783e+01, 1.80198784e+01, 1.82304097e+01, 1.84434007e+01, 1.86588802e+01, 1.88768772e+01, 1.90974211e+01, 1.93205416e+01, 1.95462690e+01, 1.97746336e+01, 2.00056662e+01, 2.02393981e+01, 2.04758607e+01, 2.07150860e+01, 2.09571062e+01, 2.12019540e+01, 2.14496624e+01, 2.17002649e+01, 2.19537952e+01, 2.22102876e+01, 2.24697767e+01, 2.27322975e+01, 2.29978853e+01, 2.32665762e+01, 2.35384061e+01, 2.38134120e+01, 2.40916308e+01, 2.43731002e+01, 2.46578580e+01, 2.49459427e+01, 2.52373932e+01, 2.55322489e+01, 2.58305493e+01, 2.61323350e+01, 2.64376464e+01, 2.67465249e+01, 2.70590122e+01, 2.73751502e+01, 2.76949819e+01, 2.80185502e+01, 2.83458988e+01, 2.86770720e+01, 2.90121143e+01, 2.93510711e+01, 2.96939880e+01, 3.00409112e+01, 3.03918877e+01, 3.07469647e+01, 3.11061902e+01, 3.14696126e+01, 3.18372810e+01, 3.22092450e+01, 3.25855547e+01, 3.29662610e+01, 3.33514151e+01, 3.37410691e+01, 3.41352756e+01, 3.45340877e+01, 3.49375592e+01, 3.53457446e+01, 3.57586989e+01, 3.61764779e+01, 3.65991380e+01, 3.70267361e+01, 3.74593299e+01, 3.78969778e+01, 3.83397390e+01, 3.87876730e+01, 3.92408403e+01, 3.96993022e+01, 4.01631204e+01, 4.06323575e+01, 4.11070768e+01, 4.15873424e+01, 4.20732191e+01, 4.25647724e+01, 4.30620687e+01, 4.35651750e+01, 4.40741593e+01, 4.45890902e+01, 4.51100371e+01, 4.56370705e+01, 4.61702613e+01, 4.67096815e+01, 4.72554039e+01, 4.78075022e+01, 4.83660508e+01, 4.89311250e+01, 4.95028012e+01, 5.00811565e+01, 5.06662688e+01, 5.12582171e+01, 5.18570814e+01, 5.24629424e+01, 5.30758818e+01, 5.36959823e+01, 5.43233277e+01, 5.49580025e+01, 5.56000924e+01, 5.62496840e+01, 5.69068650e+01, 5.75717240e+01, 5.82443507e+01, 5.89248359e+01, 5.96132715e+01, 6.03097502e+01, 6.10143661e+01, 6.17272142e+01, 6.24483907e+01, 6.31779929e+01, 6.39161193e+01, 6.46628694e+01, 6.54183440e+01, 6.61826450e+01, 6.69558756e+01, 6.77381400e+01, 6.85295439e+01, 6.93301940e+01, 7.01401982e+01, 7.09596660e+01, 7.17887079e+01, 7.26274357e+01, 7.34759626e+01, 7.43344030e+01, 7.52028729e+01, 7.60814893e+01, 7.69703709e+01, 7.78696375e+01, 7.87794105e+01, 7.96998127e+01, 8.06309682e+01, 8.15730026e+01, 8.25260431e+01, 8.34902182e+01, 8.44656580e+01, 8.54524942e+01, 8.64508599e+01, 8.74608897e+01, 8.84827201e+01, 8.95164887e+01, 9.05623352e+01, 9.16204006e+01, 9.26908277e+01, 9.37737608e+01, 9.48693462e+01, 9.59777316e+01, 9.70990666e+01, 9.82335025e+01, 9.93811923e+01, 1.00542291e+02, 1.01716955e+02, 1.02905343e+02, 1.04107615e+02, 1.05323934e+02, 1.06554463e+02, 1.07799369e+02, 1.09058820e+02, 1.10332985e+02, 1.11622036e+02, 1.12926148e+02, 1.14245496e+02, 1.15580259e+02, 1.16930616e+02, 1.18296749e+02, 1.19678843e+02, 1.21077085e+02, 1.22491663e+02, 1.23922768e+02, 1.25370593e+02, 1.26835333e+02, 1.28317186e+02, 1.29816352e+02, 1.31333033e+02, 1.32867434e+02, 1.34419762e+02, 1.35990226e+02, 1.37579038e+02, 1.39186413e+02, 1.40812567e+02, 1.42457720e+02, 1.44122094e+02, 1.45805913e+02, 1.47509405e+02, 1.49232799e+02, 1.50976328e+02, 1.52740228e+02, 1.54524735e+02, 1.56330091e+02, 1.58156540e+02, 1.60004327e+02, 1.61873703e+02, 1.63764920e+02, 1.65678231e+02, 1.67613897e+02, 1.69572178e+02, 1.71553337e+02, 1.73557644e+02, 1.75585367e+02, 1.77636780e+02, 1.79712161e+02, 1.81811789e+02, 1.83935948e+02, 1.86084923e+02, 1.88259006e+02, 1.90458489e+02, 1.92683670e+02, 1.94934848e+02, 1.97212327e+02, 1.99516414e+02, 2.01847421e+02, 2.04205661e+02, 2.06591454e+02, 2.09005120e+02, 2.11446986e+02, 2.13917381e+02, 2.16416639e+02, 2.18945095e+02, 2.21503093e+02, 2.24090976e+02, 2.26709095e+02, 2.29357801e+02, 2.32037453e+02, 2.34748412e+02, 2.37491045e+02, 2.40265720e+02, 2.43072812e+02, 2.45912700e+02, 2.48785768e+02, 2.51692403e+02, 2.54632996e+02, 2.57607946e+02, 2.60617652e+02, 2.63662522e+02, 2.66742966e+02, 2.69859399e+02, 2.73012243e+02, 2.76201922e+02, 2.79428868e+02, 2.82693514e+02, 2.85996302e+02, 2.89337678e+02, 2.92718092e+02, 2.96138000e+02, 2.99597865e+02, 3.03098151e+02, 3.06639333e+02, 3.10221887e+02, 3.13846297e+02, 3.17513052e+02, 3.21222647e+02, 3.24975582e+02, 3.28772364e+02, 3.32613504e+02, 3.36499522e+02, 3.40430941e+02, 3.44408292e+02, 3.48432112e+02, 3.52502943e+02, 3.56621334e+02, 3.60787842e+02, 3.65003029e+02, 3.69267462e+02, 3.73581719e+02, 3.77946380e+02, 3.82362034e+02, 3.86829278e+02, 3.91348714e+02, 3.95920952e+02, 4.00546608e+02, 4.05226308e+02, 4.09960681e+02, 4.14750368e+02, 4.19596014e+02, 4.24498273e+02, 4.29457806e+02, 4.34475283e+02, 4.39551381e+02, 4.44686784e+02, 4.49882186e+02, 4.55138287e+02, 4.60455796e+02, 4.65835431e+02, 4.71277919e+02, 4.76783992e+02, 4.82354394e+02, 4.87989877e+02, 4.93691201e+02, 4.99459135e+02, 5.05294457e+02, 5.11197955e+02, 5.17170426e+02, 5.23212674e+02, 5.29325516e+02, 5.35509776e+02, 5.41766288e+02, 5.48095897e+02, 5.54499456e+02, 5.60977830e+02, 5.67531893e+02, 5.74162529e+02, 5.80870632e+02, 5.87657108e+02, 5.94522873e+02, 6.01468852e+02, 6.08495982e+02, 6.15605213e+02, 6.22797503e+02, 6.30073823e+02, 6.37435153e+02, 6.44882489e+02, 6.52416833e+02, 6.60039204e+02, 6.67750629e+02, 6.75552148e+02, 6.83444815e+02, 6.91429694e+02, 6.99507863e+02, 7.07680411e+02, 7.15948442e+02, 7.24313070e+02, 7.32775425e+02, 7.41336647e+02, 7.49997893e+02, 7.58760331e+02, 7.67625143e+02, 7.76593524e+02, 7.85666686e+02, 7.94845852e+02, 8.04132262e+02, 8.13527166e+02, 8.23031834e+02, 8.32647548e+02, 8.42375605e+02, 8.52217318e+02, 8.62174014e+02, 8.72247037e+02, 8.82437746e+02, 8.92747516e+02, 9.03177738e+02, 9.13729819e+02, 9.24405183e+02, 9.35205270e+02, 9.46131538e+02, 9.57185461e+02, 9.68368529e+02, 9.79682253e+02, 9.91128158e+02, 1.00270779e+03, 1.01442271e+03, 1.02627449e+03, 1.03826475e+03, 1.05039509e+03, 1.06266715e+03, 1.07508260e+03, 1.08764309e+03, 1.10035033e+03, 1.11320604e+03, 1.12621194e+03, 1.13936979e+03, 1.15268137e+03, 1.16614847e+03, 1.17977291e+03, 1.19355654e+03, 1.20750119e+03, 1.22160877e+03, 1.23588117e+03, 1.25032032e+03, 1.26492817e+03, 1.27970668e+03, 1.29465786e+03, 1.30978371e+03, 1.32508629e+03, 1.34056764e+03, 1.35622988e+03, 1.37207509e+03, 1.38810543e+03, 1.40432306e+03, 1.42073017e+03, 1.43732896e+03, 1.45412168e+03, 1.47111060e+03, 1.48829800e+03, 1.50568620e+03, 1.52327756e+03, 1.54107445e+03, 1.55907925e+03, 1.57729442e+03, 1.59572240e+03, 1.61436567e+03, 1.63322676e+03, 1.65230821e+03, 1.67161260e+03, 1.69114252e+03, 1.71090062e+03, 1.73088955e+03, 1.75111203e+03, 1.77157076e+03, 1.79226853e+03, 1.81320811e+03, 1.83439233e+03, 1.85582405e+03, 1.87750617e+03, 1.89944161e+03, 1.92163332e+03, 1.94408431e+03, 1.96679759e+03, 1.98977625e+03, 2.01302337e+03, 2.03654209e+03, 2.06033559e+03, 2.08440707e+03, 2.10875979e+03, 2.13339702e+03, 2.15832211e+03, 2.18353839e+03, 2.20904929e+03, 2.23485824e+03, 2.26096872e+03, 2.28738426e+03, 2.31410842e+03, 2.34114480e+03, 2.36849706e+03, 2.39616888e+03, 2.42416400e+03, 2.45248619e+03, 2.48113928e+03, 2.51012713e+03, 2.53945366e+03, 2.56912281e+03, 2.59913860e+03, 2.62950508e+03, 2.66022633e+03, 2.69130650e+03, 2.72274980e+03, 2.75456046e+03, 2.78674277e+03, 2.81930107e+03, 2.85223976e+03, 2.88556329e+03, 2.91927614e+03, 2.95338287e+03, 2.98788808e+03, 3.02279642e+03, 3.05811260e+03, 3.09384140e+03, 3.12998762e+03, 3.16655616e+03, 3.20355193e+03, 3.24097993e+03, 3.27884522e+03, 3.31715289e+03, 3.35590813e+03, 3.39511615e+03, 3.43478226e+03, 3.47491179e+03, 3.51551017e+03, 3.55658287e+03, 3.59813543e+03, 3.64017347e+03, 3.68270264e+03, 3.72572870e+03, 3.76925744e+03, 3.81329474e+03, 3.85784655e+03, 3.90291886e+03, 3.94851776e+03, 3.99464942e+03, 4.04132003e+03, 4.08853592e+03, 4.13630344e+03, 4.18462905e+03, 4.23351925e+03, 4.28298066e+03, 4.33301993e+03, 4.38364383e+03, 4.43485918e+03, 4.48667290e+03, 4.53909196e+03, 4.59212346e+03, 4.64577454e+03, 4.70005244e+03, 4.75496448e+03, 4.81051808e+03, 4.86672072e+03, 4.92357999e+03, 4.98110357e+03, 5.03929922e+03, 5.09817477e+03, 5.15773819e+03, 5.21799751e+03, 5.27896085e+03, 5.34063644e+03, 5.40303261e+03, 5.46615777e+03, 5.53002044e+03, 5.59462923e+03, 5.65999287e+03, 5.72612017e+03, 5.79302005e+03, 5.86070154e+03, 5.92917378e+03, 5.99844599e+03, 6.06852753e+03, 6.13942786e+03, 6.21115653e+03, 6.28372323e+03, 6.35713775e+03, 6.43140999e+03, 6.50654997e+03, 6.58256784e+03, 6.65947384e+03, 6.73727836e+03, 6.81599189e+03, 6.89562505e+03, 6.97618859e+03, 7.05769337e+03, 7.14015040e+03, 7.22357080e+03, 7.30796582e+03, 7.39334685e+03, 7.47972542e+03, 7.56711317e+03, 7.65552189e+03, 7.74496352e+03, 7.83545012e+03, 7.92699390e+03, 8.01960721e+03, 8.11330256e+03, 8.20809257e+03, 8.30399003e+03, 8.40100790e+03, 8.49915925e+03, 8.59845733e+03, 8.69891555e+03, 8.80054744e+03, 8.90336672e+03, 9.00738728e+03, 9.11262313e+03, 9.21908849e+03, 9.32679771e+03, 9.43576532e+03, 9.54600604e+03, 9.65753473e+03, 9.77036644e+03, 9.88451640e+03, 1.00000000e+04] um>, istar_sphere: int = None)
def kappa_Pstar(self)
def make_cont(self, inclination: Unit("deg") = <Quantity 0. deg>, wavs: Unit("um") = <Quantity [500.] um>, distance: Unit("pc") = <Quantity 140. pc>, npix: int = 100, posang: Unit("deg") = <Quantity 0. deg>, see_radmc_warnings: bool = False, sizeau: float = None, sizepc: float = None, pointau=None, pointpc=None)
def make_sed(self, inclination: Unit("deg") = <Quantity 0. deg>)
def sublimation_mask(self)
def tau_radialP(self)
def update_table(self)

Inherited members

class Disk3D (star_mass: Unit("solMass") = <Quantity 1. solMass>, xray_plasma_temperature: Unit("K") = <Quantity 10000000. K>, xray_luminosity: Unit("erg / s") = <Quantity 1.e+31 erg / s>, cr_padovani_use_l: bool = False, r_grid: Unit("AU") = <Quantity [1.e-01, 5.e+02] AU>, r_min_sigma: Unit("AU") = <Quantity 0.1 AU>, zr_max: float = 0.7, zr_min: float = 0, is_zr_regular: bool = True, radial_bins: int = 100, vertical_bins: int = 100, azimuthal_bins: int = 100, dust_to_gas: float = 0.01, r_c: Unit("AU") = <Quantity 50. AU>, r_c_in: Unit("AU") = <Quantity 3. AU>, gamma_pwl: float = 1, gamma_tap: float = None, gamma_in: float = None, h_g: float = None, h_d: List[float] = None, z_rhocentre: Unit("AU") = 0, psi_g: float = None, psi_d: List[float] = None, dust_sizes: Unit("cm") = None, dust_names: List[str] = None, dust_massfrac: List[float] = None, dust_distroindex: float = -3.5, m_star: Unit("solMass") = <Quantity 1. solMass>, m_stars: Unit("solMass") = <Quantity 1. solMass>, r_star: Unit("solRad") = None, r_stars: Unit("solRad") = None, l_star: Unit("solLum") = None, l_stars: Unit("solLum") = None, t_star: Unit("K") = None, t_stars: Unit("K") = None, star_coords: Unit("AU") = None, l_acc: Unit("solLum") = <Quantity 0. solLum>, t_acc: Unit("K") = <Quantity 10000. K>, ages: Unit("Myr") = None, m_disk: Unit("solMass") = <Quantity 0.01 solMass>, grazang: float = 0.05, amratio: float = 2, envelope_density: Unit("g / cm3") = <Quantity 1.e-24 g / cm3>, monomer_density: Unit("g / cm3") = <Quantity 3. g / cm3>, dust_settling: str = None, alpha_settle: float = 0.0001, alpha_vis: float = None, radmc_folder: str = 'radmc', sublim_temp: Unit("K") = <Quantity 1500. K>, sublim_pwlindex: float = 0.0, gap_positions: Unit("AU") = None, gap_amps: List[float] = None, gap_widths: Unit("AU") = None, gap_type: str = 'Gaussian', renormalise: bool = True, misind_radius: Unit("AU") = None, misind_incl: Unit("deg") = None, sep_stars_paramtemp: bool = False)

3D axisymmetric model of the disk with several dust species and dust settling Both hydrostatic equilibrium and parametric vstructure setup Initially designed for several non-central multiple star setup

Expand source code
class Disk3D(PhysicsBase):
    """3D axisymmetric model of the disk with several dust species and dust settling
       Both hydrostatic equilibrium and parametric vstructure setup
       Initially designed for several non-central multiple star setup
    """
    r_grid: u.au = [0.1, 500] * u.au
    r_min_sigma: u.au = 0.1 * u.au
    zr_max: float = 0.7
    zr_min: float = 0
    is_zr_regular: bool = True
    radial_bins: int = 100
    vertical_bins: int = 100
    azimuthal_bins: int = 100
    dust_to_gas: float = 0.01
    r_c: u.au = 50 * u.au
    r_c_in: u.au = 3 * u.au
    gamma_pwl: float = 1
    gamma_tap: float = None
    gamma_in: float = None
    h_g: float = None
    h_d: List[float] = None
    z_rhocentre: u.au = 0
    psi_g: float = None
    psi_d: List[float] = None
    dust_sizes: u.cm = None
    dust_names: List[str] = None
    dust_massfrac: List[float] = None
    dust_distroindex: float = -3.5
    m_star: u.Msun = 1 * u.Msun
    m_stars: u.Msun = 1 * u.Msun
    r_star: u.Rsun = None
    r_stars: u.Rsun = None
    l_star: u.Lsun = None
    l_stars: u.Lsun = None
    t_star: u.K = None
    t_stars: u.K = None
    star_coords: u.au = None
    l_acc: u.Lsun = 0 * u.Lsun
    t_acc: u.K = 1e4 * u.K
    ages: u.Myr = None
    m_disk: u.Msun = 1e-2 * u.Msun
    grazang: float = 0.05
    amratio: float = 2
    envelope_density: u.g/u.cm**3 = 1e-24 * u.g/u.cm**3
    monomer_density: u.g/u.cm**3 = 3 * u.g/u.cm**3
    dust_settling: str = None
    alpha_settle: float = 1e-4
    alpha_vis: float = None
    radmc_folder: str = 'radmc'
    sublim_temp: u.K = 1500 * u.K
    sublim_pwlindex: float = 0.0
    gap_positions: u.au = None
    gap_amps: List[float] = None
    gap_widths: u.au = None
    gap_type: str = 'Gaussian'
    renormalise: bool = True
    misind_radius: u.au = None
    misind_incl: u.deg = None
    sep_stars_paramtemp: bool = False

    @u.quantity_input
    def gas_surface_density(self):
        """Calculates gas density at given r,
        Following ANDES2, Akimkin+2013"""
        r = self.r
        sigma_unnorm = ((r/self.r_c).to(u.dimensionless_unscaled))**(-self.gamma_pwl)
        if self.gamma_tap is not None:
            sigma_unnorm *= np.exp(-((r/self.r_c).to(u.dimensionless_unscaled))**(2 - self.gamma_tap))
        if self.gamma_in is not None:
            sigma_unnorm *= np.exp(-((self.r_c_in/r).to(u.dimensionless_unscaled))**(2 - self.gamma_in))
        if self.gap_positions is not None:
            for igap in range(len(self.gap_positions)):
                if self.gap_type == 'Gaussian':
                    sigma_unnorm *= np.exp(-self.gap_amps[igap]*np.exp(-((r-self.gap_positions[igap])**2/(2*self.gap_widths[igap]**2)).to(u.dimensionless_unscaled)))
                elif self.gap_type == 'Square':
                    gap_mask = (r > self.gap_positions[igap] - 0.5*self.gap_widths[igap]) & (r < self.gap_positions[igap] + 0.5*self.gap_widths[igap])
                    if (type(self.gap_amps[igap]) == float) or (type(self.gap_amps[igap]) == int):
                        sigma_unnorm[gap_mask] *= np.exp(-self.gap_amps[igap])
                    else:
                        sigma_unnorm[gap_mask] *= np.exp(-self.gap_amps[igap][gap_mask])
        if self.r_min_sigma is not None:
            sigma_unnorm[r < self.r_min_sigma] = 1e-10

        # Sigma0 = (self.m_disk / np.trapz(sigma_unnorm * 2 * np.pi * r.to(u.cm), r.to(u.cm), axis=2)).to(u.g / u.cm**2)
        # self.Sigma_gas = np.zeros(self.r.shape) * u.g / u.cm**2
        # for ir in range(self.radial_bins):
        #         self.Sigma_gas[:, :, ir] = Sigma0 * sigma_unnorm[:, :, ir]

        sigma_intr = np.trapz(sigma_unnorm * r.to(u.cm), r.to(u.cm), axis=2)
        sigma_intphi = np.trapz(sigma_intr[:,0], self.phi.to(u.rad).value[:,0,0])
        Sigma0 = (self.m_disk / sigma_intphi).to(u.g / u.cm ** 2)
        self.Sigma_gas = np.zeros(self.r.shape) * u.g / u.cm ** 2
        for iz in range(self.vertical_bins):
            self.Sigma_gas[:, iz, :] = Sigma0 * sigma_unnorm[:, iz, :]

        self.Sigma_gas[self.Sigma_gas< 1e-50* u.g / u.cm ** 2] = 1e-50* u.g / u.cm ** 2

    def get_star_params(self):
        """Following ANDES2, Akimkin+2013
            """
        if (self.r_stars is not None) and (self.t_stars is not None) and (self.l_stars is not None):
            pass
        elif (self.r_stars is not None) and (self.t_stars is not None):
            self.l_stars = (4*np.pi*self.r_stars**2 * c.sigma_sb * self.t_stars**4).to(u.Lsun)
        elif (self.l_stars is not None) and (self.t_stars is not None):
            self.r_stars = (np.sqrt(self.l_stars/(4*np.pi * c.sigma_sb * self.t_stars**4))).to(u.Rsun)
        elif (self.r_stars is not None) and (self.l_stars is not None):
            self.t_stars = ((self.l_stars / (4 * np.pi * c.sigma_sb * self.r_stars ** 2))**(0.25)).to(u.K)
        elif self.ages is not None:
            self.r_stars = np.zeros(len(self.m_stars)) * u.Rsun
            self.t_stars = np.zeros(len(self.m_stars)) * u.K
            self.l_stars = np.zeros(len(self.m_stars)) * u.Lsun
            for istar in range(len(self.m_stars)):
                yb08 = YorkeBodenheimer2008(lt = self.ages[istar])
                self.r_stars[istar] = yb08.radius(mass=self.m_stars[istar])
                self.t_stars[istar] = yb08.effective_temperature(mass=self.m_stars[istar])
                self.l_stars[istar] = (4*np.pi*self.r_stars[istar]**2 * c.sigma_sb * self.t_stars[istar]**4).to(u.Lsun)
        else:
            raise ValueError("Star parameters incomplete. Please clarify age to get parameters from evolutionary tracks or two of the parameters manually")

        self.m_star = sum(self.m_stars)
        self.l_star = sum(self.l_stars)
        self.r_star = np.sqrt(sum(self.r_stars**2))
        self.t_star = (sum(self.r_stars**2/self.r_star**2 * self.t_stars**4))**(0.25)
        self.age = np.mean(self.ages)
        if self.star_coords is None:
            self.star_coords = np.zeros((len(self.m_stars), 3)) * u.cm

        self.r_acc = (np.sqrt(self.l_acc/(4*np.pi * c.sigma_sb * self.t_acc**4))).to(u.Rsun)

    def dust_temperature_parametric(self):
        """Following ANDES2, Akimkin+2013
                    """
        dust_temperature_mp = ((self.grazang/2 * (self.r_star**2 * self.t_star**4 / self.r**2 + self.r_acc**2 * self.t_acc**4 / self.r**2))**0.25).to(u.K)
        if self.sep_stars_paramtemp:
            dust_temperature4_common = self.r_acc**2 * self.t_acc**4 / self.r**2
            for istar in range(len(self.m_stars)):
                x_star = self.star_coords[istar][0]
                y_star = self.star_coords[istar][1]
                z_star = self.star_coords[istar][2]
                dist2star = (self.r*np.cos(self.phi) - x_star)**2 + (self.r*np.sin(self.phi) - y_star)**2 + (self.z - z_star)**2
                dust_temperature4_common += self.r_stars[istar]**2 * self.t_stars[istar]**4 / dist2star

            # grazang = np.sqrt(1/(1e5*(self.z/self.r)**6 + 0.01))
            grazang = self.grazang
        else:
            dust_temperature4_common = self.r_star**2 * self.t_star**4 / self.r**2 + self.r_acc**2 * self.t_acc**4 / self.r**2
            grazang = self.grazang
        # wall_mask = self.r <= self.r_min_sigma
        dust_temperature_mp = ((grazang/2 * dust_temperature4_common)**0.25).to(u.K)
        z_q = 4*np.sqrt(2*c.k_B *dust_temperature_mp*self.r**3/((2.3*c.m_p)*c.G*self.m_star)).to(u.au)
        # dust_temperature_at = (self.amratio*(self.grazang * (self.r_star**2 * self.t_star**4 / self.r**2 + self.r_acc**2 * self.t_acc**4 / self.r**2))**0.25).to(u.K)
        dust_temperature_at = (self.amratio*(grazang/2 * dust_temperature4_common)**0.25).to(u.K)
        dtemperature = dust_temperature_at
        mask = self.z < z_q
        cosarg = np.pi*(self.z[mask]/(2*z_q[mask])).to(u.dimensionless_unscaled).value * u.rad
        dtemperature[mask] = (dust_temperature_at[mask] + (dust_temperature_mp[mask] - dust_temperature_at[mask])*
                                       (np.cos(cosarg))**2)

        #Ida+2016
        # if self.sep_stars_paramtemp:
        #     dust_temperature4_common = np.zeros(self.r.shape) * u.K**4
        #     for istar in range(len(self.m_stars)):
        #         x_star = self.star_coords[istar][0]
        #         y_star = self.star_coords[istar][1]
        #         z_star = self.star_coords[istar][2]
        #         dist2star = np.sqrt((self.r*np.cos(self.phi) - x_star)**2 + (self.r*np.sin(self.phi) - y_star)**2 + (self.z - z_star)**2)
        #         dust_temperature4_common += (150 * (self.l_stars[istar].to(u.Lsun).value)**(2/7) * (self.m_stars[istar].to(u.Msun).value)**(-1/7) * (dist2star.to(u.au).value)**(-3/7) * u.K)**4
        # else:
        #     dust_temperature4_common = (150 * (self.l_star.to(u.Lsun).value)**(2/7) * (self.m_star.to(u.Msun).value)**(-1/7) * (self.r.to(u.au).value)**(-3/7) * u.K)**4
        #
        # dtemperature = dust_temperature4_common**0.25

        if self.dust_sizes is not None:
            self.dust_temperature = np.zeros((len(self.dust_sizes), self.azimuthal_bins, self.vertical_bins, self.radial_bins)) * u.K
            for idust in range(len(self.dust_sizes)):
                self.dust_temperature[idust] = dtemperature.copy()
        else:
            raise ValueError("No dust sizes given, please clarify at least one")
        

    def dust_temperature_radmc(self, nphot_therm: int = 100000, threads: int = 1, nphotdiff: float = None, nphotdiff_type: int = None,
                               nphot_scat: int = None, scattering_mode_max: int = None, nphot_spec: int = None, mc_scat_maxtauabs: float = None,
                               stellar_template: Union[None, u.Quantity] = None,
                               wavelengths=np.geomspace(0.0913, 10000, 1000) * u.um,
                               istar_sphere: int = None, rewrite_files=False, 
                               nearest_read=False, nearest_write=False):
        map = RadMCTherm(folder=self.radmc_folder, chemistry=self,
                         star_number=len(self.m_stars), star_radius=self.r_stars, star_effective_temperature=self.t_stars, star_positions=self.star_coords,
                         accretion_luminosity=self.l_acc, accretion_temperature=self.t_acc,
                         nphot_therm=nphot_therm, nphotdiff=nphotdiff, nphotdiff_type=nphotdiff_type,
                         nphot_scat=nphot_scat, scattering_mode_max=scattering_mode_max, nphot_spec=nphot_spec, mc_scat_maxtauabs=mc_scat_maxtauabs,
                         stellar_template=stellar_template, wavelengths=wavelengths, istar_sphere=istar_sphere)
        map.create_files()
        if rewrite_files:
            map.dust_temperature(nearest=nearest_write)
            return
        map.run(threads=threads, see_radmc_warnings=True)
        map.read_dust_temperature(nearest=nearest_read)
        for idust in range(len(self.dust_sizes)):
            self.table[f"{self.dust_names[idust]} temperature"] = map.table[f"{self.dust_names[idust]} temperature"]
            dtemp = map.table[f"{self.dust_names[idust]} temperature"]
            self.dust_temperature[idust] = np.reshape(dtemp, (self.azimuthal_bins, self.vertical_bins, self.radial_bins))
        
        if self.alpha_vis is not None:
            temp_vis = self.viscous_temp(alpha_vis=self.alpha_vis)
            self.dust_temperature = (self.dust_temperature**4 + temp_vis**4)**0.25
            self.update_table()

    def make_sed(self, inclination: u.deg = 0 * u.deg, threads: int = 1):
        map = RadMCRTSED(folder=self.radmc_folder, chemistry=self, star_number=len(self.m_stars),
                         star_radius=self.r_star, star_effective_temperature=self.t_star,
                         add_luminosity=[self.l_acc], add_temperature=[self.t_acc])
        map.run(inclination=inclination, see_radmc_warnings=False, threads=threads)

    def make_cont(self, inclination: u.deg = 0 * u.deg, wavs: u.um = [500] * u.um, distance: u.pc = 140 * u.pc,
                  npix: int = 100, posang: u.deg = 0 * u.deg, see_radmc_warnings: bool = False,
                  sizeau: float = None, sizepc: float = None, pointau=None, pointpc=None):
        map = RadMCRTCont(folder=self.radmc_folder, chemistry=self,
                          star_radius=self.r_star, star_effective_temperature=self.t_star)
        map.camera_wavelength_micron(wavs=wavs)
        map.run(inclination=inclination, see_radmc_warnings=see_radmc_warnings, distance=distance, npix=npix,
                position_angle=posang, sizeau=sizeau, sizepc=sizepc, pointau=pointau, pointpc=pointpc)


    def dust_mass_fraction(self):
        if self.dust_massfrac is None:
            # Assuming discrete MRN
            if (type(self.dust_distroindex) == float):
                self.dust_distroindex = np.zeros(self.r.shape) + self.dust_distroindex
            elif (len(self.dust_distroindex) == 1):
                self.dust_distroindex = np.zeros(self.r.shape) + self.dust_distroindex[0]
            elif (self.dust_distroindex.shape != self.r.shape):
                raise IndexError("Given dust size distribution index array doesn't match the spatial grid in shape")
            self.dust_massfrac = np.zeros((len(self.dust_sizes), self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            size_ratios = np.zeros((len(self.dust_sizes), self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            for idust in range(len(self.dust_sizes)):
                size_ratios[idust] = (self.dust_sizes[idust]/self.dust_sizes[0])**(3+self.dust_distroindex)

            self.dust_massfrac[0] = 1/np.sum(size_ratios, axis=0)
            for idust in range(1, len(self.dust_sizes)):
                self.dust_massfrac[idust] = self.dust_massfrac[0] * size_ratios[idust]

        if (type(self.dust_to_gas) == float):
            self.dust_to_gas = np.zeros(self.r.shape) + self.dust_to_gas
        elif (len(self.dust_to_gas) == 1):
            self.dust_to_gas = np.zeros(self.r.shape) + self.dust_to_gas[0]
        elif (self.dust_to_gas.shape != self.r.shape):
            raise IndexError("Given dust to gas ratio array doesn't match the spatial grid in shape")

        try:
            if (len(self.monomer_density) == 1):
                self.monomer_density = np.zeros(len(self.dust_sizes))*self.monomer_density[0].unit + self.monomer_density[0]
            elif (len(self.monomer_density) != len(self.dust_sizes)):
                raise IndexError("Given monomer density array doesn't match dust size array in size")
        except TypeError:
            self.monomer_density = np.zeros(len(self.dust_sizes))*self.monomer_density.unit + self.monomer_density

        
        try:
            if (len(self.sublim_temp) == 1):
                self.sublim_temp = np.zeros(len(self.dust_sizes))*self.sublim_temp[0].unit + self.sublim_temp[0]
            elif (len(self.sublim_temp) != len(self.dust_sizes)):
                raise IndexError("Given sublimation temperature array doesn't match dust size array in size")
        except TypeError:
            self.sublim_temp = np.zeros(len(self.dust_sizes))*self.sublim_temp.unit + self.sublim_temp

        if (type(self.alpha_settle) == float):
            self.alpha_settle = np.zeros(len(self.dust_sizes)) + self.alpha_settle
        elif (len(self.alpha_settle) == 1):
            self.alpha_settle = np.zeros(len(self.dust_sizes)) + self.alpha_settle[0]
        elif (len(self.alpha_settle) != len(self.dust_sizes)):
            raise IndexError("Given dust to gas ratio array doesn't match radial bins in size")
        

        if (type(self.sublim_pwlindex) == float):
            self.sublim_pwlindex = np.zeros(len(self.dust_sizes)) + self.sublim_pwlindex
        elif (len(self.sublim_pwlindex) == 1):
            self.sublim_pwlindex = np.zeros(len(self.dust_sizes)) + self.sublim_pwlindex[0]
        elif (len(self.sublim_pwlindex) != len(self.dust_sizes)):
            raise IndexError("Given dust to gas ratio array doesn't match dust size array in size")

        

    def dust_density(self, renormalise=True):
        if self.dust_sizes is not None:
            self.rho_dust = np.zeros((len(self.dust_sizes), self.azimuthal_bins, self.vertical_bins, self.radial_bins)) * u.g/u.cm**3
            if (self.h_d is not None) and (self.psi_d is not None):
                if len(self.h_d) == 1:
                    self.h_d = np.zeros((len(self.dust_sizes))) + self.h_d[0]
                if len(self.psi_d) == 1:
                    self.psi_d = np.zeros((len(self.dust_sizes))) + self.psi_d[0]
                for idust in range(len(self.dust_sizes)):
                    H = self.h_d[idust] * self.r * ((self.r / self.r_c).to(u.dimensionless_unscaled)) ** (self.psi_d[idust])
                    self.rho_dust[idust] = (self.Sigma_gas * self.dust_to_gas * self.dust_massfrac[idust] / (H * np.sqrt(2 * np.pi)) * np.exp((-self.z ** 2 / (2 * H ** 2)).to(u.dimensionless_unscaled))).to(
                        u.g / u.cm ** 3)
            elif (self.h_d is not None) or (self.psi_d is not None):
                raise ValueError(
                    "You clarified one of the parameters for dust vertical structure but not the other, please clarify further")
            else:
                if self.dust_settling is not None:
                    Omega_K = np.sqrt(c.G*self.m_star/self.r**3)
                    rho0 = np.zeros(self.rho_gas.shape) * u.g/u.cm**3
                    for iz in range(self.vertical_bins):
                        rho0[:, iz, :] = self.rho_gas[:, 0, :]
                    gas_scale_height = np.zeros(self.rho_gas.shape) * u.au
                    gas_scale_height_max = self.z[:, -1, :]/np.sqrt(2*np.log(self.rho_gas[:, 0, :]/self.rho_gas[:, -1, :]))
                    for iz in range(self.vertical_bins):
                        gas_scale_height[:, iz, :] = gas_scale_height_max
                        
                    c_s = np.sqrt(c.k_B * self.gas_temperature/(2.3*c.m_p))
                                
                    for idust in range(len(self.dust_sizes)):
                        if self.alpha_settle[idust] < 1e4:
                            nstokes = (self.monomer_density[idust]*self.dust_sizes[idust]*Omega_K/(self.rho_gas*c_s)).to(u.dimensionless_unscaled)
                            if self.dust_settling == 'DD04': #Could be incorrect!!
                                lamw_z = (self.alpha_settle[idust]*self.Sigma_gas/
                                            (2*np.sqrt(2*np.pi)*self.monomer_density[idust]*self.dust_sizes[idust]*(1+nstokes))).to(u.dimensionless_unscaled).value
                                dust_scale_height = gas_scale_height * np.sqrt(2*lambertw(lamw_z).real)
                            elif self.dust_settling == "Woitke+16":
                                dust_scale_height = gas_scale_height * np.sqrt(1/(1+nstokes/self.alpha_settle[idust]))
                            elif self.dust_settling == "Woitke+24":
                                t_stop0 = self.monomer_density[idust] * self.dust_sizes[idust] / rho0 / c_s
                                settl_factor = 1 + Omega_K*t_stop0/self.alpha_settle[idust] * (2*gas_scale_height**2 / self.z**2) * (np.exp(self.z**2/2/gas_scale_height**2) - 1)
                                settl_factor[:, 0, :] = settl_factor[:, 1, :]
                                dust_scale_height = gas_scale_height / np.sqrt(settl_factor)
                            else:
                                raise ValueError("Unknown type of dust settling. Please choose between DD04 and Woitke+2016")
                            self.rho_dust[idust] = (self.Sigma_gas*self.dust_to_gas*self.dust_massfrac[idust]/(dust_scale_height*np.sqrt(2*np.pi))
                                                            * np.exp((-self.z**2/(2*dust_scale_height**2)).to(u.dimensionless_unscaled))).to(u.g/u.cm**3)
                        else:
                            self.rho_dust[idust] = self.rho_gas * self.dust_to_gas * self.dust_massfrac[idust]
                else:
                    for idust in range(len(self.dust_sizes)):
                        self.rho_dust[idust] = self.rho_gas * self.dust_to_gas * self.dust_massfrac[idust]

            if renormalise:
                for idust in range(len(self.dust_sizes)):
                    norm = np.trapz(self.rho_dust[idust], x=self.z.to(u.cm), axis=1).to(u.g/u.cm**2)
                    for iz in range(self.vertical_bins):
                        self.rho_dust[idust, :, iz, :] *= self.Sigma_gas[:, iz, :]*self.dust_to_gas[:, iz, :]*self.dust_massfrac[idust, :, iz, :]/norm

                    mask = self.rho_dust[idust] < self.envelope_density * self.dust_to_gas  * self.dust_massfrac[idust]
                    self.rho_dust[idust][mask] = self.envelope_density * self.dust_to_gas[mask] * self.dust_massfrac[idust][mask]


            self.rho_dust_orig = self.rho_dust.copy()



    def add_dust_density(self, frac=0.1, h_d=None, psi_d=None, alpha_dw=None, no_settle=False):
        if alpha_dw is None:
            for idust in range(len(self.dust_sizes)):
                H = h_d[idust] * self.r * ((self.r / self.r_c).to(u.dimensionless_unscaled)) ** (psi_d[idust])
                self.rho_dust[idust] += (frac * self.Sigma_gas / (H * np.sqrt(2 * np.pi)) * np.exp((-self.z ** 2 / (2 * H ** 2)).to(u.dimensionless_unscaled))).to(
                    u.g / u.cm ** 3)
        else:
            if no_settle:
                for idust in range(len(self.dust_sizes)):
                        self.rho_dust[idust] += frac * self.rho_gas * self.dust_to_gas * self.dust_massfrac[idust]
            else:
                Omega_K = np.sqrt(c.G*self.m_star/self.r**3)
                rho0 = np.zeros(self.rho_gas.shape) * u.g/u.cm**3
                for iz in range(self.vertical_bins):
                    rho0[:, iz, :] = self.rho_gas[:, 0, :]
                gas_scale_height = np.zeros(self.rho_gas.shape) * u.au
                gas_scale_height_max = self.z[:, -1, :]/np.sqrt(2*np.log(self.rho_gas[:, 0, :]/self.rho_gas[:, -1, :]))
                for iz in range(self.vertical_bins):
                    gas_scale_height[:, iz, :] = gas_scale_height_max

                c_s = np.sqrt(c.k_B * self.gas_temperature/(2.3*c.m_p))
                            
                for idust in range(len(self.dust_sizes)):
                    nstokes = (self.monomer_density[idust]*self.dust_sizes[idust]*Omega_K/(self.rho_gas*c_s)).to(u.dimensionless_unscaled)
                    if self.dust_settling == 'DD04': #Could be incorrect!!
                        lamw_z = (alpha_dw[idust]*self.Sigma_gas/
                                    (2*np.sqrt(2*np.pi)*self.monomer_density[idust]*self.dust_sizes[idust]*(1+nstokes))).to(u.dimensionless_unscaled).value
                        dust_scale_height = gas_scale_height * np.sqrt(2*lambertw(lamw_z).real)
                    elif self.dust_settling == "Woitke+16":
                        dust_scale_height = gas_scale_height * np.sqrt(1/(1+nstokes/alpha_dw[idust]))
                    else:
                        raise ValueError("Unknown type of dust settling. Please choose between DD04 and Woitke+2016")
                    self.rho_dust[idust] += (frac * self.Sigma_gas*self.dust_to_gas*self.dust_massfrac[idust]/(dust_scale_height*np.sqrt(2*np.pi))
                                                    * np.exp((-self.z**2/(2*dust_scale_height**2)).to(u.dimensionless_unscaled))).to(u.g/u.cm**3)

        for idust in range(len(self.dust_sizes)):
            norm = np.trapz(self.rho_dust[idust], x=self.z.to(u.cm), axis=1).to(u.g/u.cm**2)
            for iz in range(self.vertical_bins):
                self.rho_dust[idust, :, iz, :] *= self.Sigma_gas[:, iz, :]*self.dust_to_gas[:, iz, :]*self.dust_massfrac[idust, :, iz, :]/norm

            mask = self.rho_dust[idust] < self.envelope_density * self.dust_to_gas * self.dust_massfrac[idust]
            self.rho_dust[idust][mask] = self.envelope_density * self.dust_to_gas[mask] * self.dust_massfrac[idust][mask]

        self.update_table()

    def gas_temperature_from_dust(self):
        weighted_temp = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins)) * u.K / u.cm
        dust_total_surface = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins)) / u.cm
        try:
            for idust in range(len(self.dust_sizes)):
                dust_surface = self.rho_dust[idust]/(4/3*self.dust_sizes[idust] * self.monomer_density[idust])
                weighted_temp += self.dust_temperature[idust]*dust_surface
                dust_total_surface += dust_surface
            self.gas_temperature = (weighted_temp/dust_total_surface).to(u.K)

            # for iph in range(self.azimuthal_bins): # Equate gas temp to temp of most abundant dust in the cell
            #     for iz in range(self.vertical_bins):
            #         for ir in range(self.radial_bins):
            #             dust_number_dens = self.rho_dust[:, iph, iz, ir]/(4/3*np.pi*self.dust_sizes**3 * self.monomer_density)
            #             dust_ind = dust_number_dens.value.tolist().index(max(dust_number_dens.value))
            #             self.gas_temperature[iph, iz, ir] = self.dust_temperature[dust_ind, iph, iz, ir]
        except AttributeError: # Catching a pre-RADMC case when all dust temps are equal
            self.gas_temperature = self.dust_temperature[0].copy()

    def viscous_temp(self, alpha_vis: float=1e-4):
        temp_visc = np.zeros(self.dust_temperature.shape) * u.K
        nrcells = self.azimuthal_bins * self.vertical_bins * self.radial_bins
        gas_scale_height = np.zeros(self.rho_gas.shape) * u.au
        gas_scale_height_max = self.z[:, -1, :]/np.sqrt(2*np.log(self.rho_gas[:, 0, :]/self.rho_gas[:, -1, :]))
        for iz in range(self.vertical_bins):
            gas_scale_height[:, iz, :] = gas_scale_height_max
        Omega_K = np.sqrt(c.G*self.m_star/self.r**3)
        for idust in range(len(self.dust_sizes)):
            dust_spice = self.table.dust_list[idust]
            
            opac = np.loadtxt(dust_spice.opacity_file, skiprows=2).transpose()
            kappa_P = np.zeros(nrcells)*u.cm**2/u.g
            kappa_R = np.zeros(nrcells)*u.cm**2/u.g
            int_planck = np.zeros(nrcells)*u.cm**2/u.g*u.erg/u.s/u.cm**2
            int_rossel = np.zeros(nrcells)*u.erg/u.s/u.cm**2/(u.cm**2/u.g)
            int_down = np.zeros(nrcells)*u.erg/u.s/u.cm**2
            av_temp_flat = self.dust_temperature[idust].flatten()
            for iw in range(1,len(opac[0,:])):
                bbody1 = 2*c.h*c.c**2/(opac[0,iw-1]*u.um)**5 * 1/(np.exp((c.h*c.c/((opac[0,iw-1]*u.um)*c.k_B*av_temp_flat)).to(u.dimensionless_unscaled))-1)
                bbody2 = 2*c.h*c.c**2/(opac[0,iw]*u.um)**5 * 1/(np.exp((c.h*c.c/((opac[0,iw]*u.um)*c.k_B*av_temp_flat)).to(u.dimensionless_unscaled))-1)
                int_planck += 0.5*((opac[1,iw-1]*u.cm**2/u.g)*bbody1 + (opac[1,iw]*u.cm**2/u.g)*bbody2)*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
                int_rossel += 0.5*(bbody1/(opac[1,iw-1]*u.cm**2/u.g) + bbody2/(opac[1,iw]*u.cm**2/u.g))*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
                int_down += 0.5*(bbody1 + bbody2)*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
            kappa_P = int_planck/int_down
            kappa_R = int_down/int_rossel

            kappa_P = np.reshape(kappa_P.to(u.cm**2/u.g), (self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            kappa_R = np.reshape(kappa_R.to(u.cm**2/u.g), (self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            Sigma_vertical = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins)) * u.g/u.cm**2
            alpha_P = (kappa_P*self.rho_dust[idust]).to(1/u.cm)
            alpha_R = (kappa_P*self.rho_dust[idust]).to(1/u.cm)
            tau_verticalP = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            tau_verticalR = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            for iz in range(self.vertical_bins):
                tau_verticalP[:, iz, :] = np.trapz(alpha_P[:, iz:, :], x=self.z[:, iz:, :].to(u.cm), axis=1)
                tau_verticalR[:, iz, :] = np.trapz(alpha_R[:, iz:, :], x=self.z[:, iz:, :].to(u.cm), axis=1)
                Sigma_vertical[:, iz, :] = np.trapz(self.rho_gas[:, iz:, :], x=self.z[:, iz:, :].to(u.cm), axis=1)

            temp_visc[idust] = (((9/16 * alpha_vis * Sigma_vertical/tau_verticalP/c.sigma_sb * gas_scale_height*Omega_K**2 * np.sqrt(c.k_B/(2.3*c.m_p))) * (1+2*tau_verticalP*(1+3/4*tau_verticalR)))**(1./3.5)).to(u.K) 
            temp_visc[idust][tau_verticalP == 0] = 0 * u.K

        return temp_visc

            

    def check_dust_sublimation(self, deltaT: float = 100):

        # mask = self.sublimation_mask()
        # deleted_cells = np.sum(mask)
        # self.rho_dust[mask] *= reduction_factor

        dr = np.zeros(self.r.shape) * u.cm
        dr[:,:,:-1] = (self.r[:,:,1:] - self.r[:,:,:-1])
        dr[:,:,-1] = self.r[:,:,-1] - self.r[:,:,-2]
        kappa_P = self.kappa_Pstar()
        tau_P = self.tau_radialP()
        fd2g = np.zeros(self.rho_dust.shape) + 1
        submask = self.sublimation_mask()
        for idust in range(len(self.dust_sizes)):
            fdt = 0.2/(self.rho_dust[idust]*dr*kappa_P[idust]).to(u.dimensionless_unscaled).value
            # fdt[fdt > 1] = 1
            sublim_temp = self.sublim_temp[idust] * (self.rho_gas.to(u.g / u.cm ** 3).value) ** self.sublim_pwlindex[idust]  # Flock+2025
            mask = submask[idust]
            tanh_arg1 = ((self.dust_temperature[idust][mask]-sublim_temp[mask]).to(u.K).value/(deltaT))**3
            fd2g[idust][mask] = fdt[mask] * (0.5*(1-np.tanh(tanh_arg1))) * (0.5*(1-np.tanh(2./3. - tau_P[idust][mask]))) #Flock+2019

        fd2g[fd2g > 1] = 1

        self.rho_dust = self.rho_dust_orig * fd2g

        for idust in range(len(self.dust_sizes)):
            mask = self.rho_dust[idust] < self.envelope_density * self.dust_to_gas * self.dust_massfrac[idust]
            self.rho_dust[idust][mask] = self.envelope_density * self.dust_to_gas[mask] * self.dust_massfrac[idust][mask]

        self.update_table()



    def sublimation_mask(self):
        mask = np.zeros(self.rho_dust.shape, dtype=bool)
        for idust in range(len(self.dust_sizes)):
            sublim_temp = self.sublim_temp[idust]*(self.rho_gas.to(u.g/u.cm**3).value)**self.sublim_pwlindex[idust] # Flock+2025
            mask[idust] = self.dust_temperature[idust] >= sublim_temp

        return mask

    def gas_density(self):
        if (self.h_g is not None) and (self.psi_g is not None):
            H = self.h_g * self.r * ((self.r/self.r_c).to(u.dimensionless_unscaled))**(self.psi_g)
            self.rho_gas = (self.Sigma_gas/(H*np.sqrt(2*np.pi)) * np.exp((-(self.z - self.z_rhocentre)**2/(2*H**2)).to(u.dimensionless_unscaled))).to(u.g/u.cm**3)
            if self.misind_incl is not None:
                Hm = self.h_g * self.rm * ((self.rm/self.r_c).to(u.dimensionless_unscaled))**(self.psi_g)
                indisk_mask = self.r < self.misind_radius
                self.rho_gas[indisk_mask] = (self.Sigma_gas[indisk_mask]/(Hm[indisk_mask]*np.sqrt(2*np.pi)) * np.exp((-self.zm[indisk_mask]**2/(2*Hm[indisk_mask]**2)).to(u.dimensionless_unscaled))).to(u.g/u.cm**3)

            if self.renormalise:
                norm = np.trapz(self.rho_gas, x=self.z.to(u.cm), axis=1).to(u.g / u.cm ** 2)
                for iz in range(self.vertical_bins):
                    self.rho_gas[:, iz, :] *= self.Sigma_gas[:, iz, :] / norm
        elif (self.h_g is not None) or (self.psi_g is not None):
            raise ValueError("You clarified one of the parameters for vertical structure but not the other, please clarify further")
        else:
            if self.misind_incl is not None:
                raise CHEFWarning("Currently misaligned inner disk is not supported with hydrostatic equilibrium. Ignoring misaligned disk.")
            powerexp_und = -c.G * self.m_star * (2.3 * c.m_p) / (c.k_B * (self.gas_temperature)) * self.z/np.sqrt(self.r**2 + self.z**2)**3
            powerexp = np.zeros(powerexp_und.shape)
            N0 = np.zeros(powerexp_und.shape) * (u.cm/u.K)
            T0 = np.zeros(powerexp_und.shape) * u.K
            for iz in range(self.vertical_bins):
                powerexp[:, iz, :] = np.trapz(powerexp_und[:, :iz+1, :].to(1/u.cm), x=self.z[:, :iz+1, :].to(u.cm), axis=1).to(u.dimensionless_unscaled).value
            N0_0 = np.trapz(np.exp(powerexp) / self.gas_temperature, x=self.z.to(u.cm), axis=1)
            for iz in range(self.vertical_bins):
                N0[:, iz, :] = N0_0
                T0[:, iz, :] = self.gas_temperature[:, 0, :]

            rho0 = self.Sigma_gas/(2*N0*T0)
            self.rho_gas = (T0/self.gas_temperature * rho0 * np.exp(powerexp)).to(u.g/u.cm**3)

        mask = self.rho_gas < self.envelope_density
        self.rho_gas[mask] = self.envelope_density

    def add_gas_density(self, frac=0.1, h_g=None, psi_g=None, update_dust=True):
        H = h_g * self.r * ((self.r/self.r_c).to(u.dimensionless_unscaled))**(psi_g)
        self.rho_gas += (frac * self.Sigma_gas/(H*np.sqrt(2*np.pi)) * np.exp((-self.z**2/(2*H**2)).to(u.dimensionless_unscaled))).to(u.g/u.cm**3)

        norm = np.trapz(self.rho_gas, x=self.z.to(u.cm), axis=1).to(u.g / u.cm ** 2)
        for iz in range(self.vertical_bins):
            self.rho_gas[:, iz, :] *= self.Sigma_gas[:, iz, :] / norm

        mask = self.rho_gas < self.envelope_density
        self.rho_gas[mask] = self.envelope_density

        if update_dust:
            self.dust_density()

        self.update_table()

    def iterate_vertical_structure(self, nphot_therm: int = 100000, threads: int = 1, eps: float = 1e-2, max_iter: int = 20, nphotdiff: float = None,
                                   nphotdiff_type: int = None, stellar_template: Union[None, u.Quantity] = None,
                                   wavelengths=np.geomspace(0.0913, 10000, 1000) * u.um,
                                   istar_sphere: int = None, shut_output: bool=False):
        iloop=1
        if not shut_output:
            print("Starting vertical structure iteration")
            print("max dT/T      mean dT/T      max drho/rho       mean drho/rho")
        while True:
            self.dust_temperature_radmc(nphot_therm=nphot_therm, threads=threads, nphotdiff=nphotdiff, nphotdiff_type=nphotdiff_type,
                                        stellar_template=stellar_template, wavelengths=wavelengths, istar_sphere=istar_sphere, nearest=True)
            gas_temperature_before = self.gas_temperature.copy()
            self.gas_temperature_from_dust()
            gas_density_before = self.rho_gas.copy()
            self.gas_density()
            self.dust_density()
            self.check_dust_sublimation()
            self.update_table()
            max_temp_dif = np.max(abs(gas_temperature_before/self.gas_temperature - 1))
            mean_temp_dif = np.mean(abs(gas_temperature_before/self.gas_temperature - 1))
            max_dens_dif = np.max(abs(gas_density_before/self.rho_gas - 1))
            mean_dens_dif = np.mean(abs(gas_density_before/self.rho_gas - 1))
            if not shut_output:
                print(f"{max_temp_dif:.3e}     {mean_temp_dif:.3e}    {max_dens_dif:.3e}     {mean_dens_dif:.3e}")
            max_dif = np.max([max_temp_dif, max_dens_dif])
            if max_dif < eps:
                print(f"Convergence successful")
                return
            iloop += 1
            if iloop > max_iter:
                print(f"Structure did not converge after {max_iter} iterations. Proceeding as is.")
                return

    def iterate_settle_sublimation(self, nphot_therm: int = 100000, nphot_scat: int = None, threads: int = 1, eps=1e-2, max_iter: int = 20, nphotdiff: float = None,
                                   scattering_mode_max: int = None, eps_n: float = 1e-2,
                                   nphotdiff_type: int = None, stellar_template: Union[None, u.Quantity] = None,
                                   wavelengths=np.geomspace(0.0913, 10000, 1000) * u.um,
                                   istar_sphere: int = None, include_settle: bool = False, shut_output: bool = False, deltaT: float = 100):
        iloop=1
        is_converged = False
        if not shut_output:
            if include_settle:
                print("Starting dust sublimation and settling iteration")
            else:
                print(f"Starting dust sublimation iteration, temp deviation thresh {eps}, n above thresh {eps_n}")
        while True:
            dust_temp_before = self.dust_temperature.copy()
            self.dust_temperature_radmc(nphot_therm=nphot_therm, nphot_scat=nphot_scat, threads=threads, nphotdiff=nphotdiff,
                                        nphotdiff_type=nphotdiff_type, scattering_mode_max=scattering_mode_max,
                                        stellar_template=stellar_template, wavelengths=wavelengths,
                                        istar_sphere=istar_sphere)
            if include_settle:
                self.gas_temperature_from_dust()
                self.dust_density()
            check_mask = self.dust_temperature > np.min(self.sublim_temp) - 3*deltaT*u.K
            max_temp_dif = abs(dust_temp_before[check_mask] / self.dust_temperature[check_mask] - 1)
            npoints = self.radial_bins*self.vertical_bins*self.azimuthal_bins
            n_above_rel = np.sum(max_temp_dif > eps)/npoints
            if not shut_output:
                # print(f"mean temp diff: {max_temp_dif}, iteration {iloop}")
                print(f"n above eps temp diff: {n_above_rel:.4f}*{npoints}, iteration {iloop}")
            if n_above_rel <= eps_n:
                if not shut_output:
                    print(f"Convergence successful")
                is_converged = True
                return is_converged
            self.check_dust_sublimation(deltaT=deltaT)
            iloop += 1
            if iloop > max_iter:
                if not shut_output:
                    print(f"Iteration did not converge after {max_iter} iterations. Proceeding as is.")
                return is_converged

    def time_variable_dust_temp(self, timescale: u.d = 5 * u.d, average_temp_file: str = '', type: str = 'WL21'):
        av_temp_radmc = np.loadtxt(average_temp_file) # Assuming flat array radmc3d style but pre-interpolated!!
        nrcells = self.azimuthal_bins * self.vertical_bins * self.radial_bins
        Cv = 5/2 * c.k_B / (2.3*c.m_p)

        mu0 = np.zeros(self.r.shape)
        mu0[:, :, 0] = (self.r[:, :, 0]/np.sqrt(self.r[:,:,0]**2+self.z[:,:,0]**2)).to(u.dimensionless_unscaled)
        H = self.h_g * self.r * ((self.r/self.r_c).to(u.dimensionless_unscaled))**(self.psi_g)
        H_prime = self.h_g * (1+self.psi_g) * ((self.r/self.r_c).to(u.dimensionless_unscaled))**(self.psi_g)
        r_surf = np.sqrt(self.r**2+H**2)
        mu0[:, :, 1:] = (self.r[:, :, 1:]/r_surf[:, :, 1:]).to(u.dimensionless_unscaled) / np.sqrt(1+(1/H_prime[:, :, 1:])**2) - (H[:, :, 1:]/r_surf[:, :, 1:]).to(u.dimensionless_unscaled) /np.sqrt(H_prime[:, :, 1:]**2+1)
        F0 = self.l_star/(4*np.pi*r_surf**2)
        for idust in range(len(self.dust_sizes)):
            dust_spice = self.table.dust_list[idust]
            av_temp = np.reshape(av_temp_radmc[idust*nrcells:(idust+1)*nrcells], (self.azimuthal_bins, self.vertical_bins, self.radial_bins)) * u.K
            
            # opac = np.loadtxt(dust_spice.opacity_file, skiprows=2).transpose()
            # wav = np.zeros((nrcells, len(opac[0,:])))
            # wav[:] = opac[0,:]
            # wav *= u.um
            # kappa = np.zeros((nrcells, len(opac[0,:])))
            # kappa[:] = opac[1,:]
            # kappa *= u.cm**2/u.g
            # kappa_P = np.zeros(nrcells)*u.cm**2/u.g
            # av_temp_flat = np.zeros((len(opac[0,:]), nrcells))
            # av_temp_flat[:] = av_temp_radmc[idust*nrcells:(idust+1)*nrcells]
            # av_temp_flat = np.swapaxes(av_temp_flat,1,0) * u.K
            # bbody = 2*c.h*c.c**2/wav**5 * 1/(np.exp(c.h*c.c/(wav*c.k_B*av_temp_flat)))
            # int_up = np.trapz(kappa*bbody, x=wav, axis=1)
            # int_down = np.trapz(bbody, x=wav, axis=1)
            # kappa_P = int_up/int_down
            
            opac = np.loadtxt(dust_spice.opacity_file, skiprows=2).transpose()
            kappa_P = np.zeros(nrcells)*u.cm**2/u.g
            kappa_R = np.zeros(nrcells)*u.cm**2/u.g
            int_planck = np.zeros(nrcells)*u.cm**2/u.g*u.erg/u.s/u.cm**2
            int_planck2 = 0 * u.cm**2/u.g*u.erg/u.s/u.cm**2
            int_rossel = np.zeros(nrcells)*u.erg/u.s/u.cm**2/(u.cm**2/u.g)
            int_down = np.zeros(nrcells)*u.erg/u.s/u.cm**2
            int_down2 = 0 * u.erg/u.s/u.cm**2
            av_temp_flat = av_temp_radmc[idust*nrcells:(idust+1)*nrcells] * u.K
            for iw in range(1,len(opac[0,:])):
                bbody1 = 2*c.h*c.c**2/(opac[0,iw-1]*u.um)**5 * 1/(np.exp((c.h*c.c/((opac[0,iw-1]*u.um)*c.k_B*av_temp_flat)).to(u.dimensionless_unscaled))-1)
                bbody1_rad = 2*c.h*c.c**2/(opac[0,iw-1]*u.um)**5 * 1/(np.exp((c.h*c.c/((opac[0,iw-1]*u.um)*c.k_B*self.t_star)).to(u.dimensionless_unscaled))-1)
                bbody2 = 2*c.h*c.c**2/(opac[0,iw]*u.um)**5 * 1/(np.exp((c.h*c.c/((opac[0,iw]*u.um)*c.k_B*av_temp_flat)).to(u.dimensionless_unscaled))-1)
                bbody2_rad = 2*c.h*c.c**2/(opac[0,iw]*u.um)**5 * 1/(np.exp((c.h*c.c/((opac[0,iw]*u.um)*c.k_B*self.t_star)).to(u.dimensionless_unscaled))-1)
                int_planck += 0.5*((opac[1,iw-1]*u.cm**2/u.g)*bbody1 + (opac[1,iw]*u.cm**2/u.g)*bbody2)*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
                int_planck2 += 0.5*((opac[1,iw-1]*u.cm**2/u.g)*bbody1_rad + (opac[1,iw]*u.cm**2/u.g)*bbody2_rad)*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
                int_rossel += 0.5*(bbody1/(opac[1,iw-1]*u.cm**2/u.g) + bbody2/(opac[1,iw]*u.cm**2/u.g))*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
                int_down += 0.5*(bbody1 + bbody2)*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
                int_down2 += 0.5*(bbody1_rad + bbody2_rad)*((opac[0,iw]*u.um)-(opac[0,iw-1]*u.um))
            kappa_P = int_planck/int_down
            kappa_F = (int_planck2/int_down2).to(u.cm**2/u.g)
            kappa_R = int_down/int_rossel

            kappa_P = np.reshape(kappa_P.to(u.cm**2/u.g), (self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            kappa_R = np.reshape(kappa_R.to(u.cm**2/u.g), (self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            alpha_P = (kappa_P*self.rho_dust[idust]).to(1/u.cm)
            alpha_R = (kappa_P*self.rho_dust[idust]).to(1/u.cm)
            alpha_F = (kappa_F*self.rho_dust[idust]).to(1/u.cm)
            tau_verticalP = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            tau_verticalR = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            tau_verticalF = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            Sigma_vertical = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins)) * u.g/u.cm**2
            tau_radialP = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            tau_radialR = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            tau_radialF = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins))
            Sigma_radial = np.zeros((self.azimuthal_bins, self.vertical_bins, self.radial_bins)) * u.g/u.cm**2
            for iz in range(self.vertical_bins):
                tau_verticalP[:, iz, :] = np.trapz(alpha_P[:, iz:, :], x=self.z[:, iz:, :].to(u.cm), axis=1)
                tau_verticalR[:, iz, :] = np.trapz(alpha_R[:, iz:, :], x=self.z[:, iz:, :].to(u.cm), axis=1)
                tau_verticalF[:, iz, :] = np.trapz(alpha_F[:, iz:, :], x=self.z[:, iz:, :].to(u.cm), axis=1)
                Sigma_vertical[:, iz, :] = np.trapz(self.rho_dust[idust, :, iz:, :], x=self.z[:, iz:, :].to(u.cm), axis=1)
            for ir in range(self.radial_bins):
                tau_radialP[:, :, ir] = np.trapz(alpha_P[:, :, :ir+1], x=self.r[:, :, :ir+1].to(u.cm), axis=2)
                tau_radialR[:, :, ir] = np.trapz(alpha_R[:, :, :ir+1], x=self.r[:, :, :ir+1].to(u.cm), axis=2)
                tau_radialF[:, :, ir] = np.trapz(alpha_F[:, :, :ir+1], x=self.r[:, :, :ir+1].to(u.cm), axis=2)
                Sigma_radial[:, :, ir] = np.trapz(self.rho_dust[idust, :, :, :ir+1], x=self.r[:, :, :ir+1].to(u.cm), axis=2)

            tau_minP = np.min(np.array([tau_verticalP, tau_radialP]), axis=0)
            tau_minR = np.min(np.array([tau_verticalR, tau_radialR]), axis=0)
            tau_minUV = np.min(np.array([tau_verticalF, tau_radialF]), axis=0)
            Sigma2tau_min  = np.min(np.array([Sigma_vertical/tau_verticalP, Sigma_radial/tau_radialP]), axis=0) * u.g/u.cm**2

            if type == 'WL21':
                tau_th = (3/2 * Cv * tau_minP * self.Sigma_gas / (2 * c.sigma_sb * av_temp**3)).to(timescale.unit)
            elif type == 'Laznevoi+2025':
                Gamma = 2 * mu0 * F0 / (1 + 2 * tau_minP + 1.5 * tau_minP * tau_minR)
                tau0_mask = tau_minP == 0
                tau_th = (Cv * av_temp * Sigma2tau_min / Gamma).to(timescale.unit)
                tau_th[tau0_mask] = 0 * timescale.unit
            elif type == 'Pavlyuchenkov+2023':
                tau0_mask = (tau_minUV == 0) | (tau_minP == 0)
                Gamma = mu0 * F0 *(2*(1-np.exp(-tau_minUV))+3*mu0*tau_minR/tau_minUV*(1-np.exp(-tau_minUV)-tau_minUV*np.exp(-tau_minUV))+tau_minUV/tau_minP*np.exp(-tau_minUV))/(1 + 2 * tau_minP + 1.5 * tau_minP * tau_minR)
                Gamma[tau0_mask] = 0
                tau_th = (Cv * av_temp * Sigma2tau_min / Gamma).to(timescale.unit)
                tau_th[tau0_mask] = 0 * timescale.unit

            mask = tau_th > timescale
            self.dust_temperature[idust][mask] = av_temp[mask]

    def tau_radialP(self):
        tau_radialP = np.zeros(self.rho_dust.shape)
        kappa_P = self.kappa_Pstar()
        for idust in range(len(self.dust_sizes)):
            alpha_P = (kappa_P[idust] * self.rho_dust[idust]).to(1 / u.cm)
            for ir in range(self.radial_bins):
                tau_radialP[idust, :, :, ir] = np.trapz(alpha_P[:, :, :ir+1], x=self.r[:, :, :ir+1].to(u.cm), axis=2)

        return tau_radialP

    def kappa_Pstar(self):
        kappa_P = np.zeros(len(self.dust_sizes)) * u.cm ** 2 / u.g
        for idust in range(len(self.dust_sizes)):
            dust_spice = self.table.dust_list[idust]

            opac = np.loadtxt(dust_spice.opacity_file, skiprows=2).transpose()
            wav = (opac[0, :] * u.um)
            kappa = opac[1,:] * u.cm ** 2 / u.g
            bbody = 2 * c.h * c.c ** 2 / wav** 5 * 1 / (np.exp((c.h * c.c / (wav * c.k_B * self.t_star)).to(u.dimensionless_unscaled)) - 1)
            int_planck = np.trapz(bbody*kappa, x=wav)
            int_down = np.trapz(bbody, x=wav)

            ## Archaic integration
            # int_planck = 0 * u.cm ** 2 / u.g * u.erg / u.s / u.cm ** 2
            # int_down = 0 * u.erg / u.s / u.cm ** 2
            # for iw in range(1, len(opac[0, :])):
            #     bbody1 = 2 * c.h * c.c ** 2 / (opac[0, iw - 1] * u.um) ** 5 * 1 / (np.exp(
            #         (c.h * c.c / ((opac[0, iw - 1] * u.um) * c.k_B * self.t_star)).to(u.dimensionless_unscaled)) - 1)
            #     bbody2 = 2 * c.h * c.c ** 2 / (opac[0, iw] * u.um) ** 5 * 1 / (np.exp(
            #         (c.h * c.c / ((opac[0, iw] * u.um) * c.k_B * self.t_star)).to(u.dimensionless_unscaled)) - 1)
            #     int_planck += 0.5 * (
            #                 (opac[1, iw - 1] * u.cm ** 2 / u.g) * bbody1 + (opac[1, iw] * u.cm ** 2 / u.g) * bbody2) * (
            #                               (opac[0, iw] * u.um) - (opac[0, iw - 1] * u.um))
            #     int_down += 0.5 * (bbody1 + bbody2) * ((opac[0, iw] * u.um) - (opac[0, iw - 1] * u.um))
            kappa_P[idust] = (int_planck / int_down).to(u.cm ** 2 / u.g)

        return kappa_P


    def create_table(self) -> CTable:
        """Return the associated diskchef.CTable with r, z, and dust and gas properties"""
        table = CTable(
            [
                self.r.flatten(),
                self.z.flatten(),
                self.phi.flatten()
            ],
            names=["Radius", "Height", "Phi"],
            dims='3d'
        )
        table["Height to radius"] = u.Quantity(self.zr.flatten())
        table["Gas density"] = self.rho_gas.flatten()
        for idust in range(len(self.dust_sizes)):
            table[f"{self.dust_names[idust]} density"] = self.rho_dust[idust].flatten()
        table["Gas temperature"] = self.gas_temperature.flatten()
        for idust in range(len(self.dust_sizes)):
            table[f"{self.dust_names[idust]} temperature"] = self.dust_temperature[idust].flatten()

        if self.is_zr_regular:
            table.sort(['Phi', 'Height to radius', 'Radius'])
        else:
            table.sort(['Phi', 'Height', 'Radius'])

        table.dust_list = [DustPopulationOptool(opacity_file=f'{self.radmc_folder}/dustkappa_{self.dust_names[i]}.inp', table=table,
                                                name=self.dust_names[i], size=self.dust_sizes[i]) for i in range(len(self.dust_sizes))]
        return table

    def update_table(self):
        self.table["Gas density"] = self.rho_gas.flatten()
        for idust in range(len(self.dust_sizes)):
            self.table[f"{self.dust_names[idust]} density"] = self.rho_dust[idust].flatten()
        self.table["Gas temperature"] = self.gas_temperature.flatten()
        for idust in range(len(self.dust_sizes)):
            self.table[f"{self.dust_names[idust]} temperature"] = self.dust_temperature[idust].flatten()

    def misalign_disk_interpolation(self): #Does not work properly atm
        rotated_gasdens = self.table.interpolate3d('Gas density')(self.rm.flatten(), self.zm.flatten(), self.phim.flatten())
        rotated_gasdens = rotated_gasdens.reshape(self.rho_gas.shape)
        indisk_mask = self.r < self.misind_radius
        self.rho_gas[indisk_mask] = rotated_gasdens[indisk_mask]
        mask = self.rho_gas < self.envelope_density
        self.rho_gas[mask] = self.envelope_density
        for idust in range(len(self.dust_sizes)):
            rotated_dustdens = self.table.interpolate3d(f"{self.dust_names[idust]} density")(self.rm.flatten(), self.zm.flatten(), self.phim.flatten())
            rotated_dustdens = rotated_dustdens.reshape(self.rho_gas.shape)
            self.rho_dust[idust][indisk_mask] = rotated_dustdens[indisk_mask]
            mask = self.rho_dust[idust] < self.envelope_density * self.dust_to_gas * self.dust_massfrac[idust]
            self.rho_dust[idust][mask] = self.envelope_density * self.dust_to_gas[mask] * self.dust_massfrac[idust][mask]

        self.update_table()

    def ini_grid(self):
        for igr in range(len(self.radial_bins)):
            add_radii = np.geomspace(self.r_grid[igr].to(u.au).value, self.r_grid[igr+1].to(u.au).value, self.radial_bins[igr])
            if igr == 0:
                self.radii = add_radii.copy()
            else:
                self.radii = np.concatenate((self.radii, add_radii[1:]), axis=None)
        self.radial_bins = sum(self.radial_bins) - igr
        if (self.misind_incl is not None) & (self.zr_min >= 0):
            print("zr_min >= 0 and misaligned inner disk won't work well together. Setting zr_min = -zr_max")
            self.zr_min = -self.zr_max
            self.vertical_bins *= 2
        if self.is_zr_regular:
            phi, zr, r = np.meshgrid(np.linspace(0, 2 * np.pi, self.azimuthal_bins),
                                     np.linspace(self.zr_min, self.zr_max, self.vertical_bins), self.radii,
                                     indexing='ij'
                                     )
        else:
            if self.zr_min < 0:
                z_min = self.zr_min * self.r_grid[-1].to(u.au).value
            else:
                z_min = self.zr_min * self.r_grid[0].to(u.au).value
            phi, z, r = np.meshgrid(np.linspace(0, 2 * np.pi, self.azimuthal_bins),
                                    np.linspace(z_min, self.zr_max * self.r_grid[-1].to(u.au).value, self.vertical_bins),
                                    self.radii,
                                    indexing='ij'
                                    )
        self.r = (r * u.au)
        self.phi = phi * u.rad
        if self.is_zr_regular:
            self.zr = zr
            self.z = self.r * self.zr
        else:
            self.z = (z * u.au)
            self.zr = (self.z / self.r).to(u.dimensionless_unscaled).value

    def __post_init__(self):
        self.ini_grid()

        if self.misind_incl is not None:
            self.rm = np.sqrt(self.r**2*np.cos(self.phi)**2 + (self.r*np.sin(self.phi)*np.cos(self.misind_incl)+self.z*np.sin(self.misind_incl))**2)
            self.zm = -self.r*np.sin(self.phi)*np.sin(self.misind_incl) + self.z*np.cos(self.misind_incl)
            self.phim = np.arctan2((self.r*np.sin(self.phi)*np.cos(self.misind_incl)+self.z*np.sin(self.misind_incl)), self.r*np.cos(self.phi))
            self.phim[self.phim < 0*u.rad] += 2*np.pi*u.rad
        self.get_star_params()
        self.gas_surface_density()
        self.dust_temperature_parametric()
        self.gas_temperature_from_dust()
        self.gas_density()
        self.dust_mass_fraction()
        self.dust_density()
        self.table = self.create_table()
        self.check_dust_sublimation()

Ancestors

Class variables

var ages : Unit("Myr")
var alpha_settle : float
var alpha_vis : float
var amratio : float
var azimuthal_bins : int
var dust_distroindex : float
var dust_massfrac : List[float]
var dust_names : List[str]
var dust_settling : str
var dust_sizes : Unit("cm")
var dust_to_gas : float
var envelope_density : Unit("g / cm3")
var gamma_in : float
var gamma_pwl : float
var gamma_tap : float
var gap_amps : List[float]
var gap_positions : Unit("AU")
var gap_type : str
var gap_widths : Unit("AU")
var grazang : float
var h_d : List[float]
var h_g : float
var is_zr_regular : bool
var l_acc : Unit("solLum")
var l_star : Unit("solLum")
var l_stars : Unit("solLum")
var m_disk : Unit("solMass")
var m_star : Unit("solMass")
var m_stars : Unit("solMass")
var misind_incl : Unit("deg")
var misind_radius : Unit("AU")
var monomer_density : Unit("g / cm3")
var psi_d : List[float]
var psi_g : float
var r_c : Unit("AU")
var r_c_in : Unit("AU")
var r_grid : Unit("AU")
var r_min_sigma : Unit("AU")
var r_star : Unit("solRad")
var r_stars : Unit("solRad")
var radial_bins : int
var radmc_folder : str
var renormalise : bool
var sep_stars_paramtemp : bool
var star_coords : Unit("AU")
var sublim_pwlindex : float
var sublim_temp : Unit("K")
var t_acc : Unit("K")
var t_star : Unit("K")
var t_stars : Unit("K")
var vertical_bins : int
var z_rhocentre : Unit("AU")
var zr_max : float
var zr_min : float

Methods

def add_dust_density(self, frac=0.1, h_d=None, psi_d=None, alpha_dw=None, no_settle=False)
def add_gas_density(self, frac=0.1, h_g=None, psi_g=None, update_dust=True)
def check_dust_sublimation(self, deltaT: float = 100)
def create_table(self) ‑> CTable

Return the associated diskchef.CTable with r, z, and dust and gas properties

def dust_density(self, renormalise=True)
def dust_mass_fraction(self)
def dust_temperature_parametric(self)

Following ANDES2, Akimkin+2013

def dust_temperature_radmc(self, nphot_therm: int = 100000, threads: int = 1, nphotdiff: float = None, nphotdiff_type: int = None, nphot_scat: int = None, scattering_mode_max: int = None, nphot_spec: int = None, mc_scat_maxtauabs: float = None, stellar_template: Optional[None] = None, wavelengths=<Quantity [9.13000000e-02, 9.23666837e-02, 9.34458298e-02, 9.45375839e-02, 9.56420933e-02, 9.67595069e-02, 9.78899756e-02, 9.90336519e-02, 1.00190690e-01, 1.01361246e-01, 1.02545478e-01, 1.03743546e-01, 1.04955611e-01, 1.06181838e-01, 1.07422390e-01, 1.08677436e-01, 1.09947145e-01, 1.11231689e-01, 1.12531240e-01, 1.13845975e-01, 1.15176069e-01, 1.16521704e-01, 1.17883060e-01, 1.19260321e-01, 1.20653673e-01, 1.22063304e-01, 1.23489404e-01, 1.24932166e-01, 1.26391784e-01, 1.27868455e-01, 1.29362378e-01, 1.30873756e-01, 1.32402791e-01, 1.33949690e-01, 1.35514662e-01, 1.37097918e-01, 1.38699672e-01, 1.40320140e-01, 1.41959539e-01, 1.43618093e-01, 1.45296024e-01, 1.46993558e-01, 1.48710926e-01, 1.50448358e-01, 1.52206088e-01, 1.53984355e-01, 1.55783398e-01, 1.57603459e-01, 1.59444785e-01, 1.61307624e-01, 1.63192226e-01, 1.65098847e-01, 1.67027744e-01, 1.68979176e-01, 1.70953408e-01, 1.72950705e-01, 1.74971337e-01, 1.77015577e-01, 1.79083700e-01, 1.81175985e-01, 1.83292715e-01, 1.85434176e-01, 1.87600656e-01, 1.89792448e-01, 1.92009847e-01, 1.94253152e-01, 1.96522666e-01, 1.98818696e-01, 2.01141551e-01, 2.03491545e-01, 2.05868994e-01, 2.08274220e-01, 2.10707547e-01, 2.13169303e-01, 2.15659820e-01, 2.18179435e-01, 2.20728487e-01, 2.23307320e-01, 2.25916283e-01, 2.28555727e-01, 2.31226008e-01, 2.33927487e-01, 2.36660528e-01, 2.39425500e-01, 2.42222776e-01, 2.45052733e-01, 2.47915753e-01, 2.50812223e-01, 2.53742533e-01, 2.56707079e-01, 2.59706261e-01, 2.62740482e-01, 2.65810154e-01, 2.68915689e-01, 2.72057507e-01, 2.75236032e-01, 2.78451692e-01, 2.81704922e-01, 2.84996161e-01, 2.88325852e-01, 2.91694444e-01, 2.95102393e-01, 2.98550158e-01, 3.02038204e-01, 3.05567001e-01, 3.09137027e-01, 3.12748763e-01, 3.16402695e-01, 3.20099317e-01, 3.23839128e-01, 3.27622632e-01, 3.31450340e-01, 3.35322768e-01, 3.39240439e-01, 3.43203881e-01, 3.47213629e-01, 3.51270224e-01, 3.55374214e-01, 3.59526151e-01, 3.63726597e-01, 3.67976118e-01, 3.72275287e-01, 3.76624684e-01, 3.81024897e-01, 3.85476519e-01, 3.89980150e-01, 3.94536399e-01, 3.99145879e-01, 4.03809213e-01, 4.08527031e-01, 4.13299967e-01, 4.18128668e-01, 4.23013783e-01, 4.27955973e-01, 4.32955904e-01, 4.38014250e-01, 4.43131695e-01, 4.48308928e-01, 4.53546648e-01, 4.58845562e-01, 4.64206384e-01, 4.69629839e-01, 4.75116657e-01, 4.80667579e-01, 4.86283355e-01, 4.91964741e-01, 4.97712504e-01, 5.03527420e-01, 5.09410274e-01, 5.15361858e-01, 5.21382976e-01, 5.27474441e-01, 5.33637074e-01, 5.39871707e-01, 5.46179181e-01, 5.52560347e-01, 5.59016066e-01, 5.65547209e-01, 5.72154657e-01, 5.78839302e-01, 5.85602045e-01, 5.92443800e-01, 5.99365488e-01, 6.06368045e-01, 6.13452414e-01, 6.20619553e-01, 6.27870426e-01, 6.35206014e-01, 6.42627306e-01, 6.50135303e-01, 6.57731017e-01, 6.65415475e-01, 6.73189712e-01, 6.81054778e-01, 6.89011734e-01, 6.97061653e-01, 7.05205622e-01, 7.13444738e-01, 7.21780115e-01, 7.30212877e-01, 7.38744160e-01, 7.47375117e-01, 7.56106912e-01, 7.64940723e-01, 7.73877742e-01, 7.82919175e-01, 7.92066241e-01, 8.01320175e-01, 8.10682226e-01, 8.20153656e-01, 8.29735743e-01, 8.39429780e-01, 8.49237076e-01, 8.59158953e-01, 8.69196750e-01, 8.79351822e-01, 8.89625538e-01, 9.00019285e-01, 9.10534465e-01, 9.21172497e-01, 9.31934816e-01, 9.42822874e-01, 9.53838141e-01, 9.64982102e-01, 9.76256261e-01, 9.87662139e-01, 9.99201275e-01, 1.01087523e+00, 1.02268557e+00, 1.03463389e+00, 1.04672181e+00, 1.05895096e+00, 1.07132298e+00, 1.08383955e+00, 1.09650236e+00, 1.10931311e+00, 1.12227352e+00, 1.13538536e+00, 1.14865039e+00, 1.16207040e+00, 1.17564720e+00, 1.18938262e+00, 1.20327851e+00, 1.21733675e+00, 1.23155924e+00, 1.24594790e+00, 1.26050466e+00, 1.27523149e+00, 1.29013038e+00, 1.30520334e+00, 1.32045240e+00, 1.33587962e+00, 1.35148708e+00, 1.36727689e+00, 1.38325117e+00, 1.39941208e+00, 1.41576181e+00, 1.43230256e+00, 1.44903655e+00, 1.46596606e+00, 1.48309335e+00, 1.50042075e+00, 1.51795059e+00, 1.53568524e+00, 1.55362708e+00, 1.57177855e+00, 1.59014208e+00, 1.60872016e+00, 1.62751530e+00, 1.64653002e+00, 1.66576689e+00, 1.68522852e+00, 1.70491752e+00, 1.72483656e+00, 1.74498831e+00, 1.76537550e+00, 1.78600088e+00, 1.80686724e+00, 1.82797738e+00, 1.84933416e+00, 1.87094045e+00, 1.89279918e+00, 1.91491329e+00, 1.93728576e+00, 1.95991962e+00, 1.98281791e+00, 2.00598374e+00, 2.02942021e+00, 2.05313050e+00, 2.07711781e+00, 2.10138536e+00, 2.12593644e+00, 2.15077436e+00, 2.17590246e+00, 2.20132415e+00, 2.22704284e+00, 2.25306201e+00, 2.27938517e+00, 2.30601588e+00, 2.33295771e+00, 2.36021432e+00, 2.38778937e+00, 2.41568659e+00, 2.44390974e+00, 2.47246263e+00, 2.50134911e+00, 2.53057308e+00, 2.56013848e+00, 2.59004930e+00, 2.62030958e+00, 2.65092340e+00, 2.68189489e+00, 2.71322822e+00, 2.74492764e+00, 2.77699740e+00, 2.80944185e+00, 2.84226535e+00, 2.87547234e+00, 2.90906730e+00, 2.94305476e+00, 2.97743930e+00, 3.01222557e+00, 3.04741825e+00, 3.08302210e+00, 3.11904192e+00, 3.15548257e+00, 3.19234896e+00, 3.22964608e+00, 3.26737895e+00, 3.30555266e+00, 3.34417237e+00, 3.38324328e+00, 3.42277067e+00, 3.46275987e+00, 3.50321627e+00, 3.54414534e+00, 3.58555259e+00, 3.62744362e+00, 3.66982407e+00, 3.71269966e+00, 3.75607618e+00, 3.79995948e+00, 3.84435549e+00, 3.88927018e+00, 3.93470962e+00, 3.98067995e+00, 4.02718736e+00, 4.07423813e+00, 4.12183861e+00, 4.16999521e+00, 4.21871445e+00, 4.26800288e+00, 4.31786717e+00, 4.36831403e+00, 4.41935028e+00, 4.47098280e+00, 4.52321856e+00, 4.57606460e+00, 4.62952806e+00, 4.68361615e+00, 4.73833616e+00, 4.79369548e+00, 4.84970158e+00, 4.90636202e+00, 4.96368443e+00, 5.02167656e+00, 5.08034623e+00, 5.13970136e+00, 5.19974994e+00, 5.26050009e+00, 5.32196000e+00, 5.38413797e+00, 5.44704237e+00, 5.51068171e+00, 5.57506457e+00, 5.64019962e+00, 5.70609567e+00, 5.77276160e+00, 5.84020641e+00, 5.90843919e+00, 5.97746916e+00, 6.04730562e+00, 6.11795801e+00, 6.18943584e+00, 6.26174877e+00, 6.33490656e+00, 6.40891906e+00, 6.48379628e+00, 6.55954830e+00, 6.63618536e+00, 6.71371780e+00, 6.79215606e+00, 6.87151074e+00, 6.95179255e+00, 7.03301231e+00, 7.11518098e+00, 7.19830965e+00, 7.28240954e+00, 7.36749199e+00, 7.45356849e+00, 7.54065064e+00, 7.62875019e+00, 7.71787904e+00, 7.80804920e+00, 7.89927285e+00, 7.99156229e+00, 8.08492998e+00, 8.17938850e+00, 8.27495061e+00, 8.37162920e+00, 8.46943732e+00, 8.56838815e+00, 8.66849505e+00, 8.76977153e+00, 8.87223126e+00, 8.97588805e+00, 9.08075589e+00, 9.18684893e+00, 9.29418148e+00, 9.40276803e+00, 9.51262323e+00, 9.62376190e+00, 9.73619904e+00, 9.84994981e+00, 9.96502956e+00, 1.00814538e+01, 1.01992383e+01, 1.03183989e+01, 1.04389517e+01, 1.05609129e+01, 1.06842990e+01, 1.08091267e+01, 1.09354128e+01, 1.10631743e+01, 1.11924285e+01, 1.13231928e+01, 1.14554849e+01, 1.15893226e+01, 1.17247239e+01, 1.18617072e+01, 1.20002908e+01, 1.21404936e+01, 1.22823345e+01, 1.24258325e+01, 1.25710070e+01, 1.27178776e+01, 1.28664642e+01, 1.30167867e+01, 1.31688655e+01, 1.33227211e+01, 1.34783742e+01, 1.36358459e+01, 1.37951573e+01, 1.39563300e+01, 1.41193858e+01, 1.42843466e+01, 1.44512346e+01, 1.46200725e+01, 1.47908830e+01, 1.49636890e+01, 1.51385140e+01, 1.53153816e+01, 1.54943155e+01, 1.56753400e+01, 1.58584794e+01, 1.60437585e+01, 1.62312023e+01, 1.64208360e+01, 1.66126853e+01, 1.68067760e+01, 1.70031343e+01, 1.72017868e+01, 1.74027601e+01, 1.76060815e+01, 1.78117783e+01, 1.80198784e+01, 1.82304097e+01, 1.84434007e+01, 1.86588802e+01, 1.88768772e+01, 1.90974211e+01, 1.93205416e+01, 1.95462690e+01, 1.97746336e+01, 2.00056662e+01, 2.02393981e+01, 2.04758607e+01, 2.07150860e+01, 2.09571062e+01, 2.12019540e+01, 2.14496624e+01, 2.17002649e+01, 2.19537952e+01, 2.22102876e+01, 2.24697767e+01, 2.27322975e+01, 2.29978853e+01, 2.32665762e+01, 2.35384061e+01, 2.38134120e+01, 2.40916308e+01, 2.43731002e+01, 2.46578580e+01, 2.49459427e+01, 2.52373932e+01, 2.55322489e+01, 2.58305493e+01, 2.61323350e+01, 2.64376464e+01, 2.67465249e+01, 2.70590122e+01, 2.73751502e+01, 2.76949819e+01, 2.80185502e+01, 2.83458988e+01, 2.86770720e+01, 2.90121143e+01, 2.93510711e+01, 2.96939880e+01, 3.00409112e+01, 3.03918877e+01, 3.07469647e+01, 3.11061902e+01, 3.14696126e+01, 3.18372810e+01, 3.22092450e+01, 3.25855547e+01, 3.29662610e+01, 3.33514151e+01, 3.37410691e+01, 3.41352756e+01, 3.45340877e+01, 3.49375592e+01, 3.53457446e+01, 3.57586989e+01, 3.61764779e+01, 3.65991380e+01, 3.70267361e+01, 3.74593299e+01, 3.78969778e+01, 3.83397390e+01, 3.87876730e+01, 3.92408403e+01, 3.96993022e+01, 4.01631204e+01, 4.06323575e+01, 4.11070768e+01, 4.15873424e+01, 4.20732191e+01, 4.25647724e+01, 4.30620687e+01, 4.35651750e+01, 4.40741593e+01, 4.45890902e+01, 4.51100371e+01, 4.56370705e+01, 4.61702613e+01, 4.67096815e+01, 4.72554039e+01, 4.78075022e+01, 4.83660508e+01, 4.89311250e+01, 4.95028012e+01, 5.00811565e+01, 5.06662688e+01, 5.12582171e+01, 5.18570814e+01, 5.24629424e+01, 5.30758818e+01, 5.36959823e+01, 5.43233277e+01, 5.49580025e+01, 5.56000924e+01, 5.62496840e+01, 5.69068650e+01, 5.75717240e+01, 5.82443507e+01, 5.89248359e+01, 5.96132715e+01, 6.03097502e+01, 6.10143661e+01, 6.17272142e+01, 6.24483907e+01, 6.31779929e+01, 6.39161193e+01, 6.46628694e+01, 6.54183440e+01, 6.61826450e+01, 6.69558756e+01, 6.77381400e+01, 6.85295439e+01, 6.93301940e+01, 7.01401982e+01, 7.09596660e+01, 7.17887079e+01, 7.26274357e+01, 7.34759626e+01, 7.43344030e+01, 7.52028729e+01, 7.60814893e+01, 7.69703709e+01, 7.78696375e+01, 7.87794105e+01, 7.96998127e+01, 8.06309682e+01, 8.15730026e+01, 8.25260431e+01, 8.34902182e+01, 8.44656580e+01, 8.54524942e+01, 8.64508599e+01, 8.74608897e+01, 8.84827201e+01, 8.95164887e+01, 9.05623352e+01, 9.16204006e+01, 9.26908277e+01, 9.37737608e+01, 9.48693462e+01, 9.59777316e+01, 9.70990666e+01, 9.82335025e+01, 9.93811923e+01, 1.00542291e+02, 1.01716955e+02, 1.02905343e+02, 1.04107615e+02, 1.05323934e+02, 1.06554463e+02, 1.07799369e+02, 1.09058820e+02, 1.10332985e+02, 1.11622036e+02, 1.12926148e+02, 1.14245496e+02, 1.15580259e+02, 1.16930616e+02, 1.18296749e+02, 1.19678843e+02, 1.21077085e+02, 1.22491663e+02, 1.23922768e+02, 1.25370593e+02, 1.26835333e+02, 1.28317186e+02, 1.29816352e+02, 1.31333033e+02, 1.32867434e+02, 1.34419762e+02, 1.35990226e+02, 1.37579038e+02, 1.39186413e+02, 1.40812567e+02, 1.42457720e+02, 1.44122094e+02, 1.45805913e+02, 1.47509405e+02, 1.49232799e+02, 1.50976328e+02, 1.52740228e+02, 1.54524735e+02, 1.56330091e+02, 1.58156540e+02, 1.60004327e+02, 1.61873703e+02, 1.63764920e+02, 1.65678231e+02, 1.67613897e+02, 1.69572178e+02, 1.71553337e+02, 1.73557644e+02, 1.75585367e+02, 1.77636780e+02, 1.79712161e+02, 1.81811789e+02, 1.83935948e+02, 1.86084923e+02, 1.88259006e+02, 1.90458489e+02, 1.92683670e+02, 1.94934848e+02, 1.97212327e+02, 1.99516414e+02, 2.01847421e+02, 2.04205661e+02, 2.06591454e+02, 2.09005120e+02, 2.11446986e+02, 2.13917381e+02, 2.16416639e+02, 2.18945095e+02, 2.21503093e+02, 2.24090976e+02, 2.26709095e+02, 2.29357801e+02, 2.32037453e+02, 2.34748412e+02, 2.37491045e+02, 2.40265720e+02, 2.43072812e+02, 2.45912700e+02, 2.48785768e+02, 2.51692403e+02, 2.54632996e+02, 2.57607946e+02, 2.60617652e+02, 2.63662522e+02, 2.66742966e+02, 2.69859399e+02, 2.73012243e+02, 2.76201922e+02, 2.79428868e+02, 2.82693514e+02, 2.85996302e+02, 2.89337678e+02, 2.92718092e+02, 2.96138000e+02, 2.99597865e+02, 3.03098151e+02, 3.06639333e+02, 3.10221887e+02, 3.13846297e+02, 3.17513052e+02, 3.21222647e+02, 3.24975582e+02, 3.28772364e+02, 3.32613504e+02, 3.36499522e+02, 3.40430941e+02, 3.44408292e+02, 3.48432112e+02, 3.52502943e+02, 3.56621334e+02, 3.60787842e+02, 3.65003029e+02, 3.69267462e+02, 3.73581719e+02, 3.77946380e+02, 3.82362034e+02, 3.86829278e+02, 3.91348714e+02, 3.95920952e+02, 4.00546608e+02, 4.05226308e+02, 4.09960681e+02, 4.14750368e+02, 4.19596014e+02, 4.24498273e+02, 4.29457806e+02, 4.34475283e+02, 4.39551381e+02, 4.44686784e+02, 4.49882186e+02, 4.55138287e+02, 4.60455796e+02, 4.65835431e+02, 4.71277919e+02, 4.76783992e+02, 4.82354394e+02, 4.87989877e+02, 4.93691201e+02, 4.99459135e+02, 5.05294457e+02, 5.11197955e+02, 5.17170426e+02, 5.23212674e+02, 5.29325516e+02, 5.35509776e+02, 5.41766288e+02, 5.48095897e+02, 5.54499456e+02, 5.60977830e+02, 5.67531893e+02, 5.74162529e+02, 5.80870632e+02, 5.87657108e+02, 5.94522873e+02, 6.01468852e+02, 6.08495982e+02, 6.15605213e+02, 6.22797503e+02, 6.30073823e+02, 6.37435153e+02, 6.44882489e+02, 6.52416833e+02, 6.60039204e+02, 6.67750629e+02, 6.75552148e+02, 6.83444815e+02, 6.91429694e+02, 6.99507863e+02, 7.07680411e+02, 7.15948442e+02, 7.24313070e+02, 7.32775425e+02, 7.41336647e+02, 7.49997893e+02, 7.58760331e+02, 7.67625143e+02, 7.76593524e+02, 7.85666686e+02, 7.94845852e+02, 8.04132262e+02, 8.13527166e+02, 8.23031834e+02, 8.32647548e+02, 8.42375605e+02, 8.52217318e+02, 8.62174014e+02, 8.72247037e+02, 8.82437746e+02, 8.92747516e+02, 9.03177738e+02, 9.13729819e+02, 9.24405183e+02, 9.35205270e+02, 9.46131538e+02, 9.57185461e+02, 9.68368529e+02, 9.79682253e+02, 9.91128158e+02, 1.00270779e+03, 1.01442271e+03, 1.02627449e+03, 1.03826475e+03, 1.05039509e+03, 1.06266715e+03, 1.07508260e+03, 1.08764309e+03, 1.10035033e+03, 1.11320604e+03, 1.12621194e+03, 1.13936979e+03, 1.15268137e+03, 1.16614847e+03, 1.17977291e+03, 1.19355654e+03, 1.20750119e+03, 1.22160877e+03, 1.23588117e+03, 1.25032032e+03, 1.26492817e+03, 1.27970668e+03, 1.29465786e+03, 1.30978371e+03, 1.32508629e+03, 1.34056764e+03, 1.35622988e+03, 1.37207509e+03, 1.38810543e+03, 1.40432306e+03, 1.42073017e+03, 1.43732896e+03, 1.45412168e+03, 1.47111060e+03, 1.48829800e+03, 1.50568620e+03, 1.52327756e+03, 1.54107445e+03, 1.55907925e+03, 1.57729442e+03, 1.59572240e+03, 1.61436567e+03, 1.63322676e+03, 1.65230821e+03, 1.67161260e+03, 1.69114252e+03, 1.71090062e+03, 1.73088955e+03, 1.75111203e+03, 1.77157076e+03, 1.79226853e+03, 1.81320811e+03, 1.83439233e+03, 1.85582405e+03, 1.87750617e+03, 1.89944161e+03, 1.92163332e+03, 1.94408431e+03, 1.96679759e+03, 1.98977625e+03, 2.01302337e+03, 2.03654209e+03, 2.06033559e+03, 2.08440707e+03, 2.10875979e+03, 2.13339702e+03, 2.15832211e+03, 2.18353839e+03, 2.20904929e+03, 2.23485824e+03, 2.26096872e+03, 2.28738426e+03, 2.31410842e+03, 2.34114480e+03, 2.36849706e+03, 2.39616888e+03, 2.42416400e+03, 2.45248619e+03, 2.48113928e+03, 2.51012713e+03, 2.53945366e+03, 2.56912281e+03, 2.59913860e+03, 2.62950508e+03, 2.66022633e+03, 2.69130650e+03, 2.72274980e+03, 2.75456046e+03, 2.78674277e+03, 2.81930107e+03, 2.85223976e+03, 2.88556329e+03, 2.91927614e+03, 2.95338287e+03, 2.98788808e+03, 3.02279642e+03, 3.05811260e+03, 3.09384140e+03, 3.12998762e+03, 3.16655616e+03, 3.20355193e+03, 3.24097993e+03, 3.27884522e+03, 3.31715289e+03, 3.35590813e+03, 3.39511615e+03, 3.43478226e+03, 3.47491179e+03, 3.51551017e+03, 3.55658287e+03, 3.59813543e+03, 3.64017347e+03, 3.68270264e+03, 3.72572870e+03, 3.76925744e+03, 3.81329474e+03, 3.85784655e+03, 3.90291886e+03, 3.94851776e+03, 3.99464942e+03, 4.04132003e+03, 4.08853592e+03, 4.13630344e+03, 4.18462905e+03, 4.23351925e+03, 4.28298066e+03, 4.33301993e+03, 4.38364383e+03, 4.43485918e+03, 4.48667290e+03, 4.53909196e+03, 4.59212346e+03, 4.64577454e+03, 4.70005244e+03, 4.75496448e+03, 4.81051808e+03, 4.86672072e+03, 4.92357999e+03, 4.98110357e+03, 5.03929922e+03, 5.09817477e+03, 5.15773819e+03, 5.21799751e+03, 5.27896085e+03, 5.34063644e+03, 5.40303261e+03, 5.46615777e+03, 5.53002044e+03, 5.59462923e+03, 5.65999287e+03, 5.72612017e+03, 5.79302005e+03, 5.86070154e+03, 5.92917378e+03, 5.99844599e+03, 6.06852753e+03, 6.13942786e+03, 6.21115653e+03, 6.28372323e+03, 6.35713775e+03, 6.43140999e+03, 6.50654997e+03, 6.58256784e+03, 6.65947384e+03, 6.73727836e+03, 6.81599189e+03, 6.89562505e+03, 6.97618859e+03, 7.05769337e+03, 7.14015040e+03, 7.22357080e+03, 7.30796582e+03, 7.39334685e+03, 7.47972542e+03, 7.56711317e+03, 7.65552189e+03, 7.74496352e+03, 7.83545012e+03, 7.92699390e+03, 8.01960721e+03, 8.11330256e+03, 8.20809257e+03, 8.30399003e+03, 8.40100790e+03, 8.49915925e+03, 8.59845733e+03, 8.69891555e+03, 8.80054744e+03, 8.90336672e+03, 9.00738728e+03, 9.11262313e+03, 9.21908849e+03, 9.32679771e+03, 9.43576532e+03, 9.54600604e+03, 9.65753473e+03, 9.77036644e+03, 9.88451640e+03, 1.00000000e+04] um>, istar_sphere: int = None, rewrite_files=False, nearest_read=False, nearest_write=False)
def gas_density(self)
def gas_surface_density(self)

Calculates gas density at given r, Following ANDES2, Akimkin+2013

def gas_temperature_from_dust(self)
def get_star_params(self)

Following ANDES2, Akimkin+2013

def ini_grid(self)
def iterate_settle_sublimation(self, nphot_therm: int = 100000, nphot_scat: int = None, threads: int = 1, eps=0.01, max_iter: int = 20, nphotdiff: float = None, scattering_mode_max: int = None, eps_n: float = 0.01, nphotdiff_type: int = None, stellar_template: Optional[None] = None, wavelengths=<Quantity [9.13000000e-02, 9.23666837e-02, 9.34458298e-02, 9.45375839e-02, 9.56420933e-02, 9.67595069e-02, 9.78899756e-02, 9.90336519e-02, 1.00190690e-01, 1.01361246e-01, 1.02545478e-01, 1.03743546e-01, 1.04955611e-01, 1.06181838e-01, 1.07422390e-01, 1.08677436e-01, 1.09947145e-01, 1.11231689e-01, 1.12531240e-01, 1.13845975e-01, 1.15176069e-01, 1.16521704e-01, 1.17883060e-01, 1.19260321e-01, 1.20653673e-01, 1.22063304e-01, 1.23489404e-01, 1.24932166e-01, 1.26391784e-01, 1.27868455e-01, 1.29362378e-01, 1.30873756e-01, 1.32402791e-01, 1.33949690e-01, 1.35514662e-01, 1.37097918e-01, 1.38699672e-01, 1.40320140e-01, 1.41959539e-01, 1.43618093e-01, 1.45296024e-01, 1.46993558e-01, 1.48710926e-01, 1.50448358e-01, 1.52206088e-01, 1.53984355e-01, 1.55783398e-01, 1.57603459e-01, 1.59444785e-01, 1.61307624e-01, 1.63192226e-01, 1.65098847e-01, 1.67027744e-01, 1.68979176e-01, 1.70953408e-01, 1.72950705e-01, 1.74971337e-01, 1.77015577e-01, 1.79083700e-01, 1.81175985e-01, 1.83292715e-01, 1.85434176e-01, 1.87600656e-01, 1.89792448e-01, 1.92009847e-01, 1.94253152e-01, 1.96522666e-01, 1.98818696e-01, 2.01141551e-01, 2.03491545e-01, 2.05868994e-01, 2.08274220e-01, 2.10707547e-01, 2.13169303e-01, 2.15659820e-01, 2.18179435e-01, 2.20728487e-01, 2.23307320e-01, 2.25916283e-01, 2.28555727e-01, 2.31226008e-01, 2.33927487e-01, 2.36660528e-01, 2.39425500e-01, 2.42222776e-01, 2.45052733e-01, 2.47915753e-01, 2.50812223e-01, 2.53742533e-01, 2.56707079e-01, 2.59706261e-01, 2.62740482e-01, 2.65810154e-01, 2.68915689e-01, 2.72057507e-01, 2.75236032e-01, 2.78451692e-01, 2.81704922e-01, 2.84996161e-01, 2.88325852e-01, 2.91694444e-01, 2.95102393e-01, 2.98550158e-01, 3.02038204e-01, 3.05567001e-01, 3.09137027e-01, 3.12748763e-01, 3.16402695e-01, 3.20099317e-01, 3.23839128e-01, 3.27622632e-01, 3.31450340e-01, 3.35322768e-01, 3.39240439e-01, 3.43203881e-01, 3.47213629e-01, 3.51270224e-01, 3.55374214e-01, 3.59526151e-01, 3.63726597e-01, 3.67976118e-01, 3.72275287e-01, 3.76624684e-01, 3.81024897e-01, 3.85476519e-01, 3.89980150e-01, 3.94536399e-01, 3.99145879e-01, 4.03809213e-01, 4.08527031e-01, 4.13299967e-01, 4.18128668e-01, 4.23013783e-01, 4.27955973e-01, 4.32955904e-01, 4.38014250e-01, 4.43131695e-01, 4.48308928e-01, 4.53546648e-01, 4.58845562e-01, 4.64206384e-01, 4.69629839e-01, 4.75116657e-01, 4.80667579e-01, 4.86283355e-01, 4.91964741e-01, 4.97712504e-01, 5.03527420e-01, 5.09410274e-01, 5.15361858e-01, 5.21382976e-01, 5.27474441e-01, 5.33637074e-01, 5.39871707e-01, 5.46179181e-01, 5.52560347e-01, 5.59016066e-01, 5.65547209e-01, 5.72154657e-01, 5.78839302e-01, 5.85602045e-01, 5.92443800e-01, 5.99365488e-01, 6.06368045e-01, 6.13452414e-01, 6.20619553e-01, 6.27870426e-01, 6.35206014e-01, 6.42627306e-01, 6.50135303e-01, 6.57731017e-01, 6.65415475e-01, 6.73189712e-01, 6.81054778e-01, 6.89011734e-01, 6.97061653e-01, 7.05205622e-01, 7.13444738e-01, 7.21780115e-01, 7.30212877e-01, 7.38744160e-01, 7.47375117e-01, 7.56106912e-01, 7.64940723e-01, 7.73877742e-01, 7.82919175e-01, 7.92066241e-01, 8.01320175e-01, 8.10682226e-01, 8.20153656e-01, 8.29735743e-01, 8.39429780e-01, 8.49237076e-01, 8.59158953e-01, 8.69196750e-01, 8.79351822e-01, 8.89625538e-01, 9.00019285e-01, 9.10534465e-01, 9.21172497e-01, 9.31934816e-01, 9.42822874e-01, 9.53838141e-01, 9.64982102e-01, 9.76256261e-01, 9.87662139e-01, 9.99201275e-01, 1.01087523e+00, 1.02268557e+00, 1.03463389e+00, 1.04672181e+00, 1.05895096e+00, 1.07132298e+00, 1.08383955e+00, 1.09650236e+00, 1.10931311e+00, 1.12227352e+00, 1.13538536e+00, 1.14865039e+00, 1.16207040e+00, 1.17564720e+00, 1.18938262e+00, 1.20327851e+00, 1.21733675e+00, 1.23155924e+00, 1.24594790e+00, 1.26050466e+00, 1.27523149e+00, 1.29013038e+00, 1.30520334e+00, 1.32045240e+00, 1.33587962e+00, 1.35148708e+00, 1.36727689e+00, 1.38325117e+00, 1.39941208e+00, 1.41576181e+00, 1.43230256e+00, 1.44903655e+00, 1.46596606e+00, 1.48309335e+00, 1.50042075e+00, 1.51795059e+00, 1.53568524e+00, 1.55362708e+00, 1.57177855e+00, 1.59014208e+00, 1.60872016e+00, 1.62751530e+00, 1.64653002e+00, 1.66576689e+00, 1.68522852e+00, 1.70491752e+00, 1.72483656e+00, 1.74498831e+00, 1.76537550e+00, 1.78600088e+00, 1.80686724e+00, 1.82797738e+00, 1.84933416e+00, 1.87094045e+00, 1.89279918e+00, 1.91491329e+00, 1.93728576e+00, 1.95991962e+00, 1.98281791e+00, 2.00598374e+00, 2.02942021e+00, 2.05313050e+00, 2.07711781e+00, 2.10138536e+00, 2.12593644e+00, 2.15077436e+00, 2.17590246e+00, 2.20132415e+00, 2.22704284e+00, 2.25306201e+00, 2.27938517e+00, 2.30601588e+00, 2.33295771e+00, 2.36021432e+00, 2.38778937e+00, 2.41568659e+00, 2.44390974e+00, 2.47246263e+00, 2.50134911e+00, 2.53057308e+00, 2.56013848e+00, 2.59004930e+00, 2.62030958e+00, 2.65092340e+00, 2.68189489e+00, 2.71322822e+00, 2.74492764e+00, 2.77699740e+00, 2.80944185e+00, 2.84226535e+00, 2.87547234e+00, 2.90906730e+00, 2.94305476e+00, 2.97743930e+00, 3.01222557e+00, 3.04741825e+00, 3.08302210e+00, 3.11904192e+00, 3.15548257e+00, 3.19234896e+00, 3.22964608e+00, 3.26737895e+00, 3.30555266e+00, 3.34417237e+00, 3.38324328e+00, 3.42277067e+00, 3.46275987e+00, 3.50321627e+00, 3.54414534e+00, 3.58555259e+00, 3.62744362e+00, 3.66982407e+00, 3.71269966e+00, 3.75607618e+00, 3.79995948e+00, 3.84435549e+00, 3.88927018e+00, 3.93470962e+00, 3.98067995e+00, 4.02718736e+00, 4.07423813e+00, 4.12183861e+00, 4.16999521e+00, 4.21871445e+00, 4.26800288e+00, 4.31786717e+00, 4.36831403e+00, 4.41935028e+00, 4.47098280e+00, 4.52321856e+00, 4.57606460e+00, 4.62952806e+00, 4.68361615e+00, 4.73833616e+00, 4.79369548e+00, 4.84970158e+00, 4.90636202e+00, 4.96368443e+00, 5.02167656e+00, 5.08034623e+00, 5.13970136e+00, 5.19974994e+00, 5.26050009e+00, 5.32196000e+00, 5.38413797e+00, 5.44704237e+00, 5.51068171e+00, 5.57506457e+00, 5.64019962e+00, 5.70609567e+00, 5.77276160e+00, 5.84020641e+00, 5.90843919e+00, 5.97746916e+00, 6.04730562e+00, 6.11795801e+00, 6.18943584e+00, 6.26174877e+00, 6.33490656e+00, 6.40891906e+00, 6.48379628e+00, 6.55954830e+00, 6.63618536e+00, 6.71371780e+00, 6.79215606e+00, 6.87151074e+00, 6.95179255e+00, 7.03301231e+00, 7.11518098e+00, 7.19830965e+00, 7.28240954e+00, 7.36749199e+00, 7.45356849e+00, 7.54065064e+00, 7.62875019e+00, 7.71787904e+00, 7.80804920e+00, 7.89927285e+00, 7.99156229e+00, 8.08492998e+00, 8.17938850e+00, 8.27495061e+00, 8.37162920e+00, 8.46943732e+00, 8.56838815e+00, 8.66849505e+00, 8.76977153e+00, 8.87223126e+00, 8.97588805e+00, 9.08075589e+00, 9.18684893e+00, 9.29418148e+00, 9.40276803e+00, 9.51262323e+00, 9.62376190e+00, 9.73619904e+00, 9.84994981e+00, 9.96502956e+00, 1.00814538e+01, 1.01992383e+01, 1.03183989e+01, 1.04389517e+01, 1.05609129e+01, 1.06842990e+01, 1.08091267e+01, 1.09354128e+01, 1.10631743e+01, 1.11924285e+01, 1.13231928e+01, 1.14554849e+01, 1.15893226e+01, 1.17247239e+01, 1.18617072e+01, 1.20002908e+01, 1.21404936e+01, 1.22823345e+01, 1.24258325e+01, 1.25710070e+01, 1.27178776e+01, 1.28664642e+01, 1.30167867e+01, 1.31688655e+01, 1.33227211e+01, 1.34783742e+01, 1.36358459e+01, 1.37951573e+01, 1.39563300e+01, 1.41193858e+01, 1.42843466e+01, 1.44512346e+01, 1.46200725e+01, 1.47908830e+01, 1.49636890e+01, 1.51385140e+01, 1.53153816e+01, 1.54943155e+01, 1.56753400e+01, 1.58584794e+01, 1.60437585e+01, 1.62312023e+01, 1.64208360e+01, 1.66126853e+01, 1.68067760e+01, 1.70031343e+01, 1.72017868e+01, 1.74027601e+01, 1.76060815e+01, 1.78117783e+01, 1.80198784e+01, 1.82304097e+01, 1.84434007e+01, 1.86588802e+01, 1.88768772e+01, 1.90974211e+01, 1.93205416e+01, 1.95462690e+01, 1.97746336e+01, 2.00056662e+01, 2.02393981e+01, 2.04758607e+01, 2.07150860e+01, 2.09571062e+01, 2.12019540e+01, 2.14496624e+01, 2.17002649e+01, 2.19537952e+01, 2.22102876e+01, 2.24697767e+01, 2.27322975e+01, 2.29978853e+01, 2.32665762e+01, 2.35384061e+01, 2.38134120e+01, 2.40916308e+01, 2.43731002e+01, 2.46578580e+01, 2.49459427e+01, 2.52373932e+01, 2.55322489e+01, 2.58305493e+01, 2.61323350e+01, 2.64376464e+01, 2.67465249e+01, 2.70590122e+01, 2.73751502e+01, 2.76949819e+01, 2.80185502e+01, 2.83458988e+01, 2.86770720e+01, 2.90121143e+01, 2.93510711e+01, 2.96939880e+01, 3.00409112e+01, 3.03918877e+01, 3.07469647e+01, 3.11061902e+01, 3.14696126e+01, 3.18372810e+01, 3.22092450e+01, 3.25855547e+01, 3.29662610e+01, 3.33514151e+01, 3.37410691e+01, 3.41352756e+01, 3.45340877e+01, 3.49375592e+01, 3.53457446e+01, 3.57586989e+01, 3.61764779e+01, 3.65991380e+01, 3.70267361e+01, 3.74593299e+01, 3.78969778e+01, 3.83397390e+01, 3.87876730e+01, 3.92408403e+01, 3.96993022e+01, 4.01631204e+01, 4.06323575e+01, 4.11070768e+01, 4.15873424e+01, 4.20732191e+01, 4.25647724e+01, 4.30620687e+01, 4.35651750e+01, 4.40741593e+01, 4.45890902e+01, 4.51100371e+01, 4.56370705e+01, 4.61702613e+01, 4.67096815e+01, 4.72554039e+01, 4.78075022e+01, 4.83660508e+01, 4.89311250e+01, 4.95028012e+01, 5.00811565e+01, 5.06662688e+01, 5.12582171e+01, 5.18570814e+01, 5.24629424e+01, 5.30758818e+01, 5.36959823e+01, 5.43233277e+01, 5.49580025e+01, 5.56000924e+01, 5.62496840e+01, 5.69068650e+01, 5.75717240e+01, 5.82443507e+01, 5.89248359e+01, 5.96132715e+01, 6.03097502e+01, 6.10143661e+01, 6.17272142e+01, 6.24483907e+01, 6.31779929e+01, 6.39161193e+01, 6.46628694e+01, 6.54183440e+01, 6.61826450e+01, 6.69558756e+01, 6.77381400e+01, 6.85295439e+01, 6.93301940e+01, 7.01401982e+01, 7.09596660e+01, 7.17887079e+01, 7.26274357e+01, 7.34759626e+01, 7.43344030e+01, 7.52028729e+01, 7.60814893e+01, 7.69703709e+01, 7.78696375e+01, 7.87794105e+01, 7.96998127e+01, 8.06309682e+01, 8.15730026e+01, 8.25260431e+01, 8.34902182e+01, 8.44656580e+01, 8.54524942e+01, 8.64508599e+01, 8.74608897e+01, 8.84827201e+01, 8.95164887e+01, 9.05623352e+01, 9.16204006e+01, 9.26908277e+01, 9.37737608e+01, 9.48693462e+01, 9.59777316e+01, 9.70990666e+01, 9.82335025e+01, 9.93811923e+01, 1.00542291e+02, 1.01716955e+02, 1.02905343e+02, 1.04107615e+02, 1.05323934e+02, 1.06554463e+02, 1.07799369e+02, 1.09058820e+02, 1.10332985e+02, 1.11622036e+02, 1.12926148e+02, 1.14245496e+02, 1.15580259e+02, 1.16930616e+02, 1.18296749e+02, 1.19678843e+02, 1.21077085e+02, 1.22491663e+02, 1.23922768e+02, 1.25370593e+02, 1.26835333e+02, 1.28317186e+02, 1.29816352e+02, 1.31333033e+02, 1.32867434e+02, 1.34419762e+02, 1.35990226e+02, 1.37579038e+02, 1.39186413e+02, 1.40812567e+02, 1.42457720e+02, 1.44122094e+02, 1.45805913e+02, 1.47509405e+02, 1.49232799e+02, 1.50976328e+02, 1.52740228e+02, 1.54524735e+02, 1.56330091e+02, 1.58156540e+02, 1.60004327e+02, 1.61873703e+02, 1.63764920e+02, 1.65678231e+02, 1.67613897e+02, 1.69572178e+02, 1.71553337e+02, 1.73557644e+02, 1.75585367e+02, 1.77636780e+02, 1.79712161e+02, 1.81811789e+02, 1.83935948e+02, 1.86084923e+02, 1.88259006e+02, 1.90458489e+02, 1.92683670e+02, 1.94934848e+02, 1.97212327e+02, 1.99516414e+02, 2.01847421e+02, 2.04205661e+02, 2.06591454e+02, 2.09005120e+02, 2.11446986e+02, 2.13917381e+02, 2.16416639e+02, 2.18945095e+02, 2.21503093e+02, 2.24090976e+02, 2.26709095e+02, 2.29357801e+02, 2.32037453e+02, 2.34748412e+02, 2.37491045e+02, 2.40265720e+02, 2.43072812e+02, 2.45912700e+02, 2.48785768e+02, 2.51692403e+02, 2.54632996e+02, 2.57607946e+02, 2.60617652e+02, 2.63662522e+02, 2.66742966e+02, 2.69859399e+02, 2.73012243e+02, 2.76201922e+02, 2.79428868e+02, 2.82693514e+02, 2.85996302e+02, 2.89337678e+02, 2.92718092e+02, 2.96138000e+02, 2.99597865e+02, 3.03098151e+02, 3.06639333e+02, 3.10221887e+02, 3.13846297e+02, 3.17513052e+02, 3.21222647e+02, 3.24975582e+02, 3.28772364e+02, 3.32613504e+02, 3.36499522e+02, 3.40430941e+02, 3.44408292e+02, 3.48432112e+02, 3.52502943e+02, 3.56621334e+02, 3.60787842e+02, 3.65003029e+02, 3.69267462e+02, 3.73581719e+02, 3.77946380e+02, 3.82362034e+02, 3.86829278e+02, 3.91348714e+02, 3.95920952e+02, 4.00546608e+02, 4.05226308e+02, 4.09960681e+02, 4.14750368e+02, 4.19596014e+02, 4.24498273e+02, 4.29457806e+02, 4.34475283e+02, 4.39551381e+02, 4.44686784e+02, 4.49882186e+02, 4.55138287e+02, 4.60455796e+02, 4.65835431e+02, 4.71277919e+02, 4.76783992e+02, 4.82354394e+02, 4.87989877e+02, 4.93691201e+02, 4.99459135e+02, 5.05294457e+02, 5.11197955e+02, 5.17170426e+02, 5.23212674e+02, 5.29325516e+02, 5.35509776e+02, 5.41766288e+02, 5.48095897e+02, 5.54499456e+02, 5.60977830e+02, 5.67531893e+02, 5.74162529e+02, 5.80870632e+02, 5.87657108e+02, 5.94522873e+02, 6.01468852e+02, 6.08495982e+02, 6.15605213e+02, 6.22797503e+02, 6.30073823e+02, 6.37435153e+02, 6.44882489e+02, 6.52416833e+02, 6.60039204e+02, 6.67750629e+02, 6.75552148e+02, 6.83444815e+02, 6.91429694e+02, 6.99507863e+02, 7.07680411e+02, 7.15948442e+02, 7.24313070e+02, 7.32775425e+02, 7.41336647e+02, 7.49997893e+02, 7.58760331e+02, 7.67625143e+02, 7.76593524e+02, 7.85666686e+02, 7.94845852e+02, 8.04132262e+02, 8.13527166e+02, 8.23031834e+02, 8.32647548e+02, 8.42375605e+02, 8.52217318e+02, 8.62174014e+02, 8.72247037e+02, 8.82437746e+02, 8.92747516e+02, 9.03177738e+02, 9.13729819e+02, 9.24405183e+02, 9.35205270e+02, 9.46131538e+02, 9.57185461e+02, 9.68368529e+02, 9.79682253e+02, 9.91128158e+02, 1.00270779e+03, 1.01442271e+03, 1.02627449e+03, 1.03826475e+03, 1.05039509e+03, 1.06266715e+03, 1.07508260e+03, 1.08764309e+03, 1.10035033e+03, 1.11320604e+03, 1.12621194e+03, 1.13936979e+03, 1.15268137e+03, 1.16614847e+03, 1.17977291e+03, 1.19355654e+03, 1.20750119e+03, 1.22160877e+03, 1.23588117e+03, 1.25032032e+03, 1.26492817e+03, 1.27970668e+03, 1.29465786e+03, 1.30978371e+03, 1.32508629e+03, 1.34056764e+03, 1.35622988e+03, 1.37207509e+03, 1.38810543e+03, 1.40432306e+03, 1.42073017e+03, 1.43732896e+03, 1.45412168e+03, 1.47111060e+03, 1.48829800e+03, 1.50568620e+03, 1.52327756e+03, 1.54107445e+03, 1.55907925e+03, 1.57729442e+03, 1.59572240e+03, 1.61436567e+03, 1.63322676e+03, 1.65230821e+03, 1.67161260e+03, 1.69114252e+03, 1.71090062e+03, 1.73088955e+03, 1.75111203e+03, 1.77157076e+03, 1.79226853e+03, 1.81320811e+03, 1.83439233e+03, 1.85582405e+03, 1.87750617e+03, 1.89944161e+03, 1.92163332e+03, 1.94408431e+03, 1.96679759e+03, 1.98977625e+03, 2.01302337e+03, 2.03654209e+03, 2.06033559e+03, 2.08440707e+03, 2.10875979e+03, 2.13339702e+03, 2.15832211e+03, 2.18353839e+03, 2.20904929e+03, 2.23485824e+03, 2.26096872e+03, 2.28738426e+03, 2.31410842e+03, 2.34114480e+03, 2.36849706e+03, 2.39616888e+03, 2.42416400e+03, 2.45248619e+03, 2.48113928e+03, 2.51012713e+03, 2.53945366e+03, 2.56912281e+03, 2.59913860e+03, 2.62950508e+03, 2.66022633e+03, 2.69130650e+03, 2.72274980e+03, 2.75456046e+03, 2.78674277e+03, 2.81930107e+03, 2.85223976e+03, 2.88556329e+03, 2.91927614e+03, 2.95338287e+03, 2.98788808e+03, 3.02279642e+03, 3.05811260e+03, 3.09384140e+03, 3.12998762e+03, 3.16655616e+03, 3.20355193e+03, 3.24097993e+03, 3.27884522e+03, 3.31715289e+03, 3.35590813e+03, 3.39511615e+03, 3.43478226e+03, 3.47491179e+03, 3.51551017e+03, 3.55658287e+03, 3.59813543e+03, 3.64017347e+03, 3.68270264e+03, 3.72572870e+03, 3.76925744e+03, 3.81329474e+03, 3.85784655e+03, 3.90291886e+03, 3.94851776e+03, 3.99464942e+03, 4.04132003e+03, 4.08853592e+03, 4.13630344e+03, 4.18462905e+03, 4.23351925e+03, 4.28298066e+03, 4.33301993e+03, 4.38364383e+03, 4.43485918e+03, 4.48667290e+03, 4.53909196e+03, 4.59212346e+03, 4.64577454e+03, 4.70005244e+03, 4.75496448e+03, 4.81051808e+03, 4.86672072e+03, 4.92357999e+03, 4.98110357e+03, 5.03929922e+03, 5.09817477e+03, 5.15773819e+03, 5.21799751e+03, 5.27896085e+03, 5.34063644e+03, 5.40303261e+03, 5.46615777e+03, 5.53002044e+03, 5.59462923e+03, 5.65999287e+03, 5.72612017e+03, 5.79302005e+03, 5.86070154e+03, 5.92917378e+03, 5.99844599e+03, 6.06852753e+03, 6.13942786e+03, 6.21115653e+03, 6.28372323e+03, 6.35713775e+03, 6.43140999e+03, 6.50654997e+03, 6.58256784e+03, 6.65947384e+03, 6.73727836e+03, 6.81599189e+03, 6.89562505e+03, 6.97618859e+03, 7.05769337e+03, 7.14015040e+03, 7.22357080e+03, 7.30796582e+03, 7.39334685e+03, 7.47972542e+03, 7.56711317e+03, 7.65552189e+03, 7.74496352e+03, 7.83545012e+03, 7.92699390e+03, 8.01960721e+03, 8.11330256e+03, 8.20809257e+03, 8.30399003e+03, 8.40100790e+03, 8.49915925e+03, 8.59845733e+03, 8.69891555e+03, 8.80054744e+03, 8.90336672e+03, 9.00738728e+03, 9.11262313e+03, 9.21908849e+03, 9.32679771e+03, 9.43576532e+03, 9.54600604e+03, 9.65753473e+03, 9.77036644e+03, 9.88451640e+03, 1.00000000e+04] um>, istar_sphere: int = None, include_settle: bool = False, shut_output: bool = False, deltaT: float = 100)
def iterate_vertical_structure(self, nphot_therm: int = 100000, threads: int = 1, eps: float = 0.01, max_iter: int = 20, nphotdiff: float = None, nphotdiff_type: int = None, stellar_template: Optional[None] = None, wavelengths=<Quantity [9.13000000e-02, 9.23666837e-02, 9.34458298e-02, 9.45375839e-02, 9.56420933e-02, 9.67595069e-02, 9.78899756e-02, 9.90336519e-02, 1.00190690e-01, 1.01361246e-01, 1.02545478e-01, 1.03743546e-01, 1.04955611e-01, 1.06181838e-01, 1.07422390e-01, 1.08677436e-01, 1.09947145e-01, 1.11231689e-01, 1.12531240e-01, 1.13845975e-01, 1.15176069e-01, 1.16521704e-01, 1.17883060e-01, 1.19260321e-01, 1.20653673e-01, 1.22063304e-01, 1.23489404e-01, 1.24932166e-01, 1.26391784e-01, 1.27868455e-01, 1.29362378e-01, 1.30873756e-01, 1.32402791e-01, 1.33949690e-01, 1.35514662e-01, 1.37097918e-01, 1.38699672e-01, 1.40320140e-01, 1.41959539e-01, 1.43618093e-01, 1.45296024e-01, 1.46993558e-01, 1.48710926e-01, 1.50448358e-01, 1.52206088e-01, 1.53984355e-01, 1.55783398e-01, 1.57603459e-01, 1.59444785e-01, 1.61307624e-01, 1.63192226e-01, 1.65098847e-01, 1.67027744e-01, 1.68979176e-01, 1.70953408e-01, 1.72950705e-01, 1.74971337e-01, 1.77015577e-01, 1.79083700e-01, 1.81175985e-01, 1.83292715e-01, 1.85434176e-01, 1.87600656e-01, 1.89792448e-01, 1.92009847e-01, 1.94253152e-01, 1.96522666e-01, 1.98818696e-01, 2.01141551e-01, 2.03491545e-01, 2.05868994e-01, 2.08274220e-01, 2.10707547e-01, 2.13169303e-01, 2.15659820e-01, 2.18179435e-01, 2.20728487e-01, 2.23307320e-01, 2.25916283e-01, 2.28555727e-01, 2.31226008e-01, 2.33927487e-01, 2.36660528e-01, 2.39425500e-01, 2.42222776e-01, 2.45052733e-01, 2.47915753e-01, 2.50812223e-01, 2.53742533e-01, 2.56707079e-01, 2.59706261e-01, 2.62740482e-01, 2.65810154e-01, 2.68915689e-01, 2.72057507e-01, 2.75236032e-01, 2.78451692e-01, 2.81704922e-01, 2.84996161e-01, 2.88325852e-01, 2.91694444e-01, 2.95102393e-01, 2.98550158e-01, 3.02038204e-01, 3.05567001e-01, 3.09137027e-01, 3.12748763e-01, 3.16402695e-01, 3.20099317e-01, 3.23839128e-01, 3.27622632e-01, 3.31450340e-01, 3.35322768e-01, 3.39240439e-01, 3.43203881e-01, 3.47213629e-01, 3.51270224e-01, 3.55374214e-01, 3.59526151e-01, 3.63726597e-01, 3.67976118e-01, 3.72275287e-01, 3.76624684e-01, 3.81024897e-01, 3.85476519e-01, 3.89980150e-01, 3.94536399e-01, 3.99145879e-01, 4.03809213e-01, 4.08527031e-01, 4.13299967e-01, 4.18128668e-01, 4.23013783e-01, 4.27955973e-01, 4.32955904e-01, 4.38014250e-01, 4.43131695e-01, 4.48308928e-01, 4.53546648e-01, 4.58845562e-01, 4.64206384e-01, 4.69629839e-01, 4.75116657e-01, 4.80667579e-01, 4.86283355e-01, 4.91964741e-01, 4.97712504e-01, 5.03527420e-01, 5.09410274e-01, 5.15361858e-01, 5.21382976e-01, 5.27474441e-01, 5.33637074e-01, 5.39871707e-01, 5.46179181e-01, 5.52560347e-01, 5.59016066e-01, 5.65547209e-01, 5.72154657e-01, 5.78839302e-01, 5.85602045e-01, 5.92443800e-01, 5.99365488e-01, 6.06368045e-01, 6.13452414e-01, 6.20619553e-01, 6.27870426e-01, 6.35206014e-01, 6.42627306e-01, 6.50135303e-01, 6.57731017e-01, 6.65415475e-01, 6.73189712e-01, 6.81054778e-01, 6.89011734e-01, 6.97061653e-01, 7.05205622e-01, 7.13444738e-01, 7.21780115e-01, 7.30212877e-01, 7.38744160e-01, 7.47375117e-01, 7.56106912e-01, 7.64940723e-01, 7.73877742e-01, 7.82919175e-01, 7.92066241e-01, 8.01320175e-01, 8.10682226e-01, 8.20153656e-01, 8.29735743e-01, 8.39429780e-01, 8.49237076e-01, 8.59158953e-01, 8.69196750e-01, 8.79351822e-01, 8.89625538e-01, 9.00019285e-01, 9.10534465e-01, 9.21172497e-01, 9.31934816e-01, 9.42822874e-01, 9.53838141e-01, 9.64982102e-01, 9.76256261e-01, 9.87662139e-01, 9.99201275e-01, 1.01087523e+00, 1.02268557e+00, 1.03463389e+00, 1.04672181e+00, 1.05895096e+00, 1.07132298e+00, 1.08383955e+00, 1.09650236e+00, 1.10931311e+00, 1.12227352e+00, 1.13538536e+00, 1.14865039e+00, 1.16207040e+00, 1.17564720e+00, 1.18938262e+00, 1.20327851e+00, 1.21733675e+00, 1.23155924e+00, 1.24594790e+00, 1.26050466e+00, 1.27523149e+00, 1.29013038e+00, 1.30520334e+00, 1.32045240e+00, 1.33587962e+00, 1.35148708e+00, 1.36727689e+00, 1.38325117e+00, 1.39941208e+00, 1.41576181e+00, 1.43230256e+00, 1.44903655e+00, 1.46596606e+00, 1.48309335e+00, 1.50042075e+00, 1.51795059e+00, 1.53568524e+00, 1.55362708e+00, 1.57177855e+00, 1.59014208e+00, 1.60872016e+00, 1.62751530e+00, 1.64653002e+00, 1.66576689e+00, 1.68522852e+00, 1.70491752e+00, 1.72483656e+00, 1.74498831e+00, 1.76537550e+00, 1.78600088e+00, 1.80686724e+00, 1.82797738e+00, 1.84933416e+00, 1.87094045e+00, 1.89279918e+00, 1.91491329e+00, 1.93728576e+00, 1.95991962e+00, 1.98281791e+00, 2.00598374e+00, 2.02942021e+00, 2.05313050e+00, 2.07711781e+00, 2.10138536e+00, 2.12593644e+00, 2.15077436e+00, 2.17590246e+00, 2.20132415e+00, 2.22704284e+00, 2.25306201e+00, 2.27938517e+00, 2.30601588e+00, 2.33295771e+00, 2.36021432e+00, 2.38778937e+00, 2.41568659e+00, 2.44390974e+00, 2.47246263e+00, 2.50134911e+00, 2.53057308e+00, 2.56013848e+00, 2.59004930e+00, 2.62030958e+00, 2.65092340e+00, 2.68189489e+00, 2.71322822e+00, 2.74492764e+00, 2.77699740e+00, 2.80944185e+00, 2.84226535e+00, 2.87547234e+00, 2.90906730e+00, 2.94305476e+00, 2.97743930e+00, 3.01222557e+00, 3.04741825e+00, 3.08302210e+00, 3.11904192e+00, 3.15548257e+00, 3.19234896e+00, 3.22964608e+00, 3.26737895e+00, 3.30555266e+00, 3.34417237e+00, 3.38324328e+00, 3.42277067e+00, 3.46275987e+00, 3.50321627e+00, 3.54414534e+00, 3.58555259e+00, 3.62744362e+00, 3.66982407e+00, 3.71269966e+00, 3.75607618e+00, 3.79995948e+00, 3.84435549e+00, 3.88927018e+00, 3.93470962e+00, 3.98067995e+00, 4.02718736e+00, 4.07423813e+00, 4.12183861e+00, 4.16999521e+00, 4.21871445e+00, 4.26800288e+00, 4.31786717e+00, 4.36831403e+00, 4.41935028e+00, 4.47098280e+00, 4.52321856e+00, 4.57606460e+00, 4.62952806e+00, 4.68361615e+00, 4.73833616e+00, 4.79369548e+00, 4.84970158e+00, 4.90636202e+00, 4.96368443e+00, 5.02167656e+00, 5.08034623e+00, 5.13970136e+00, 5.19974994e+00, 5.26050009e+00, 5.32196000e+00, 5.38413797e+00, 5.44704237e+00, 5.51068171e+00, 5.57506457e+00, 5.64019962e+00, 5.70609567e+00, 5.77276160e+00, 5.84020641e+00, 5.90843919e+00, 5.97746916e+00, 6.04730562e+00, 6.11795801e+00, 6.18943584e+00, 6.26174877e+00, 6.33490656e+00, 6.40891906e+00, 6.48379628e+00, 6.55954830e+00, 6.63618536e+00, 6.71371780e+00, 6.79215606e+00, 6.87151074e+00, 6.95179255e+00, 7.03301231e+00, 7.11518098e+00, 7.19830965e+00, 7.28240954e+00, 7.36749199e+00, 7.45356849e+00, 7.54065064e+00, 7.62875019e+00, 7.71787904e+00, 7.80804920e+00, 7.89927285e+00, 7.99156229e+00, 8.08492998e+00, 8.17938850e+00, 8.27495061e+00, 8.37162920e+00, 8.46943732e+00, 8.56838815e+00, 8.66849505e+00, 8.76977153e+00, 8.87223126e+00, 8.97588805e+00, 9.08075589e+00, 9.18684893e+00, 9.29418148e+00, 9.40276803e+00, 9.51262323e+00, 9.62376190e+00, 9.73619904e+00, 9.84994981e+00, 9.96502956e+00, 1.00814538e+01, 1.01992383e+01, 1.03183989e+01, 1.04389517e+01, 1.05609129e+01, 1.06842990e+01, 1.08091267e+01, 1.09354128e+01, 1.10631743e+01, 1.11924285e+01, 1.13231928e+01, 1.14554849e+01, 1.15893226e+01, 1.17247239e+01, 1.18617072e+01, 1.20002908e+01, 1.21404936e+01, 1.22823345e+01, 1.24258325e+01, 1.25710070e+01, 1.27178776e+01, 1.28664642e+01, 1.30167867e+01, 1.31688655e+01, 1.33227211e+01, 1.34783742e+01, 1.36358459e+01, 1.37951573e+01, 1.39563300e+01, 1.41193858e+01, 1.42843466e+01, 1.44512346e+01, 1.46200725e+01, 1.47908830e+01, 1.49636890e+01, 1.51385140e+01, 1.53153816e+01, 1.54943155e+01, 1.56753400e+01, 1.58584794e+01, 1.60437585e+01, 1.62312023e+01, 1.64208360e+01, 1.66126853e+01, 1.68067760e+01, 1.70031343e+01, 1.72017868e+01, 1.74027601e+01, 1.76060815e+01, 1.78117783e+01, 1.80198784e+01, 1.82304097e+01, 1.84434007e+01, 1.86588802e+01, 1.88768772e+01, 1.90974211e+01, 1.93205416e+01, 1.95462690e+01, 1.97746336e+01, 2.00056662e+01, 2.02393981e+01, 2.04758607e+01, 2.07150860e+01, 2.09571062e+01, 2.12019540e+01, 2.14496624e+01, 2.17002649e+01, 2.19537952e+01, 2.22102876e+01, 2.24697767e+01, 2.27322975e+01, 2.29978853e+01, 2.32665762e+01, 2.35384061e+01, 2.38134120e+01, 2.40916308e+01, 2.43731002e+01, 2.46578580e+01, 2.49459427e+01, 2.52373932e+01, 2.55322489e+01, 2.58305493e+01, 2.61323350e+01, 2.64376464e+01, 2.67465249e+01, 2.70590122e+01, 2.73751502e+01, 2.76949819e+01, 2.80185502e+01, 2.83458988e+01, 2.86770720e+01, 2.90121143e+01, 2.93510711e+01, 2.96939880e+01, 3.00409112e+01, 3.03918877e+01, 3.07469647e+01, 3.11061902e+01, 3.14696126e+01, 3.18372810e+01, 3.22092450e+01, 3.25855547e+01, 3.29662610e+01, 3.33514151e+01, 3.37410691e+01, 3.41352756e+01, 3.45340877e+01, 3.49375592e+01, 3.53457446e+01, 3.57586989e+01, 3.61764779e+01, 3.65991380e+01, 3.70267361e+01, 3.74593299e+01, 3.78969778e+01, 3.83397390e+01, 3.87876730e+01, 3.92408403e+01, 3.96993022e+01, 4.01631204e+01, 4.06323575e+01, 4.11070768e+01, 4.15873424e+01, 4.20732191e+01, 4.25647724e+01, 4.30620687e+01, 4.35651750e+01, 4.40741593e+01, 4.45890902e+01, 4.51100371e+01, 4.56370705e+01, 4.61702613e+01, 4.67096815e+01, 4.72554039e+01, 4.78075022e+01, 4.83660508e+01, 4.89311250e+01, 4.95028012e+01, 5.00811565e+01, 5.06662688e+01, 5.12582171e+01, 5.18570814e+01, 5.24629424e+01, 5.30758818e+01, 5.36959823e+01, 5.43233277e+01, 5.49580025e+01, 5.56000924e+01, 5.62496840e+01, 5.69068650e+01, 5.75717240e+01, 5.82443507e+01, 5.89248359e+01, 5.96132715e+01, 6.03097502e+01, 6.10143661e+01, 6.17272142e+01, 6.24483907e+01, 6.31779929e+01, 6.39161193e+01, 6.46628694e+01, 6.54183440e+01, 6.61826450e+01, 6.69558756e+01, 6.77381400e+01, 6.85295439e+01, 6.93301940e+01, 7.01401982e+01, 7.09596660e+01, 7.17887079e+01, 7.26274357e+01, 7.34759626e+01, 7.43344030e+01, 7.52028729e+01, 7.60814893e+01, 7.69703709e+01, 7.78696375e+01, 7.87794105e+01, 7.96998127e+01, 8.06309682e+01, 8.15730026e+01, 8.25260431e+01, 8.34902182e+01, 8.44656580e+01, 8.54524942e+01, 8.64508599e+01, 8.74608897e+01, 8.84827201e+01, 8.95164887e+01, 9.05623352e+01, 9.16204006e+01, 9.26908277e+01, 9.37737608e+01, 9.48693462e+01, 9.59777316e+01, 9.70990666e+01, 9.82335025e+01, 9.93811923e+01, 1.00542291e+02, 1.01716955e+02, 1.02905343e+02, 1.04107615e+02, 1.05323934e+02, 1.06554463e+02, 1.07799369e+02, 1.09058820e+02, 1.10332985e+02, 1.11622036e+02, 1.12926148e+02, 1.14245496e+02, 1.15580259e+02, 1.16930616e+02, 1.18296749e+02, 1.19678843e+02, 1.21077085e+02, 1.22491663e+02, 1.23922768e+02, 1.25370593e+02, 1.26835333e+02, 1.28317186e+02, 1.29816352e+02, 1.31333033e+02, 1.32867434e+02, 1.34419762e+02, 1.35990226e+02, 1.37579038e+02, 1.39186413e+02, 1.40812567e+02, 1.42457720e+02, 1.44122094e+02, 1.45805913e+02, 1.47509405e+02, 1.49232799e+02, 1.50976328e+02, 1.52740228e+02, 1.54524735e+02, 1.56330091e+02, 1.58156540e+02, 1.60004327e+02, 1.61873703e+02, 1.63764920e+02, 1.65678231e+02, 1.67613897e+02, 1.69572178e+02, 1.71553337e+02, 1.73557644e+02, 1.75585367e+02, 1.77636780e+02, 1.79712161e+02, 1.81811789e+02, 1.83935948e+02, 1.86084923e+02, 1.88259006e+02, 1.90458489e+02, 1.92683670e+02, 1.94934848e+02, 1.97212327e+02, 1.99516414e+02, 2.01847421e+02, 2.04205661e+02, 2.06591454e+02, 2.09005120e+02, 2.11446986e+02, 2.13917381e+02, 2.16416639e+02, 2.18945095e+02, 2.21503093e+02, 2.24090976e+02, 2.26709095e+02, 2.29357801e+02, 2.32037453e+02, 2.34748412e+02, 2.37491045e+02, 2.40265720e+02, 2.43072812e+02, 2.45912700e+02, 2.48785768e+02, 2.51692403e+02, 2.54632996e+02, 2.57607946e+02, 2.60617652e+02, 2.63662522e+02, 2.66742966e+02, 2.69859399e+02, 2.73012243e+02, 2.76201922e+02, 2.79428868e+02, 2.82693514e+02, 2.85996302e+02, 2.89337678e+02, 2.92718092e+02, 2.96138000e+02, 2.99597865e+02, 3.03098151e+02, 3.06639333e+02, 3.10221887e+02, 3.13846297e+02, 3.17513052e+02, 3.21222647e+02, 3.24975582e+02, 3.28772364e+02, 3.32613504e+02, 3.36499522e+02, 3.40430941e+02, 3.44408292e+02, 3.48432112e+02, 3.52502943e+02, 3.56621334e+02, 3.60787842e+02, 3.65003029e+02, 3.69267462e+02, 3.73581719e+02, 3.77946380e+02, 3.82362034e+02, 3.86829278e+02, 3.91348714e+02, 3.95920952e+02, 4.00546608e+02, 4.05226308e+02, 4.09960681e+02, 4.14750368e+02, 4.19596014e+02, 4.24498273e+02, 4.29457806e+02, 4.34475283e+02, 4.39551381e+02, 4.44686784e+02, 4.49882186e+02, 4.55138287e+02, 4.60455796e+02, 4.65835431e+02, 4.71277919e+02, 4.76783992e+02, 4.82354394e+02, 4.87989877e+02, 4.93691201e+02, 4.99459135e+02, 5.05294457e+02, 5.11197955e+02, 5.17170426e+02, 5.23212674e+02, 5.29325516e+02, 5.35509776e+02, 5.41766288e+02, 5.48095897e+02, 5.54499456e+02, 5.60977830e+02, 5.67531893e+02, 5.74162529e+02, 5.80870632e+02, 5.87657108e+02, 5.94522873e+02, 6.01468852e+02, 6.08495982e+02, 6.15605213e+02, 6.22797503e+02, 6.30073823e+02, 6.37435153e+02, 6.44882489e+02, 6.52416833e+02, 6.60039204e+02, 6.67750629e+02, 6.75552148e+02, 6.83444815e+02, 6.91429694e+02, 6.99507863e+02, 7.07680411e+02, 7.15948442e+02, 7.24313070e+02, 7.32775425e+02, 7.41336647e+02, 7.49997893e+02, 7.58760331e+02, 7.67625143e+02, 7.76593524e+02, 7.85666686e+02, 7.94845852e+02, 8.04132262e+02, 8.13527166e+02, 8.23031834e+02, 8.32647548e+02, 8.42375605e+02, 8.52217318e+02, 8.62174014e+02, 8.72247037e+02, 8.82437746e+02, 8.92747516e+02, 9.03177738e+02, 9.13729819e+02, 9.24405183e+02, 9.35205270e+02, 9.46131538e+02, 9.57185461e+02, 9.68368529e+02, 9.79682253e+02, 9.91128158e+02, 1.00270779e+03, 1.01442271e+03, 1.02627449e+03, 1.03826475e+03, 1.05039509e+03, 1.06266715e+03, 1.07508260e+03, 1.08764309e+03, 1.10035033e+03, 1.11320604e+03, 1.12621194e+03, 1.13936979e+03, 1.15268137e+03, 1.16614847e+03, 1.17977291e+03, 1.19355654e+03, 1.20750119e+03, 1.22160877e+03, 1.23588117e+03, 1.25032032e+03, 1.26492817e+03, 1.27970668e+03, 1.29465786e+03, 1.30978371e+03, 1.32508629e+03, 1.34056764e+03, 1.35622988e+03, 1.37207509e+03, 1.38810543e+03, 1.40432306e+03, 1.42073017e+03, 1.43732896e+03, 1.45412168e+03, 1.47111060e+03, 1.48829800e+03, 1.50568620e+03, 1.52327756e+03, 1.54107445e+03, 1.55907925e+03, 1.57729442e+03, 1.59572240e+03, 1.61436567e+03, 1.63322676e+03, 1.65230821e+03, 1.67161260e+03, 1.69114252e+03, 1.71090062e+03, 1.73088955e+03, 1.75111203e+03, 1.77157076e+03, 1.79226853e+03, 1.81320811e+03, 1.83439233e+03, 1.85582405e+03, 1.87750617e+03, 1.89944161e+03, 1.92163332e+03, 1.94408431e+03, 1.96679759e+03, 1.98977625e+03, 2.01302337e+03, 2.03654209e+03, 2.06033559e+03, 2.08440707e+03, 2.10875979e+03, 2.13339702e+03, 2.15832211e+03, 2.18353839e+03, 2.20904929e+03, 2.23485824e+03, 2.26096872e+03, 2.28738426e+03, 2.31410842e+03, 2.34114480e+03, 2.36849706e+03, 2.39616888e+03, 2.42416400e+03, 2.45248619e+03, 2.48113928e+03, 2.51012713e+03, 2.53945366e+03, 2.56912281e+03, 2.59913860e+03, 2.62950508e+03, 2.66022633e+03, 2.69130650e+03, 2.72274980e+03, 2.75456046e+03, 2.78674277e+03, 2.81930107e+03, 2.85223976e+03, 2.88556329e+03, 2.91927614e+03, 2.95338287e+03, 2.98788808e+03, 3.02279642e+03, 3.05811260e+03, 3.09384140e+03, 3.12998762e+03, 3.16655616e+03, 3.20355193e+03, 3.24097993e+03, 3.27884522e+03, 3.31715289e+03, 3.35590813e+03, 3.39511615e+03, 3.43478226e+03, 3.47491179e+03, 3.51551017e+03, 3.55658287e+03, 3.59813543e+03, 3.64017347e+03, 3.68270264e+03, 3.72572870e+03, 3.76925744e+03, 3.81329474e+03, 3.85784655e+03, 3.90291886e+03, 3.94851776e+03, 3.99464942e+03, 4.04132003e+03, 4.08853592e+03, 4.13630344e+03, 4.18462905e+03, 4.23351925e+03, 4.28298066e+03, 4.33301993e+03, 4.38364383e+03, 4.43485918e+03, 4.48667290e+03, 4.53909196e+03, 4.59212346e+03, 4.64577454e+03, 4.70005244e+03, 4.75496448e+03, 4.81051808e+03, 4.86672072e+03, 4.92357999e+03, 4.98110357e+03, 5.03929922e+03, 5.09817477e+03, 5.15773819e+03, 5.21799751e+03, 5.27896085e+03, 5.34063644e+03, 5.40303261e+03, 5.46615777e+03, 5.53002044e+03, 5.59462923e+03, 5.65999287e+03, 5.72612017e+03, 5.79302005e+03, 5.86070154e+03, 5.92917378e+03, 5.99844599e+03, 6.06852753e+03, 6.13942786e+03, 6.21115653e+03, 6.28372323e+03, 6.35713775e+03, 6.43140999e+03, 6.50654997e+03, 6.58256784e+03, 6.65947384e+03, 6.73727836e+03, 6.81599189e+03, 6.89562505e+03, 6.97618859e+03, 7.05769337e+03, 7.14015040e+03, 7.22357080e+03, 7.30796582e+03, 7.39334685e+03, 7.47972542e+03, 7.56711317e+03, 7.65552189e+03, 7.74496352e+03, 7.83545012e+03, 7.92699390e+03, 8.01960721e+03, 8.11330256e+03, 8.20809257e+03, 8.30399003e+03, 8.40100790e+03, 8.49915925e+03, 8.59845733e+03, 8.69891555e+03, 8.80054744e+03, 8.90336672e+03, 9.00738728e+03, 9.11262313e+03, 9.21908849e+03, 9.32679771e+03, 9.43576532e+03, 9.54600604e+03, 9.65753473e+03, 9.77036644e+03, 9.88451640e+03, 1.00000000e+04] um>, istar_sphere: int = None, shut_output: bool = False)
def kappa_Pstar(self)
def make_cont(self, inclination: Unit("deg") = <Quantity 0. deg>, wavs: Unit("um") = <Quantity [500.] um>, distance: Unit("pc") = <Quantity 140. pc>, npix: int = 100, posang: Unit("deg") = <Quantity 0. deg>, see_radmc_warnings: bool = False, sizeau: float = None, sizepc: float = None, pointau=None, pointpc=None)
def make_sed(self, inclination: Unit("deg") = <Quantity 0. deg>, threads: int = 1)
def misalign_disk_interpolation(self)
def sublimation_mask(self)
def tau_radialP(self)
def time_variable_dust_temp(self, timescale: Unit("d") = <Quantity 5. d>, average_temp_file: str = '', type: str = 'WL21')
def update_table(self)
def viscous_temp(self, alpha_vis: float = 0.0001)

Inherited members