Model reaction diffusion brusselator 2d matlab

4 replies · 4K views · last reply
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
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
MATLAB Figure 1 showing a 3D surface plot rendered with a yellow-to-blue colormap, rising from near zero at the front corner to about 1200 on the z-axis, with x and y axes ranging from 0 to 10.
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 of an empty MATLAB Figure 1 window showing a blank 3D axes with z-axis ticks from 0 to 1 and x and y axis ticks from 0 to 1.
 
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