Consolidated visit_writer source into src/visit_writer/.
authorW. Trevor King <wking@drexel.edu>
Tue, 14 Sep 2010 18:36:12 +0000 (14:36 -0400)
committerW. Trevor King <wking@drexel.edu>
Tue, 14 Sep 2010 18:36:12 +0000 (14:36 -0400)
src/diffusion_2d/diffusion_2d.c [moved from src/diffusion_2d/diffusion/diffusion_2d.c with 100% similarity]
src/diffusion_2d/source/visit_writer.c [deleted file]
src/diffusion_2d/source/visit_writer.h [deleted file]
src/diffusion_2d/source_2d.c [moved from src/diffusion_2d/source/source_2d.c with 100% similarity]
src/diffusion_2d/source_2d_main.c [moved from src/diffusion_2d/source/source_2d_main.c with 100% similarity]
src/diffusion_2d/visit_writer [new symlink]
src/mandelbrot_VTK/visit_writer [new symlink]
src/mandelbrot_VTK/visit_writer.c [deleted file]
src/mandelbrot_VTK/visit_writer.h [deleted file]
src/visit_writer/visit_writer.c [moved from src/diffusion_2d/diffusion/visit_writer.c with 100% similarity]
src/visit_writer/visit_writer.h [moved from src/diffusion_2d/diffusion/visit_writer.h with 100% similarity]

