diff --git a/targets/tests/TestingHULC/Utilities/TestCondition/TestCondition.h b/targets/tests/TestingHULC/Utilities/TestCondition/TestCondition.h
index db6d6367a92a38d0abadf95b8294ac022dde215f..2672173c9d726a10e85e33890154bb0825cfc806 100644
--- a/targets/tests/TestingHULC/Utilities/TestCondition/TestCondition.h
+++ b/targets/tests/TestingHULC/Utilities/TestCondition/TestCondition.h
@@ -9,7 +9,8 @@
 class Parameter;
 class GridProvider;
 class DataWriter;
-class Results;
+class Calculator;
+class TestResults;
 
 class TestCondition
 {
@@ -17,7 +18,8 @@ public:
 	virtual std::shared_ptr<Parameter> getParameter() = 0;
 	virtual std::shared_ptr<GridProvider> getGrid() = 0;
 	virtual std::shared_ptr<DataWriter> getDataWriter() = 0;
-	virtual std::shared_ptr<Results> getSimulationResults() = 0;
+	virtual std::shared_ptr<TestResults> getTestResults() = 0;
+	virtual std::shared_ptr<Calculator> getCalculator() = 0;
 private:
 
 };
diff --git a/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp b/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp
index 4d901dd6979ae5fccef498160b6fa00f7254827b..d52703d467051e3ac82253c023522dee4ddffd37 100644
--- a/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp
+++ b/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.cpp
@@ -7,6 +7,7 @@
 #include "Utilities\Results\Results.h"
 #include "Utilities\DataWriter\Y2dSliceToResults\Y2dSliceToResults.h"
 #include "Utilities\InitialCondition\InitialCondition.h"
+#include "Utilities\Calculator\Calculator.h"
 
 #include <sstream>
 
@@ -25,9 +26,14 @@ std::shared_ptr<DataWriter> TestConditionImp::getDataWriter()
 	return writeToVector;
 }
 
-std::shared_ptr<Results> TestConditionImp::getSimulationResults()
+std::shared_ptr<TestResults> TestConditionImp::getTestResults()
 {
-	return simResults;
+	return testResults;
+}
+
+std::shared_ptr<Calculator> TestConditionImp::getCalculator()
+{
+	return calculator;
 }
 
 
@@ -132,14 +138,26 @@ void TestConditionImp::initGridProvider()
 	grid = std::shared_ptr<GridProvider>(new GridReaderforTesting(para, initialCondition));
 }
 
-void TestConditionImp::initResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength)
+void TestConditionImp::initCalculator(std::shared_ptr<Calculator> calc)
+{
+	this->calculator = calc;
+}
+
+
+void TestConditionImp::setTestResults(std::shared_ptr<TestResults> testResults)
 {
-	simResults = std::shared_ptr<Results>(new Results(lx,lz,timeStepLength));
+	this->testResults = testResults;
 }
 
+
 void TestConditionImp::initDataWriter(unsigned int ySliceForCalculation, unsigned int startTimeCalculation, unsigned int endTime, unsigned int timeStepLength, bool writeFiles, unsigned int startTimeDataWriter)
 {
 	fileWriter = std::shared_ptr<FileWriter>(new FileWriter());
 	writeToVector = std::shared_ptr<ToVectorWriter>(new Y2dSliceToResults(simResults, ySliceForCalculation, startTimeCalculation, endTime, timeStepLength, writeFiles, fileWriter, startTimeDataWriter));
 }
 
+void TestConditionImp::initSimulationResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength)
+{
+	simResults = Results::getNewInstance(lx, lz, timeStepLength);
+	calculator->setSimulationResults(simResults);
+}
diff --git a/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.h b/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.h
index bb97158cd9fc89b8e43ab11b57484b649c0b602a..c89c6b7622362a2e4dd4c1f6a052f7ebb1792d2e 100644
--- a/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.h
+++ b/targets/tests/TestingHULC/Utilities/TestCondition/TestConditionImp.h
@@ -10,6 +10,9 @@ class InitialCondition;
 class FileWriter;
 class ToVectorWriter;
 class TestParameter;
