Model reaction diffusion brusselator 2d matlab

Click For Summary
SUMMARY

The discussion focuses on modeling the reaction-diffusion Brusselator in 2D using MATLAB. The equations provided are ∂u/∂t=A+u²v-(B−1)u+D1(∂²u/∂x²+∂²u/∂y²) and ∂v/∂t=Bu−u²v+D2(∂²v/∂x²+∂²v/∂y²), with initial conditions u(x,y,0) = 0.5 + y and v(x,y,0) = 1 + 5x. The user encountered issues with NaN values in the simulation results at specific time steps, indicating problems with the implementation of initial conditions and efficiency in the code. Recommendations include using array operations instead of for loops for better performance.

PREREQUISITES
  • Understanding of reaction-diffusion systems
  • Familiarity with MATLAB programming
  • Knowledge of numerical methods for partial differential equations
  • Experience with array operations in MATLAB
NEXT STEPS
  • Review MATLAB array operations for improved performance
  • Investigate numerical methods for solving partial differential equations
  • Learn about boundary value problems in reaction-diffusion systems
  • Explore debugging techniques for MATLAB code to handle NaN values
USEFUL FOR

Researchers and students in computational biology, applied mathematics, and anyone developing simulations for reaction-diffusion systems using MATLAB.

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
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 10 ·
Replies
10
Views
2K
Replies
2
Views
2K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K