remove jni assignments
All checks were successful
studiorailgun/fluid-sim/pipeline/head This commit looks good
All checks were successful
studiorailgun/fluid-sim/pipeline/head This commit looks good
This commit is contained in:
parent
2bd92fb719
commit
3e591442c9
@ -23,7 +23,6 @@
|
|||||||
* A chunk
|
* A chunk
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
jobject jchunk;
|
|
||||||
float * d[27];
|
float * d[27];
|
||||||
float * d0[27];
|
float * d0[27];
|
||||||
float * u[27];
|
float * u[27];
|
||||||
@ -32,14 +31,6 @@ typedef struct {
|
|||||||
float * u0[27];
|
float * u0[27];
|
||||||
float * v0[27];
|
float * v0[27];
|
||||||
float * w0[27];
|
float * w0[27];
|
||||||
jobjectArray jd;
|
|
||||||
jobjectArray jd0;
|
|
||||||
jobjectArray ju;
|
|
||||||
jobjectArray jv;
|
|
||||||
jobjectArray jw;
|
|
||||||
jobjectArray ju0;
|
|
||||||
jobjectArray jv0;
|
|
||||||
jobjectArray jw0;
|
|
||||||
int chunkMask;
|
int chunkMask;
|
||||||
} Chunk;
|
} Chunk;
|
||||||
|
|
||||||
@ -122,15 +113,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
u0 = (*env)->GetObjectField(env,chunkJRaw,u0JId);
|
u0 = (*env)->GetObjectField(env,chunkJRaw,u0JId);
|
||||||
v0 = (*env)->GetObjectField(env,chunkJRaw,v0JId);
|
v0 = (*env)->GetObjectField(env,chunkJRaw,v0JId);
|
||||||
w0 = (*env)->GetObjectField(env,chunkJRaw,w0JId);
|
w0 = (*env)->GetObjectField(env,chunkJRaw,w0JId);
|
||||||
newChunk->jd = jd;
|
|
||||||
newChunk->jd0 = jd0;
|
|
||||||
newChunk->ju = u;
|
|
||||||
newChunk->jv = v;
|
|
||||||
newChunk->jw = w;
|
|
||||||
newChunk->ju0 = u0;
|
|
||||||
newChunk->jv0 = v0;
|
|
||||||
newChunk->jw0 = w0;
|
|
||||||
newChunk->jchunk = chunkJRaw;
|
|
||||||
newChunk->chunkMask = chunkMask;
|
newChunk->chunkMask = chunkMask;
|
||||||
for(int j = 0; j < 27; j++){
|
for(int j = 0; j < 27; j++){
|
||||||
if((chunkMask & CHUNK_INDEX_ARR[j]) > 0){
|
if((chunkMask & CHUNK_INDEX_ARR[j]) > 0){
|
||||||
@ -161,27 +143,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//solve chunk mask
|
//solve chunk mask
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
//old assignments
|
|
||||||
// chunkJRaw = getChunk(i);
|
|
||||||
// chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId);
|
|
||||||
// d = getBuffArr(dJId);
|
|
||||||
// d0 = getBuffArr(d0JId);
|
|
||||||
// u = getBuffArr(uJId);
|
|
||||||
// v = getBuffArr(vJId);
|
|
||||||
// w = getBuffArr(wJId);
|
|
||||||
// u0 = getBuffArr(u0JId);
|
|
||||||
// v0 = getBuffArr(v0JId);
|
|
||||||
// w0 = getBuffArr(w0JId);
|
|
||||||
Java_electrosphere_FluidSim_addSourceToVectors(
|
Java_electrosphere_FluidSim_addSourceToVectors(
|
||||||
DIM,
|
DIM,
|
||||||
chunkMask,
|
chunkMask,
|
||||||
@ -201,7 +163,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//swap vector fields
|
//swap vector fields
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
|
|
||||||
float * tmpArr;
|
float * tmpArr;
|
||||||
@ -224,16 +185,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//copy neighbors
|
//copy neighbors
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u);
|
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,2,currentChunk->v);
|
copyNeighborsRaw(DIM,chunkMask,0,2,currentChunk->v);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,3,currentChunk->w);
|
copyNeighborsRaw(DIM,chunkMask,0,3,currentChunk->w);
|
||||||
@ -248,31 +200,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//solve vector diffusion
|
//solve vector diffusion
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_solveVectorDiffuse(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_solveVectorDiffuse(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
//update array for vectors
|
//update array for vectors
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
||||||
@ -287,16 +221,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//update array for vectors
|
//update array for vectors
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
||||||
@ -311,31 +236,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//setup projection
|
//setup projection
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_setupProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_setupProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
//update array for vectors
|
//update array for vectors
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v0);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v0);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
||||||
@ -349,30 +256,12 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
for(int l = 0; l < LINEARSOLVERTIMES; l++){
|
for(int l = 0; l < LINEARSOLVERTIMES; l++){
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_solveProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_solveProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
||||||
}
|
}
|
||||||
@ -382,32 +271,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//Finalize projection
|
//Finalize projection
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_finalizeProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_finalizeProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
//set boundaries a final time for u,v,w
|
//set boundaries a final time for u,v,w
|
||||||
//...
|
//...
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
||||||
@ -427,7 +298,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//swap vector fields
|
//swap vector fields
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
|
|
||||||
float * tmpArr;
|
float * tmpArr;
|
||||||
@ -450,16 +320,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//copy neighbors
|
//copy neighbors
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u);
|
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,2,currentChunk->v);
|
copyNeighborsRaw(DIM,chunkMask,0,2,currentChunk->v);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,3,currentChunk->w);
|
copyNeighborsRaw(DIM,chunkMask,0,3,currentChunk->w);
|
||||||
@ -473,16 +334,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//update border arrs
|
//update border arrs
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
||||||
@ -499,31 +351,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//advect
|
//advect
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_advectVectors(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_advectVectors(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
//update neighbor arr
|
//update neighbor arr
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
||||||
@ -537,16 +371,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//update array for vectors
|
//update array for vectors
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
||||||
@ -561,31 +386,13 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//setup projection
|
//setup projection
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_setupProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_setupProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
//update array for vectors
|
//update array for vectors
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v0);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v0);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
||||||
@ -599,30 +406,12 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
for(int l = 0; l < LINEARSOLVERTIMES; l++){
|
for(int l = 0; l < LINEARSOLVERTIMES; l++){
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_solveProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_solveProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u0);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
copyNeighborsRaw(DIM,chunkMask,0,1,currentChunk->u0);
|
||||||
}
|
}
|
||||||
@ -632,32 +421,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
//Finalize projection
|
//Finalize projection
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
Java_electrosphere_FluidSim_finalizeProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_finalizeProjection(DIM,chunkMask,currentChunk->u,currentChunk->v,currentChunk->w,currentChunk->u0,currentChunk->v0,currentChunk->w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
//set boundaries a final time for u,v,w
|
//set boundaries a final time for u,v,w
|
||||||
//...
|
//...
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
u0 = currentChunk->ju0;
|
|
||||||
v0 = currentChunk->jv0;
|
|
||||||
w0 = currentChunk->jw0;
|
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
setBoundsToNeighborsRaw(DIM,chunkMask,1,currentChunk->u);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
setBoundsToNeighborsRaw(DIM,chunkMask,2,currentChunk->v);
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
setBoundsToNeighborsRaw(DIM,chunkMask,3,currentChunk->w);
|
||||||
@ -689,7 +460,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
{
|
{
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
Java_electrosphere_FluidSim_addDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,timestep);
|
Java_electrosphere_FluidSim_addDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,timestep);
|
||||||
}
|
}
|
||||||
@ -709,10 +479,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
}
|
}
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
jd = currentChunk->jd;
|
|
||||||
jd0 = currentChunk->jd0;
|
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d);
|
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d0);
|
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d0);
|
||||||
}
|
}
|
||||||
@ -722,16 +489,11 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
for(int l = 0; l < LINEARSOLVERTIMES; l++){
|
for(int l = 0; l < LINEARSOLVERTIMES; l++){
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
u = currentChunk->ju;
|
|
||||||
v = currentChunk->jv;
|
|
||||||
w = currentChunk->jw;
|
|
||||||
Java_electrosphere_FluidSim_solveDiffuseDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_solveDiffuseDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,0,currentChunk->d);
|
setBoundsToNeighborsRaw(DIM,chunkMask,0,currentChunk->d);
|
||||||
}
|
}
|
||||||
@ -751,7 +513,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
}
|
}
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d);
|
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d);
|
||||||
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d0);
|
copyNeighborsRaw(DIM,chunkMask,0,0,currentChunk->d0);
|
||||||
@ -761,7 +522,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
{
|
{
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
Java_electrosphere_FluidSim_advectDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
Java_electrosphere_FluidSim_advectDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
|
||||||
}
|
}
|
||||||
@ -770,7 +530,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
|
|||||||
{
|
{
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
chunkJRaw = currentChunk->jchunk;
|
|
||||||
chunkMask = currentChunk->chunkMask;
|
chunkMask = currentChunk->chunkMask;
|
||||||
setBoundsToNeighborsRaw(DIM,chunkMask,0,currentChunk->d);
|
setBoundsToNeighborsRaw(DIM,chunkMask,0,currentChunk->d);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -160,6 +160,8 @@ public class FluidSim {
|
|||||||
static double lastTime = 0;
|
static double lastTime = 0;
|
||||||
public static void simChunks(FluidSim[][][] simArray, int step, float timestep){
|
public static void simChunks(FluidSim[][][] simArray, int step, float timestep){
|
||||||
|
|
||||||
|
// simArray[0][1][2].density0ArrayView[5] = 3.0f;
|
||||||
|
|
||||||
List<FluidSim> chunksToSim = new LinkedList<FluidSim>();
|
List<FluidSim> chunksToSim = new LinkedList<FluidSim>();
|
||||||
//
|
//
|
||||||
//init data for upcoming frame
|
//init data for upcoming frame
|
||||||
|
|||||||
@ -22,7 +22,8 @@ public class Main {
|
|||||||
|
|
||||||
public static void main(String args[]){
|
public static void main(String args[]){
|
||||||
|
|
||||||
int dim = 5;
|
int dim = 3;
|
||||||
|
int vdim = 2;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
long time = 0;
|
long time = 0;
|
||||||
long lastTime = 0;
|
long lastTime = 0;
|
||||||
@ -36,9 +37,9 @@ public class Main {
|
|||||||
Mesh.initShaderProgram();
|
Mesh.initShaderProgram();
|
||||||
|
|
||||||
|
|
||||||
FluidSim[][][] simArray = initFluidSim(dim,1,dim);
|
FluidSim[][][] simArray = initFluidSim(dim,vdim,dim);
|
||||||
|
|
||||||
Mesh[][][] meshArray = initMeshes(dim,1,dim,simArray);
|
Mesh[][][] meshArray = initMeshes(dim,vdim,dim,simArray);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user