         {
             int I_q = I + mq*zs;  
             double gupdate = 0.5*dtdy*bmasdq[mq];
-            fm[I_q] -= gupdate;        
-            fp[I_q] -= gupdate;
+            //fm[I_q] -= gupdate;        
+            //fp[I_q] -= gupdate;
+            atomicAdd(&fm[I_q],-gupdate);
+            atomicAdd(&fp[I_q],-gupdate);
         }
     }
-    __syncthreads();
+    //__syncthreads();
 
     /*  transverse-y
     

        {
            int I_q = I + mq*zs;  
            double gupdate = 0.5*dtdx*bmasdq[mq];
            gm[I_q] -= gupdate;       
            gp[I_q] -= gupdate;
        }
    }
    __syncthreads();


    /*     transverse-x

        {
            int I_q = I + mq*zs;  
            int gupdate = 0.5*dtdy*bpasdq[mq];
            //fm[I_q - ys + 1] -= gupdate;
            //fp[I_q - ys + 1] -= gupdate;             
            atomicAdd(&fm[I_q - ys + 1],-gupdate);
            atomicAdd(&fp[I_q - ys + 1],-gupdate);               
        }
    }
    //__syncthreads();



