diff --git a/apps/virtualmass/UnsettlingSphere.cpp b/apps/virtualmass/UnsettlingSphere.cpp index 3df33e02b703953d877d062cda2eaee432b026b0..d9e01fc486e21b9abea2b67aaaf01db56aefb89e 100644 --- a/apps/virtualmass/UnsettlingSphere.cpp +++ b/apps/virtualmass/UnsettlingSphere.cpp @@ -283,20 +283,20 @@ int main(int argc, char** argv) { bool fileIO = true; uint_t vtkIOFreq = 0; - std::string baseFolder = "vkt_out_UnsettlingSphere"; + std::string baseFolder = "vtk_out_UnsettlingSphere"; - bool averageForceTorqueOverTwoTimeSteps = false; - auto numRPDSubCycles = uint_t(1); + bool averageForceTorqueOverTwoTimeSteps = true; + auto numRPDSubCycles = uint_t(10); bool useVelocityVerlet = true; std::string reconstructorType = "Grad"; // Eq, EAN, Ext, Grad - auto u_g_target = real_t(0); - bool useVirtualMass = false; + auto u_g_target = real_t(0.01); + bool useVirtualMass = true; bool large = false; auto relaxationTime = real_t(0); - auto densitySphere = real_t(1.0); // same as sphere/fluid density ratio + auto densitySphere = real_t(0.001); auto timesteps = uint_t(2000); - auto diameterOverride = real_t(-1); + auto diameter = real_t(40); auto galileoNumber = real_t(170); auto C_v = real_t(0.5); auto C_v_omega = real_t(0.5); @@ -305,7 +305,7 @@ int main(int argc, char** argv) { std::string vmAccelerationOption = ""; bool averageVirtualForceOverTwoTimesteps = false; bool virtualForceCorrection = false; - real_t Lambda_Bulk = real_t(1); // wenn = 1, dann hat man normales TRT, bis 100 + real_t Lambda_Bulk = real_t(100); // wenn = 1, dann hat man normales TRT, bis 100 bool conserveMomentum = false; bool dontFixVirtualMassAndForceAveraging = false; bool enableDynamicCv = false; @@ -313,21 +313,21 @@ int main(int argc, char** argv) { auto initial_C_v_omega = real_t(0.5); for (int i = 1; i < argc; i++) { - if( std::strcmp( argv[i], "--noLogging" ) == 0 ) { fileIO = false; continue; } - if( std::strcmp( argv[i], "--vtkIOFreq" ) == 0 ) { vtkIOFreq = uint_c( std::stod( argv[++i] ) ); continue; } - if( std::strcmp( argv[i], "--numRPDSubCycles" ) == 0 ) { numRPDSubCycles = uint_c( std::stod( argv[++i] ) ); continue; } - if( std::strcmp( argv[i], "--forceAveraging" ) == 0 ) { averageForceTorqueOverTwoTimeSteps = true; continue; } - if( std::strcmp( argv[i], "--baseFolder" ) == 0 ) { baseFolder = argv[++i]; continue; } - if( std::strcmp( argv[i], "--useEulerIntegrator" ) == 0 ) { useVelocityVerlet = false; continue; } - if( std::strcmp( argv[i], "--reconstructorType" ) == 0 ) { reconstructorType = argv[++i]; continue; } + if (std::strcmp(argv[i], "--noLogging" ) == 0) { fileIO = false; continue; } + if (std::strcmp(argv[i], "--vtkIOFreq" ) == 0) { vtkIOFreq = uint_c( std::stod( argv[++i] ) ); continue; } + if (std::strcmp(argv[i], "--numRPDSubCycles" ) == 0) { numRPDSubCycles = uint_c( std::stod( argv[++i] ) ); continue; } + if (std::strcmp(argv[i], "--forceAveraging" ) == 0) { averageForceTorqueOverTwoTimeSteps = true; continue; } + if (std::strcmp(argv[i], "--baseFolder" ) == 0) { baseFolder = argv[++i]; continue; } + if (std::strcmp(argv[i], "--useEulerIntegrator" ) == 0) { useVelocityVerlet = false; continue; } + if (std::strcmp(argv[i], "--reconstructorType" ) == 0) { reconstructorType = argv[++i]; continue; } if (std::strcmp(argv[i], "--sphereDensity") == 0) { densitySphere = real_c(std::stod(argv[++i])); continue; } if (std::strcmp(argv[i], "--relaxationTime") == 0) { relaxationTime = real_c(std::stod(argv[++i])); continue; } if (std::strcmp(argv[i], "--u_g") == 0) { u_g_target = real_c(std::stod(argv[++i])); continue; } - if (std::strcmp(argv[i], "--virtualMass") == 0) { useVirtualMass = true; continue; } + if (std::strcmp(argv[i], "--noVirtualMass") == 0) { useVirtualMass = false; continue; } if (std::strcmp(argv[i], "--large") == 0) { large = true; continue; } if (std::strcmp(argv[i], "--timesteps") == 0) { timesteps = uint_c(std::atof(argv[++i])); continue; } - if (std::strcmp(argv[i], "--diameter") == 0) { diameterOverride = real_c(std::stod(argv[++i])); continue; } + if (std::strcmp(argv[i], "--diameter") == 0) { diameter = real_c(std::stod(argv[++i])); continue; } if (std::strcmp(argv[i], "--galileoNumber") == 0) { galileoNumber = real_c(std::stod(argv[++i])); continue; } if (std::strcmp(argv[i], "--c_v") == 0) { C_v = real_c(std::stod(argv[++i])); continue; } if (std::strcmp(argv[i], "--c_v_omega") == 0) { C_v_omega = real_c(std::stod(argv[++i])); continue; } @@ -347,12 +347,12 @@ int main(int argc, char** argv) { } continue; } - if (std::strcmp(argv[i], "--virtualForceAveraging") == 0 ) { averageVirtualForceOverTwoTimesteps = true; continue; } - if (std::strcmp(argv[i], "--virtualForceCorrection") == 0 ) { virtualForceCorrection = true; continue; } + if (std::strcmp(argv[i], "--virtualForceAveraging") == 0) { averageVirtualForceOverTwoTimesteps = true; continue; } + if (std::strcmp(argv[i], "--virtualForceCorrection") == 0) { virtualForceCorrection = true; continue; } if (std::strcmp(argv[i], "--lambdaBulk") == 0) { Lambda_Bulk = real_c(std::stod(argv[++i])); continue; } - if (std::strcmp(argv[i], "--conserveMomentum") == 0 ) { conserveMomentum = true; continue; } + if (std::strcmp(argv[i], "--conserveMomentum") == 0) { conserveMomentum = true; continue; } if (std::strcmp(argv[i], "--dontFixVirtualMassAndForceAveraging") == 0 ) { dontFixVirtualMassAndForceAveraging = true; continue; } - if (std::strcmp(argv[i], "--enableDynamicCv") == 0 ) { enableDynamicCv = true; continue; } + if (std::strcmp(argv[i], "--enableDynamicCv") == 0) { enableDynamicCv = true; continue; } if (std::strcmp(argv[i], "--initial_c_v") == 0) { initial_C_v = real_c(std::stod(argv[++i])); continue; } if (std::strcmp(argv[i], "--initial_c_v_omega") == 0) { initial_C_v_omega = real_c(std::stod(argv[++i])); continue; } @@ -374,15 +374,6 @@ int main(int argc, char** argv) { const auto densityFluid = real_t(1); - auto diameter = real_t(20); - if (diameterOverride > 0) { - diameter = diameterOverride; - } else if (large) { - // Diameter for the large simulation as described in Schwarz, S., Kempe, T., & Fröhlich, J. (2015). - // "A temporal discretization scheme to compute the motion of light particles in viscous flows by an immersed boundary method". - diameter = real_t(40); - } - const auto Nx = uint_t(real_t(6.4)*diameter); const auto Ny = uint_t(real_t(6.4)*diameter); auto Nz = uint_t(real_t(6.4)*diameter);