//-----------------------------------------------------------------------------
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();
		}
	}