//----------------------------------------------------------------------------- void StamFluidSolver::vel_step ( float * u, float * v, float * u0, float * v0, float visc, float dt ) { addSource ( u, u0, dt ); addSource ( v, v0, dt ); #if (VORTICITY_CONFINEMENT == 1) if(mUseVorticityConfinement) { // add in vorticity confinement force vorticityConfinement(u0, v0); addSource ( u, u0, dt ); addSource ( v, v0, dt ); } #endif #if 0 // add in temperature force if(mSimulateTemperature) { heatRise(v0); addSource ( v, v0, dt ); } #endif SWAP ( u0, u ); diffuse ( 1, u, u0, visc, dt ); SWAP ( v0, v ); diffuse ( 2, v, v0, visc, dt ); project ( u, v, u0, v0 ); SWAP ( u0, u ); SWAP ( v0, v ); advect ( 1, u, u0, u0, v0, dt ); advect ( 2, v, v0, u0, v0, dt ); project ( u, v, u0, v0 ); }
void ciMsaFluidSolver::update() { addSourceUV(); if( doVorticityConfinement ) { vorticityConfinement(uvOld); addSourceUV(); } swapUV(); diffuseUV( viscocity ); project(uv, uvOld); swapUV(); advect2d(uv, uvOld); project(uv, uvOld); if(doRGB) { addSourceRGB(); swapRGB(); if( colorDiffusion!=0. && _dt!=0. ) { diffuseRGB(0, colorDiffusion ); swapRGB(); } advectRGB(0, uv); fadeRGB(); } else { addSource(r, rOld); swapR(); if( colorDiffusion!=0. && _dt!=0. ) { diffuse(0, r, rOld, colorDiffusion ); swapRGB(); } advect(0, r, rOld, uv); fadeR(); } }
void FluidSolver::update() { addSource(uv, uvOld); if( doVorticityConfinement ) { vorticityConfinement(uvOld); addSource(uv, uvOld); } SWAP(uv, uvOld); diffuseUV( viscocity ); project(uv, uvOld); SWAP(uv, uvOld); advect2d(uv, uvOld); project(uv, uvOld); if(doRGB) { addSource(color, colorOld); SWAP(color, colorOld); if( colorDiffusion!=0. && deltaT!=0. ) { diffuseRGB(0, colorDiffusion ); SWAP(color, colorOld); } advectRGB(0, uv); fadeRGB(); } else { addSource(density, densityOld); SWAP(density, densityOld); if( colorDiffusion!=0. && deltaT!=0. ) { diffuse(0, density, densityOld, colorDiffusion ); SWAP(density, densityOld); } advect(0, density, densityOld, uv); fadeDensity(); } }