From ea301656f4c8dd0be5d321ca6f938de9c10d9a4c Mon Sep 17 00:00:00 2001
From: Konstantin Kutscher <kutscher@irmb.tu-bs.de>
Date: Tue, 16 Oct 2018 11:27:58 +0200
Subject: [PATCH] adds spheres intersection toleranz parameter in
 CreateDemObjectsCoProcessor

---
 source/Applications/Thermoplast/config.txt         | 10 +++++-----
 source/Applications/Thermoplast/thermoplast.cpp    |  2 +-
 source/DemCoupling/CreateDemObjectsCoProcessor.cpp |  7 ++++---
 source/DemCoupling/CreateDemObjectsCoProcessor.h   |  3 ++-
 4 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/source/Applications/Thermoplast/config.txt b/source/Applications/Thermoplast/config.txt
index 47c3af05f..a60b16211 100644
--- a/source/Applications/Thermoplast/config.txt
+++ b/source/Applications/Thermoplast/config.txt
@@ -9,8 +9,8 @@ boundingBox = 60 1370 130 190 1530 320 #test bb
  
 blocknx = 10 10 10 
 #blocknx = 300 420 320
-endTime = 2000
-outTime = 2000
+endTime = 3000
+outTime = 3000
 availMem = 25e9
 uLB = 0.1
 
@@ -36,9 +36,9 @@ pathOut = g:/temp/thermoplast2
 logToFile = false
 
 #restart
-cpStart = 2000
-cpStep =  2000
+cpStart = 3000
+cpStep =  3000
 restart = true
-restartStep = 1000
+restartStep = 2000
 
 nupsTime = 10 10 1000000
\ No newline at end of file
diff --git a/source/Applications/Thermoplast/thermoplast.cpp b/source/Applications/Thermoplast/thermoplast.cpp
index 971cc6e96..89158664b 100644
--- a/source/Applications/Thermoplast/thermoplast.cpp
+++ b/source/Applications/Thermoplast/thermoplast.cpp
@@ -516,7 +516,7 @@ void thermoplast(string configname)
    ////generating spheres 
    //UBLOG(logINFO, "generating spheres - start, rank="<<myid);
    SPtr<UbScheduler> sphereScheduler(new UbScheduler(sphereTime/*10,10,10*/));
-   SPtr<CreateDemObjectsCoProcessor> createSphereCoProcessor(new CreateDemObjectsCoProcessor(grid, sphereScheduler, comm, demCoProcessor, sphereMaterial));
+   SPtr<CreateDemObjectsCoProcessor> createSphereCoProcessor(new CreateDemObjectsCoProcessor(grid, sphereScheduler, comm, demCoProcessor, sphereMaterial, 0.03));
    //UBLOG(logINFO, "generating spheres - stop, rank="<<myid);
 
    ////restart
diff --git a/source/DemCoupling/CreateDemObjectsCoProcessor.cpp b/source/DemCoupling/CreateDemObjectsCoProcessor.cpp
index 1aa6f66fa..1d695f605 100644
--- a/source/DemCoupling/CreateDemObjectsCoProcessor.cpp
+++ b/source/DemCoupling/CreateDemObjectsCoProcessor.cpp
@@ -20,11 +20,12 @@
 
 
 
-CreateDemObjectsCoProcessor::CreateDemObjectsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,  std::shared_ptr<Communicator> comm, SPtr<DemCoProcessor> demCoProcessor, SPtr<PhysicsEngineMaterialAdapter> demObjectMaterial) : 
+CreateDemObjectsCoProcessor::CreateDemObjectsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,  std::shared_ptr<Communicator> comm, SPtr<DemCoProcessor> demCoProcessor, SPtr<PhysicsEngineMaterialAdapter> demObjectMaterial, double toleranz) : 
    CoProcessor(grid, s),
    comm(comm),
    demCoProcessor(demCoProcessor), 
-   demObjectMaterial(demObjectMaterial)
+   demObjectMaterial(demObjectMaterial),
+   toleranz(toleranz)
 {
    mu::Parser fct;
    fct.SetExpr("U");
@@ -91,7 +92,7 @@ void CreateDemObjectsCoProcessor::createGeoObjects()
    for (int i = 0; i < size; i++)
    {
       SPtr<GbSphere3D> sphere = std::dynamic_pointer_cast<GbSphere3D>(geoObjectPrototypeVector[i]);
-      if (demCoProcessor->isSpheresIntersection(sphere->getX1Centroid(), sphere->getX2Centroid(), sphere->getX3Centroid(), sphere->getRadius()*2.0*0.99))
+      if (demCoProcessor->isSpheresIntersection(sphere->getX1Centroid(), sphere->getX2Centroid(), sphere->getX3Centroid(), sphere->getRadius()*2.0*(1.0-toleranz)))
       {
          continue;
       }
diff --git a/source/DemCoupling/CreateDemObjectsCoProcessor.h b/source/DemCoupling/CreateDemObjectsCoProcessor.h
index d8a4d990b..837c032a7 100644
--- a/source/DemCoupling/CreateDemObjectsCoProcessor.h
+++ b/source/DemCoupling/CreateDemObjectsCoProcessor.h
@@ -27,7 +27,7 @@ class PhysicsEngineMaterialAdapter;
 class CreateDemObjectsCoProcessor : public CoProcessor
 {
 public:
-   CreateDemObjectsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,  std::shared_ptr<Communicator> comm, SPtr<DemCoProcessor> demCoProcessor,  SPtr<PhysicsEngineMaterialAdapter> geoObjectMaterial);
+   CreateDemObjectsCoProcessor(SPtr<Grid3D> grid, SPtr<UbScheduler> s,  std::shared_ptr<Communicator> comm, SPtr<DemCoProcessor> demCoProcessor,  SPtr<PhysicsEngineMaterialAdapter> geoObjectMaterial, double toleranz = 0);
    void process(double step) override;
    void addGeoObject(SPtr<GbObject3D> geoObjectPrototype, Vector3D  initalVelocity);
    void clearGeoObjects();
@@ -42,6 +42,7 @@ private:
    SPtr<BCAdapter> velocityBcParticleAdapter;
    SPtr<Reconstructor> extrapolationReconstructor;
    int demCounter;
+   double toleranz;
 #ifdef TIMING
    UbTimer timer;
 #endif
-- 
GitLab