10#ifndef __N_FLUID_HEADER
11#define __N_FLUID_HEADER
22#include "allegro5/allegro.h"
23#include <allegro5/allegro_primitives.h>
29#define _z( __fluid , __componant ) ( (__fluid->__componant) > (__fluid->negative_float_tolerance) && (__fluid->__componant) < (__fluid->positive_float_tolerance) )
34#define _zd( __fluid , __value ) ( (__value) > (__fluid->negative_float_tolerance) && (__value) < (__fluid->positive_float_tolerance) )
124 N_FLUID *
new_n_fluid(
double density ,
double gravity ,
size_t numIters ,
double dt ,
double overRelaxation ,
size_t sx ,
size_t sy );
Structure of a generic LIST container.
double * newU
holder for newU arrays
size_t numY
number of cells in Y
size_t y_start
y start point
double fluid_production_percentage
size of the produced fluid
bool showSmoke
display fluid as a colored cloud instead of black and white, can be combined with showPressure
size_t numX
number of cells in X
LIST * advectSmoke_chunk_list
preprocessed list of threaded procs parameters, for n_fluid_advectSmoke
double overRelaxation
over relaxation
bool showPressure
display fluids pressures as color variations, can be combined with showSmoke
void * ptr
pointer to data which will be used in the proc
double positive_float_tolerance
fluid double positive precision setting
LIST * solveIncompressibility_chunk_list
preprocessed list of threaded procs parameters, for n_fluid_solveIncompressibility
bool showPaint
activate a fonky palette, override smoke and pressure display
double * u
holder for u arrays
LIST * integrate_chunk_list
preprocessed list of threaded procs parameters, for n_fluid_integrate
double * newV
holder for newV arrays
double dt
time between frames
double * s
holder for s arrays
double * v
holder for v arrays
size_t numCells
total number of cells
size_t numIters
number of fluid processing iterations for each frame
double density
density of the fluid (not working ?)
LIST * advectVel_chunk_list
preprocessed list of threaded procs parameters, for n_fluid_advectVel
double * m
holder for m arrays
double cScale
scale used to deduce cellX and cellY from screen/window width and height
double * newM
holder for newM arrays
size_t numZ
number of cells in Z
double * p
holder for p arrays
size_t x_start
x start point
double gravity
gravity on Y
double negative_float_tolerance
fluid double negative precision setting
double n_fluid_avgV(N_FLUID *fluid, size_t i, size_t j)
compute the average V value at a fluid position using it's surrounding
int n_fluid_draw(N_FLUID *fluid)
draw a N_FLUID on screen / targert bitmap
int n_fluid_simulate_threaded(N_FLUID *fluid, THREAD_POOL *thread_pool)
a threaded version of N_FLUID global processing function
int n_fluid_simulate(N_FLUID *fluid)
non threaded version of N_FLUID global processing function
double n_fluid_avgU(N_FLUID *fluid, size_t i, size_t j)
compute the average U value at a fluid position using it's surrounding
double n_fluid_sampleField(N_FLUID *fluid, double x, double y, uint32_t field)
compute a sample value at a field position
ALLEGRO_COLOR n_fluid_getSciColor(N_FLUID *fluid, double val, double minVal, double maxVal)
get fonky colors for the fluid
int n_fluid_extrapolate(N_FLUID *fluid)
non threaded extrapolation function
int n_fluid_advectSmoke(N_FLUID *fluid)
non threaded version of add smoke function
int n_fluid_solveIncompressibility(N_FLUID *fluid)
non threaded version of incompressibility solving function
int n_fluid_resetObstacles(N_FLUID *fluid)
reset the obstacles set in a N_FLUID
int n_fluid_integrate(N_FLUID *fluid)
non threaded version of integration function
int n_fluid_setObstacle(N_FLUID *fluid, double x, double y, double vx, double vy, double r)
set an obstacle in the fluid grid
int destroy_n_fluid(N_FLUID **fluid)
ddestroy a fluid structure
int n_fluid_advectVel(N_FLUID *fluid)
non threaded version of add velocities function
N_FLUID * new_n_fluid(double density, double gravity, size_t numIters, double dt, double overRelaxation, size_t sx, size_t sy)
!
structure passed to a threaded fluid process
Structure of a trhead pool.
List structures and definitions.