fully parse out list of chunks
All checks were successful
studiorailgun/fluid-sim/pipeline/head This commit looks good

This commit is contained in:
unknown 2024-03-10 17:11:34 -04:00
parent 1389b47ce1
commit 1f39a03e06

View File

@ -715,16 +715,17 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
currentChunk->jd0 = d; currentChunk->jd0 = d;
} }
for(int i = 0; i < numChunks; i++){ for(int i = 0; i < numChunks; i++){
chunkJRaw = getChunk(i); Chunk * currentChunk = chunks[i];
chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId); chunkJRaw = currentChunk->jchunk;
d = getBuffArr(dJId); chunkMask = currentChunk->chunkMask;
d0 = getBuffArr(d0JId); d = currentChunk->jd;
u = getBuffArr(uJId); d0 = currentChunk->jd0;
v = getBuffArr(vJId); u = currentChunk->ju;
w = getBuffArr(wJId); v = currentChunk->jv;
u0 = getBuffArr(u0JId); w = currentChunk->jw;
v0 = getBuffArr(v0JId); u0 = currentChunk->ju0;
w0 = getBuffArr(w0JId); v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d); Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d0); Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d0);
} }
@ -733,29 +734,31 @@ 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++){
chunkJRaw = getChunk(i); Chunk * currentChunk = chunks[i];
chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId); chunkJRaw = currentChunk->jchunk;
d = getBuffArr(dJId); chunkMask = currentChunk->chunkMask;
d0 = getBuffArr(d0JId); d = currentChunk->jd;
u = getBuffArr(uJId); d0 = currentChunk->jd0;
v = getBuffArr(vJId); u = currentChunk->ju;
w = getBuffArr(wJId); v = currentChunk->jv;
u0 = getBuffArr(u0JId); w = currentChunk->jw;
v0 = getBuffArr(v0JId); u0 = currentChunk->ju0;
w0 = getBuffArr(w0JId); v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_solveDiffuseDensity(env,chunkJRaw,DIM,chunkMask,d,d0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); Java_electrosphere_FluidSim_solveDiffuseDensity(env,chunkJRaw,DIM,chunkMask,d,d0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
} }
for(int i = 0; i < numChunks; i++){ for(int i = 0; i < numChunks; i++){
chunkJRaw = getChunk(i); Chunk * currentChunk = chunks[i];
chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId); chunkJRaw = currentChunk->jchunk;
d = getBuffArr(dJId); chunkMask = currentChunk->chunkMask;
d0 = getBuffArr(d0JId); d = currentChunk->jd;
u = getBuffArr(uJId); d0 = currentChunk->jd0;
v = getBuffArr(vJId); u = currentChunk->ju;
w = getBuffArr(wJId); v = currentChunk->jv;
u0 = getBuffArr(u0JId); w = currentChunk->jw;
v0 = getBuffArr(v0JId); u0 = currentChunk->ju0;
w0 = getBuffArr(w0JId); v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,0,d); Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,0,d);
} }
} }
@ -784,16 +787,17 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
currentChunk->jd0 = d; currentChunk->jd0 = d;
} }
for(int i = 0; i < numChunks; i++){ for(int i = 0; i < numChunks; i++){
chunkJRaw = getChunk(i); Chunk * currentChunk = chunks[i];
chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId); chunkJRaw = currentChunk->jchunk;
d = getBuffArr(dJId); chunkMask = currentChunk->chunkMask;
d0 = getBuffArr(d0JId); d = currentChunk->jd;
u = getBuffArr(uJId); d0 = currentChunk->jd0;
v = getBuffArr(vJId); u = currentChunk->ju;
w = getBuffArr(wJId); v = currentChunk->jv;
u0 = getBuffArr(u0JId); w = currentChunk->jw;
v0 = getBuffArr(v0JId); u0 = currentChunk->ju0;
w0 = getBuffArr(w0JId); v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d); Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d0); Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,d0);
} }
@ -801,32 +805,34 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
//advect density //advect density
{ {
for(int i = 0; i < numChunks; i++){ for(int i = 0; i < numChunks; i++){
chunkJRaw = getChunk(i); Chunk * currentChunk = chunks[i];
chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId); chunkJRaw = currentChunk->jchunk;
d = getBuffArr(dJId); chunkMask = currentChunk->chunkMask;
d0 = getBuffArr(d0JId); d = currentChunk->jd;
u = getBuffArr(uJId); d0 = currentChunk->jd0;
v = getBuffArr(vJId); u = currentChunk->ju;
w = getBuffArr(wJId); v = currentChunk->jv;
u0 = getBuffArr(u0JId); w = currentChunk->jw;
v0 = getBuffArr(v0JId); u0 = currentChunk->ju0;
w0 = getBuffArr(w0JId); v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_advectDensity(env,chunkJRaw,DIM,chunkMask,d,d0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); Java_electrosphere_FluidSim_advectDensity(env,chunkJRaw,DIM,chunkMask,d,d0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep);
} }
} }
//mirror densities //mirror densities
{ {
for(int i = 0; i < numChunks; i++){ for(int i = 0; i < numChunks; i++){
chunkJRaw = getChunk(i); Chunk * currentChunk = chunks[i];
chunkMask = (*env)->GetIntField(env,chunkJRaw,chunkmaskJId); chunkJRaw = currentChunk->jchunk;
d = getBuffArr(dJId); chunkMask = currentChunk->chunkMask;
d0 = getBuffArr(d0JId); d = currentChunk->jd;
u = getBuffArr(uJId); d0 = currentChunk->jd0;
v = getBuffArr(vJId); u = currentChunk->ju;
w = getBuffArr(wJId); v = currentChunk->jv;
u0 = getBuffArr(u0JId); w = currentChunk->jw;
v0 = getBuffArr(v0JId); u0 = currentChunk->ju0;
w0 = getBuffArr(w0JId); v0 = currentChunk->jv0;
w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,0,d); Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,0,d);
} }
} }