From cb84f0225dbfdf49d6ce73ba57ad483b4371043e Mon Sep 17 00:00:00 2001 From: Sven Marcus <s.marcus@outlook.de> Date: Wed, 13 Jan 2021 13:30:32 +0100 Subject: [PATCH] Fix segmentation fault in Simulation --- Python/poiseuille/simulation.py | 4 ++-- src/cpu/simulationconfig/CMakeLists.txt | 2 +- src/cpu/simulationconfig/src/Simulation.cpp | 16 +++++++--------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/Python/poiseuille/simulation.py b/Python/poiseuille/simulation.py index f3c48f0ae..2c72c493f 100644 --- a/Python/poiseuille/simulation.py +++ b/Python/poiseuille/simulation.py @@ -17,8 +17,8 @@ physical_params.lattice_viscosity = 0.005 runtime_params = RuntimeParameters() runtime_params.number_of_threads = 4 -runtime_params.number_of_timesteps = 10000 -runtime_params.timestep_log_interval = 1000 +runtime_params.number_of_timesteps = 1000 +runtime_params.timestep_log_interval = 100 def run_simulation(physical_params=physical_params, grid_params=grid_params, runtime_params=runtime_params): diff --git a/src/cpu/simulationconfig/CMakeLists.txt b/src/cpu/simulationconfig/CMakeLists.txt index 4c2313023..0d6be59ca 100644 --- a/src/cpu/simulationconfig/CMakeLists.txt +++ b/src/cpu/simulationconfig/CMakeLists.txt @@ -11,7 +11,7 @@ file(GLOB SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) add_library(simulationconfig STATIC ${SRC} ${HEADERS}) -set_target_properties(simulationconfig PROPERTIES CXX_STANDARD 11 POSITION_INDEPENDENT_CODE ON) +set_target_properties(simulationconfig PROPERTIES CXX_STANDARD 14 POSITION_INDEPENDENT_CODE ON) target_include_directories(simulationconfig PUBLIC ${VFBUILDER_INCLUDE_DIR}) target_link_libraries(simulationconfig PRIVATE VirtualFluidsCore basics muparser) diff --git a/src/cpu/simulationconfig/src/Simulation.cpp b/src/cpu/simulationconfig/src/Simulation.cpp index a3574fedc..ceeb81663 100644 --- a/src/cpu/simulationconfig/src/Simulation.cpp +++ b/src/cpu/simulationconfig/src/Simulation.cpp @@ -4,6 +4,7 @@ #include <utility> #include <cmath> #include <omp.h> +#include <mpi.h> #include <basics/utilities/UbScheduler.h> #include <geometry3d/GbCuboid3D.h> @@ -92,7 +93,7 @@ WriterConfiguration &Simulation::getWriterConfig() void Simulation::run() { - UBLOG(logINFO, "Beginning simulation setup") + UBLOG(logINFO, "Beginning simulation setup for " << communicator->getProcessID()) grid->setDeltaX(gridParameters->nodeDistance); grid->setPeriodicX1(gridParameters->periodicBoundaryInX1); grid->setPeriodicX2(gridParameters->periodicBoundaryInX2); @@ -258,18 +259,15 @@ std::shared_ptr<GbObject3D> Simulation::makeSimulationBoundingBox(const int &nodesInX1, const int &nodesInX2, const int &nodesInX3) const { - - double halfDx = -gridParameters->nodeDistance / 2.0; - double minX1 = halfDx, minX2 = halfDx, minX3 = halfDx; - const double maxX1 = minX1 + gridParameters->nodeDistance * (nodesInX1 - 1) + halfDx; - const double maxX2 = minX2 + gridParameters->nodeDistance * (nodesInX2 - 1) + halfDx; - const double maxX3 = minX3 + gridParameters->nodeDistance * (nodesInX3 - 1) + halfDx; + double minX1 = 0, minX2 = 0, minX3 = 0; + const double maxX1 = minX1 + gridParameters->nodeDistance * nodesInX1; + const double maxX2 = minX2 + gridParameters->nodeDistance * nodesInX2; + const double maxX3 = minX3 + gridParameters->nodeDistance * nodesInX3; UBLOG(logINFO, "Bounding box dimensions = [(" << minX1 << ", " << minX2 << ", " << minX3 << "); (" << maxX1 << ", " << maxX2 << ", " << maxX3 << ")]") - - std::shared_ptr<GbObject3D> gridCube(new GbCuboid3D(minX1, minX2, minX3, maxX1, maxX2, maxX3)); + auto gridCube = std::make_shared<GbCuboid3D>(minX1, minX2, minX3, maxX1, maxX2, maxX3); GbSystem3D::writeGeoObject(gridCube.get(), writerConfig.outputPath + "/geo/gridCube", writerConfig.getWriter()); return gridCube; } -- GitLab