From 641736cd788c135e7b63a9511c4ee4e3f974e360 Mon Sep 17 00:00:00 2001
From: Konstantin Kutscher <kutscher@irmb.tu-bs.de>
Date: Wed, 24 Jan 2018 09:59:35 +0100
Subject: [PATCH] Calculator constructor signature is changed

---
 source/Applications/DLR-F16-Solid/f16.cpp     | 13 +++-------
 .../Grid/BasicCalculator.cpp                  |  7 +++---
 .../VirtualFluidsCore/Grid/BasicCalculator.h  |  2 +-
 source/VirtualFluidsCore/Grid/Calculator.cpp  | 24 +++++--------------
 source/VirtualFluidsCore/Grid/Calculator.h    | 10 ++++----
 5 files changed, 18 insertions(+), 38 deletions(-)

diff --git a/source/Applications/DLR-F16-Solid/f16.cpp b/source/Applications/DLR-F16-Solid/f16.cpp
index 479658d94..31cb5adb8 100644
--- a/source/Applications/DLR-F16-Solid/f16.cpp
+++ b/source/Applications/DLR-F16-Solid/f16.cpp
@@ -574,10 +574,7 @@ void run(string configname)
       //TimeseriesCoProcessor tsp1(grid, stepMV, mic1, pathOut+"/mic/mic1", comm);
 
       omp_set_num_threads(numOfThreads);
-      SPtr<Calculator> calculator(new BasicCalculator());
-      calculator->setGrid(grid);
-      calculator->setLastTimeStep(endTime);
-      calculator->setVisScheduler(stepSch);
+      SPtr<Calculator> calculator(new BasicCalculator(grid, stepSch, endTime));
       calculator->addCoProcessor(nupsCoProcessor);
       calculator->addCoProcessor(restartCoProcessor);
       calculator->addCoProcessor(writeMQCoProcessor);
@@ -677,13 +674,9 @@ void test_run()
       SPtr<WriteMacroscopicQuantitiesCoProcessor> writeMQCoProcessor(new WriteMacroscopicQuantitiesCoProcessor(grid, stepSch, pathOut, WbWriterVtkXmlBinary::getInstance(), conv, comm));
 
       //omp_set_num_threads(numOfThreads);
-      SPtr<Calculator> calculator(new BasicCalculator());
-      calculator->setGrid(grid);
-      calculator->setLastTimeStep(2);
-      calculator->setVisScheduler(stepSch);
+      SPtr<Calculator> calculator(new BasicCalculator(grid, stepSch, 2));
       calculator->addCoProcessor(writeMQCoProcessor);
-      calculator->setVisScheduler(stepSch);
-
+   
 
       if (myid==0) UBLOG(logINFO, "Simulation-start");
       calculator->calculate();
diff --git a/source/VirtualFluidsCore/Grid/BasicCalculator.cpp b/source/VirtualFluidsCore/Grid/BasicCalculator.cpp
index 53fb06011..984c93579 100644
--- a/source/VirtualFluidsCore/Grid/BasicCalculator.cpp
+++ b/source/VirtualFluidsCore/Grid/BasicCalculator.cpp
@@ -15,7 +15,8 @@
 //#define TIMING
 //#include "UbTiming.h"
 
-BasicCalculator::BasicCalculator()
+BasicCalculator::BasicCalculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps) : 
+   Calculator(grid, additionalGhostLayerUpdateScheduler, numberOfTimeSteps)
 {
 
 }
@@ -43,7 +44,7 @@ void BasicCalculator::calculate()
       double time[6];
 #endif
 
-      for (calcStep = startTimeStep; calcStep<=lastTimeStep+1; calcStep++)
+      for (calcStep = startTimeStep; calcStep<=numberOfTimeSteps+1; calcStep++)
       {
          coProcess((double)(calcStep-1));
 
@@ -123,7 +124,7 @@ void BasicCalculator::calculate()
             }
          }
          //exchange data between blocks for visualization
