condense normalize loops
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2024-12-17 17:21:29 -05:00
parent c3e319280a
commit abb48d7a1a
3 changed files with 15 additions and 20 deletions

View File

@ -11,11 +11,6 @@
*/ */
LIBRARY_API void fluid_pressurecell_calculate_expected_intake(Environment * env, Chunk * chunk); LIBRARY_API void fluid_pressurecell_calculate_expected_intake(Environment * env, Chunk * chunk);
/**
* Calculates the ratio to normalize the chunk by
*/
LIBRARY_API void fluid_pressurecell_calculate_normalization_ratio(Environment * env, Chunk * chunk);
/** /**
* Normalizes the chunk * Normalizes the chunk
*/ */

View File

@ -26,10 +26,11 @@ LIBRARY_API void fluid_pressurecell_calculate_expected_intake(Environment * env,
/** /**
* Calculates the ratio to normalize the chunk by * Normalizes the chunk
*/ */
LIBRARY_API void fluid_pressurecell_calculate_normalization_ratio(Environment * env, Chunk * chunk){ LIBRARY_API void fluid_pressurecell_normalize_chunk(Environment * env, Chunk * chunk){
int x, y, z; int x, y, z;
//calculate ratio
double sum; double sum;
for(x = 1; x < DIM-1; x++){ for(x = 1; x < DIM-1; x++){
for(y = 1; y < DIM-1; y++){ for(y = 1; y < DIM-1; y++){
@ -39,7 +40,6 @@ LIBRARY_API void fluid_pressurecell_calculate_normalization_ratio(Environment *
} }
} }
double expected = chunk->pressureCellData.densitySum; double expected = chunk->pressureCellData.densitySum;
env->state.existingDensity = env->state.existingDensity + expected;
if(sum > 0){ if(sum > 0){
double normalizationRatio = expected / sum; double normalizationRatio = expected / sum;
chunk->pressureCellData.normalizationRatio = normalizationRatio; chunk->pressureCellData.normalizationRatio = normalizationRatio;
@ -49,13 +49,7 @@ LIBRARY_API void fluid_pressurecell_calculate_normalization_ratio(Environment *
} }
chunk->pressureCellData.normalizationRatio = 1.0f; chunk->pressureCellData.normalizationRatio = 1.0f;
} }
} //apply ratio
/**
* Normalizes the chunk
*/
LIBRARY_API void fluid_pressurecell_normalize_chunk(Environment * env, Chunk * chunk){
int x, y, z;
double ratio = chunk->pressureCellData.normalizationRatio; double ratio = chunk->pressureCellData.normalizationRatio;
for(x = 1; x < DIM-1; x++){ for(x = 1; x < DIM-1; x++){
for(y = 1; y < DIM-1; y++){ for(y = 1; y < DIM-1; y++){
@ -64,6 +58,8 @@ LIBRARY_API void fluid_pressurecell_normalize_chunk(Environment * env, Chunk * c
} }
} }
} }
//metadata work
env->state.existingDensity = env->state.existingDensity + expected;
} }

View File

@ -145,16 +145,20 @@ LIBRARY_API void fluid_pressurecell_simulate(
} }
//
// Normalization Phase
//
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
fluid_pressurecell_normalize_chunk(environment,currentChunk);
}
// //
// Setup for next iteration // Setup for next iteration
// //
for(int i = 0; i < numChunks; i++){ for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i]; Chunk * currentChunk = chunks[i];
fluid_pressurecell_calculate_normalization_ratio(environment,currentChunk);
}
for(int i = 0; i < numChunks; i++){
Chunk * currentChunk = chunks[i];
fluid_pressurecell_normalize_chunk(environment,currentChunk);
pressurecell_copy_for_next_frame(environment,currentChunk); pressurecell_copy_for_next_frame(environment,currentChunk);
fluid_pressurecell_clearArr(currentChunk->d0[CENTER_LOC]); fluid_pressurecell_clearArr(currentChunk->d0[CENTER_LOC]);
fluid_pressurecell_clearArr(currentChunk->u0[CENTER_LOC]); fluid_pressurecell_clearArr(currentChunk->u0[CENTER_LOC]);