diff --git a/Code/Mantid/Vates/VisitDataBases/inc/VisitDataBases/avtMDFileReaderFileFormat.h b/Code/Mantid/Vates/VisitDataBases/inc/VisitDataBases/avtMDFileReaderFileFormat.h index 975babc6f2e89c9e010fa0daa017fbe6003a5601..30faee2f12503b65039a65bdde88ab2667d5d070 100644 --- a/Code/Mantid/Vates/VisitDataBases/inc/VisitDataBases/avtMDFileReaderFileFormat.h +++ b/Code/Mantid/Vates/VisitDataBases/inc/VisitDataBases/avtMDFileReaderFileFormat.h @@ -83,6 +83,11 @@ class avtMDFileReaderFileFormat : public avtMTSDFileFormat // virtual int GetNTimesteps(void); + virtual void GetCycles(std::vector<int> &cycles); + virtual void GetTimes(std::vector<double> ×); + + virtual bool ReturnsValidCycle() const; + virtual bool ReturnsValidTime() const; virtual const char *GetType(void) { return "MDFileReader"; }; virtual void FreeUpResources(void); diff --git a/Code/Mantid/Vates/VisitDataBases/src/avtMDFileReaderFileFormat.C b/Code/Mantid/Vates/VisitDataBases/src/avtMDFileReaderFileFormat.C index 87ca35c71e205b548596ceac4de0fc49fb3c737b..527e634e3a71720863ed0b979e3e201d92af3fe8 100644 --- a/Code/Mantid/Vates/VisitDataBases/src/avtMDFileReaderFileFormat.C +++ b/Code/Mantid/Vates/VisitDataBases/src/avtMDFileReaderFileFormat.C @@ -92,6 +92,28 @@ avtMDFileReaderFileFormat::GetNTimesteps(void) return m_executor.getNumberOfTimesteps(); } +void avtMDFileReaderFileFormat::GetCycles(std::vector<int> &cycles) +{ + std::vector<int> allCycles = m_executor.getCycles(); + cycles.swap(allCycles); +} + +void avtMDFileReaderFileFormat::GetTimes(std::vector<double> ×) +{ + std::vector<double> allTimes = m_executor.getTimesteps(); + times.swap(allTimes); +} + +bool avtMDFileReaderFileFormat::ReturnsValidCycle() const +{ + return true; +} + +bool avtMDFileReaderFileFormat::ReturnsValidTime() const +{ + return true; +} + // **************************************************************************** // Method: avtMDFileReaderFileFormat::FreeUpResources diff --git a/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/MultiDimensionalDbPresenter.h b/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/MultiDimensionalDbPresenter.h index 939e13f08d7684edb45b0cf3cc09d2233ebe9f7a..b1025d5a88d31dc476b53a8c11b35ad4040dc1a6 100644 --- a/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/MultiDimensionalDbPresenter.h +++ b/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/MultiDimensionalDbPresenter.h @@ -69,6 +69,12 @@ public: /// Gets the number of timesteps in the workspace. int getNumberOfTimesteps() const; + /// Get the actual timestep values to use. + std::vector<double> getTimesteps() const; + + /// Get the actual cycle values to use. + std::vector<int> getCycles() const; + /// Get x axis name so that it may be applied to labels. std::string getXAxisName() const; diff --git a/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/vtkStructuredGridFactory.h b/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/vtkStructuredGridFactory.h index f540541c1826c011071da15df654a6e093632260..5e3fe3293a7351874a7786c0660d524bab83f258 100644 --- a/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/vtkStructuredGridFactory.h +++ b/Code/Mantid/Vates/VisitPresenters/inc/MantidVisitPresenters/vtkStructuredGridFactory.h @@ -106,7 +106,7 @@ vtkStructuredGridFactory<Image> & vtkStructuredGridFactory<Image>::operator=(con template<typename Image> -vtkStructuredGridFactory<Image>::vtkStructuredGridFactory(boost::shared_ptr<Image> image) : m_scalarName(""), m_timestep(0), m_image(image), m_meshOnly(true) +vtkStructuredGridFactory<Image>::vtkStructuredGridFactory(boost::shared_ptr<Image> image) : m_image(image), m_scalarName(""), m_timestep(0), m_meshOnly(true) { } diff --git a/Code/Mantid/Vates/VisitPresenters/src/MultiDimensionalDbPresenter.cpp b/Code/Mantid/Vates/VisitPresenters/src/MultiDimensionalDbPresenter.cpp index 2ddec6dddde8665e3f567c8ec1225af8eb2c6572..49916853baf2fbfddfed961d9befb59218e3a8f2 100644 --- a/Code/Mantid/Vates/VisitPresenters/src/MultiDimensionalDbPresenter.cpp +++ b/Code/Mantid/Vates/VisitPresenters/src/MultiDimensionalDbPresenter.cpp @@ -112,6 +112,31 @@ int MultiDimensionalDbPresenter::getNumberOfTimesteps() const return m_MDWorkspace->gettDimension()->getNBins(); } +std::vector<int> MultiDimensionalDbPresenter::getCycles() const +{ + verifyExecution(); + std::vector<int> cycles(m_MDWorkspace->gettDimension()->getNBins()); + for(unsigned int i=0; i < cycles.size(); i++) + { + cycles[i] = i; + } + return cycles; +} + +std::vector<double> MultiDimensionalDbPresenter::getTimesteps() const +{ + using namespace Mantid::Geometry; + verifyExecution(); + boost::shared_ptr<const IMDDimension> tDimension = m_MDWorkspace->gettDimension(); + const double increment = (tDimension->getMaximum() - tDimension->getMinimum())/tDimension->getNBins(); + std::vector<double> times(tDimension->getNBins()); + for(unsigned int i=0; i < tDimension->getNBins(); i++) + { + times[i] = tDimension->getMinimum() + (i*increment); + } + return times; +} + vtkDataArray* MultiDimensionalDbPresenter::getScalarData(int timeBin, const char* scalarName) const { using namespace Mantid::MDDataObjects; diff --git a/Code/Mantid/Vates/VisitPresenters/test/MultiDimensionalDbPresenterTest.h b/Code/Mantid/Vates/VisitPresenters/test/MultiDimensionalDbPresenterTest.h index b958b66c357241b5c7c975c544950e3f1b10f95b..59a917b004a537375cb80138b4575bcd6f56c0f7 100644 --- a/Code/Mantid/Vates/VisitPresenters/test/MultiDimensionalDbPresenterTest.h +++ b/Code/Mantid/Vates/VisitPresenters/test/MultiDimensionalDbPresenterTest.h @@ -12,13 +12,17 @@ using namespace Mantid::VATES; class MultiDimensionalDbPresenterTest : public CxxTest::TestSuite { +private: + + static std::string getTestFileName(){return "fe_demo_30.sqw";} + public: //Simple schenario testing end-to-end working of this presenter. void testConstruction() { MultiDimensionalDbPresenter mdPresenter; - mdPresenter.execute("fe_demo_30.sqw"); + mdPresenter.execute(getTestFileName()); vtkDataArray* data = mdPresenter.getScalarData(1, "signal"); vtkDataSet* visData = mdPresenter.getMesh(); @@ -29,6 +33,22 @@ void testConstruction() visData->Delete(); } +void testGetCycles() +{ + MultiDimensionalDbPresenter mdPresenter; + mdPresenter.execute(getTestFileName()); + std::vector<int> vecCycles = mdPresenter.getCycles(); + TSM_ASSERT_EQUALS("Wrong number of cycles in cycles collection.", vecCycles.size(), mdPresenter.getNumberOfTimesteps()); +} + +void testGetTimesteps() +{ + MultiDimensionalDbPresenter mdPresenter; + mdPresenter.execute(getTestFileName()); + std::vector<double> vecTimes = mdPresenter.getTimesteps(); + TSM_ASSERT_EQUALS("Wrong number of times in times collection.", vecTimes.size(), mdPresenter.getNumberOfTimesteps()); +} + void testGetScalarDataThrows() { MultiDimensionalDbPresenter mdPresenter; @@ -53,7 +73,28 @@ void testGetNumberOfTimestepsThrows() //No execution call. Test that type cannot be used improperly. - TSM_ASSERT_THROWS("Accessing mesh data without first calling execute should not be possible", mdPresenter.getNumberOfTimesteps(), std::runtime_error); + TSM_ASSERT_THROWS("Accessing timestep number data without first calling execute should not be possible", mdPresenter.getNumberOfTimesteps(), std::runtime_error); +} + +void testGetCylesThrows() +{ + MultiDimensionalDbPresenter mdPresenter; + + //No execution call. Test that type cannot be used improperly. + + TSM_ASSERT_THROWS("Accessing cycles data without first calling execute should not be possible", mdPresenter.getCycles(), std::runtime_error); + +} + +void testGetTimestepsThrows() +{ + + MultiDimensionalDbPresenter mdPresenter; + + //No execution call. Test that type cannot be used improperly. + + TSM_ASSERT_THROWS("Accessing timestep data without first calling execute should not be possible", mdPresenter.getTimesteps(), std::runtime_error); + }