Diagonalized Upwind Navier Stokes Code

Frequently Asked Questions

1. Where can I get more information about the solution procedures used with the DUNS code?

Unfortunately, there is not much more documentation available other than what is currently provided in the tutorial and various text files included with the download. If you need a better background in the schemes that are used in the DUNS code, probably the best place for information is my thesis and the thesis of a colleague. They can be obtained through the UMI web service at:


My thesis is:

Author: Schwer, Douglas Alan
Title: Numerical Study of Unsteadiness in Non-Reacting and Reacting Mixing Layers
School: Penn State University
Order Number: 9938057

Phil Buelow's is:

Author: Buelow, Philip
Title: Convergence Enhancement of Euler and Navier-Stokes Algorithm
School: Penn State University
Order Number: 9612702

2. Will DUNS work on my Unix System?

The DUNS for the most part uses standard tools that are available on all of the different variants of Unix, so porting from one system to another system is generally not a problem. Indeed, a collection of different Makefile parameters is given for several different systems in the makesystem directory. Check and see if your system is there. Some of the Makesystem files are rather old, so may need some updating, but they should come close to working.

The biggest problem could be getting a good FORTRAN compiler. The GNU f77 compiler (g77) will compile the DUNS code fine, but has some problems with running different cases (look at the Compatibility Page for details. Intel has a nice FORTRAN compiler that is free for non-commercial uses and seems to work well with the DUNS code. Code generated by f2c (and using fort77 as a front-end) also works well, although f2c does not seem to be available for the recent Linux Redhat operating systems (I do not know about the other flavors of Linux). I currently have Linux RH9 and am using an older version of f2c and fort77 and also the Intel compilers for my computations, both of which have worked well.

Another sticking point is the preprocessor. A C-preprocessor is used to preprocess all of the files (both FORTRAN77 and C files) to include code only relevant to the problem you are solving. The behavior of the C-preprocessor in the newer versions of gcc has changed in terms of how it handles white-space recently. The preprocessor now removes whitespace seemingly indiscriminantly (although I'm sure there is a reason for this) as it preprocesses the FORTRAN files. Because FORTRAN77 requires a six-character margin to the left of the command, this removal of white-space can cause problems when subsequently compiling the code. This can be overcome by using the -tranditional-cpp flag for the C-preprocessor. It would be nice to change this preprocessing to use the m4 preprocessor instead, as this would be more stable, and more consistent between systems, but that would be a major effort and so probably won't be done for a while.

3. Will DUNS work on Windows?

Now that is a more interesting question. The DUNS code has been developed on Unix systems using Unix tools, so it doesn't necessarily fit into the Windows world very well. With that being sad, I have actually gotten it to work with Cygwin on a Windows platform, but it was not easy. The largest stumbing block was the file names. Using cygwin and windows, there is no differentiation between the distribution FORTRAN code (defined with *.F) and the preprocessed files required for compilation (the *.f files that are made with the dunssource command.) So I needed to change the ".F" distribution files to ".fpp" and the ".Inc" files to ".inc" files. The associated Makesystem must also be changed to incorporate definitions for preprocessing .fpp and .ipp files. Other small problems may be present, please let me know if you get this working, and I can update this frequently asked question.

4. Will DUNS work on MAC OS X?

I have never tried this, but it should work based on the GNU tools. You will need to generate a new Makesystem file for the MAC OS system, but the Makesystem_linux should provide a good template for this.

5. What types of problems can I solve with the DUNS code?

Here is a list of the abilities of the DUNS code:

  • uses structured multiblock grids (and overlapped grids to some extent)
  • it can do supersonic, subsonic, low subsonic steady compressible flows
  • it does have the ability to do incompressible (liquid) flows, however, this is not well tested and may not behave well
  • it can do unsteady flows using a dual time-stepping scheme with a implicit time-marching procedure
  • it can do gas-phase multiple-species
  • it can do gas-phase reacting flow
Here is what DUNS does not do:
  • does not do unstructured meshes.
  • does not work on parallel computers. There is some MPI code in there for doing course-grained parallelism of groups of blocks that overlap, but it is not supported. Use at your own risk!
  • The diagonalized solution procedure does not do well with highly viscous or plastic flows.

6. What do I do for grid generation with DUNS?

DUNS does not provide any grid generation. Sorry, you are on your own for this. I don't know of any freely available grid generators that can do very complex geometries, such as baffles or turbine blades, and the commercial ones tend to be expensive (if you are at a university, the university might provide access to a good grid generator). In spite of this, it is fairly easy to write small programs to generate grids for relatively simple geometries (I've done several burners, a simple RBCC-type geometry, nozzles, and backward facing step using simple FORTRAN or C programs to generate the grid). Initially we used grids generated with GridPro, so the connectivity information between the blocks needed by the DUNS code is in the same form as GridPro. This should be documented in the tutorial.

7. What do I do for plotting with DUNS?

DUNS does not provide much plotting. A few programs are provided for 2d plotting, but other plotting packages are required for 3d plots or doing high quality or printable plots. I personally use TECPLOT, however, it should be easy enough to write output appropriate for other plotting packages.

This page will be updated as I get a better feel for problems people have with the DUNS code.