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 : floatvar amratio : floatvar dust_distroindex : floatvar dust_massfrac : List[float]var dust_names : List[str]var dust_settling : strvar dust_sizes : Unit("cm")var dust_to_gas : floatvar envelope_density : Unit("g / cm3")var gamma_in : floatvar gamma_pwl : floatvar gamma_tap : floatvar gap_amps : List[float]var gap_positions : Unit("AU")var gap_type : strvar gap_widths : Unit("AU")var grazang : floatvar h_d : List[float]var h_g : floatvar is_zr_regular : boolvar 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 : floatvar 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 : intvar radmc_folder : strvar sublim_pwlindex : floatvar sublim_temp : Unit("K")var t_acc : Unit("K")var t_star : Unit("K")var vertical_bins : intvar zr_max : floatvar 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 : floatvar alpha_vis : floatvar amratio : floatvar azimuthal_bins : intvar dust_distroindex : floatvar dust_massfrac : List[float]var dust_names : List[str]var dust_settling : strvar dust_sizes : Unit("cm")var dust_to_gas : floatvar envelope_density : Unit("g / cm3")var gamma_in : floatvar gamma_pwl : floatvar gamma_tap : floatvar gap_amps : List[float]var gap_positions : Unit("AU")var gap_type : strvar gap_widths : Unit("AU")var grazang : floatvar h_d : List[float]var h_g : floatvar is_zr_regular : boolvar 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 : floatvar 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 : intvar radmc_folder : strvar renormalise : boolvar sep_stars_paramtemp : boolvar star_coords : Unit("AU")var sublim_pwlindex : floatvar sublim_temp : Unit("K")var t_acc : Unit("K")var t_star : Unit("K")var t_stars : Unit("K")var vertical_bins : intvar z_rhocentre : Unit("AU")var zr_max : floatvar 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