diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cc1e8ed..09d6abf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,16 +1,5 @@ -# CMakeList.txt : CMake project for EulerFluid, include source and define -# project specific logic here. -# -cmake_minimum_required (VERSION 3.8) +set(BUILD_EULER_FLUID ON CACHE BOOL "Build Euler Fluid Project") -# Add source to this project's executable. -add_executable (EulerFluid "main.cpp" "Application.hpp" "Application.cpp" "VectorField.hpp" "VectorField.cpp" "FluidField.hpp" "FluidField.cpp") - -target_include_directories(EulerFluid PUBLIC ${SDL2_INCLUDE_DIRS}) -target_link_libraries(EulerFluid PUBLIC ${SDL2_LIBRARIES}) - -if(MSVC) -target_compile_definitions(EulerFluid PUBLIC _CRT_SECURE_NO_WARNINGS) -endif() - -# TODO: Add tests and install targets if needed. +if(${BUILD_EULER_FLUID}) + add_subdirectory(EulerFluid) +endif() \ No newline at end of file diff --git a/src/Application.cpp b/src/EulerFluid/Application.cpp similarity index 98% rename from src/Application.cpp rename to src/EulerFluid/Application.cpp index 3b6e516..08fbcb8 100644 --- a/src/Application.cpp +++ b/src/EulerFluid/Application.cpp @@ -88,7 +88,7 @@ void Application::Update() before = std::chrono::steady_clock::now(); field->VelocityStep(0.002, frametime); - field->DensityStep(0.001, frametime); + field->DensityStep(0.0005, frametime); } void Application::Render() diff --git a/src/Application.hpp b/src/EulerFluid/Application.hpp similarity index 100% rename from src/Application.hpp rename to src/EulerFluid/Application.hpp diff --git a/src/EulerFluid/CMakeLists.txt b/src/EulerFluid/CMakeLists.txt new file mode 100644 index 0000000..cc1e8ed --- /dev/null +++ b/src/EulerFluid/CMakeLists.txt @@ -0,0 +1,16 @@ +# CMakeList.txt : CMake project for EulerFluid, include source and define +# project specific logic here. +# +cmake_minimum_required (VERSION 3.8) + +# Add source to this project's executable. +add_executable (EulerFluid "main.cpp" "Application.hpp" "Application.cpp" "VectorField.hpp" "VectorField.cpp" "FluidField.hpp" "FluidField.cpp") + +target_include_directories(EulerFluid PUBLIC ${SDL2_INCLUDE_DIRS}) +target_link_libraries(EulerFluid PUBLIC ${SDL2_LIBRARIES}) + +if(MSVC) +target_compile_definitions(EulerFluid PUBLIC _CRT_SECURE_NO_WARNINGS) +endif() + +# TODO: Add tests and install targets if needed. diff --git a/src/FluidField.cpp b/src/EulerFluid/FluidField.cpp similarity index 99% rename from src/FluidField.cpp rename to src/EulerFluid/FluidField.cpp index 2f49300..d9bd10b 100644 --- a/src/FluidField.cpp +++ b/src/EulerFluid/FluidField.cpp @@ -215,7 +215,7 @@ void FluidField::VelocityStep(double visc, double dt) AdvectVelocity(dt); Project(); - vel->RecalculateMagnitude(); + // vel->RecalculateMagnitude(); } void FluidField::Project() diff --git a/src/FluidField.hpp b/src/EulerFluid/FluidField.hpp similarity index 100% rename from src/FluidField.hpp rename to src/EulerFluid/FluidField.hpp diff --git a/src/VectorField.cpp b/src/EulerFluid/VectorField.cpp similarity index 92% rename from src/VectorField.cpp rename to src/EulerFluid/VectorField.cpp index 7cadd41..66337fd 100644 --- a/src/VectorField.cpp +++ b/src/EulerFluid/VectorField.cpp @@ -62,14 +62,15 @@ void VectorField::RecalculateMagnitude() { double u = horizontal[y * this->width + x]; double v = vertical[y * this->width + x]; - double magnitude = u + v; + double magnitude = u*u + v*v; - biggestMagnitude += (biggestMagnitude < magnitude) * (magnitude - biggestMagnitude); + biggestMagnitude = std::max(biggestMagnitude, magnitude); } } if (biggestMagnitude == 0.0) // should use an epsilon probably biggestMagnitude = 1.0; - biggestMagnitude = sqrt(biggestMagnitude * 5.0); + biggestMagnitude = sqrt(biggestMagnitude); + biggestMagnitude = 0.5f; } diff --git a/src/VectorField.hpp b/src/EulerFluid/VectorField.hpp similarity index 100% rename from src/VectorField.hpp rename to src/EulerFluid/VectorField.hpp diff --git a/src/main.cpp b/src/EulerFluid/main.cpp similarity index 100% rename from src/main.cpp rename to src/EulerFluid/main.cpp