 {
 	dim3 Dg(nelr / BLOCK_SIZE_2), Db(BLOCK_SIZE_2);
 	cuda_compute_step_factor<<<Dg, Db>>>(nelr, variables, areas, step_factors);		
-	getLastCudaError("compute_step_factor failed");
+	//getLastCudaError("compute_step_factor failed");
 }
 
 /*

{
	dim3 Dg(nelr / BLOCK_SIZE_3), Db(BLOCK_SIZE_3);
	cuda_compute_flux<<<Dg,Db>>>(nelr, elements_surrounding_elements, normals, variables, fluxes);
	getLastCudaError("compute_flux failed");
}

__global__ void cuda_time_step(int j, int nelr, float* old_variables, float* variables, float* step_factors, float* fluxes)

T* alloc(int N)
{
	T* t;
	//checkCudaErrors(cudaMalloc((void**)&t, sizeof(T)*N));
	cudaMalloc((void**)&t, sizeof(T)*N);
	return t;
}

template <typename T>
void dealloc(T* array)
{
	//checkCudaErrors(cudaFree((void*)array));
	cudaFree((void*)array);
}

template <typename T>
void copy(T* dst, T* src, int N)
{
	//checkCudaErrors(cudaMemcpy((void*)dst, (void*)src, N*sizeof(T), cudaMemcpyDeviceToDevice));
	cudaMemcpy((void*)dst, (void*)src, N*sizeof(T), cudaMemcpyDeviceToDevice);
}

template <typename T>
void upload(T* dst, T* src, int N)
{
	//checkCudaErrors(cudaMemcpy((void*)dst, (void*)src, N*sizeof(T), cudaMemcpyHostToDevice));
	cudaMemcpy((void*)dst, (void*)src, N*sizeof(T), cudaMemcpyHostToDevice);
}

template <typename T>
void download(T* dst, T* src, int N)
{
	//checkCudaErrors(cudaMemcpy((void*)dst, (void*)src, N*sizeof(T), cudaMemcpyDeviceToHost));
	cudaMemcpy((void*)dst, (void*)src, N*sizeof(T), cudaMemcpyDeviceToHost);
}

void dump(float* variables, int nel, int nelr)
