Updates will be applied April 15th at 12pm EDT (UTC-0400). GitLab could be a little slow between 12 - 12:45pm EDT.

Commit 60ba63ea authored by hrchilds's avatar hrchilds

Update from March 23, 2004

git-svn-id: http://visit.ilight.com/svn/visit/trunk/src@203 18c085ea-50e0-402c-830e-de6fd14e8384
parent 97570a96
......@@ -300,6 +300,12 @@ $0 = shift @ARGV;
# Eric Brugger, Tue Mar 16 13:56:05 PST 2004
# Added /usr/local/lib to LD_LIBRARY_PATH.
#
# Jeremy Meredith, Tue Mar 23 14:21:57 PST 2004
# Added better support for parallel engine arguments. Instead of expecting
# the viewer to pass them along, we concatenate them into a single
# colon-delimited string and pass it as the argument to "-engineargs", which
# is a new option the viewer can parse.
#
###############################################################################
......@@ -690,15 +696,22 @@ if ((($parallel) or ($launchengine)) and
{
# If we're trying to run in parallel, or we've been explicitly
# told to launch an engine, add any parallel arguments back on
push @visitargs, "-par" if ($parallel && !$procs_set);
push @visitargs, "-l", $launch if ($launch_set);
push @visitargs, "-la", "@launchargs" if ($launchargs_set);
push @visitargs, "-np", $procs if ($procs_set);
push @visitargs, "-nn", $nodes if ($nodes_set);
push @visitargs, "-n", $name if ($name_set);
push @visitargs, "-p", $part if ($part_set);
push @visitargs, "-b", $bank if ($bank_set);
push @visitargs, "-t", $time if ($time_set);
@engine_parallel_args = ();
push @engine_parallel_args, "-par" if ($parallel && !$procs_set);
push @engine_parallel_args, "-l", $launch if ($launch_set);
push @engine_parallel_args, "-la", "@launchargs" if ($launchargs_set);
push @engine_parallel_args, "-np", $procs if ($procs_set);
push @engine_parallel_args, "-nn", $nodes if ($nodes_set);
push @engine_parallel_args, "-n", $name if ($name_set);
push @engine_parallel_args, "-p", $part if ($part_set);
push @engine_parallel_args, "-b", $bank if ($bank_set);
push @engine_parallel_args, "-t", $time if ($time_set);
if (scalar(@engine_parallel_args) > 0)
{
$engine_arg_string = ":".join(':', @engine_parallel_args);
push @visitargs, "-engineargs", $engine_arg_string;
}
# ... but don't confuse the script
$parallel=0;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -58,6 +58,9 @@ bool avtDatabase::onlyServeUpMetaData = false;
// Hank Childs, Fri Aug 31 17:01:18 PDT 2001
// Initialized gotIOInfo.
//
// Jeremy Meredith/Hank Childs, Tue Mar 23 12:26:55 PST 2004
// Initialize file format type.
//
// ****************************************************************************
avtDatabase::avtDatabase()
......@@ -65,6 +68,7 @@ avtDatabase::avtDatabase()
gotIOInfo = false;
invariantMetaData = NULL;
invariantSIL = NULL;
fileFormat = "<unknown>";
}
......@@ -529,6 +533,9 @@ avtDatabase::GetMostRecentTimestep(void) const
// Hank Childs, Thu Jan 22 10:05:41 PST 2004
// Do not populate the I/O information if we are only getting meta-data.
//
// Jeremy Meredith/Hank Childs, Tue Mar 23 12:26:55 PST 2004
// Set the file format with the meta-data.
//
// ****************************************************************************
void
......@@ -551,6 +558,7 @@ avtDatabase::GetNewMetaData(int timeState)
fname = filename;
SetDatabaseMetaData(md, timeState);
md->SetDatabaseName(fname);
md->SetFileFormat(fileFormat);
md->SetMustRepopulateOnStateChange(!MetaDataIsInvariant() ||
!SILIsInvariant());
......
......@@ -161,6 +161,9 @@ typedef struct {
// Added stateIndex argument to GetIOInformation.
// Implemented PopulateIOInformation here instead of in file
//
// Jeremy Meredith/Hank Childs, Tue Mar 23 12:26:55 PST 2004
// Add file format as a data member.
//
// ****************************************************************************
class DATABASE_API avtDatabase
......@@ -208,6 +211,12 @@ class DATABASE_API avtDatabase
static void GetFileListFromTextFile(const char *,
char **&, int &);
void SetFileFormat(const std::string &ff)
{ fileFormat = ff; };
const std::string &GetFileFormat(void) const
{ return fileFormat; };
protected:
std::list<CachedMDEntry> metadata;
std::list<CachedSILEntry> sil;
......@@ -215,6 +224,7 @@ class DATABASE_API avtDatabase
avtIOInformation ioInfo;
bool gotIOInfo;
static bool onlyServeUpMetaData;
std::string fileFormat;
static int mdCacheSize;
static int silCacheSize;
......
......@@ -277,6 +277,10 @@ avtDatabaseFactory::FileList(const char * const * filelist, int filelistN,
// Programmer: Hank Childs
// Creation: March 22, 2004
//
// Modifications:
// Jeremy Meredith/Hank Childs, Tue Mar 23 12:26:55 PST 2004
// Set the file format with the database, not the meta-data.
//
// ****************************************************************************
avtDatabase *
......@@ -299,8 +303,8 @@ avtDatabaseFactory::SetupDatabase(CommonDatabasePluginInfo *info,
if (rv != NULL)
{
rv->ActivateTimestep(timestep);
avtDatabaseMetaData *md = rv->GetMetaData(timestep);
md->SetFileFormat(info->GetID());
rv->SetFileFormat(info->GetID());
rv->GetMetaData(timestep);
}
return rv;
......
##
## Set the VISITHOME environment variable.
##
VISITHOME=/export/home/miller/visit/visit
##
## Use mpich for parallel builds
##
LDFLAGS="-L/export/home/miller/pkg/mpich/mpich-1.2.5.2/lib $LDFLAGS"
CPPFLAGS="-I/export/home/miller/pkg/mpich/mpich-1.2.5.2/include $CPPFLAGS"
MPI_LIBS="-lmpich"
##
## Specify the location of the silo include files and library.
##
DEFAULT_SILO_INCLUDES=$VISITHOME/silo/include
DEFAULT_SILO_LIBRARY=$VISITHOME/silo/lib
##
## Specify the location of the mesa include files and libraries.
##
MESA=$VISITHOME/mesa
##
## Specify the location of the vtk include files and libraries.
##
VTK=$VISITHOME/vtk
##
## Specify the location of the qt include files and libraries.
##
QTDIR=$VISITHOME/qt
##
## Specify the location of the python include files and libraries.
##
PYDIR=$VISITHOME/python
PYVERSION=python2.1
#
# HDF5
#
DEFAULT_HDF5_INCLUDE=/export/home/miller/pkg/hdf/hdf5-1.4.1/src
DEFAULT_HDF5_LIB=/export/home/miller/pkg/hdf/hdf5-1.4.1/src/.libs
......@@ -141,6 +141,9 @@ RPCExecutor<KeepAliveRPC>::Execute(KeepAliveRPC *rpc)
// Hank Childs, Tue Mar 9 14:27:31 PST 2004
// Load the database plugin before reading.
//
// Jeremy Meredith, Tue Mar 23 14:41:33 PST 2004
// Added the file format as an argument to StartNetwork.
//
// ****************************************************************************
template<>
void
......@@ -153,7 +156,8 @@ RPCExecutor<ReadRPC>::Execute(ReadRPC *rpc)
TRY
{
DatabasePluginManager::Instance()->PluginAvailable(rpc->GetFormat());
netmgr->StartNetwork(rpc->GetFile(), rpc->GetVar(), rpc->GetTime(),
netmgr->StartNetwork(rpc->GetFile(), rpc->GetFormat(),
rpc->GetVar(), rpc->GetTime(),
rpc->GetCSRAttributes(),
rpc->GetMaterialAttributes());
rpc->SendReply();
......
......@@ -476,9 +476,13 @@ NetworkManager::GetDBFromCache(const string &filename, int time,
// Do not make the database be a node for the network. Also add the EEF
// as a node.
//
// Jeremy Meredith, Tue Mar 23 14:40:20 PST 2004
// Added the file format as an argument. Made use of it in GetDBFromCache.
//
// ****************************************************************************
void
NetworkManager::StartNetwork(const string &filename, const string &var,
NetworkManager::StartNetwork(const string &filename, const string &format,
const string &var,
int time,
const CompactSILRestrictionAttributes &atts,
const MaterialAttributes &matopts)
......@@ -514,7 +518,7 @@ NetworkManager::StartNetwork(const string &filename, const string &var,
// Start up the DataNetwork and add the database to it.
workingNet = new DataNetwork;
NetnodeDB *netDB = GetDBFromCache(filename, time);
NetnodeDB *netDB = GetDBFromCache(filename, time, format.c_str());
workingNet->SetNetDB(netDB);
netDB->SetDBInfo(filename, leaf, time);
......@@ -1945,12 +1949,14 @@ NetworkManager::Pick(const int id, PickAttributes *pa)
// Set QueryAtts' PipeIndex so that original data queries can be
// load balanced.
//
// Kathleen Bonnell, Tue Mar 23 18:00:29 PST 2004
// Delay setting of PipeIndex until the networkIds have been verified.
//
// ****************************************************************************
void
NetworkManager::Query(const std::vector<int> &ids, QueryAttributes *qa)
{
std::vector<avtDataObject_p> queryInputs;
qa->SetPipeIndex(networkCache[ids[0]]->GetPipelineSpec()->GetPipelineIndex());
for (int i = 0 ; i < ids.size() ; i++)
{
int id = ids[i];
......@@ -1988,6 +1994,7 @@ NetworkManager::Query(const std::vector<int> &ids, QueryAttributes *qa)
queryInputs.push_back(queryInput);
}
qa->SetPipeIndex(networkCache[ids[0]]->GetPipelineSpec()->GetPipelineIndex());
std::string queryName = qa->GetName();
avtDataObjectQuery *query = NULL;
avtDataObject_p queryInput;
......
......@@ -131,6 +131,9 @@ class VisWindow;
// Hank Childs, Mon Mar 22 11:10:43 PST 2004
// Allow for the database's file format type to be specified explicitly.
//
// Jeremy Meredith, Tue Mar 23 10:55:10 PST 2004
// Added a file format string to StartNetwork.
//
// ****************************************************************************
class NetworkManager
{
......@@ -145,7 +148,7 @@ class NetworkManager
NetnodeDB* GetDBFromCache(const string &filename, int time,
const char * = NULL);
void StartNetwork(const std::string&, const std::string &,
int,
const std::string &, int,
const CompactSILRestrictionAttributes &,
const MaterialAttributes &);
void DefineDB(const std::string &, const std::string &,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Language" content="en-us">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>VisIt 1.3b1 Release Notes</title>
</head>
<body>
<center><b><font size="6">VisIt 1.3b1 Release Notes</font></b></center>
<p>Welcome to VisIt's release notes page. This page describes the important
enhancements and bug-fixes that were added to this release.</p>
<p><b><font size="4">Features added in version 1.3b1</font></b></p>
<ul>
<li>Build SAMRAI on gps and mcr.</li>
<li>Would like VisIt to recognize "mkf" for Master Kull File.</li>
<li>Timeout not exposed on MCR.</li>
<li>Should load database plugins on demand in engine.</li>
<li>Put database reader libraries that we build ourselves into the third_party directory in VOB</li>
<li>Remove engine dependence on Qt.</li>
<li>The icons in the tool bar are difficult to see.</li>
<li>Should issue an informational message when loading plugins</li>
</ul>
<p><b><font size="4">Bugs fixed in version 1.3b1</font></b></p>
<ul>
<li>pick on non-plotted, expression variable with #doms < #procs causes hang</li>
<li>Viewer hung after mdserver not accessed for a while.</li>
<li>Even though SR is always, huge dataset gets transferred to viewer.</li>
<li>Area between 2 curves query crashes viewer if the curves are not from the same database</li>
<li>zero entry in species speclist causes crash during query</li>
<li>Problems with Queries->Zone Pick</li>
<li>Viewer crashes when SR image does not come back correctly.</li>
<li>LD_LIBRARY_PATH should be set on Suns.</li>
<li>Variables drop down contains wrong variable list.</li>
<li>make LEOS plugin generate expression friendly variable names</li>
<li>The viewer kept trying to restart the compute engine even after the GUI told the viewer to quit.</li>
<li>PDB files are opened as Silo files if you've ever opened a Silo file.</li>
<li>Project to 2D not saved/restored correctly</li>
<li>Vector plot displays NaNs for legend in SR mode</li>
<li>Does sending a ClearCache RPC to the engine really free memory?</li>
<li>Plot has wrong view when Scalable Rendering kicks in after other plots are already drawn.</li>
<li>Changing #samples in Volume plot when autoupdate is on can hang the viewer.</li>
<li>Vector point vars not read correctly.</li>
<li>Wild card matching failed.</li>
<li>VisIt can't read old style silo files</li>
<li>Coloring with wrong extents with point meshes.</li>
<li>Range of vector is being determined using only what has been displayed.</li>
<li>Confusion over centering with complicated case.</li>
<li>Confusion over expanded operators.</li>
<li>xml2atts writes out the list of enums for all xml files that it has seen</li>
<li>VisIt can't plot mesh for VTK file.</li>
<li>pdb tests trigger bad material number warning</li>
<li>Problem with database code generation.</li>
<li>Engine relaunching has odd behavior.</li>
<li>Some zonal expressions are identified as nodal.</li>
<li>Visit no longer builds on Hyper</li>
<li>Failure to launch engine can result in infinite restarts.</li>
</ul>
<p>Click the following link to view the release notes for the previous version
of VisIt: <a href="relnotes1.2.8.html">VisIt 1.2.8 Release Notes</a>.</p>
</body>
</html>
......@@ -50,6 +50,11 @@ using std::string;
// Inserted "false" before numRestarts so that it wouldn't take numRestarts
// as the value for skipChooser.
//
// Jeremy Meredith, Mon Mar 22 17:15:44 PST 2004
// Added a setting of retry=false when creating the engine in the first
// section of code, because if the user cancels the launch of the engine,
// it could otherwise get into an infinite loop.
//
#define ENGINE_PROXY_RPC_BEGIN(rpcname) \
const char *hostName = RealHostName(hostName_); \
bool retval = false; \
......@@ -66,6 +71,7 @@ using std::string;
<< hostName << ".\n****" << endl; \
CreateEngine(hostName_, restartArguments, false, numRestarts); \
engineIndex = GetEngineIndex(hostName); \
retry = false; \
} \
if(engineIndex >= 0) \
{ \
......@@ -449,9 +455,13 @@ ViewerEngineManager::GetEngineIndex(const char *hostName) const
// Mark C. Miller, Sat Jan 17 12:40:16 PST 2004
// Changed how numRestarts is set
//
// Jeremy Meredith, Mon Mar 22 17:55:36 PST 2004
// Added a boolean "success" return value to this method. Cancelling
// or failing to start an engine results in a return value of false.
//
// ****************************************************************************
void
bool
ViewerEngineManager::CreateEngine(const char *hostName,
const stringVector &args,
bool skipChooser,
......@@ -477,13 +487,17 @@ ViewerEngineManager::CreateEngine(const char *hostName,
//
// If an engine for the host doesn't already exist, create one.
//
int success = true;
if(engineIndex < 0)
{
success = false;
ViewerRemoteProcessChooser *chooser =
ViewerRemoteProcessChooser::Instance();
if (! chooser->SelectProfile(clientAtts,hostName,skipChooser))
return;
{
return false;
}
EngineProxy *newEngine = new EngineProxy;
......@@ -565,6 +579,9 @@ ViewerEngineManager::CreateEngine(const char *hostName,
// Now that the new engine is in the list, tell the GUI.
UpdateEngineList();
// Success!
success = true;
}
CATCH2(BadHostException, e)
{
......@@ -634,6 +651,8 @@ ViewerEngineManager::CreateEngine(const char *hostName,
// Delete the connection dialog
delete dialog;
}
return success;
}
// ****************************************************************************
......@@ -1040,6 +1059,11 @@ ViewerEngineManager::LaunchMessage(const char *hostName) const
// Added setting of engineIndex to the loop over plots. Added use of
// RealHostName in computing the engineIndex
//
// Jeremy Meredith, Mon Mar 22 17:57:32 PST 2004
// Added a check to make sure the engine actually existed before clearing
// its status inside the exception handler. It is possible the engine died
// or was closed when it gets to that piece of code.
//
// ****************************************************************************
bool
......@@ -1142,7 +1166,8 @@ ViewerEngineManager::ExternalRender(std::vector<const char*> pluginIDsList,
#endif
// Send a message to the client to clear the status for the
// engine that had troubles.
ClearStatus(engines[engineIndex]->hostName);
if (engineIndex >= 0)
ClearStatus(engines[engineIndex]->hostName);
//
// Let calling method handle this exception.
......@@ -2255,14 +2280,23 @@ ViewerEngineManager::Query(const char *hostName_, const std::vector<int> &nid,
// Programmer: Kathleen Bonnell
// Creation: September 18, 2002
//
// Jeremy Meredith, Mon Mar 22 17:59:09 PST 2004
// First, I made it not bother attempting this if there was no engine
// for this host. Second, I made it not attempt to restart an engine
// if it had died.
//
// ****************************************************************************
bool
ViewerEngineManager::ReleaseData(const char *hostName_, int id)
{
// If the engine has gone away, we have no need to call this method!
if (GetEngineIndex(RealHostName(hostName_)) < 0)
return true;
ENGINE_PROXY_RPC_BEGIN("ReleaseData");
engine->ReleaseData(id);
ENGINE_PROXY_RPC_END;
ENGINE_PROXY_RPC_END_NORESTART;
}
// ****************************************************************************
......
......@@ -132,6 +132,9 @@ typedef struct
// Brad Whitlock, Fri Mar 12 11:39:27 PDT 2004
// Added SendKeepAlives.
//
// Jeremy Meredith, Mon Mar 22 09:20:58 PST 2004
// Made CreateEngine return a success flag.
//
// ****************************************************************************
class VIEWER_API ViewerEngineManager : public ViewerServerManager,
......@@ -143,7 +146,7 @@ class VIEWER_API ViewerEngineManager : public ViewerServerManager,
static ViewerEngineManager *Instance();
void CreateEngine(const char *hostname,
bool CreateEngine(const char *hostname,
const std::vector<std::string> &arguments,
bool skipChooser=false,
int numRestarts=-1);
......
......@@ -141,6 +141,12 @@ ViewerHostProfileSelectorWithWin::~ViewerHostProfileSelectorWithWin()
// Kathleen Bonnell, Wed Feb 5 09:46:31 PST 2003
// Extracted code from ViewerHostProfileSelector::GetNewEngine.
//
// Jeremy Meredith, Tue Mar 23 13:18:27 PST 2004
// Disabled the code to cache the profile. With our big parallel machines,
// resources change so frequently that it will irritate users to assume
// that they want the same number of processors every time the engine
// launches.
//
// ****************************************************************************
bool
......@@ -213,7 +219,13 @@ ViewerHostProfileSelectorWithWin::SelectProfile(
}
// Save it for use later
cachedProfile[hostName] = profile;
// DISABLED 3/23/04 JSM: No! This was causing more usability
// issues than it solved. With our big parallel machines,
// resources change so frequently that it will irritate a
// user to assume that they want the same number of processors
// every time the engine launches.
//cachedProfile[hostName] = profile;
}
return true;
}
......
......@@ -3173,6 +3173,10 @@ ViewerPlotList::InterruptUpdatePlotList()
// Kathleen Bonnell, Thu Aug 28 10:10:35 PDT 2003
// Added call to CanMeshPlotBeOpaque.
//
// Jeremy Meredith, Mon Mar 22 17:40:13 PST 2004
// Removed the ifdef to disable caching. It was past its expiration date.
// I added a check to see if a plot was interrupted during its creation.
//
// ****************************************************************************
bool
......@@ -3193,11 +3197,8 @@ ViewerPlotList::UpdatePlots(const int frame, bool animating)
if (plots[i].realized &&
plots[i].plot->IsInFrameRange(frame) &&
!plots[i].hidden &&
!plots[i].plot->GetErrorFlag()
#ifndef JEREMY_CACHE_KLUDGE
&& plots[i].plot->NoActorExists(frame)
#endif
)
!plots[i].plot->GetErrorFlag() &&
plots[i].plot->NoActorExists(frame))
{
if(interrupted)
{
......@@ -3227,6 +3228,12 @@ ViewerPlotList::UpdatePlots(const int frame, bool animating)
#else
CreatePlot((void *)info);
#endif
if(interrupted)
{
plots[i].plot->SetErrorFlag(true);
continue;
}
}
}
......@@ -3813,6 +3820,12 @@ ViewerPlotList::UpdatePlotAtts(bool updateThoseNotRepresented) const
// Programmer: Mark C. Miller
// Creation: 07Apr03
//
// Modifications:
// Jeremy Meredith, Tue Mar 23 14:27:15 PST 2004
// Scalable rendering required an actor to not only exist but also
// have some actor before scalable rendering would affect it. I
// made the test for plots to be rendered more stringent.
//
// ****************************************************************************
void
......@@ -3827,7 +3840,7 @@ ViewerPlotList::GetCurrentPlotAtts(
for (int i = 0; i < nPlots; i++)
{
if (plots[i].plot->IsInFrameRange(frame) && !plots[i].hidden &&
plots[i].realized)
plots[i].realized && !plots[i].plot->NoActorExists(frame))
{
ViewerPlot *plot = plots[i].plot;
......@@ -4470,6 +4483,12 @@ PthreadAttrInit(pthread_attr_t *attr)
// I added code to catch AbortException which is now rethrown from
// the call to CreateActor.
//
// Jeremy Meredith, Tue Mar 23 14:29:07 PST 2004
// I made it check that the SetWindowAtts RPC succeeded before proceeding,
// and setting the interruption status if not. The SetWindowAtts RPC is
// the first one called for a plot, so it can fail if the engine didn't
// launch.
//
// ****************************************************************************
void *
......@@ -4479,8 +4498,13 @@ CreatePlot(void *info)
TRY
{
plotInfo->animation->SetWindowAtts(plotInfo->plot->GetHostName());
plotInfo->plot->CreateActor(plotInfo->animation->GetFrameIndex());
bool success =
plotInfo->animation->SetWindowAtts(plotInfo->plot->GetHostName());
if (success)
plotInfo->plot->CreateActor(plotInfo->animation->GetFrameIndex());
else
plotInfo->plotList->InterruptUpdatePlotList();
}
CATCH(AbortException)
{
......
......@@ -839,6 +839,11 @@ ViewerQueryManager::GetQueryClientAtts()
// Kathleen Bonnell, Fri Mar 5 15:48:44 PST 2004
// Only DetermineVarTypes if necessary, and added more TRY-CATCH blocks.
//
// Kathleen Bonnell, Tue Mar 23 15:31:32 PST 2004
// Restructured try-catch block around actual query execution, to catch
// ImproperUseException which can occur if engine has been closed prior
// to initiation of query.
//
// ****************************************************************************
void
......@@ -1062,45 +1067,29 @@ ViewerQueryManager::DatabaseQuery(ViewerWindow *oWin, const string &qName,
Error(message);
}
}