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