     /// Constants A and B for isochoric part
     if (Ni !=0)
     {
-        cudaMemcpyToSymbol(Ai_gpu, Ai, 2*Ni*sizeof(float), 0, cudaMemcpyHostToDevice);
+        cudaMemcpyToSymbol(Ai_hex_gpu, Ai, 2*Ni*sizeof(float), 0, cudaMemcpyHostToDevice);
     }
 
     /// Constants A and B for volumetric part
     if (Nv != 0)
     {
-        cudaMemcpyToSymbol(Av_gpu, Av, 2*Nv*sizeof(float), 0, cudaMemcpyHostToDevice);
+        cudaMemcpyToSymbol(Av_hex_gpu, Av, 2*Nv*sizeof(float), 0, cudaMemcpyHostToDevice);
     }
 
     /// Rate-dependant stress (isochoric part)
     cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(32, 32, 32, 32, cudaChannelFormatKindFloat);
     if (Ni != 0)
     {
-        mycudaMalloc((void**)&Di1_gpu, 4*nbElements*sizeof(float));
-        cudaMemset(Di1_gpu, 0, 4*nbElements*sizeof(float));
-        cudaBindTexture(0, Di1_ref, Di1_gpu, channelDesc);
-
-        mycudaMalloc((void**)&Di2_gpu, 4*nbElements*sizeof(float));
-        cudaMemset(Di2_gpu, 0, 4*nbElements*sizeof(float));
-        cudaBindTexture(0, Di2_ref, Di2_gpu, channelDesc);
+        mycudaMalloc((void**)&Di1_hex_gpu, 4*nbElements*sizeof(float));
+        cudaMemset(Di1_hex_gpu, 0, 4*nbElements*sizeof(float));
+        cudaBindTexture(0, Di1_ref, Di1_hex_gpu, channelDesc);
+
+        mycudaMalloc((void**)&Di2_hex_gpu, 4*nbElements*sizeof(float));
+        cudaMemset(Di2_hex_gpu, 0, 4*nbElements*sizeof(float));
+        cudaBindTexture(0, Di2_ref, Di2_hex_gpu, channelDesc);
     }
 
     /// Rate-dependant stress (volumetric part)
     if (Nv != 0)
     {
-        mycudaMalloc((void**)&Dv1_gpu, 4*nbElements*sizeof(float));
-        cudaMemset(Dv1_gpu, 0, 4*nbElements*sizeof(float));
-        cudaBindTexture(0, Dv1_ref, Dv1_gpu, channelDesc);
-
-        mycudaMalloc((void**)&Dv2_gpu, 4*nbElements*sizeof(float));
-        cudaMemset(Dv2_gpu, 0, 4*nbElements*sizeof(float));
-        cudaBindTexture(0, Dv2_ref, Dv2_gpu, channelDesc);
+        mycudaMalloc((void**)&Dv1_hex_gpu, 4*nbElements*sizeof(float));
+        cudaMemset(Dv1_hex_gpu, 0, 4*nbElements*sizeof(float));
+        cudaBindTexture(0, Dv1_ref, Dv1_hex_gpu, channelDesc);
+
+        mycudaMalloc((void**)&Dv2_hex_gpu, 4*nbElements*sizeof(float));
+        cudaMemset(Dv2_hex_gpu, 0, 4*nbElements*sizeof(float));
+        cudaBindTexture(0, Dv2_ref, Dv2_hex_gpu, channelDesc);
     }
 
     myprintf("Initialisation GPU for viscoelasticity succeeded\n");


}

__global__ void CudaHexahedronTLEDForceField3f_calcForce_kernel1(float Lambda, float Mu, int nbElem, float4* F0_gpu, float4* F1_gpu, float4* F2_gpu, float4* F3_gpu, float4* F4_gpu, float4* F5_gpu, float4* F6_gpu, float4* F7_gpu)
{
    int index0 = umul24(blockIdx.x,BSIZE); //blockDim.x;
    int index1 = threadIdx.x;

    switch(2*viscoelasticity + anisotropy)
    {
    case 0 :
        CudaHexahedronTLEDForceField3f_calcForce_kernel0<<< grid1, threads1>>>(Lambda, Mu, nbElem, F0_hex_gpu, F1_hex_gpu, F2_hex_gpu, F3_hex_gpu, F4_hex_gpu, F5_hex_gpu, F6_hex_gpu, F7_hex_gpu/*, test*/);
        break;

    case 1 :
        CudaHexahedronTLEDForceField3f_calcForce_kernel1<<< grid1, threads1>>>(Lambda, Mu, nbElem, F0_hex_gpu, F1_hex_gpu, F2_hex_gpu, F3_hex_gpu, F4_hex_gpu, F5_hex_gpu, F6_hex_gpu, F7_hex_gpu);
        break;

    case 2 :
        CudaHexahedronTLEDForceField3f_calcForce_kernel2<<< grid1, threads1>>>(Lambda, Mu, nbElem, Di1_hex_gpu, Di2_hex_gpu, Dv1_hex_gpu, Dv2_hex_gpu, F0_hex_gpu, F1_hex_gpu, F2_hex_gpu, F3_hex_gpu, F4_hex_gpu, F5_hex_gpu, F6_hex_gpu, F7_hex_gpu);
        break;

    case 3 :
        CudaHexahedronTLEDForceField3f_calcForce_kernel3<<< grid1, threads1>>>(Lambda, Mu, nbElem, Di1_hex_gpu, Di2_hex_gpu, Dv1_hex_gpu, Dv2_hex_gpu, F0_hex_gpu, F1_hex_gpu, F2_hex_gpu, F3_hex_gpu, F4_hex_gpu, F5_hex_gpu, F6_hex_gpu, F7_hex_gpu);
        break;
    }

