Home

Georg Hetmanczyk

Project Admins:


Field of application

WDSolve is a generic tool for numerically solving hyperbolic partial differential equations (PDEs) by means of the Wave Digital (WD) method. Some explanations are in order:

  • PDEs are mathematical equations arising primarily in physics and engineering. They are a model of distinct aspects of reality and describe, for instance, fluid motion or propagation of electromagnetic waves. Solving PDEs means being able to understand and predict a system's behavior without actually building it.
  • Hyperbolic PDEs describe phenomena subject to finite propagation speed, adhering to the principle of action at proximity.
  • Solving PDEs is nontrivial and can most often only be done approximately, computer aided. This is referred to as numerical integration or numerical solution. The solution is approximated on a discrete grid in space-time.
  • There exist many numerical integration methods, one of which is the WD-method. A final WD algorithm is similar to an explicit finite difference scheme, which is typically more familiar to numerical analysts.
  • The WD method is typically difficult to apply and requires in-depth knowledge. In turn, it yields algorithms with superior and flexible stability properties.

Motivation for WDSolve

WDSolve is a by-product of the doctoral thesis which the author wrote at the Ruhr-University Bochum:
http://nbn-resolving.de/urn/resolver.pl?urn=urn:nbn:de:hbz:294-31582

It is driven by the idea that numerical integration with the WD method can be greatly simplified by using modular programming. This is due to the fact that WD algorithms are comprised of predefined building blocks. Furthermore, many aspects of the method can be formulated generically, i.e. independent of the PDE to be solved.

There exists a related tool with the name WDInt, which was developed at the University of Paderborn. WDInt is written in Matlab to solve ordinary differential equations (ODEs) primarily. WDSolve is written in C++ with the intention to solve PDEs primarily. WDInt was known to the author before he wrote the first line of code and has thus inspired him.

Features of WDSolve

Let's begin with what WDSolve can not do. Key difficulties of the WD method are

  • it requires knowledge of a coordinate transformation needed for concepts called multidimensional causality and passivity,
  • it needs the PDEs to be represented as an abstract electrical reference circuit, which is multidimensionally causal and passive.

WDSolve cannot help you with that. It takes the reference circuit as input. A comprehensive introduction to the above concepts is given in chapters 1 and 2 of the doctoral thesis linked above, and the references given therein. An automated generation of reference circuits from PDEs is subject to current research. Currently, a tool for this task is not known to the author.

WDSolve can be thought of as a black box solver. Simply put, the user tells WDSolve which PDE is to be solved (via a Circuit file) in what environment (via a Scene file), clicks on "Run", and WDSolve returns the numerical results, both graphically and as a file with numerical values. WDSolve features

  • automated generation of the WD algorithm from the Circuit file,
  • encapsulated resolution of nonlinearities,
  • ability to switch linear multistep (LMS) integration methods,
  • automated initialization of LMS methods,
  • problem-independent error estimation,
  • efficient exploitation of multicore CPUs via multithreading,
  • graphical output with hardware acceleration via DirectX,
  • data export to Matlab .m files.

WDSolve is a generic tool, i. e. it is not bound to a particular problem and can be used to solve a large variety of PDEs. By now, several students have worked with the author to create an archive of example projects, each of which is dedicated to solve a particular PDE in a particular setting. Covered physical problems include

  • electrodynamics (Maxwell equations),
  • fluid dynamics (Burgers equation, Euler equations, Navier-Stokes-equations),
  • neutron diffusion (Neutron Diffusion equations).

Typically, there are parts of a problem which cannot be solved generically. Therefore, the user can provide a DLL with pre-compiled code, which is embedded into the final algorithm. For programming the DLL, WDSolve provides a framework and helper functions.