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