QMG 2.0.2, March 16, 2000

This document describes patch 2 to QMG 2.0. You can download the entire patched version. The installation procedure is the same as the QMG 2.0 installation procedure. Important note. Patch 2 is suitable only for computers that use IEEE standard arithmetic. Patch 2 has been tested on the following platforms: Pentium III/Windows NT, Pentium II/Linux, UltraSparc/Solaris, and RS6000/AIX.

Note: Patch 2 uses modified excerpts of the "doubledouble" arithmetic package written and copyrighted by Keith Briggs. It is based on ideas developed by Keith and others noted in his source files, including W. Kahan. Keith has permitted it to be distributed under the same license that covers QMG 2.0. "Doubledouble" arithmetic simulates 106-bit arithmetic using two IEEE double-precision numbers. It will works only on computers that follow the IEEE standard. For more information, see the official home page of doubledouble. QMG invokes doubledouble arithmetic for arithmetic with curved patches in the case that it detects a degeneracy with the patch.

The standard distribution of doubledouble is covered by the Gnu Public License. It is recommended that you obtain the standard distribution if you plan to use double-double arithmetic in another project since the standard distribution is more functional and may have more bug-fixes. If you plan to use the doubledouble subset of QMG in a separate project, there are additional license terms that apply; see the new version of copyright shipped with QMG.

See the source files for more information about the background of the doubledouble package.

If you already have downloaded QMG 2.0, then you can make the patches yourself following these instructions. First follow all the instructions for Patch 1. Then follow these instructions.

  1. QMG 2.0 and QMG 2.0.1 both have robustness problems when handling curved geometries. It is hoped that Patch 2 will solve these problems. Patch 2 consists of new versions of
    1. qpatchmath.cpp,
    2. qpatchmath.h,
    3. commonob_defs,
    4. commonob_targets,
    5. copyright, and
    6. copyright.html,
    as well as the following new source files
    1. doubledouble2.h,
    2. inline2.h,
    3. doubledouble2.cpp,
    4. qrfacdd.cpp, and
    5. doubledouble_info.txt.
    Download the above files. Save copyright in QMGROOT and copyright.html in QMGROOT/doc. The remaining files should all be saved in directory QMGROOT/src/common/. Next, make the following changes to other files.
  2. Change QMGROOT/build/unixtcl/custom, line 17, and QMGROOT/build/matlabtcl/custom, line 47, which are both currently blank to the following comment:
    #   If you are using a Pentium or compatible processor, add -Dx86 to ADDITIONAL_DEFINES.
    Note that this instruction may or may not apply to you. If it applies, then you should update custom following this instruction.
  3. Download the new versions of
    1. QMGROOT/build/windowstcl/custom,
    2. QMGROOT/build/windowstcl/makefile,
    3. QMGROOT/build/windowsmatlab/custom,
    4. QMGROOT/build/windowmatlab/makefile.
    These files have all been modified so that the default compiler is now Visual Studio 6.0 SP3 (instead of 5.0).
  4. Replace the string "QMG 2.0" or "QMG 2.0.1" in QMGROOT/tcl/qmg_interactive_init.tcl (occurring in lines 26, 38, and 50) with "QMG 2.0.2".
  5. Replace the string "QMG 2.0" or "QMG 2.0.1" in line 44 of QMGROOT/ex/startup.m with "QMG 2.0.2".
  6. Replace the string "QMG 2.0" or "QMG 2.0.1" in line 548 of QMGROOT/src/meshgen/meshgen.cpp with "QMG 2.0.2".
  7. Finally, delete all ".o" or ".obj" files, and remake QMG following the installation instructions.