Commit caa27286 authored by hrchilds's avatar hrchilds

Merge streamline2 branch into trunk.


git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@4754 18c085ea-50e0-402c-830e-de6fd14e8384
parent eb2e55b8
......@@ -737,3 +737,21 @@ avtSourceFromDatabase::ReleaseData(void)
}
// ****************************************************************************
// Method: avtSourceFromDatabase::CanDoStreaming
//
// Purpose:
// Determine whether or not streaming is possible.
//
// Programmer: Hank Childs
// Creation: June 12, 2008
//
// ****************************************************************************
bool
avtSourceFromDatabase::CanDoStreaming(avtContract_p contract)
{
return database->CanDoStreaming(contract->GetDataRequest());
}
......@@ -123,6 +123,9 @@ class PickAttributes;
// Removed method CanDoDynamicLoadBalancing. Database is now asked
// directly. Also added new ReleaseData method that is aware of DLB.
//
// Hank Childs, Thu Jun 12 16:13:52 PDT 2008
// Added method CanDoStreaming.
//
// ****************************************************************************
class DATABASE_API avtSourceFromDatabase : public avtOriginatingDatasetSource
......@@ -146,6 +149,8 @@ class DATABASE_API avtSourceFromDatabase : public avtOriginatingDatasetSource
virtual avtDataRequest_p
GetFullDataRequest(void);
virtual bool CanDoStreaming(avtContract_p);
void InvalidateZones(void);
void DatabaseProgress(int, int, const char *);
virtual void Query(PickAttributes *);
......
......@@ -295,6 +295,10 @@ avtGhostZoneAndFacelistFilter::MustCreatePolyData(void)
// Hank Childs, Fri Nov 30 16:14:48 PST 2007
// Fix problem where too much SIL work is being done.
//
// Hank Childs, Thu Jun 12 15:37:43 PDT 2008
// Rename a couple of variables and fix up some whitespace that came about
// from earlier mass renamings of avtContract.
//
// ****************************************************************************
void
......@@ -315,17 +319,15 @@ avtGhostZoneAndFacelistFilter::Execute(void)
avtSourceFromAVTDataset termsrc(ds);
avtDataObject_p data = termsrc.GetOutput();
avtContract_p specForDB = GetGeneralContract();
avtDataRequest_p wrongVar = specForDB->GetDataRequest();
avtDataRequest_p correctVar = new avtDataRequest(wrongVar,
pipelineVariable);
avtContract_p contractForDB = GetGeneralContract();
avtDataRequest_p wrongVar = contractForDB->GetDataRequest();
avtDataRequest_p correctVar = new avtDataRequest(wrongVar, pipelineVariable);
// By copying the "correct var", our mechanism for telling the SIL to
// not be used is ignored. So turn it back on.
correctVar->GetSIL().useRestriction = false;
correctVar->GetSIL().dataChunk = -1;
avtContract_p goodSpec = new avtContract(
specForDB, correctVar);
avtContract_p goodSpec = new avtContract(contractForDB, correctVar);
if (useFaceFilter && !useGhostFilter)
{
......@@ -502,8 +504,7 @@ avtGhostZoneAndFacelistFilter::ChangedInput(void)
// ****************************************************************************
avtContract_p
avtGhostZoneAndFacelistFilter::ModifyContract(
avtContract_p in_spec)
avtGhostZoneAndFacelistFilter::ModifyContract(avtContract_p in_spec)
{
avtContract_p spec = in_spec;
......
# Copyright (c) 2000 - 2008
# Lawrence Livermore National Security, LLC
# Produced at the Lawrence Livermore National Laboratory
# LLNL-CODE-400124
# All rights reserved.
#
# This file is part of VisIt. For details, see https://visit.llnl.gov/. The
# full copyright notice is contained in the file COPYRIGHT located at the root
# of the VisIt distribution or at https://visit.llnl.gov/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 other materials provided with the distribution.
# - Neither the name of the LLNS/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 LAWRENCE LIVERMORE NATIONAL SECURITY,
# LLC, 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.
#
# Modifications:
#
##############################################################################
##
## Programs and options...
##
@SET_MAKE@
@VARIABLES@
@MPI_CC@
@MPI_CXX@
##
## Files...
##
SRC=avtIVPDopri5.C avtIVPSolver.C avtIVPVTKField.C avtStreamline.C MemStream.C
CPPFLAGS=@COMPONENT_CPPFLAGS@ @CPPFLAGS@
SEROBJ=$(SRC:.C=.o)
PAROBJ=$(SRC:.C=_par.o)
LIB=libavtivp
##
## Standard targets...
##
all: $(LIBSHAREDSER) @LIBSHAREDPAR@
clean:
$(RM) $(SEROBJ) $(PAROBJ) $(LIBSHAREDSER) @LIBSHAREDPAR@
##
## Automatic dependency stuff
##
@TARGETS@
@PARLIBTARGETS@
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. 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 other materials provided with the distribution.
* - Neither the name of the LLNS/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 LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, 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.
*
*****************************************************************************/
// ************************************************************************* //
// MemStream.C //
// ************************************************************************* //
#include <MemStream.h>
// ****************************************************************************
// Method: MemStream constructor
//
// Programmer: Christoph Garth
// Creation: February 25, 2008
//
// ****************************************************************************
MemStream::MemStream( size_t sz0 )
{
pos = 0;
len = 0;
maxLen = len;
data = NULL;
CheckSize(sz0);
}
// ****************************************************************************
// Method: MemStream constructor
//
// Programmer: Christoph Garth
// Creation: February 25, 2008
//
// ****************************************************************************
MemStream::MemStream( size_t sz, const unsigned char *buff )
{
pos = 0;
len = sz;
maxLen = len;
data = new unsigned char[len];
memcpy( data, buff, len );
}
// ****************************************************************************
// Method: MemStream destructor
//
// Programmer: Christoph Garth
// Creation: February 25, 2008
//
// ****************************************************************************
MemStream::~MemStream()
{
if ( data )
delete [] data;
pos = 0;
len = 0;
maxLen = 0;
data = NULL;
}
// ****************************************************************************
// Method: MemStream::CheckSize
//
// Purpose:
// Checks to see if the current size is sufficent and changes the size
// of the underlying array if not.
//
// Programmer: Christoph Garth
// Creation: February 25, 2008
//
// ****************************************************************************
void
MemStream::CheckSize( size_t sz )
{
size_t reqLen = pos+sz;
if ( reqLen > maxLen )
{
size_t newLen = 2*maxLen; // double current size.
if ( newLen < reqLen )
newLen = reqLen;
unsigned char *newData = new unsigned char[newLen];
if ( data )
{
memcpy( newData, data, len ); // copy existing data to new buffer.
delete [] data;
}
data = newData;
maxLen = newLen;
}
}
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. 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 other materials provided with the distribution.
* - Neither the name of the LLNS/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 LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, 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.
*
*****************************************************************************/
// ************************************************************************* //
// MemStream.h //
// ************************************************************************* //
#ifndef MEM_STREAM_H
#define MEM_STREAM_H
#include <ivp_exports.h>
#include <vector>
#include <list>
#include <avtVec.h>
#include <avtVecArray.h>
#include <DebugStream.h>
// ****************************************************************************
// Struct: MemStream
//
// Purpose:
// A helper class for serializing a streamline.
//
// Programmer: Christoph Garth
// Creation: February 25, 2008
//
// ****************************************************************************
struct MemStream
{
public:
enum Mode {
READ = 0,
WRITE
};
MemStream( size_t sz0= 32 );
MemStream( size_t sz, const unsigned char *buff );
~MemStream();
void rewind() { pos = 0; }
size_t buffLen() const { return len; }
unsigned char *buff() const { return data; }
// General read/write routines.
template <typename T> void io( Mode mode, T *pt, size_t num )
{ return (mode == READ ? read(pt,num) : write(pt,num)); }
template <typename T> void io( Mode mode, T& t )
{ size_t s=1; io( mode, &t, s ); }
template <typename T> void io( Mode mode, std::vector<T> &v )
{ return (mode == READ ? read(v) : write(v)); }
void io( Mode mode, avtVec &v )
{ return (mode == READ ? read(v) : write(v)); }
void io( Mode mode, avtVecArray &va )
{ return (mode == READ ? read(va) : write(va)); }
//template <typename T> void io( Mode mode, std::list<T*> &l )
// { return (mode == READ ? read(l) : write(l)); }
//Read from buffer.
template <typename T> void read( T& t ) { read( &t, 1 ); }
template <typename T> void read( T *pt, const size_t &num )
{
size_t nBytes = sizeof(T)*num;
memcpy( pt, &data[pos], nBytes );
pos += nBytes;
}
void read( avtVec &v )
{
size_t dim;
read(dim);
v = avtVec(dim);
read(v.begin(), v.dim());
}
void read( avtVecArray &va )
{
size_t dim, size;
read(dim);
read(size);
va = avtVecArray(dim,size);
read(va.data(),size*dim);
}
template <typename T> void read( std::vector<T> &v )
{
size_t sz;
read(sz);
v.resize(sz);
for ( int i = 0; i < sz; i++ )
read(v[i]);
}
/*
template <typename T> void read( std::list<T*> &l )
{
size_t sz;
read(sz);
debug1 << "read( list sz= "<<sz << " );\n";
for ( size_t i = 0; i < sz; i++ )
{
T *x = new T;
read(*x);
debug1 << "x sz= "<<sizeof(x)<<endl;
l.push_back(x);
}
}
*/
//Write to buffer.
template <typename T> void write( const T& t ) { write( &t, 1 ); }
template <typename T> void write( const T *const pt, size_t num )
{
size_t nBytes = sizeof(T)*num;
CheckSize( nBytes );
memcpy(&data[pos], pt, nBytes );
pos += nBytes;
if ( pos > len )
len = pos;
}
template <typename T> void write( const std::vector<T> &v )
{
write( v.size() );
for ( int i = 0; i < v.size(); i++ )
write( v[i] );
}
void write( const avtVec &v )
{
write( v.dim() );
write( v.begin(), v.dim() );
}
void write( const avtVecArray &va )
{
write(va.dim());
write(va.size());
write(va.data(),va.size()*va.dim());
}
/*
template <typename T> void write( const std::list<T*> &l )
{
debug1 << "write( list sz= "<<l.size() << " sizeof = " << sizeof(T)<<" );\n";
write( l.size() );
typename list<T*>::const_iterator pos;
for ( pos = l.begin(); pos != l.end(); pos++ )
{
T &x = *(*pos);
write( x );
debug1 << "write( pos sz= " << sizeof(x)<<")\n";
}
}
*/
protected:
void CheckSize( size_t sz );
// data members
unsigned char *data;
size_t len, maxLen, pos;
};
#endif
This diff is collapsed.
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. 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 other materials provided with the distribution.
* - Neither the name of the LLNS/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 LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, 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.
*
*****************************************************************************/
// ************************************************************************* //
// avtIVPDopri5.h //
// ************************************************************************* //
#ifndef AVT_IVPDOPRI5_H
#define AVT_IVPDOPRI5_H
#include <avtIVPSolver.h>
#include <ivp_exports.h>
// ****************************************************************************
// Class: avtIVPDopri5
//
// Purpose:
// An implementation of avtIVPSolver which models the 5th-order
// Runge-Kutta dense-output scheme given by Dormand & Prince
//
// It follows this article:
// @article{Prince:1981:High,
// Author = {Prince, P. J. and Dormand, J. R.},
// Journal = {Journal of Computational and Applied Mathematics},
// Number = {1},
// Title = {High order embedded Runge-Kutta formulae},
// Volume = {7},
// Year = {1981}}
//
// Programmer: Christoph Garth
// Creation: February 25, 2008
//
// ****************************************************************************
class IVP_API avtIVPDopri5: public avtIVPSolver
{
public:
avtIVPDopri5();
avtIVPDopri5(const double& t_start,
const avtVecRef& y_start);
~avtIVPDopri5();
// begin a new IVP solution
virtual void Reset( const double& t_start, const avtVecRef& y_start );
// perform a single integration step
// adaptive stepsize control retries until success or underflow
virtual Result Step(const avtIVPField* field, const double& t_max,
avtIVPStep* ivpstep = NULL);
virtual avtVec GetCurrentY() const;
virtual double GetCurrentT() const;
virtual void SetCurrentY( const avtVec &newY );
virtual void SetCurrentT( double newT );
virtual void SetNextStepSize( const double& h );
virtual double GetNextStepSize() const;
virtual void SetMaximumStepSize( const double& h );
virtual void SetTolerances(const double& reltol, const double& abstol);
virtual avtIVPDopri5* Clone() const { return new avtIVPDopri5( *this ); }
protected:
// Guess an initial step size if none is specified by the user
double GuessInitialStep(const avtIVPField* field,
const double& h_max,
const double& t_max);
// state serialization
virtual void AcceptStateVisitor(avtIVPStateHelper &aiss);
private:
double reltol;
double abstol;
double h;
double h_max;
double h_init;
double t, t_max;
unsigned int n_accepted;
unsigned int n_rejected;
unsigned int n_steps;
unsigned int n_eval;
double facold; // stepsize control stabilization
double hlamb; // stiffness detection
int iasti;
int nonsti;
avtVec y;
avtVec k1;
};
#endif
/*****************************************************************************
*
* Copyright (c) 2000 - 2008, Lawrence Livermore National Security, LLC
* Produced at the Lawrence Livermore National Laboratory
* LLNL-CODE-400142
* All rights reserved.
*
* This file is part of VisIt. For details, see https://visit.llnl.gov/. 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 other materials provided with the distribution.
* - Neither the name of the LLNS/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 LAWRENCE LIVERMORE NATIONAL SECURITY,
* LLC, 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.
*
*****************************************************************************/
// ************************************************************************* //
// avtIVPField.h //
// ************************************************************************* //
#ifndef AVT_IVPFIELD_H
#define AVT_IVPFIELD_H
#include <stdexcept>
#include <avtVec.h>
#include <ivp_exports.h>
// ****************************************************************************
// Class: avtIVPField
//
// Purpose:
// avtIVPField is a base class for all manners of vector fields.
// Deriving from it should allow an adaptation of many different vector
// field types for the use of streamlines/IVP solutions by wrapping
// existing interpolation facilities. If the queried point is invalid,
// avtIVPField can throw an exception that will pass through avtIVPSolver.
//
// The IVP right-hand side is made accessible to an IVP solver by means of // the avtIVPField class, allowing the IVP solver to query points of the
// given vector field.
//
// Programmer: Christoph Garth
// Creation: February 25, 2008
//
// ****************************************************************************
class IVP_API avtIVPField
{
public:
class Undefined: public std::exception
{
public:
const char