+class Calculator;
+class TestResults;
+class Results;
 
 class TestConditionImp: public TestCondition
 {
@@ -18,13 +21,17 @@ public:
 	void initParameter(real viscosity, std::string gridPath, std::string filePath, int numberOfGridLevels, unsigned int endTime, unsigned int timeStepLength);
 	void initInitialConditions(std::shared_ptr<InitialCondition> initialCondition);
 	void initGridProvider();
-	void initResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength);
+	void initCalculator(std::shared_ptr<Calculator> calc);
 	void initDataWriter(unsigned int ySliceForCalculation, unsigned int startTimeCalculation, unsigned int endTime, unsigned int timeStepLength, bool writeFiles, unsigned int startTimeDataWriter);
+	void initSimulationResults(unsigned int lx, unsigned int lz, unsigned int timeStepLength);
+
+	void setTestResults(std::shared_ptr<TestResults> testResults);
 
 	std::shared_ptr<Parameter> getParameter();
 	std::shared_ptr<GridProvider> getGrid();
 	std::shared_ptr<DataWriter> getDataWriter();
-	std::shared_ptr<Results> getSimulationResults();
+	std::shared_ptr<TestResults> getTestResults();
+	std::shared_ptr<Calculator> getCalculator();
 
 protected:
 	TestConditionImp() {};
@@ -37,6 +44,8 @@ private:
 	std::shared_ptr<Results> simResults;
 	std::shared_ptr<ToVectorWriter> writeToVector;
 	std::shared_ptr<FileWriter> fileWriter;
+	std::shared_ptr<Calculator> calculator;
+	std::shared_ptr<TestResults> testResults;
 	
 };
 #endif
\ No newline at end of file
diff --git a/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactoryImp.cpp b/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactoryImp.cpp
index 0777858f995c85d1c217bf4105daf1627b0de2bb..fc1e18a6d11c3218de48a6338c822facdfea6f59 100644
--- a/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactoryImp.cpp
+++ b/targets/tests/TestingHULC/Utilities/TestConditionFactory/TestConditionFactoryImp.cpp
@@ -21,7 +21,9 @@ std::vector<std::shared_ptr<TestCondition>> TestConditionFactoryImp::makeTestCon
 		testCondit->initParameter(testPara.at(i)->getViscosity(), testPara.at(i)->getGridPath(), testPara.at(i)->getFilePath(), testPara.at(i)->getNumberOfGridLevels(), testPara.at(i)->getEndTime(), testPara.at(i)->getTimeStepLength());
 		testCondit->initInitialConditions(testPara.at(i)->getInitialCondition());
 		testCondit->initGridProvider();
-		testCondit->initResults(testPara.at(i)->getLx(), testPara.at(i)->getLz(), testPara.at(i)->getTimeStepLength());
+		testCondit->initCalculator(testPara.at(i)->getCalculator());
+		testCondit->initSimulationResults(testPara.at(i)->getLx(), testPara.at(i)->getLz(), testPara.at(i)->getTimeStepLength());
+		testCondit->setTestResults(testPara.at(i)->getTestResults());
 		testCondit->initDataWriter(testPara.at(i)->getYSliceForCalculation(), testPara.at(i)->getStartTimeCalculation(), testPara.at(i)->getEndTime(), testPara.at(i)->getTimeStepLength(), testPara.at(i)->getWriteFiles(), testPara.at(i)->getStartTimeDataWriter());
 		testConditions.push_back(testCondit);
 	}
diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp b/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp
index dcfb109d26ed7381913579946634256de2a40fc5..f22a07073a7f12dd93f52072b084bf158e5c260d 100644
--- a/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp
+++ b/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.cpp
@@ -1,30 +1,49 @@
 #include "ShearWaveTestParameter.h"
 
 #include "Utilities\InitialCondition\ShearWave\InitialConditionShearWave.h"
+#include "Utilities\Calculator\FFTCalculator\VzFFTCalculator\VzFFTCalculator.h"
+#include "Utilities/TestResults/PhiAndNuTestResults.h"
+#include "Utilities/Results/Results.h"
 
 #include <sstream>
 
