def riemann_plot_func(q_l, q_r, auxl, auxr): """Return Riemann plot function for (only) time-dependent interacts. """ ex_states, ex_speeds, reval = exact_riemann_solution(q_l ,q_r, auxl, auxr) plot_function = riemann_tools.make_plot_function(ex_states, ex_speeds, reval, layout='vertical', variable_names=['pressure', 'velocity'], aux=(np.array(auxl),np.array(auxr)), plot_chars=[lambda1_het, lambda2_het]) return plot_function
def plot_riemann_solution(ql, qr, a): c = lambda q, xi: a soln = riemann_solution(ql, qr, a) plot_advection = riemann_tools.make_plot_function(*soln, plot_chars=[c]) return interact(plot_advection, t=widgets.FloatSlider(value=0.0, min=0, max=1.0), which_char=widgets.fixed(True))
def shock(): """Returns plot function for a shock solution.""" q_l, q_r = 5.0, 1.0 states, speeds, reval, wave_type = burgers.exact_riemann_solution(q_l ,q_r) plot_function = riemann_tools.make_plot_function(states, speeds, reval, wave_type, layout='horizontal', variable_names=['q'], plot_chars=[burgers.speed]) return plot_function
def unphysical(): """Returns plot function for an unphysical solution.""" q_l, q_r = 1.0, 5.0 states, speeds, reval, wave_type = burgers.unphysical_riemann_solution(q_l ,q_r) plot_function = riemann_tools.make_plot_function(states, speeds, reval, wave_type, layout='horizontal', variable_names=['q'], plot_chars=[burgers.speed]) return plot_function
def plot_riemann_solution(ql, qr, a): c = lambda q, xi: a soln = riemann_solution(ql ,qr, a) plot_advection = riemann_tools.make_plot_function(*soln, plot_chars=[c]) return interact(plot_advection, t=widgets.FloatSlider(value=0.0,min=0,max=1.0), which_char=widgets.fixed(True))
def rarefaction(): q_l, q_r = 2.0, 4.0 states, speeds, reval, wave_type = burgers.exact_riemann_solution(q_l, q_r) plot_function = riemann_tools.make_plot_function( states, speeds, reval, wave_type, layout='horizontal', variable_names=['q'], plot_chars=[burgers.speed]) return plot_function
def unphysical(): q_l, q_r = 1.0, 5.0 states, speeds, reval, wave_type = burgers.unphysical_riemann_solution( q_l, q_r) plot_function = riemann_tools.make_plot_function( states, speeds, reval, wave_type, layout='horizontal', variable_names=['q'], plot_chars=[burgers.speed]) return plot_function
def shock(): """Returns plot function for a shock solution.""" q_l, q_r = 5.0, 1.0 states, speeds, reval, wave_type = burgers.exact_riemann_solution(q_l, q_r) plot_function = riemann_tools.make_plot_function( states, speeds, reval, wave_type, layout='horizontal', variable_names=['q'], plot_chars=[burgers.speed]) return plot_function
def riemann_solution(left_state, right_state, gamma=1.4): q_left = primitive_to_conservative(*left_state) q_right = primitive_to_conservative(*right_state) ex_states, ex_speeds, reval, wave_types = exact_riemann_solution( q_left, q_right, gamma) plot_function = riemann_tools.make_plot_function( ex_states, ex_speeds, reval, wave_types, layout='vertical', variable_names=primitive_variables, plot_chars=[lambda1, lambda2, lambda3], derived_variables=cons_to_prim) interact(plot_function, t=widgets.FloatSlider(value=0.1, min=0, max=.9), which_char=widgets.Dropdown( options=[None, 1, 2, 3], description='Show characteristics:', style={'description_width': 'initial'}))