Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
    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()