Dmitry
Posts:
4
Registered:
4/2/14


Re: measured boundary conditions with pde toolbox
Posted:
Apr 7, 2014 11:11 AM


"Dmitry" wrote in message <lhipl8$f2q$1@newscl01ah.mathworks.com>... > "Bill Greene" wrote in message <lhholl$pur$1@newscl01ah.mathworks.com>... > > "Dmitry" wrote in message <lhhm8o$j16$1@newscl01ah.mathworks.com>... > > > "Doug" wrote in message <h5psrj$8g9$1@fred.mathworks.com>... > > > > OK, I've answered my own question, and the answer is a boundary Mfile. > > > > > > > > Though wbound makes a boundary Mfile that is based on a simple formula, in exactly the same format as a boundary condition matrix, it's possible to write your own boundary Mfile *any way you like*. As long as it takes (p,e,u,time) as inputs and returns [q,g,h,r] as outputs, it works fine with assempde. You just pass the filename of the boundary Mfile as the first argument to assempde. So I've written a boundary Mfile that takes the necessary inputs (p,e,u,time) but ignores them, instead constructing [q,g,h,r] from my measurements. And it works. Reading the help file for pdebound over and over was the key! > > > > > > Hi Doug, > > > Could you provide an example of this kind of usage please? > > > As I understood, you just loaded the variable in the boundary Mfile like this: > > > > load('var.mat','var'); > > > and used it for construction of [q,g,h,r]. Am I right? > > > > > > I've done the same (for hyperbolic solver), but I can't check if it works because for some (another) reason the solver gives me the error: > > > >Error using pdeexpd (line 57) > > > >Number of variables mismatch between u and bl. > > > >Error in assemb (line 101) > > > > [q,g,h,r]=pdeexpd(p,e,u,time,bl); > > > >Error in pdeODEInfo/getMats (line 164) > > > > [Q,G,H,R]=assemb(self.b,self.p,self.e,u,time); > > > >Error in pdeODEInfo/checkFuncDepen (line 60) > > > > [MM0,K0,M0,F0,Q0,G0,H0,R0] = self.getMats(u0, t0); > > > >Error in pdeHyperbolicInfo (line 15) > > > > obj=obj.checkFuncDepen(u0, tlist); > > > >Error in hyperbolic (line 41) > > > > pdehyp=pdeHyperbolicInfo(u0,ut0,tlist,b,p,e,t,c,a,f,d); > > > >Error in main (line 49) > > > >u = hyperbolic(u0,ut0,tlist,b,p,e,t,c,a,f,d); > > > > > > In my case I have only dependence on time in boundary Mfile, but the solver assumes that output of it depends on the solution u too > > > (it goes wrong way at pdeODEInfo/checkFuncDepen stage). > > > Don't know what to do... > > > > There appears to be something wrong with your pdebound function or > > with how you are passing the handle to it into hyperbolic. > > > > Did you follow the example here if you have a single pde: > > > > http://www.mathworks.com/help/pde/ug/boundaryconditionsforscalarpde.html > > > > or here if you have a system of pde: > > > > http://www.mathworks.com/help/pde/ug/boundaryconditionsforpdesystems.html > > > > Is the value of "b" that you are passing into hyperbolic something like this? > > > > b = @myPdeBoundFunction; % myPdeBoundFunction is whatever you named your function > > > > Bill > > Oh, thanks, Bill, I'd passed 'b' the wrong way...
Bill, could you help again please... I have a timedependent boundary conditions for hyperbolic solver, but when I displayed the variable time, which is passed in boundary.m, I saw it was nearly equal to 2*10^15 during all calls. So hyperbolic() passes time=0 to BCfunction all the time. Which it can be related to?

