From f1d3c3d0114a385c78c31f337a40405f1d537dfb Mon Sep 17 00:00:00 2001 From: unknown <> Date: Sun, 10 Mar 2024 17:04:36 -0400 Subject: [PATCH] swapping arrays correctly --- src/main/c/fluidsim.c | 68 ++++++++++++++++++++++++++++++------------- 1 file changed, 48 insertions(+), 20 deletions(-) diff --git a/src/main/c/fluidsim.c b/src/main/c/fluidsim.c index 852ef6d..5e24451 100644 --- a/src/main/c/fluidsim.c +++ b/src/main/c/fluidsim.c @@ -178,16 +178,17 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( { //swap vector fields for(int i = 0; i < numChunks; i++){ - 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); + Chunk * currentChunk = chunks[i]; + chunkJRaw = currentChunk->jchunk; + chunkMask = currentChunk->chunkMask; + d = currentChunk->jd; + d0 = currentChunk->jd0; + u = currentChunk->ju; + v = currentChunk->jv; + w = currentChunk->jw; + u0 = currentChunk->ju0; + v0 = currentChunk->jv0; + w0 = currentChunk->jw0; setBuffArr(uJId,u0); setBuffArr(u0JId,u); @@ -196,6 +197,19 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( setBuffArr(wJId,w0); setBuffArr(w0JId,w); + + jobject tmpObj; + tmpObj = currentChunk->ju; + currentChunk->ju = currentChunk->ju0; + currentChunk->ju0 = u; + + tmpObj = currentChunk->jv; + currentChunk->jv = currentChunk->jv0; + currentChunk->jv0 = v; + + tmpObj = currentChunk->jw; + currentChunk->jw = currentChunk->jw0; + currentChunk->jw0 = w; } //copy neighbors for(int i = 0; i < numChunks; i++){ @@ -392,16 +406,17 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( { //swap vector fields for(int i = 0; i < numChunks; i++){ - 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); + Chunk * currentChunk = chunks[i]; + chunkJRaw = currentChunk->jchunk; + chunkMask = currentChunk->chunkMask; + d = currentChunk->jd; + d0 = currentChunk->jd0; + u = currentChunk->ju; + v = currentChunk->jv; + w = currentChunk->jw; + u0 = currentChunk->ju0; + v0 = currentChunk->jv0; + w0 = currentChunk->jw0; setBuffArr(uJId,u0); setBuffArr(u0JId,u); @@ -410,6 +425,19 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( setBuffArr(wJId,w0); setBuffArr(w0JId,w); + + jobject tmpObj; + tmpObj = currentChunk->ju; + currentChunk->ju = currentChunk->ju0; + currentChunk->ju0 = u; + + tmpObj = currentChunk->jv; + currentChunk->jv = currentChunk->jv0; + currentChunk->jv0 = v; + + tmpObj = currentChunk->jw; + currentChunk->jw = currentChunk->jw0; + currentChunk->jw0 = w; } //copy neighbors for(int i = 0; i < numChunks; i++){