diff --git a/src/main/c/includes/fluid/sim/pressurecell/normalization.h b/src/main/c/includes/fluid/sim/pressurecell/normalization.h index 7563ffc0..8e730aee 100644 --- a/src/main/c/includes/fluid/sim/pressurecell/normalization.h +++ b/src/main/c/includes/fluid/sim/pressurecell/normalization.h @@ -11,11 +11,6 @@ */ 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 */ diff --git a/src/main/c/src/fluid/sim/pressurecell/normalization.c b/src/main/c/src/fluid/sim/pressurecell/normalization.c index 17f10686..b8b7d9de 100644 --- a/src/main/c/src/fluid/sim/pressurecell/normalization.c +++ b/src/main/c/src/fluid/sim/pressurecell/normalization.c @@ -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; + //calculate ratio double sum; for(x = 1; x < DIM-1; x++){ 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; - env->state.existingDensity = env->state.existingDensity + expected; if(sum > 0){ double normalizationRatio = expected / sum; chunk->pressureCellData.normalizationRatio = normalizationRatio; @@ -49,13 +49,7 @@ LIBRARY_API void fluid_pressurecell_calculate_normalization_ratio(Environment * } chunk->pressureCellData.normalizationRatio = 1.0f; } -} - -/** - * Normalizes the chunk - */ -LIBRARY_API void fluid_pressurecell_normalize_chunk(Environment * env, Chunk * chunk){ - int x, y, z; + //apply ratio double ratio = chunk->pressureCellData.normalizationRatio; for(x = 1; x < DIM-1; x++){ 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; } diff --git a/src/main/c/src/fluid/sim/pressurecell/pressurecell.c b/src/main/c/src/fluid/sim/pressurecell/pressurecell.c index daab4520..696a0e8b 100644 --- a/src/main/c/src/fluid/sim/pressurecell/pressurecell.c +++ b/src/main/c/src/fluid/sim/pressurecell/pressurecell.c @@ -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 // for(int i = 0; i < numChunks; 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); fluid_pressurecell_clearArr(currentChunk->d0[CENTER_LOC]); fluid_pressurecell_clearArr(currentChunk->u0[CENTER_LOC]);