"Bill Greene" wrote in message <firstname.lastname@example.org>... > "Sashankh Rao" wrote in message <email@example.com>... > > > I then mesh it: [p,e,t] = initmesh(g); > > Then I create my boundary matrix using [Q,G,H,R] = pdebound(p2,e2); > > I then assemble other matrices using [K,M,F] = assema(p,t,c,a,f); > > Finally I solve the problem using u = assempde(K,M,F,Q,G,H,R); > > > Ah, I see that the documentation page I pointed you to doesn't > show you what to do with the pdebound function once you've created it-- > sorry. > > That function is actually called by the PDE Toolbox routines-- not by you. > If you don't want to do anything fancy, but simply want a solution, do this: > > b=@pdebound; % the "pdebound" function can have any name > % also define p,e,t,c,a,f > u=assempde(b,p,e,t,c,a,f); > > Regards, > > Bill > > ------------------------------------------ > > As per the link below the size of the Q matrix in the boundary file is (N^2 ne) which for a one-dimensional system is (1 ne), where ne is the number of edges in the mesh. > > > > http://www.mathworks.com/help/pde/ug/boundary-conditions-for-scalar-pde.html > > > > However the size for the K and M matrices is (Np Np) where Np is the number of nodes in the matrix. > > > > So I see that the K matrix and Q matrix are not of the same dimensions and hence the error. I am not able to figure out how to fix this problem. Any help will be appreciated very much. > > > > Thank you. > > > > "Bill Greene" wrote in message <firstname.lastname@example.org>... > > > Hi, > > > > > > "Sashankh Rao" wrote in message <email@example.com>... > > > > Using the Matlab pde toolbox I obtain a solution to the Poisson equation for a given geometry using dirichlet boundary conditions. First, I want to determine the gradient at all the boundary nodes. Is this possible using the toolbox? Second, I want to use these gradient values as an input boundary condition for the same boundary to solve a different equation (same geometry). Is this possible to do using the toolbox? Thanks. > > > > > > Yes, this is definitely possible. I'll try to point you in the right direction. > > > > > > The function pdegrad can be used to calculate the gradient of the solution at the > > > element centroids. > > > http://www.mathworks.com/help/pde/ug/pdegrad.html?searchHighlight=pdegrad > > > Then the function pdeprtni can be used to interpolate these centroid values back > > > to the nodes. > > > http://www.mathworks.com/help/pde/ug/pdeprtni.html > > > > > > Using these gradient values in the boundary conditions will require you to write your > > > own boundary condition function, referred to as a "boundary file" in the PDE > > > Toolbox documentation. > > > http://www.mathworks.com/help/pde/ug/pdebound.html > > > > > > This documentation page has some examples of how to write such a function. > > > http://www.mathworks.com/help/pde/ug/boundary-conditions-for-scalar-pde.html > > > > > > Bill
I have another question related to the above thread.
I am trying to impose the Neumann condition at nodes on the boundary. To do this I need to pass additional information to pdebound as shown below.
function [qmatrix,gmatrix,hmatrix,rmatrix] = pdebound2(p,e,u,time,u2bn,loc)
where u2bn and loc are the additional data. However, I get the following error in trying to do so:
Input argument "u2bn" is undefined. Error in ==> pdebound2 at 13
Looks like pdebound will not accept additional data. I am using
b = @pdebound;
to assemble my boundary matrix.
Thanks for taking time to help me. Really appreciate it.