main project swapped to raw arrays

This commit is contained in:
unknown 2024-03-10 17:56:49 -04:00
parent 18ac90affa
commit 10c3987f2d
3 changed files with 25 additions and 25 deletions

View File

@ -386,7 +386,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
u0 = currentChunk->ju0; u0 = currentChunk->ju0;
v0 = currentChunk->jv0; v0 = currentChunk->jv0;
w0 = currentChunk->jw0; w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_solveProjection(env,chunkJRaw,DIM,chunkMask,u,v,w,u0,v0,w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); Java_electrosphere_FluidSim_solveProjection(env,chunkJRaw,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];
@ -400,8 +400,8 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
u0 = currentChunk->ju0; u0 = currentChunk->ju0;
v0 = currentChunk->jv0; v0 = currentChunk->jv0;
w0 = currentChunk->jw0; w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,1,u0); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,1,currentChunk->u0);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,1,u0); copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,1,currentChunk->u0);
} }
} }
//samples u,v,w,u0 //samples u,v,w,u0
@ -435,12 +435,12 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
u0 = currentChunk->ju0; u0 = currentChunk->ju0;
v0 = currentChunk->jv0; v0 = currentChunk->jv0;
w0 = currentChunk->jw0; w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,1,u); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,1,currentChunk->u);
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,2,v); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,2,currentChunk->v);
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,3,w); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,3,currentChunk->w);
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,1,u0); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,1,currentChunk->u0);
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,2,v0); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,2,currentChunk->v0);
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,3,w0); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,3,currentChunk->w0);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,1,u); Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,1,u);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,2,v); Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,2,v);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,3,w); Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,3,w);
@ -642,10 +642,10 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
u0 = currentChunk->ju0; u0 = currentChunk->ju0;
v0 = currentChunk->jv0; v0 = currentChunk->jv0;
w0 = currentChunk->jw0; w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,1,u0); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,1,currentChunk->u0);
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,2,v0); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,2,currentChunk->v0);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,1,u0); copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,1,currentChunk->u0);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,2,v0); copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,2,currentChunk->v0);
} }
//samples u0, v0 //samples u0, v0
//sets u0 //sets u0
@ -665,7 +665,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
u0 = currentChunk->ju0; u0 = currentChunk->ju0;
v0 = currentChunk->jv0; v0 = currentChunk->jv0;
w0 = currentChunk->jw0; w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_solveProjection(env,chunkJRaw,DIM,chunkMask,u,v,w,u0,v0,w0,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); Java_electrosphere_FluidSim_solveProjection(env,chunkJRaw,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];
@ -679,8 +679,8 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
u0 = currentChunk->ju0; u0 = currentChunk->ju0;
v0 = currentChunk->jv0; v0 = currentChunk->jv0;
w0 = currentChunk->jw0; w0 = currentChunk->jw0;
Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,1,u0); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,1,currentChunk->u0);
Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,1,u0); copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,1,currentChunk->u0);
} }
} }
//samples u,v,w,u0 //samples u,v,w,u0

View File

@ -41,7 +41,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_setupProjection
* Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V
*/ */
JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveProjection JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveProjection
(JNIEnv *, jobject, jint, jint, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jfloat, jfloat, jfloat); (JNIEnv *, jobject, jint, jint, float **, float **, float **, float **, float **, float **, jfloat, jfloat, jfloat);
/* /*
* Class: electrosphere_FluidSim * Class: electrosphere_FluidSim

View File

@ -261,12 +261,12 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveProjection
jobject this, jobject this,
jint N, jint N,
jint chunk_mask, jint chunk_mask,
jobjectArray jru, float ** jru,
jobjectArray jrv, float ** jrv,
jobjectArray jrw, float ** jrw,
jobjectArray jru0, float ** jru0,
jobjectArray jrv0, float ** jrv0,
jobjectArray jrw0, float ** jrw0,
jfloat DIFFUSION_CONST, jfloat DIFFUSION_CONST,
jfloat VISCOSITY_CONST, jfloat VISCOSITY_CONST,
jfloat dt){ jfloat dt){
@ -276,8 +276,8 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveProjection
__m256 aScalar = _mm256_set1_ps(a); __m256 aScalar = _mm256_set1_ps(a);
__m256 cScalar = _mm256_set1_ps(c); __m256 cScalar = _mm256_set1_ps(c);
float * p = GET_ARR(env,jru0,CENTER_LOC); float * p = GET_ARR_RAW(env,jru0,CENTER_LOC);
float * div = GET_ARR(env,jrv0,CENTER_LOC); float * div = GET_ARR_RAW(env,jrv0,CENTER_LOC);
// update for each cell // update for each cell
for(k=1; k<N-1; k++){ for(k=1; k<N-1; k++){
for(j=1; j<N-1; j++){ for(j=1; j<N-1; j++){