-std::shared_ptr<TestParameter> ShearWaveTestParameter::getNewInstance(real u0, real v0, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
+std::shared_ptr<TestParameter> ShearWaveTestParameter::getNewInstance(
+	real u0, real v0, 
+	real viscosity, unsigned int lx, 
+	unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, 
+	unsigned int startStepCalculation, unsigned int ySliceForCalculation, 
+	std::string gridPath, 
+	bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
+	std::shared_ptr<PhiAndNuTestResults> testResults)
 {
 	return std::shared_ptr<TestParameter>(new ShearWaveTestParameter(u0, v0,
 		viscosity, lx,
 		numberOfTimeSteps, basisTimeStepLength,
 		startStepCalculation, ySliceForCalculation,
 		gridPath,
-		writeFiles, startStepFileWriter, filePath));
+		writeFiles, startStepFileWriter, filePath,
+		testResults));
 }
 
-ShearWaveTestParameter::ShearWaveTestParameter(real u0, real v0, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
-	:TestParameterImp(viscosity, lx, numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, gridPath, writeFiles, startStepFileWriter), u0(u0), v0(v0)
+ShearWaveTestParameter::ShearWaveTestParameter(
+	real u0, real v0,
+	real viscosity, unsigned int lx, 
+	unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, 
+	unsigned int startStepCalculation, unsigned int ySliceForCalculation, 
+	std::string gridPath, 
+	bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
+	std::shared_ptr<PhiAndNuTestResults> testResults)
+	:TestParameterImp(viscosity, lx, 
+		numberOfTimeSteps, basisTimeStepLength, 
+		startStepCalculation, ySliceForCalculation,
+		gridPath, 
+		writeFiles, startStepFileWriter, testResults),
+	u0(u0), v0(v0)
 {
 	std::ostringstream oss;
 	oss << filePath + "/ShearWave/grid" << lx;
 	this->filePath = oss.str();
 
 	initialCondition = std::shared_ptr<InitialConditionShearWave>(new InitialConditionShearWave((double)lx, (double)lz, (double)l0, u0, v0, rho0));
-}
-
-std::shared_ptr<InitialCondition> ShearWaveTestParameter::getInitialCondition()
-{
-	return initialCondition;
+	calculator = VzFFTCalculator::getNewInstance(viscosity, testResults);
 }
diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.h b/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.h
index 937e758f391024931747bfd0716f00ad02ea1a58..4fc7afc672c94a34a445203bb1bd5ddfeb2f36d1 100644
--- a/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.h
+++ b/targets/tests/TestingHULC/Utilities/TestParameter/ShearWaveTestParameter/ShearWaveTestParameter.h
@@ -3,6 +3,8 @@
 
 #include "../TestParameterImp.h"
 
+class  PhiAndNuTestResults;
+
 class ShearWaveTestParameter : public TestParameterImp
 {
 public:
@@ -11,7 +13,8 @@ public:
 		unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
 		unsigned int startStepCalculation, unsigned int ySliceForCalculation,
 		std::string gridPath,
-		bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
+		bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
+		std::shared_ptr<PhiAndNuTestResults> testResults);
 
 protected:
 	ShearWaveTestParameter() {};
@@ -20,13 +23,10 @@ protected:
 		unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
 		unsigned int startStepCalculation, unsigned int ySliceForCalculation,
 		std::string gridPath,
-		bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
-
-	std::shared_ptr<InitialCondition> getInitialCondition();
+		bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
+		std::shared_ptr<PhiAndNuTestResults> testResults);
 
 private:
-	std::shared_ptr<InitialCondition> initialCondition;
-
 	real u0, v0;
 };
 
diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp b/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp
index 0d75f12409abcb36cd0a9c43fc26f46ebc580315..3a77273ef1c974e518e4cf4c463f21b1b4d91bae 100644
--- a/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp
+++ b/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.cpp
@@ -1,30 +1,52 @@
 #include "TaylorGreenTestParameter.h"
 
-#include "Utilities\InitialCondition\TaylorGreenVortex\InitialconditionTaylorGreenVortex.h"
+#include "Utilities/InitialCondition\TaylorGreenVortex\InitialconditionTaylorGreenVortex.h"
+#include "Utilities/Calculator\FFTCalculator\VxFFTCalculator\VxFFTCalculator.h"
+#include "Utilities/TestResults/PhiAndNuTestResults.h"
+#include "Utilities/Results/Results.h"
 
 #include <sstream>
 
