return self.u.flatten() else: return self.v.flatten() if __name__=="__main__": NSide = 200 N = NSide**2 Du = 0.16 Dv = 0.08 f = 0.060 k = 0.062 u, v = get_initial_configuration(NSide,random_influence=0.2) dt = 20 GS = GrayScott(u,v,k,f,Du,Dv,periodic=True,diagonal_links=True) network = get_grid_layout(N) visualize_reaction_diffusion(GS, network, dt, node_compartments=np.arange(N), n_integrator_midpoints=20, value_extent=[0,1], config={'draw_nodes_as_rectangles':True} )
) linear_processes.append( ( (node, "I"), recovery_rate, (node, "R") ) ) for u, v, w in links: for C in base_compartments: linear_processes.extend([ ( (u, C), w*mobility_rate, (v, C) ), ( (v, C), w*mobility_rate, (u, C) ), ]) print("set processes") model.set_processes(quadratic_processes+linear_processes,allow_nonzero_column_sums=True) initial_conditions = { ( node, "S" ): 1.0 for node in range(N) } initial_conditions[(0, "S")] = 0.8 initial_conditions[(0, "I")] = 0.2 model.set_initial_conditions(initial_conditions,allow_nonzero_column_sums=True) t = np.linspace(0,20,100) node_compartments = [ (node, "I" ) for node in range(N) ] dt = 0.04 visualize_reaction_diffusion(model, network, dt, node_compartments, value_extent=[0,0.3])
((node, "S"), (node, "I"), infection_rate, (node, "I"), (node, "I")), ) linear_processes.append(((node, "I"), recovery_rate, (node, "R"))) for u, v, w in links: for C in base_compartments: linear_processes.extend([ ((u, C), w * mobility_rate, (v, C)), ((v, C), w * mobility_rate, (u, C)), ]) print("set processes") model.set_processes(quadratic_processes + linear_processes, allow_nonzero_column_sums=False) initial_conditions = {(node, "S"): 1.0 for node in range(N)} initial_conditions[(0, "S")] = 0.99 initial_conditions[(0, "I")] = 0.01 model.set_initial_conditions(initial_conditions, allow_nonzero_column_sums=True) t = np.linspace(0, 20, 100) plot_node_indices = [(node, "R") for node in range(N)] dt = 0.02 visualize_reaction_diffusion(model, network, dt, plot_node_indices)
NSide = 200 N = NSide**2 u, v = get_initial_configuration(NSide,random_influence=0.2) Du = 0.16 Dv = 0.08 f = 0.060 k = 0.062 #DA, DB, f, k = 0.14, 0.06, 0.035, 0.065 # bacteria dt = 1 updates_per_frame = 40 sampling_dt = updates_per_frame * dt GS = GrayScott(u,v,k,f,Du,Dv,periodic=True,diagonal_links=False) network = get_grid_layout(N,windowwidth=NSide) visualize_reaction_diffusion(GS, network, sampling_dt, node_compartments=np.arange(N), n_integrator_midpoints=updates_per_frame-1, #value_extent=[0.35,0.48], config={'draw_nodes_as_rectangles':True} ) #from bfmplot import pl #pl.hist(GS.u) #pl.show()
((u, C), w * mobility_rate, (v, C)), ((v, C), w * mobility_rate, (u, C)), ]) print("set processes") model.set_processes(quadratic_processes + linear_processes, allow_nonzero_column_sums=False) initial_conditions = {(node, "S"): 1.0 for node in range(N)} initial_conditions[(0, "S")] = 0.99 initial_conditions[(0, "I")] = 0.01 model.set_initial_conditions(initial_conditions, allow_nonzero_column_sums=True) t = np.linspace(0, 20, 100) plot_node_indices = [(node, "I") for node in range(N)] dt = 0.3 visualize_reaction_diffusion(model, network, dt, plot_node_indices, value_extent=[0, 0.2], config={ 'draw_nodes_as_rectangles': True, 'draw_links': False })