gfx.py 文件源码

python
阅读 25 收藏 0 点赞 0 评论 0

项目:pyfds 作者: emtpb 项目源码 文件源码
def start_simulation(self):
        """Starts the simulation with visualization."""

        self.show_setup(halt=False)
        main_plot = self.axes.imshow(self.field_as_matrix(),
                                     extent=(0, max(self.field.x.vector) / self._x_axis_factor,
                                             max(self.field.y.vector) / self._y_axis_factor, 0),
                                     cmap='viridis')
        main_plot.set_clim(-self.scale, self.scale)
        color_bar = pp.colorbar(main_plot)
        color_bar.set_label(self.observed_component, rotation=270)

        sim_process = mp.Process(target=self._sim_function, args=(self._plot_queue,))
        sim_process.start()

        # wait for simulation initialization
        while self._plot_queue.empty():
            pl.pause(0.1)

        finished = False
        while not finished:
            # wait for new simulation result
            while self._plot_queue.empty():
                pl.pause(0.01)

            message = self._plot_queue.get()
            # simulation function returns field object when simulation is complete to get output
            if isinstance(message, fld.Field):
                # update main process field components with simulation result
                self._update_components(message)
                finished = True
            else:
                time, data = message
                self.axes.title.set_text('{title} $t$ = {time:.{prec}f} {prefix}s'
                                         .format(title=self.plot_title, time=time/self._t_factor,
                                                 prec=self.time_precision, prefix=self._t_prefix))
                main_plot.set_data(self.field_as_matrix(data))
                pl.pause(self.frame_delay)

        sim_process.join()
        pp.show()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号