main project swapped to raw arrays
This commit is contained in:
parent
18ac90affa
commit
10c3987f2d
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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++){
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user