Simplification in DataExporter
- remove unused members - use range-based for loops - remove unnecessary if inside the writer loop
This commit is contained in:
committed by
Knut Morten Okstad
parent
ff9b50f033
commit
e2fb65447a
@@ -73,19 +73,6 @@ bool DataExporter::registerField (const std::string& name,
|
||||
}
|
||||
|
||||
|
||||
bool DataExporter::registerWriter (DataWriter* writer, bool info, bool data)
|
||||
{
|
||||
m_writers.push_back(writer);
|
||||
|
||||
if (info)
|
||||
m_infoReader = writer;
|
||||
if (data)
|
||||
m_dataReader = writer;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool DataExporter::setFieldValue (const std::string& name,
|
||||
const void* data,
|
||||
const void* data2,
|
||||
@@ -107,50 +94,45 @@ bool DataExporter::setFieldValue (const std::string& name,
|
||||
|
||||
bool DataExporter::dumpTimeLevel (const TimeStep* tp, bool geometryUpdated)
|
||||
{
|
||||
// ignore multiple calls for the same time step
|
||||
if (tp && tp->step == m_last_step)
|
||||
return true;
|
||||
if (tp) {
|
||||
if (tp->step == m_last_step)
|
||||
return true; // ignore multiple calls for the same time step
|
||||
else if (tp->step % m_ndump > 0)
|
||||
return true; // write only every m_ndump step
|
||||
|
||||
bool writeData = !tp || tp->step % m_ndump == 0;
|
||||
|
||||
if (!writeData)
|
||||
return true;
|
||||
m_last_step = tp->step;
|
||||
}
|
||||
|
||||
PROFILE1("DataExporter::dumpTimeLevel");
|
||||
|
||||
if (tp)
|
||||
m_last_step = tp->step;
|
||||
|
||||
if (m_level == -1)
|
||||
m_level = this->getWritersTimeLevel()+1;
|
||||
|
||||
std::map<std::string,FileEntry>::iterator it;
|
||||
for (DataWriter* writer : m_writers) {
|
||||
writer->openFile(m_level);
|
||||
for (it = m_entry.begin(); it != m_entry.end(); ++it) {
|
||||
if (!it->second.data)
|
||||
for (const DataEntry& it : m_entry) {
|
||||
if (!it.second.data)
|
||||
return false;
|
||||
switch (it->second.field) {
|
||||
switch (it.second.field) {
|
||||
case INTVECTOR:
|
||||
case VECTOR:
|
||||
writer->writeVector(m_level,*it);
|
||||
writer->writeVector(m_level,it);
|
||||
break;
|
||||
case SIM:
|
||||
if (writeData)
|
||||
writer->writeSIM(m_level,*it,geometryUpdated,it->second.prefix);
|
||||
writer->writeSIM(m_level,it,geometryUpdated,it.second.prefix);
|
||||
break;
|
||||
case NODALFORCES:
|
||||
writer->writeNodalForces(m_level,*it);
|
||||
writer->writeNodalForces(m_level,it);
|
||||
break;
|
||||
case KNOTSPAN:
|
||||
writer->writeKnotspan(m_level,*it,it->second.prefix);
|
||||
writer->writeKnotspan(m_level,it,it.second.prefix);
|
||||
break;
|
||||
case BASIS:
|
||||
writer->writeBasis(m_level,*it,it->second.prefix);
|
||||
writer->writeBasis(m_level,it,it.second.prefix);
|
||||
break;
|
||||
default:
|
||||
std::cerr <<" ** DataExporter: Invalid field type registered "
|
||||
<< it->second.field <<", skipping"<< std::endl;
|
||||
<< it.second.field <<", skipping"<< std::endl;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -162,9 +144,9 @@ bool DataExporter::dumpTimeLevel (const TimeStep* tp, bool geometryUpdated)
|
||||
m_level++;
|
||||
|
||||
// disable fields marked as once
|
||||
for (it = m_entry.begin(); it != m_entry.end(); ++it)
|
||||
if (abs(it->second.results) & ONCE)
|
||||
it->second.enabled = false;
|
||||
for (std::pair<const std::string,FileEntry>& it : m_entry)
|
||||
if (abs(it.second.results) & ONCE)
|
||||
it.second.enabled = false;
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -225,8 +207,9 @@ void DataExporter::OnControl(const TiXmlElement* context)
|
||||
|
||||
std::string DataExporter::getName() const
|
||||
{
|
||||
if (!m_writers.empty())
|
||||
return m_writers.front()->getName().substr(0,m_writers.front()->getName().rfind('.'));
|
||||
if (m_writers.empty())
|
||||
return "";
|
||||
|
||||
return "";
|
||||
const std::string& name = m_writers.front()->getName();
|
||||
return name.substr(0,name.rfind('.'));
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
#include "ControlFIFO.h"
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -80,12 +79,14 @@ public:
|
||||
//! \param[in] dynWriters If \e true, delete the writers on destruction
|
||||
//! \param[in] ndump Interval between dumps
|
||||
DataExporter(bool dynWriters = false, int ndump=1) :
|
||||
m_delete(dynWriters), m_level(-1), m_ndump(ndump),
|
||||
m_last_step(-1), m_infoReader(0), m_dataReader(0) {}
|
||||
m_delete(dynWriters), m_level(-1), m_ndump(ndump), m_last_step(-1) {}
|
||||
|
||||
//! \brief The destructor deletes the writers if \a dynWriters was \e true.
|
||||
virtual ~DataExporter();
|
||||
|
||||
//! \brief Adds the data \a writer to the list of registered writers.
|
||||
void registerWriter(DataWriter* writer) { m_writers.push_back(writer); }
|
||||
|
||||
//! \brief Registers an entry for storage.
|
||||
//! \param[in] name Name of entry
|
||||
//! \param[in] description Description of entry
|
||||
@@ -98,12 +99,6 @@ public:
|
||||
FieldType field, int results = PRIMARY,
|
||||
const std::string& prefix = "", int ncmps = 0);
|
||||
|
||||
//! \brief Registers a data writer.
|
||||
//! \param[in] writer A pointer to the data writer we want registered
|
||||
//! \param info If \e true, set as default info reader
|
||||
//! \param reader If \e true, set as default data reader
|
||||
bool registerWriter(DataWriter* writer, bool info=false, bool reader=false);
|
||||
|
||||
//! \brief Sets the data values for a registered field.
|
||||
//! \param[in] name Name the field is registered with
|
||||
//! \param[in] data The value to set the field to
|
||||
@@ -135,10 +130,10 @@ public:
|
||||
//! \brief Returns context name for callback for external controller.
|
||||
virtual std::string GetContext() const { return "datawriter"; }
|
||||
|
||||
//! \brief Return name from data writer
|
||||
//! \brief Returns name from (first) data writer.
|
||||
std::string getName() const;
|
||||
|
||||
//! \brief Returns visualization data stride
|
||||
//! \brief Returns the data dump stride.
|
||||
int getStride() const { return m_ndump; }
|
||||
|
||||
protected:
|
||||
@@ -154,9 +149,6 @@ protected:
|
||||
int m_level; //!< Current time level
|
||||
int m_ndump; //!< Time level stride for dumping
|
||||
int m_last_step; //!< Last time step we dumped for
|
||||
|
||||
DataWriter* m_infoReader; //!< DataWriter to read data information from
|
||||
DataWriter* m_dataReader; //!< DataWriter to read numerical data from
|
||||
};
|
||||
|
||||
//! \brief Convenience type
|
||||
|
||||
Reference in New Issue
Block a user