-         if ((int)visScheduler->getNextDueTime()==calcStep)
+         if ((int)additionalGhostLayerUpdateScheduler->getNextDueTime()==calcStep)
          {
             exchangeBlockData(straightStartLevel, maxInitLevel);
          }
diff --git a/source/VirtualFluidsCore/Grid/BasicCalculator.h b/source/VirtualFluidsCore/Grid/BasicCalculator.h
index ee55d69f0..b77ac017f 100644
--- a/source/VirtualFluidsCore/Grid/BasicCalculator.h
+++ b/source/VirtualFluidsCore/Grid/BasicCalculator.h
@@ -12,7 +12,7 @@ class Block3DConnector;
 class BasicCalculator : public Calculator
 {
 public:
-   BasicCalculator();
+   BasicCalculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps);
    virtual ~BasicCalculator();
    virtual void calculate();
 
diff --git a/source/VirtualFluidsCore/Grid/Calculator.cpp b/source/VirtualFluidsCore/Grid/Calculator.cpp
index 7d8616af7..0e8916073 100644
--- a/source/VirtualFluidsCore/Grid/Calculator.cpp
+++ b/source/VirtualFluidsCore/Grid/Calculator.cpp
@@ -8,17 +8,10 @@
 
 #include <basics/utilities/UbException.h>
 
-Calculator::Calculator()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-Calculator::~Calculator()
-{
-
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::setGrid(SPtr<Grid3D> grid)
+Calculator::Calculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps) :
+   grid(grid),
+   additionalGhostLayerUpdateScheduler(additionalGhostLayerUpdateScheduler),
+   numberOfTimeSteps(numberOfTimeSteps)
 {
    this->grid = grid;
    startTimeStep = int(grid->getTimeStep())+1;
@@ -49,14 +42,9 @@ void Calculator::setGrid(SPtr<Grid3D> grid)
    initRemoteConnectors();
 }
 //////////////////////////////////////////////////////////////////////////
-void Calculator::setLastTimeStep(int t)
-{
-   this->lastTimeStep = t;
-}
-//////////////////////////////////////////////////////////////////////////
-void Calculator::setVisScheduler(SPtr<UbScheduler> s)
+Calculator::~Calculator()
 {
-   visScheduler = s;
+
 }
 //////////////////////////////////////////////////////////////////////////
 void Calculator::addCoProcessor(SPtr<CoProcessor> coProcessor)
diff --git a/source/VirtualFluidsCore/Grid/Calculator.h b/source/VirtualFluidsCore/Grid/Calculator.h
index 0c33b7402..ab266aaa2 100644
--- a/source/VirtualFluidsCore/Grid/Calculator.h
+++ b/source/VirtualFluidsCore/Grid/Calculator.h
@@ -17,11 +17,9 @@ class CoProcessor;
 class Calculator 
 {
 public:
-   Calculator();
+   Calculator(SPtr<Grid3D> grid, SPtr<UbScheduler> additionalGhostLayerUpdateScheduler, int numberOfTimeSteps);
    virtual ~Calculator();
-   void setGrid(SPtr<Grid3D> grid);
-   void setLastTimeStep(int t);
-   void setVisScheduler(SPtr<UbScheduler> s);
+   //! control of coProcessors
    void addCoProcessor(SPtr<CoProcessor> coProcessor);
    void coProcess(double step);
 
@@ -36,13 +34,13 @@ protected:
 
    int minLevel, maxLevel;
    int startTimeStep;
-   int lastTimeStep;
+   int numberOfTimeSteps;
    std::vector< std::vector< SPtr<Block3DConnector> > > localConns;
    std::vector< std::vector< SPtr<Block3DConnector> > > remoteConns;
 
    bool refinement;
    SPtr<Grid3D> grid;
-   SPtr<UbScheduler> visScheduler;
+   SPtr<UbScheduler> additionalGhostLayerUpdateScheduler;
    std::vector< std::vector<SPtr<Block3D> > > blocks;
 
    //localInterConns and remoteInterConns save interpolation connectors 
-- 
GitLab