def __init__(self, tardis_config): self.tardis_config = tardis_config self.runner = MontecarloRunner(self.tardis_config.montecarlo.seed, tardis_config.spectrum.frequency) t_inner_lock_cycle = [False] * ( tardis_config.montecarlo.convergence_strategy.lock_t_inner_cycles) t_inner_lock_cycle[0] = True self.t_inner_update = itertools.cycle(t_inner_lock_cycle)
def __init__(self, tardis_config): #final preparation for configuration object self.tardis_config = tardis_config self.gui = None self.converged = False self.atom_data = tardis_config.atom_data selected_atomic_numbers = self.tardis_config.abundances.index self.atom_data.prepare_atom_data( selected_atomic_numbers, line_interaction_type=tardis_config.plasma.line_interaction_type, nlte_species=tardis_config.plasma.nlte.species) if tardis_config.plasma.ionization == 'nebular': if not self.atom_data.has_zeta_data: raise ValueError( "Requiring Recombination coefficients Zeta for 'nebular' plasma ionization" ) self.packet_src = packet_source.SimplePacketSource.from_wavelength( tardis_config.montecarlo.black_body_sampling.start, tardis_config.montecarlo.black_body_sampling.end, blackbody_sampling=tardis_config.montecarlo.black_body_sampling. samples, seed=self.tardis_config.montecarlo.seed) self.current_no_of_packets = tardis_config.montecarlo.no_of_packets self.t_inner = tardis_config.plasma.t_inner self.t_rads = tardis_config.plasma.t_rads self.iterations_max_requested = tardis_config.montecarlo.iterations self.iterations_remaining = self.iterations_max_requested self.iterations_executed = 0 if tardis_config.montecarlo.convergence_strategy.type == 'specific': self.global_convergence_parameters = ( tardis_config.montecarlo.convergence_strategy.deepcopy()) self.t_rads = tardis_config.plasma.t_rads t_inner_lock_cycle = [False] * ( tardis_config.montecarlo.convergence_strategy.lock_t_inner_cycles) t_inner_lock_cycle[0] = True self.t_inner_update = itertools.cycle(t_inner_lock_cycle) self.ws = ( 0.5 * (1 - np.sqrt(1 - (tardis_config.structure.r_inner[0]**2 / tardis_config.structure.r_middle**2).to(1).value))) self.plasma_array = LegacyPlasmaArray( tardis_config.number_densities, tardis_config.atom_data, tardis_config.supernova.time_explosion.to('s').value, nlte_config=tardis_config.plasma.nlte, delta_treatment=tardis_config.plasma.delta_treatment, ionization_mode=tardis_config.plasma.ionization, excitation_mode=tardis_config.plasma.excitation, line_interaction_type=tardis_config.plasma.line_interaction_type, link_t_rad_t_electron=0.9, helium_treatment=tardis_config.plasma.helium_treatment) self.spectrum = TARDISSpectrum(tardis_config.spectrum.frequency, tardis_config.supernova.distance) self.spectrum_virtual = TARDISSpectrum( tardis_config.spectrum.frequency, tardis_config.supernova.distance) self.spectrum_reabsorbed = TARDISSpectrum( tardis_config.spectrum.frequency, tardis_config.supernova.distance) self.runner = MontecarloRunner()