Beispiel #1
0
            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)
Beispiel #4
0
    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
                             })