From cb9dc3170db8fd1287e0b82eb5de65f30797cfb8 Mon Sep 17 00:00:00 2001 From: austin Date: Sun, 1 Dec 2024 23:45:29 -0500 Subject: [PATCH] integrate cmake + ninja --- .gitignore | 1 + .vscode/tasks.json | 29 +++ CMakeLists.txt | 26 +++ CMakePresets.json | 17 ++ README.md | 2 + build.sh | 21 +- buildNumber.properties | 4 +- docs/src/progress/renderertodo.md | 1 + pom.xml | 2 +- src/fluid/includes/mainFunctions.h | 24 +-- src/fluid/includes/solver_consts.h | 2 +- src/fluid/src/densitystep.c | 9 +- src/fluid/src/fluidsim.c | 182 +++++++++--------- src/fluid/src/velocitystep.c | 50 +++-- src/main/c/build.sh | 3 + ...re_server_fluid_manager_ServerFluidChunk.h | 6 + .../simulator/FluidAcceleratedSimulator.java | 4 +- 17 files changed, 250 insertions(+), 133 deletions(-) create mode 100644 .vscode/tasks.json create mode 100644 CMakeLists.txt create mode 100644 CMakePresets.json create mode 100644 src/main/c/build.sh diff --git a/.gitignore b/.gitignore index 04525c1c..123f6a4c 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,4 @@ #native libraries /shared-folder +/out \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 00000000..7ead1806 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,29 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "cmake", + "label": "CMake: build", + "command": "build", + "targets": [ + "all" + ], + "preset": "${command:cmake.activeBuildPresetName}", + "group": "build", + "problemMatcher": [], + "detail": "CMake template build task" + }, + { + "type": "cmake", + "label": "CMake: clean rebuild", + "command": "cleanRebuild", + "targets": [ + "all" + ], + "preset": "${command:cmake.activeBuildPresetName}", + "group": "build", + "problemMatcher": [], + "detail": "CMake template clean rebuild task" + } + ] +} \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 00000000..845c175b --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.10.0) +project(StormEngine VERSION 0.1.0 LANGUAGES C) + +# Find sources +file(GLOB_RECURSE SOURCES src/fluid/src/**.c) + +#include header files +include_directories(src/fluid/includes) + +#include jni +find_package(JNI REQUIRED) +include_directories(${JNI_INCLUDE_DIRS}) + +#include architecture flags +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64 -mavx -mavx2") + +#emit to shared-folder +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/shared-folder) + +#Create shared library +add_library(StormEngine SHARED ${SOURCES}) + + +include(CTest) +enable_testing() + diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 00000000..67000adb --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,17 @@ +{ + "version": 8, + "configurePresets": [ + { + "name": "default", + "displayName": "Default", + "description": "Sets Ninja generator, build and install directory", + "generator": "Ninja", + "binaryDir": "${sourceDir}/out/build/${presetName}", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug", + "CMAKE_TOOLCHAIN_FILE": "", + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}" + } + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 6e7547bc..6b2a2492 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,8 @@ When cloning the repo, make sure to grab all submodules with `git clone --recurs 2. From choco install - [mingw](https://community.chocolatey.org/packages/mingw) - [make](https://community.chocolatey.org/packages/make) + - [cmake](https://community.chocolatey.org/packages/cmake) + - [ninja](https://community.chocolatey.org/packages/ninja) 3. Run build.sh diff --git a/build.sh b/build.sh index 7d488128..22f52ddf 100755 --- a/build.sh +++ b/build.sh @@ -16,12 +16,29 @@ else exit 1 fi -#completely clear build directory +## +## INIT RELEASE FOLDER +## rm -rf ./build -#build directory structure mkdir build mkdir ./build/assets mkdir ./build/shared-folder + +## +## BUILD NATIVE CODE +## +#completely clear native code build directory +rm -rf ./out +rm -rf ./shared-folder +#build native code +mkdir shared-folder +mkdir out +mkdir ./out/build +mkdir ./out/build/default +cmake --preset=default +cmake --build ./out/build/default + + #compile project and copy into build dir mvn clean package cp ./target/Renderer-${BUILD_VER}.jar ./build/engine.jar diff --git a/buildNumber.properties b/buildNumber.properties index 28dd6466..7fcb763e 100644 --- a/buildNumber.properties +++ b/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Sun Dec 01 19:28:46 EST 2024 -buildNumber=504 +#Sun Dec 01 23:35:09 EST 2024 +buildNumber=512 diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 10b330d4..2d9ccca5 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1218,6 +1218,7 @@ Awake fluid chunks based on neighbor state Fluid chunk conditionally send update based on sleep status Fluid simulation normalization ratio Stabilized static liquids +Integrate CMake + Ninja diff --git a/pom.xml b/pom.xml index db99607c..fbcf8a53 100644 --- a/pom.xml +++ b/pom.xml @@ -561,7 +561,7 @@ 0 - ./src/fluid/compile.sh + ./src/main/c/build.sh diff --git a/src/fluid/includes/mainFunctions.h b/src/fluid/includes/mainFunctions.h index ce90dda3..b75ef9bd 100644 --- a/src/fluid/includes/mainFunctions.h +++ b/src/fluid/includes/mainFunctions.h @@ -9,7 +9,7 @@ * Method: addSourceToVectors * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void addSourceToVectors +void addSourceToVectors (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -17,7 +17,7 @@ static inline void addSourceToVectors * Method: solveVectorDiffuse * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void solveVectorDiffuse +void solveVectorDiffuse (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -25,7 +25,7 @@ static inline void solveVectorDiffuse * Method: setupProjection * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void setupProjection +void setupProjection ( int N, int chunk_mask, @@ -43,7 +43,7 @@ static inline void setupProjection * Method: solveProjection * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void solveProjection +void solveProjection (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -51,7 +51,7 @@ static inline void solveProjection * Method: finalizeProjection * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void finalizeProjection +void finalizeProjection (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /* @@ -59,21 +59,21 @@ static inline void finalizeProjection * Method: advectVectors * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void advectVectors +void advectVectors (int, int, float **, float **, float **, float **, float **, float **, float, float, float); /** * Adds density to the density array * @return The change in density within this chunk for this frame */ -static inline void addDensity(Environment * environment, int, int, float **, float **, float); +void addDensity(Environment * environment, int, int, float **, float **, float); /* * Class: electrosphere_FluidSim * Method: solveDiffuseDensity * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void solveDiffuseDensity +void solveDiffuseDensity (int, int, float **, float **, float **, float **, float **, float, float, float); /* @@ -81,7 +81,7 @@ static inline void solveDiffuseDensity * Method: advectDensity * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V */ -static inline void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt); +void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt); /** @@ -92,16 +92,16 @@ double calculateSum(uint32_t chunk_mask, int N, float ** d); /** * Normalizes the density array with a given ratio */ -static inline void normalizeDensity(int N, float ** d, float ratio); +void normalizeDensity(int N, float ** d, float ratio); -static inline void setBoundsToNeighborsRaw +void setBoundsToNeighborsRaw ( int N, int chunk_mask, int vector_dir, float ** neighborArray); -static inline void copyNeighborsRaw +void copyNeighborsRaw ( int N, int chunk_mask, diff --git a/src/fluid/includes/solver_consts.h b/src/fluid/includes/solver_consts.h index d1e99b27..1bdf9cc7 100644 --- a/src/fluid/includes/solver_consts.h +++ b/src/fluid/includes/solver_consts.h @@ -1,7 +1,7 @@ #ifndef SOLVER_CONSTS_H #define SOLVER_CONSTS_H -#define LINEARSOLVERTIMES 5 +#define LINEARSOLVERTIMES 3 #define VECTOR_DIFFUSE_TIMES 1 #endif \ No newline at end of file diff --git a/src/fluid/src/densitystep.c b/src/fluid/src/densitystep.c index c7f97d79..4d394f04 100644 --- a/src/fluid/src/densitystep.c +++ b/src/fluid/src/densitystep.c @@ -1,16 +1,19 @@ #include #include #include +#include #include "../includes/utilities.h" #include "../includes/chunkmask.h" +#include "../includes/environment.h" +#include "../includes/chunk.h" /** * Adds density to the density array * @return The change in density within this chunk for this frame */ -static inline void addDensity( +void addDensity( Environment * environment, int N, int chunk_mask, @@ -37,7 +40,7 @@ static inline void addDensity( /* * A single iteration of the jacobi to solve density diffusion */ -static inline void solveDiffuseDensity( +void solveDiffuseDensity( int N, int chunk_mask, float ** d, @@ -88,7 +91,7 @@ static inline void solveDiffuseDensity( /** * Advects the density based on the vectors */ -static inline void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt){ +void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt){ int i, j, k, i0, j0, k0, i1, j1, k1; int m,n,o; float x, y, z, s0, t0, s1, t1, u1, u0, dtx,dty,dtz; diff --git a/src/fluid/src/fluidsim.c b/src/fluid/src/fluidsim.c index 9b3cfd31..cf9e8581 100644 --- a/src/fluid/src/fluidsim.c +++ b/src/fluid/src/fluidsim.c @@ -5,10 +5,6 @@ #include "../includes/mainFunctions.h" #include "../includes/chunk.h" #include "../includes/simulation.h" - -#include "./chunkmask.c" -#include "./velocitystep.c" -#include "./densitystep.c" #include "../includes/solver_consts.h" #ifndef SAVE_STEPS @@ -42,12 +38,12 @@ void simulate( chunks = passedInChunks; // printf("%p\n",chunks[0].d); - saveStep(chunks[0]->u[CENTER_LOC], "./chunks/beginU"); - saveStep(chunks[0]->v[CENTER_LOC], "./chunks/beginV"); - saveStep(chunks[0]->w[CENTER_LOC], "./chunks/beginW"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/beginU0"); - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/beginV0"); - saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/beginW0"); + // saveStep(chunks[0]->u[CENTER_LOC], "./chunks/beginU"); + // saveStep(chunks[0]->v[CENTER_LOC], "./chunks/beginV"); + // saveStep(chunks[0]->w[CENTER_LOC], "./chunks/beginW"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/beginU0"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/beginV0"); + // saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/beginW0"); //solve chunk mask for(int i = 0; i < numChunks; i++){ @@ -66,12 +62,12 @@ void simulate( VISCOSITY_CONSTANT, timestep ); - saveStep(currentChunk->u[CENTER_LOC], "./chunks/addSrcU"); - saveStep(currentChunk->v[CENTER_LOC], "./chunks/addSrcV"); - saveStep(currentChunk->w[CENTER_LOC], "./chunks/addSrcW"); - saveStep(currentChunk->u0[CENTER_LOC], "./chunks/addSrcU0"); - saveStep(currentChunk->v0[CENTER_LOC], "./chunks/addSrcV0"); - saveStep(currentChunk->w0[CENTER_LOC], "./chunks/addSrcW0"); + // saveStep(currentChunk->u[CENTER_LOC], "./chunks/addSrcU"); + // saveStep(currentChunk->v[CENTER_LOC], "./chunks/addSrcV"); + // saveStep(currentChunk->w[CENTER_LOC], "./chunks/addSrcW"); + // saveStep(currentChunk->u0[CENTER_LOC], "./chunks/addSrcU0"); + // saveStep(currentChunk->v0[CENTER_LOC], "./chunks/addSrcV0"); + // saveStep(currentChunk->w0[CENTER_LOC], "./chunks/addSrcW0"); } //swap all vector fields { @@ -107,12 +103,12 @@ void simulate( copyNeighborsRaw(DIM,currentChunk->chunkMask,0,3,currentChunk->w0); } } - saveStep(chunks[0]->u[CENTER_LOC], "./chunks/swapU"); - saveStep(chunks[0]->v[CENTER_LOC], "./chunks/swapV"); - saveStep(chunks[0]->w[CENTER_LOC], "./chunks/swapW"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/swapU0"); - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/swapV0"); - saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/swapW0"); + // saveStep(chunks[0]->u[CENTER_LOC], "./chunks/swapU"); + // saveStep(chunks[0]->v[CENTER_LOC], "./chunks/swapV"); + // saveStep(chunks[0]->w[CENTER_LOC], "./chunks/swapW"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/swapU0"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/swapV0"); + // saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/swapW0"); // printf("after swap vecs u\n"); // printLayer(chunks[0]->u[CENTER_LOC],targetLayer); // printf("after swap vecs u0\n"); @@ -125,20 +121,20 @@ void simulate( Chunk * currentChunk = chunks[i]; solveVectorDiffuse(DIM,currentChunk->chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); } - if(SAVE_STEPS){ - sprintf(fileNameBuff, "./chunks/diffuseUStep%dx", l); - saveStep(chunks[0]->u[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseUStep%dx0", l); - saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseVStep%dx", l); - saveStep(chunks[0]->v[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseVStep%dx0", l); - saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseWStep%dx", l); - saveStep(chunks[0]->w[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseWStep%dx0", l); - saveStep(chunks[0]->w0[CENTER_LOC], fileNameBuff); - } + // if(SAVE_STEPS){ + // sprintf(fileNameBuff, "./chunks/diffuseUStep%dx", l); + // saveStep(chunks[0]->u[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseUStep%dx0", l); + // saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseVStep%dx", l); + // saveStep(chunks[0]->v[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseVStep%dx0", l); + // saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseWStep%dx", l); + // saveStep(chunks[0]->w[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseWStep%dx0", l); + // saveStep(chunks[0]->w0[CENTER_LOC], fileNameBuff); + // } //update array for vectors for(int i = 0; i < numChunks; i++){ Chunk * currentChunk = chunks[i]; @@ -155,28 +151,28 @@ void simulate( copyNeighborsRaw(DIM,currentChunk->chunkMask,0,0,currentChunk->v0); copyNeighborsRaw(DIM,currentChunk->chunkMask,0,0,currentChunk->w0); } - if(SAVE_STEPS){ - sprintf(fileNameBuff, "./chunks/diffuseUStep%dxBnd", l); - saveStep(chunks[0]->u[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseUStep%dx0Bnd", l); - saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseVStep%dxBnd", l); - saveStep(chunks[0]->v[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseVStep%dx0Bnd", l); - saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseWStep%dxBnd", l); - saveStep(chunks[0]->w[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/diffuseWStep%dx0Bnd", l); - saveStep(chunks[0]->w0[CENTER_LOC], fileNameBuff); - } + // if(SAVE_STEPS){ + // sprintf(fileNameBuff, "./chunks/diffuseUStep%dxBnd", l); + // saveStep(chunks[0]->u[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseUStep%dx0Bnd", l); + // saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseVStep%dxBnd", l); + // saveStep(chunks[0]->v[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseVStep%dx0Bnd", l); + // saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseWStep%dxBnd", l); + // saveStep(chunks[0]->w[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/diffuseWStep%dx0Bnd", l); + // saveStep(chunks[0]->w0[CENTER_LOC], fileNameBuff); + // } } } - saveStep(chunks[0]->u[CENTER_LOC], "./chunks/diffuseU"); - saveStep(chunks[0]->v[CENTER_LOC], "./chunks/diffuseV"); - saveStep(chunks[0]->w[CENTER_LOC], "./chunks/diffuseW"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/diffuseU0"); - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/diffuseV0"); - saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/diffuseW0"); + // saveStep(chunks[0]->u[CENTER_LOC], "./chunks/diffuseU"); + // saveStep(chunks[0]->v[CENTER_LOC], "./chunks/diffuseV"); + // saveStep(chunks[0]->w[CENTER_LOC], "./chunks/diffuseW"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/diffuseU0"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/diffuseV0"); + // saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/diffuseW0"); //solve projection { //update array for vectors @@ -199,8 +195,8 @@ void simulate( setupProjection(DIM,currentChunk->chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); } - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/setupProj1Div"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/setupProj1P"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/setupProj1Div"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/setupProj1P"); //update array for vectors for(int i = 0; i < numChunks; i++){ @@ -211,8 +207,8 @@ void simulate( copyNeighborsRaw(DIM,currentChunk->chunkMask,0,0,currentChunk->v0); } - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/setupProj1DivBnd"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/setupProj1PBnd"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/setupProj1DivBnd"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/setupProj1PBnd"); //samples u0, v0 //sets u0 @@ -224,23 +220,23 @@ void simulate( Chunk * currentChunk = chunks[i]; solveProjection(DIM,currentChunk->chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); } - if(SAVE_STEPS){ - sprintf(fileNameBuff, "./chunks/proj1Step%dx", l); - saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/proj1Step%dx0", l); - saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); - } + // if(SAVE_STEPS){ + // sprintf(fileNameBuff, "./chunks/proj1Step%dx", l); + // saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/proj1Step%dx0", l); + // saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); + // } for(int i = 0; i < numChunks; i++){ Chunk * currentChunk = chunks[i]; setBoundsToNeighborsRaw(DIM,currentChunk->chunkMask,0,currentChunk->u0); copyNeighborsRaw(DIM,currentChunk->chunkMask,0,0,currentChunk->u0); } - if(SAVE_STEPS){ - sprintf(fileNameBuff, "./chunks/proj1Step%dxBnd", l); - saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); - sprintf(fileNameBuff, "./chunks/proj1Step%dx0Bnd", l); - saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); - } + // if(SAVE_STEPS){ + // sprintf(fileNameBuff, "./chunks/proj1Step%dxBnd", l); + // saveStep(chunks[0]->u0[CENTER_LOC], fileNameBuff); + // sprintf(fileNameBuff, "./chunks/proj1Step%dx0Bnd", l); + // saveStep(chunks[0]->v0[CENTER_LOC], fileNameBuff); + // } } //samples u,v,w,u0 //sets u,v,w @@ -250,9 +246,9 @@ void simulate( finalizeProjection(DIM,currentChunk->chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); } - saveStep(chunks[0]->u[CENTER_LOC], "./chunks/finalizeProj1U"); - saveStep(chunks[0]->v[CENTER_LOC], "./chunks/finalizeProj1V"); - saveStep(chunks[0]->w[CENTER_LOC], "./chunks/finalizeProj1W"); + // saveStep(chunks[0]->u[CENTER_LOC], "./chunks/finalizeProj1U"); + // saveStep(chunks[0]->v[CENTER_LOC], "./chunks/finalizeProj1V"); + // saveStep(chunks[0]->w[CENTER_LOC], "./chunks/finalizeProj1W"); // exit(0); //set boundaries a final time for u,v,w //... @@ -272,12 +268,12 @@ void simulate( copyNeighborsRaw(DIM,currentChunk->chunkMask,0,3,currentChunk->w0); } } - saveStep(chunks[0]->u[CENTER_LOC], "./chunks/projU"); - saveStep(chunks[0]->v[CENTER_LOC], "./chunks/projV"); - saveStep(chunks[0]->w[CENTER_LOC], "./chunks/projW"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/projU0"); - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/projV0"); - saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/projW0"); + // saveStep(chunks[0]->u[CENTER_LOC], "./chunks/projU"); + // saveStep(chunks[0]->v[CENTER_LOC], "./chunks/projV"); + // saveStep(chunks[0]->w[CENTER_LOC], "./chunks/projW"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/projU0"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/projV0"); + // saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/projW0"); // exit(0); //swap all vector fields { @@ -313,12 +309,12 @@ void simulate( copyNeighborsRaw(DIM,currentChunk->chunkMask,0,3,currentChunk->w0); } } - saveStep(chunks[0]->u[CENTER_LOC], "./chunks/swap2U"); - saveStep(chunks[0]->v[CENTER_LOC], "./chunks/swap2V"); - saveStep(chunks[0]->w[CENTER_LOC], "./chunks/swap2W"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/swap2U0"); - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/swap2V0"); - saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/swap2W0"); + // saveStep(chunks[0]->u[CENTER_LOC], "./chunks/swap2U"); + // saveStep(chunks[0]->v[CENTER_LOC], "./chunks/swap2V"); + // saveStep(chunks[0]->w[CENTER_LOC], "./chunks/swap2W"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/swap2U0"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/swap2V0"); + // saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/swap2W0"); //advect vectors across boundaries { //update border arrs @@ -353,12 +349,12 @@ void simulate( copyNeighborsRaw(DIM,currentChunk->chunkMask,0,3,currentChunk->w); } } - saveStep(chunks[0]->u[CENTER_LOC], "./chunks/advectU"); - saveStep(chunks[0]->v[CENTER_LOC], "./chunks/advectV"); - saveStep(chunks[0]->w[CENTER_LOC], "./chunks/advectW"); - saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/advectU0"); - saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/advectV0"); - saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/advectW0"); + // saveStep(chunks[0]->u[CENTER_LOC], "./chunks/advectU"); + // saveStep(chunks[0]->v[CENTER_LOC], "./chunks/advectV"); + // saveStep(chunks[0]->w[CENTER_LOC], "./chunks/advectW"); + // saveStep(chunks[0]->u0[CENTER_LOC], "./chunks/advectU0"); + // saveStep(chunks[0]->v0[CENTER_LOC], "./chunks/advectV0"); + // saveStep(chunks[0]->w0[CENTER_LOC], "./chunks/advectW0"); //solve projection { //update array for vectors diff --git a/src/fluid/src/velocitystep.c b/src/fluid/src/velocitystep.c index f5ea0ee3..291a514b 100644 --- a/src/fluid/src/velocitystep.c +++ b/src/fluid/src/velocitystep.c @@ -16,14 +16,14 @@ #define SET_BOUND_IGNORE 0 #define SET_BOUND_USE_NEIGHBOR 1 -static inline void add_source(int N, float * x, float * s, float dt); -static inline void advect(uint32_t chunk_mask, int N, int b, float ** jrd, float ** jrd0, float * u, float * v, float * w, float dt); +void add_source(int N, float * x, float * s, float dt); +void advect(uint32_t chunk_mask, int N, int b, float ** jrd, float ** jrd0, float * u, float * v, float * w, float dt); /* * Adds force to all vectors */ -static inline void addSourceToVectors +void addSourceToVectors ( int N, int chunk_mask, @@ -44,7 +44,7 @@ static inline void addSourceToVectors /** * Adds from a source array to a destination array */ -static inline void add_source(int N, float * x, float * s, float dt){ +void add_source(int N, float * x, float * s, float dt){ int i; int size=N*N*N; for(i=0; i