diff --git a/src/diffusion_2d/source/visit_writer.c b/src/diffusion_2d/source/visit_writer.c
deleted file mode 100644 (file)
index 23f6af8..0000000
+++ /dev/null
@@ -1,1061 +0,0 @@
-/*****************************************************************************
-*
-* Copyright (c) 2000 - 2007, The Regents of the University of California
-* Produced at the Lawrence Livermore National Laboratory
-* All rights reserved.
-*
-* This file is part of VisIt. For details, see http://www.llnl.gov/visit/. The
-* full copyright notice is contained in the file COPYRIGHT located at the root
-* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
-*
-* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-* modification, are permitted provided that the following conditions are met:
-*
-*  - Redistributions of  source code must  retain the above  copyright notice,
-*    this list of conditions and the disclaimer below.
-*  - Redistributions in binary form must reproduce the above copyright notice,
-*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-*    documentation and/or materials provided with the distribution.
-*  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-*    used to  endorse or  promote products derived from  this software without
-*    specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-* ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-* CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-* ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*
-*****************************************************************************/
-
-/*****************************************************************************
-*
-* Copyright (c) 2000 - 2007, The Regents of the University of California
-* Produced at the Lawrence Livermore National Laboratory
-* All rights reserved.
-*
-* This file is part of VisIt. For details, see http://www.llnl.gov/visit/. The
-* full copyright notice is contained in the file COPYRIGHT located at the root
-* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
-*
-* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-* modification, are permitted provided that the following conditions are met:
-*
-*  - Redistributions of  source code must  retain the above  copyright notice,
-*    this list of conditions and the disclaimer below.
-*  - Redistributions in binary form must reproduce the above copyright notice,
-*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-*    documentation and/or materials provided with the distribution.
-*  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-*    used to  endorse or  promote products derived from  this software without
-*    specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-* ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-* CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-* ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*
-*****************************************************************************/
-
-/* ************************************************************************* //
-//                             visit_writer.c                                //
-// ************************************************************************* */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "visit_writer.h"
-
-
-/*
- * Globals.
- */
-
-static FILE *fp = NULL;
-static int useBinary = 0;
-static int numInColumn = 0;
-
-
-/* ****************************************************************************
- *  Function: end_line
- *
- *  Purpose:
- *      If floats or ints have been written using the write_float or write_int
- *      functions, this will issue a newline (if necessary) so that a new
- *      heading can be placed.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void end_line(void)
-{
-    if (!useBinary)
-    {
-        char str2[8] = "\n";
-        fprintf(fp, str2);
-        numInColumn = 0;
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: open_file
- *
- *  Purpose:
- *      Opens a file for writing and assigns the handle to the global variable
- *      "fp".
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void open_file(const char *filename)
-{
-    char full_filename[1024];
-    if (strstr(filename, ".vtk") != NULL)
-    {
-        strcpy(full_filename, filename);
-    }
-    else
-    {
-        sprintf(full_filename, "%s.vtk", filename);
-    }
-
-    fp = fopen(full_filename, "w+");
-}
-
-
-/* ****************************************************************************
- *  Function: close_file
- *
- *  Purpose:
- *      Closes the file with handle "fp" (a global variable).
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void close_file(void)
-{
-    end_line();
-    fclose(fp);
-    fp = NULL;
-}
-
-
-/* ****************************************************************************
- *  Function: force_big_endian
- *
- *  Purpose:
- *      Determines if the machine is little-endian.  If so, then, for binary
- *      data, it will force the data to be big-endian.
- *
- *  Note:       This assumes that all inputs are 4 bytes long.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void force_big_endian(unsigned char *bytes)
-{
-    static int doneTest = 0;
-    static int shouldSwap = 0;
-    if (!doneTest)
-    {
-        int tmp1 = 1;
-        unsigned char *tmp2 = (unsigned char *) &tmp1;
-        if (*tmp2 != 0)
-            shouldSwap = 1;
-        doneTest = 1;
-    }
-
-    if (shouldSwap & useBinary)
-    {
-        unsigned char tmp = bytes[0];
-        bytes[0] = bytes[3];
-        bytes[3] = tmp;
-        tmp = bytes[1];
-        bytes[1] = bytes[2];
-        bytes[2] = tmp;
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: write_string
- *
- *  Purpose:
- *      Writes a character to the open file.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void write_string(const char *str)
-{
-    fprintf(fp, str);
-}
-
-
-/* ****************************************************************************
- *  Function: new_section
- *
- *  Purpose:
- *      Adds a new line, provided we didn't already just do so and we are
- *      writing an ASCII file.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void new_section(void)
-{
-    if (numInColumn != 0)
-        end_line();
-    numInColumn = 0;
-}
-
-
-/* ****************************************************************************
- *  Function: write_int
- *
- *  Purpose:
- *      Writes an integer to the currently open file.  This routine takes
- *      care of ASCII vs binary issues.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void write_int(int val)
-{
-    if (useBinary)
-    {
-        force_big_endian((unsigned char *) &val);
-        fwrite(&val, sizeof(int), 1, fp);
-    }
-    else
-    {
-        char str[128];
-        sprintf(str, "%d ", val);
-        fprintf(fp, str);
-        if (((numInColumn++) % 9) == 8)
-        {
-            char str2[8] = "\n";
-            fprintf(fp, str2);
-            numInColumn = 0;
-        }
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: write_float
- *
- *  Purpose:
- *      Writes an float to the currently open file.  This routine takes
- *      care of ASCII vs binary issues.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- *  Modifications:
- *  
- *    Hank Childs, Fri Apr 22 09:14:44 PDT 2005
- *    Make precision changes suggested by Jeff McAninch
- *
- * ************************************************************************* */
-
-static void write_float(float val)
-{
-    if (useBinary)
-    {
-        force_big_endian((unsigned char *) &val);
-        fwrite(&val, sizeof(float), 1, fp);
-    }
-    else
-    {
-        char str[128];
-        sprintf(str, "%20.12e ", val);
-        fprintf(fp, str);
-        if (((numInColumn++) % 9) == 8)
-        {
-            end_line();
-        }
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: write_header
- *
- *  Purpose:
- *      Writes the standard VTK header to the file.  This should be the first
- *      thing written to the file.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void write_header(void)
-{
-    fprintf(fp, "# vtk DataFile Version 2.0\n");
-    fprintf(fp, "Written using VisIt writer\n");
-    if (useBinary)
-        fprintf(fp, "BINARY\n");
-    else
-        fprintf(fp, "ASCII\n");
-}
-
-
-/* ****************************************************************************
- *  Function: write_variables
- *
- *  Purpose:
- *      Writes the variables to the file.  This can be a bit tricky.  The
- *      cell data must be written first, followed by the point data.  When
- *      writing the [point|cell] data, one variable must be declared the
- *      primary scalar and another the primary vector (provided scalars
- *      or vectors exist).  The rest of the arrays are added through the
- *      "field data" mechanism.  Field data should support groups of arrays 
- *      with different numbers of components (ie a scalar and a vector), but
- *      there is a failure with the VTK reader.  So the scalars are all written
- *      one group of field data and then the vectors as another.  If you don't
- *      write it this way, the vectors do not show up.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-void write_variables(int nvars, int *vardim, int *centering, 
-                     const char * const * varname, float **vars,
-                     int npts, int ncells)
-{
-    char str[1024];
-    int i, j, first_scalar, first_vector;
-    int num_scalars, num_vectors;
-    int num_field = 0;
-
-    new_section();
-    sprintf(str, "CELL_DATA %d\n", ncells);
-    write_string(str);
-
-    first_scalar = 0;
-    first_vector = 0;
-    num_scalars = 0;
-    num_vectors = 0;
-    /* The field data is where the non-primary scalars and vectors are 
-     * stored.  They must all be grouped together at the end of the point
-     * data.  So write out the primary scalars and vectors first.
-     */
-    for (i = 0 ; i < nvars ; i++)
-    {
-        if (centering[i] == 0)
-        {
-            int num_to_write = 0;
-            int should_write = 0;
-
-            if (vardim[i] == 1)
-            {
-                if (first_scalar == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "SCALARS %s float\n", varname[i]);
-                    write_string(str);
-                    write_string("LOOKUP_TABLE default\n");
-                    first_scalar = 1;
-                }
-                else 
-                    num_scalars++;
-            }
-            else if (vardim[i] == 3)
-            {
-                if (first_vector == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "VECTORS %s float\n", varname[i]);
-                    write_string(str);
-                    first_vector = 1;
-                }
-                else 
-                    num_vectors++;
-            }
-            else
-            {
-                printf("Only supported variable dimensions are 1 and 3.\n");
-                printf("Ignoring variable %s.\n", varname[i]);
-                continue;
-            }
-
-            if (should_write)
-            {
-                num_to_write = ncells*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_scalar = 0;
-    if (num_scalars > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_scalars);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] == 0)
-            {
-                if (vardim[i] == 1)
-                {
-                    if (first_scalar == 0)
-                    {
-                        first_scalar = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 1 %d float\n", varname[i], ncells);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = ncells*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_vector = 0;
-    if (num_vectors > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_vectors);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] == 0)
-            {
-                int num_to_write = 0;
-    
-                if (vardim[i] == 3)
-                {
-                    if (first_vector == 0)
-                    {
-                        first_vector = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 3 %d float\n", varname[i], ncells);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = ncells*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    new_section();
-    sprintf(str, "POINT_DATA %d\n", npts);
-    write_string(str);
-
-    first_scalar = 0;
-    first_vector = 0;
-    num_scalars = 0;
-    num_vectors = 0;
-    /* The field data is where the non-primary scalars and vectors are 
-     * stored.  They must all be grouped together at the end of the point
-     * data.  So write out the primary scalars and vectors first.
-     */
-    for (i = 0 ; i < nvars ; i++)
-    {
-        if (centering[i] != 0)
-        {
-            int num_to_write = 0;
-            int should_write = 0;
-
-            if (vardim[i] == 1)
-            {
-                if (first_scalar == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "SCALARS %s float\n", varname[i]);
-                    write_string(str);
-                    write_string("LOOKUP_TABLE default\n");
-                    first_scalar = 1;
-                }
-                else 
-                    num_scalars++;
-            }
-            else if (vardim[i] == 3)
-            {
-                if (first_vector == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "VECTORS %s float\n", varname[i]);
-                    write_string(str);
-                    first_vector = 1;
-                }
-                else 
-                    num_vectors++;
-            }
-            else
-            {
-                printf("Only supported variable dimensions are 1 and 3.\n");
-                printf("Ignoring variable %s.\n", varname[i]);
-                continue;
-            }
-
-            if (should_write)
-            {
-                num_to_write = npts*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_scalar = 0;
-    if (num_scalars > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_scalars);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] != 0)
-            {
-                if (vardim[i] == 1)
-                {
-                    if (first_scalar == 0)
-                    {
-                        first_scalar = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 1 %d float\n", varname[i], npts);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = npts*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_vector = 0;
-    if (num_vectors > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_vectors);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] != 0)
-            {
-                int num_to_write = 0;
-    
-                if (vardim[i] == 3)
-                {
-                    if (first_vector == 0)
-                    {
-                        first_vector = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 3 %d float\n", varname[i], npts);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = npts*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-}
-
-
-/* ****************************************************************************
-//  Function: write_point_mesh
-//
-//  Purpose:
-//      Writes out a point mesh.
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_point_mesh(const char *filename, int ub, int npts, float *pts,
-                      int nvars, int *vardim, const char * const *varnames,
-                      float **vars)
-{
-    int   i;
-    char  str[128];
-    int  *centering = NULL;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET UNSTRUCTURED_GRID\n");
-    sprintf(str, "POINTS %d float\n", npts);
-    write_string(str);
-    for (i = 0 ; i < 3*npts ; i++)
-    {
-        write_float(pts[i]);
-    }
-
-    new_section();
-    sprintf(str, "CELLS %d %d\n", npts, 2*npts);
-    write_string(str);
-    for (i = 0 ; i < npts ; i++)
-    {
-        write_int(1);
-        write_int(i);
-        end_line();
-    }
-
-    new_section();
-    sprintf(str, "CELL_TYPES %d\n", npts);
-    write_string(str);
-    for (i = 0 ; i < npts ; i++)
-    {
-        write_int(VISIT_VERTEX);
-        end_line();
-    }
-
-    centering = (int *) malloc(nvars*sizeof(int));
-    for (i = 0 ; i < nvars ; i++)
-        centering[i] = 1;
-    write_variables(nvars, vardim, centering, varnames, vars, npts, npts);
-    free(centering);
-
-    close_file();
-}
-
-
-/* ****************************************************************************
- *  Function: num_points_for_cell
- *
- *  Purpose:
- *      Determines the number of points for the type of cell.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static int num_points_for_cell(int celltype)
-{
-    int npts = 0;
-    switch (celltype)
-    {
-       case VISIT_VERTEX:
-         npts = 1;
-         break;
-       case VISIT_LINE:
-         npts = 2;
-         break;
-       case VISIT_TRIANGLE:
-         npts = 3;
-         break;
-       case VISIT_QUAD:
-         npts = 4;
-         break;
-       case VISIT_TETRA:
-         npts = 4;
-         break;
-       case VISIT_HEXAHEDRON:
-         npts = 8;
-         break;
-       case VISIT_WEDGE:
-         npts = 6;
-         break;
-       case VISIT_PYRAMID:
-         npts = 5;
-         break;
-    }
-    return npts;
-}
-
-
-/* ****************************************************************************
-//  Function: write_unstructured_mesh
-//
-//  Purpose:
-//      Writes out a unstructured mesh.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      ncells     The number of cells.
-//      celltypes  The type of each cell.
-//      conn       The connectivity array.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_unstructured_mesh(const char *filename, int ub, int npts,
-                             float *pts, int ncells, int *celltypes, int *conn,
-                             int nvars, int *vardim, int *centering,
-                             const char * const *varnames, float **vars)
-{
-    int   i, j;
-    char  str[128];
-    int   conn_size = 0;
-    int  *curr_conn = conn;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET UNSTRUCTURED_GRID\n");
-    sprintf(str, "POINTS %d float\n", npts);
-    write_string(str);
-    for (i = 0 ; i < 3*npts ; i++)
-    {
-        write_float(pts[i]);
-    }
-
-    new_section();
-    for (i = 0 ; i < ncells ; i++)
-    {
-        int npts = num_points_for_cell(celltypes[i]);
-         
-        conn_size += npts+1;
-    }
-    sprintf(str, "CELLS %d %d\n", ncells, conn_size);
-    write_string(str);
-    for (i = 0 ; i < ncells ; i++)
-    {
-        int npts = num_points_for_cell(celltypes[i]);
-        write_int(npts);
-        for (j = 0 ; j < npts ; j++)
-            write_int(*curr_conn++);
-        end_line();
-    }
-
-    new_section();
-    sprintf(str, "CELL_TYPES %d\n", ncells);
-    write_string(str);
-    for (i = 0 ; i < ncells ; i++)
-    {
-        write_int(celltypes[i]);
-        end_line();
-    }
-
-    write_variables(nvars, vardim, centering, varnames, vars, npts, ncells);
-
-    close_file();
-}
-
-
-/* ****************************************************************************
-//  Function: write_rectilinear_mesh
-//
-//  Purpose:
-//      Writes out a rectilinear mesh.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      x          An array of size dims[0] that contains the x-coordinates.
-//      y          An array of size dims[1] that contains the x-coordinates.
-//      z          An array of size dims[2] that contains the x-coordinates.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-//  Modifications:
-//
-//    Hank Childs, Wed Apr  6 16:22:57 PDT 2005
-//    Fix problem with 2D structured meshes and assessing cell count.
-//
-// ***************************************************************************/
-
-void write_rectilinear_mesh(const char *filename, int ub, int *dims,
-                            float *x, float *y, float *z,
-                            int nvars, int *vardim, int *centering,
-                            const char * const *varnames, float **vars)
-{
-    int   i, j;
-    char  str[128];
-    int npts = dims[0]*dims[1]*dims[2];
-    int ncX = (dims[0] - 1 < 1 ? 1 : dims[0] - 1);
-    int ncY = (dims[1] - 1 < 1 ? 1 : dims[1] - 1);
-    int ncZ = (dims[2] - 1 < 1 ? 1 : dims[2] - 1);
-    int ncells = ncX*ncY*ncZ;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET RECTILINEAR_GRID\n");
-    sprintf(str, "DIMENSIONS %d %d %d\n", dims[0], dims[1], dims[2]);
-    write_string(str);
-    sprintf(str, "X_COORDINATES %d float\n", dims[0]);
-    write_string(str);
-    for (i = 0 ; i < dims[0] ; i++)
-        write_float(x[i]);
-    new_section();
-    sprintf(str, "Y_COORDINATES %d float\n", dims[1]);
-    write_string(str);
-    for (i = 0 ; i < dims[1] ; i++)
-        write_float(y[i]);
-    new_section();
-    sprintf(str, "Z_COORDINATES %d float\n", dims[2]);
-    write_string(str);
-    for (i = 0 ; i < dims[2] ; i++)
-        write_float(z[i]);
-
-    write_variables(nvars, vardim, centering, varnames, vars, npts, ncells);
-
-    close_file();
-}
-
-
-/* ****************************************************************************
-//  Function: write_regular_mesh
-//
-//  Purpose:
-//      Writes out a regular mesh.  A regular mesh is one where the data lies
-//      along regular intervals.  "Brick of bytes/floats",
-//      "Block of bytes/floats", and MRI data all are examples of data that
-//      lie on regular meshes.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_regular_mesh(const char *filename, int ub, int *dims,
-                        int nvars, int *vardim, int *centering,
-                        const char * const *varnames, float **vars)
-{
-    int  i;
-
-    float *x = (float *) malloc(sizeof(float)*dims[0]);
-    float *y = (float *) malloc(sizeof(float)*dims[1]);
-    float *z = (float *) malloc(sizeof(float)*dims[2]);
-
-    for (i = 0 ; i < dims[0] ; i++)
-        x[i] = (float) i;
-    for (i = 0 ; i < dims[1] ; i++)
-        y[i] = (float) i;
-    for (i = 0 ; i < dims[2] ; i++)
-        z[i] = (float) i;
-
-    write_rectilinear_mesh(filename, ub, dims, x, y, z, nvars, vardim,
-                           centering, varnames, vars);
-
-    free(x);
-    free(y);
-    free(z);
-}
-
-
-/* ****************************************************************************
-//  Function: write_curvilinear_mesh
-//
-//  Purpose:
-//      Writes out a curvilinear mesh.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nI, nJ, nK }, where nI is the
-//                 number of points in the logical I dimension, etc.
-//      pts        An array of size nI*nJ*nK*3.  The array should be layed
-//                 out as (pt(i=0,j=0,k=0), pt(i=1,j=0,k=0), ...
-//                 pt(i=nI-1,j=0,k=0), pt(i=0,j=1,k=0), ...).
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-//  Modifications:
-//
-//    Hank Childs, Wed Apr  6 16:22:57 PDT 2005
-//    Fix problem with 2D structured meshes and assessing cell count.
-//
-// ***************************************************************************/
-
-void write_curvilinear_mesh(const char *filename, int ub, int *dims,float *pts,
-                            int nvars, int *vardim, int *centering,
-                            const char * const *varnames, float **vars)
-{
-    int   i, j;
-    char  str[128];
-    int npts = dims[0]*dims[1]*dims[2];
-    int ncX = (dims[0] - 1 < 1 ? 1 : dims[0] - 1);
-    int ncY = (dims[1] - 1 < 1 ? 1 : dims[1] - 1);
-    int ncZ = (dims[2] - 1 < 1 ? 1 : dims[2] - 1);
-    int ncells = ncX*ncY*ncZ;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET STRUCTURED_GRID\n");
-    sprintf(str, "DIMENSIONS %d %d %d\n", dims[0], dims[1], dims[2]);
-    write_string(str);
-    sprintf(str, "POINTS %d float\n", npts);
-    write_string(str);
-    for (i = 0 ; i < 3*npts ; i++)
-    {
-        write_float(pts[i]);
-    }
-
-    write_variables(nvars, vardim, centering, varnames, vars, npts, ncells);
-
-    close_file();
-}
-
-
diff --git a/src/diffusion_2d/source/visit_writer.h b/src/diffusion_2d/source/visit_writer.h
deleted file mode 100644 (file)
index 1c77c09..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-/*****************************************************************************
-*
-* Copyright (c) 2000 - 2007, The Regents of the University of California
-* Produced at the Lawrence Livermore National Laboratory
-* All rights reserved.
-*
-* This file is part of VisIt. For details, see http://www.llnl.gov/visit/. The
-* full copyright notice is contained in the file COPYRIGHT located at the root
-* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
-*
-* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-* modification, are permitted provided that the following conditions are met:
-*
-*  - Redistributions of  source code must  retain the above  copyright notice,
-*    this list of conditions and the disclaimer below.
-*  - Redistributions in binary form must reproduce the above copyright notice,
-*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-*    documentation and/or materials provided with the distribution.
-*  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-*    used to  endorse or  promote products derived from  this software without
-*    specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-* ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-* CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-* ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*
-*****************************************************************************/
-
-/* ************************************************************************* //
-//                              visit_writer.h                               //
-// ************************************************************************* */
-
-/* 
-// This file contains function prototypes for writing out point meshes, 
-// unstructured meshes, rectilinear meshes, regular meshes, and 
-// structured/curvilinear meshes into files that can later be read by VisIt.
-//
-// Each routine assumes that the data being written is three-dimensional.
-// If the data is two-dimensional, you must still write out the data
-// as three-dimensional (ie pad arrays so that they are the correct size, etc).
-// However: the VisIt reader will determine that the data is truly two-
-// dimensional and visualize it as a two-dimensional dataset.
-//
-// All writers have an ASCII vs Binary decision.  The tradeoffs are the
-// standard ones: ASCII is human readable, but slow.  The
-// binary is much faster, but not human readable.  Note: the binary format
-// is portable, since it converts all data to be big-endian (this was a 
-// design decision for the format the visit_writer writes to -- the VTK
-// format).
-//
-// If you have multiple grids, you can write out one file for each grid.
-// There are potential pitfalls in doing this, where extra geometry and
-// interpolation problems appear along grid boundaries.  For additional
-// help with this issue, e-mail visit-help@llnl.gov
-*/
-
-
-/* ****************************************************************************
-//  Function: write_point_mesh
-//
-//  Purpose:
-//      Writes out a point mesh.
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_point_mesh(const char *filename, int useBinary, int npts, 
-                      float *pts, int nvars, int *vardim, 
-                      const char * const *varnames, float **vars);
-
-
-
-/* ****************************************************************************
-//  Function: write_unstructured_mesh
-//
-//  Purpose:
-//      Writes out a unstructured mesh.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      ncells     The number of cells.
-//      celltypes  The type of each cell.
-//      conn       The connectivity array.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//  Example:
-//      You have two triangles.  The first has points (0,0,0), (0,1,0), and
-//      (1,1,0).  The second has points (0,0,0), (1,1,0), and (1,0,0).
-//
-//      There are four unique points. 
-//
-//      float pts[12] = { 0,0,0, 0,1,0, 1,1,0, 1,0,0 };
-//
-//      It is important the points list contain only unique points,
-//      because VisIt is not able to correctly determine the connectivity of a 
-//      dataset when points are duplicated.
-//
-//      There are two triangles.
-//      int ncells = 2;
-//
-//      The cells are both triangles.
-//      int celltypes[2] = { VISIT_TRIANGLE, VISIT_TRIANGLE };
-//
-//      The connectivity contains indices into the points list.  The indexing
-//      assumes that each point has size 3 (x,y,z).
-//
-//      int conn[6] = { 0, 1, 2, 0, 2, 3 };
-//
-//  Hint:  
-//      When writing an unstructured mesh, it is easy to get the orientation
-//      of a cell backwards.  VisIt typically does okay with this, but it
-//      can cause problems.  To test if this is happening, bring up VisIt on
-//      your newly outputted dataset and make a Pseudocolor plot of 
-//      "mesh_quality/volume" for 3D datasets or "mesh_quality/area" for 2D 
-//      datasets.  If the cells are inside-out, the volumes or areas will be
-//      negative.
-//      
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-#define VISIT_VERTEX         1
-#define VISIT_LINE           3
-#define VISIT_TRIANGLE       5
-#define VISIT_QUAD           9
-#define VISIT_TETRA         10
-#define VISIT_HEXAHEDRON    12
-#define VISIT_WEDGE         13
-#define VISIT_PYRAMID       14
-
-void write_unstructured_mesh(const char *filename, int useBinary, int npts,
-                             float *pts, int ncells, int *celltypes, int *conn, 
-                             int nvars, int *vardim, int *centering,
-                             const char * const *varnames, float **vars);
-
-
-
-/* ****************************************************************************
-//  Function: write_regular_mesh
-//
-//  Purpose:
-//      Writes out a regular mesh.  A regular mesh is one where the data lies
-//      along regular intervals.  "Brick of bytes/floats", 
-//      "Block of bytes/floats", and MRI data all are examples of data that
-//      lie on regular meshes.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_regular_mesh(const char *filename, int useBinary, int *dims, 
-                        int nvars, int *vardim, int *centering,
-                        const char * const *varnames, float **vars);
-
-
-
-
-/* ****************************************************************************
-//  Function: write_rectilinear_mesh
-//
-//  Purpose:
-//      Writes out a rectilinear mesh.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      x          An array of size dims[0] that contains the x-coordinates.
-//      y          An array of size dims[1] that contains the x-coordinates.
-//      z          An array of size dims[2] that contains the x-coordinates.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//
-//  Example:
-//      You have a rectilinear mesh with x = { 0, 1, 2}, y = { 1, 1.5, 2, 3 },
-//      and z = { 2.5, 3.5 }.
-//
-//      Then dims = { 3, 4, 2 }.
-//      
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_rectilinear_mesh(const char *filename, int useBinary, 
-                            int *dims, float *x, float *y, float *z, 
-                            int nvars, int *vardim, int *centering, 
-                            const char * const *varnames, float **vars);
-
-
-
-
-/* ****************************************************************************
-//  Function: write_curvilinear_mesh
-//
-//  Purpose:
-//      Writes out a curvilinear mesh.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nI, nJ, nK }, where nI is the
-//                 number of points in the logical I dimension, etc.
-//      pts        An array of size nI*nJ*nK*3.  The array should be layed
-//                 out as (pt(i=0,j=0,k=0), pt(i=1,j=0,k=0), ...
-//                 pt(i=nI-1,j=0,k=0), pt(i=0,j=1,k=0), ...).
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_curvilinear_mesh(const char *filename, int useBinary, 
-                            int *dims, float *pts,
-                            int nvars, int *vardim, int *centering, 
-                            const char * const *varnames, float **vars);
-
-
-
diff --git a/src/diffusion_2d/visit_writer b/src/diffusion_2d/visit_writer
new file mode 120000 (symlink)
index 0000000..9b42483
--- /dev/null
@@ -0,0 +1 @@
+../visit_writer/
\ No newline at end of file
diff --git a/src/mandelbrot_VTK/visit_writer b/src/mandelbrot_VTK/visit_writer
new file mode 120000 (symlink)
index 0000000..9b42483
--- /dev/null
@@ -0,0 +1 @@
+../visit_writer/
\ No newline at end of file
diff --git a/src/mandelbrot_VTK/visit_writer.c b/src/mandelbrot_VTK/visit_writer.c
deleted file mode 100644 (file)
index 23f6af8..0000000
+++ /dev/null
@@ -1,1061 +0,0 @@
-/*****************************************************************************
-*
-* Copyright (c) 2000 - 2007, The Regents of the University of California
-* Produced at the Lawrence Livermore National Laboratory
-* All rights reserved.
-*
-* This file is part of VisIt. For details, see http://www.llnl.gov/visit/. The
-* full copyright notice is contained in the file COPYRIGHT located at the root
-* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
-*
-* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-* modification, are permitted provided that the following conditions are met:
-*
-*  - Redistributions of  source code must  retain the above  copyright notice,
-*    this list of conditions and the disclaimer below.
-*  - Redistributions in binary form must reproduce the above copyright notice,
-*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-*    documentation and/or materials provided with the distribution.
-*  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-*    used to  endorse or  promote products derived from  this software without
-*    specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-* ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-* CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-* ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*
-*****************************************************************************/
-
-/*****************************************************************************
-*
-* Copyright (c) 2000 - 2007, The Regents of the University of California
-* Produced at the Lawrence Livermore National Laboratory
-* All rights reserved.
-*
-* This file is part of VisIt. For details, see http://www.llnl.gov/visit/. The
-* full copyright notice is contained in the file COPYRIGHT located at the root
-* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
-*
-* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-* modification, are permitted provided that the following conditions are met:
-*
-*  - Redistributions of  source code must  retain the above  copyright notice,
-*    this list of conditions and the disclaimer below.
-*  - Redistributions in binary form must reproduce the above copyright notice,
-*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-*    documentation and/or materials provided with the distribution.
-*  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-*    used to  endorse or  promote products derived from  this software without
-*    specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-* ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-* CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-* ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*
-*****************************************************************************/
-
-/* ************************************************************************* //
-//                             visit_writer.c                                //
-// ************************************************************************* */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "visit_writer.h"
-
-
-/*
- * Globals.
- */
-
-static FILE *fp = NULL;
-static int useBinary = 0;
-static int numInColumn = 0;
-
-
-/* ****************************************************************************
- *  Function: end_line
- *
- *  Purpose:
- *      If floats or ints have been written using the write_float or write_int
- *      functions, this will issue a newline (if necessary) so that a new
- *      heading can be placed.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void end_line(void)
-{
-    if (!useBinary)
-    {
-        char str2[8] = "\n";
-        fprintf(fp, str2);
-        numInColumn = 0;
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: open_file
- *
- *  Purpose:
- *      Opens a file for writing and assigns the handle to the global variable
- *      "fp".
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void open_file(const char *filename)
-{
-    char full_filename[1024];
-    if (strstr(filename, ".vtk") != NULL)
-    {
-        strcpy(full_filename, filename);
-    }
-    else
-    {
-        sprintf(full_filename, "%s.vtk", filename);
-    }
-
-    fp = fopen(full_filename, "w+");
-}
-
-
-/* ****************************************************************************
- *  Function: close_file
- *
- *  Purpose:
- *      Closes the file with handle "fp" (a global variable).
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void close_file(void)
-{
-    end_line();
-    fclose(fp);
-    fp = NULL;
-}
-
-
-/* ****************************************************************************
- *  Function: force_big_endian
- *
- *  Purpose:
- *      Determines if the machine is little-endian.  If so, then, for binary
- *      data, it will force the data to be big-endian.
- *
- *  Note:       This assumes that all inputs are 4 bytes long.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void force_big_endian(unsigned char *bytes)
-{
-    static int doneTest = 0;
-    static int shouldSwap = 0;
-    if (!doneTest)
-    {
-        int tmp1 = 1;
-        unsigned char *tmp2 = (unsigned char *) &tmp1;
-        if (*tmp2 != 0)
-            shouldSwap = 1;
-        doneTest = 1;
-    }
-
-    if (shouldSwap & useBinary)
-    {
-        unsigned char tmp = bytes[0];
-        bytes[0] = bytes[3];
-        bytes[3] = tmp;
-        tmp = bytes[1];
-        bytes[1] = bytes[2];
-        bytes[2] = tmp;
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: write_string
- *
- *  Purpose:
- *      Writes a character to the open file.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void write_string(const char *str)
-{
-    fprintf(fp, str);
-}
-
-
-/* ****************************************************************************
- *  Function: new_section
- *
- *  Purpose:
- *      Adds a new line, provided we didn't already just do so and we are
- *      writing an ASCII file.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void new_section(void)
-{
-    if (numInColumn != 0)
-        end_line();
-    numInColumn = 0;
-}
-
-
-/* ****************************************************************************
- *  Function: write_int
- *
- *  Purpose:
- *      Writes an integer to the currently open file.  This routine takes
- *      care of ASCII vs binary issues.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void write_int(int val)
-{
-    if (useBinary)
-    {
-        force_big_endian((unsigned char *) &val);
-        fwrite(&val, sizeof(int), 1, fp);
-    }
-    else
-    {
-        char str[128];
-        sprintf(str, "%d ", val);
-        fprintf(fp, str);
-        if (((numInColumn++) % 9) == 8)
-        {
-            char str2[8] = "\n";
-            fprintf(fp, str2);
-            numInColumn = 0;
-        }
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: write_float
- *
- *  Purpose:
- *      Writes an float to the currently open file.  This routine takes
- *      care of ASCII vs binary issues.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- *  Modifications:
- *  
- *    Hank Childs, Fri Apr 22 09:14:44 PDT 2005
- *    Make precision changes suggested by Jeff McAninch
- *
- * ************************************************************************* */
-
-static void write_float(float val)
-{
-    if (useBinary)
-    {
-        force_big_endian((unsigned char *) &val);
-        fwrite(&val, sizeof(float), 1, fp);
-    }
-    else
-    {
-        char str[128];
-        sprintf(str, "%20.12e ", val);
-        fprintf(fp, str);
-        if (((numInColumn++) % 9) == 8)
-        {
-            end_line();
-        }
-    }
-}
-
-
-/* ****************************************************************************
- *  Function: write_header
- *
- *  Purpose:
- *      Writes the standard VTK header to the file.  This should be the first
- *      thing written to the file.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static void write_header(void)
-{
-    fprintf(fp, "# vtk DataFile Version 2.0\n");
-    fprintf(fp, "Written using VisIt writer\n");
-    if (useBinary)
-        fprintf(fp, "BINARY\n");
-    else
-        fprintf(fp, "ASCII\n");
-}
-
-
-/* ****************************************************************************
- *  Function: write_variables
- *
- *  Purpose:
- *      Writes the variables to the file.  This can be a bit tricky.  The
- *      cell data must be written first, followed by the point data.  When
- *      writing the [point|cell] data, one variable must be declared the
- *      primary scalar and another the primary vector (provided scalars
- *      or vectors exist).  The rest of the arrays are added through the
- *      "field data" mechanism.  Field data should support groups of arrays 
- *      with different numbers of components (ie a scalar and a vector), but
- *      there is a failure with the VTK reader.  So the scalars are all written
- *      one group of field data and then the vectors as another.  If you don't
- *      write it this way, the vectors do not show up.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-void write_variables(int nvars, int *vardim, int *centering, 
-                     const char * const * varname, float **vars,
-                     int npts, int ncells)
-{
-    char str[1024];
-    int i, j, first_scalar, first_vector;
-    int num_scalars, num_vectors;
-    int num_field = 0;
-
-    new_section();
-    sprintf(str, "CELL_DATA %d\n", ncells);
-    write_string(str);
-
-    first_scalar = 0;
-    first_vector = 0;
-    num_scalars = 0;
-    num_vectors = 0;
-    /* The field data is where the non-primary scalars and vectors are 
-     * stored.  They must all be grouped together at the end of the point
-     * data.  So write out the primary scalars and vectors first.
-     */
-    for (i = 0 ; i < nvars ; i++)
-    {
-        if (centering[i] == 0)
-        {
-            int num_to_write = 0;
-            int should_write = 0;
-
-            if (vardim[i] == 1)
-            {
-                if (first_scalar == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "SCALARS %s float\n", varname[i]);
-                    write_string(str);
-                    write_string("LOOKUP_TABLE default\n");
-                    first_scalar = 1;
-                }
-                else 
-                    num_scalars++;
-            }
-            else if (vardim[i] == 3)
-            {
-                if (first_vector == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "VECTORS %s float\n", varname[i]);
-                    write_string(str);
-                    first_vector = 1;
-                }
-                else 
-                    num_vectors++;
-            }
-            else
-            {
-                printf("Only supported variable dimensions are 1 and 3.\n");
-                printf("Ignoring variable %s.\n", varname[i]);
-                continue;
-            }
-
-            if (should_write)
-            {
-                num_to_write = ncells*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_scalar = 0;
-    if (num_scalars > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_scalars);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] == 0)
-            {
-                if (vardim[i] == 1)
-                {
-                    if (first_scalar == 0)
-                    {
-                        first_scalar = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 1 %d float\n", varname[i], ncells);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = ncells*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_vector = 0;
-    if (num_vectors > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_vectors);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] == 0)
-            {
-                int num_to_write = 0;
-    
-                if (vardim[i] == 3)
-                {
-                    if (first_vector == 0)
-                    {
-                        first_vector = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 3 %d float\n", varname[i], ncells);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = ncells*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    new_section();
-    sprintf(str, "POINT_DATA %d\n", npts);
-    write_string(str);
-
-    first_scalar = 0;
-    first_vector = 0;
-    num_scalars = 0;
-    num_vectors = 0;
-    /* The field data is where the non-primary scalars and vectors are 
-     * stored.  They must all be grouped together at the end of the point
-     * data.  So write out the primary scalars and vectors first.
-     */
-    for (i = 0 ; i < nvars ; i++)
-    {
-        if (centering[i] != 0)
-        {
-            int num_to_write = 0;
-            int should_write = 0;
-
-            if (vardim[i] == 1)
-            {
-                if (first_scalar == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "SCALARS %s float\n", varname[i]);
-                    write_string(str);
-                    write_string("LOOKUP_TABLE default\n");
-                    first_scalar = 1;
-                }
-                else 
-                    num_scalars++;
-            }
-            else if (vardim[i] == 3)
-            {
-                if (first_vector == 0)
-                {
-                    should_write = 1;
-                    sprintf(str, "VECTORS %s float\n", varname[i]);
-                    write_string(str);
-                    first_vector = 1;
-                }
-                else 
-                    num_vectors++;
-            }
-            else
-            {
-                printf("Only supported variable dimensions are 1 and 3.\n");
-                printf("Ignoring variable %s.\n", varname[i]);
-                continue;
-            }
-
-            if (should_write)
-            {
-                num_to_write = npts*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_scalar = 0;
-    if (num_scalars > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_scalars);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] != 0)
-            {
-                if (vardim[i] == 1)
-                {
-                    if (first_scalar == 0)
-                    {
-                        first_scalar = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 1 %d float\n", varname[i], npts);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = npts*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-
-    first_vector = 0;
-    if (num_vectors > 0)
-    {
-        sprintf(str, "FIELD FieldData %d\n", num_vectors);
-        write_string(str);
-        for (i = 0 ; i < nvars ; i++)
-        {
-            int should_write = 0;
-            if (centering[i] != 0)
-            {
-                int num_to_write = 0;
-    
-                if (vardim[i] == 3)
-                {
-                    if (first_vector == 0)
-                    {
-                        first_vector = 1;
-                    }
-                    else
-                    {
-                        should_write = 1;
-                        sprintf(str, "%s 3 %d float\n", varname[i], npts);
-                        write_string(str);
-                    }
-                }
-            }
-
-            if (should_write)
-            {
-                int num_to_write = npts*vardim[i];
-                for (j = 0 ; j < num_to_write ; j++)
-                {
-                    write_float(vars[i][j]);
-                }
-                end_line();
-            }
-        }
-    }
-}
-
-
-/* ****************************************************************************
-//  Function: write_point_mesh
-//
-//  Purpose:
-//      Writes out a point mesh.
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_point_mesh(const char *filename, int ub, int npts, float *pts,
-                      int nvars, int *vardim, const char * const *varnames,
-                      float **vars)
-{
-    int   i;
-    char  str[128];
-    int  *centering = NULL;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET UNSTRUCTURED_GRID\n");
-    sprintf(str, "POINTS %d float\n", npts);
-    write_string(str);
-    for (i = 0 ; i < 3*npts ; i++)
-    {
-        write_float(pts[i]);
-    }
-
-    new_section();
-    sprintf(str, "CELLS %d %d\n", npts, 2*npts);
-    write_string(str);
-    for (i = 0 ; i < npts ; i++)
-    {
-        write_int(1);
-        write_int(i);
-        end_line();
-    }
-
-    new_section();
-    sprintf(str, "CELL_TYPES %d\n", npts);
-    write_string(str);
-    for (i = 0 ; i < npts ; i++)
-    {
-        write_int(VISIT_VERTEX);
-        end_line();
-    }
-
-    centering = (int *) malloc(nvars*sizeof(int));
-    for (i = 0 ; i < nvars ; i++)
-        centering[i] = 1;
-    write_variables(nvars, vardim, centering, varnames, vars, npts, npts);
-    free(centering);
-
-    close_file();
-}
-
-
-/* ****************************************************************************
- *  Function: num_points_for_cell
- *
- *  Purpose:
- *      Determines the number of points for the type of cell.
- *
- *  Programmer: Hank Childs
- *  Creation:   September 3, 2004
- * 
- * ************************************************************************* */
-
-static int num_points_for_cell(int celltype)
-{
-    int npts = 0;
-    switch (celltype)
-    {
-       case VISIT_VERTEX:
-         npts = 1;
-         break;
-       case VISIT_LINE:
-         npts = 2;
-         break;
-       case VISIT_TRIANGLE:
-         npts = 3;
-         break;
-       case VISIT_QUAD:
-         npts = 4;
-         break;
-       case VISIT_TETRA:
-         npts = 4;
-         break;
-       case VISIT_HEXAHEDRON:
-         npts = 8;
-         break;
-       case VISIT_WEDGE:
-         npts = 6;
-         break;
-       case VISIT_PYRAMID:
-         npts = 5;
-         break;
-    }
-    return npts;
-}
-
-
-/* ****************************************************************************
-//  Function: write_unstructured_mesh
-//
-//  Purpose:
-//      Writes out a unstructured mesh.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      ncells     The number of cells.
-//      celltypes  The type of each cell.
-//      conn       The connectivity array.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_unstructured_mesh(const char *filename, int ub, int npts,
-                             float *pts, int ncells, int *celltypes, int *conn,
-                             int nvars, int *vardim, int *centering,
-                             const char * const *varnames, float **vars)
-{
-    int   i, j;
-    char  str[128];
-    int   conn_size = 0;
-    int  *curr_conn = conn;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET UNSTRUCTURED_GRID\n");
-    sprintf(str, "POINTS %d float\n", npts);
-    write_string(str);
-    for (i = 0 ; i < 3*npts ; i++)
-    {
-        write_float(pts[i]);
-    }
-
-    new_section();
-    for (i = 0 ; i < ncells ; i++)
-    {
-        int npts = num_points_for_cell(celltypes[i]);
-         
-        conn_size += npts+1;
-    }
-    sprintf(str, "CELLS %d %d\n", ncells, conn_size);
-    write_string(str);
-    for (i = 0 ; i < ncells ; i++)
-    {
-        int npts = num_points_for_cell(celltypes[i]);
-        write_int(npts);
-        for (j = 0 ; j < npts ; j++)
-            write_int(*curr_conn++);
-        end_line();
-    }
-
-    new_section();
-    sprintf(str, "CELL_TYPES %d\n", ncells);
-    write_string(str);
-    for (i = 0 ; i < ncells ; i++)
-    {
-        write_int(celltypes[i]);
-        end_line();
-    }
-
-    write_variables(nvars, vardim, centering, varnames, vars, npts, ncells);
-
-    close_file();
-}
-
-
-/* ****************************************************************************
-//  Function: write_rectilinear_mesh
-//
-//  Purpose:
-//      Writes out a rectilinear mesh.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      x          An array of size dims[0] that contains the x-coordinates.
-//      y          An array of size dims[1] that contains the x-coordinates.
-//      z          An array of size dims[2] that contains the x-coordinates.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-//  Modifications:
-//
-//    Hank Childs, Wed Apr  6 16:22:57 PDT 2005
-//    Fix problem with 2D structured meshes and assessing cell count.
-//
-// ***************************************************************************/
-
-void write_rectilinear_mesh(const char *filename, int ub, int *dims,
-                            float *x, float *y, float *z,
-                            int nvars, int *vardim, int *centering,
-                            const char * const *varnames, float **vars)
-{
-    int   i, j;
-    char  str[128];
-    int npts = dims[0]*dims[1]*dims[2];
-    int ncX = (dims[0] - 1 < 1 ? 1 : dims[0] - 1);
-    int ncY = (dims[1] - 1 < 1 ? 1 : dims[1] - 1);
-    int ncZ = (dims[2] - 1 < 1 ? 1 : dims[2] - 1);
-    int ncells = ncX*ncY*ncZ;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET RECTILINEAR_GRID\n");
-    sprintf(str, "DIMENSIONS %d %d %d\n", dims[0], dims[1], dims[2]);
-    write_string(str);
-    sprintf(str, "X_COORDINATES %d float\n", dims[0]);
-    write_string(str);
-    for (i = 0 ; i < dims[0] ; i++)
-        write_float(x[i]);
-    new_section();
-    sprintf(str, "Y_COORDINATES %d float\n", dims[1]);
-    write_string(str);
-    for (i = 0 ; i < dims[1] ; i++)
-        write_float(y[i]);
-    new_section();
-    sprintf(str, "Z_COORDINATES %d float\n", dims[2]);
-    write_string(str);
-    for (i = 0 ; i < dims[2] ; i++)
-        write_float(z[i]);
-
-    write_variables(nvars, vardim, centering, varnames, vars, npts, ncells);
-
-    close_file();
-}
-
-
-/* ****************************************************************************
-//  Function: write_regular_mesh
-//
-//  Purpose:
-//      Writes out a regular mesh.  A regular mesh is one where the data lies
-//      along regular intervals.  "Brick of bytes/floats",
-//      "Block of bytes/floats", and MRI data all are examples of data that
-//      lie on regular meshes.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_regular_mesh(const char *filename, int ub, int *dims,
-                        int nvars, int *vardim, int *centering,
-                        const char * const *varnames, float **vars)
-{
-    int  i;
-
-    float *x = (float *) malloc(sizeof(float)*dims[0]);
-    float *y = (float *) malloc(sizeof(float)*dims[1]);
-    float *z = (float *) malloc(sizeof(float)*dims[2]);
-
-    for (i = 0 ; i < dims[0] ; i++)
-        x[i] = (float) i;
-    for (i = 0 ; i < dims[1] ; i++)
-        y[i] = (float) i;
-    for (i = 0 ; i < dims[2] ; i++)
-        z[i] = (float) i;
-
-    write_rectilinear_mesh(filename, ub, dims, x, y, z, nvars, vardim,
-                           centering, varnames, vars);
-
-    free(x);
-    free(y);
-    free(z);
-}
-
-
-/* ****************************************************************************
-//  Function: write_curvilinear_mesh
-//
-//  Purpose:
-//      Writes out a curvilinear mesh.
-//
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nI, nJ, nK }, where nI is the
-//                 number of points in the logical I dimension, etc.
-//      pts        An array of size nI*nJ*nK*3.  The array should be layed
-//                 out as (pt(i=0,j=0,k=0), pt(i=1,j=0,k=0), ...
-//                 pt(i=nI-1,j=0,k=0), pt(i=0,j=1,k=0), ...).
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-//  Modifications:
-//
-//    Hank Childs, Wed Apr  6 16:22:57 PDT 2005
-//    Fix problem with 2D structured meshes and assessing cell count.
-//
-// ***************************************************************************/
-
-void write_curvilinear_mesh(const char *filename, int ub, int *dims,float *pts,
-                            int nvars, int *vardim, int *centering,
-                            const char * const *varnames, float **vars)
-{
-    int   i, j;
-    char  str[128];
-    int npts = dims[0]*dims[1]*dims[2];
-    int ncX = (dims[0] - 1 < 1 ? 1 : dims[0] - 1);
-    int ncY = (dims[1] - 1 < 1 ? 1 : dims[1] - 1);
-    int ncZ = (dims[2] - 1 < 1 ? 1 : dims[2] - 1);
-    int ncells = ncX*ncY*ncZ;
-
-    useBinary = ub;
-    open_file(filename);
-    write_header();
-
-    write_string("DATASET STRUCTURED_GRID\n");
-    sprintf(str, "DIMENSIONS %d %d %d\n", dims[0], dims[1], dims[2]);
-    write_string(str);
-    sprintf(str, "POINTS %d float\n", npts);
-    write_string(str);
-    for (i = 0 ; i < 3*npts ; i++)
-    {
-        write_float(pts[i]);
-    }
-
-    write_variables(nvars, vardim, centering, varnames, vars, npts, ncells);
-
-    close_file();
-}
-
-
diff --git a/src/mandelbrot_VTK/visit_writer.h b/src/mandelbrot_VTK/visit_writer.h
deleted file mode 100644 (file)
index 1c77c09..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-/*****************************************************************************
-*
-* Copyright (c) 2000 - 2007, The Regents of the University of California
-* Produced at the Lawrence Livermore National Laboratory
-* All rights reserved.
-*
-* This file is part of VisIt. For details, see http://www.llnl.gov/visit/. The
-* full copyright notice is contained in the file COPYRIGHT located at the root
-* of the VisIt distribution or at http://www.llnl.gov/visit/copyright.html.
-*
-* Redistribution  and  use  in  source  and  binary  forms,  with  or  without
-* modification, are permitted provided that the following conditions are met:
-*
-*  - Redistributions of  source code must  retain the above  copyright notice,
-*    this list of conditions and the disclaimer below.
-*  - Redistributions in binary form must reproduce the above copyright notice,
-*    this  list of  conditions  and  the  disclaimer (as noted below)  in  the
-*    documentation and/or materials provided with the distribution.
-*  - Neither the name of the UC/LLNL nor  the names of its contributors may be
-*    used to  endorse or  promote products derived from  this software without
-*    specific prior written permission.
-*
-* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT  HOLDERS AND CONTRIBUTORS "AS IS"
-* AND ANY EXPRESS OR  IMPLIED WARRANTIES, INCLUDING,  BUT NOT  LIMITED TO, THE
-* IMPLIED WARRANTIES OF MERCHANTABILITY AND  FITNESS FOR A PARTICULAR  PURPOSE
-* ARE  DISCLAIMED.  IN  NO  EVENT  SHALL  THE  REGENTS  OF  THE  UNIVERSITY OF
-* CALIFORNIA, THE U.S.  DEPARTMENT  OF  ENERGY OR CONTRIBUTORS BE  LIABLE  FOR
-* ANY  DIRECT,  INDIRECT,  INCIDENTAL,  SPECIAL,  EXEMPLARY,  OR CONSEQUENTIAL
-* DAMAGES (INCLUDING, BUT NOT  LIMITED TO, PROCUREMENT OF  SUBSTITUTE GOODS OR
-* SERVICES; LOSS OF  USE, DATA, OR PROFITS; OR  BUSINESS INTERRUPTION) HOWEVER
-* CAUSED  AND  ON  ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT
-* LIABILITY, OR TORT  (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING IN ANY  WAY
-* OUT OF THE  USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
-* DAMAGE.
-*
-*****************************************************************************/
-
-/* ************************************************************************* //
-//                              visit_writer.h                               //
-// ************************************************************************* */
-
-/* 
-// This file contains function prototypes for writing out point meshes, 
-// unstructured meshes, rectilinear meshes, regular meshes, and 
-// structured/curvilinear meshes into files that can later be read by VisIt.
-//
-// Each routine assumes that the data being written is three-dimensional.
-// If the data is two-dimensional, you must still write out the data
-// as three-dimensional (ie pad arrays so that they are the correct size, etc).
-// However: the VisIt reader will determine that the data is truly two-
-// dimensional and visualize it as a two-dimensional dataset.
-//
-// All writers have an ASCII vs Binary decision.  The tradeoffs are the
-// standard ones: ASCII is human readable, but slow.  The
-// binary is much faster, but not human readable.  Note: the binary format
-// is portable, since it converts all data to be big-endian (this was a 
-// design decision for the format the visit_writer writes to -- the VTK
-// format).
-//
-// If you have multiple grids, you can write out one file for each grid.
-// There are potential pitfalls in doing this, where extra geometry and
-// interpolation problems appear along grid boundaries.  For additional
-// help with this issue, e-mail visit-help@llnl.gov
-*/
-
-
-/* ****************************************************************************
-//  Function: write_point_mesh
-//
-//  Purpose:
-//      Writes out a point mesh.
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_point_mesh(const char *filename, int useBinary, int npts, 
-                      float *pts, int nvars, int *vardim, 
-                      const char * const *varnames, float **vars);
-
-
-
-/* ****************************************************************************
-//  Function: write_unstructured_mesh
-//
-//  Purpose:
-//      Writes out a unstructured mesh.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      npts       The number of points in the mesh.
-//      pts        The spatial locations of the points.  This array should
-//                 be size 3*npts.  The points should be encoded as:
-//                 <x1, y1, z1, x2, y2, z2, ..., xn, yn, zn>
-//      ncells     The number of cells.
-//      celltypes  The type of each cell.
-//      conn       The connectivity array.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//  Example:
-//      You have two triangles.  The first has points (0,0,0), (0,1,0), and
-//      (1,1,0).  The second has points (0,0,0), (1,1,0), and (1,0,0).
-//
-//      There are four unique points. 
-//
-//      float pts[12] = { 0,0,0, 0,1,0, 1,1,0, 1,0,0 };
-//
-//      It is important the points list contain only unique points,
-//      because VisIt is not able to correctly determine the connectivity of a 
-//      dataset when points are duplicated.
-//
-//      There are two triangles.
-//      int ncells = 2;
-//
-//      The cells are both triangles.
-//      int celltypes[2] = { VISIT_TRIANGLE, VISIT_TRIANGLE };
-//
-//      The connectivity contains indices into the points list.  The indexing
-//      assumes that each point has size 3 (x,y,z).
-//
-//      int conn[6] = { 0, 1, 2, 0, 2, 3 };
-//
-//  Hint:  
-//      When writing an unstructured mesh, it is easy to get the orientation
-//      of a cell backwards.  VisIt typically does okay with this, but it
-//      can cause problems.  To test if this is happening, bring up VisIt on
-//      your newly outputted dataset and make a Pseudocolor plot of 
-//      "mesh_quality/volume" for 3D datasets or "mesh_quality/area" for 2D 
-//      datasets.  If the cells are inside-out, the volumes or areas will be
-//      negative.
-//      
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-#define VISIT_VERTEX         1
-#define VISIT_LINE           3
-#define VISIT_TRIANGLE       5
-#define VISIT_QUAD           9
-#define VISIT_TETRA         10
-#define VISIT_HEXAHEDRON    12
-#define VISIT_WEDGE         13
-#define VISIT_PYRAMID       14
-
-void write_unstructured_mesh(const char *filename, int useBinary, int npts,
-                             float *pts, int ncells, int *celltypes, int *conn, 
-                             int nvars, int *vardim, int *centering,
-                             const char * const *varnames, float **vars);
-
-
-
-/* ****************************************************************************
-//  Function: write_regular_mesh
-//
-//  Purpose:
-//      Writes out a regular mesh.  A regular mesh is one where the data lies
-//      along regular intervals.  "Brick of bytes/floats", 
-//      "Block of bytes/floats", and MRI data all are examples of data that
-//      lie on regular meshes.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_regular_mesh(const char *filename, int useBinary, int *dims, 
-                        int nvars, int *vardim, int *centering,
-                        const char * const *varnames, float **vars);
-
-
-
-
-/* ****************************************************************************
-//  Function: write_rectilinear_mesh
-//
-//  Purpose:
-//      Writes out a rectilinear mesh.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nX, nY, nZ }, where nX is the
-//                 number of points in the X-dimension, etc.
-//      x          An array of size dims[0] that contains the x-coordinates.
-//      y          An array of size dims[1] that contains the x-coordinates.
-//      z          An array of size dims[2] that contains the x-coordinates.
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//
-//  Example:
-//      You have a rectilinear mesh with x = { 0, 1, 2}, y = { 1, 1.5, 2, 3 },
-//      and z = { 2.5, 3.5 }.
-//
-//      Then dims = { 3, 4, 2 }.
-//      
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_rectilinear_mesh(const char *filename, int useBinary, 
-                            int *dims, float *x, float *y, float *z, 
-                            int nvars, int *vardim, int *centering, 
-                            const char * const *varnames, float **vars);
-
-
-
-
-/* ****************************************************************************
-//  Function: write_curvilinear_mesh
-//
-//  Purpose:
-//      Writes out a curvilinear mesh.
-//     
-//
-//  Arguments:
-//      filename   The name of the file to write.  If the extension ".vtk" is
-//                 not present, it will be added.
-//      useBinary  '0' to write ASCII, !0 to write binary
-//      dims       An array of size 3 = { nI, nJ, nK }, where nI is the
-//                 number of points in the logical I dimension, etc.
-//      pts        An array of size nI*nJ*nK*3.  The array should be layed
-//                 out as (pt(i=0,j=0,k=0), pt(i=1,j=0,k=0), ...
-//                 pt(i=nI-1,j=0,k=0), pt(i=0,j=1,k=0), ...).
-//      nvars      The number of variables.
-//      vardim     The dimension of each variable.  The size of vardim should
-//                 be nvars.  If var i is a scalar, then vardim[i] = 1.
-//                 If var i is a vector, then vardim[i] = 3.
-//      centering  The centering of each variable.  The size of centering 
-//                 should be nvars.  If centering[i] == 0, then the variable
-//                 is cell-based.  If centering[i] != 0, then the variable
-//                 is point-based.
-//      vars       An array of variables.  The size of vars should be nvars.
-//                 The size of vars[i] should be npts*vardim[i].
-//      
-//
-//  Programmer: Hank Childs
-//  Creation:   September 2, 2004
-//
-// ***************************************************************************/
-
-void write_curvilinear_mesh(const char *filename, int useBinary, 
-                            int *dims, float *pts,
-                            int nvars, int *vardim, int *centering, 
-                            const char * const *varnames, float **vars);
-
-
-