From 824ab66cf32e9b45653094e29d3aea47b4677ad6 Mon Sep 17 00:00:00 2001
From: Christoph Rettinger <christoph.rettinger@fau.de>
Date: Tue, 15 Mar 2022 13:03:25 +0100
Subject: [PATCH] Fixed and extended particle packing app

---
 apps/showcases/ParticlePacking/Evaluation.h        |  4 +++-
 apps/showcases/ParticlePacking/ParticlePacking.cfg | 12 ++++++------
 apps/showcases/ParticlePacking/ParticlePacking.cpp |  2 +-
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/apps/showcases/ParticlePacking/Evaluation.h b/apps/showcases/ParticlePacking/Evaluation.h
index c1a531a6d..5d219f181 100644
--- a/apps/showcases/ParticlePacking/Evaluation.h
+++ b/apps/showcases/ParticlePacking/Evaluation.h
@@ -581,12 +581,14 @@ std::string assembleParticleInformation(data::ParticleStorage& ps, SizeEvaluator
 
       auto position = pIt->getPosition();
       auto sizeInfo = sizeEvaluator.get(*pIt->getBaseShape());
+      auto rotM = pIt->getRotation().getMatrix();
 
       ossData << std::setprecision( precision );
       ossData << position[0] << " " << position[1] << " " << position[2] << " "
               << sizeInfo.size << " " << sizeInfo.volume << " "
               << sizeInfo.shapeSemiAxes[0] << " " << sizeInfo.shapeSemiAxes[1] << " " << sizeInfo.shapeSemiAxes[2] << " "
-              << pIt->getNumContacts()
+              << pIt->getNumContacts() << " "
+              << rotM[0] << " " << rotM[1] << " "<< rotM[2] << " "<< rotM[3] << " "<< rotM[4] << " "<< rotM[5] << " "<< rotM[6] << " "<< rotM[7] << " "<< rotM[8]
               << "\n";
    }
 
diff --git a/apps/showcases/ParticlePacking/ParticlePacking.cfg b/apps/showcases/ParticlePacking/ParticlePacking.cfg
index e1d4d9e59..03a7c5429 100644
--- a/apps/showcases/ParticlePacking/ParticlePacking.cfg
+++ b/apps/showcases/ParticlePacking/ParticlePacking.cfg
@@ -9,13 +9,13 @@ ParticlePacking
     gravitationalAcceleration 9.81; // m/s^2
 
     particleDistribution SievingCurve; // size distribution, see 'Distribution' block for options
-    particleShape Mesh; // see 'Shape' block
+    particleShape Ellipsoid; // see 'Shape' block
 
     limitVelocity -1; // m/s, negative switches limiting off
     initialVelocity 1; // m/s
     initialGenerationHeightRatioStart 0.1; // -
     initialGenerationHeightRatioEnd 1; // -
-    generationSpacing 0.010; // m
+    generationSpacing 0.016; // m
     scaleGenerationSpacingWithForm true;
     generationHeightRatioStart 0.6; // -
     generationHeightRatioEnd 1; // -
@@ -47,7 +47,7 @@ Shaking
 {
     amplitude 3e-4; // m
     period 0.025; // s
-    duration 6.0; // s, duration of shaking AFTER creation of all particles
+    duration 1.0; // s, duration of shaking AFTER creation of all particles
     activeFromBeginning true;
 }
 
@@ -118,12 +118,12 @@ Distribution
 
         // Lian, 2015, DigiPack, values from porosity report (Versuch3), in cylinder with diam 104mm
         sieveSizes 2.8e-3 4e-3 5.6e-3 8e-3 11.2e-3 16e-3 22.4e-3 31.5e-3;
-        //massFractions 0 0 1 0 0 0 0; // A
+        massFractions 0 0 1 0 0 0 0; // A
         //massFractions .0 .0 .21 .58 .21 0 0; // B
         //massFractions .0 .06 .24 .4 .24 .06 .0; // C
         //massFractions .04 .11 .22 .26 .22 .11 .04; // D
         //massFractions .08 .13 .08 .06 .18 .29 .18; // E
-        massFractions .13 .21 .13 .06 .13 .21 .13; // F
+        //massFractions .13 .21 .13 .06 .13 .21 .13; // F
         //massFractions .18 .29 .18 .06 .08 .13 .08; // G
 
         //massFractions 0 0 0 0 0 0 1; // D
@@ -142,7 +142,7 @@ Shape
 
     Ellipsoid
     {
-        semiAxes <50,5,1>; // will be scaled to obtain desired size
+        semiAxes <2,2,1>; // will be scaled to obtain desired size
     }
 
     EquivalentEllipsoid
diff --git a/apps/showcases/ParticlePacking/ParticlePacking.cpp b/apps/showcases/ParticlePacking/ParticlePacking.cpp
index 2c55d064f..9ba4443be 100644
--- a/apps/showcases/ParticlePacking/ParticlePacking.cpp
+++ b/apps/showcases/ParticlePacking/ParticlePacking.cpp
@@ -355,6 +355,7 @@ int main(int argc, char **argv) {
    real_t terminalRelativeHeightChange = mainConf.getParameter<real_t>("terminalRelativeHeightChange");
    real_t terminationCheckingSpacing = mainConf.getParameter<real_t>("terminationCheckingSpacing");
    real_t minimalTerminalRunTime = mainConf.getParameter<real_t>("minimalTerminalRunTime");
+   real_t velocityDampingCoefficient = mainConf.getParameter<real_t>("velocityDampingCoefficient");
 
    bool useHashGrids = mainConf.getParameter<bool>("useHashGrids");
 
@@ -367,7 +368,6 @@ int main(int argc, char **argv) {
    real_t dt = solverConf.getParameter<real_t>("dt");
    real_t frictionCoefficient = solverConf.getParameter<real_t>("frictionCoefficient");
    real_t coefficientOfRestitution = solverConf.getParameter<real_t>("coefficientOfRestitution");
-   real_t velocityDampingCoefficient = solverConf.getParameter<real_t>("velocityDampingCoefficient");
 
    uint_t visSpacing = uint_c(visSpacingInSeconds / dt);
    uint_t infoSpacing = uint_c(infoSpacingInSeconds / dt);
-- 
GitLab