// CONSTANTS & PARAMETERS int w = 300; int N = 100; int S = (N+2)*(N+2); float h = w/float(N+1); float diff = 0.0; float visc = 0.; float dt = 0.0085; // VELOCITY AND DENSITY float[] vx0, vy0, dens0; float[] vx, vy, dens; float[] vx_prev, vy_prev, dens_prev; // SOURCES float[] fx, fy, s; // TEST OBSTACLE boolean[] isFluid; int Np = 0; particle[] p; int penSize = w/50; boolean gridVisible = false; boolean velocityVisible = true; boolean densityVisible = true; boolean particlesVisible = false; boolean helpVisible = false; ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////// void setup() { // DISPLAY OPTIONS size(w, w, P2D); frameRate(120); background(15,15,30); stroke(255); noFill(); textSize(15); textAlign(LEFT); rectMode(CORNER); // cursor(CROSS); // EULERIAN FIELDS // VELOCITY vx = new float[S]; vy = new float[S]; // DENSITY dens = new float[S]; // PREVIOUS VALUES OVER TIME vx_prev = new float[S]; vy_prev = new float[S]; dens_prev = new float[S]; // INITIAL CONDITIONS vx0 = new float[S]; vy0 = new float[S]; dens0 = new float[S]; // SOURCES DENSITY AND VELOCITY s = new float[S]; fx = new float[S]; fy = new float[S]; // TEST OBSTACLE isFluid = new boolean[S]; for (int i=0; iwidth/2-10 && i*h height-50 && j*h