-std::shared_ptr<TestParameter> TaylorGreenTestParameter::getNewInstance(real u0, real amplitude, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
+std::shared_ptr<TestParameter> TaylorGreenTestParameter::getNewInstance(
+	real u0, real amplitude,
+	real viscosity, unsigned int lx,
+	unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
+	unsigned int startStepCalculation, unsigned int ySliceForCalculation,
+	std::string gridPath,
+	bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
+	std::shared_ptr<PhiAndNuTestResults> testResults)
 {
-	return std::shared_ptr<TestParameter>(new TaylorGreenTestParameter(u0, amplitude,
-		viscosity, lx,
-		numberOfTimeSteps, basisTimeStepLength,
-		startStepCalculation, ySliceForCalculation,
-		gridPath,
-		writeFiles, startStepFileWriter, filePath));
+	return std::shared_ptr<TestParameter>(
+		new TaylorGreenTestParameter(
+			u0, amplitude,
+			viscosity, lx,
+			numberOfTimeSteps, basisTimeStepLength,
+			startStepCalculation, ySliceForCalculation,
+			gridPath,
+			writeFiles, startStepFileWriter, filePath, testResults));
 }
 
-TaylorGreenTestParameter::TaylorGreenTestParameter(real u0, real amplitude, real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter, std::string filePath)
-	:TestParameterImp(viscosity, lx, numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, gridPath, writeFiles, startStepFileWriter), u0(u0), amplitude(amplitude)
+TaylorGreenTestParameter::TaylorGreenTestParameter(
+	real u0, real amplitude, 
+	real viscosity, unsigned int lx, 
+	unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, 
+	unsigned int startStepCalculation, unsigned int ySliceForCalculation, 
+	std::string gridPath, 
+	bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
+	std::shared_ptr<PhiAndNuTestResults> testResults)
+
+	:TestParameterImp(viscosity, lx, 
+		numberOfTimeSteps, basisTimeStepLength, 
+		startStepCalculation, ySliceForCalculation, 
+		gridPath, 
+		writeFiles, startStepFileWriter, testResults),
+	u0(u0), amplitude(amplitude)
 {
 	std::ostringstream oss;
 	oss << filePath + "/TaylorGreenVortex/grid" << lx;
 	this->filePath = oss.str();
 
 	initialCondition = std::shared_ptr<InitialConditionTaylorGreen>(new InitialConditionTaylorGreen((double)lx, (double)lz, (double)l0, u0, amplitude, rho0));
-}
-
-std::shared_ptr<InitialCondition> TaylorGreenTestParameter::getInitialCondition()
-{
-	return initialCondition;
+	simResults = Results::getNewInstance(lx, lz, timeStepLength);
+	calculator = VxFFTCalculator::getNewInstance(viscosity, testResults);
 }
diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.h b/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.h
index 06e4dd538836f125173394aef5f6d3940317f8d6..8cc175942ba9b94c026ea1fcee3971c4f3eded82 100644
--- a/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.h
+++ b/targets/tests/TestingHULC/Utilities/TestParameter/TaylorGreenTestParameter/TaylorGreenTestParameter.h
@@ -6,6 +6,8 @@
 #include <string>
 #include <memory>
 
+class PhiAndNuTestResults;
+
 class TaylorGreenTestParameter : public TestParameterImp
 {
 public:
@@ -14,7 +16,8 @@ public:
 		unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
 		unsigned int startStepCalculation, unsigned int ySliceForCalculation,
 		std::string gridPath,
-		bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
+		bool writeFiles, unsigned int startStepFileWriter, std::string filePath,
+		std::shared_ptr<PhiAndNuTestResults> testResults);
 	
 protected:
 	TaylorGreenTestParameter(real u0, real amplitude,
@@ -22,13 +25,10 @@ protected:
 		unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
 		unsigned int startStepCalculation, unsigned int ySliceForCalculation,
 		std::string gridPath,
-		bool writeFiles, unsigned int startStepFileWriter, std::string filePath);
-
-	std::shared_ptr<InitialCondition> getInitialCondition();
+		bool writeFiles, unsigned int startStepFileWriter, std::string filePath, 
+		std::shared_ptr<PhiAndNuTestResults> testResults);
 
 private:
