Пример #1
0
    def __init__(self,
                 extentions=[],
                 folder=os.path.expanduser('~'),
                 label='search file',
                 **kwargs):

        self.extentions = extentions
        self.folder = folder

        self.selected_file = v.TextField(label='Selected file',
                                         class_='ml-5 mt-5',
                                         v_model=self.file)

        self.loading = v.ProgressLinear(
            indeterminate=False, color=COMPONENTS['PROGRESS_BAR']['color'])

        self.file_list = v.List(dense=True,
                                color='grey lighten-4',
                                flat=True,
                                children=[
                                    self.loading,
                                    v.ListItemGroup(children=self.get_items(),
                                                    v_model='')
                                ])

        self.file_menu = v.Menu(min_width=300,
                                children=[self.file_list],
                                close_on_content_click=False,
                                max_height='300px',
                                v_slots=[{
                                    'name':
                                    'activator',
                                    'variable':
                                    'x',
                                    'children':
                                    Btn(icon='mdi-file-search',
                                        v_model=False,
                                        v_on='x.on',
                                        text=label)
                                }])

        super().__init__(row=True,
                         class_='d-flex align-center mb-2',
                         align_center=True,
                         children=[
                             self.file_menu,
                             self.selected_file,
                         ],
                         **kwargs)

        link((self.selected_file, 'v_model'), (self, 'file'))

        def on_file_select(change):
            new_value = change['new']
            if new_value:
                if os.path.isdir(new_value):
                    self.folder = new_value
                    self.change_folder()

                elif os.path.isfile(new_value):
                    self.file = new_value

        self.file_list.children[1].observe(on_file_select, 'v_model')
Пример #2
0
    def __init__(self,
                 extentions=[],
                 folder=os.path.expanduser('~'),
                 label='search file',
                 v_model=None,
                 **kwargs):

        self.extentions = extentions
        self.folder = folder

        self.selected_file = v.TextField(readonly=True,
                                         label='Selected file',
                                         class_='ml-5 mt-5',
                                         v_model=self.file)

        self.loading = v.ProgressLinear(
            indeterminate=False,
            background_color='grey darken-3',
            color=COMPONENTS['PROGRESS_BAR']['color'])

        self.file_list = v.List(
            dense=True,
            color='grey darken-3',
            flat=True,
            max_height='300px',
            style_='overflow: auto; border-radius: 0 0 0 0;',
            children=[v.ListItemGroup(children=self._get_items(), v_model='')])

        self.file_menu = v.Menu(min_width=300,
                                children=[self.loading, self.file_list],
                                close_on_content_click=False,
                                v_slots=[{
                                    'name':
                                    'activator',
                                    'variable':
                                    'x',
                                    'children':
                                    Btn(icon='mdi-file-search',
                                        v_model=False,
                                        v_on='x.on',
                                        text=label)
                                }])

        self.reload = v.Btn(icon=True,
                            color='primary',
                            children=[v.Icon(children=['mdi-cached'])])

        super().__init__(row=True,
                         class_='d-flex align-center mb-2',
                         align_center=True,
                         children=[
                             self.reload,
                             self.file_menu,
                             self.selected_file,
                         ],
                         **kwargs)

        link((self.selected_file, 'v_model'), (self, 'file'))
        link((self.selected_file, 'v_model'), (self, 'v_model'))

        self.file_list.children[0].observe(self._on_file_select, 'v_model')
        self.reload.on_event('click', self._on_reload)
