Re: How to specify boundary conditions on all 4 sides of a plate for a steady state heat equation (PDE) using NDSolve? (Laplace equation)
- To: mathgroup at smc.vnet.net
- Subject: [mg59711] Re: How to specify boundary conditions on all 4 sides of a plate for a steady state heat equation (PDE) using NDSolve? (Laplace equation)
- From: "James Gilmore" <james.gilmore at yale.edu>
- Date: Thu, 18 Aug 2005 00:16:55 -0400 (EDT)
- Organization: Yale University
- References: <ddpt58$orc$1@smc.vnet.net> <dds9co$91c$1@smc.vnet.net> <dduroq$oih$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Nasser, Thank you for your follow up, I will take a look at the books you suggested when I have time. Apologies if you thought I suggested that you didn't know how to solve Laplace like problems via hand. That was not intended. There is a package on Math source that can be used to solve the Laplace equation at least. I have it working on my machine (Mathematica 5.0.0.0 Win XP). <http://library.wolfram.com/infocenter/MathSource/684> The package needs development, but is a useful tool. I have solved the Laplace equation with rectangular BC with this package. But beware, it has trouble with corners (but I believe that can be fixed) and small numerical errors can occur close to the boundaries. -- James Gilmore Graduate Student Department of Physics Yale University New Haven, CT 06520 USA "Nasser Abbasi" <nma at 12000.org> wrote in message news:dduroq$oih$1 at smc.vnet.net... > "James Gilmore" <james.gilmore at yale.edu> wrote in message > news:dds9co$91c$1 at smc.vnet.net... > >> This is a classic mathematical physics BVP. You should approach this >> problem >> in Mathematica, as you would by hand: use separation of variables, >> and then >> a fourier expansion to satisfy the boundary conditions. > > Not if you want to use a numerical solvers such as NDSolve. That is > the whole idea of using NDSolve. > > I know how to solve these by hand, and also by direct numerical > approach, I've solved my of these before and more advanced ones when I > took some courses at the Math dept at UC Berkeley one year ago, I was > just playing around to see if NDSolve can solve BVP and get the same > plots I got when I solved this problem by hand using sepration of > variables. > >> There are many books >> that explain how to do this. > > Yes, and my home library contains many fine books on PDE's. I like the > Satnley Farlow book, and Mary Boas has excellent chapter on the > subject, but a bit short on detailes. Also Richard Haberman applied > PDE's is nice, and if you want to see a nice new book with the cover > showing solutions of PDE's plots which I am sure was made using > Mathematica check Charles MacCluer's BVP and fourier expansions Dover > book, but it does not contain any Mathematica code. Another book which > uses a CAS system to solve PDE's is by David Betounes called PDE's for > computational science, lots of examples and plots. > > Is there a short list somewhere which makes it clear what kind/class > of PDE's Mathematica can solve and not solve directly using NDSolve or > even DSolve? And why is it that NDSolve can solve an initial value PDE > and not BVP? I wonder if NDSolve will be able to solve a BVP PDE in > next version? > > >> >> "Nasser Abbasi" <nma at 12000.org> wrote in message >> news:ddpt58$orc$1 at smc.vnet.net... >>> >>> hi; >>> >>> just for fun, I am trying to solve a steady state heat equation >>> i.e. >>> laplace equation, for a rectangular plate. >>> >>> So, I have 4 boundary conditions, one for each side of the plate. >>> >>> But when I do that, NDSolve says that it is designed to solve >>> initial >>> conditions problems only? is this really the case? May be I am not >>> defining the B.C. correctly for Mathematica? >>> >>> The code is below, also I've posted it on my web page with the full >>> error message. >>> >>> http://12000.org/my_notes/mma_matlab_control/e61/HTML/e61.htm >>> >>> I find the error strange, saying that NDSolve can only solve IC >>> PDE, >>> because I solved 1-D heat equation using IC and BC earlier with no >>> problem, see this >>> >>> http://12000.org/my_notes/mma_matlab_control/e57/HTML/e57.htm >>> >>> So, I have a feeling that NDSolve can do this, I must be just doing >>> something not right. >>> >>> >>> Remove["Global`*"]; >>> h = 30; w = 10; temp = 100; >>> eq = D[T[x, y], x, x] + D[T[x, y], y, y] == 0; >>> bc = {T[0, y] == 0, T[w, y] == 0, T[x, 0] == temp,T[x, h] == 0}; >>> sol = NDSolve[{eq, bc}, T[x, y], {x, 0, w}, {y, 0, h}] >>> >>> >>> "Boundary values may only be specified for one independent >>> variable. Initial values may only be specified at one value of the >>> other independent variable." >>> >>> Nasser >>> >>> >>> >>> >>> >>> >>> >> >> >> > >