Commit 1f51a326 authored by hrchilds's avatar hrchilds

Update from March 3, 2004

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@189 18c085ea-50e0-402c-830e-de6fd14e8384
parent 7931ec6d
......@@ -456,9 +456,9 @@ env command for configure.
#
# Build and install it in the visit directory.
#
gunzip visit040209.tar.gz
tar xf visit040209.tar
cd visit040209/config-site
gunzip visit040308.tar.gz
tar xf visit040308.tar
cd visit040308/config-site
echo VISITHOME=`cat ../../visitpath` > `hostname`.conf
cat Template.conf >> `hostname`.conf
cd ..
......@@ -467,11 +467,11 @@ make
clearcase_bin/visit-bin-dist
# Use the appropriate install command based on the operating system on
# which you built VisIt.
clearcase_bin/visit-install 1.2.7 aix `cat ../visitpath`
clearcase_bin/visit-install 1.2.7 irix6 `cat ../visitpath`
clearcase_bin/visit-install 1.2.7 linux `cat ../visitpath`
clearcase_bin/visit-install 1.2.7 osf1 `cat ../visitpath`
clearcase_bin/visit-install 1.2.7 sunos5 `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 aix `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 irix6 `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 linux `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 osf1 `cat ../visitpath`
clearcase_bin/visit-install 1.2.8 sunos5 `cat ../visitpath`
When running the configure script you can enable or disable certain dependent
packages. All the configure options are listed at the beginning of the
......
......@@ -17,7 +17,7 @@ Unix and Mac OS X:
where
"version" will be 1.2.7 for the current distribution.
"version" will be 1.2.8 for the current distribution.
"platform" will be one of the following: aix, darwin, irix6, linux,
osf1, or sunos5 depending on the machine. The one you use should
......@@ -28,17 +28,17 @@ Unix and Mac OS X:
For example
visit-install 1.2.7 irix6 /usr/local/visit
visit-install 1.2.8 irix6 /usr/local/visit
will install the irix6, 1.2.7 version of visit in the directory
will install the irix6, 1.2.8 version of visit in the directory
"/usr/local/visit". Note that you will need to have the file
"visit1_2_7.irix6.tar.gz" present in the current directory for this
"visit1_2_8.irix6.tar.gz" present in the current directory for this
to function properly. You can install multiple binaries into the
same directory. For example, you could then execute
visit-install -a 1.2.7 linux /usr/local/visit
visit-install -a 1.2.8 linux /usr/local/visit
to add a linux, 1.2.7 version of visit to the same directory.
to add a linux, 1.2.8 version of visit to the same directory.
2. Add the bin directory below the installation directory
(/usr/local/visit/bin in our example) to each user's search path.
......@@ -76,8 +76,8 @@ Unix and Mac OS X:
Windows:
1. Copy the file visit1.2.7.exe to your desktop.
1. Copy the file visit1.2.8.exe to your desktop.
2. Double click on the visit1.2.7.exe icon to run the installer.
2. Double click on the visit1.2.8.exe icon to run the installer.
3. Follow the directions provided by the installer.
......@@ -247,16 +247,16 @@ fi
rm -f sc
cat <<EOF > sc
#!/bin/sh
if test ! -d /nfs/tmp2/$user ; then
mkdir /nfs/tmp2/$user
if test ! -d /nfs/tmp3/$user ; then
mkdir /nfs/tmp3/$user
fi
if test ! -d /nfs/tmp2/$user/sc ; then
mkdir /nfs/tmp2/$user/sc
if test ! -d /nfs/tmp3/$user/sc ; then
mkdir /nfs/tmp3/$user/sc
fi
rm -rf /nfs/tmp2/$user/sc/visitbuild
mkdir /nfs/tmp2/$user/sc/visitbuild
mv sc_$dist.tar.gz /nfs/tmp2/$user/sc/visitbuild/$dist.tar.gz
cd /nfs/tmp2/$user/sc/visitbuild
rm -rf /nfs/tmp3/$user/sc/visitbuild
mkdir /nfs/tmp3/$user/sc/visitbuild
mv sc_$dist.tar.gz /nfs/tmp3/$user/sc/visitbuild/$dist.tar.gz
cd /nfs/tmp3/$user/sc/visitbuild
gunzip -c $dist.tar.gz | tar xvf - > buildlog 2>&1
cd $dist
ver=\`cat VERSION\`
......
......@@ -253,7 +253,7 @@ if [ $sc = true ]
then
if [ $test = no ]
then
scp sc1:/nfs/tmp2/$user/sc/visitbuild/visit$ver2.osf1.tar.gz .
scp sc1:/nfs/tmp3/$user/sc/visitbuild/visit$ver2.osf1.tar.gz .
scp visit$ver2.osf1.tar.gz sc1:
scp visit-install sc1:
scp sc sc1:sc_install
......
......@@ -236,7 +236,12 @@ avtDatabase::GetOutput(const char *var, int ts)
// Hank Childs, Tue Sep 23 23:03:07 PDT 2003
// Add support for tensors.
//
// Mark C. Miller, 30Sep03, added timeStep argument
// Mark C. Miller, 30Sep03
// Added timeStep argument
//
// Hank Childs, Mon Feb 23 07:49:51 PST 2004
// Update for new data attribute interface. Now add variables for each of
// the secondary variables in data specification.
//
// ****************************************************************************
......@@ -246,6 +251,8 @@ avtDatabase::PopulateDataObjectInformation(avtDataObject_p &dob,
int ts,
avtDataSpecification *spec)
{
int i, j;
int timerHandle = visitTimer->StartTimer();
avtDataAttributes &atts = dob->GetInfo().GetAttributes();
......@@ -283,89 +290,116 @@ avtDatabase::PopulateDataObjectInformation(avtDataObject_p &dob,
}
}
const avtScalarMetaData *smd = GetMetaData(ts)->GetScalar(var);
if (smd != NULL)
//
// We want to add information to the data attributes for each of the
// variables. Make a big list of the primary and secondary variables.
//
vector<const char *> var_list;
var_list.push_back(var);
if (spec != NULL)
{
atts.SetVariableDimension(1);
atts.SetVariableName(var);
atts.SetCentering(smd->centering);
//
// Note that we are using the spatial extents as both the spatial
// extents and as the global spatial extents (the spatial extents
// across all timesteps).
//
if (smd->hasDataExtents)
const std::vector<CharStrRef> &secondaryVariables
= spec->GetSecondaryVariables();
for (i = 0 ; i < secondaryVariables.size() ; i++)
{
double extents[2];
extents[0] = smd->minDataExtents;
extents[1] = smd->maxDataExtents;
atts.GetTrueDataExtents()->Set(extents);
var_list.push_back(*(secondaryVariables[i]));
}
}
const avtVectorMetaData *vmd = GetMetaData(ts)->GetVector(var);
if (vmd != NULL)
//
// Now iterate through our variable list and add information about each
// variable as we go.
//
for (i = 0 ; i < var_list.size() ; i++)
{
atts.SetVariableDimension(vmd->varDim);
atts.SetVariableName(var);
atts.SetCentering(vmd->centering);
//
// Note that we are using the spatial extents as both the spatial
// extents and as the global spatial extents (the spatial extents
// across all timesteps).
//
if (vmd->hasDataExtents)
const avtScalarMetaData *smd = GetMetaData(ts)->GetScalar(var_list[i]);
if (smd != NULL)
{
double *extents = new double[2*vmd->varDim];
for (int i = 0 ; i < vmd->varDim ; i++)
atts.AddVariable(var_list[i]);
atts.SetVariableDimension(1, var_list[i]);
atts.SetCentering(smd->centering, var_list[i]);
//
// Note that we are using the spatial extents as both the spatial
// extents and as the global spatial extents (the spatial extents
// across all timesteps).
//
if (smd->hasDataExtents)
{
extents[2*i ] = vmd->minDataExtents[i];
extents[2*i+1] = vmd->maxDataExtents[i];
double extents[2];
extents[0] = smd->minDataExtents;
extents[1] = smd->maxDataExtents;
atts.GetTrueDataExtents(var_list[i])->Set(extents);
}
atts.GetTrueDataExtents()->Set(extents);
delete [] extents;
}
}
const avtTensorMetaData *tmd = GetMetaData(ts)->GetTensor(var);
if (tmd != NULL)
{
atts.SetVariableDimension(9);
atts.SetVariableName(var);
atts.SetCentering(tmd->centering);
}
const avtSymmetricTensorMetaData *stmd = GetMetaData(ts)->GetSymmTensor(var);
if (stmd != NULL)
{
atts.SetVariableDimension(9);
atts.SetVariableName(var);
atts.SetCentering(stmd->centering);
}
const avtVectorMetaData *vmd = GetMetaData(ts)->GetVector(var_list[i]);
if (vmd != NULL)
{
atts.AddVariable(var_list[i]);
atts.SetVariableDimension(vmd->varDim, var_list[i]);
atts.SetCentering(vmd->centering, var_list[i]);
//
// Note that we are using the spatial extents as both the spatial
// extents and as the global spatial extents (the spatial extents
// across all timesteps).
//
if (vmd->hasDataExtents)
{
double *extents = new double[2*vmd->varDim];
for (j = 0 ; j < vmd->varDim ; j++)
{
extents[2*j ] = vmd->minDataExtents[j];
extents[2*j+1] = vmd->maxDataExtents[j];
}
atts.GetTrueDataExtents(var_list[i])->Set(extents);
delete [] extents;
}
}
const avtTensorMetaData *tmd = GetMetaData(ts)->GetTensor(var_list[i]);
if (tmd != NULL)
{
atts.AddVariable(var_list[i]);
atts.SetVariableDimension(9, var_list[i]);
atts.SetCentering(tmd->centering, var_list[i]);
}
const avtSymmetricTensorMetaData *stmd =
GetMetaData(ts)->GetSymmTensor(var_list[i]);
if (stmd != NULL)
{
atts.AddVariable(var_list[i]);
atts.SetVariableDimension(9, var_list[i]);
atts.SetCentering(stmd->centering, var_list[i]);
}
const avtSpeciesMetaData *spmd = GetMetaData(ts)->GetSpecies(var);
if (spmd != NULL)
{
atts.SetVariableDimension(1);
atts.SetCentering(AVT_ZONECENT);
atts.SetVariableName(var);
double extents[2];
extents[0] = 0.;
extents[1] = 1.;
atts.GetEffectiveDataExtents()->Set(extents);
}
const avtSpeciesMetaData *spmd =
GetMetaData(ts)->GetSpecies(var_list[i]);
if (spmd != NULL)
{
atts.AddVariable(var_list[i]);
atts.SetVariableDimension(1, var_list[i]);
atts.SetCentering(AVT_ZONECENT, var_list[i]);
double extents[2];
extents[0] = 0.;
extents[1] = 1.;
atts.GetEffectiveDataExtents(var_list[i])->Set(extents);
atts.GetTrueDataExtents(var_list[i])->Set(extents);
}
const avtCurveMetaData *cmd = GetMetaData(ts)->GetCurve(var);
if (cmd != NULL)
{
atts.SetTopologicalDimension(1);
atts.SetSpatialDimension(2);
const avtCurveMetaData *cmd = GetMetaData(ts)->GetCurve(var_list[i]);
if (cmd != NULL)
{
atts.SetTopologicalDimension(1);
atts.SetSpatialDimension(2);
}
}
atts.SetActiveVariable(var);
//
// SPECIAL CASE:
......
......@@ -200,6 +200,9 @@ avtExpressionFilter::PostExecute(void)
// Fix some odd centering cases that can come up when a variable can get
// misidentified.
//
// Hank Childs, Wed Feb 25 14:48:31 PST 2004
// Make sure that the extents get associated with the correct variable.
//
// ****************************************************************************
vtkDataSet *
......@@ -314,7 +317,7 @@ avtExpressionFilter::ExecuteData(vtkDataSet *in_ds, int index,
}
}
GetOutput()->GetInfo().GetAttributes().
GetCumulativeTrueDataExtents()->Merge(exts);
GetCumulativeTrueDataExtents(outputVariableName)->Merge(exts);
}
//
......@@ -343,13 +346,17 @@ avtExpressionFilter::ExecuteData(vtkDataSet *in_ds, int index,
// Modified to set the centering of the variable to cell or point
// based on IsPointVariable().
//
// Hank Childs, Fri Feb 20 15:08:58 PST 2004
// Account for data attributes using multiple variables.
//
// ****************************************************************************
void
avtExpressionFilter::RefashionDataObjectInfo(void)
{
avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();
outAtts.SetVariableName(outputVariableName);
outAtts.AddVariable(outputVariableName);
outAtts.SetActiveVariable(outputVariableName);
outAtts.SetVariableDimension(GetVariableDimension());
outAtts.SetCentering(IsPointVariable()?AVT_NODECENT:AVT_ZONECENT);
}
......@@ -397,13 +404,24 @@ avtExpressionFilter::PerformRestriction(avtPipelineSpecification_p spec)
// Programmer: Akira Haddox
// Creation: August 19, 2002
//
// Modifications:
//
// Hank Childs, Wed Feb 25 14:43:17 PST 2004
// Modify logic slightly since, with multiple variable changes, there
// may not be any variables to ask for their centering.
//
// ****************************************************************************
bool
avtExpressionFilter::IsPointVariable()
{
return (GetInput()->GetInfo().GetAttributes().GetCentering()
== AVT_NODECENT);
avtDataAttributes &atts = GetInput()->GetInfo().GetAttributes();
if (atts.ValidActiveVariable())
{
return (atts.GetCentering() != AVT_ZONECENT);
}
return true;
}
......
......@@ -70,23 +70,22 @@ avtMultipleInputExpressionFilter::AddInputVariableName(const char *var)
// Programmer: Hank Childs
// Creation: August 15, 2003
//
// Modifications:
//
// Hank Childs, Wed Feb 25 14:44:19 PST 2004
// Updated to account for multiple variables in data attributes.
//
// ****************************************************************************
bool
avtMultipleInputExpressionFilter::IsPointVariable(void)
{
if (varnames.size() == 0)
return avtExpressionFilter::IsPointVariable();
avtDataset_p input = GetTypedInput();
avtCentering cent = avtDatasetExaminer::
GetVariableCentering(input, varnames[0]);
if (cent != AVT_UNKNOWN_CENT)
avtDataAttributes &atts = GetInput()->GetInfo().GetAttributes();
if (atts.ValidVariable(varnames[0]))
{
return (cent == AVT_NODECENT);
return (atts.GetCentering(varnames[0]) != AVT_ZONECENT);
}
return avtExpressionFilter::IsPointVariable();
}
......
......@@ -28,6 +28,9 @@
// Moved inlined constructor and destructor definitions to .C files
// because certain compilers have problems with them.
//
// Hank Childs, Wed Feb 25 11:41:35 PST 2004
// Corrected the variable dimension of the output.
//
// ****************************************************************************
class EXPRESSION_API avtMeshCoordinateFilter
......@@ -45,7 +48,7 @@ class EXPRESSION_API avtMeshCoordinateFilter
protected:
virtual vtkDataArray *DeriveVariable(vtkDataSet *);
virtual int GetVariableDimension() { return 1; }
virtual int GetVariableDimension() { return 3; }
virtual bool IsPointVariable() { return true; }
};
......
......@@ -60,12 +60,24 @@ avtVectorComposeFilter::~avtVectorComposeFilter()
// Programmer: Hank Childs
// Creation: September 23, 2003
//
// Modifications:
//
// Hank Childs, Thu Feb 26 09:00:06 PST 2004
// Account for multiple variables.
//
// ****************************************************************************
int
avtVectorComposeFilter::GetVariableDimension(void)
{
int inDim = GetInput()->GetInfo().GetAttributes().GetVariableDimension();
avtDataAttributes &atts = GetInput()->GetInfo().GetAttributes();
if (activeVariable == NULL)
return 3;
if (!atts.ValidVariable(activeVariable))
return 3;
int inDim = atts.GetVariableDimension();
if (inDim == 1)
return 3;
else if (inDim == 3)
......
......@@ -59,12 +59,24 @@ avtVectorDecomposeFilter::~avtVectorDecomposeFilter()
// Programmer: Hank Childs
// Creation: September 23, 2003
//
// Modifications:
//
// Hank Childs, Thu Feb 26 09:00:06 PST 2004
// Account for multiple variables.
//
// ****************************************************************************
int
avtVectorDecomposeFilter::GetVariableDimension(void)
{
int inDim = GetInput()->GetInfo().GetAttributes().GetVariableDimension();
avtDataAttributes &atts = GetInput()->GetInfo().GetAttributes();
if (activeVariable == NULL)
return 1;
if (!atts.ValidVariable(activeVariable))
return 1;
int inDim = atts.GetVariableDimension();
if (inDim == 9)
return 3;
else if (inDim == 3)
......
......@@ -172,18 +172,20 @@ avtNeighborFilter::ExecuteData(vtkDataSet *in_ds, int, std::string)
// Programmer: Akira Haddox
// Creation: June 27, 2002
//
// Modifications:
//
// Hank Childs, Fri Feb 20 15:51:54 PST 2004
// Have base class do more of the work in setting up output.
//
// ****************************************************************************
void
avtNeighborFilter::RefashionDataObjectInfo(void)
{
// It's a scalar node variable
avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();
outAtts.SetVariableName(variableName);
outAtts.SetVariableDimension(1);
outAtts.SetCentering(AVT_NODECENT);
avtSingleInputExpressionFilter::RefashionDataObjectInfo();
// And we're now dealing with vertexes
avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();
outAtts.SetTopologicalDimension(0);
GetOutput()->GetInfo().GetValidity().InvalidateZones();
}
......@@ -4,11 +4,14 @@
#ifndef AVT_NEIGHBOR_FILTER_H
#define AVT_NEIGHBOR_FILTER_H
#include <expression_exports.h>
#include <avtSingleInputExpressionFilter.h>
class vtkDataArray;
// ****************************************************************************
// Class: avtNeighborFilter
//
......@@ -20,6 +23,11 @@ class vtkDataArray;
// Programmer: Akira Haddox
// Creation: June 27, 2002
//
// Modifications:
//
// Hank Childs, Fri Feb 20 15:51:54 PST 2004
// Re-define GetVariableDimension.
//
// ****************************************************************************
class EXPRESSION_API avtNeighborFilter : public avtSingleInputExpressionFilter
......@@ -44,6 +52,7 @@ class EXPRESSION_API avtNeighborFilter : public avtSingleInputExpressionFilter
virtual void RefashionDataObjectInfo(void);
virtual bool IsPointVariable() { return true; };
virtual int GetVariableDimension() { return 1; };
};
#endif
......@@ -164,6 +164,9 @@ avtContourFilter::~avtContourFilter()
// Hank Childs, Wed Jul 30 09:04:28 PDT 2003
// Do not claim we need face connectivity if we are in 2D.
//
// Hank Childs, Mon Mar 1 07:56:53 PST 2004
// Give a better hint about what variable we are working on.
//
// ****************************************************************************
avtPipelineSpecification_p
......@@ -187,9 +190,10 @@ avtContourFilter::PerformRestriction(avtPipelineSpecification_p in_spec)
double extents[6]; // 6 is just in case.
const char *varname = NULL;
if (atts.GetVariable() != "default")
{
varname = atts.GetVariable().c_str();
}
else
varname = activeVariable;
if (TryDataExtents(extents, varname))
{
SetIsoValues(extents[0], extents[1]);
......@@ -572,6 +576,9 @@ avtContourFilter::ExecuteDataTree(vtkDataSet *in_ds, int domain, string label)
// Hank Childs, Thu Oct 10 13:05:49 PDT 2002
// Do not assume that output is node-centered.
//
// Hank Childs, Thu Feb 26 09:05:34 PST 2004
// Do a better job of handling multiple variables.
//
// ****************************************************************************
void
......@@ -581,10 +588,25 @@ avtContourFilter::RefashionDataObjectInfo(void)
avtDataAttributes &inAtts = GetInput()->GetInfo().GetAttributes();
outAtts.SetTopologicalDimension(inAtts.GetTopologicalDimension()-1);
const char *var_to_modify = NULL;
if (atts.GetVariable() == "default")
{
outAtts.SetCentering(AVT_NODECENT);
if (inAtts.ValidActiveVariable())
{
var_to_modify = inAtts.GetVariableName().c_str();
}
}
else
{
var_to_modify = atts.GetVariable().c_str();
}
if (var_to_modify != NULL)
{
if (outAtts.ValidVariable(var_to_modify))
outAtts.SetCentering(AVT_NODECENT, var_to_modify);
}
GetOutput()->GetInfo().GetValidity().InvalidateZones();
}
......
......@@ -44,6 +44,9 @@ avtCurrentExtentFilter::Execute(void)
// Hank Childs, Thu Jul 17 17:40:24 PDT 2003
// Treat 2D vectors as 3D since VTK will assume that vectors are 3D.
//
// Hank Childs, Tue Feb 24 14:23:03 PST 2004
// Account for multiple variables.
//
// ****************************************************************************
void
......@@ -51,21 +54,27 @@ avtCurrentExtentFilter::RefashionDataObjectInfo(void)
{
avtDataAttributes &atts = GetInput()->GetInfo().GetAttributes();
avtDataAttributes &outAtts = GetOutput()->GetInfo().GetAttributes();
int dataDim = atts.GetVariableDimension();
if (dataDim == 2)
dataDim = 3;
double *de = new double[dataDim*2];
avtDataset_p ds = GetTypedInput();
bool foundDE = avtDatasetExaminer::GetDataExtents(ds, de);
if (foundDE)
int nVars = atts.GetNumberOfVariables();
for (int i = 0 ; i < nVars ; i++)
{
outAtts.GetCumulativeCurrentDataExtents()->Merge(de);
const char *vname = atts.GetVariableName(i).c_str();
int dataDim = atts.GetVariableDimension(vname);
if (dataDim == 2)
dataDim = 3;
double *de = new double[dataDim*2];
bool foundDE = avtDatasetExaminer::GetDataExtents(ds, de, vname);
if (foundDE)
{
outAtts.GetCumulativeCurrentDataExtents(vname)->Merge(de);
}
delete [] de;
}
delete [] de;
double se[6];
bool foundSE = avtDatasetExaminer::GetSpatialExtents(ds, se);
if (foundSE)
......
......@@ -136,7 +136,8 @@ avtShiftCenteringFilter::ExecuteData(vtkDataSet *inDS, int, std::string)
outDS->GetPointData()->RemoveArray("vtkGhostLevels");
}
// We want to preserve knowledge of original cells
vtkDataArray *origCells = inDS->GetCellData()->GetArray("avtOriginalCellNumbers");
vtkDataArray *origCells =
inDS->GetCellData()->GetArray("avtOriginalCellNumbers");
if (origCells)
{
outDS->GetCellData()->AddArray(origCells);
......@@ -191,16 +192,30 @@ avtShiftCenteringFilter::ExecuteData(vtkDataSet *inDS, int, std::string)
// Programmer: Hank Childs
// Creation: February 27, 2002
//
// Modifications:
//
// Hank Childs, Thu Feb 26 08:15:12 PST 2004
// Account for multiple variables.
//
// ****************************************************************************
void
avtShiftCenteringFilter::RefashionDataObjectInfo(void)
{
avtDataAttributes &in_atts = GetInput()->GetInfo().GetAttributes();
avtDataAttributes &out_atts = GetOutput()->GetInfo().GetAttributes();
if (!in_atts.ValidActiveVariable())
{
// We don't have enough information to figure out which variable
// we are shifting the centering of.
return;
}
if (centeringInstruction == 1 || centeringInstruction == 2)
{
avtCentering centering = (centeringInstruction == 1 ? AVT_NODECENT
: AVT_ZONECENT);
GetOutput()->GetInfo().GetAttributes().SetCentering(centering);
out_atts.SetCentering(centering);