From 69a803fb3f310b49e26ec8ca92fe210f3e5c8604 Mon Sep 17 00:00:00 2001 From: unknown <> Date: Fri, 15 Mar 2024 17:12:07 -0400 Subject: [PATCH] refactor add density func --- src/main/c/densitystep.c | 28 +++++----------------------- src/main/c/fluidsim.c | 2 +- src/main/c/includes/mainFunctions.h | 3 +-- 3 files changed, 7 insertions(+), 26 deletions(-) diff --git a/src/main/c/densitystep.c b/src/main/c/densitystep.c index f94c548..768d4a7 100644 --- a/src/main/c/densitystep.c +++ b/src/main/c/densitystep.c @@ -5,7 +5,6 @@ #include "includes/utilities.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 @@ -81,27 +80,7 @@ void Java_electrosphere_FluidSim_solveDiffuseDensity } } -/* - * 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){ +void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt){ int i, j, k, i0, j0, k0, i1, j1, k1; int m,n,o; 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; float * center_d = GET_ARR_RAW(env,d,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; kchunkMask; - 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 diff --git a/src/main/c/includes/mainFunctions.h b/src/main/c/includes/mainFunctions.h index 188fe6f..dced7d0 100644 --- a/src/main/c/includes/mainFunctions.h +++ b/src/main/c/includes/mainFunctions.h @@ -90,8 +90,7 @@ void Java_electrosphere_FluidSim_solveDiffuseDensity * 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, int, float **, float **, float **, float **, float **, float, float, float); +void advectDensity(uint32_t chunk_mask, int N, float ** d, float ** d0, float ** ur, float ** vr, float ** wr, float dt); void setBoundsToNeighborsRaw (