Model reaction diffusion brusselator 2d matlab

Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
4 replies · 4K views
RiseFox
Messages
3
Reaction score
0
Moved from a technical forum, so homework template missing
Hello, I have a project (model reaction diffusion brusselator 2d)
∂u/∂t=A+u^2v-(B−1)u+D1((∂^2)u/∂(x^2)+(∂^2)u/∂(y^2))
∂v/∂t=Bu−u^2v+D2((∂^2)v/∂(x^2)+(∂^2)v/∂(y^2))

initial conditions:
u(x,y,0) = 0.5 + y,
v(x,y,0) = 1 + 5x.

boundary conditions:
∂u/∂n = 0, ∂v/∂t = 0

n-external normal to the boundary

for numerical experiment:
A=1;B=3.4; D1=D2=2*10-3

I attached .zip with MATLAB code, but it is not working properly for some reason (( pls help me with code (problems with initial conditions)
 

Attachments

Physics news on Phys.org
RiseFox said:
I attached .zip with MATLAB code, but it is not working properly for some reason (( pls help me with code (problems with initial conditions)
You'll have to describe the problem better than that.
 
ok, I already found one mistake there was to be no x, y and i, j
Code:
for i =1:n
    for j =1:n
        u(i,j) = 0.5 + i;
        v(i,j) = 1 + 5*j;
    end
end

at t = 0
Screenshot_10.png
is good,
but in other cases(t=0.25; t=0.75),
my u = NaN go in and I'm stuck at this point
Screenshot_7.png
 
Why is t_max = 0?

While not related to your problem, I must say that your program if not efficient. In the brusselator functions, you should use array operations, not for loops. In laplacian, you should not have a series of ifs for border cases. Use instead a main loop dealing with core points, and then treat the border values independently.
 
I realized now, even if I knew how to write, since I do not use matlab, and perform calculations have it