don't cache pressure
This commit is contained in:
parent
a44d04ed6c
commit
69528eeb3e
@ -29,7 +29,7 @@
|
|||||||
/**
|
/**
|
||||||
* Updates the bounds of the chunk based on its neighbors
|
* Updates the bounds of the chunk based on its neighbors
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_update_bounds(Environment * environment, Chunk * chunk);
|
LIBRARY_API void fluid_pressurecell_update_bounds(Environment * environment, Chunk * chunk);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the interest tree for this chunk
|
* Updates the interest tree for this chunk
|
||||||
|
|||||||
@ -10,17 +10,17 @@
|
|||||||
/**
|
/**
|
||||||
* Adds density from the delta buffer to this chunk
|
* Adds density from the delta buffer to this chunk
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_add_density(Environment * environment, Chunk * chunk);
|
LIBRARY_API void fluid_pressurecell_add_density(Environment * environment, Chunk * chunk);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Diffuses the density in this chunk
|
* Diffuses the density in this chunk
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_diffuse_density(Environment * environment, Chunk * chunk);
|
LIBRARY_API void fluid_pressurecell_diffuse_density(Environment * environment, Chunk * chunk);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Advects the density of this chunk
|
* Advects the density of this chunk
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_advect_density(Environment * environment, Chunk * chunk);
|
LIBRARY_API void fluid_pressurecell_advect_density(Environment * environment, Chunk * chunk);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -135,7 +135,7 @@ void fluid_pressurecell_set_bounds_zero(
|
|||||||
/**
|
/**
|
||||||
* Updates the bounds of the chunk based on its neighbors
|
* Updates the bounds of the chunk based on its neighbors
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_update_bounds(Environment * environment, Chunk * chunk){
|
LIBRARY_API void fluid_pressurecell_update_bounds(Environment * environment, Chunk * chunk){
|
||||||
// fluid_pressurecell_set_bounds_legacy(environment,FLUID_PRESSURECELL_BOUND_NO_DIR,chunk->d[CENTER_LOC]);
|
// fluid_pressurecell_set_bounds_legacy(environment,FLUID_PRESSURECELL_BOUND_NO_DIR,chunk->d[CENTER_LOC]);
|
||||||
// fluid_pressurecell_set_bounds_legacy(environment,FLUID_PRESSURECELL_BOUND_NO_DIR,chunk->d0[CENTER_LOC]);
|
// fluid_pressurecell_set_bounds_legacy(environment,FLUID_PRESSURECELL_BOUND_NO_DIR,chunk->d0[CENTER_LOC]);
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
/**
|
/**
|
||||||
* Adds density from the delta buffer to this chunk
|
* Adds density from the delta buffer to this chunk
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_add_density(Environment * environment, Chunk * chunk){
|
LIBRARY_API void fluid_pressurecell_add_density(Environment * environment, Chunk * chunk){
|
||||||
int x, y, z;
|
int x, y, z;
|
||||||
float * densityArr = chunk->d[CENTER_LOC];
|
float * densityArr = chunk->d[CENTER_LOC];
|
||||||
float * sourceArr = chunk->d0[CENTER_LOC];
|
float * sourceArr = chunk->d0[CENTER_LOC];
|
||||||
@ -23,7 +23,7 @@ LIBRARY_API void pressurecell_add_density(Environment * environment, Chunk * chu
|
|||||||
/**
|
/**
|
||||||
* Diffuses the density in this chunk
|
* Diffuses the density in this chunk
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_diffuse_density(Environment * environment, Chunk * chunk){
|
LIBRARY_API void fluid_pressurecell_diffuse_density(Environment * environment, Chunk * chunk){
|
||||||
int x, y, z;
|
int x, y, z;
|
||||||
float * densityArr = chunk->d[CENTER_LOC];
|
float * densityArr = chunk->d[CENTER_LOC];
|
||||||
float * densityTemp = chunk->dTempCache;
|
float * densityTemp = chunk->dTempCache;
|
||||||
@ -152,7 +152,7 @@ LIBRARY_API void pressurecell_diffuse_density(Environment * environment, Chunk *
|
|||||||
/**
|
/**
|
||||||
* Advects the density of this chunk
|
* Advects the density of this chunk
|
||||||
*/
|
*/
|
||||||
LIBRARY_API void pressurecell_advect_density(Environment * environment, Chunk * chunk){
|
LIBRARY_API void fluid_pressurecell_advect_density(Environment * environment, Chunk * chunk){
|
||||||
int x, y, z;
|
int x, y, z;
|
||||||
float * densityArr = chunk->d[CENTER_LOC];
|
float * densityArr = chunk->d[CENTER_LOC];
|
||||||
float * densityTemp = chunk->dTempCache;
|
float * densityTemp = chunk->dTempCache;
|
||||||
|
|||||||
@ -43,12 +43,13 @@ LIBRARY_API void fluid_pressurecell_simulate(
|
|||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
fluid_pressurecell_clearArr(currentChunk->pressureTempCache);
|
fluid_pressurecell_clearArr(currentChunk->pressureTempCache);
|
||||||
|
fluid_pressurecell_clearArr(currentChunk->pressureCache[CENTER_LOC]);
|
||||||
fluid_pressurecell_clearArr(currentChunk->dTempCache);
|
fluid_pressurecell_clearArr(currentChunk->dTempCache);
|
||||||
fluid_pressurecell_clearArr(currentChunk->uTempCache);
|
fluid_pressurecell_clearArr(currentChunk->uTempCache);
|
||||||
fluid_pressurecell_clearArr(currentChunk->vTempCache);
|
fluid_pressurecell_clearArr(currentChunk->vTempCache);
|
||||||
fluid_pressurecell_clearArr(currentChunk->wTempCache);
|
fluid_pressurecell_clearArr(currentChunk->wTempCache);
|
||||||
fluid_pressurecell_calculate_expected_intake(environment,currentChunk);
|
fluid_pressurecell_calculate_expected_intake(environment,currentChunk);
|
||||||
pressurecell_update_bounds(environment,currentChunk);
|
fluid_pressurecell_update_bounds(environment,currentChunk);
|
||||||
// pressurecell_update_interest(environment,currentChunk);
|
// pressurecell_update_interest(environment,currentChunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,14 +127,14 @@ LIBRARY_API void fluid_pressurecell_simulate(
|
|||||||
// fflush(stdout);
|
// fflush(stdout);
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
pressurecell_add_density(environment,currentChunk);
|
fluid_pressurecell_add_density(environment,currentChunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf("diff dens\n");
|
// printf("diff dens\n");
|
||||||
// fflush(stdout);
|
// fflush(stdout);
|
||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
pressurecell_diffuse_density(environment,currentChunk);
|
fluid_pressurecell_diffuse_density(environment,currentChunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf("adv dens\n");
|
// printf("adv dens\n");
|
||||||
@ -141,7 +142,7 @@ LIBRARY_API void fluid_pressurecell_simulate(
|
|||||||
for(int i = 0; i < numChunks; i++){
|
for(int i = 0; i < numChunks; i++){
|
||||||
//uTemp->d
|
//uTemp->d
|
||||||
Chunk * currentChunk = chunks[i];
|
Chunk * currentChunk = chunks[i];
|
||||||
pressurecell_advect_density(environment,currentChunk);
|
fluid_pressurecell_advect_density(environment,currentChunk);
|
||||||
if(FLUID_PRESSURECELL_ENABLE_RECAPTURE){
|
if(FLUID_PRESSURECELL_ENABLE_RECAPTURE){
|
||||||
//d->dTemp->d
|
//d->dTemp->d
|
||||||
fluid_pressurecell_recapture_density(environment,currentChunk);
|
fluid_pressurecell_recapture_density(environment,currentChunk);
|
||||||
|
|||||||
@ -43,7 +43,7 @@ int fluid_sim_pressurecell_add_source_test1(){
|
|||||||
currentChunk->u[CENTER_LOC][IX(4,4,4)] = MAX_FLUID_VALUE;
|
currentChunk->u[CENTER_LOC][IX(4,4,4)] = MAX_FLUID_VALUE;
|
||||||
|
|
||||||
//actually simulate
|
//actually simulate
|
||||||
pressurecell_add_density(env,currentChunk);
|
fluid_pressurecell_add_density(env,currentChunk);
|
||||||
|
|
||||||
//test the result
|
//test the result
|
||||||
float expected, actual;
|
float expected, actual;
|
||||||
|
|||||||
@ -44,7 +44,7 @@ int fluid_sim_pressurecell_advection_test1(){
|
|||||||
currentChunk->u[CENTER_LOC][IX(5,4,4)] = FLUID_PRESSURECELL_MAX_VELOCITY;
|
currentChunk->u[CENTER_LOC][IX(5,4,4)] = FLUID_PRESSURECELL_MAX_VELOCITY;
|
||||||
|
|
||||||
//actually simulate
|
//actually simulate
|
||||||
pressurecell_advect_density(env,currentChunk);
|
fluid_pressurecell_advect_density(env,currentChunk);
|
||||||
|
|
||||||
//test the result
|
//test the result
|
||||||
float expected, actual;
|
float expected, actual;
|
||||||
|
|||||||
@ -85,7 +85,7 @@ int fluid_sim_pressurecell_bounds_test2(){
|
|||||||
|
|
||||||
//actually simulate
|
//actually simulate
|
||||||
pressurecell_enforce_bounds(env,currentChunk);
|
pressurecell_enforce_bounds(env,currentChunk);
|
||||||
pressurecell_advect_density(env,currentChunk);
|
fluid_pressurecell_advect_density(env,currentChunk);
|
||||||
|
|
||||||
//test the result
|
//test the result
|
||||||
float expected, actual;
|
float expected, actual;
|
||||||
@ -124,7 +124,7 @@ int fluid_sim_pressurecell_bounds_test3(){
|
|||||||
currentChunk->bounds[CENTER_LOC][IX(1,0,1)] = 1.0f;
|
currentChunk->bounds[CENTER_LOC][IX(1,0,1)] = 1.0f;
|
||||||
|
|
||||||
//actually simulate
|
//actually simulate
|
||||||
pressurecell_advect_density(env,currentChunk);
|
fluid_pressurecell_advect_density(env,currentChunk);
|
||||||
|
|
||||||
//test the result
|
//test the result
|
||||||
float expected, actual;
|
float expected, actual;
|
||||||
|
|||||||
@ -43,7 +43,7 @@ int fluid_sim_pressurecell_diffuse_test1(){
|
|||||||
float diffuseConst = FLUID_PRESSURECELL_DIFFUSION_CONSTANT / (FLUID_PRESSURECELL_SPACING * FLUID_PRESSURECELL_SPACING);
|
float diffuseConst = FLUID_PRESSURECELL_DIFFUSION_CONSTANT / (FLUID_PRESSURECELL_SPACING * FLUID_PRESSURECELL_SPACING);
|
||||||
|
|
||||||
//actually simulate
|
//actually simulate
|
||||||
pressurecell_diffuse_density(env,currentChunk);
|
fluid_pressurecell_diffuse_density(env,currentChunk);
|
||||||
|
|
||||||
//test the result
|
//test the result
|
||||||
float expected, actual;
|
float expected, actual;
|
||||||
@ -204,7 +204,7 @@ int fluid_sim_pressurecell_diffuse_test3(){
|
|||||||
bounds[IX(4,5,4)] = 1.0f;
|
bounds[IX(4,5,4)] = 1.0f;
|
||||||
|
|
||||||
//actually simulate
|
//actually simulate
|
||||||
pressurecell_diffuse_density(env,currentChunk);
|
fluid_pressurecell_diffuse_density(env,currentChunk);
|
||||||
|
|
||||||
//test the result
|
//test the result
|
||||||
float expected, actual;
|
float expected, actual;
|
||||||
@ -289,7 +289,7 @@ int fluid_sim_pressurecell_diffuse_test4(){
|
|||||||
bounds[IX(4,4,5)] = 1.0f;
|
bounds[IX(4,4,5)] = 1.0f;
|
||||||
|
|
||||||
//actually simulate
|
//actually simulate
|
||||||
pressurecell_diffuse_density(env,currentChunk);
|
fluid_pressurecell_diffuse_density(env,currentChunk);
|
||||||
|
|
||||||
//test the result
|
//test the result
|
||||||
float expected, actual;
|
float expected, actual;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user