Numerically Approximating the Wave Equation? 260
ObsessiveMathsFreak writes "I'm an applied mathematician who has recently needed to obtain good numerical approximations to the classic second-order wave equation, preferably in three space dimensions. A lot of googling has not revealed much on what I had assumed would be a well-studied problem. Most of the standard numerical methods, finite difference/finite element methods, don't seem to work very well in the case of variable wave speed at different points in the domain, which is exactly the case that I need. Are any in this community working on numerically solving wave equation problems? What numerical methods do you use, and which programs do you find best suited to the task? How do you deal with stability issues, boundary/initial values, and other pitfalls? Are there different methods for electromagnetic wave problems? Finally, when the numbers have all been crunched, how do you visualize your hard-earned data?"
Just reverse the polarity! (Score:4, Funny)
Re: (Score:2)
Re: (Score:2, Offtopic)
Best way to get a quick answer. (Score:4, Funny)
You could try putting your question online as an Ask Slashdot post. Use the Submit Story [slashdot.org] link on the left. Good luck finding your answer!
Re:Best way to get a quick answer. (Score:5, Funny)
No use, I can already foresee the answers you will get!
* In Soviet Russia, Wave Equations approximate YOU!
* 42
* Re: 42 - But... does it run Linux?
* I've got Dyscalculia you insensitive clod!
* Frost Pist
etc.
you forgot: (Score:2, Interesting)
Re:you forgot: (Score:4, Funny)
Re:Best way to get a quick answer. (Score:5, Informative)
I don't have any good references to hand, but for the plain old wave equation (time inhomogeneous and homogeneous) you could try looking at discontinuous Galerkin methods. Depending on the inhomogeneity in your coefficients, you might be able to use a Godunov scheme. Your local friendly applied mathematics professor specialising in numerical methods for PDEs should be able to tell you more.
If you're interested in contemporary research, there are plenty of conferences on this kind of stuff. Here's a recent one [waves2007.org].
Re:Best way to get a quick answer. (Score:4, Funny)
"Godunov is good enough."
Sorry, couldn't resist.
Seriously though, if you have to ask all these questions what you really need is some mentoring. If you aren't at a university, go to one and find either the applied math guys or the engineers. Or maybe just call up the people who make fluent...
Re: (Score:3, Funny)
If only there were a numerical equation to approximate the probability of this occurring, preferably in three space dimensions.
Re: (Score:3, Funny)
p=1
Layne
What's wrong with FE/FD? (Score:4, Interesting)
More information is needed (Score:5, Informative)
The question you have posed is so unspecific, it would be impossible to fully answer it without writing a text book. There are many good ones, for example, Waves in Layered Media by L. M. Brekhovskikh.
Re: (Score:3, Funny)
42
Re: (Score:2)
usenet (Score:4, Informative)
Re: (Score:2, Informative)
Re: (Score:2, Informative)
(Google cache [72.14.205.104] of Mr Johnson's cv)
Re: (Score:2)
Perhaps here's an answer (Score:2)
Re: (Score:3, Insightful)
Mathematician here, though this isn't my field. Slashdot isn't a very good place to ask this kind of question, since there aren't many mathematicians on here, and it's a very broad topic. I suggest Usenet -- specificially the sci.math newsgroup. I know at least 50 mathematicians who post regularly, and a lot more lurk (and occassionally answer questions).
I think that is probably an inaccurate statement. I am guessing there are more than 50 mathematicians that read Slashdot. Problem is not quantity, it is sifting through the jokes and the offtopic posts, and the helpful suggestions to look elsewhere :) before you get to the guy that actually knows what you are asking and might have an idea of what you want.
Let's try to be helpful (Score:3, Interesting)
Point of Order (Score:3, Insightful)
Point of order: Is it still OK to make fun of the editors for letting this question through?
I move that the Chair recognize kdawson is an idiot.
better yet, have more questions like this (Score:5, Funny)
Re: (Score:2)
Re: (Score:3, Funny)
Re:Let's try to be helpful (Score:4, Funny)
Such as:
- Numerically solving the wave functions describing the taut jiggle of Natalie Portman's bum.
- Mapping out the three dimensional wave constructs of that odd humming in your basement.
- Discovering the finite elements of romantic pursuit and the finite differences between romantic pursuit and stalking.
You know, when in Rome...
Re: (Score:2)
-PROFIT!
Re: (Score:2)
Don't seem to work very well? (Score:4, Informative)
In what ways does it not work well for you? It doesn't converge, takes too long to converge? What is the problem?
A numerical algorithm would give you the assumptions that guarantee convergence and you should be able to figure out under what conditions it would "not work well". Just look up the assumptions and see what assumption your variable wave speed violates to not give you convergence.
Re: (Score:2)
Standard level centered differencing for the wave equation has instabilities, related to the CFL condition [wikipedia.org]. Unless c*dt/dx is exactly equal to one. Greater than one and the solution is unstable. Less than one and the solution invariably develops about a 5% error per time unit. Variable wave speed means I can't get a stable mesh without drastically customizing it based on the specifics of every sp
Information is scarce (Score:3, Informative)
I can tell you that the internet is lacking for stuff even as simple as that, and it's hard to find a good textbook. You might have better luck with a text book, since your need is more focused than the course I took.
Re:Information is scarce (Score:5, Informative)
And if the problem is significantly complex or you need more general solution, try a Greens function.
Re: (Score:2)
Re: (Score:3, Funny)
Finite element (Score:5, Informative)
Many many options (Score:5, Informative)
If your problem domain is not too many wavelengths big (i.e. near-field), you want a FDTD solver. There are many commercial packages available but most are expensive (just google for FDTD). FDTD is quite simple in concept but there are various details to get right to make a general purpose solver (e.g. boundary conditions). There are a number of hardware-based solvers on the market utilising GPUs for electromagnetics calculations. If you only need a single-frequency (eigenmode) solution, then Finite Element Method might be for you (e.g. see http://people.web.psi.ch/geus/pyfemax/ [web.psi.ch]). If you have extreme aspect ratios you need to model (i.e. interaction between widely spaced components), then the Boundary Element Method might suit (but it's harder to understand and implement).
If you're rolling your own solution, Python makes an excellent "glue language" to tie solvers together and visualise results with VTK (www.vtk.org) and add configuration GUIs.
Re:Many many options (Score:5, Informative)
Re: (Score:2)
Be much more specific... (Score:5, Interesting)
What does the domain look like (regular/rectangular and you may be able to use spectral methods)? In irregular domains, multigrid methods seem to converge most quickly for elliptic equations, but again, that depends on their exact form.
You don't say what goes wrong with finite difference codes... For pure Adams-Bashforth schemes often give extremely good numerical stability. You talk about variable wave speeds, but the Mathworld equation you link to doesn't cover that. In many cases you can use multiple-scales/WKB approaches, but that depends on how the wave speed varies (relative to the wavelength).
Finally: there are many things for which Googling sucks. This is one. For an proper overview, try a proper textbook, like "Waves in Layered Media", mentioned above, or "Modern Methods in Analytical Acoustics" (Crighton, Dowling et al).
To Elaborate on the Submission (Score:5, Informative)
I work on sonar/seismic/radar inversion problems. Essentially the problem of mapping terrain or subterrain by measuring scattered sound or radio signals, e.g. with synthetic aperture radar [wikipedia.org]. One thing I seriously lack at the moment is a good wave simulation that I can simply play around with to get a feel for both wave mechanics itself and for the equations and techniques of the field.
Analytical, asymptotic and ray tracing methods to approximate the wave equation are all very well, but at some point I feel I need to see a full solution, or a good approximation to one. I also need a method of simulating emitted sonar and radar pulses, their interaction with "obstacles" or features they encounter, and the returned or scattered signals from this interaction. I need a way of doing this with highly irregular scattering obstacles, both in terms of geometry and wave speed.
What I would most like to get is a model of wave propagation in a simulated 3D domain with highly irregular boundaries and speeds, something that would defy most analytical approaches. My goal is to try and simulate actual subterranean features via fractals and other techniques, and use the numerical wave equation simulation to get a good simulation of what real life returned signals would look like. I need a good simulation because, as you would expect, the inversion algorithms that map out the terrain from the returned signals, can be very sensitive to variations in the signals they receive.
I'll be working in the unsteady case as I have reservations about transforming to the Helmholtz equation, not least of which is the necessity of taking the fourier transform of the source signal. I'm trying to get as exact a solution as possible.
The ones I have tried suffer from the problems related to the CFL condition [wikipedia.org]. To sum it up -if c*dt/dx is not exactly equal to one, problems arise. Greater than one and the method is unstable(horribleness). Equal to one and things are peachy. Unfortunately, less than one and the method, though stable, seems to suffer from either a numerical or some other more subtle type of instability. I'm not a numerical analysit, nor do I have time to probe further. This rules out these methods as c will be variable in any practical problem I use the code on. I'm also worried about other types of potential pitfalls; caustics, shocks, infinities, etc.
Which is exactly why I don't want to use those methods, or any method that requires me to nurse or otherwise "prep" the method before use. I intend to throw multiple simulated terrains at the method and I'd like it to perform well across all ranges. I was hoping that in this day and age such a solution existed, but I'm aware I may be asking for the impossible.
I posted the question because I was tired of unsuccessfully Googling and unwilling to waste more time playing lucky dip with tedious textbook monographs. The reason I've posted this question on Slashdot is because the comments on many a science story suggest that a lot of professional scientists do post comments here. I'm holding out that the question may catch the eye of a meteorologist or radio modeling specialist who has worked on such a problem, and who has precisely the right technique, program and visualization method I'm looking for. Here's hoping.
There's been a lot of good suggestions so
How complicated is the problem? (Score:4, Interesting)
Re: (Score:2)
I was going to suggest MATLAB, too. I used it in Diff. Eq. in college whenever we needed to get numerical answers. It's too bad I've forgotten nearly everything and I can't offer any help past that.
wikipedia (Score:2, Insightful)
Finite Element Methods - CLAWPACK (Score:2, Informative)
Hm, a PDE. (Score:3, Informative)
When it comes to display, the programs I've written always dumped the formated output to a text file. I then used gnuplot (http://www.gnuplot.info/) to view the data of interest. It can also dump the graph to a ps for inclusion in a paper is desired.
Hope that was helpful.
Re: (Score:2)
visualisation options in Matlab are quite extensive as well.
Re: (Score:2)
But, I didn't exactly say to use it/them, merely to investigate what methods are used so the OP could use it/them in his/her own program. After all, Maple/etc do have some serious limitations with speed/memory/etc. And at times, these limita
Wave codes (Score:4, Interesting)
I won't be able to even start explaining this stuff in this post, but my code uses finite elements for the radial direction and Fourier decompositions for the two periodic directions of a fusion device. These numerical methods work well. I also know finite difference codes which work well. So, I think you should look a bit harder, because FE or FD methods usually do the trick, even for "variable wave speed at different points in the domain"... Regarding the boundary conditions, well, you'd better be very careful, because they will usually completely determine the solution. Again, it is my experience that Finite elements are well adapted to this task but you'll have to do some research.
Finally, for the vizualisation, matplotlib [sourceforge.net] and vtk [vtk.org] work for me.
First, try to determine and explain more precisely what it is you want to do: "to obtain good numerical approximations to the classic second-order wave equation, preferably in three space dimensions" sounds a but vague. Pick up the right textbooks, scientific journals, learn, exchange with the community. I know my post sounds a bit patronizing but this is science, and this kind of effort takes dedication, time and patience. I think Slashdot and Google are hardly the right places to start...
Re: (Score:2)
I gather he's doing passive radar/sonar on variable terrain with variable weather.
Here is my wave model: (Score:4, Interesting)
It is a Java applet. Note the low dispersion. Try clicking on it!
In order to make this, I avoided the standard textbook methods.
They can give good waves, but at a high cost in computation and memory.
It is not standard finite differencing, since those methods introduce dispersion
and similar errors to an unnecessary degree. But it IS a finite differencing method,
and I have done variants of it with variable speed and in 3 dimensions.
Here is one with variable speed:
http://kim.oyhus.no/seismic.mpg [oyhus.no]
One of the tricks I use is to use a hexagonal grid.
Kim Øyhus, M.Sc. Physics
Re: (Score:2)
The way research works is that you provide technical details of how things are implemented for others to judge/validate/reproduce your results. A pretty picture, no matter how appealing, a research result doesn't make.
I'm actually interested in this, so I'd be happy to have a look at a research paper backing your Java appl
need i say more (Score:2)
What numerical methods do you use, and which programs do you find best suited to the task?
Matlab.
How do you deal with stability issues, boundary/initial values, and other pitfalls?
Matlab.
Are there different methods for electromagnetic wave problems?
There's probably a toolbox that can model your problem well and at least two more that can do it poorly, assuming that you can get somewhere by throwing enough fourier transforms and PDEs into the mix. I'd probably start with the PDE toolbox and end up writing a few mex extensions in C before the day was over.
Finally, when the numbers have all been crunched, how do you visualize your hard-earned data?
Matlab or, if your results are in any way amenable to hammering with neural networks or other data mining techniques, Weka.
Visualize with /dev/audio!! (Score:2, Interesting)
Re: (Score:2)
Re: (Score:2)
I think he meant "the stringed instrument which burns slightly longer than a violin". But I can't be certain.
Re: (Score:2)
Try J. Comput. Phys. and J. Sci. Comput. (Score:5, Informative)
This isn't my area, but my Ph.D. is in applied and computational math, and I've spent a great deal of time solving first-order hyperbolic problems where characteristics cross. (In my context, level set methods where the zero contours can split and/or merge.)
For a hyperbolic problem like this, you'll want to be careful. Since the waves have variable propagation speeds, there's a possibility for shock formation. (characteristics can cross) Think of Burger's equation as a nice, tangible first-order analog. In such a case, it will be important to choose a numerical method that satisfies some kind of entropy condition to handle the shock. Similar things have been encountered in level set methods, where you solve an equation of the form ft + V |grad(f)| = 0, where V is the variable speed of an interface that's represented as the zero contour of f.
Since second-order wave equations are so important in physics, you may want to check out the Journal of Computational Physics [sciencedirect.com]. You should probably also try the Journal of Scientific Computing [springerlink.com].
As for visualization, you'll probably want to check out the "industry standards" Matlab and Mathematica. You could plot the time evolution of level surfaces of your wave equation, for instance. As for other softare, I'd generally advise pulling together what you can find at netlib [netlib.org], although more cutting-edge stuff may require you to roll your own C/C++ or FORTRAN. But any of that stuff will be faster than running in Matlab or Mathematica, and it will take a whole lot less memory.
Best of luck, and have fun! :-) -- Paul
Re: (Score:2)
I'd suggest looking at PETSc, a C/C++ scientific computation toolkit. It follows a few modern programming paradigms (gah, I hate that word) which make it singularly pleasant to work with, yet has all the speed of the crap you get from netlib.
Netlib is great for low level algorithms written by experts, but is the pits for usability. For example, a matrix-vector multiply in BLAS is called DGEMV (not exactly obvious to beginners), a
preconditioning (Score:2)
As far as I know, when you have such kind of problem, you have to precondition your matrices. Google for preconditioning.
Kreiss ... (Score:2)
Brown, David L.; Henshaw, William D.; Kreiss, Heinz-Otto; Chesshire, Geoffrey
Affiliation: AA(Los Alamos National Laboratory, NM), AB(IBM Thomas J. Watson Research Center, Yorktown Heights, NY), AC(California, University, Los Angeles; Kungliga Tekniska Hogskolan, Stockholm, Sweden)
"The fundamental principles, implementation, and applications of CMPGRD are reviewed; CMPGRD is a software package developed by Brown et al. (1988) to generate two- and three-
XMDS, open source PDE modeling package might do it (Score:4, Informative)
Quote from the home page:
One word: (Score:2, Interesting)
http://www.xmds.org/ [xmds.org]
Umm... (Score:3, Interesting)
Boundary/Initial Values: You do what you have to, I guess. That's a lot more problem specific. If you haven't got the standard initial-time/bounded space situation, you can approximate an unbounded region. It's a lot simpler than you would think, but you need to solve it for your specific problem. Bounded-time is different, but you can then do FDM in the time domain.
Other pitfalls: Stiffness can point to a flaw in your reasoning. Scaling is worth a try. Otherwise, there are always methods to deal with your specific problem. Talk to your friendly neighborhood mathematician.
Finally, (Score:2)
Well I start off using my fingers, and if the problem is really complicated, I take off my shoes and socks and use my toes too.
Good job (Score:2)
Re: (Score:2)
That was also my first reaction, but you know, there are quite a few interesting replies. I am positively surprised. Of course there are quite a bunch of science geeks in the slashdot crowd (I'm one myself), not all readers here are "IT monkeys". Those science geeks are not very vocal on the regular IT topics, but they may speak up when their particular area of expertise plays a role in the ongoing discussion. Such expert comments (if they are genuine) are always very interesting.
Could be that the submitt
Journal of Computational Physics (Score:2)
General Finite Element Method (Score:2)
Ask Slashdot (Score:2)
My brain exploded all over my monitor after reading that question. Since this is usually the first place I go for legal advice, I ask you: how would you go about starting a personal injury suit against the guy who asked the question?
Thanks!
Ansoft HFSS (Score:2)
Hey, that's 6 questions! (Score:2)
But have you considered particle modeling? Fill your experiment space with a large number of points representing your medium, and model each one only in how it reacts to its environment and neighbors. Then let it run, and watch the results. It is not determinstic, but you can often get a statistically close simulation of the real thing.
Use OpenFOAM (Score:2, Interesting)
Visualization tool (Score:2)
Sad (Score:2)
try physicsforums (Score:2)
Try using a commercial FDTD solver with dieletrics (Score:2, Informative)
Re:Try using a commercial FDTD solver with dieletr (Score:2)
Discontinuous Galerkin Methods (Score:2, Interesting)
DG Methods take a little time to implement, but their accuracy and speed is well worth the effort. If you'd like some precooked software, check out http://git.tiker.net/?p=hedge.git;a=summary [tiker.net]. (but be aware that t
Action Minimizer (Score:2)
Exploration Geophysics (Score:3, Informative)
Search for "wave equation" or "finite difference" here [seg.org] at the search site of the Society of Exploration Geophysics. [seg.org]
Try FVM? (Score:2)
The wave equation is a hyperbolic problem - I'd probably use something like Finite Volume - it's well-suited to this type of problem. People have suggested multigrid, etc - that probably won't work well.
Variable wave speeds sounds like you might end up with some shocks, depending on that velocity field. That's where FVM will really shine. I really like Randall Leveque's "Finite Volume Methods of Hyperbolic Problems". That has
Meshless methods (Score:2, Informative)
As a matter of fact, I *am* an applied mathematician, and I do work in this field.
I am just a beginner, though. Here are is a solution of the shallow water wave equations in a circular tub:
http://platinum.linux.pl/~jordi/movies/sw-solution .ogg [linux.pl]
(Ogg Theora. If you can't play it, get VLC or any other free software player.)
The method I used is a very flexible meshless method that is a relatively modern alternative to finite element methods. Btw, finite volumes are much more popular for fluid d
Re: (Score:2, Interesting)
Re: (Score:2)
numerical wave equation "three dimensional" [google.com]
Feynman invented Monte Carlo? Me don't think so (Score:2, Informative)
see: Wikipedia [wikipedia.org]
Re: (Score:2, Funny)
Re: (Score:3, Funny)
Re: (Score:3, Informative)
Monte Carlo is useful when you have some finite input for a question (whose answer you can easily calculate given the input) and you need some kind of idea about what the output usually is: throw in random inputs until you think you have an idea. Then prove it.
This is different: he wants to know how to calculate the answer to his problem, because it's not easy. Making random guesses won't help. Grid methods will, but they
Re:People to contact who might know (Score:5, Funny)
regards,
Dr. Logan / Dr. Rammaha
Re: (Score:2, Insightful)
Sorry, but.... (Score:5, Insightful)
Re: (Score:2)
That reminds me, i'm trying to convert slashcode to lolcode and i need help.
Re: (Score:3, Insightful)
I think you're proven wrong by the posts that have been highly rated.
For many of us, hating MPAA/RIAA/M$ is just a hobby. We do actually have varied day jobs you know.
Re: (Score:2)
Re: (Score:2)
Even if that is how the OP meant it, there's a really high SNR on this thread, imho.
Re: (Score:3, Insightful)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Computing integrals did occur to me, in the context of using Green's functions. However, many of the Green's function integrals are naturally divergent and have to be massaged in some way in order to converge and I'd like to avoid that ap