From f248d68a5b9f504487af33d2e9f9747e05eea0f6 Mon Sep 17 00:00:00 2001 From: austin Date: Thu, 19 Dec 2024 18:52:59 -0500 Subject: [PATCH] work on pressure respecting bounds --- .../c/src/fluid/sim/pressurecell/pressure.c | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/c/src/fluid/sim/pressurecell/pressure.c b/src/main/c/src/fluid/sim/pressurecell/pressure.c index 59d11a35..7beeb70a 100644 --- a/src/main/c/src/fluid/sim/pressurecell/pressure.c +++ b/src/main/c/src/fluid/sim/pressurecell/pressure.c @@ -153,12 +153,24 @@ LIBRARY_API void pressurecell_approximate_pressure(Environment * environment, Ch // pressureTemp[IX(x,DIM-1,y)] = 0; // pressureTemp[IX(x,y,0)] = 0; // pressureTemp[IX(x,y,DIM-1)] = 0; - pressureTemp[IX(0,x,y)] = pressureTemp[IX(1,x,y)]; - pressureTemp[IX(DIM-1,x,y)] = pressureTemp[IX(DIM-2,x,y)]; - pressureTemp[IX(x,0,y)] = pressureTemp[IX(x,1,y)]; - pressureTemp[IX(x,DIM-1,y)] = pressureTemp[IX(x,DIM-2,y)]; - pressureTemp[IX(x,y,0)] = pressureTemp[IX(x,y,1)]; - pressureTemp[IX(x,y,DIM-1)] = pressureTemp[IX(x,y,DIM-2)]; + if(border[IX(0,x,y)] > 0){ + pressureTemp[IX(0,x,y)] = pressureTemp[IX(1,x,y)]; + } + if(border[IX(DIM-1,x,y)] > 0){ + pressureTemp[IX(DIM-1,x,y)] = pressureTemp[IX(DIM-2,x,y)]; + } + if(border[IX(x,0,y)] > 0){ + pressureTemp[IX(x,0,y)] = pressureTemp[IX(x,1,y)]; + } + if(border[IX(x,DIM-1,y)] > 0){ + pressureTemp[IX(x,DIM-1,y)] = pressureTemp[IX(x,DIM-2,y)]; + } + if(border[IX(x,y,0)] > 0){ + pressureTemp[IX(x,y,0)] = pressureTemp[IX(x,y,1)]; + } + if(border[IX(x,y,DIM-1)] > 0){ + pressureTemp[IX(x,y,DIM-1)] = pressureTemp[IX(x,y,DIM-2)]; + } // pressureTemp[IX(0,x,y)] = border[IX(0,x,y)] * FLUID_PRESSURECELL_BOUND_PRESSURE; // pressureTemp[IX(DIM-1,x,y)] = border[IX(DIM-1,x,y)] * FLUID_PRESSURECELL_BOUND_PRESSURE; // pressureTemp[IX(x,0,y)] = border[IX(x,0,y)] * FLUID_PRESSURECELL_BOUND_PRESSURE;