Commit 4ac1f5dd authored by whitlocb's avatar whitlocb

Improvements to VisIt's load balancer and database plugin API.

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@23784 18c085ea-50e0-402c-830e-de6fd14e8384
parent 9248c598
......@@ -62,7 +62,6 @@
#include <avtDataset.h>
#include <avtExpressionTypeConversions.h>
#include <avtExtents.h>
#include <avtIOInformation.h>
#include <avtIntervalTree.h>
#include <avtMultiresSelection.h>
#include <avtSIL.h>
......@@ -476,11 +475,14 @@ avtDatabase::ComputeDomainSpatialBounds(double globalWidth, int domCount, int do
//
// Mark C. Miller, Tue Jun 10 22:36:25 PDT 2008
// Added support for ignoring bad extents from dbs.
//
// Brad Whitlock, Thu Jun 19 10:45:57 PDT 2014
// Removed gotIOInfo.
//
// ****************************************************************************
avtDatabase::avtDatabase()
{
gotIOInfo = false;
invariantMetaData = NULL;
invariantSIL = NULL;
fileFormat = "<unknown>";
......@@ -1271,6 +1273,10 @@ avtDatabase::GetMostRecentTimestep(void) const
//
// Mark C. Miller, Thu Feb 12 11:35:34 PST 2009
// Added call to convert 1D vars to curves
//
// Brad Whitlock, Thu Jun 19 10:36:38 PDT 2014
// Removed code to get IO info.
//
// ****************************************************************************
void
......@@ -1308,12 +1314,6 @@ avtDatabase::GetNewMetaData(int timeState, bool forceReadAllCyclesTimes)
Convert1DVarMDsToCurveMDs(md);
if (! OnlyServeUpMetaData())
{
PopulateIOInformation(timeState, ioInfo);
gotIOInfo = true;
}
// put the metadata at the front of the MRU cache
CachedMDEntry tmp = {md, timeState};
metadata.push_front(tmp);
......@@ -2233,14 +2233,16 @@ avtDatabase::FreeUpResources(void)
// Mark C. Miller, Tue Mar 16 14:49:26 PST 2004
// Made it call PopulateIOInformation directly
//
// Brad Whitlock, Thu Jun 19 10:45:07 PDT 2014
// I made it call/return PopulateIOInformation always.
//
// ****************************************************************************
const avtIOInformation &
avtDatabase::GetIOInformation(int stateIndex)
bool
avtDatabase::GetIOInformation(int stateIndex, const std::string &meshname,
avtIOInformation &ioInfo)
{
if (!gotIOInfo)
PopulateIOInformation(stateIndex, ioInfo);
return ioInfo;
return PopulateIOInformation(stateIndex, meshname, ioInfo);
}
......
......@@ -309,6 +309,9 @@ typedef struct {
// delete's of raw pointers held stl containers. make names of
// variables used to limit cache sizes describe their purpose.
//
// Brad Whitlock, Thu Jun 19 10:47:28 PDT 2014
// I changed how getting IO information works.
//
// ****************************************************************************
class DATABASE_API avtDatabase
......@@ -337,8 +340,6 @@ class DATABASE_API avtDatabase
int GetMostRecentTimestep() const;
virtual void ActivateTimestep(int stateIndex) {;};
virtual void PopulateIOInformation(int stateIndex,
avtIOInformation& ioInfo) {;};
virtual avtVariableCache *GetCache(void) { return NULL; };
virtual void ClearCache(void);
......@@ -348,7 +349,9 @@ class DATABASE_API avtDatabase
virtual bool CanDoStreaming(avtDataRequest_p);
virtual int NumStagesForFetch(avtDataRequest_p);
const avtIOInformation &GetIOInformation(int stateIndex);
virtual bool GetIOInformation(int stateIndex,
const std::string &meshname,
avtIOInformation &info);
static bool OnlyServeUpMetaData(void)
{ return onlyServeUpMetaData; };
......@@ -407,8 +410,6 @@ class DATABASE_API avtDatabase
std::list<CachedMDEntry> metadata;
std::list<CachedSILEntry> sil;
std::vector<avtDataObjectSource *> sourcelist;
avtIOInformation ioInfo;
bool gotIOInfo;
static bool onlyServeUpMetaData;
std::string fileFormat;
std::string fullDBName;
......@@ -441,6 +442,10 @@ class DATABASE_API avtDatabase
virtual void PopulateSIL(avtSIL *, int=0,
bool treatAllDBsAsTimeVarying = false) = 0;
virtual bool PopulateIOInformation(int stateIndex,
const std::string &meshname,
avtIOInformation& ioInfo) { return false;}
void PopulateDataObjectInformation(avtDataObject_p&,
const char *,
int,
......
......@@ -3321,12 +3321,16 @@ avtGenericDatabase::PopulateSIL(avtSIL *sil, int timeState,
// Mark C. Miller, Tue Mar 16 14:40:19 PST 2004
// Added timestep argument
//
// Brad Whitlock, Thu Jun 19 11:13:21 PDT 2014
// Pass meshname.
//
// ****************************************************************************
void
avtGenericDatabase::PopulateIOInformation(int ts, avtIOInformation &ioInfo)
bool
avtGenericDatabase::PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation &ioInfo)
{
Interface->PopulateIOInformation(ts, ioInfo);
return Interface->PopulateIOInformation(ts, meshname, ioInfo);
}
// ****************************************************************************
......
......@@ -343,8 +343,11 @@ class vtkUnstructuredGrid;
// Make cache available externally so filters from the pipeline can cache
// their data structures.
//
// Dave Pugmire, Fri Feb 8 17:22:01 EST 2013
// Added support for ensemble databases. (multiple time values)
// Dave Pugmire, Fri Feb 8 17:22:01 EST 2013
// Added support for ensemble databases. (multiple time values)
//
// Brad Whitlock, Thu Jun 19 11:12:19 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
......@@ -396,7 +399,8 @@ class DATABASE_API avtGenericDatabase : public avtDatasetDatabase
virtual void PopulateSIL(avtSIL *, int=0,
bool treatAllDBsAsTimeVarying = false);
virtual void PopulateIOInformation(int ts, avtIOInformation &);
virtual bool PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation &);
virtual void SetCycleTimeInDatabaseMetaData(avtDatabaseMetaData *md, int timeState);
virtual void SetDatabaseMetaData(avtDatabaseMetaData *md,
int timeState = 0,
......
......@@ -259,18 +259,23 @@ avtFileFormat::ActivateTimestep(void)
//
// Purpose:
// This is defined so that individual file formats will not have to
// provide information abotu I/O if it does not make sense for that
// provide information about I/O if it does not make sense for that
// format.
//
// Programmer: Hank Childs
// Creation: May 11, 2001
//
// Modifications:
// Brad Whitlock, Thu Jun 19 11:10:31 PDT 2014
// Pass meshname.
//
// ****************************************************************************
void
avtFileFormat::PopulateIOInformation(avtIOInformation &)
bool
avtFileFormat::PopulateIOInformation(const std::string &meshname, avtIOInformation &)
{
debug5 << "No I/O info provided for file format " << GetType() << endl;
debug5 << GetType() << ": No I/O info provided for mesh " << meshname << endl;
return false;
}
......
......@@ -131,6 +131,9 @@ class avtVariableCache;
// Add method for mangling names used for caching when selections are
// present.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtFileFormat
......@@ -147,9 +150,8 @@ class DATABASE_API avtFileFormat
virtual void FreeUpResources(void);
void RegisterDatabaseMetaData(avtDatabaseMetaData *);
virtual void PopulateIOInformation(avtIOInformation &);
virtual void PopulateIOInformation(int,avtIOInformation & io)
{ PopulateIOInformation(io); }
virtual bool PopulateIOInformation(const std::string &meshname,
avtIOInformation &);
void SetCache(avtVariableCache *);
void SetStrictMode(bool v) { strictMode = v; }
......
......@@ -219,8 +219,11 @@ class avtVariableCache;
// Hank Childs, Wed Dec 22 15:11:13 PST 2010
// Added method for telling file format that the pipeline is streaming.
//
// Dave Pugmire, Fri Feb 8 17:22:01 EST 2013
// Added support for ensemble databases. (multiple time values)
// Dave Pugmire, Fri Feb 8 17:22:01 EST 2013
// Added support for ensemble databases. (multiple time values)
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
......@@ -246,7 +249,8 @@ class DATABASE_API avtFileFormatInterface
virtual void FreeUpResources(int, int) = 0;
virtual void ActivateTimestep(int ts) = 0;
virtual void PopulateIOInformation(int ts, avtIOInformation &) = 0;
virtual bool PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation &) = 0;
bool HasInvariantMetaData(void);
bool HasInvariantSIL(void);
......
......@@ -94,6 +94,9 @@ class avtIOInformation;
// Hank Childs, Tue Apr 10 15:12:58 PDT 2012
// Add method SetReadAllCyclesAndTimes.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtMTMDFileFormat : public avtFileFormat
......@@ -116,8 +119,11 @@ class DATABASE_API avtMTMDFileFormat : public avtFileFormat
virtual void ActivateTimestep(int ts)
{ avtFileFormat::ActivateTimestep(); };
virtual void PopulateIOInformation(int ts, avtIOInformation& ioInfo)
{ avtFileFormat::PopulateIOInformation(ioInfo); };
virtual bool PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo)
{
return avtFileFormat::PopulateIOInformation(meshname, ioInfo);
}
virtual void SetDatabaseMetaData(avtDatabaseMetaData *md, int ts = 0);
void SetTimeSliceOffset(int ts) { timeSliceOffset = ts; };
......
......@@ -675,14 +675,18 @@ avtMTMDFileFormatInterface::ActivateTimestep(int ts)
// Jeremy Meredith, Thu Jan 28 15:49:05 EST 2010
// MTMD files can now be grouped into longer sequences.
//
// Brad Whitlock, Thu Jun 19 11:08:46 PDT 2014
// Pass mesh name.
//
// ****************************************************************************
void
avtMTMDFileFormatInterface::PopulateIOInformation(int ts, avtIOInformation& ioInfo)
bool
avtMTMDFileFormatInterface::PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo)
{
int tsGroup = GetTimestepGroupForTimestep(ts);
int localTS = GetTimestepWithinGroup(ts);
chunks[tsGroup]->PopulateIOInformation(localTS, ioInfo);
return chunks[tsGroup]->PopulateIOInformation(localTS, meshname, ioInfo);
}
......
......@@ -82,6 +82,9 @@ class avtIOInformation;
// Hank Childs, Tue Dec 20 14:15:33 CST 2011
// Add method CreateCacheNameIncludingSelections.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtMTMDFileFormatInterface : public avtFileFormatInterface
......@@ -111,7 +114,8 @@ class DATABASE_API avtMTMDFileFormatInterface : public avtFileFormatInterface
virtual void ActivateTimestep(int ts);
virtual void PopulateIOInformation(int ts, avtIOInformation& ioInfo);
virtual bool PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo);
protected:
int nTimestepGroups;
......
......@@ -108,6 +108,9 @@ class avtIOInformation;
// Hank Childs, Tue Apr 10 15:12:58 PDT 2012
// Add method SetReadAllCyclesAndTimes.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtMTSDFileFormat : public avtFileFormat
......@@ -133,8 +136,11 @@ class DATABASE_API avtMTSDFileFormat : public avtFileFormat
virtual void ActivateTimestep(int ts)
{ avtFileFormat::ActivateTimestep(); };
virtual void PopulateIOInformation(int ts, avtIOInformation& ioInfo)
{ avtFileFormat::PopulateIOInformation(ioInfo); };
virtual bool PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo)
{
return avtFileFormat::PopulateIOInformation(meshname, ioInfo);
};
virtual void SetDatabaseMetaData(avtDatabaseMetaData *md, int ts = 0);
void SetReadAllCyclesAndTimes(bool b)
......
......@@ -854,16 +854,24 @@ avtMTSDFileFormatInterface::ActivateTimestep(int ts)
// MTSD files can now be grouped not just into a faux MD format by having
// more than one block, but also into a longer sequence of MT files,
// each chunk with one or more timesteps.
//
// Brad Whitlock, Thu Jun 19 11:07:28 PDT 2014
// Pass the mesh name.
//
// ****************************************************************************
void
avtMTSDFileFormatInterface::PopulateIOInformation(int ts, avtIOInformation &ioInfo)
bool
avtMTSDFileFormatInterface::PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation &ioInfo)
{
int tsGroup = GetTimestepGroupForTimestep(ts);
int localTS = GetTimestepWithinGroup(ts);
bool retval = false;
for (int i = 0 ; i < nBlocks ; i++)
{
chunks[tsGroup][i]->PopulateIOInformation(localTS, ioInfo);
retval |= chunks[tsGroup][i]->PopulateIOInformation(localTS, meshname, ioInfo);
}
return retval;
}
......
......@@ -91,6 +91,9 @@ class avtIOInformation;
// Hank Childs, Tue Dec 20 14:15:33 CST 2011
// Add method CreateCacheNameIncludingSelections.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtMTSDFileFormatInterface : public avtFileFormatInterface
......@@ -119,7 +122,8 @@ class DATABASE_API avtMTSDFileFormatInterface : public avtFileFormatInterface
virtual void ActivateTimestep(int ts);
virtual void PopulateIOInformation(int ts, avtIOInformation& ioInfo);
virtual bool PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo);
protected:
avtMTSDFileFormat ***chunks;
......
......@@ -93,6 +93,10 @@ class avtIOInformation;
//
// Mark C. Miller, Fri Oct 29 09:58:43 PDT 2010
// Moved implementation of SetDatabaseMetaData to the .C file.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtSTMDFileFormat : public avtFileFormat
......@@ -107,8 +111,11 @@ class DATABASE_API avtSTMDFileFormat : public avtFileFormat
virtual void ActivateTimestep(void)
{ avtFileFormat::ActivateTimestep(); };
virtual void PopulateIOInformation(avtIOInformation& ioInfo)
{ avtFileFormat::PopulateIOInformation(ioInfo); };
virtual bool PopulateIOInformation(const std::string &meshname,
avtIOInformation& ioInfo)
{
return avtFileFormat::PopulateIOInformation(meshname, ioInfo);
}
virtual void SetDatabaseMetaData(avtDatabaseMetaData *md);
void SetTimestep(int ts, int ns)
......
......@@ -657,14 +657,18 @@ avtSTMDFileFormatInterface::ActivateTimestep(int ts)
// Brad Whitlock, Tue May 4 13:47:45 PST 2004
// Reenabled exception.
//
// Brad Whitlock, Thu Jun 19 10:59:53 PDT 2014
// Added meshname.
//
// ****************************************************************************
void
avtSTMDFileFormatInterface::PopulateIOInformation(int ts, avtIOInformation& ioInfo)
bool
avtSTMDFileFormatInterface::PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo)
{
if (ts < 0 || ts >= nTimesteps)
{
EXCEPTION2(BadIndexException, ts, nTimesteps);
}
timesteps[ts]->PopulateIOInformation(ioInfo);
return timesteps[ts]->PopulateIOInformation(meshname, ioInfo);
}
......@@ -99,6 +99,9 @@ class avtIOInformation;
// Hank Childs, Tue Dec 20 14:15:33 CST 2011
// Add method CreateCacheNameIncludingSelections.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtSTMDFileFormatInterface : public avtFileFormatInterface
......@@ -126,7 +129,9 @@ class DATABASE_API avtSTMDFileFormatInterface : public avtFileFormatInterface
virtual void ActivateTimestep(int ts);
virtual void PopulateIOInformation(int ts, avtIOInformation& ioInfo);
virtual bool PopulateIOInformation(int ts,
const std::string &meshname,
avtIOInformation& ioInfo);
protected:
avtSTMDFileFormat **timesteps;
......
......@@ -95,6 +95,10 @@ class avtIOInformation;
//
// Mark C. Miller, Fri Oct 29 09:58:43 PDT 2010
// Moved implementation of SetDatabaseMetaData to the .C file.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtSTSDFileFormat : public avtFileFormat
......@@ -115,9 +119,12 @@ class DATABASE_API avtSTSDFileFormat : public avtFileFormat
virtual vtkDataArray *GetVectorVar(const char *);
virtual void ActivateTimestep(void)
{ avtFileFormat::ActivateTimestep(); };
virtual void PopulateIOInformation(avtIOInformation& ioInfo)
{ avtFileFormat::PopulateIOInformation(ioInfo); };
{ avtFileFormat::ActivateTimestep(); };
virtual bool PopulateIOInformation(const std::string &meshname,
avtIOInformation& ioInfo)
{
return avtFileFormat::PopulateIOInformation(meshname, ioInfo);
}
virtual void SetDatabaseMetaData(avtDatabaseMetaData *md);
protected:
......
......@@ -750,17 +750,24 @@ avtSTSDFileFormatInterface::ActivateTimestep(int ts)
// Programmer: Mark C. Miller
// Creation: March 16, 2004
//
// Modifications:
// Brad Whitlock, Thu Jun 19 10:58:00 PDT 2014
// Added meshname.
//
// ****************************************************************************
void
avtSTSDFileFormatInterface::PopulateIOInformation(int ts, avtIOInformation& ioInfo)
bool
avtSTSDFileFormatInterface::PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo)
{
if (ts < 0 || ts >= nTimesteps)
{
EXCEPTION2(BadIndexException, ts, nTimesteps);
}
bool retval = false;
for (int j = 0 ; j < nBlocks ; j++)
{
timesteps[ts][j]->PopulateIOInformation(ioInfo);
retval |= timesteps[ts][j]->PopulateIOInformation(meshname, ioInfo);
}
return retval;
}
......@@ -94,6 +94,9 @@ class avtIOInformation;
// Hank Childs, Tue Dec 20 14:15:33 CST 2011
// Add method CreateCacheNameIncludingSelections.
//
// Brad Whitlock, Thu Jun 19 10:50:25 PDT 2014
// Pass mesh name to PopulateIOInformation.
//
// ****************************************************************************
class DATABASE_API avtSTSDFileFormatInterface : public avtFileFormatInterface
......@@ -121,7 +124,8 @@ class DATABASE_API avtSTSDFileFormatInterface : public avtFileFormatInterface
virtual void ActivateTimestep(int ts);
virtual void PopulateIOInformation(int ts, avtIOInformation& ioInfo);
virtual bool PopulateIOInformation(int ts, const std::string &meshname,
avtIOInformation& ioInfo);
protected:
avtSTSDFileFormat ***timesteps;
......
......@@ -15,7 +15,7 @@ SET(VISITARCH i386-apple-darwin12_gcc-4.2)
##
VISIT_OPTION_DEFAULT(VISIT_C_COMPILER gcc TYPE FILEPATH)
VISIT_OPTION_DEFAULT(VISIT_CXX_COMPILER g++ TYPE FILEPATH)
VISIT_OPTION_DEFAULT(VISIT_C_FLAGS "-fno-common -fexceptions -fvisibility=hidden" TYPE STRING)
VISIT_OPTION_DEFAULT(VISIT_C_FLAGS "-Wall -fno-common -fexceptions -fvisibility=hidden" TYPE STRING)
VISIT_OPTION_DEFAULT(VISIT_CXX_FLAGS "-Wall -fno-common -fexceptions -fvisibility=hidden" TYPE STRING)
##
......
......@@ -2193,15 +2193,18 @@ PF3DFileFormat::GetVar(int dom, const char *varName)
// Creation: Thu Jun 22 17:38:37 PST 2006
//
// Modifications:
// Brad Whitlock, Thu Jun 19 11:47:43 PDT 2014
// Pass meshname.
//
// ****************************************************************************
void
PF3DFileFormat::PopulateIOInformation(avtIOInformation &ioInfo)
bool
PF3DFileFormat::PopulateIOInformation(const std::string &meshname,
avtIOInformation &ioInfo)
{
const char *mName = "avtPF3DFileFormat::PopulateIOInformation: ";
int nGroups = master.Get_num_grp_size();
bool retval = false;
if(nGroups > 0)
{
std::vector<std::vector<int> > groups;
......@@ -2227,7 +2230,10 @@ PF3DFileFormat::PopulateIOInformation(avtIOInformation &ioInfo)
ioInfo.SetNDomains(master.GetNDomains());
ioInfo.AddHints(groups);
retval = true;
}
return retval;
}
///////////////////////////////////////////////////////////////////////////////
......
......@@ -86,7 +86,8 @@ public:
virtual double GetTime(void);
virtual void PopulateDatabaseMetaData(avtDatabaseMetaData *);
virtual void PopulateIOInformation(avtIOInformation &);
virtual bool PopulateIOInformation(const std::string &meshname,
avtIOInformation &);
virtual void *GetAuxiliaryData(const char *var, int dom,
const char *type, void *,
......
......@@ -2397,17 +2397,22 @@ avtSAMRAIFileFormat::GetAuxiliaryData(const char *var, int patch,
// Programmer: Mark C. Miller
// Creation: August 19. 2004
//
// Modifications:
// Brad Whitlock, Thu Jun 19 11:46:01 PDT 2014
// Pass mesh name.
//
// ****************************************************************************
void
avtSAMRAIFileFormat::PopulateIOInformation(avtIOInformation &ioInfo)
bool
avtSAMRAIFileFormat::PopulateIOInformation(const std::string &meshname,
avtIOInformation &ioInfo)
{
if (num_patches <= 1)
{
debug5 << "No need to do I/O optimization because there is only "
<< "one patch" << endl;
ioInfo.SetNDomains(1);
return;
return true;
}
if (num_clusters <= 1)
......@@ -2415,7 +2420,7 @@ avtSAMRAIFileFormat::PopulateIOInformation(avtIOInformation &ioInfo)
debug5 << "No need to do I/O optimization because there is only "
<< "one file for all patches" << endl;
ioInfo.SetNDomains(num_patches);
return;
return true;
}
//
......@@ -2440,6 +2445,7 @@ avtSAMRAIFileFormat::PopulateIOInformation(avtIOInformation &ioInfo)
ioInfo.SetNDomains(num_patches);
ioInfo.AddHints(groups);
return true;
}
// ****************************************************************************
......
......@@ -37,7 +37,7 @@
*****************************************************************************/
// ************************************************************************* //
// avtSAMRAIFileFormat.h //
// avtSAMRAIFileFormat.h //
// ************************************************************************* //
#ifndef AVT_SAMRAI_FILE_FORMAT_H
......@@ -130,7 +130,8 @@ class avtSAMRAIFileFormat : public avtSTMDFileFormat
double GetTime(void);
void PopulateDatabaseMetaData(avtDatabaseMetaData *);
void PopulateIOInformation(avtIOInformation &ioInfo);
bool PopulateIOInformation(const std::string &meshname,
avtIOInformation &ioInfo);
void RegisterVariableList(const char *,
const std::vector<CharStrRef> &);
......
......@@ -294,6 +294,9 @@ static vtkDataArray *CreateDataArray(int silotype, void *data, int numvals);
// Cyrus Harrison, Wed Mar 13 09:22:30 PDT 2013
// Init useLocalDomainBoundries.
//
// Brad Whitlock, Thu Jun 19 11:38:46 PDT 2014
// Set ioInfoValid.
//
// ****************************************************************************
avtSiloFileFormat::avtSiloFileFormat(const char *toc_name,
......@@ -320,6 +323,7 @@ avtSiloFileFormat::avtSiloFileFormat(const char *toc_name,
haveAmrGroupInfo = false;
useLocalDomainBoundries = false;
hasDisjointElements = false;
ioInfoValid = false;
topDir = "/";
siloDriver = DB_UNKNOWN;
dbfiles = new DBfile*[MAX_FILES];
......@@ -14707,7 +14711,45 @@ avtSiloFileFormat::CalcExternalFacelist(DBfile *dbfile, const char *mesh)
}
// ****************************************************************************
// Method: avtSiloFileFormat::PopulateIOInformation
// Method: avtSiloFileFormat::PopulateIOInformation(
//
// Purpose:
// Makes I/O groupings based on the layouts of the files.
//
// Arguments:
// meshname : The name of the mesh whose io information we want.
// io : The IO information object we're populating.
//
// Returns: True on success; false on failure
//
// Note: Calls the original version of the method which was renamed to
// PopulateIOInformationEx. This method tries to get the IO
// information once and reuses any cached results. This behavior
// was moved down from the avtDatabase level so file formats could
// decide how often they really get the IO information.
//
// Programmer: Brad Whitlock
// Creation: Thu Jun 19 11:40:24 PDT 2014
//
// Modifications:
//
// ****************************************************************************
bool
avtSiloFileFormat::PopulateIOInformation(const std::string &meshname, avtIOInformation &io)
{
if(!ioInfoValid)
{
ioInfoValid = PopulateIOInformationEx(meshname, ioInfo);
}
io = ioInfo;
return ioInfoValid;
}
// ****************************************************************************
// Method: avtSiloFileFormat::PopulateIOInformationEx
//
// Purpose:
// Makes I/O groupings based on the layouts of the files.
......@@ -14740,11 +14782,17 @@ avtSiloFileFormat::CalcExternalFacelist(DBfile *dbfile, const char *mesh)
// Limited support for Silo nameschemes, use new multi block cache data
// structures.
//
// Brad Whitlock, Thu Jun 19 11:43:13 PDT 2014
// I renamed the method to PopulateIOInformationEx and pass in the the
// mesh name. Note that the mesh name is not currently used but the intent
// is to allow different ioInfo for different multi-meshes.
//
// ****************************************************************************