Set Neumann Boundary Conditions to PDEModel

6 views (last 30 days)
Hello, I want to solve the Laplace equation on a 2-D rectangular grid. I'm using the "applyBoundaryCondition" function to determine the boundaries.
On one side I have a constant Dirichlet boundary, applyBoundaryCondition(model,'Edge',3,'u',v);, and on the other two sides I have constant Neumann boundaries, applyBoundaryCondition(model,'Edge',[1,4],'q',0,'g',0);.
On the fourth side I want to use a Neumann boundary but instead of g=constant I have a vector that represents the value at each boundary point applyBoundaryCondition(model,'Edge',[1,4],'q',0,'g',[1:100]);. Is it possible to define 'g' as a vector like this and if not how can I do it?

Accepted Answer

Alan Weiss
Alan Weiss on 24 Aug 2015
The documentation describes how to set boundary conditions. There is a worked example here.
For your case, you probably need to interpolate the g value as a function of x or y in order that the boundary condition is defined everywhere. You can use interp1 or any other interpolation method you like.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation
  5 Comments
Alan Weiss
Alan Weiss on 27 Aug 2015
Oh, I didn't realize that you were using the PDE app. I don't think that the PDE app uses functions in this syntax. Instead, I think that it uses functions in a syntax described here.
IMHO, it is much easier to use command-line functions with a PDEModel object.
Alan Weiss
MATLAB mathematical toolbox documentation
d
d on 30 Aug 2015
I tried them both and in every one of them I had another problem. With the PDEmodel object I can write the function but the mesh using "generate Mesh" was not good. In contrasts, by using the PDE app I was able to create a good mesh but I can't write a function in the way I want. (The mesh problem is described the second question of mine: refine mesh in PDEModel )

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!