Пример #3
0
    def __init__(self, test_case_widget, lb_scheme_widget):
        """
        Widget definition for simulation of lattice Boltzmann methods.

        Parameters
        ==========

        - test_case_widget:
            widget of the test case (see test_case.py).

        - lb_scheme_widget:
            widget of the lattice Boltzmann scheme (see lb_scheme.py).

        This widget is composed by a menu where you can modify the discretization parameters,
        the generator used to build the numerical kernel into pylbm and the desired outputs for
        post treatment.

        This widget is also composed by a main widget where the simulation can be started and
        a plot is given in real time for the available fields. A period can be modified to control
        the plot frequency and a snapshot of the current figure can be made.

        """
        self.test_case_widget = test_case_widget
        self.lb_scheme_widget = lb_scheme_widget
        test_case = test_case_widget.get_case()
        tc_param = test_case_widget.parameters
        lb_case = lb_scheme_widget.get_case()
        lb_param = lb_scheme_widget.parameters

        self.stats = {}
        ##
        ## The menu
        ##

        # configure the default simulation name
        self.simulation_name = v.TextField(label='Simulation name', v_model='')
        self.update_name(None)

        self.simu_cfg = v.Select(label='Load simulation configuration',
                                 items=[],
                                 v_model=None)
        self.update_simu_cfg_list()

        self.discret = DiscretizationWidget(test_case_widget, lb_scheme_widget)

        self.codegen = v.Select(items=['auto', 'numpy', 'cython'],
                                v_model='auto')

        self.save_fields = Save_widget(
            list(lb_scheme_widget.get_case().equation.get_fields().keys()))

        self.menu = [
            self.simulation_name, self.simu_cfg,
            v.ExpansionPanels(children=[
                self.discret,
                v.ExpansionPanel(children=[
                    v.ExpansionPanelHeader(children=['Code generator']),
                    v.ExpansionPanelContent(children=[self.codegen]),
                ]),
                v.ExpansionPanel(children=[
                    v.ExpansionPanelHeader(children=['Field output request']),
                    v.ExpansionPanelContent(
                        children=[self.save_fields.widget]),
                ]),
            ],
                              multiple=True,
                              class_='pa-0')
        ]

        ##
        ## The main
        ##

        self.simu = simulation()
        self.simu.reset_fields(
            lb_scheme_widget.get_case().equation.get_fields())

        self.start = v.Btn(v_model=True,
                           children=['Start'],
                           class_='ma-2',
                           style_='width: 100px',
                           color='success')
        self.startTooltip = Tooltip(self.start,
                                    tooltip='click to start the simulation')

        self.pause = v.Btn(children=['Pause'],
                           class_='ma-2',
                           style_='width: 100px',
                           disabled=True,
                           v_model=False)
        self.progress_bar = v.ProgressLinear(height=20,
                                             value=0,
                                             color='light-blue',
                                             striped=True)
        self.result = v.Select(items=list(self.simu.fields.keys()),
                               v_model=list(self.simu.fields.keys())[0])

        self.period = StrictlyPositiveIntField(
            label='Period',
            v_model=round(self.discret['nt'].value / nb_split_period))
        self.snapshot = v.Btn(children=['Snapshot'])

        self.plot = Plot()
        self.iplot = 0
        self.plot_output = v.Row(justify='center')

        self.dialog = DialogPath()

        self.main = [
            v.Row(children=[
                self.startTooltip,
                Tooltip(self.pause, tooltip='click to pause the simulation'),
                self.dialog,
            ]),
            self.progress_bar,
            v.Row(
                children=[
                    v.Col(children=[self.result], md=5, sm=12),
                    v.Col(children=[self.period], md=5, sm=12),
                    v.Col(children=[self.snapshot], md=2, sm=12),
                ],
                align='center',
                justify='space-around',
            ),
            self.plot_output,
        ]

        ##
        ## Widget events
        ##

        self.start.on_event('click', self.start_simulation)
        self.pause.on_event('click', self.on_pause_click)
        self.snapshot.on_event('click', self.take_snapshot)
        self.result.observe(self.replot, 'v_model')
        self.simu_cfg.observe(self.load_simu_cfg, 'v_model')
        self.discret['nt'].observe(self.change_period_by_nt, 'v_model')

        test_case_widget.select_case.observe(self.stop_simulation, 'v_model')
        lb_scheme_widget.select_case.observe(self.stop_simulation, 'v_model')
        lb_scheme_widget.select_case.observe(self.update_result, 'v_model')
        test_case_widget.select_case.observe(self.update_name, 'v_model')
        lb_scheme_widget.select_case.observe(self.update_name, 'v_model')
Пример #4
0
 def __init__(self, app_dir="."):
     self.app_dir = app_dir
     self.main_loading = v.ProgressLinear(indeterminate=False)
     self.main_toolbar = self.create_main_toolbar()
     self.heatmap_plot = v.Container()