-	std::shared_ptr<InitialCondition> initialCondition;
-
 	real u0, amplitude;
 
 };
diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/TestParameter.h b/targets/tests/TestingHULC/Utilities/TestParameter/TestParameter.h
index fa248e5b27fdf5a0c30cda1c0d34c04e3a9372f3..729d942229503089ced128a6aebabdb3bc9271f7 100644
--- a/targets/tests/TestingHULC/Utilities/TestParameter/TestParameter.h
+++ b/targets/tests/TestingHULC/Utilities/TestParameter/TestParameter.h
@@ -5,11 +5,13 @@
 #include <string>
 
 class InitialCondition;
+class Calculator;
+class TestResults;
+class Results;
 
 class TestParameter
 {
 public:
-	virtual std::shared_ptr<InitialCondition> getInitialCondition() = 0;
 	virtual double getViscosity() = 0;
 	virtual std::string getGridPath() = 0;
 	virtual std::string getFilePath() = 0;
@@ -22,9 +24,12 @@ public:
 	virtual unsigned int getStartTimeCalculation() = 0;
 	virtual bool getWriteFiles() = 0;
 	virtual unsigned int getStartTimeDataWriter() = 0;
+	virtual std::shared_ptr<InitialCondition> getInitialCondition() = 0;
+	virtual std::shared_ptr<Calculator> getCalculator() = 0;
+	virtual std::shared_ptr<TestResults> getTestResults() = 0;
 
 private:
 
 };
 
-#endif // !TESTPARAMETER_H
+#endif
diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.cpp b/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.cpp
index 79fe02e4038334f72743369941fb6fcf1c11e20e..91fde99f069f7ad91286a81841f7c2e3c4ba6eb1 100644
--- a/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.cpp
+++ b/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.cpp
@@ -1,8 +1,20 @@
 #include "TestParameterImp.h"
 
-
-TestParameterImp::TestParameterImp(real viscosity, unsigned int lx, unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, unsigned int startStepCalculation, unsigned int ySliceForCalculation, std::string gridPath, bool writeFiles, unsigned int startStepFileWriter)
-	: viscosity(viscosity), lx(lx), numberOfTimeSteps(numberOfTimeSteps), basisTimeStepLength(basisTimeStepLength), startStepCalculation(startStepCalculation), ySliceForCalculation(ySliceForCalculation), gridPath(gridPath), writeFiles(writeFiles), startStepFileWriter(startStepFileWriter)
+#include "Utilities/TestResults/TestResults.h"
+
+TestParameterImp::TestParameterImp(
+	real viscosity, unsigned int lx, 
+	unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength, 
+	unsigned int startStepCalculation, unsigned int ySliceForCalculation, 
+	std::string gridPath, 
+	bool writeFiles, unsigned int startStepFileWriter, 
+	std::shared_ptr<TestResults> testResults)
+		:viscosity(viscosity), lx(lx),
+		numberOfTimeSteps(numberOfTimeSteps), basisTimeStepLength(basisTimeStepLength), 
+		startStepCalculation(startStepCalculation), ySliceForCalculation(ySliceForCalculation), 
+		gridPath(gridPath), 
+		writeFiles(writeFiles), startStepFileWriter(startStepFileWriter), 
+		testResults(testResults)
 {
 	maxLevel = 0;
 	numberOfGridLevels = 1;
@@ -77,4 +89,17 @@ unsigned int TestParameterImp::getStartTimeDataWriter()
 	return startTimeDataWriter;
 }
 
+std::shared_ptr<InitialCondition> TestParameterImp::getInitialCondition()
+{
+	return initialCondition;
+}
+
+std::shared_ptr<Calculator> TestParameterImp::getCalculator()
+{
+	return calculator;
+}
 
