swap diffusion solver to raw arrays

This commit is contained in:
unknown 2024-03-10 17:39:21 -04:00
parent fb81cc2982
commit 085cd18fdf
3 changed files with 7 additions and 7 deletions

View File

@ -40,8 +40,8 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveDiffuseDensity
jobject this, jobject this,
jint N, jint N,
jint chunk_mask, jint chunk_mask,
jobjectArray jrx, float ** d,
jobjectArray jrx0, float ** d0,
jobjectArray jru, jobjectArray jru,
jobjectArray jrv, jobjectArray jrv,
jobjectArray jrw, jobjectArray jrw,
@ -51,8 +51,8 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveDiffuseDensity
float a=dt*DIFFUSION_CONST*N*N*N; float a=dt*DIFFUSION_CONST*N*N*N;
float c=1+6*a; float c=1+6*a;
int i, j, k, l, m; int i, j, k, l, m;
float * x = GET_ARR(env,jrx,CENTER_LOC); float * x = GET_ARR_RAW(env,d,CENTER_LOC);
float * x0 = GET_ARR(env,jrx0,CENTER_LOC); float * x0 = GET_ARR_RAW(env,d0,CENTER_LOC);
__m256 aScalar = _mm256_set1_ps(a); __m256 aScalar = _mm256_set1_ps(a);
__m256 cScalar = _mm256_set1_ps(c); __m256 cScalar = _mm256_set1_ps(c);

View File

@ -772,7 +772,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_solveDiffuseDensity(env,chunkJRaw,DIM,chunkMask,jd,jd0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); Java_electrosphere_FluidSim_solveDiffuseDensity(env,chunkJRaw,DIM,chunkMask,currentChunk->d,currentChunk->d0,u,v,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];
@ -786,7 +786,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_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,0,jd); setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,currentChunk->d);
} }
} }
} }

View File

@ -73,7 +73,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_addDensity
* Signature: (II[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;FFF)V
*/ */
JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveDiffuseDensity JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveDiffuseDensity
(JNIEnv *, jobject, jint, jint, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jfloat, jfloat, jfloat); (JNIEnv *, jobject, jint, jint, float **, float **, jobjectArray, jobjectArray, jobjectArray, jfloat, jfloat, jfloat);
/* /*
* Class: electrosphere_FluidSim * Class: electrosphere_FluidSim