refactor add density func
All checks were successful
studiorailgun/fluid-sim/pipeline/head This commit looks good

This commit is contained in:
unknown 2024-03-15 17:12:07 -04:00
parent 7a1da2d29c
commit 69a803fb3f
3 changed files with 7 additions and 26 deletions

View File

@ -5,7 +5,6 @@
#include "includes/utilities.h" #include "includes/utilities.h"
#include "includes/chunkmask.h" #include "includes/chunkmask.h"
void advectDensity(uint32_t chunk_mask, int N, int b, float ** d, float ** d0, float * u, float * v, float * w, float dt);
/* /*
* Class: electrosphere_FluidSim * Class: electrosphere_FluidSim
@ -81,27 +80,7 @@ void Java_electrosphere_FluidSim_solveDiffuseDensity
} }
} }
/* void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt){
* Class: electrosphere_FluidSim
* Method: advectDensity
* Signature: (II[Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V
*/
void Java_electrosphere_FluidSim_advectDensity
(
int N,
int chunk_mask,
float ** d,
float ** d0,
float ** jru,
float ** jrv,
float ** jrw,
float DIFFUSION_CONST,
float VISCOSITY_CONST,
float dt){
advectDensity(chunk_mask,N,3,d,d0,GET_ARR_RAW(env,jru,CENTER_LOC),GET_ARR_RAW(env,jrv,CENTER_LOC),GET_ARR_RAW(env,jrw,CENTER_LOC),dt);
}
void advectDensity(uint32_t chunk_mask, int N, int b, float ** d, float ** d0, float * u, float * v, float * w, float dt){
int i, j, k, i0, j0, k0, i1, j1, k1; int i, j, k, i0, j0, k0, i1, j1, k1;
int m,n,o; int m,n,o;
float x, y, z, s0, t0, s1, t1, u1, u0, dtx,dty,dtz; float x, y, z, s0, t0, s1, t1, u1, u0, dtx,dty,dtz;
@ -109,9 +88,12 @@ void advectDensity(uint32_t chunk_mask, int N, int b, float ** d, float ** d0, f
dtx=dty=dtz=dt*N; dtx=dty=dtz=dt*N;
float * center_d = GET_ARR_RAW(env,d,CENTER_LOC); float * center_d = GET_ARR_RAW(env,d,CENTER_LOC);
float * center_d0 = GET_ARR_RAW(env,d0,CENTER_LOC); float * center_d0 = GET_ARR_RAW(env,d0,CENTER_LOC);
float * u = GET_ARR_RAW(env,ur,CENTER_LOC);
float * v = GET_ARR_RAW(env,vr,CENTER_LOC);
float * w = GET_ARR_RAW(env,wr,CENTER_LOC);
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++){
for(i=1; i<N-1; i++){ for(i=1; i<N-1; i++){

View File

@ -635,7 +635,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate(
for(int i = 0; i < numChunks; i++){ for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i]; Chunk * currentChunk = chunks[i];
chunkMask = currentChunk->chunkMask; chunkMask = currentChunk->chunkMask;
Java_electrosphere_FluidSim_advectDensity(DIM,chunkMask,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); advectDensity(chunkMask,DIM,currentChunk->d,currentChunk->d0,currentChunk->u,currentChunk->v,currentChunk->w,timestep);
} }
} }
//mirror densities //mirror densities

View File

@ -90,8 +90,7 @@ void Java_electrosphere_FluidSim_solveDiffuseDensity
* Method: advectDensity * Method: advectDensity
* 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
*/ */
void Java_electrosphere_FluidSim_advectDensity void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt);
(int, int, float **, float **, float **, float **, float **, float, float, float);
void setBoundsToNeighborsRaw void setBoundsToNeighborsRaw
( (