+std::shared_ptr<TestResults> TestParameterImp::getTestResults()
+{
+	return testResults;
+}
diff --git a/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.h b/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.h
index bf59245e5596c0bef0a159823ac6034ef56c2d62..a1b0c51d0629c0a7dd68a952efcd2641f3b15da8 100644
--- a/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.h
+++ b/targets/tests/TestingHULC/Utilities/TestParameter/TestParameterImp.h
@@ -8,8 +8,6 @@
 class TestParameterImp: public TestParameter
 {
 public:
-	virtual std::shared_ptr<InitialCondition> getInitialCondition() = 0;
-
 	double getViscosity();
 	std::string getGridPath();
 	std::string getFilePath();
@@ -22,6 +20,9 @@ public:
 	unsigned int getStartTimeCalculation();
 	bool getWriteFiles();
 	unsigned int getStartTimeDataWriter();
+	std::shared_ptr<InitialCondition> getInitialCondition();
+	std::shared_ptr<Calculator> getCalculator();
+	std::shared_ptr<TestResults> getTestResults();
 
 protected:
 	TestParameterImp() {};
@@ -29,7 +30,8 @@ protected:
 		unsigned int numberOfTimeSteps, unsigned int basisTimeStepLength,
 		unsigned int startStepCalculation, unsigned int ySliceForCalculation,
 		std::string gridPath,
-		bool writeFiles, unsigned int startStepFileWriter);
+		bool writeFiles, unsigned int startStepFileWriter,
+		std::shared_ptr<TestResults> testResults);
 
 	std::string filePath;
 	real viscosity;
@@ -46,6 +48,10 @@ protected:
 	unsigned int startTimeCalculation, startTimeDataWriter;
 	unsigned int endTime;
 
+	std::shared_ptr<InitialCondition> initialCondition;
+	std::shared_ptr<Calculator> calculator;
+	std::shared_ptr<Results> simResults;
+	std::shared_ptr<TestResults> testResults;
 };
 
 #endif // !TESTPARAMETERIMP_H
diff --git a/targets/tests/TestingHULC/Utilities/reader/reader.cpp b/targets/tests/TestingHULC/Utilities/reader/reader.cpp
index c0e23e4ed8e168fd5b15c37e112918e669d2b2be..3e55fcd048559c0eeeae23d9cbe85de0d823ac72 100644
--- a/targets/tests/TestingHULC/Utilities/reader/reader.cpp
+++ b/targets/tests/TestingHULC/Utilities/reader/reader.cpp
@@ -10,6 +10,7 @@
 #include "Utilities\TestInformation\TestInformationImp.h"
 #include "Utilities\TestParameter\TaylorGreenTestParameter\TaylorGreenTestParameter.h"
 #include "Utilities\TestParameter\ShearWaveTestParameter\ShearWaveTestParameter.h"
+#include "Utilities\TestResults\PhiAndNuTestResults.h"
 
 void Reader::calcNumberOfEqualTests()
 {
@@ -124,15 +125,17 @@ std::shared_ptr<TestInformation> Reader::makeTestInformation()
 std::vector<std::shared_ptr<TestParameter>> Reader::makeTestParameter()
 {
 	std::vector<std::shared_ptr<TestParameter>> testParameter;
+	std::shared_ptr<PhiAndNuTestResults> tgvTestResults = PhiAndNuTestResults::getNewInstance("TaylorGreenVortex");
+	std::shared_ptr<PhiAndNuTestResults> swTestResults = PhiAndNuTestResults::getNewInstance("ShearWave");
 
 	for (int i = 0; i < tgv.size(); i++) {
 		if (tgv.at(i)) {
-			testParameter.push_back(TaylorGreenTestParameter::getNewInstance(u0TGV, amplitudeTGV, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath));
+			testParameter.push_back(TaylorGreenTestParameter::getNewInstance(u0TGV, amplitudeTGV, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath, tgvTestResults));
 		}
 	}
 	for (int i = 0; i < sw.size(); i++) {
 		if (sw.at(i)) {
-			testParameter.push_back(ShearWaveTestParameter::getNewInstance(u0SW, v0SW, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath));
+			testParameter.push_back(ShearWaveTestParameter::getNewInstance(u0SW, v0SW, viscosity, l.at(i), numberOfTimeSteps, basisTimeStepLength, startStepCalculation, ySliceForCalculation, grids.at(i), writeFiles, startStepFileWriter, filePath, swTestResults));
 		}
 	}