Commit d9c79b5e authored by hrchilds's avatar hrchilds
Browse files

Update from April 27, 2005

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@458 18c085ea-50e0-402c-830e-de6fd14e8384
parent 3dbdda1c
......@@ -123,6 +123,9 @@
# Jeremy Meredith, Mon Apr 11 09:15:13 PDT 2005
# Only show failed results. Separated summary from log.
#
# Mark C. Miller, Wed Apr 27 08:29:28 PDT 2005
# Removed '~' from URL for test web site
#
# ----------------------------------------------------------------------------
# list of users who want email every night with the log file
......@@ -146,7 +149,7 @@ msgftr_build="\n\n------ build log follows ------\n\n"
msghdr_testfailed="From: visit@llnl.gov\n\
Subject: failed regression test\n\
\n\
Results posted at https://dnt-cs.llnl.gov/~visit/\
Results posted at https://dnt-cs.llnl.gov/visit/\
\n\
This is an automated error message: \n\
\n\
......@@ -155,7 +158,7 @@ The VisIt regression test failed during an automatic run\n"
msghdr_testpassed="From: visit@llnl.gov\n\
Subject: passed regression test\n\
\n\
Results posted at https://dnt-cs.llnl.gov/~visit/\
Results posted at https://dnt-cs.llnl.gov/visit/\
\n\
This is an automated message: \n\
\n\
......@@ -164,7 +167,7 @@ The VisIt regression test passed the automatic run\n"
msghdr_partialpass="From: visit@llnl.gov\n\
Subject: partially passed regression test\n\
\n\
Results posted at https://dnt-cs.llnl.gov/~visit/\
Results posted at https://dnt-cs.llnl.gov/visit/\
\n\
This is an automated message: \n\
\n\
......@@ -247,7 +250,7 @@ cd ..
curdate=`date +%Y-%m-%d-%p%I%M`
# set mode to run in
modes="serial parallel scalable,parallel"
modes="serial parallel scalable,parallel hdf5"
if test "`date +%A`" = "Sunday"; then
modes="serial,hdf5 parallel,hdf5 scalable,parallel,hdf5 dlb"
fi
......
......@@ -45,22 +45,22 @@ QueryAttributes::ElementType_FromString(const std::string &s, QueryAttributes::E
static const char *VarType_strings[] = {
"Mesh", "Scalar", "Vector",
"Tensor", "Symmetric_Tensor", "Material",
"Species", "Curve", "Unknown"
};
"Tensor", "Symmetric_Tensor", "Label",
"Material", "Species", "Curve",
"Unknown"};
std::string
QueryAttributes::VarType_ToString(QueryAttributes::VarType t)
{
int index = int(t);
if(index < 0 || index >= 9) index = 0;
if(index < 0 || index >= 10) index = 0;
return VarType_strings[index];
}
std::string
QueryAttributes::VarType_ToString(int t)
{
int index = (t < 0 || t >= 9) ? 0 : t;
int index = (t < 0 || t >= 10) ? 0 : t;
return VarType_strings[index];
}
......@@ -68,7 +68,7 @@ bool
QueryAttributes::VarType_FromString(const std::string &s, QueryAttributes::VarType &val)
{
val = QueryAttributes::Mesh;
for(int i = 0; i < 9; ++i)
for(int i = 0; i < 10; ++i)
{
if(s == VarType_strings[i])
{
......@@ -125,7 +125,7 @@ QueryAttributes::DataType_FromString(const std::string &s, QueryAttributes::Data
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -156,7 +156,7 @@ QueryAttributes::QueryAttributes() : AttributeSubject("ss*sFiid*iii*iib")
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -193,7 +193,7 @@ QueryAttributes::QueryAttributes(const QueryAttributes &obj) : AttributeSubject(
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -213,7 +213,7 @@ QueryAttributes::~QueryAttributes()
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -253,7 +253,7 @@ QueryAttributes::operator = (const QueryAttributes &obj)
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -294,7 +294,7 @@ QueryAttributes::operator == (const QueryAttributes &obj) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -315,7 +315,7 @@ QueryAttributes::operator != (const QueryAttributes &obj) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -336,7 +336,7 @@ QueryAttributes::TypeName() const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -364,7 +364,7 @@ QueryAttributes::CopyAttributes(const AttributeGroup *atts)
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -390,7 +390,7 @@ QueryAttributes::CreateCompatible(const std::string &tname) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -417,7 +417,7 @@ QueryAttributes::NewInstance(bool copy) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -454,7 +454,7 @@ QueryAttributes::SelectAll()
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -568,7 +568,7 @@ QueryAttributes::CreateNode(DataNode *parentNode, bool completeSave, bool forceA
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -910,7 +910,7 @@ QueryAttributes::SelectVarTypes()
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -947,7 +947,7 @@ QueryAttributes::GetFieldName(int index) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -984,7 +984,7 @@ QueryAttributes::GetFieldType(int index) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -1021,7 +1021,7 @@ QueryAttributes::GetFieldTypeName(int index) const
// Note: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......
......@@ -14,7 +14,7 @@
// Notes: Autogenerated by xml2atts.
//
// Programmer: xml2atts
// Creation: Wed Dec 15 17:00:43 PST 2004
// Creation: Wed Apr 27 10:06:54 PDT 2005
//
// Modifications:
//
......@@ -35,6 +35,7 @@ public:
Vector,
Tensor,
Symmetric_Tensor,
Label,
Material,
Species,
Curve,
......
......@@ -10,6 +10,7 @@
Vector
Tensor
Symmetric_Tensor
Label
Material
Species
Curve
......
......@@ -206,6 +206,9 @@ avtMinMaxQuery::PreExecute()
// Hank Childs, Thu Mar 10 11:53:28 PST 2005
// Fix memory leak.
//
// Kathleen Bonnell, Wed Apr 27 08:29:52 PDT 2005
// Modified ghost tests to account for ghost nodes.
//
// ****************************************************************************
void
......@@ -216,15 +219,17 @@ avtMinMaxQuery::Execute(vtkDataSet *ds, const int dom)
return;
}
int i;
vtkUnsignedCharArray *ghosts =
vtkUnsignedCharArray *ghostZones =
(vtkUnsignedCharArray*)ds->GetCellData()->GetArray("avtGhostZones");
vtkUnsignedCharArray *ghostNodes =
(vtkUnsignedCharArray*)ds->GetPointData()->GetArray("avtGhostNodes");
vtkDataArray *data = NULL;
bool shouldDeleteData = false;
string var = queryAtts.GetVariables()[0];
int varType = queryAtts.GetVarTypes()[0];
int ts = queryAtts.GetTimeStep();
scalarCurve = false;
bool checkGhost = false;
bool checkGhost = (ghostZones != NULL || ghostNodes != NULL);
bool haveMin1 = false;
bool haveMin2 = false;
bool haveMax1 = false;
......@@ -240,7 +245,6 @@ avtMinMaxQuery::Execute(vtkDataSet *ds, const int dom)
{
nodeCentered = false;
elementName = "zone";
checkGhost = ghosts != NULL;
}
else if (varType == QueryAttributes::Curve)
{
......@@ -287,6 +291,7 @@ avtMinMaxQuery::Execute(vtkDataSet *ds, const int dom)
stringVector matNames;
floatVector matValues;
vtkIdList *cellIds = vtkIdList::New();
vtkIdList *ids = vtkIdList::New();
for (int elNum = 0; elNum < data->GetNumberOfTuples(); elNum++)
{
......@@ -315,14 +320,26 @@ avtMinMaxQuery::Execute(vtkDataSet *ds, const int dom)
break;
}
bool ghost = false;
if (checkGhost)
{
ghost = (ghosts->GetValue(elNum) > 0);
}
if (nodeCentered)
{
if (doMin)
if (checkGhost)
{
if (ghostNodes != NULL)
{
ghost = (ghostNodes->GetValue(elNum) > 0);
}
else
{
ds->GetPointCells(elNum, ids);
int numGhostCells = 0;
for (int i = 0; i < ids->GetNumberOfIds(); i++)
numGhostCells +=
ghostZones->GetValue(ids->GetId(i)) > 0 ? 1 : 0;
ghost = numGhostCells == ids->GetNumberOfIds();
}
}
if (doMin && !ghost)
{
if (val < minInfo1.GetValue())
{
......@@ -342,7 +359,7 @@ avtMinMaxQuery::Execute(vtkDataSet *ds, const int dom)
}
cellIds->Reset();
}
if (doMax)
if (doMax && !ghost)
{
if (val > maxInfo1.GetValue())
{
......@@ -365,7 +382,24 @@ avtMinMaxQuery::Execute(vtkDataSet *ds, const int dom)
}
else // zoneCentered
{
if (mat != NULL && elNum >= 0 && elNum < mat->GetNZones())
if (checkGhost)
{
if (ghostZones != NULL)
{
ghost = (ghostZones->GetValue(elNum) > 0);
}
else
{
ds->GetCellPoints(elNum, ids);
int numGhostNodes = 0;
for (int i = 0; i < ids->GetNumberOfIds(); i++)
numGhostNodes +=
ghostNodes->GetValue(ids->GetId(i)) > 0 ? 1 : 0;
ghost = numGhostNodes > 0;
}
}
if (!ghost && mat != NULL && elNum >= 0 && elNum < mat->GetNZones())
{
matInfo = mat->ExtractCellMatInfo(elNum);
for (i = 0; i < matInfo.size(); ++i)
......@@ -432,6 +466,7 @@ avtMinMaxQuery::Execute(vtkDataSet *ds, const int dom)
}
}
cellIds->Delete();
ids->Delete();
if (nodeCentered)
{
......
......@@ -429,6 +429,10 @@ VisitHotPointInteractor::Start3DMode(INTERACTION_MODE mode)
// Kathleen Bonnell, Tue Dec 2 17:41:31 PST 2003
// Allow Pick interactions (use Pick2d).
//
// Brad Whitlock, Wed Apr 27 17:20:09 PST 2005
// Make it use a navigate interactor for lineout mode so we at least have
// an interactor in the rare case that we enter lineout mode here.
//
// ****************************************************************************
void
......@@ -443,6 +447,7 @@ VisitHotPointInteractor::StartCurveMode(INTERACTION_MODE mode)
switch(mode)
{
case NAVIGATE:
case LINEOUT:
if(navigateCurve == NULL)
{
navigateCurve = new NavigateCurve(proxy);
......@@ -464,9 +469,6 @@ VisitHotPointInteractor::StartCurveMode(INTERACTION_MODE mode)
}
newInteractor = pick2D;
break;
case LINEOUT:
// These are only here to prevent compiler warning.
break;
}
if(newInteractor == NULL)
......
......@@ -87,5 +87,5 @@ MILI_DIR=/usr/gapps/visit/mili/current/linux_rhel3_gcc_3.2.3
##
## Silo
##
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/lib
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/lib
......@@ -87,5 +87,5 @@ MILI_DIR=/usr/gapps/visit/mili/current/linux_rhel3_gcc_3.2.3
##
## Silo
##
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/lib
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/lib
......@@ -87,5 +87,5 @@ MILI_DIR=/usr/gapps/visit/mili/current/linux_rhel3_gcc_3.2.3
##
## Silo
##
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/lib
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/lib
......@@ -87,5 +87,5 @@ MILI_DIR=/usr/gapps/visit/mili/current/linux_rhel3_gcc_3.2.3
##
## Silo
##
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/lib
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/lib
......@@ -87,5 +87,5 @@ MILI_DIR=/usr/gapps/visit/mili/current/linux_rhel3_gcc_3.2.3
##
## Silo
##
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/lib
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/lib
......@@ -87,5 +87,5 @@ MILI_DIR=/usr/gapps/visit/mili/current/linux_rhel3_gcc_3.2.3
##
## Silo
##
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre4/linux_rhel3_gcc_3.2.3/lib
DEFAULT_SILO_INCLUDES=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/include
DEFAULT_SILO_LIBRARY=/usr/gapps/silo/4.4.3-pre6/linux_rhel3_gcc_3.2.3/lib
......@@ -138,6 +138,7 @@ PlotList.java \
Plugin.java \
PluginManagerAttributes.java \
Point.java \
PostponedAction.java \
PrinterAttributes.java \
QueryAttributes.java \
QueryList.java \
......@@ -181,7 +182,7 @@ JARFILE=visit.jar
## Standard targets...
##
all: package main
all: package
install: install_bin
......
......@@ -12,6 +12,8 @@
#include <algorithm>
#include <visit-config.h> // To get the version number
#include <snprintf.h>
#include <MDServerConnection.h>
#include <avtDatabase.h>
#include <avtDatabaseFactory.h>
......@@ -1368,8 +1370,9 @@ MDServerConnection::FileMatchesFilterList(const std::string &fileName) const
// the file name.
//
// Arguments:
// file : The filename.
// pattern : The pattern string to be returned.
// file : The filename.
// pattern : The pattern string to be returned.
// digitLength : The length of the digit string.
//
// Returns: True if a pattern was detected.
//
......@@ -1379,11 +1382,17 @@ MDServerConnection::FileMatchesFilterList(const std::string &fileName) const
// Creation: Tue Mar 25 10:57:06 PDT 2003
//
// Modifications:
//
// Brad Whitlock, Tue Apr 26 13:29:38 PST 2005
// I made it acceptable to replace digits before an underscore with the
// wildcard so files with names like: foo_00000_root.ext work. I also made
// Flash file dumps ending in Z be considered for automatic grouping. Finally,
// I made it return the length of the digit string.
//
// ****************************************************************************
bool
MDServerConnection::GetPattern(const std::string &file, std::string &p) const
MDServerConnection::GetPattern(const std::string &file, std::string &p,
int &digitLength) const
{
int i, isave = 0, ipat = 0;
char pattern[256];
......@@ -1404,12 +1413,24 @@ MDServerConnection::GetPattern(const std::string &file, std::string &p) const
}
/* Skip over the digit string. */
digitLength = 0;
for (i = isave; file[i] >= '0' && file[i] <= '9'; i++)
/* do nothing */ ;
++digitLength;
char charAfterDigit = file[i];
// If we're doing extra smart file grouping then be a little more lenient
// when considering patterns.
bool specialMatch = false;
if(extraSmartFileGrouping)
{
specialMatch = (charAfterDigit == '_') ||
(charAfterDigit == 'z' && (i == file.size()-1));
}
/* We have a match on *[0-9]?. Now let's determine the full pattern. */
if (file[isave] >= '0' && file[isave] <= '9' &&
(file[i] == '\0' || file[i] == '.'))
(charAfterDigit == '\0' || charAfterDigit == '.' || specialMatch)
)
{
ipat = isave;
......@@ -1546,6 +1567,9 @@ MDServerConnection::SetFileGroupingOptions(const std::string &filter,
// Brad Whitlock, Fri Feb 4 15:12:40 PST 2005
// I made the filter list and extraSmartFileGrouping flag be set elsewhere.
//
// Brad Whitlock, Tue Apr 26 13:58:11 PST 2005
// Added code to group "abort" files into their related database.
//
// ****************************************************************************
void
......@@ -1578,7 +1602,8 @@ MDServerConnection::GetFilteredFileList(GetFileListRPC::FileList &files)
//
// See if the filename matches a pattern for related files.
//
bool matchesPattern = GetPattern(names[i], pattern);
int digitLength = 0;
bool matchesPattern = GetPattern(names[i], pattern, digitLength);
//
// See if the filename is a .visit file.
......@@ -1591,23 +1616,67 @@ MDServerConnection::GetFilteredFileList(GetFileListRPC::FileList &files)
//
if(matchesPattern && notVisItFile)
{
//
// Try to not group certain ale3d files. Those files
// are of the form: X, X.1, X.2, X.3, ... We only want
// to group the X files and leave the X.1, X.2, X.3
// files unrelated.
//
if(extraSmartFileGrouping &&
pattern.size() >= 2 &&
pattern.substr(pattern.size() - 2) == ".*")
// Try some more advanced file grouping rules.
if(extraSmartFileGrouping)
{
std::string pattern2;
bool found2ndPattern = GetPattern(pattern, pattern2);
if(found2ndPattern)
//
// Try to not group certain ale3d files. Those files
// are of the form: X, X.1, X.2, X.3, ... We only want
// to group the X files and leave the X.1, X.2, X.3
// files unrelated.
//
if(FileLooksLikePartFile(newVirtualFiles, pattern))
{
// Add the filename to the list of
// filtered files.
files.names.push_back(names[i]);
files.types.push_back(currentFileList.types[i]);
files.sizes.push_back(currentFileList.sizes[i]);
files.access.push_back(currentFileList.access[i]);
continue;
}
//
// If the pattern contains "_abort_" then it might be
// an ale3d abort file. Take out the "_abort_" string
// and replace it with "_". If there's a pattern that
// matches the new pattern without the "_abort_" string
// then assume we have an abort file and the file should
// be grouped with the pattern that we found.
//
int apos;
if((apos = pattern.find("_abort_")) != -1)
{
std::string basepattern(pattern2.substr(0,pattern2.size() - 2));
pos = newVirtualFiles.find(basepattern);
std::string pattern2(pattern);
pattern2.replace(apos, 7, "_");
pos = newVirtualFiles.find(pattern2);
if(pos != newVirtualFiles.end())
{
std::string altName(names[i]);
apos = altName.find("_abort_");
altName.replace(apos, 7, "_");
// Since the abort filename is most likely to
// come after the regularly numbered files, we
// have to insert the abort file name into the